├── .gitattributes
├── .gitignore
├── 00_Docu
├── screenshot.png
└── screenshot_light.png
├── Backup
└── XmlExplorerWpf.zip
├── LICENSE
├── README.md
└── source
├── CleanAll.bat
├── Components
├── Settings
│ ├── Settings
│ │ ├── AppCore.cs
│ │ ├── Interfaces
│ │ │ ├── IAppCore.cs
│ │ │ ├── IOptions.cs
│ │ │ ├── IOptionsPanel.cs
│ │ │ ├── IProfile.cs
│ │ │ ├── ISettingsManager.cs
│ │ │ └── IViewPosSizeModel.cs
│ │ ├── Internal
│ │ │ └── SettingsManagerImpl.cs
│ │ ├── Module
│ │ │ └── Installers.cs
│ │ ├── ProgramSettings
│ │ │ ├── LanguageCollection.cs
│ │ │ └── OptionsPanel.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── SerializableDictionary.cs
│ │ ├── Settings.csproj
│ │ ├── SettingsManager.cs
│ │ ├── UserProfile
│ │ │ ├── IViewSize.cs
│ │ │ ├── LocalizabilityAttribute.cs
│ │ │ ├── Profile.cs
│ │ │ ├── ViewPosSizeModel.cs
│ │ │ └── ViewSize.cs
│ │ └── packages.config
│ └── SettingsModel
│ │ ├── ExtensionMethods
│ │ └── SecureStringExtensionMethod.cs
│ │ ├── Interfaces
│ │ ├── IEngine.cs
│ │ ├── IOptionGroup.cs
│ │ └── IOptionsSchema.cs
│ │ ├── Models
│ │ ├── Engine.cs
│ │ ├── Factory.cs
│ │ ├── FileReference.cs
│ │ ├── OptionGroup.cs
│ │ ├── OptionsSchema.cs
│ │ └── XML
│ │ │ ├── Converters
│ │ │ ├── AlternativeDataTypeHandler.cs
│ │ │ ├── IAlternativeDataTypeHandler.cs
│ │ │ └── SecureStringHandler.cs
│ │ │ └── XMLLayer.cs
│ │ ├── Overview.cd
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── SettingsModel.csproj
│ │ └── packages.config
├── XmlExplorerLib
│ ├── Controls
│ │ ├── TreeViewStyleItems.xaml
│ │ ├── XPathTreeView.xaml
│ │ ├── XPathTreeView.xaml.cs
│ │ ├── XPathTreeViewItem.xaml
│ │ └── XPathTreeViewItem.xaml.cs
│ ├── Converters
│ │ ├── InvertedBooleanToVisibilityConverter.cs
│ │ ├── XPathNavigatorAttributesConverter.cs
│ │ └── XPathNavigatorItemsConverter.cs
│ ├── Interfaces
│ │ └── IXPathNavigator.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── Templates
│ │ └── XPathNodeTypeDataTemplateSelector.cs
│ ├── Themes
│ │ ├── DarkBrushs.xaml
│ │ ├── Generic.xaml
│ │ ├── LightBrushs.xaml
│ │ └── ResourceKeys.cs
│ └── XmlExplorerLib.csproj
└── XmlExplorerVMLib
│ ├── Behaviors
│ └── DialogCloser.cs
│ ├── Interfaces
│ └── IDocumentViewModel.cs
│ ├── Models
│ ├── Error.cs
│ └── Events
│ │ └── EventArgs.cs
│ ├── Modul
│ └── Installer.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── ViewModels
│ ├── Base
│ │ ├── BaseViewModel.cs
│ │ └── RelayCommand.cs
│ ├── DocumentViewModel.cs
│ ├── XML
│ │ ├── NamespaceDefinition.cs
│ │ └── XPathNavigatoreTreeViewModel.cs
│ └── XPathNavigatorViewModel .cs
│ ├── Views
│ └── BindingProxy.cs
│ ├── XmlExplorerVMLib.csproj
│ └── packages.config
├── GenericXmlExplorerDemo
├── 00_DataSamples
│ └── XmlDataSampleDemo.xml
├── App.xaml
├── App.xaml.cs
├── GenericXmlExplorerDemo.csproj
├── Installers.cs
├── Interfaces
│ └── IGenericAppViewModel.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Resources
│ └── App.ico
├── ViewModels
│ ├── Base
│ │ ├── BaseViewModel.cs
│ │ └── RelayCommand.cs
│ └── GenericAppViewModel.cs
├── app.config
└── packages.config
├── XmlExplorerDemo.sln
├── XmlExplorerDemo
├── 00_DataSamples
│ └── XmlDataSampleDemo.xml
├── App.config
├── App.xaml
├── App.xaml.cs
├── Behaviors
│ ├── MergeStyleBehaviour.cs
│ └── TreeViewSelectionChangedBehavior.cs
├── BindToMLib
│ ├── MWindowLib_DarkLightBrushs.xaml
│ ├── UnitComboLib_DarkLightBrushs.xaml
│ └── XmlExplorerLib_DarkLightBrushs.xaml
├── Installers.cs
├── Interfaces
│ ├── IAppLifeCycleViewModel.cs
│ ├── IAppViewModel.cs
│ └── IThemesManagerViewModel.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── Models
│ └── SettingDefaults.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Resources
│ ├── App.ico
│ └── ProjectXML_16x.svg
├── ViewModels
│ ├── AppLifeCycleViewModel.cs
│ ├── AppViewModel.cs
│ ├── Base
│ │ ├── BaseViewModel.cs
│ │ └── RelayCommand.cs
│ ├── MRUViewModel.cs
│ └── Themes
│ │ ├── ThemeDefinitionViewModel.cs
│ │ └── ThemesManagerViewModel.cs
├── XmlExplorerDemo.csproj
└── packages.config
└── packages
├── Castle.Core.4.3.1
├── .signature.p7s
├── ASL - Apache Software Foundation License.txt
├── CHANGELOG.md
├── Castle.Core.4.3.1.nupkg
├── LICENSE
├── lib
│ ├── net35
│ │ ├── Castle.Core.dll
│ │ └── Castle.Core.xml
│ ├── net40
│ │ ├── Castle.Core.dll
│ │ └── Castle.Core.xml
│ ├── net45
│ │ ├── Castle.Core.dll
│ │ └── Castle.Core.xml
│ ├── netstandard1.3
│ │ ├── Castle.Core.dll
│ │ └── Castle.Core.xml
│ └── netstandard1.5
│ │ ├── Castle.Core.dll
│ │ └── Castle.Core.xml
└── readme.txt
├── Castle.Windsor.4.1.1
├── .signature.p7s
├── ASL - Apache Software Foundation License.txt
├── CHANGELOG.md
├── Castle.Windsor.4.1.1.nupkg
├── LICENSE
└── lib
│ ├── net45
│ ├── Castle.Windsor.dll
│ └── Castle.Windsor.xml
│ └── netstandard1.6
│ ├── Castle.Windsor.dll
│ └── Castle.Windsor.xml
├── Dirkster.FileSystemModels.3.1.0
├── Dirkster.FileSystemModels.3.1.0.nupkg
└── lib
│ └── net452
│ ├── FileSystemModels.dll
│ ├── FileSystemModels.pdb
│ ├── FileSystemModels.xml
│ ├── de-DE
│ └── FileSystemModels.resources.dll
│ ├── es-ES
│ └── FileSystemModels.resources.dll
│ ├── fr-FR
│ └── FileSystemModels.resources.dll
│ ├── hi-IN
│ └── FileSystemModels.resources.dll
│ ├── it-IT
│ └── FileSystemModels.resources.dll
│ ├── ja-JP
│ └── FileSystemModels.resources.dll
│ ├── log4net.dll
│ ├── log4net.xml
│ ├── ru-RU
│ └── FileSystemModels.resources.dll
│ └── zh-CHS
│ └── FileSystemModels.resources.dll
├── Dirkster.MLib.1.0.9.1
├── .signature.p7s
├── Behavior_64x.png
├── Dirkster.MLib.1.0.9.1.nupkg
├── lib
│ └── net4
│ │ ├── MLib.dll
│ │ ├── MLib.pdb
│ │ └── MLib.xml
├── license
│ └── license.txt
└── readme.txt
├── Dirkster.MRULib.1.0.2
├── .signature.p7s
├── Dirkster.MRULib.1.0.2.nupkg
├── lib
│ └── net451
│ │ ├── MRULib.dll
│ │ ├── MRULib.pdb
│ │ └── MRULib.xml
└── readme.txt
├── Dirkster.MWindowLib.1.0.4.2
├── Application_64x.png
├── Dirkster.MWindowLib.1.0.4.2.nupkg
└── lib
│ └── net452
│ ├── MWindowInterfacesLib.dll
│ ├── MWindowInterfacesLib.pdb
│ ├── MWindowInterfacesLib.xml
│ ├── MWindowLib.dll
│ ├── MWindowLib.pdb
│ ├── MWindowLib.xml
│ ├── Microsoft.Expression.Interactions.dll
│ ├── Microsoft.Expression.Interactions.xml
│ ├── System.Windows.Interactivity.dll
│ └── System.Windows.Interactivity.xml
├── Dirkster.UnitComboLib.1.0.1
├── Dirkster.UnitComboLib.1.0.1.nupkg
├── lib
│ └── net4
│ │ ├── UnitComboLib.dll
│ │ ├── UnitComboLib.pdb
│ │ ├── de-DE
│ │ └── UnitComboLib.resources.dll
│ │ ├── es-ES
│ │ └── UnitComboLib.resources.dll
│ │ ├── fr-FR
│ │ └── UnitComboLib.resources.dll
│ │ ├── hi-IN
│ │ └── UnitComboLib.resources.dll
│ │ ├── id-ID
│ │ └── UnitComboLib.resources.dll
│ │ ├── it-IT
│ │ └── UnitComboLib.resources.dll
│ │ ├── ja-JP
│ │ └── UnitComboLib.resources.dll
│ │ ├── pt-PT
│ │ └── UnitComboLib.resources.dll
│ │ ├── ru-RU
│ │ └── UnitComboLib.resources.dll
│ │ └── zh-Hans
│ │ └── UnitComboLib.resources.dll
└── readme.txt
└── log4net.2.0.8
├── .signature.p7s
├── lib
├── net20-full
│ ├── log4net.dll
│ └── log4net.xml
├── net35-client
│ ├── log4net.dll
│ └── log4net.xml
├── net35-full
│ ├── log4net.dll
│ └── log4net.xml
├── net40-client
│ ├── log4net.dll
│ └── log4net.xml
├── net40-full
│ ├── log4net.dll
│ └── log4net.xml
├── net45-full
│ ├── log4net.dll
│ └── log4net.xml
└── netstandard1.3
│ └── log4net.dll
└── log4net.2.0.8.nupkg
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Visual Studio 2015 cache/options directory
3 | .vs/
4 |
5 | 00_Release/
6 | 01_Nuget/
7 | debug/
8 | release/
9 | build/
10 | bin/
11 | obj/
12 | cache/
13 | log/
14 | tmp/
15 |
16 | *~
17 | *.lock
18 | *.DS_Store
19 | *.swp
20 | *.out
21 | *.sou
22 | *.suo
23 | *.sqlite
24 |
--------------------------------------------------------------------------------
/00_Docu/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dirkster99/XmlExplorer/0bc806835c19738cee098e1a8803a634ce27c63a/00_Docu/screenshot.png
--------------------------------------------------------------------------------
/00_Docu/screenshot_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dirkster99/XmlExplorer/0bc806835c19738cee098e1a8803a634ce27c63a/00_Docu/screenshot_light.png
--------------------------------------------------------------------------------
/Backup/XmlExplorerWpf.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dirkster99/XmlExplorer/0bc806835c19738cee098e1a8803a634ce27c63a/Backup/XmlExplorerWpf.zip
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Dirkster99
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://ci.appveyor.com/project/Dirkster99/xmlexplorer) [Continues Integration](https://ci.appveyor.com/project/Dirkster99/xmlexplorer/build/artifacts)
2 | # XmlExplorer
3 |
4 | 
5 | 
6 |
7 | The XmlExplorer is a clone from a CodePlex project back in 2009:
8 | https://xmlexplorer.codeplex.com/
9 |
10 | The GitHub project here applies the MVVM pattern and unlocks therefore
11 | advanced theming and configuration features (re-usability patterns).
12 |
13 | The project is currently in Alpha state (do NOT expext a fully developed
14 | application), but the available refactoring is very interesting.
15 |
16 | A tool for editing Xml is XmlNotepad
17 | https://github.com/Microsoft/XmlNotepad
18 |
--------------------------------------------------------------------------------
/source/CleanAll.bat:
--------------------------------------------------------------------------------
1 | @ECHO OFF
2 | pushd "%~dp0"
3 | ECHO.
4 | ECHO.
5 | ECHO This script deletes all temporary build files in their
6 | ECHO corresponding BIN and OBJ Folder contained in the following projects
7 | ECHO.
8 | ECHO XmlExplorerDemo
9 | ECHO GenericXmlExplorerDemo
10 | ECHO
11 | ECHO Components\Settings\Settings
12 | ECHO Components\Settings\SettingsModel
13 | ECHO Components\XmlExplorerLib
14 | ECHO Components\XmlExplorerVMLib
15 | ECHO.
16 | REM Ask the user if hes really sure to continue beyond this point XXXXXXXX
17 | set /p choice=Are you sure to continue (Y/N)?
18 | if not '%choice%'=='Y' Goto EndOfBatch
19 | REM Script does not continue unless user types 'Y' in upper case letter
20 | ECHO.
21 | ECHO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
22 | ECHO.
23 | RMDIR .vs /S /Q
24 | ECHO.
25 | ECHO XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
26 |
27 | ECHO.
28 | ECHO Deleting .vs and BIN, OBJ Folders in XmlExplorerDemo project folder
29 | ECHO.
30 |
31 | RMDIR /S /Q XmlExplorerDemo\bin
32 | RMDIR /S /Q XmlExplorerDemo\obj
33 |
34 | ECHO.
35 | ECHO Deleting .vs and BIN, OBJ Folders in GenericXmlExplorerDemo project folder
36 | ECHO.
37 |
38 | RMDIR /S /Q GenericXmlExplorerDemo\bin
39 | RMDIR /S /Q GenericXmlExplorerDemo\obj
40 |
41 | ECHO.
42 | ECHO Deleting .vs and BIN, OBJ Folders in Components\XmlExplorerLib project folder
43 | ECHO.
44 |
45 | RMDIR /S /Q Components\XmlExplorerLib\bin
46 | RMDIR /S /Q Components\XmlExplorerLib\obj
47 |
48 | ECHO.
49 | ECHO Deleting .vs and BIN, OBJ Folders in Components\XmlExplorerVMLib project folder
50 | ECHO.
51 |
52 | RMDIR /S /Q Components\XmlExplorerVMLib\bin
53 | RMDIR /S /Q Components\XmlExplorerVMLib\obj
54 |
55 | ECHO.
56 | ECHO Deleting .vs and BIN, OBJ Folders in Components\Settings\Settings project folder
57 | ECHO.
58 |
59 | RMDIR /S /Q Components\Settings\Settings\bin
60 | RMDIR /S /Q Components\Settings\Settings\obj
61 |
62 | ECHO.
63 | ECHO Deleting .vs and BIN, OBJ Folders in Components\Settings\SettingsModel project folder
64 | ECHO.
65 |
66 | RMDIR /S /Q Components\Settings\SettingsModel\bin
67 | RMDIR /S /Q Components\Settings\SettingsModel\obj
68 |
69 | ECHO.
70 | ECHO Deleting .vs and BIN, OBJ Folders in project folder
71 | ECHO.
72 |
73 | RMDIR /S /Q Components\XmlExplorerLib\bin
74 | RMDIR /S /Q Components\XmlExplorerLib\obj
75 |
76 | ECHO.
77 | ECHO Deleting .vs and BIN, OBJ Folders in project folder
78 | ECHO.
79 |
80 | RMDIR /S /Q Components\XmlExplorerVMLib\bin
81 | RMDIR /S /Q Components\XmlExplorerVMLib\obj
82 |
83 | PAUSE
84 |
85 | :EndOfBatch
86 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/AppCore.cs:
--------------------------------------------------------------------------------
1 | namespace Settings
2 | {
3 | using System;
4 | using System.Globalization;
5 | using System.Reflection;
6 | using Settings.Interfaces;
7 |
8 | ///
9 | /// Class supplies a set of common static helper methodes that help
10 | /// localizing application specific items such as setting folders etc.
11 | ///
12 | internal class AppCore : IAppCore
13 | {
14 | #region properties
15 | ///
16 | /// Get the name of the executing assembly (usually name of *.exe file)
17 | ///
18 | public string AssemblyTitle
19 | {
20 | get
21 | {
22 | return Assembly.GetEntryAssembly().GetName().Name;
23 | }
24 | }
25 |
26 | //
27 | // Summary:
28 | // Gets the path or UNC location of the loaded file that contains the manifest.
29 | //
30 | // Returns:
31 | // The location of the loaded file that contains the manifest. If the loaded
32 | // file was shadow-copied, the location is that of the file after being shadow-copied.
33 | // If the assembly is loaded from a byte array, such as when using the System.Reflection.Assembly.Load(System.Byte[])
34 | // method overload, the value returned is an empty string ("").
35 | public string AssemblyEntryLocation
36 | {
37 | get
38 | {
39 | return System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
40 | }
41 | }
42 |
43 | ///
44 | /// Get a path to the directory where the user store his documents
45 | ///
46 | public string MyDocumentsUserDir
47 | {
48 | get
49 | {
50 | return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
51 | }
52 | }
53 |
54 | public string Company
55 | {
56 | get
57 | {
58 | return "XmlExplorerDemo";
59 | }
60 | }
61 |
62 | public string Application_Title
63 | {
64 | get
65 | {
66 | return "ThemedDemo";
67 | }
68 | }
69 |
70 | ///
71 | /// Get a path to the directory where the application
72 | /// can persist/load user data on session exit and re-start.
73 | ///
74 | public string DirAppData
75 | {
76 | get
77 | {
78 | return Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
79 | System.IO.Path.DirectorySeparatorChar +
80 | Company;
81 | }
82 | }
83 |
84 | //// ///
85 | //// /// Get path and file name to application specific settings file
86 | //// ///
87 | //// public static string DirFileAppSettingsData
88 | //// {
89 | //// get
90 | //// {
91 | //// return System.IO.Path.Combine(AppCore.DirAppData,
92 | //// string.Format(CultureInfo.InvariantCulture, "{0}.App.settings", AppCore.AssemblyTitle));
93 | //// }
94 | //// }
95 |
96 | ///
97 | /// Get path and file name to application specific session file
98 | ///
99 | public string DirFileAppSessionData
100 | {
101 | get
102 | {
103 | return System.IO.Path.Combine(DirAppData,
104 | string.Format(CultureInfo.InvariantCulture, "{0}.App.session", AssemblyTitle));
105 | }
106 | }
107 | #endregion properties
108 |
109 | #region methods
110 | ///
111 | /// Create a dedicated directory to store program settings and session data
112 | ///
113 | ///
114 | public bool CreateAppDataFolder()
115 | {
116 | try
117 | {
118 | if (System.IO.Directory.Exists(DirAppData) == false)
119 | System.IO.Directory.CreateDirectory(DirAppData);
120 | }
121 | catch
122 | {
123 | return false;
124 | }
125 |
126 | return true;
127 | }
128 | #endregion methods
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/Interfaces/IAppCore.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.Interfaces
2 | {
3 | public interface IAppCore
4 | {
5 | #region properties
6 | ///
7 | /// Get the name of the executing assembly (usually name of *.exe file)
8 | ///
9 | string AssemblyTitle { get; }
10 |
11 | //
12 | // Summary:
13 | // Gets the path or UNC location of the loaded file that contains the manifest.
14 | //
15 | // Returns:
16 | // The location of the loaded file that contains the manifest. If the loaded
17 | // file was shadow-copied, the location is that of the file after being shadow-copied.
18 | // If the assembly is loaded from a byte array, such as when using the System.Reflection.Assembly.Load(System.Byte[])
19 | // method overload, the value returned is an empty string ("").
20 | string AssemblyEntryLocation { get; }
21 |
22 | ///
23 | /// Get a path to the directory where the user store his documents
24 | ///
25 | string MyDocumentsUserDir { get; }
26 |
27 | string Company { get; }
28 |
29 | string Application_Title { get; }
30 |
31 | ///
32 | /// Get a path to the directory where the application
33 | /// can persist/load user data on session exit and re-start.
34 | ///
35 | string DirAppData { get; }
36 |
37 | //// ///
38 | //// /// Get path and file name to application specific settings file
39 | //// ///
40 | //// public static string DirFileAppSettingsData
41 | //// {
42 | //// get
43 | //// {
44 | //// return System.IO.Path.Combine(AppCore.DirAppData,
45 | //// string.Format(CultureInfo.InvariantCulture, "{0}.App.settings", AppCore.AssemblyTitle));
46 | //// }
47 | //// }
48 |
49 | ///
50 | /// Get path and file name to application specific session file
51 | ///
52 | string DirFileAppSessionData { get; }
53 | #endregion properties
54 |
55 | #region methods
56 | ///
57 | /// Create a dedicated directory to store program settings and session data
58 | ///
59 | ///
60 | bool CreateAppDataFolder();
61 | #endregion methods
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/Interfaces/IOptions.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.Interfaces
2 | {
3 | using Settings.ProgramSettings;
4 | using System.Collections.Generic;
5 |
6 | public interface IOptions
7 | {
8 | #region properties
9 | bool IsDirty { get; set; }
10 | string LanguageSelected { get; set; }
11 | bool ReloadOpenFilesOnAppStart { get; set; }
12 | string SourceFilePath { get; set; }
13 |
14 | string DefaultSourceLanguage { get; set; }
15 | string DefaultTargetLanguage { get; set; }
16 |
17 | string DefaultDefaultSourceLanguage { get; }
18 | string DefaultDefaultTargetLanguage { get; }
19 |
20 | int DefaultIconSize { get; }
21 | int IconSizeMin { get; }
22 | int IconSizeMax { get; }
23 |
24 | int DefaultFontSize { get; }
25 | int FontSizeMin { get; }
26 | int FontSizeMax { get; }
27 | #endregion properties
28 |
29 | #region methods
30 | ///
31 | /// Reset the dirty flag (e.g. after saving program options when they where edit).
32 | ///
33 | ///
34 | void SetDirtyFlag(bool flag);
35 |
36 | void SetIconSize(int size);
37 | void SetFontSize(int size);
38 | #endregion methods
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/Interfaces/IOptionsPanel.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.Interfaces
2 | {
3 | using SettingsModel.Interfaces;
4 |
5 | public interface IOptionsPanel
6 | {
7 | IEngine Options { get; }
8 | }
9 | }
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/Interfaces/IProfile.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.Interfaces
2 | {
3 | using Settings.UserProfile;
4 | using SettingsModel.Models;
5 | using System.Collections.Generic;
6 |
7 | public interface IProfile
8 | {
9 | #region properties
10 | string GetLastActivePath();
11 |
12 | List LastActiveSourceFiles { get; set; }
13 |
14 | ///
15 | /// Gets the key name of the MainWindow item in the collection.
16 | /// Ths name can be used as key in the WindowPosSz property
17 | /// to read and write MainWindow position and size information.
18 | ///
19 | string MainWindowName { get; }
20 |
21 | ///
22 | /// Gets a collection of window position and size items.
23 | ///
24 | SerializableDictionary WindowPosSz { get; }
25 |
26 | int FontSizeScreenPoints { get; set; }
27 | #endregion properties
28 |
29 | #region methods
30 | ///
31 | /// Checks the MainWindow for visibility when re-starting application
32 | /// (with different screen configuration).
33 | ///
34 | ///
35 | ///
36 | void CheckSettingsOnLoad(double SystemParameters_VirtualScreenLeft, double SystemParameters_VirtualScreenTop);
37 |
38 | ///
39 | /// Updates or inserts the requested window pos size item in the collection.
40 | ///
41 | ///
42 | ///
43 | ///
44 | void UpdateInsertWindowPosSize(string windowName, ViewPosSizeModel model);
45 | #endregion methods
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/Interfaces/ISettingsManager.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.Interfaces
2 | {
3 | using Settings.ProgramSettings;
4 | using MLib.Interfaces;
5 | using System.Collections.Generic;
6 | using System.Xml.Serialization;
7 |
8 | public interface ISettingsManager : IOptionsPanel
9 | {
10 | void CheckSettingsOnLoad(double SystemParameters_VirtualScreenLeft, double SystemParameters_VirtualScreenTop);
11 |
12 | ////void LoadOptions(string settingsFileName);
13 | void LoadSessionData(string sessionDataFileName);
14 |
15 | ////bool SaveOptions(string settingsFileName, Settings.Interfaces.IOptions optionsModel);
16 | bool SaveSessionData(string sessionDataFileName, Settings.Interfaces.IProfile model);
17 |
18 | ///
19 | /// Get a list of all supported languages in Edi.
20 | ///
21 | ///
22 | IEnumerable GetSupportedLanguages();
23 |
24 | #region properties
25 | Settings.Interfaces.IProfile SessionData { get; }
26 |
27 | int IconSizeMin { get; }
28 | int IconSizeMax { get; }
29 |
30 | int FontSizeMin { get; }
31 | int FontSizeMax { get; }
32 |
33 | ///
34 | /// Gets the default icon size for the application.
35 | ///
36 | int DefaultIconSize { get; }
37 |
38 | ///
39 | /// Gets the default font size for the application.
40 | ///
41 | int DefaultFontSize { get; }
42 |
43 | ///
44 | /// Gets the default fixed font size for the application.
45 | ///
46 | int DefaultFixedFontSize { get; }
47 |
48 | ///
49 | /// Gets the internal name and Uri source for all available themes.
50 | ///
51 | [XmlIgnore]
52 | IThemeInfos Themes { get; }
53 | #endregion properties
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/Interfaces/IViewPosSizeModel.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.Interfaces
2 | {
3 | using System;
4 |
5 | public interface IViewPosSizeModel
6 | {
7 | bool DefaultConstruct { get; }
8 | double Height { get; set; }
9 | bool IsMaximized { get; set; }
10 | double Width { get; set; }
11 | double X { get; set; }
12 | double Y { get; set; }
13 |
14 | void SetValidPos(double SystemParameters_VirtualScreenLeft, double SystemParameters_VirtualScreenTop);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/Module/Installers.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.Module
2 | {
3 | using Castle.MicroKernel.Registration;
4 | using Castle.MicroKernel.SubSystems.Configuration;
5 | using Castle.Windsor;
6 | using Settings.Interfaces;
7 | using Settings.Internal;
8 |
9 | ///
10 | /// This class gets picked up by from Castle.Windsor because
11 | /// it implements the interface.
12 | ///
13 | /// The interface is used by the
14 | /// container to resolve installers when calling
15 | /// .Install(FromAssembly.This());
16 | ///
17 | public class Installers : IWindsorInstaller
18 | {
19 | #region fields
20 | protected static readonly log4net.ILog Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
21 | #endregion fields
22 |
23 | ///
24 | /// Performs the installation in the Castle.Windsor.IWindsorContainer.
25 | ///
26 | ///
27 | ///
28 | public void Install(IWindsorContainer container,
29 | IConfigurationStore store)
30 | {
31 | container
32 | .Register(Component.For()
33 | .ImplementedBy().LifestyleSingleton());
34 |
35 | // Register settings service component to help castle satisfy dependencies on it
36 | container
37 | .Register(Component.For()
38 | .ImplementedBy().LifestyleSingleton());
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/ProgramSettings/LanguageCollection.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.ProgramSettings
2 | {
3 | using System;
4 |
5 | ///
6 | /// Base class for enumeration over languages (and their locale) that
7 | /// are supported with specific (non-English) button and tool tip strings.
8 | ///
9 | /// The class definition is based on BCP 47 which in turn is used to
10 | /// set the UI and thread culture (which in turn selects the correct
11 | /// string resource in MsgBox assembly).
12 | ///
13 | public class LanguageCollection
14 | {
15 | public string Language { get; set; }
16 | public string Locale { get; set; }
17 | public string Name { get; set; }
18 |
19 | ///
20 | /// Get BCP47 language tag for this language
21 | /// See also http://en.wikipedia.org/wiki/IETF_language_tag
22 | ///
23 | public string BCP47
24 | {
25 | get
26 | {
27 | if (string.IsNullOrEmpty(Locale) == false)
28 | return String.Format("{0}-{1}", Language, Locale);
29 | else
30 | return String.Format("{0}", Language);
31 | }
32 | }
33 |
34 | ///
35 | /// Get BCP47 language tag for this language
36 | /// See also http://en.wikipedia.org/wiki/IETF_language_tag
37 | ///
38 | public string DisplayName
39 | {
40 | get
41 | {
42 | return String.Format("{0} {1}", Name, BCP47);
43 | }
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/ProgramSettings/OptionsPanel.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.ProgramSettings
2 | {
3 | using Settings.Interfaces;
4 | using SettingsModel.Interfaces;
5 | using SettingsModel.Models;
6 |
7 | internal class OptionsPanel : IOptionsPanel
8 | {
9 | private IEngine mQuery = null;
10 |
11 | public OptionsPanel()
12 | {
13 | mQuery = Factory.CreateEngine();
14 | }
15 |
16 | ///
17 | /// Gets the options that used to manage program options.
18 | ///
19 | public IEngine Options
20 | {
21 | get
22 | {
23 | return mQuery;
24 | }
25 |
26 | private set
27 | {
28 | mQuery = value;
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Settings")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("HP")]
12 | [assembly: AssemblyProduct("Settings")]
13 | [assembly: AssemblyCopyright("The MIT License (MIT) Copyright © 2013 - 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("7f13f2b5-a017-4045-8ead-f5496101a616")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/SerializableDictionary.cs:
--------------------------------------------------------------------------------
1 | namespace Settings
2 | {
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Globalization;
6 | using System.Runtime.Serialization;
7 | using System.Xml;
8 | using System.Xml.Serialization;
9 |
10 | ///
11 | /// This class represents a serializable dictionary implementation
12 | /// of the standard generic dictionary class in .Net.
13 | ///
14 | /// Source: http://www.jankowskimichal.pl/en/2010/10/serializabledictionary/
15 | ///
16 | [Serializable]
17 | public class SerializableDictionary : Dictionary, IXmlSerializable, ISerializable
18 | {
19 | #region Private Members
20 | private XmlSerializer _keySerializer;
21 | private XmlSerializer _valueSerializer;
22 | #endregion
23 |
24 | #region Constructors
25 | public SerializableDictionary()
26 | {
27 | }
28 |
29 | public SerializableDictionary(IDictionary dictionary)
30 | : base(dictionary)
31 | {
32 | }
33 |
34 | public SerializableDictionary(IEqualityComparer comparer)
35 | : base(comparer)
36 | {
37 | }
38 |
39 | public SerializableDictionary(int capacity)
40 | : base(capacity)
41 | {
42 | }
43 |
44 | public SerializableDictionary(IDictionary dictionary, IEqualityComparer comparer)
45 | : base(dictionary, comparer)
46 | {
47 | }
48 |
49 | public SerializableDictionary(int capacity, IEqualityComparer comparer)
50 | : base(capacity, comparer)
51 | {
52 | }
53 |
54 | #endregion
55 |
56 | #region Private Properties
57 | protected XmlSerializer ValueSerializer
58 | {
59 | get { return _valueSerializer ?? (_valueSerializer = new XmlSerializer(typeof(TVal))); }
60 | }
61 |
62 | private XmlSerializer KeySerializer
63 | {
64 | get { return _keySerializer ?? (_keySerializer = new XmlSerializer(typeof(TKey))); }
65 | }
66 | #endregion
67 |
68 | #region ISerializable Members
69 | protected SerializableDictionary(SerializationInfo info, StreamingContext context)
70 | {
71 | int itemCount = info.GetInt32("itemsCount");
72 | for (int i = 0; i < itemCount; i++)
73 | {
74 | KeyValuePair kvp = (KeyValuePair)info.GetValue(String.Format(CultureInfo.InvariantCulture, "Item{0}", i), typeof(KeyValuePair));
75 | Add(kvp.Key, kvp.Value);
76 | }
77 | }
78 |
79 | void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
80 | {
81 | info.AddValue("itemsCount", Count);
82 | int itemIdx = 0;
83 | foreach (KeyValuePair kvp in this)
84 | {
85 | info.AddValue(String.Format(CultureInfo.InvariantCulture, "Item{0}", itemIdx), kvp, typeof(KeyValuePair));
86 | itemIdx++;
87 | }
88 | }
89 | #endregion
90 |
91 | #region IXmlSerializable Members
92 | void IXmlSerializable.WriteXml(XmlWriter writer)
93 | {
94 | foreach (KeyValuePair kvp in this)
95 | {
96 | writer.WriteStartElement("item");
97 | writer.WriteStartElement("key");
98 | KeySerializer.Serialize(writer, kvp.Key);
99 | writer.WriteEndElement();
100 | writer.WriteStartElement("value");
101 | ValueSerializer.Serialize(writer, kvp.Value);
102 | writer.WriteEndElement();
103 | writer.WriteEndElement();
104 | }
105 | }
106 |
107 | void IXmlSerializable.ReadXml(XmlReader reader)
108 | {
109 | if (reader.IsEmptyElement)
110 | {
111 | return;
112 | }
113 | // Move past container
114 | if (reader.NodeType == XmlNodeType.Element && !reader.Read())
115 | {
116 | throw new XmlException("Error in Deserialization of SerializableDictionary");
117 | }
118 | while (reader.NodeType != XmlNodeType.EndElement)
119 | {
120 | reader.ReadStartElement("item");
121 | reader.ReadStartElement("key");
122 | TKey key = (TKey)KeySerializer.Deserialize(reader);
123 | reader.ReadEndElement();
124 | reader.ReadStartElement("value");
125 | TVal value = (TVal)ValueSerializer.Deserialize(reader);
126 | reader.ReadEndElement();
127 | reader.ReadEndElement();
128 | Add(key, value);
129 | reader.MoveToContent();
130 | }
131 | // Move past container
132 | if (reader.NodeType == XmlNodeType.EndElement)
133 | {
134 | reader.ReadEndElement();
135 | }
136 | else
137 | {
138 | throw new XmlException("Error in Deserialization of SerializableDictionary");
139 | }
140 | }
141 |
142 | System.Xml.Schema.XmlSchema IXmlSerializable.GetSchema()
143 | {
144 | return null;
145 | }
146 | #endregion
147 | }
148 | }
149 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/SettingsManager.cs:
--------------------------------------------------------------------------------
1 | namespace Settings
2 | {
3 | using MLib.Interfaces;
4 | using Settings.Interfaces;
5 | using Settings.Internal;
6 |
7 | ///
8 | /// Helper class to initialize an
9 | /// service interface.
10 | ///
11 | public sealed class SettingsManager
12 | {
13 | ///
14 | /// Hidden default constructor.
15 | ///
16 | private SettingsManager()
17 | {
18 | }
19 |
20 | ///
21 | /// Gets an instance of an object that implements the
22 | /// interface.
23 | ///
24 | ///
25 | public static ISettingsManager GetInstance(IAppearanceManager appearanceManager)
26 | {
27 | return new SettingsManagerImpl(appearanceManager);
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/UserProfile/IViewSize.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.UserProfile
2 | {
3 | using System.Windows;
4 |
5 | ///
6 | /// Provide an interface to implement saving and loading/repositioning of Window or view.
7 | ///
8 | public interface IViewSize
9 | {
10 | //
11 | // Zusammenfassung:
12 | // Ruft die Position des linken Fensterrands im Verhältnis zum Desktop ab oder legt
13 | // diese fest.
14 | //
15 | // Rückgabewerte:
16 | // Die Position des linken Fensterrands in logischen Einheiten (1/96 Zoll).
17 | double Left { get; set; }
18 |
19 | //
20 | // Zusammenfassung:
21 | // Ruft die Position des oberen Fensterrands im Verhältnis zum Desktop ab oder legt
22 | // diese fest.
23 | //
24 | // Rückgabewerte:
25 | // Die Position des oberen Fensterrands in logischen Einheiten (1/96 ").
26 | double Top { get; set; }
27 |
28 | //
29 | // Zusammenfassung:
30 | // Ruft die Breite des Elements ab bzw. legt diese fest.
31 | //
32 | // Rückgabewerte:
33 | // Die Breite des Elements in geräteunabhängige Einheiten (1/96th inch per unit).Der
34 | // Standardwert ist System.Double.NaN.Dieser Wert muss größer oder gleich 0,0 sein.In
35 | // den Hinweisen finden Sie Informationen über obere Grenzen.
36 | double Width { get; set; }
37 |
38 | //
39 | // Zusammenfassung:
40 | // Ruft die vorgeschlagene Höhe des Elements ab oder legt diese fest.
41 | //
42 | // Rückgabewerte:
43 | // Die Höhe des Elements in geräteunabhängige Einheiten (1/96th inch per unit).Der
44 | // Standardwert ist System.Double.NaN.Dieser Wert muss größer oder gleich 0,0 sein.In
45 | // den Hinweisen finden Sie Informationen über obere Grenzen.
46 | double Height { get; set; }
47 |
48 | //
49 | // Zusammenfassung:
50 | // Ruft einen Wert ab, der angibt, ob ein Fenster wiederhergestellt, minimiert oder
51 | // maximiert ist, oder legt diesen fest.
52 | //
53 | // Rückgabewerte:
54 | // Ein System.Windows.WindowState, der bestimmt, ob ein Fenster wiederhergestellt,
55 | // minimiert oder maximiert ist.Der Standardwert ist System.Windows.WindowState.Normal
56 | // (wiederhergestellt).
57 | WindowState WindowState { get; set; }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/UserProfile/LocalizabilityAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Settings.UserProfile
4 | {
5 | internal class LocalizabilityAttribute : Attribute
6 | {
7 | }
8 | }
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/UserProfile/ViewSize.cs:
--------------------------------------------------------------------------------
1 | namespace Settings.UserProfile
2 | {
3 | // 50, 50, 800, 550
4 | public class ViewSize
5 | {
6 | public ViewSize(double x, double y, double width, double height)
7 | {
8 | X = x;
9 | Y = y;
10 | Width = width;
11 | Height = height;
12 | }
13 |
14 | public double X { get; private set; }
15 | public double Y { get; private set; }
16 | public double Width { get; private set; }
17 | public double Height { get; private set; }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/source/Components/Settings/Settings/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/source/Components/Settings/SettingsModel/ExtensionMethods/SecureStringExtensionMethod.cs:
--------------------------------------------------------------------------------
1 | namespace SettingsModel.ExtensionMethods
2 | {
3 | using System;
4 | using System.Runtime.InteropServices;
5 | using System.Security;
6 |
7 | ///
8 | /// Source: http://blogs.msdn.com/b/fpintos/archive/2009/06/12/how-to-properly-convert-securestring-to-string.aspx
9 | ///
10 | internal static class SecureStringExtensionMethod
11 | {
12 | public static string ConvertToUnsecureString(this SecureString securePassword)
13 | {
14 | if (securePassword == null)
15 | throw new ArgumentNullException("securePassword");
16 |
17 | IntPtr unmanagedString = IntPtr.Zero;
18 | try
19 | {
20 | unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(securePassword);
21 | return Marshal.PtrToStringUni(unmanagedString);
22 | }
23 | finally
24 | {
25 | Marshal.ZeroFreeGlobalAllocUnicode(unmanagedString);
26 | }
27 | }
28 |
29 | public static SecureString ConvertToSecureString(this string password)
30 | {
31 | if (password == null)
32 | throw new ArgumentNullException("password");
33 |
34 | var securePassword = new SecureString();
35 | foreach (char c in password)
36 | securePassword.AppendChar(c);
37 |
38 | securePassword.MakeReadOnly();
39 | return securePassword;
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/source/Components/Settings/SettingsModel/Interfaces/IOptionGroup.cs:
--------------------------------------------------------------------------------
1 | namespace SettingsModel.Interfaces
2 | {
3 | using System;
4 | using System.Collections.Generic;
5 |
6 | ///
7 | /// An option group is a logical group of options
8 | /// (setting values or preferences) of an application.
9 | ///
10 | public interface IOptionGroup
11 | {
12 | ///
13 | /// Gets the name of this options group. This name is used to
14 | /// cluster related options around a technically relevant name.
15 | ///
16 | string Name { get; }
17 |
18 | ///
19 | /// Retrieves the schema of each option in this optiongroup.
20 | ///
21 | ///
22 | IEnumerable GetOptionDefinitions();
23 |
24 | ///
25 | /// Retrieves the schema of an option in this optiongroup.
26 | ///
27 | ///
28 | IOptionsSchema GetOptionDefinition(string optionName);
29 |
30 | ///
31 | /// Gets the value of an option in a given or null
32 | /// if either option or does not exist.
33 | ///
34 | /// Method returns false if option or are not known.
35 | ///
36 | ///
37 | /// Indicates whether option and exist or not.
38 | ///
39 | bool GetValue(string optionName, out object optValue);
40 |
41 | ///
42 | /// Gets the value of an option in a given or
43 | /// throws an exception if either option or
44 | /// does not exist.
45 | ///
46 | /// Method the requested option value if option and are known.
47 | ///
48 | ///
49 | ///
50 | object GetValue(string optionName);
51 |
52 | ///
53 | /// Gets the requested option and returns it as typed <T> value.
54 | /// The method throws an exception if:
55 | /// - requested option value is not stored as typed <T> or
56 | /// - the and option name does not exist.
57 | ///
58 | ///
59 | /// current value of this option.
60 | T GetValue(string optionName);
61 |
62 | ///
63 | /// Sets the value of a given option in this option table.
64 | ///
65 | ///
66 | ///
67 | ///
68 | bool SetValue(string optionName, object newValue);
69 |
70 | ///
71 | /// Add a list item in a list schema
72 | ///
73 | ///
74 | ///
75 | ///
76 | ///
77 | /// Returns true if item was succesfully added or false
78 | /// if schema is not a list schema.
79 | ///
80 | bool List_AddValue(string optionName, string keyName, object value);
81 |
82 | ///
83 | /// Clear all items contained in a list.
84 | ///
85 | ///
86 | ///
87 | bool List_Clear(string optionName);
88 |
89 | ///
90 | /// Create a new option that can hold a list of items.
91 | ///
92 | ///
93 | ///
94 | ///
95 | ///
96 | ///
97 | ///
98 | IOptionsSchema List_CreateOption(string optionName, Type type, bool isOptional, List list);
99 |
100 | ///
101 | /// Gets a list of current values if this schema descripes a List.
102 | /// Return a single value schema as a list of 1 item.
103 | ///
104 | ///
105 | ///
106 | IEnumerable