Moved unused code into Achive

This commit is contained in:
Simon Martens
2022-11-25 19:15:23 +01:00
parent 5cc684550b
commit 02abfb111a
239 changed files with 51948 additions and 1673 deletions

454
Archive/HaInformator/.gitignore vendored Normal file
View File

@@ -0,0 +1,454 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET
project.lock.json
project.fragment.lock.json
artifacts/
# Tye
.tye/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
##
## Visual studio for Mac
##
# globs
Makefile.in
*.userprefs
*.usertasks
config.make
config.status
aclocal.m4
install-sh
autom4te.cache/
*.tar.gz
tarballs/
test-results/
# Mac bundle stuff
*.dmg
*.app
# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# JetBrains Rider
.idea/
*.sln.iml
##
## Visual Studio Code
##
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@@ -0,0 +1,172 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace HaInformator
{
public class AttrValSelection
{
private static ListBox _attrLView;
private static ListBox _valLView;
private static GroupBox _gBox;
private static ContextMenuSelection _cMenuSelection;
private static SelectionState _state;
private static AttributeTree _currAttributeTree;
public AttrValSelection(ListBox attrLView,
ListBox valLview,
GroupBox gBox,
ContextMenuSelection contextMenuSelection)
{
_attrLView = attrLView;
_valLView = valLview;
_gBox = gBox;
_cMenuSelection = contextMenuSelection;
_attrLView.MouseDown += new MouseEventHandler(_attrLView_Select);
_valLView.MouseDown += new MouseEventHandler(_valLView_Select);
_cMenuSelection.aNewBtn_Click =_aAddAttributeBtn_Click;
_cMenuSelection.aEditBtn_Click = _aEditBtn_Click;
_cMenuSelection.aDeleteBtn_Click = _aDeleteBtn_Click;
_cMenuSelection.vEditBtn_Click = _vEditBtn_Click;
}
private void _aAddAttributeBtn_Click(object sender, EventArgs e)
{
AddAttribute();
}
public void AddAttribute()
{
var str = "name";
var value = "wert";
if (_cMenuSelection.ShowDoubleInputDialog(ref str, ref value) == DialogResult.OK)
_state.AddAttribute(str, value);
Load(_state);
}
private void _aEditBtn_Click(object sender, EventArgs e)
{
EditAttribute();
}
private void EditAttribute()
{
var str = (String)_attrLView.SelectedItem;
if (_cMenuSelection.ShowInputDialog(ref str) == DialogResult.OK)
_state.EditAttribute((String)_attrLView.SelectedItem, str);
Load(_state);
}
private void _vEditBtn_Click(object sender, EventArgs e)
{
EditValue();
}
private void EditValue()
{
var str = (String)_valLView.SelectedItem;
if (_cMenuSelection.ShowInputDialog(ref str) == DialogResult.OK)
_state.EditValue((String)_attrLView.SelectedItem, (String)_valLView.SelectedItem, str);
Load(_state);
}
private void _aDeleteBtn_Click(object sender, EventArgs e)
{
RemoveAttribute();
}
private void RemoveAttribute()
{
_state.RemoveAttribute((string)_attrLView.SelectedItem);
Load(_state);
}
private void _attrLView_Select(object sender, MouseEventArgs e)
{
var node = _attrLView.IndexFromPoint(new System.Drawing.Point(e.X, e.Y));
if (node == -1)
{
_valLView.Items.Clear();
return;
}
else
_attrLView.SelectedIndex = node;
_update_valLView();
if (e.Button == MouseButtons.Right)
_attrLView.ContextMenuStrip = _cMenuSelection.Open(cMenuState.aView);
}
private void _valLView_Select(object sender, MouseEventArgs e)
{
var node = _valLView.IndexFromPoint(new System.Drawing.Point(e.X, e.Y));
if (node == null || node == -1)
{
return;
}
else
_valLView.SelectedIndex = node;
if (e.Button == MouseButtons.Right && _valLView.Items.Count > 0)
_valLView.ContextMenuStrip = _cMenuSelection.Open(cMenuState.vView);
}
public void Load(SelectionState state, string description = "")
{
_state = state;
_currAttributeTree = _state.GetAttributeTree();
if (!String.IsNullOrWhiteSpace(description))
_gBox.Text = description;
_draw();
}
private void _draw()
{
_update_attrLView();
_update_valLView();
}
private void _update_attrLView()
{
_attrLView.Items.Clear();
if (_currAttributeTree != null && _currAttributeTree.Any())
_attrLView.Items.AddRange(_currAttributeTree.Keys());
if (_attrLView.Items.Count > 0)
{
_attrLView.Enabled = true;
_attrLView.SelectedIndex = 0;
}
else
_attrLView.Enabled = false;
_attrLView.Update();
}
private void _update_valLView()
{
_valLView.Items.Clear();
if (_currAttributeTree != null && _attrLView.Items.Count > 0)
_valLView.Items.AddRange(_currAttributeTree.GetValue((String)_attrLView.SelectedItem).Keys.ToArray());
if (_valLView.Items.Count > 0)
{
_valLView.Enabled = true;
}
else
_valLView.Enabled = false;
_valLView.Update();
}
}
}

View File

@@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace HaInformator
{
public class AttributeTree
{
private Dictionary<string, Dictionary<string, HashSet<XAttribute>>> _Attributes;
public void AddAttribute(XAttribute attribute)
{
if (_Attributes == null)
_Attributes = new Dictionary<string, Dictionary<string, HashSet<XAttribute>>>();
if (!_Attributes.ContainsKey(attribute.Name.ToString()))
_Attributes.Add(attribute.Name.ToString(), new Dictionary<string, HashSet<XAttribute>>());
if (!_Attributes[attribute.Name.ToString()].ContainsKey(attribute.Value))
_Attributes[attribute.Name.ToString()].Add(attribute.Value, new HashSet<XAttribute>());
if (!_Attributes[attribute.Name.ToString()][attribute.Value].Contains(attribute))
_Attributes[attribute.Name.ToString()][attribute.Value].Add(attribute);
}
public Dictionary<string, Dictionary<string, HashSet<XAttribute>>> GetData()
=> _Attributes;
public void AddAttribute(AttributeTree attributes)
{
if (attributes == null || attributes.GetData() == null)
return;
foreach (var aname in attributes.GetData())
foreach (var aval in aname.Value)
foreach (var aindiv in aval.Value)
AddAttribute(aindiv);
}
public void RemoveAttribute(string name)
{
if (_Attributes == null ||
!_Attributes.ContainsKey(name))
return;
foreach (var val in _Attributes[name])
foreach (var attr in val.Value)
attr.Remove();
_Attributes.Remove(name);
}
public void EditValue(string attr, string source, string target)
{
if (_Attributes == null ||
!_Attributes.ContainsKey(attr) ||
!_Attributes[attr].ContainsKey(source) ||
source == target)
return;
foreach (var a in _Attributes[attr][source])
a.Value = target;
}
public string[] Keys()
=> _Attributes.Keys.ToArray();
public bool Any()
{
if (_Attributes == null || !_Attributes.Any())
return false;
return true;
}
public Dictionary<string, HashSet<XAttribute>> GetValue(string name)
{
if (_Attributes == null || !_Attributes.ContainsKey(name))
return null;
return _Attributes[name];
}
}
}

View File

@@ -0,0 +1,292 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
namespace HaInformator
{
public enum cMenuState
{
None,
tView,
lView,
aView,
vView
}
public class ContextMenuSelection
{
private static Dictionary<cMenuState, List<ToolStripItem>> _groups;
public Action<object, EventArgs> tNewBtn_Click
{
set
{
_cMenu.Items["tNewBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> tEditBtn_Click
{
set
{
_cMenu.Items["tEditBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> tAddAttributeBtn_Click
{
set
{
_cMenu.Items["tAddAttributeBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> tDeleteBtn_Click
{
set
{
_cMenu.Items["tDeleteBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> tDeleteNodeKeepContentBtn_Click
{
set
{
_cMenu.Items["tDeleteNodeKeepContentBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> tSaveBtn_Click
{
set
{
_cMenu.Items["tSaveBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> lEditBtn_Click
{
set
{
_cMenu.Items["lEditBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> lAddAttributeBtn_Click
{
set
{
_cMenu.Items["lAddAttributeBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> lDeleteBtn_Click
{
set
{
_cMenu.Items["lDeleteBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> lDeleteNodeKeepContentBtn_Click
{
set
{
_cMenu.Items["lDeleteNodeKeepContentBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> aNewBtn_Click
{
set
{
_cMenu.Items["aNewBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> aEditBtn_Click
{
set
{
_cMenu.Items["aEditBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> aDeleteBtn_Click
{
set
{
_cMenu.Items["aDeleteBtn"].Click += new EventHandler(value);
}
}
public Action<object, EventArgs> vEditBtn_Click
{
set
{
_cMenu.Items["vEditBtn"].Click += new EventHandler(value);
}
}
private static ContextMenuStrip _cMenu;
private static cMenuState _currState;
public ContextMenuSelection(ContextMenuStrip cMenu)
{
_cMenu = cMenu;
_createGroups();
}
private void _createGroups()
{
_groups = new Dictionary<cMenuState, List<ToolStripItem>>(5);
_groups.Add(
cMenuState.tView,
new List<ToolStripItem>()
{
_cMenu.Items["tHeader"],
_cMenu.Items["tNewBtn"], //
_cMenu.Items["tEditBtn"], //
_cMenu.Items["tAddAttributeBtn"], //
_cMenu.Items["tDeleteBtn"], //
// _cMenu.Items["tDeleteNodeKeepContentBtn"],
_cMenu.Items["tSaveBtn"]
}
);
_groups.Add(
cMenuState.lView,
new List<ToolStripItem>()
{
_cMenu.Items["lheader"],
_cMenu.Items["lEditBtn"], //
_cMenu.Items["lAddAttributeBtn"], //
_cMenu.Items["lDeleteBtn"], //
// _cMenu.Items["lDeleteNodeKeepContentBtn"] //
}
);
_groups.Add(
cMenuState.aView,
new List<ToolStripItem>()
{
_cMenu.Items["aheader"],
_cMenu.Items["aNewBtn"], //
_cMenu.Items["aEditBtn"], //
_cMenu.Items["aDeleteBtn"] //
}
);
_groups.Add(
cMenuState.vView,
new List<ToolStripItem>()
{
_cMenu.Items["vHeader"],
_cMenu.Items["vEditBtn"] //
}
);
}
public ContextMenuStrip Open(cMenuState state)
{
foreach (var i in _cMenu.Items)
{
var it = (ToolStripItem)i;
if (_groups[state].Contains(i))
it.Enabled = true;
else
it.Enabled = false;
}
return _cMenu;
}
public DialogResult ShowInputDialog(ref string input, string title = "")
{
System.Drawing.Size size = new System.Drawing.Size(200, 70);
Form inputBox = new Form();
inputBox.Text = title;
inputBox.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
inputBox.ClientSize = size;
System.Windows.Forms.TextBox textBox = new TextBox();
textBox.Size = new System.Drawing.Size(size.Width - 10, 23);
textBox.Location = new System.Drawing.Point(5, 5);
textBox.Text = input;
inputBox.Controls.Add(textBox);
Button okButton = new Button();
okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
okButton.Name = "okButton";
okButton.Size = new System.Drawing.Size(75, 23);
okButton.Text = "&OK";
okButton.Location = new System.Drawing.Point(size.Width - 80 - 80, 39);
inputBox.Controls.Add(okButton);
Button cancelButton = new Button();
cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
cancelButton.Name = "cancelButton";
cancelButton.Size = new System.Drawing.Size(75, 23);
cancelButton.Text = "&Cancel";
cancelButton.Location = new System.Drawing.Point(size.Width - 80, 39);
inputBox.Controls.Add(cancelButton);
inputBox.AcceptButton = okButton;
inputBox.CancelButton = cancelButton;
DialogResult result = inputBox.ShowDialog();
input = textBox.Text;
return result;
}
public DialogResult ShowDoubleInputDialog(ref string input, ref string value, string title = "")
{
System.Drawing.Size size = new System.Drawing.Size(200, 95);
Form inputBox = new Form();
inputBox.Text = title;
inputBox.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
inputBox.ClientSize = size;
System.Windows.Forms.TextBox textBox = new TextBox();
textBox.Size = new System.Drawing.Size(size.Width - 10, 23);
textBox.Location = new System.Drawing.Point(5, 5);
textBox.Text = input;
inputBox.Controls.Add(textBox);
System.Windows.Forms.TextBox textBox2 = new TextBox();
textBox2.Size = new System.Drawing.Size(size.Width - 10, 23);
textBox2.Location = new System.Drawing.Point(5, 33);
textBox2.Text = input;
inputBox.Controls.Add(textBox2);
Button okButton = new Button();
okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
okButton.Name = "okButton";
okButton.Size = new System.Drawing.Size(75, 23);
okButton.Text = "&OK";
okButton.Location = new System.Drawing.Point(size.Width - 80 - 80, 58);
inputBox.Controls.Add(okButton);
Button cancelButton = new Button();
cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
cancelButton.Name = "cancelButton";
cancelButton.Size = new System.Drawing.Size(75, 23);
cancelButton.Text = "&Cancel";
cancelButton.Location = new System.Drawing.Point(size.Width - 80, 58);
inputBox.Controls.Add(cancelButton);
inputBox.AcceptButton = okButton;
inputBox.CancelButton = cancelButton;
DialogResult result = inputBox.ShowDialog();
input = textBox.Text;
value = textBox2.Text;
return result;
}
public DialogResult ShowSaveFileDialog(ref string path)
{
SaveFileDialog sFileD = new SaveFileDialog();
sFileD.DefaultExt = "xml";
sFileD.Filter = "XML-Datei|*.xml";
var res = sFileD.ShowDialog();
path = sFileD.FileName;
return res;
}
}
}

View File

@@ -0,0 +1,180 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HaInformator
{
public class ElementSelection
{
private static TreeView _tView;
private static TreeNodeCollection _trees;
private static ListBox _lView;
private static AttrValSelection _attrValSelection;
private static ContextMenuSelection _cMenuSelection;
private static FlatCollection _flats; // Liste aller Elemente
private SelectionState _state; // Ausgewählte BaumElemente
public ElementSelection(TreeView tView,
ListBox lView,
AttrValSelection selection,
ContextMenuSelection cMenuSelection)
{
_tView = tView;
_lView = lView;
_trees = tView.Nodes;
_attrValSelection = selection;
_cMenuSelection = cMenuSelection;
_tView.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this._tView_Select);
_lView.MouseDown += new MouseEventHandler(this._lView_Select);
_cMenuSelection.tNewBtn_Click = _tNewBtn_Click;
_cMenuSelection.tEditBtn_Click = _tEditBtn_Click;
_cMenuSelection.tAddAttributeBtn_Click = _tlAddAttributeBtn_Click;
_cMenuSelection.tDeleteBtn_Click = _tlDeleteBtn_Click;
_cMenuSelection.tSaveBtn_Click = _tSaveBtn_Click;
_cMenuSelection.lEditBtn_Click = _lEditBtn_Click;
_cMenuSelection.lAddAttributeBtn_Click = _tlAddAttributeBtn_Click;
_cMenuSelection.lDeleteBtn_Click = _tlDeleteBtn_Click;
}
private void _tSaveBtn_Click(object sender, EventArgs e)
{
string filepath = "";
if (_cMenuSelection.ShowSaveFileDialog(ref filepath) == DialogResult.OK)
_state.SaveTree(filepath);
}
private void _tEditBtn_Click(object sender, EventArgs e)
{
_ = _EditBtnClick();
_tView_Select((Tree)_tView.SelectedNode);
}
private void _lEditBtn_Click(object sender, EventArgs e)
{
var ret = _EditBtnClick();
_lView_Select(ret);
}
private string _EditBtnClick()
{
_tView.LabelEdit = true;
var str = _state.Name;
if (_cMenuSelection.ShowInputDialog(ref str, "Tag <" + _state.Name + "> bearbeiten") == DialogResult.OK)
_state.ChangeName(str);
_tView.LabelEdit = false;
_lView_Draw();
return str;
}
private void _tlAddAttributeBtn_Click(object sender, EventArgs e)
{
_AddAttributeBtn_Click();
}
private void _AddAttributeBtn_Click()
{
_tView.LabelEdit = true;
_attrValSelection.AddAttribute();
_tView.LabelEdit = false;
}
private void _tlDeleteBtn_Click(object sender, EventArgs e)
{
_tView.LabelEdit = true;
_state.RemoveElement();
_tView.LabelEdit = false;
_lView_Draw();
}
private void _tNewBtn_Click(object sender, EventArgs e)
{
_tView.LabelEdit = true;
var str = "";
if (_cMenuSelection.ShowInputDialog(ref str, "Neuen Tag unter <" + _state.Name + "> einfügen" ) == DialogResult.OK)
_state.AddElement(str, "");
_tView.LabelEdit = false;
_lView_Draw();
}
private void _lView_Draw()
{
_lView.Items.Clear();
_flats = new FlatCollection(_trees);
if (_flats.Keys() != null)
_lView.Items.AddRange(_flats.Keys());
}
private void _tView_Select(object sender, TreeNodeMouseClickEventArgs e)
{
_tView.SelectedNode = e.Node;
_tView_Select((Tree)e.Node);
if (e.Button == MouseButtons.Right)
e.Node.ContextMenuStrip = _cMenuSelection.Open(cMenuState.tView);
}
private void _lView_Select(object sender, MouseEventArgs e)
{
var node = _lView.IndexFromPoint(new Point(e.X, e.Y));
if (node == -1)
return;
//if (node != _lView.SelectedIndex)
_lView_Select((String)_lView.Items[node]);
if (e.Button == MouseButtons.Right)
_lView.ContextMenuStrip = _cMenuSelection.Open(cMenuState.lView);
}
private void _tView_Select(Tree tree)
{
_lView.ClearSelected();
if (_state != null)
_state.Unmark();
var desc = "Arribute von " + _tView.SelectedNode.Text.ToUpper() + "-Tags in " + _tView.SelectedNode.FullPath;
_state = new SelectionState(tree);
_selectNode(desc);
}
private void _lView_Select(string sItem)
{
_lView.SelectedItem = sItem;
_tView.CollapseAll();
if (_state != null)
_state.Unmark();
_tView.BeginUpdate();
_state = new SelectionState(_flats.GetTrees(sItem));
_tView.EndUpdate();
_selectNode("Atrribute aller " + sItem + "-Tags");
_state.Mark();
}
public void Load(Tree tree)
{
_state = null;
_trees.Add(tree);
_lView_Draw();
}
private void _selectNode(string desc)
{
_attrValSelection.Load(_state, desc);
}
}
}

View File

@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HaInformator
{
public class FlatCollection
{
private Dictionary<string, HashSet<Tree>> _FlatCollection;
public FlatCollection(Tree tree)
{
_addToCollection(tree);
}
public FlatCollection(TreeNodeCollection coll)
{
foreach (var t in coll) _addToCollection((Tree)t);
}
private void _addToCollection(Tree tree)
{
if (_FlatCollection == null)
_FlatCollection = new Dictionary<string, HashSet<Tree>>();
if (!_FlatCollection.ContainsKey(tree.Name))
_FlatCollection.Add(tree.Name, new HashSet<Tree>());
if (!_FlatCollection[tree.Name].Contains(tree))
_FlatCollection[tree.Name].Add(tree);
foreach (var t in tree.Nodes)
_addToCollection((Tree)t);
}
public string[] Keys()
{
if (_FlatCollection == null)
return null;
return _FlatCollection.Keys.ToArray();
}
public HashSet<Tree> GetTrees(string key)
{
if (!_FlatCollection.ContainsKey(key))
return null;
else
return _FlatCollection[key];
}
}
}

569
Archive/HaInformator/Form1.Designer.cs generated Normal file
View File

@@ -0,0 +1,569 @@
namespace HaInformator
{
partial class HaProgram
{
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HaProgram));
this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
this.saveLogDialog = new System.Windows.Forms.SaveFileDialog();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.ArribValDesc = new System.Windows.Forms.GroupBox();
this.AttrList = new System.Windows.Forms.ListBox();
this.ValList = new System.Windows.Forms.ListBox();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.NodeList = new System.Windows.Forms.ListBox();
this.NodeTree = new System.Windows.Forms.TreeView();
this.GoBtn = new System.Windows.Forms.Button();
this.SaveLogBtn = new System.Windows.Forms.Button();
this.LogBox = new System.Windows.Forms.TextBox();
this.InFileBtn = new System.Windows.Forms.Button();
this.InFilepath = new System.Windows.Forms.TextBox();
this.Description = new System.Windows.Forms.Label();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.footerStatusText = new System.Windows.Forms.ToolStripStatusLabel();
this.cMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.tHeader = new System.Windows.Forms.ToolStripTextBox();
this.tNewBtn = new System.Windows.Forms.ToolStripMenuItem();
this.tEditBtn = new System.Windows.Forms.ToolStripMenuItem();
this.tAddAttributeBtn = new System.Windows.Forms.ToolStripMenuItem();
this.tDeleteBtn = new System.Windows.Forms.ToolStripMenuItem();
this.tDeleteNodeKeepContentBtn = new System.Windows.Forms.ToolStripMenuItem();
this.tSaveBtn = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.lHeader = new System.Windows.Forms.ToolStripTextBox();
this.lEditBtn = new System.Windows.Forms.ToolStripMenuItem();
this.lAddAttributeBtn = new System.Windows.Forms.ToolStripMenuItem();
this.lDeleteBtn = new System.Windows.Forms.ToolStripMenuItem();
this.lDeleteNodeKeepContentBtn = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.aHeader = new System.Windows.Forms.ToolStripTextBox();
this.aNewBtn = new System.Windows.Forms.ToolStripMenuItem();
this.aEditBtn = new System.Windows.Forms.ToolStripMenuItem();
this.aDeleteBtn = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.vHeader = new System.Windows.Forms.ToolStripTextBox();
this.vEditBtn = new System.Windows.Forms.ToolStripMenuItem();
this.groupBox1.SuspendLayout();
this.ArribValDesc.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.cMenu.SuspendLayout();
this.SuspendLayout();
//
// openFileDialog
//
this.openFileDialog.DefaultExt = "xml";
this.openFileDialog.FileName = "openFile";
this.openFileDialog.Filter = "XML-Dateien|*.xml";
//
// saveLogDialog
//
this.saveLogDialog.DefaultExt = "log";
//
// groupBox1
//
this.groupBox1.Controls.Add(this.ArribValDesc);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.NodeList);
this.groupBox1.Controls.Add(this.NodeTree);
this.groupBox1.Location = new System.Drawing.Point(15, 306);
this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.groupBox1.Size = new System.Drawing.Size(1283, 658);
this.groupBox1.TabIndex = 10;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Analyse und Bearbeitung";
//
// ArribValDesc
//
this.ArribValDesc.Controls.Add(this.AttrList);
this.ArribValDesc.Controls.Add(this.ValList);
this.ArribValDesc.Location = new System.Drawing.Point(675, 18);
this.ArribValDesc.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.ArribValDesc.Name = "ArribValDesc";
this.ArribValDesc.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.ArribValDesc.Size = new System.Drawing.Size(596, 631);
this.ArribValDesc.TabIndex = 8;
this.ArribValDesc.TabStop = false;
this.ArribValDesc.Text = "Attribute und Werte";
//
// AttrList
//
this.AttrList.Enabled = false;
this.AttrList.FormattingEnabled = true;
this.AttrList.ItemHeight = 16;
this.AttrList.Location = new System.Drawing.Point(8, 52);
this.AttrList.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.AttrList.Name = "AttrList";
this.AttrList.Size = new System.Drawing.Size(579, 148);
this.AttrList.Sorted = true;
this.AttrList.TabIndex = 1;
//
// ValList
//
this.ValList.Enabled = false;
this.ValList.FormattingEnabled = true;
this.ValList.ItemHeight = 16;
this.ValList.Location = new System.Drawing.Point(8, 203);
this.ValList.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.ValList.Name = "ValList";
this.ValList.Size = new System.Drawing.Size(579, 420);
this.ValList.Sorted = true;
this.ValList.TabIndex = 2;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(357, 18);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(136, 17);
this.label2.TabIndex = 5;
this.label2.Text = "Tags - Listenansicht";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(4, 20);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(134, 17);
this.label1.TabIndex = 4;
this.label1.Text = "Tags - Baumansicht";
//
// NodeList
//
this.NodeList.FormattingEnabled = true;
this.NodeList.ItemHeight = 16;
this.NodeList.Location = new System.Drawing.Point(361, 39);
this.NodeList.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.NodeList.Name = "NodeList";
this.NodeList.Size = new System.Drawing.Size(304, 612);
this.NodeList.Sorted = true;
this.NodeList.TabIndex = 3;
//
// NodeTree
//
this.NodeTree.FullRowSelect = true;
this.NodeTree.Indent = 24;
this.NodeTree.Location = new System.Drawing.Point(8, 38);
this.NodeTree.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.NodeTree.Name = "NodeTree";
this.NodeTree.Size = new System.Drawing.Size(344, 611);
this.NodeTree.TabIndex = 0;
//
// GoBtn
//
this.GoBtn.Dock = System.Windows.Forms.DockStyle.Left;
this.GoBtn.Location = new System.Drawing.Point(1095, 270);
this.GoBtn.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.GoBtn.Name = "GoBtn";
this.GoBtn.Size = new System.Drawing.Size(203, 28);
this.GoBtn.TabIndex = 8;
this.GoBtn.Text = "Go";
this.GoBtn.UseVisualStyleBackColor = true;
this.GoBtn.Click += new System.EventHandler(this.GoBtn_Click);
//
// SaveLogBtn
//
this.SaveLogBtn.Enabled = false;
this.SaveLogBtn.Location = new System.Drawing.Point(871, 270);
this.SaveLogBtn.Margin = new System.Windows.Forms.Padding(860, 4, 4, 4);
this.SaveLogBtn.Name = "SaveLogBtn";
this.SaveLogBtn.Size = new System.Drawing.Size(216, 28);
this.SaveLogBtn.TabIndex = 7;
this.SaveLogBtn.Text = "Log speichern...";
this.SaveLogBtn.UseVisualStyleBackColor = true;
this.SaveLogBtn.Click += new System.EventHandler(this.SaveLogBtn_Click);
//
// LogBox
//
this.LogBox.AcceptsReturn = true;
this.LogBox.AcceptsTab = true;
this.LogBox.BackColor = System.Drawing.SystemColors.MenuText;
this.LogBox.Font = new System.Drawing.Font("Lucida Console", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.LogBox.ForeColor = System.Drawing.SystemColors.Window;
this.LogBox.Location = new System.Drawing.Point(15, 67);
this.LogBox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.LogBox.MaxLength = 1000000;
this.LogBox.Multiline = true;
this.LogBox.Name = "LogBox";
this.LogBox.Size = new System.Drawing.Size(1281, 195);
this.LogBox.TabIndex = 6;
this.LogBox.Text = "Log";
this.LogBox.TextChanged += new System.EventHandler(this.LogBox_TextChanged);
//
// InFileBtn
//
this.InFileBtn.Location = new System.Drawing.Point(1146, 31);
this.InFileBtn.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.InFileBtn.Name = "InFileBtn";
this.InFileBtn.Size = new System.Drawing.Size(149, 28);
this.InFileBtn.TabIndex = 2;
this.InFileBtn.Text = "Durchsuchen...";
this.InFileBtn.UseVisualStyleBackColor = true;
this.InFileBtn.Click += new System.EventHandler(this.InFileBtn_Click);
//
// InFilepath
//
this.InFilepath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.InFilepath.Dock = System.Windows.Forms.DockStyle.Bottom;
this.InFilepath.Location = new System.Drawing.Point(15, 37);
this.InFilepath.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.InFilepath.Name = "InFilepath";
this.InFilepath.ReadOnly = true;
this.InFilepath.Size = new System.Drawing.Size(1123, 22);
this.InFilepath.TabIndex = 1;
this.InFilepath.Text = "XML-Datei";
//
// Description
//
this.Description.AutoSize = true;
this.Description.Location = new System.Drawing.Point(15, 10);
this.Description.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.Description.MinimumSize = new System.Drawing.Size(1283, 0);
this.Description.Name = "Description";
this.Description.Size = new System.Drawing.Size(1283, 17);
this.Description.TabIndex = 9;
this.Description.Text = "Beschreibung";
//
// flowLayoutPanel1
//
this.flowLayoutPanel1.AutoSize = true;
this.flowLayoutPanel1.Controls.Add(this.Description);
this.flowLayoutPanel1.Controls.Add(this.InFilepath);
this.flowLayoutPanel1.Controls.Add(this.InFileBtn);
this.flowLayoutPanel1.Controls.Add(this.LogBox);
this.flowLayoutPanel1.Controls.Add(this.SaveLogBtn);
this.flowLayoutPanel1.Controls.Add(this.GoBtn);
this.flowLayoutPanel1.Controls.Add(this.groupBox1);
this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel1.MaximumSize = new System.Drawing.Size(1360, 966);
this.flowLayoutPanel1.MinimumSize = new System.Drawing.Size(1333, 966);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(11, 10, 11, 10);
this.flowLayoutPanel1.Size = new System.Drawing.Size(1333, 966);
this.flowLayoutPanel1.TabIndex = 0;
//
// statusStrip1
//
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.footerStatusText});
this.statusStrip1.Location = new System.Drawing.Point(0, 956);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 19, 0);
this.statusStrip1.Size = new System.Drawing.Size(1309, 26);
this.statusStrip1.SizingGrip = false;
this.statusStrip1.TabIndex = 1;
this.statusStrip1.Text = "statusStrip1";
//
// footerStatusText
//
this.footerStatusText.Name = "footerStatusText";
this.footerStatusText.Size = new System.Drawing.Size(48, 20);
this.footerStatusText.Text = "Bereit";
//
// cMenu
//
this.cMenu.BackColor = System.Drawing.SystemColors.Control;
this.cMenu.ImageScalingSize = new System.Drawing.Size(20, 20);
this.cMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tHeader,
this.tNewBtn,
this.tEditBtn,
this.tAddAttributeBtn,
this.tDeleteBtn,
this.tDeleteNodeKeepContentBtn,
this.tSaveBtn,
this.toolStripSeparator1,
this.lHeader,
this.lEditBtn,
this.lAddAttributeBtn,
this.lDeleteBtn,
this.lDeleteNodeKeepContentBtn,
this.toolStripSeparator2,
this.aHeader,
this.aNewBtn,
this.aEditBtn,
this.aDeleteBtn,
this.toolStripSeparator3,
this.vHeader,
this.vEditBtn});
this.cMenu.Name = "cMenu";
this.cMenu.ShowImageMargin = false;
this.cMenu.ShowItemToolTips = false;
this.cMenu.Size = new System.Drawing.Size(261, 450);
//
// tHeader
//
this.tHeader.BackColor = System.Drawing.SystemColors.Control;
this.tHeader.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.tHeader.Enabled = false;
this.tHeader.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.tHeader.ForeColor = System.Drawing.SystemColors.ControlText;
this.tHeader.Margin = new System.Windows.Forms.Padding(3, 2, 2, 1);
this.tHeader.Name = "tHeader";
this.tHeader.ReadOnly = true;
this.tHeader.Size = new System.Drawing.Size(190, 20);
this.tHeader.Text = "Aktionen im Baum";
//
// tNewBtn
//
this.tNewBtn.Enabled = false;
this.tNewBtn.Name = "tNewBtn";
this.tNewBtn.Size = new System.Drawing.Size(260, 24);
this.tNewBtn.Text = "Neu...";
//
// tEditBtn
//
this.tEditBtn.Enabled = false;
this.tEditBtn.Name = "tEditBtn";
this.tEditBtn.Size = new System.Drawing.Size(260, 24);
this.tEditBtn.Text = "Bearbeiten...";
//
// tAddAttributeBtn
//
this.tAddAttributeBtn.Enabled = false;
this.tAddAttributeBtn.Name = "tAddAttributeBtn";
this.tAddAttributeBtn.Size = new System.Drawing.Size(260, 24);
this.tAddAttributeBtn.Text = "Attribut hinzufügen...";
//
// tDeleteBtn
//
this.tDeleteBtn.Enabled = false;
this.tDeleteBtn.Name = "tDeleteBtn";
this.tDeleteBtn.Size = new System.Drawing.Size(260, 24);
this.tDeleteBtn.Text = "Knoten löschen";
//
// tDeleteNodeKeepContentBtn
//
this.tDeleteNodeKeepContentBtn.Enabled = false;
this.tDeleteNodeKeepContentBtn.Name = "tDeleteNodeKeepContentBtn";
this.tDeleteNodeKeepContentBtn.Size = new System.Drawing.Size(260, 24);
this.tDeleteNodeKeepContentBtn.Text = "Knoten löschen, Inhalt behalten";
//
// tSaveBtn
//
this.tSaveBtn.Enabled = false;
this.tSaveBtn.Name = "tSaveBtn";
this.tSaveBtn.Size = new System.Drawing.Size(260, 24);
this.tSaveBtn.Text = "Knoten als Datei speichern...";
this.tSaveBtn.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(257, 6);
//
// lHeader
//
this.lHeader.BackColor = System.Drawing.SystemColors.Control;
this.lHeader.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.lHeader.Enabled = false;
this.lHeader.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.lHeader.ForeColor = System.Drawing.SystemColors.ControlText;
this.lHeader.Margin = new System.Windows.Forms.Padding(3, 2, 2, 1);
this.lHeader.Name = "lHeader";
this.lHeader.ReadOnly = true;
this.lHeader.Size = new System.Drawing.Size(190, 20);
this.lHeader.Text = "Aktionen in der Liste";
//
// lEditBtn
//
this.lEditBtn.Enabled = false;
this.lEditBtn.Name = "lEditBtn";
this.lEditBtn.Size = new System.Drawing.Size(260, 24);
this.lEditBtn.Text = "Bearbeiten...";
//
// lAddAttributeBtn
//
this.lAddAttributeBtn.Enabled = false;
this.lAddAttributeBtn.Name = "lAddAttributeBtn";
this.lAddAttributeBtn.Size = new System.Drawing.Size(260, 24);
this.lAddAttributeBtn.Text = "Attribut hinzufügen...";
//
// lDeleteBtn
//
this.lDeleteBtn.Enabled = false;
this.lDeleteBtn.Name = "lDeleteBtn";
this.lDeleteBtn.Size = new System.Drawing.Size(260, 24);
this.lDeleteBtn.Text = "Knoten löschen";
//
// lDeleteNodeKeepContentBtn
//
this.lDeleteNodeKeepContentBtn.Enabled = false;
this.lDeleteNodeKeepContentBtn.Name = "lDeleteNodeKeepContentBtn";
this.lDeleteNodeKeepContentBtn.Size = new System.Drawing.Size(260, 24);
this.lDeleteNodeKeepContentBtn.Text = "Knoten löschen, Inhalt behalten";
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(257, 6);
//
// aHeader
//
this.aHeader.BackColor = System.Drawing.SystemColors.Control;
this.aHeader.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.aHeader.Enabled = false;
this.aHeader.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.aHeader.ForeColor = System.Drawing.SystemColors.ControlText;
this.aHeader.Margin = new System.Windows.Forms.Padding(3, 2, 2, 1);
this.aHeader.Name = "aHeader";
this.aHeader.ReadOnly = true;
this.aHeader.Size = new System.Drawing.Size(190, 20);
this.aHeader.Text = "Aktionen in der Attributsliste";
//
// aNewBtn
//
this.aNewBtn.Enabled = false;
this.aNewBtn.Name = "aNewBtn";
this.aNewBtn.Size = new System.Drawing.Size(260, 24);
this.aNewBtn.Text = "Neu...";
//
// aEditBtn
//
this.aEditBtn.Enabled = false;
this.aEditBtn.Name = "aEditBtn";
this.aEditBtn.Size = new System.Drawing.Size(260, 24);
this.aEditBtn.Text = "Bearbeiten...";
//
// aDeleteBtn
//
this.aDeleteBtn.Enabled = false;
this.aDeleteBtn.Name = "aDeleteBtn";
this.aDeleteBtn.Size = new System.Drawing.Size(260, 24);
this.aDeleteBtn.Text = "Löschen";
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(257, 6);
//
// vHeader
//
this.vHeader.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.vHeader.BackColor = System.Drawing.SystemColors.Control;
this.vHeader.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.vHeader.Enabled = false;
this.vHeader.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.vHeader.ForeColor = System.Drawing.SystemColors.ControlText;
this.vHeader.Margin = new System.Windows.Forms.Padding(3, 2, 2, 1);
this.vHeader.Name = "vHeader";
this.vHeader.ReadOnly = true;
this.vHeader.Size = new System.Drawing.Size(190, 20);
this.vHeader.Text = "Aktionen in der Werteliste";
//
// vEditBtn
//
this.vEditBtn.Enabled = false;
this.vEditBtn.Name = "vEditBtn";
this.vEditBtn.Size = new System.Drawing.Size(260, 24);
this.vEditBtn.Text = "Bearbeiten...";
//
// HaProgram
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1309, 982);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.flowLayoutPanel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(1327, 1029);
this.MinimumSize = new System.Drawing.Size(1327, 1029);
this.Name = "HaProgram";
this.Text = "HaProgram";
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ArribValDesc.ResumeLayout(false);
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.cMenu.ResumeLayout(false);
this.cMenu.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.OpenFileDialog openFileDialog;
private System.Windows.Forms.SaveFileDialog saveLogDialog;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ListBox ValList;
private System.Windows.Forms.ListBox AttrList;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ListBox NodeList;
private System.Windows.Forms.TreeView NodeTree;
private System.Windows.Forms.Button GoBtn;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.Label Description;
private System.Windows.Forms.TextBox InFilepath;
private System.Windows.Forms.Button InFileBtn;
private System.Windows.Forms.TextBox LogBox;
private System.Windows.Forms.Button SaveLogBtn;
private System.Windows.Forms.GroupBox ArribValDesc;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel footerStatusText;
private System.Windows.Forms.ContextMenuStrip cMenu;
private System.Windows.Forms.ToolStripTextBox tHeader;
private System.Windows.Forms.ToolStripMenuItem tNewBtn;
private System.Windows.Forms.ToolStripMenuItem tEditBtn;
private System.Windows.Forms.ToolStripMenuItem tAddAttributeBtn;
private System.Windows.Forms.ToolStripMenuItem tDeleteBtn;
private System.Windows.Forms.ToolStripMenuItem tDeleteNodeKeepContentBtn;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripTextBox lHeader;
private System.Windows.Forms.ToolStripMenuItem lEditBtn;
private System.Windows.Forms.ToolStripMenuItem lAddAttributeBtn;
private System.Windows.Forms.ToolStripMenuItem lDeleteBtn;
private System.Windows.Forms.ToolStripMenuItem lDeleteNodeKeepContentBtn;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.ToolStripTextBox aHeader;
private System.Windows.Forms.ToolStripMenuItem aNewBtn;
private System.Windows.Forms.ToolStripMenuItem aEditBtn;
private System.Windows.Forms.ToolStripMenuItem aDeleteBtn;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripTextBox vHeader;
private System.Windows.Forms.ToolStripMenuItem vEditBtn;
private System.Windows.Forms.ToolStripMenuItem tSaveBtn;
}
}

View File

@@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace HaInformator
{
public partial class HaProgram : Form
{
private static Informate _informate;
public HaProgram()
{
InitializeComponent();
_informate = new Informate(new Logger(LogBox),
NodeTree,
NodeList,
AttrList,
ValList,
ArribValDesc,
cMenu);
Description.Text = _informate.Description;
}
private void InFileBtn_Click(object sender, EventArgs e)
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
InFilepath.Text = openFileDialog.FileName;
}
private void GoBtn_Click(object sender, EventArgs e)
{
GoBtn.Enabled = false;
if (_informate.Act(InFilepath.Text) == HaControl.HaControlResult.OK)
{
}
GoBtn.Enabled = true;
}
private void SaveLogBtn_Click(object sender, EventArgs e)
{
}
private void LogBox_TextChanged(object sender, EventArgs e)
{
}
}
}

View File

@@ -0,0 +1,665 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="saveLogDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>279, 17</value>
</metadata>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>410, 17</value>
</metadata>
<metadata name="cMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>526, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAZGQAAAEAGACYewAAFgAAACgAAABkAAAAyAAAAAEAGAAAAAAAAAAAAEgAAABIAAAAAAAAAAAA
AAD/////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///5+fz///7///7///7///7///7///7///7///7+/v3l5fb+/v7/////////////////////////////
///////////////////////////////////+/v739/z19vv///7///7///7///7///7///7///7///7/
//7///7///7///7v7/n+//7/////////////////////////////////////////////////////////
///////+/v7+/v7+/v7+///+///+///+///+///+///+///+///+///+///+///+///+//7///7///7/
//7///7///7///7+/v7+///+/v7+/v79/v7+/v////7/////////////////////////////////////
//8QELISErQSErQSErQSErQSErQSErQSErQSErQSErMPDrL9/f3+////////////////////////////
///////////////////////////////////8/P1kZM0PD7ISErQSErQSErQSErQSErQSErQSErQSErQS
ErQSErQSErQSErRzc9L+/v3/////////////////////////////////////////////////////////
///////r6/cSErQxML09PME9PME9PME9PME9PME9PME9PME9PME9PME9PME9PME9PME7PMATErQSErQS
ErQSErQSErQSErQrK7o9PMFFRcNnZ82QkdrAwOns7fn/////////////////////////////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAyMr7/////////////////////////////////
///////////////////////////////+/f2SktwIB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLBnZ878/P7/////////////////////////////////////////////////////////////
///////19foWFrQICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAMDLI+PsGJidjj5PX+/v7/////////////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7BLSsX/////////////////////////////////
///////////////////////+///+/v3BwOoNDbEHCLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAHCLBGRsT29/z/////////////////////////////////////////////////////////////////
///////8/f0pKboICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLANDbJmZs7e3/P9/v3/////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7BeXsz/////////////////////////////////
/////////////////////////v7i4/QeHrcICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAH
CLBGR8Tz8/r/////////////////////////////////////////////////////////////////////
///////+/v5ISMQICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICK8HB7AICLAHB7AIB7AICLAICLAICLAICLAICLAICLAICLAICLAVFbSgoN/8/P7/////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7CFhdf/////////////////////////////////
///////////////////////39/w8O8AICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAs
LLvn6Pf/////////////////////////////////////////////////////////////////////////
//////////9gX8wHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAGB7BAQMKbmt7IyOzk5Pfk5Pfk
5Pfk5Pfj4/XKyu2wr+R/f9Y/P8EJCLEICLAICLAICLAICLAICLAICLAICLAICLAHB7BwcND7+/3/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHCLCFhdf/////////////////////////////////
///////////////////8/f1kZc0ICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLArK7vi
4/T+/v3/////////////////////////////////////////////////////////////////////////
//////////9xctIICLAICLAICLAICLAICLAICLAICLAICLAICLAICLBRUcf7+/3/////////////////
///////////////////////+/v3CwuosLLsICLAICLAICLAICLAICLAICLAICLAICLAHB7BWVsj8/Pz/
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHCLCpqeP/////////////////////////////////
///////////////9/f2VlNwHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAZGbXMze3+
/v7+////////////////////////////////////////////////////////////////////////////
//////////95edQIB7EICLAICLAICLAICLAICLAICLAICLAICLAICLC/v+n+/v7/////////////////
///////////////////////+//////7o6fccHLcICLAICLAICLAICLAICLAICLAICLAICLAHB7B/ftX9
/f0ICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7Cvr+X/////////////////////////////////
//////////////7BwusPELIICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAYGbbMze3+/v3/
////////////////////////////////////////////////////////////////////////////////
//////////+bnN4HB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDo6Pb///7/////////////////
//////////////////////////////////+VldwICLAICLAICLAICLAICLAICLAICLAICLAIB7AJCbC6
vOkICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7Cvr+X/////////////////////////////////
///////+//7j4/UeHbcICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAMDbGwsOT9/v7/////
////////////////////////////////////////////////////////////////////////////////
//////////+cnN8IB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////////////////09foODrIICLAICLAICLAICLAICLAICLAICLAICLAICLAz
M70ICLAICLAICLAICLAICLAICLAICLAICLAICLAICLDS0e//////////////////////////////////
///////4+PxBQcIICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7Gur+T+/v7/////////
////////////////////////////////////////////////////////////////////////////////
//////////+cnN8IB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////////////////9/f02Nb4ICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fL/////////////////////////////////
///+/v+IiNkICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAHCLBqac/9/f3+/v7/////////
////////////////////////////////////////////////////////////////////////////////
//////////+wsOYHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////////////////+/v5ZWsoICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP/////////////////////////////////
//+3t+gICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAHCLBpac78/P3/////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
//////////////////////////////////////9aWsoICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////////////////X
2PEcHLYICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7BHR8T19vv/////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
//////////////////////////////////////9aWsoICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////////+/v7z9Poz
Mr0HCLAICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7BEQ8P09fr+////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
//////////////////////////////////////9aWsoICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP//////////////////////v78/P5ZWckH
B7EICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7AuLrzk5fX+/v7/////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////////////////+/v5PT8YICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////9/v2Pj9sHB7AI
CLAICLAICLAICLAICLAICLAICLAICLAICLAHB7AqK7vk5PX/////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////////////////9/f0sLbsICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP///////////////////+9vOkNDbEICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAbGrbOzu//////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////////////////r6/YICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////e3/MfILgICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAYGLXPz+//////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
//////////////////////////////////+rq+MHCLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////+//739/w3N74HCLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAODrKxseb/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////////////+/v5SUscICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////9/v5ZWcoHB7AICLAICLAICLAI
CLAICLAICLAICLAICLAICLAJCLCvr+T/////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////////+/v7LzO4MDLEIB7AICLAICLAICLAICLAICLAICLAICLAICLAIB7Ba
WsoICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////9/f2CgtYHB7AICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLCNjdn9/fz/////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////+/v3z8/o4OL8ICLAICLAICLAICLAICLAICLAICLAICLAICLAICLEgILfk
5vYICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP9/v6io+AICbAHCLAICLAICLAICLAICLAI
CLAICLAICLAICLAHCLCHh9f9/v7+//7/////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////9/v3s7PdERcMICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7EQEbPFxev+
//4ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DY2fK3t+cQEbMICLAICLAICLAICLAICLAICLAI
CLAICLAICLAHCLBnZs38/P3+/v3/////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////+//7+/v729vugoN8gILgICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAhILjJyuz+/v7/
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAcHLYHB7AIB7AICLAICLAICLAICLAICLAICLAI
CLAICLAIB7FeXsv8/f3//v7/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLB5etSEhdiEhdiEhdiEhdiEhdiE
hdiEhdh5eNNISMQREbMHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAICLBWVsnm5vb+/v7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAHB7BKSsX19fr/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7AnJ7quruT9/fz/////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAcHLcHB68ICLAICLAICLAICLAICLAICLAICLAI
CLAzNL319fv+/v7/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7BFRcOlpuH4+fz///7+//7/////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7DW1/GtreUZGbUICLAICLAICLAICLAICLAICLAI
CLAKCrGlpeL+//7/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAHCLAHCLAHCLAHCLAHCLAHCLAH
CLAICLAHCLAICLAICLAICLAICLAICLAICLAICLAODrKsreT8/f3+/v3+/v7/////////////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////Nze4ZGbYICLAICLAICLAICLAICLAI
CLAICLAKC7G9vun/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLBoaM9yctJyctJyctJyctJyctJy
ctJeXss1Nb8NDbIICLAICLAICLAICLAICLAICLAHB7AMDLGAgNb29/r+/v7/////////////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////Z2vItLLsICLAICLAICLAICLAI
CLAICLAHCLAUE7TExOv+/v7/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////k5fZ0dNIJCbAICLAICLAICLAICLAICLAICLAICLBBQMLq6vf+/v3/////////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////k5PYtLbwICLAICLAICLAI
CLAICLAICLAHB7AUFLTExev+/v7/////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////+///+/v6MjdkICLAICLAICLAICLAICLAICLAICLAICLA3N7/r6vb+/v3/////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////j4/UtLbsICLAICLAI
CLAICLAICLAICLAHB7ATFLTExev//v7/////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////7/P03N78ICLAICLAICLAICLAICLAICLAICLAICLBISMT4+fz/////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////j4/UtLLwICLAI
CLAICLAICLAICLAICLAHB7AVFLSzteb/////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
//////////////////////+Ki9kHB7AICLAICLAICLAICLAICLAICLAICLAICLCHiNj/////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////////k5PUqLLsI
CLAICLAICLAICLAICLAICLAICLALC7GkpOH+/v7/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////CwusHCK8ICLAICLAICLAICLAICLAICLAICLAICLAVFbXo6ff+//7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////////////Ozu8Z
GbYICLAICLAICLAICLAICLAICLAICLALC7GlpeH+/v7/////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////j5PYIB7AICLAICLAICLAICLAICLAICLAICLAICLAICLCKidn+/v7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////////////////N
ze4TE7MICLAICLAICLAICLAICLAICLAICLAKCrGPkNv/////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////x8vsIB7AICLAICLAICLAICLAICLAICLAICLAICLAICLBNTcX+/v7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////////////////9
/v2vsOQNDbEICLAICLAICLAICLAICLAICLAICLAICLB9fdX/////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////GxewHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////x8vsIB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAqK7v+/v7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7DZ2fP////////////////////////////////+
///+/v6np+EHB7AICLAICLAICLAICLAICLAICLAICLAICK9naM74+Pv+/v3/////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////+wsOUICLAICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////x8foHCLAICLAICLAICLAICLAICLAICLAICLAICLAICLApKbv+/v7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAICLDY2fL/////////////////////////////////
///+/v7+/v6RktsJCLAICLAICLAICLAICLAICLAICLAICLAICLBSUsf4+fv+/v7/////////////////
////////////////////////////////////////////////////////////////////////////////
//////////+bnN8HB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////////IyO0HB7AICLAICLAICLAICLAICLAICLAICLAICLAICLBERMP//v7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7CwsOX/////////////////////////////////
/////////v79/f1xcdEHCLAICLAICLAICLAICLAICLAICLAICLAICLA+PsHq6/f//v7/////////////
////////////////////////////////////////////////////////////////////////////////
//////////+cnN8IB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
//////////////////////+goeEIB7AICLAICLAICLAICLAICLAICLAICLAICLAICLB7e9X+/v7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7Cvr+X/////////////////////////////////
///////////////7/P1XV8kIB7AICLAICLAICLAICLAICLAICLAICLAICLA2Nb/f3/P+/v7/////////
////////////////////////////////////////////////////////////////////////////////
//////////+cnN8IB7AICLAICLAICLAICLAICLAICLAICLAICLAICLDp6fj/////////////////////
///////////////////9/f1cXMoHCLAICLAICLAICLAICLAICLAICLAICLAICLAJCbHV1vD+/v7/////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHCLCur+T/////////////////////////////////
//////////////////709PpERcMHB7AICLAICLAICLAICLAICLAICLAICLAICLAgILfX1/H9/v7/////
////////////////////////////////////////////////////////////////////////////////
//////////97e9UICLAICLAICLAICLAICLAICLAICLAICLAICLAICLDU1vD///7/////////////////
///////////////////a2/IODbIICLAICLAICLAICLAICLAICLAICLAICLAICLBcXMr+//7/////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7CJidn/////////////////////////////////
///////////////////+/v7k5PYvLrwHCLAICLAICLAICLAICLAICLAICLAICLAHCLAcHLe8vOj+/v7/
////////////////////////////////////////////////////////////////////////////////
//////////9xctIICLAICLAICLAICLAICLAICLAICLAICLAICLAICLCJidj+/v3+/v7/////////////
///////+//7//v7y8/pERMMICLAICLAICLAICLAICLAICLAICLAICLAICLAeHrfj5PT/////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7CFhtj/////////////////////////////////
///////////////////////+//7Z2fEaGrYHB7AICLAICLAICLAICLAICLAICLAICLAICLARErOrq+P+
////////////////////////////////////////////////////////////////////////////////
//////////9hYcwHB7AICLAICLAICLAICLAICLAICLAICLAICLAICLAQD7ONjdni4vX6+v3/////////
///////s7PigoN8oKLoHB7AICLAICLAICLAICLAICLAICLAICLAICLAQELLCwur9/f3/////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAIB7BgYM3/////////////////////////////////
///////////////////////////////Ky+0ODrIICLAICLAICLAICLAICLAICLAICLAICLAICLAKCbGT
k9v8/f3/////////////////////////////////////////////////////////////////////////
//////////9JScUICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAZGbYhIbkhIbkh
IbkhIbkNDbIICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAZGbW2t+f9/v3/////////////////
//8ICLAICLAICLAICLAICLAICLAICLAICLAICLAHB7BNTMb/////////////////////////////////
///////////////////////////////+//6ysuYMDLEICLAICLAICLAICLAICLAICLAICLAICLAHCLAH
B7B1ddL8/f3/////////////////////////////////////////////////////////////////////
///////+//4rK7sICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAICLAICLAICLAICLAHCLAJCbFKSsXd3fT//v//////////////////////
//8ICLAHCLAHCLAHCLAHCLAHCLAHCLAHCLAICLAHCLAwMb3+/v7/////////////////////////////
///////////////////////////////////+/v+OjtsICLAHCLAHCLAHCLAHCLAHCLAHCLAHCLAHCLAG
B7EHB7BWVsn3+P3/////////////////////////////////////////////////////////////////
///////6+/waGrYICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAI
CLAICLAICLAICLAICLAICLAIB7EICLAHB7ASErRfX8zDxez9/v7/////////////////////////////
//8rKrsyMr4xMr4xMr4xMr4xMr4xMr4xMr4wML0JCLAKCrD9/fz+////////////////////////////
///////////////////////////////////////+//9ras8HB6AGB5MGB5MGB5MGB5MGB5MGB5MGB5MG
B5MGB5MGB5NBQbTz8/v/////////////////////////////////////////////////////////////
///////q6/cICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAICLAJCbAJCbAICLAICLAICLAI
CLAICLAICLAJCbAJCbAuLrxQUMd6etS9vunx8fn+/v//////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////Ly8sGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgYTExP/////////////////////////////////////////////////////////////////
///////z9PUSES4GBg4GBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgbe3t7////g4fTU1fHU1fHU
1fHU1fHU1fD19Pr/////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////09PQGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgY2Njb/////////////////////////////////////////////////////////////////
///////+/v4qKioGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYQEBD29vb////+/v7/////////
///////+/v//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////5+fkWFhYGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgZZWVn/////////////////////////////////////////////////////////////////
///////+/v5HR0cGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYcHBz/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////8nJycGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgZtbW3/////////////////////////////////////////////////////////////////
//////////9iYmIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZAQED+/v7/////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////9ISEgGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgaLi4v/////////////////////////////////////////////////////////////////
//////////9xcXEGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZMTEz/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////9RUVEGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgaPj4//////////////////////////////////////////////////////////////////
//////////+Li4sGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZqamr/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////9jY2MGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBga0tLT/////////////////////////////////////////////////////////////////
//////////+bm5sGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZqamr/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////97e3sGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBga1tbX/////////////////////////////////////////////////////////////////
//////////+bm5sGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgaRkZH/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////97e3sGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBga3t7f/////////////////////////////////////////////////////////////////
//////////+6uroGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgaVlZX/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////97e3sGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgaVlZX/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////98fHwGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgaVlZX/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+kpKQGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgajo6P/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////FxcUGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgZCQkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0s7OzsGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBga6urrW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW
1tbW1tbW1talpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+lpaUGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga/v7//////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////+UlJQGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBga0tLT/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////97e3sGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgaVlZX/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////97e3sGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbf39//////////////////////////////////////////////////////////////////
///////////GxsYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgaVlZX/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////97e3sGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgbPz8//////////////////////////////////////////////////////////////////
//////////+vr68GBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgaVlZX/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////97e3sGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBga1tbX/////////////////////////////////////////////////////////////////
//////////+bm5sGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgaVlZX/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////9XV1cGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBga1tbX/////////////////////////////////////////////////////////////////
//////////+bm5sGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZ4eHj/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////9RUVEGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgaoqKj/////////////////////////////////////////////////////////////////
//////////+Hh4cGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZqamr/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////9KSkoGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgaKior/////////////////////////////////////////////////////////////////
//////////9xcXEGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZqamr/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////8nJycGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgaFhYX/////////////////////////////////////////////////////////////////
//////////9ra2sGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZBQUH/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////8/PwdHR0GBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgZhYWH/////////////////////////////////////////////////////////////////
///////+/v5HR0cGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgY0NDT/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////19fUGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgZHR0f/////////////////////////////////////////////////////////////////
///////+/v40NDQGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYWFhb/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////U1NQGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYG
BgYGBgYGBgYrKyv/////////////////////////////////////////////////////////////////
///////8/PwbGxsGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYHBwfm5ub/////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////X19dDQ0NoaGhubm5ubm5ubm5ubm5ubm5ubm5u
bm5sbGxDQ0NISEj/////////////////////////////////////////////////////////////////
///////z8/NHR0dbW1tubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5GRkZDQ0Pd3d3/////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////+/v7/////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</value>
</data>
</root>

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HaInformator
{
public abstract class HaControl
{
public enum HaControlResult
{
OK,
Error
}
public string Description { get; internal set; }
public Logger Logger { get; internal set; }
public abstract HaControlResult Act(string fiepath);
}
}

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C2A1F633-88B0-4078-BB5C-9A6A3E0743C1}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>HaInformator</RootNamespace>
<AssemblyName>HaInformator</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>preview</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>preview</LangVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AttributeTree.cs" />
<Compile Include="AttrValSelection.cs" />
<Compile Include="ContextMenuSelection.cs" />
<Compile Include="SelectionState.cs" />
<Compile Include="ElementSelection.cs" />
<Compile Include="FlatCollection.cs" />
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="HaControl.cs" />
<Compile Include="Informate.cs" />
<Compile Include="Logger.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Tree.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\DataSources\Tree.datasource" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 und x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
namespace HaInformator
{
public class Informate : HaControl
{
private ElementSelection _elementSelection;
private AttrValSelection _attrValSelection;
private ContextMenuSelection _cMenuSelection;
private XDocument _doc;
public Informate(Logger logger,
TreeView tView,
ListBox lView,
ListBox attrLView,
ListBox valLView,
GroupBox gbox,
ContextMenuStrip cMenu)
{
this.Description = "Tool zur Darstellung aller Nodes, ihrer Attribute und Werte";
_cMenuSelection = new ContextMenuSelection(cMenu);
_attrValSelection = new AttrValSelection(attrLView, valLView, gbox, _cMenuSelection);
_elementSelection = new ElementSelection(tView, lView, _attrValSelection, _cMenuSelection);
}
public override HaControlResult Act(string filepath)
{
try
{
_doc = XDocument.Load(filepath, LoadOptions.PreserveWhitespace);
_elementSelection.Load(new Tree(_doc));
return HaControlResult.OK;
}
catch (Exception e)
{
Logger.Log(e.Message);
return HaControlResult.Error;
}
}
}
}

View File

@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HaInformator
{
public sealed class Logger
{
private static StringBuilder _sb;
private static string _filepath = System.IO.Path.GetTempFileName();
private static TextBox _textbox;
public Logger() {
_sb = new StringBuilder();
}
public Logger(TextBox box)
{
_textbox = box;
_sb = new StringBuilder();
}
public static void AddTextBox(TextBox box)
{
_textbox = box;
}
public static void Log(string _msg)
{
_sb.Append(_msg);
_textbox.AppendText(_msg);
}
public static void Save(string filepath)
{
try
{
_filepath = filepath;
File.WriteAllText(_filepath, _sb.ToString());
}
catch (Exception e)
{
File.WriteAllText(System.IO.Path.GetTempFileName(), _sb.ToString() + "\n" + e.Message);
}
}
}
}

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HaInformator
{
static class Program
{
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new HaProgram());
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("HaInformator")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HaInformator")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("1d46195c-a991-4a6d-bf22-dc2315c23293")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="Tree" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>HaInformator.Tree, HaInformator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion: 4.0.30319.42000
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace HaInformator.Properties
{
/// <summary>
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
// Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse
// über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HaInformator.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace HaInformator.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -0,0 +1,153 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HaInformator
{
public class SelectionState
{
public string Name { get; private set; }
private HashSet<Tree> _sTrees;
private Stack<Tree> _mTrees;
public SelectionState() { }
public SelectionState(Tree tree)
{
_sTrees = new HashSet<Tree>() { tree };
this.Name = tree != null ? tree.Name : "";
}
public SelectionState(HashSet<Tree> tree)
{
_sTrees = tree;
this.Name = tree != null && tree.Any() ? tree.First().Name : "";
}
public AttributeTree GetAttributeTree()
{
if (_sTrees == null)
return null;
AttributeTree res = null;
foreach (var t in _sTrees)
{
if (t.Attributes != null)
{
if (res == null)
res = new AttributeTree();
res.AddAttribute(t.Attributes);
}
}
return res;
}
public void Mark()
{
if (_sTrees == null)
return;
foreach (var t in _sTrees)
{
if (_mTrees == null)
_mTrees = new Stack<Tree>();
_mTrees.Push(t);
t.ForeColor = System.Drawing.SystemColors.HighlightText;
t.BackColor = System.Drawing.SystemColors.Highlight;
if (t.Parent != null)
_expandNodeAndParents(t);
}
}
public void Unmark()
{
if (_mTrees == null)
return;
while (_mTrees.Any())
{
var t = _mTrees.Pop();
t.ForeColor = Color.Black;
t.BackColor = Color.Transparent;
}
}
private void _expandNodeAndParents(Tree node)
{
if (_mTrees == null || node == null)
return;
node.Expand();
if (node.Parent == null)
return;
else
_expandNodeAndParents((Tree)node.Parent);
}
public void ChangeName(string name)
{
if (_sTrees == null || String.IsNullOrWhiteSpace(name))
return;
foreach (var t in _sTrees) t.SetName(name);
this.Name = name;
}
public void AddElement(string name, string value = "")
{
if (_sTrees == null || String.IsNullOrWhiteSpace(name))
return;
foreach (var t in _sTrees) t.AddElement(name, value);
}
public void RemoveElement()
{
if (_sTrees == null)
return;
foreach (var t in _sTrees) t.RemoveElement();
}
public void AddAttribute(string name, string value = "")
{
if (_sTrees == null || String.IsNullOrWhiteSpace(name))
return;
foreach (var t in _sTrees) t.AddAttribute(name, value);
}
public void SaveTree(string filepath)
{
if (_sTrees == null || _sTrees.Count == 0 || String.IsNullOrWhiteSpace(filepath))
return;
foreach (var t in _sTrees)
t.SaveFile(filepath);
}
public void EditAttribute(string source, string target)
{
if (_sTrees == null ||
_sTrees.Count == 0 ||
String.IsNullOrWhiteSpace(source) ||
String.IsNullOrWhiteSpace(target))
return;
foreach (var t in _sTrees) t.EditAttribute(source, target);
}
public void RemoveAttribute(string target)
{
if (_sTrees == null ||
_sTrees.Count == 0 ||
String.IsNullOrWhiteSpace(target))
return;
foreach (var t in _sTrees) t.Attributes.RemoveAttribute(target);
}
public void EditValue(string attr, string source, string target)
{
if (_sTrees == null ||
_sTrees.Count == 0 ||
String.IsNullOrWhiteSpace(source))
return;
foreach (var t in _sTrees) t.Attributes.EditValue(attr, source, target);
}
}
}

View File

@@ -0,0 +1,174 @@
using System;
using System.CodeDom;
using System.Collections.Generic;
using System.Drawing.Text;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
namespace HaInformator
{
public class Tree : TreeNode
{
public AttributeTree Attributes;
public List<XElement> Elements = new List<XElement>();
public Tree(XDocument doc) : this(doc.Root)
{
}
public Tree(XElement element)
{
this.BeginEdit();
this.Name = element.Name.ToString();
this.Text = this.Name;
this.Elements.Add(element);
if (element.HasAttributes)
{
if (Attributes == null)
Attributes = new AttributeTree();
foreach (var a in element.Attributes())
Attributes.AddAttribute(a);
}
if (element.HasElements)
foreach (var e in element.Elements())
_addSubTree(new Tree(e));
this.EndEdit(false);
}
internal void _addSubTree(Tree tree)
{
if (this.Nodes.ContainsKey(tree.Name))
_mergeTreeIntoThis(tree);
else
this.Nodes.Add(tree);
}
internal void _mergeTreeIntoThis(Tree tree)
{
var act = (Tree)Nodes[tree.Name];
act.Elements.AddRange(tree.Elements);
if (tree.Attributes != null)
{
if (act.Attributes == null)
act.Attributes = new AttributeTree();
act.Attributes.AddAttribute(tree.Attributes);
}
foreach (var node in tree.Nodes)
act._addSubTree((Tree)node);
}
public void SetName(string name)
{
this.BeginEdit();
foreach (var elem in Elements)
elem.Name = name;
if (Parent == null || !Parent.Nodes.ContainsKey(name))
{
this.Name = name;
this.Text = name;
this.EndEdit(false);
return;
}
else
{
this.Name = name;
this.Text = name;
var p = (Tree)Parent;
this.Remove();
p._addSubTree(this);
this.EndEdit(false);
}
}
public void AddElement(string name, string value)
{
this.BeginEdit();
foreach (var elem in Elements)
{
var e = new XElement(name);
if (!String.IsNullOrWhiteSpace(value))
e.Value = value;
elem.Add(e);
_addSubTree(new Tree(e));
}
this.EndEdit(false);
return;
}
public void RemoveElement()
{
this.BeginEdit();
foreach (var elem in Elements)
elem.Remove();
this.Remove();
this.EndEdit(false);
}
public void AddAttribute(string name, string value)
{
this.BeginEdit();
foreach (var elem in Elements)
{
var a = new XAttribute(name, value);
if (!String.IsNullOrWhiteSpace(value))
a.Value = value;
if (!elem.Attributes().Where(x => x.Name == name).Any())
elem.Add(a);
if (Attributes == null)
Attributes = new AttributeTree();
Attributes.AddAttribute(a);
}
// Why was this here?
//if (Parent == null)
// return;
//var p = (Tree)Parent;
//this.Remove();
//p._addSubTree(this);
this.EndEdit(false);
}
public void EditAttribute(string source, string target)
{
if (source == target)
return;
foreach (var elem in Elements)
if (elem.HasAttributes)
if (elem.Attributes(source).Any())
foreach (var a in elem.Attributes(source))
{
var attr = new XAttribute(target, a.Value);
elem.Add(attr);
a.Remove();
Attributes.AddAttribute(attr);
}
Attributes.RemoveAttribute(source);
}
public void SaveFile(string filepath)
{
foreach (var elem in Elements)
{
var sb = new System.IO.FileStream(filepath, System.IO.FileMode.Create);
var set = new XmlWriterSettings()
{
Indent = true,
IndentChars = " ",
NewLineChars = "\r\n",
NewLineHandling = NewLineHandling.Replace
};
using (var writer = XmlWriter.Create(sb, set))
{
elem.Save(writer);
}
sb.Close();
}
}
}
}