Merge branch 'release-2.2.5'
This commit is contained in:
commit
3267bd9d5a
@ -44,6 +44,7 @@ namespace Tests.Controller.Elements
|
||||
public void TearDown()
|
||||
{
|
||||
((_Document)_document).Close(WdSaveOptions.wdDoNotSaveChanges);
|
||||
Bovender.ComHelpers.ReleaseComObject(_document);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -32,14 +32,14 @@ namespace Tests.Controller
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_savedSettings = zaaReloaded2.Properties.Settings.Default.SettingsRepository;
|
||||
_savedSettings = zaaReloaded2.UserSettings.Default.SettingsRepository;
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
zaaReloaded2.Properties.Settings.Default.SettingsRepository = _savedSettings;
|
||||
zaaReloaded2.Properties.Settings.Default.Save();
|
||||
zaaReloaded2.UserSettings.Default.SettingsRepository = _savedSettings;
|
||||
zaaReloaded2.UserSettings.Default.Save();
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -153,7 +153,7 @@ namespace Tests.Importer.ZaaImporter
|
||||
|
||||
[TestCase("Albumin (SU)/die: 149.9 [<= 30] mg/d; ", Material.SU)]
|
||||
[TestCase("Gesamt-Eiweiss/Creatinin (PU): 281 [<= 70] mg/g Crea;", Material.U)]
|
||||
[TestCase("Cystatin C (N Latex): 2.37 [0.57 - 0.96] mg/l; ", Material.B)]
|
||||
[TestCase("Cystatin C (N Latex): 2.37 [0.57 - 0.96] mg/l; ", Material.S)]
|
||||
public void ParseLaurisMaterial(string laurisString, Material expectedMaterial)
|
||||
{
|
||||
LaurisItem i = new LaurisItem(laurisString);
|
||||
|
@ -41,16 +41,20 @@
|
||||
<AssemblyOriginatorKeyFile>zaaReloaded2.pfx</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Bovender, Version=0.5.0.0, Culture=neutral, PublicKeyToken=df1c15557d8b6df8, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Bovender.0.5.0.0\lib\net40\Bovender.dll</HintPath>
|
||||
<Reference Include="Bovender, Version=0.14.5.0, Culture=neutral, PublicKeyToken=df1c15557d8b6df8, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Bovender.0.14.5.0\lib\net40\Bovender.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Office.Interop.Word, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
|
||||
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.4.3.7\lib\net40\NLog.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="nunit.framework, Version=3.4.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NUnit.3.4.1\lib\net40\nunit.framework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
@ -66,6 +70,10 @@
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.XML" />
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="YamlDotNet, Version=3.9.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\YamlDotNet.Signed.3.9.0\lib\net35\YamlDotNet.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<Choose>
|
||||
<When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
|
||||
@ -107,6 +115,7 @@
|
||||
<Compile Include="ViewModels\SettingsViewModelTest.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Tests.licenseheader" />
|
||||
<None Include="zaaReloaded2.pfx" />
|
||||
|
29
Tests/app.config
Executable file
29
Tests/app.config
Executable file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
app.config
|
||||
part of zaaReloaded2
|
||||
|
||||
Copyright 2016 Daniel Kraus
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="YamlDotNet" publicKeyToken="ec19458f3c15af5e" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.9.0.0" newVersion="3.9.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
@ -1,6 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Bovender" version="0.5.0.0" targetFramework="net40" />
|
||||
<package id="Bovender" version="0.14.5.0" targetFramework="net40" />
|
||||
<package id="Expression.Blend.Sdk" version="1.0.2" targetFramework="net40" />
|
||||
<package id="NUnit" version="2.6.4" targetFramework="net40" />
|
||||
<package id="NLog" version="4.3.7" targetFramework="net40" />
|
||||
<package id="NUnit" version="3.4.1" targetFramework="net40" />
|
||||
<package id="YamlDotNet.Signed" version="3.9.0" targetFramework="net40" />
|
||||
</packages>
|
@ -1 +1 @@
|
||||
Subproject commit 26f2dda3892341a7eaf93df75b765edcf910ca71
|
||||
Subproject commit fba57212590cafd9cc650b0602dccb8b0dc39e5b
|
2
deploy/make-installer.iss
Normal file → Executable file
2
deploy/make-installer.iss
Normal file → Executable file
@ -8,7 +8,7 @@
|
||||
#define ADDIN_NAME "zaaReloaded"
|
||||
#define COMPANY "Daniel Kraus (bovender)"
|
||||
#define DESCRIPTION "Word-Addin, das Lauris-Laborwerte in der Zentralen Arztbriefablage formatiert."
|
||||
#define HOMEPAGE "http://zaa.nephrowiki.de"
|
||||
#define HOMEPAGE "https://doktorkraus.de/zaareloaded"
|
||||
#define REGKEY "zaaReloaded2"
|
||||
|
||||
#define SOURCEDIR "..\zaaReloaded2\bin\Release\"
|
||||
|
@ -1,4 +1,4 @@
|
||||
2.2.3
|
||||
http://zaa.nephrowiki.de/downloads/zaaReloaded-$VERSION.exe
|
||||
077df8d43cf97ef4082cda988393734a825b51cf0e023527cdc5752502c83f03 deploy/releases/zaaReloaded-2.2.3.exe
|
||||
2.2.5
|
||||
https://doktorkraus.de/zaareloaded/downloads/zaaReloaded-$VERSION.exe
|
||||
f5f348b5ffdc532240b63af8fbfd1983219adeee338b9decb3ac3df5f23965ca deploy/releases/zaaReloaded-2.2.5.exe
|
||||
|
||||
|
@ -42,7 +42,7 @@ namespace zaaReloaded2
|
||||
if (CanFormat())
|
||||
{
|
||||
SettingsRepository repository = SettingsRepository.Load();
|
||||
Guid lastSettingsUid = Properties.Settings.Default.LastSettings;
|
||||
Guid lastSettingsUid = UserSettings.Default.LastSettings;
|
||||
Settings lastSettings = repository.FindByGuid(lastSettingsUid);
|
||||
if (lastSettings != null)
|
||||
{
|
||||
@ -72,8 +72,7 @@ namespace zaaReloaded2
|
||||
SettingsViewModel settingsVM = args.Content.ViewModel as SettingsViewModel;
|
||||
Settings settings = settingsVM.RevealModelObject() as Settings;
|
||||
DoFormat(settings);
|
||||
Properties.Settings.Default.LastSettings = settings.Uid;
|
||||
Properties.Settings.Default.Save();
|
||||
UserSettings.Default.LastSettings = settings.Uid;
|
||||
};
|
||||
vm.InjectInto<SettingsRepositoryView>().ShowDialog();
|
||||
}
|
||||
@ -108,7 +107,7 @@ namespace zaaReloaded2
|
||||
+ "wenn Word in der Zentralen Arztbriefablage ausgeführt wird.\r"
|
||||
+ "Bitte Word als eigenständige Anwendung starten und dann "
|
||||
+ "noch einmal versuchen.";
|
||||
a.OkButtonLabel = "Schließen";
|
||||
a.OkButtonText = "Schließen";
|
||||
a.Invoke();
|
||||
}
|
||||
else
|
||||
@ -127,8 +126,8 @@ namespace zaaReloaded2
|
||||
|
||||
public static void ShowPreferences()
|
||||
{
|
||||
ViewModels.PreferencesViewModel.Default.InjectInto<Views.PreferencesView>()
|
||||
.ShowDialog();
|
||||
ViewModels.PreferencesViewModel vm = new PreferencesViewModel();
|
||||
vm.InjectInto<Views.PreferencesView>().ShowDialog();
|
||||
}
|
||||
|
||||
public static void ApplyDanielsStyle()
|
||||
@ -149,34 +148,45 @@ namespace zaaReloaded2
|
||||
// (NB Technically, there is never _no_ selection in a document.)
|
||||
Word.Window activeWindow = Globals.ThisAddIn.Application.ActiveWindow;
|
||||
Word.Selection sel = activeWindow.Selection;
|
||||
if (!(sel.Paragraphs.Count > 1
|
||||
Word.Paragraphs paragraphs = sel.Paragraphs;
|
||||
Word.Document document = activeWindow.Document;
|
||||
if (!(paragraphs.Count > 1
|
||||
|| (sel.Text.Length > 1 && sel.Text.EndsWith("\r"))))
|
||||
{
|
||||
if (!Medication.Importer.AutoDetect(activeWindow.Document))
|
||||
Logger.Info("FormatDrugs: Attempting to auto-detect");
|
||||
if (!Medication.Importer.AutoDetect(document))
|
||||
{
|
||||
Logger.Info("FormatDrugs: Failed to auto-detect");
|
||||
NotificationAction a = new NotificationAction();
|
||||
a.Caption = "Formatieren nicht möglich";
|
||||
a.Message = "Das Dokument scheint keine Medikationsliste zu enthalten.";
|
||||
a.OkButtonLabel = "Schließen";
|
||||
a.OkButtonText = "Schließen";
|
||||
a.Invoke();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Medication.Importer importer = new Medication.Importer(activeWindow.Selection.Text);
|
||||
Logger.Info("FormatDrugs: Importing");
|
||||
Medication.Importer importer = new Medication.Importer(sel.Text);
|
||||
Medication.Formatter formatter = new Medication.Formatter(importer.Prescriptions);
|
||||
|
||||
Logger.Info("FormatDrugs: Formatting");
|
||||
switch (columns)
|
||||
{
|
||||
case 1:
|
||||
formatter.FormatOneColumn(activeWindow.Document);
|
||||
formatter.FormatOneColumn(document);
|
||||
break;
|
||||
case 2:
|
||||
formatter.FormatTwoColumns(activeWindow.Document);
|
||||
formatter.FormatTwoColumns(document);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
Logger.Info("FormatDrugs: Cleaning up");
|
||||
Bovender.ComHelpers.ReleaseComObject(document);
|
||||
Bovender.ComHelpers.ReleaseComObject(paragraphs);
|
||||
Bovender.ComHelpers.ReleaseComObject(sel);
|
||||
Bovender.ComHelpers.ReleaseComObject(activeWindow);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -187,57 +197,84 @@ namespace zaaReloaded2
|
||||
{
|
||||
// If no "real" selection exists, attempt to auto-detect the lab data.
|
||||
// (NB Technically, there is never _no_ selection in a document.)
|
||||
Word.Window activeWindow = Globals.ThisAddIn.Application.ActiveWindow;
|
||||
Word.Selection sel = activeWindow.Selection;
|
||||
if (!(sel.Paragraphs.Count > 1
|
||||
|| (sel.Text.Length > 1 && sel.Text.EndsWith("\r"))))
|
||||
Word.Application word = Globals.ThisAddIn.Application;
|
||||
Word.Document activeDocument = word.ActiveDocument;
|
||||
Word.Window activeWindow = word.ActiveWindow;
|
||||
Word.Selection selection = activeWindow.Selection;
|
||||
Word.Paragraphs paragraphs = selection.Paragraphs;
|
||||
if (!(paragraphs.Count > 1
|
||||
|| (selection.Text.Length > 1 && selection.Text.EndsWith("\r"))))
|
||||
{
|
||||
if (!AutoDetect.Detect(activeWindow.Document))
|
||||
Logger.Info("DoFormat: Attempting to auto-detect");
|
||||
Word.Document doc = activeWindow.Document;
|
||||
if (!AutoDetect.Detect(doc))
|
||||
{
|
||||
Logger.Info("DoFormat: Automatic detection failed");
|
||||
NotificationAction a = new NotificationAction();
|
||||
a.Caption = "Formatieren nicht möglich";
|
||||
a.Message = "Das Dokument scheint keine Lauris-Labordaten zu enthalten.";
|
||||
a.OkButtonLabel = "Schließen";
|
||||
a.OkButtonText = "Schließen";
|
||||
a.Invoke();
|
||||
return;
|
||||
}
|
||||
// Don't release the COM object here
|
||||
// Bovender.ComHelpers.ReleaseComObject(doc);
|
||||
}
|
||||
|
||||
Logger.Info("DoFormat: Importing");
|
||||
ZaaImporter importer = new ZaaImporter();
|
||||
importer.Import(Globals.ThisAddIn.Application.ActiveWindow.Selection.Text);
|
||||
Formatter.Formatter formatter = new Formatter.Formatter(
|
||||
Globals.ThisAddIn.Application.ActiveDocument);
|
||||
importer.Import(selection.Text);
|
||||
Formatter.Formatter formatter = new Formatter.Formatter(activeDocument);
|
||||
|
||||
formatter.Settings = settings;
|
||||
formatter.Laboratory = importer.Laboratory;
|
||||
CommentPool.Default.Reset();
|
||||
CommentPool.Default.FillInComment += CommentPool_FillInComment;
|
||||
try
|
||||
{
|
||||
Logger.Info("DoFormat: Formatting");
|
||||
formatter.Run();
|
||||
}
|
||||
catch (NoLaboratoryDataException)
|
||||
catch (NoLaboratoryDataException e)
|
||||
{
|
||||
Logger.Warn("DoFormat: No lab data?!");
|
||||
Logger.Warn(e);
|
||||
NotificationAction a = new NotificationAction();
|
||||
a.Caption = "Formatieren nicht möglich";
|
||||
a.Message = "Die aktuelle Markierung scheint keine Labordaten zu enthalten.";
|
||||
a.OkButtonLabel = "Schließen";
|
||||
a.OkButtonText = "Schließen";
|
||||
a.Invoke();
|
||||
}
|
||||
Bovender.ComHelpers.ReleaseComObject(paragraphs);
|
||||
Bovender.ComHelpers.ReleaseComObject(selection);
|
||||
Bovender.ComHelpers.ReleaseComObject(activeWindow);
|
||||
Bovender.ComHelpers.ReleaseComObject(activeDocument);
|
||||
Logger.Info("DoFormat: Finished");
|
||||
}
|
||||
|
||||
private static void CommentPool_FillInComment(object sender, ItemCommentEventArgs e)
|
||||
{
|
||||
if (Preferences.Default.SuppressItemCommentInteraction)
|
||||
if (UserSettings.Default.SuppressItemCommentInteraction)
|
||||
{
|
||||
Logger.Info("CommentPool_FillInComment: Comment interaction is suppressed by user settings");
|
||||
e.Comment.IsCancelled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Info("CommentPool_FillInComment: Requesting user interaction");
|
||||
ItemCommentViewModel vm = new ItemCommentViewModel(e.Comment);
|
||||
vm.InjectInto<ItemCommentView>().ShowDialog();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ namespace zaaReloaded2.Controller
|
||||
/// </remarks>
|
||||
public static SettingsRepository Load()
|
||||
{
|
||||
string s = Properties.Settings.Default.SettingsRepository;
|
||||
string s = UserSettings.Default.SettingsRepository;
|
||||
if (String.IsNullOrEmpty(s))
|
||||
{
|
||||
return new SettingsRepository();
|
||||
@ -67,7 +67,7 @@ namespace zaaReloaded2.Controller
|
||||
else
|
||||
{
|
||||
MemoryStream stream = new MemoryStream();
|
||||
string encoded = Properties.Settings.Default.SettingsRepository;
|
||||
string encoded = UserSettings.Default.SettingsRepository;
|
||||
byte[] bytes = Convert.FromBase64String(encoded);
|
||||
stream.Write(bytes, 0, bytes.Length);
|
||||
stream.Position = 0;
|
||||
@ -94,8 +94,7 @@ namespace zaaReloaded2.Controller
|
||||
serializer.Serialize(stream, this);
|
||||
stream.Position = 0;
|
||||
string encoded = Convert.ToBase64String(stream.ToArray());
|
||||
Properties.Settings.Default.SettingsRepository = encoded;
|
||||
Properties.Settings.Default.Save();
|
||||
UserSettings.Default.SettingsRepository = encoded;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -48,7 +48,7 @@ namespace zaaReloaded2.ExceptionHandler
|
||||
{
|
||||
get
|
||||
{
|
||||
return zaaReloaded2.Updater.Version.CurrentVersion().ToString();
|
||||
return zaaReloaded2.Updater.Version.Current.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,6 +86,11 @@ namespace zaaReloaded2.ExceptionHandler
|
||||
return @"x:\Code\zaaReloaded2\zaaReloaded2\";
|
||||
}
|
||||
|
||||
protected override Bovender.UserSettings.UserSettingsBase UserSettings
|
||||
{
|
||||
get { return zaaReloaded2.UserSettings.Default; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -272,15 +272,18 @@ namespace zaaReloaded2.Formatter
|
||||
{
|
||||
if (Document != null)
|
||||
{
|
||||
Logger.Info("CreateStyles");
|
||||
Style style;
|
||||
// Don't see a better way to check for the existence of a particular
|
||||
// paragraph style than by using a try...catch construction.
|
||||
try
|
||||
{
|
||||
style = Document.Styles[Properties.Settings.Default.StyleParagraph];
|
||||
Logger.Info("CreateStyles: Found paragraph style in document");
|
||||
}
|
||||
catch
|
||||
{
|
||||
Logger.Info("CreateStyles: Need to create paragraph style");
|
||||
// Add default paragraph style for laboratory
|
||||
style = Document.Styles.Add(Properties.Settings.Default.StyleParagraph);
|
||||
style.Font.Size = 10; // pt
|
||||
@ -293,13 +296,16 @@ namespace zaaReloaded2.Formatter
|
||||
style.ParagraphFormat.FirstLineIndent = -36; // pt
|
||||
style.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphJustify;
|
||||
}
|
||||
Bovender.ComHelpers.ReleaseComObject(style);
|
||||
|
||||
try
|
||||
{
|
||||
style = Document.Styles[Properties.Settings.Default.StyleHeader];
|
||||
Logger.Info("CreateStyles: Found header style in document");
|
||||
}
|
||||
catch
|
||||
{
|
||||
Logger.Info("CreateStyles: Need to create header style");
|
||||
// Add header paragraph style for laboratory
|
||||
style = Document.Styles.Add(Properties.Settings.Default.StyleHeader);
|
||||
style.Font.Size = 10; // pt
|
||||
@ -313,6 +319,7 @@ namespace zaaReloaded2.Formatter
|
||||
style.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphJustify;
|
||||
style.set_NextParagraphStyle(Document.Styles[Properties.Settings.Default.StyleParagraph]);
|
||||
}
|
||||
Bovender.ComHelpers.ReleaseComObject(style);
|
||||
|
||||
/*
|
||||
try
|
||||
@ -422,5 +429,13 @@ namespace zaaReloaded2.Formatter
|
||||
Table _table;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -103,14 +103,17 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
// "HBs-Antigen: neg. ;"
|
||||
// "Erythrozyten (U): + [negativ]"
|
||||
Match match;
|
||||
Logger.Debug("ParseLauris: {0}", LaurisText);
|
||||
if (_numericalRegex.IsMatch(LaurisText))
|
||||
{
|
||||
Logger.Debug("ParseLauris: Numerical match");
|
||||
match = _numericalRegex.Match(LaurisText);
|
||||
ParseLimits(match);
|
||||
Value = match.Groups["value"].Value.Trim().Replace(',', '.');
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Debug("ParseLauris: Not a numerical match");
|
||||
match = _categoricalRegex.Match(LaurisText);
|
||||
Normal = match.Groups["normal"].Value.Trim();
|
||||
Value = match.Groups["value"].Value.Trim();
|
||||
@ -120,6 +123,11 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
OriginalName = match.Groups["name"].Value.Trim();
|
||||
Name = OriginalName;
|
||||
Unit = match.Groups["unit"].Value.Trim();
|
||||
Logger.Debug("ParseLauris: Match: {0}, {1}", Name, Unit);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Debug("ParseLauris: No match: \"{0}\"", LaurisText);
|
||||
}
|
||||
}
|
||||
|
||||
@ -132,9 +140,11 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
{
|
||||
if (match.Groups["limits"].Success)
|
||||
{
|
||||
Logger.Debug("ParseLimits: Has limits: {0}", match.Groups["limits"].Value);
|
||||
Match limitMatch = _limitRegex.Match(match.Groups["limits"].Value);
|
||||
if (limitMatch.Groups["limit1"].Success && limitMatch.Groups["limit2"].Success)
|
||||
{
|
||||
Logger.Debug("ParseLimits: Upper and lower limit detected");
|
||||
// Use InvariantCulture because Lauris always outputs dots as decimal separator
|
||||
// Only in rare cases, a comma sneaks in...
|
||||
LowerLimit = Double.Parse(limitMatch.Groups["limit1"].Value.Replace(',', '.'),
|
||||
@ -144,6 +154,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Debug("ParseLimits: Single limit detected");
|
||||
switch (limitMatch.Groups["operator"].Value.Trim())
|
||||
{
|
||||
case "<=":
|
||||
@ -159,9 +170,9 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
// Fixes exception ID 65ca8575.
|
||||
break;
|
||||
default:
|
||||
throw new InvalidOperationException(
|
||||
String.Format("Unknown operator in {0}",
|
||||
match.Groups["limits"].Value));
|
||||
string unknown = match.Groups["limits"].Value;
|
||||
Logger.Fatal("ParseLimits: Unknown operator \"{0}\"", unknown);
|
||||
throw new InvalidOperationException(String.Format("Unknown operator in {0}",unknown));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -210,5 +221,13 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
static readonly Regex _materialRegex = new Regex(@"\((?<material>(SU|PU))\)");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using zaaReloaded2.Thesaurus;
|
||||
using zaaReloaded2.LabModel;
|
||||
using Bovender.Extensions;
|
||||
|
||||
namespace zaaReloaded2.Importer.ZaaImporter
|
||||
{
|
||||
@ -109,9 +110,11 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
/// </summary>
|
||||
void Parse()
|
||||
{
|
||||
Logger.Info("Parse: \"{0}\"", OriginalParagraph.TruncateWithEllipsis(40));
|
||||
Match m = _expectedFormat.Match(OriginalParagraph);
|
||||
if (m.Success)
|
||||
{
|
||||
Logger.Info("Parse: Matches Lauris paragraph format");
|
||||
Items = new ItemDictionary();
|
||||
if (m.Groups["caption"].Success)
|
||||
{
|
||||
@ -127,6 +130,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Info("Parse: Does not match Lauris paragraph format");
|
||||
IsLaurisParagraph = false;
|
||||
}
|
||||
}
|
||||
@ -140,5 +144,13 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
Thesaurus.Units _unitDictionary;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -199,6 +199,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
Match m = _timeStampRegex.Match(paragraph);
|
||||
if (m.Success)
|
||||
{
|
||||
Logger.Info("ParseParagraph: Matches time stamp");
|
||||
DateTime dt;
|
||||
if (DateTime.TryParseExact(
|
||||
m.Groups["datetime"].Value,
|
||||
@ -218,22 +219,25 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
// the normal format of a paragraph generated from Lauris.
|
||||
if (m.Groups["tail"].Success)
|
||||
{
|
||||
Logger.Info("ParseParagraph: Time stamp has a tail -- putting it back with a dummy caption");
|
||||
paragraph = "DUMMY CAPTION: " + m.Groups["tail"].Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
paragraph = String.Empty;
|
||||
paragraph = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (!String.IsNullOrEmpty(paragraph))
|
||||
{
|
||||
Logger.Info("ParseParagraph: Not a time stamp");
|
||||
LaurisParagraph lp = new LaurisParagraph(
|
||||
paragraph,
|
||||
_parameterDictionary,
|
||||
_unitDictionary);
|
||||
if (lp.IsLaurisParagraph)
|
||||
{
|
||||
Logger.Debug("ParseParagraph: Merging Lauris paragraph");
|
||||
Items.Merge(lp.Items);
|
||||
}
|
||||
}
|
||||
@ -259,5 +263,13 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
Units _unitDictionary;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -67,15 +67,19 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
/// <param name="text">ZAA-formatted Lauris output to import.</param>
|
||||
public void Import(string text)
|
||||
{
|
||||
Logger.Info("Import: \"{0}\"", text.TruncateWithEllipsis(120));
|
||||
string[] paragraphs = Helpers.SplitParagraphs(text);
|
||||
Logger.Info("Import: {0} paragraph(s)", paragraphs.Length);
|
||||
LaurisTimePoint timePoint = null;
|
||||
|
||||
foreach (string paragraph in paragraphs)
|
||||
{
|
||||
Logger.Info("Import: \"{0}\"", paragraph.TruncateWithEllipsis(40));
|
||||
// If the current paragraph looks like a Lauris time stamp,
|
||||
// create a new time point.
|
||||
if (LaurisTimePoint.IsTimeStampLine(paragraph))
|
||||
{
|
||||
Logger.Info("Import: Time stamp detected", paragraph);
|
||||
timePoint = new LaurisTimePoint(paragraph, _parameters, _units);
|
||||
// Add the time point to the laboratory only if none
|
||||
// with the same time stamp exists yet.
|
||||
@ -94,6 +98,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
// if no time point exists yet, create one.
|
||||
else if (LaurisParagraph.ResemblesLaurisParagraph(paragraph))
|
||||
{
|
||||
Logger.Info("Import: Lauris paragraph detected");
|
||||
if (timePoint == null)
|
||||
{
|
||||
timePoint = new LaurisTimePoint(_parameters, _units);
|
||||
@ -101,6 +106,10 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
}
|
||||
timePoint.AddParagraph(paragraph);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Debug("Import: Neither time stamp, nor Lauris paragraph");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -123,5 +132,13 @@ namespace zaaReloaded2.Importer.ZaaImporter
|
||||
Units _units;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -206,12 +206,13 @@ namespace zaaReloaded2.LabModel
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Material == LabModel.Material.B)
|
||||
switch (Material)
|
||||
{
|
||||
case Material.S:
|
||||
case Material.E:
|
||||
case Material.B:
|
||||
return Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
default:
|
||||
return String.Format("{0}-{1}", Material.ToString(), Name);
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,12 @@ namespace zaaReloaded2.LabModel
|
||||
/// </summary>
|
||||
public enum Material
|
||||
{
|
||||
[Description("Serum")]
|
||||
/// Serum (default -- first declared)
|
||||
S,
|
||||
[Description("EDTA-Blut")]
|
||||
/// EDTA blood
|
||||
E,
|
||||
[Description("Blut")]
|
||||
/// Blood
|
||||
B,
|
||||
|
109
zaaReloaded2/LogFile.cs
Executable file
109
zaaReloaded2/LogFile.cs
Executable file
@ -0,0 +1,109 @@
|
||||
/* LogFile.cs
|
||||
* part of zaaReloaded2
|
||||
*
|
||||
* Copyright 2016 Daniel Kraus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NLog.Config;
|
||||
using NLog.Targets;
|
||||
using NLog.Targets.Wrappers;
|
||||
|
||||
namespace zaaReloaded2
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides logging to file and to the debug console; wraps
|
||||
/// NLog configuration and targets.
|
||||
/// </summary>
|
||||
public class LogFile : Bovender.Logging.LogFile
|
||||
{
|
||||
#region Singleton
|
||||
|
||||
new public static LogFile Default { get { return _lazy.Value; } }
|
||||
|
||||
private static readonly Lazy<LogFile> _lazy = new Lazy<LogFile>(
|
||||
() =>
|
||||
{
|
||||
LogFile logFile = new LogFile();
|
||||
Bovender.Logging.LogFile.LogFileProvider = new Func<Bovender.Logging.LogFile>(() => logFile);
|
||||
return logFile;
|
||||
});
|
||||
|
||||
#endregion
|
||||
|
||||
#region Static properties
|
||||
|
||||
/// <summary>
|
||||
/// Gets whether file logging is enabled, without initializing
|
||||
/// the singleton instance if it isn't.
|
||||
/// </summary>
|
||||
new public static bool IsInitializedAndEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lazy.IsValueCreated && Default.IsFileLoggingEnabled;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
/// <summary>
|
||||
/// Gets the folder where log files are stored.
|
||||
/// </summary>
|
||||
public override string LogFolder
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_logFolder == null)
|
||||
{
|
||||
_logFolder = System.IO.Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
Properties.Settings.Default.AppDataFolder,
|
||||
Properties.Settings.Default.UserFolder);
|
||||
}
|
||||
return _logFolder;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
private LogFile()
|
||||
: base()
|
||||
{ }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private fields
|
||||
|
||||
string _logFolder;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,73 +0,0 @@
|
||||
/* Preferences.cs
|
||||
* part of zaaReloaded2
|
||||
*
|
||||
* Copyright 2015 Daniel Kraus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace zaaReloaded2
|
||||
{
|
||||
/// <summary>
|
||||
/// Holds user preferences.
|
||||
/// </summary>
|
||||
public class Preferences
|
||||
{
|
||||
#region Singleton
|
||||
|
||||
public static Preferences Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
|
||||
static readonly Preferences _instance = new Preferences();
|
||||
|
||||
static Preferences() { }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets whether the add-in should not ask for
|
||||
/// item comments (i.e. typist mode).
|
||||
/// </summary>
|
||||
public bool SuppressItemCommentInteraction
|
||||
{
|
||||
get
|
||||
{
|
||||
return Properties.Settings.Default.SuppressItemCommentInteraction;
|
||||
}
|
||||
set
|
||||
{
|
||||
Properties.Settings.Default.SuppressItemCommentInteraction = value;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
protected Preferences() { }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
118
zaaReloaded2/Properties/Settings.Designer.cs
generated
118
zaaReloaded2/Properties/Settings.Designer.cs
generated
@ -23,18 +23,6 @@ namespace zaaReloaded2.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string SettingsRepository {
|
||||
get {
|
||||
return ((string)(this["SettingsRepository"]));
|
||||
}
|
||||
set {
|
||||
this["SettingsRepository"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("zaaReloaded2")]
|
||||
@ -64,7 +52,7 @@ namespace zaaReloaded2.Properties {
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://zaa.nephrowiki.de")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://doktorkraus.de/zaareloaded")]
|
||||
public global::System.Uri Homepage {
|
||||
get {
|
||||
return ((global::System.Uri)(this["Homepage"]));
|
||||
@ -73,7 +61,7 @@ namespace zaaReloaded2.Properties {
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://zaa.nephrowiki.de/versioninfo.txt")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://doktorkraus.de/zaareloaded/versioninfo.txt")]
|
||||
public string VersionInfoFile {
|
||||
get {
|
||||
return ((string)(this["VersionInfoFile"]));
|
||||
@ -82,24 +70,13 @@ namespace zaaReloaded2.Properties {
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://zaa.nephrowiki.de/postreport.php")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://doktorkraus.de/zaareloaded/postreport.php")]
|
||||
public string ExceptionPostUrl {
|
||||
get {
|
||||
return ((string)(this["ExceptionPostUrl"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public global::System.DateTime LastUpdateCheck {
|
||||
get {
|
||||
return ((global::System.DateTime)(this["LastUpdateCheck"]));
|
||||
}
|
||||
set {
|
||||
this["LastUpdateCheck"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://www.apache.org/licenses/LICENSE-2.0")]
|
||||
@ -127,18 +104,6 @@ namespace zaaReloaded2.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("00000000-0000-0000-0000-000000000000")]
|
||||
public global::System.Guid LastSettings {
|
||||
get {
|
||||
return ((global::System.Guid)(this["LastSettings"]));
|
||||
}
|
||||
set {
|
||||
this["LastSettings"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("zaaReloaded2-Laborwerte")]
|
||||
@ -184,18 +149,6 @@ namespace zaaReloaded2.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string ImportExportPath {
|
||||
get {
|
||||
return ((string)(this["ImportExportPath"]));
|
||||
}
|
||||
set {
|
||||
this["ImportExportPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("zaaReloaded2-Überschrift")]
|
||||
@ -223,30 +176,6 @@ namespace zaaReloaded2.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool SuppressItemCommentInteraction {
|
||||
get {
|
||||
return ((bool)(this["SuppressItemCommentInteraction"]));
|
||||
}
|
||||
set {
|
||||
this["SuppressItemCommentInteraction"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool FirstRunWizardShown {
|
||||
get {
|
||||
return ((bool)(this["FirstRunWizardShown"]));
|
||||
}
|
||||
set {
|
||||
this["FirstRunWizardShown"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("BITTE_ERGÄNZEN")]
|
||||
@ -258,25 +187,13 @@ namespace zaaReloaded2.Properties {
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://git.bovender.de")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://git.bovender.de")]
|
||||
public string Repository {
|
||||
get {
|
||||
return ((string)(this["Repository"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool NeedUpgrade {
|
||||
get {
|
||||
return ((bool)(this["NeedUpgrade"]));
|
||||
}
|
||||
set {
|
||||
this["NeedUpgrade"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("zaaReloaded2-Medikamente")]
|
||||
@ -285,5 +202,32 @@ namespace zaaReloaded2.Properties {
|
||||
return ((string)(this["DrugsParagraph"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("user")]
|
||||
public string UserFolder {
|
||||
get {
|
||||
return ((string)(this["UserFolder"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("zaaReloaded2")]
|
||||
public string AppDataFolder {
|
||||
get {
|
||||
return ((string)(this["AppDataFolder"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("settings.yml")]
|
||||
public string UserSettingsFile {
|
||||
get {
|
||||
return ((string)(this["UserSettingsFile"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,9 +2,6 @@
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="zaaReloaded2.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="SettingsRepository" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="AddinName" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">zaaReloaded2</Value>
|
||||
</Setting>
|
||||
@ -15,16 +12,13 @@
|
||||
<Value Profile="(Default)">Daniel Kraus</Value>
|
||||
</Setting>
|
||||
<Setting Name="Homepage" Type="System.Uri" Scope="Application">
|
||||
<Value Profile="(Default)">http://zaa.nephrowiki.de</Value>
|
||||
<Value Profile="(Default)">https://doktorkraus.de/zaareloaded</Value>
|
||||
</Setting>
|
||||
<Setting Name="VersionInfoFile" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">http://zaa.nephrowiki.de/versioninfo.txt</Value>
|
||||
<Value Profile="(Default)">https://doktorkraus.de/zaareloaded/versioninfo.txt</Value>
|
||||
</Setting>
|
||||
<Setting Name="ExceptionPostUrl" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">http://zaa.nephrowiki.de/postreport.php</Value>
|
||||
</Setting>
|
||||
<Setting Name="LastUpdateCheck" Type="System.DateTime" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
<Value Profile="(Default)">https://doktorkraus.de/zaareloaded/postreport.php</Value>
|
||||
</Setting>
|
||||
<Setting Name="LicenseUrl" Type="System.Uri" Scope="Application">
|
||||
<Value Profile="(Default)">http://www.apache.org/licenses/LICENSE-2.0</Value>
|
||||
@ -35,9 +29,6 @@
|
||||
<Setting Name="SettingsNameClinic" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">Standard für NepA</Value>
|
||||
</Setting>
|
||||
<Setting Name="LastSettings" Type="System.Guid" Scope="User">
|
||||
<Value Profile="(Default)">00000000-0000-0000-0000-000000000000</Value>
|
||||
</Setting>
|
||||
<Setting Name="StyleParagraph" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">zaaReloaded2-Laborwerte</Value>
|
||||
</Setting>
|
||||
@ -53,9 +44,6 @@
|
||||
<Setting Name="SerializationVersion" Type="System.Int32" Scope="Application">
|
||||
<Value Profile="(Default)">2</Value>
|
||||
</Setting>
|
||||
<Setting Name="ImportExportPath" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="StyleHeader" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">zaaReloaded2-Überschrift</Value>
|
||||
</Setting>
|
||||
@ -65,23 +53,23 @@
|
||||
<Setting Name="AbnormalStyle" Type="zaaReloaded2.Formatter.AbnormalStyle" Scope="Application">
|
||||
<Value Profile="(Default)">None</Value>
|
||||
</Setting>
|
||||
<Setting Name="SuppressItemCommentInteraction" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="FirstRunWizardShown" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ManualCommentPrompt" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">BITTE_ERGÄNZEN</Value>
|
||||
</Setting>
|
||||
<Setting Name="Repository" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">http://git.bovender.de</Value>
|
||||
</Setting>
|
||||
<Setting Name="NeedUpgrade" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
<Value Profile="(Default)">https://git.bovender.de</Value>
|
||||
</Setting>
|
||||
<Setting Name="DrugsParagraph" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">zaaReloaded2-Medikamente</Value>
|
||||
</Setting>
|
||||
<Setting Name="UserFolder" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">user</Value>
|
||||
</Setting>
|
||||
<Setting Name="AppDataFolder" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">zaaReloaded2</Value>
|
||||
</Setting>
|
||||
<Setting Name="UserSettingsFile" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">settings.yml</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
@ -24,11 +24,14 @@ using System.Windows;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
using System.Configuration;
|
||||
|
||||
namespace zaaReloaded2
|
||||
{
|
||||
public partial class ThisAddIn
|
||||
{
|
||||
#region Static property
|
||||
|
||||
/// <summary>
|
||||
/// Gets the subdirectory for addin data in the user profile directory.
|
||||
/// </summary>
|
||||
@ -42,43 +45,76 @@ namespace zaaReloaded2
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Start up and shut down
|
||||
|
||||
private void ThisAddIn_Startup(object sender, System.EventArgs e)
|
||||
{
|
||||
Bovender.ExceptionHandler.CentralHandler.ManageExceptionCallback += CentralHandler_ManageExceptionCallback;
|
||||
Bovender.WpfHelpers.RegisterTextBoxSelectAll();
|
||||
|
||||
if (Properties.Settings.Default.NeedUpgrade)
|
||||
#if DEBUG
|
||||
Bovender.Logging.LogFile.Default.EnableDebugLogging();
|
||||
#endif
|
||||
try
|
||||
{
|
||||
Properties.Settings.Default.Upgrade();
|
||||
Properties.Settings.Default.NeedUpgrade = false;
|
||||
Properties.Settings.Default.Save();
|
||||
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
|
||||
if (System.IO.File.Exists(config.FilePath))
|
||||
{
|
||||
System.IO.File.Delete(config.FilePath);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Warn("ThisAddIn_Startup: Unable to delete user config file");
|
||||
Logger.Warn(ex);
|
||||
}
|
||||
|
||||
Bovender.ExceptionHandler.CentralHandler.ManageExceptionCallback += CentralHandler_ManageExceptionCallback;
|
||||
Bovender.Win32Window.MainWindowHandleProvider = () =>
|
||||
{
|
||||
return IntPtr.Zero;
|
||||
};
|
||||
Bovender.WpfHelpers.RegisterTextBoxSelectAll();
|
||||
UserSettings userSettings = UserSettings.Default;
|
||||
|
||||
CheckForUpdates();
|
||||
_oldCaption = Globals.ThisAddIn.Application.Caption;
|
||||
Globals.ThisAddIn.Application.Caption =
|
||||
Microsoft.Office.Interop.Word.Application word = Globals.ThisAddIn.Application;
|
||||
_oldCaption = word.Caption;
|
||||
word.Caption =
|
||||
String.Format(
|
||||
"{0} ({1} {2})",
|
||||
_oldCaption,
|
||||
Properties.Settings.Default.AddinName,
|
||||
Updater.Version.CurrentVersion().ToString()
|
||||
Updater.Version.Current.ToString()
|
||||
);
|
||||
|
||||
ViewModels.FirstRunViewModel.InjectIntoIfNeeded<Views.FirstRunView>();
|
||||
Logger.Info("ThisAddIn_Startup: Finished startup");
|
||||
}
|
||||
|
||||
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
|
||||
{
|
||||
if (_updaterVM != null && _updaterVM.IsUpdatePending)
|
||||
UserSettings.Default.LastVersionSeen = Updater.Version.Current.ToString();
|
||||
UserSettings.Default.Save();
|
||||
|
||||
if (_updaterVM != null && _updaterVM.InstallCommand.CanExecute(null))
|
||||
{
|
||||
if (_updaterVM.InstallUpdateCommand.CanExecute(null))
|
||||
_updaterVM.InstallUpdateCommand.Execute(null);
|
||||
Logger.Info("ThisAddIn_Shutdown: Installing update");
|
||||
_updaterVM.InstallCommand.Execute(null);
|
||||
}
|
||||
try
|
||||
{
|
||||
Logger.Info("ThisAddIn_Shutdown: Resetting application caption");
|
||||
Globals.ThisAddIn.Application.Caption = _oldCaption;
|
||||
}
|
||||
catch { }
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Warn("ThisAddIn_Shutdown: Failed to reset application caption");
|
||||
Logger.Warn(ex);
|
||||
}
|
||||
Logger.Info("ThisAddIn_Shutdown: Finished shutdown");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
@ -109,24 +145,23 @@ namespace zaaReloaded2
|
||||
|
||||
void CheckForUpdates()
|
||||
{
|
||||
if (DateTime.Today == Properties.Settings.Default.LastUpdateCheck.Date)
|
||||
// Check only once per day
|
||||
if (DateTime.Today == UserSettings.Default.LastUpdateCheck.Date)
|
||||
return;
|
||||
|
||||
Properties.Settings.Default.LastUpdateCheck = DateTime.Today;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
_updaterVM = new UpdaterViewModel(new Updater.Updater());
|
||||
if (!_updaterVM.CanCheckForUpdate) return;
|
||||
|
||||
_updaterVM.UpdateAvailableMessage.Sent += UpdateAvailableMessage_Sent;
|
||||
_updaterVM.CheckForUpdateCommand.Execute(null);
|
||||
}
|
||||
|
||||
void UpdateAvailableMessage_Sent(object sender, MessageArgs<ViewModelMessageContent> e)
|
||||
Logger.Info("CheckForUpdates");
|
||||
UserSettings.Default.LastUpdateCheck = DateTime.Today;
|
||||
ReleaseInfo releaseInfo = new ReleaseInfo(new Uri(Properties.Settings.Default.VersionInfoFile));
|
||||
ReleaseInfoViewModel releaseInfoVM = new ReleaseInfoViewModel(releaseInfo, Updater.Version.Current);
|
||||
releaseInfoVM.UpdateAvailableMessage.Sent += (sender, args) =>
|
||||
{
|
||||
UpdaterViewModel uvm = e.Content.ViewModel as UpdaterViewModel;
|
||||
uvm.DestinationFolder = System.IO.Path.GetTempPath();
|
||||
uvm.DownloadUpdateCommand.Execute(null);
|
||||
Logger.Info("CheckForUpdates: Received update-available message");
|
||||
Updater.Updater updater = Updater.Updater.CreateDefault(releaseInfo);
|
||||
updater.DestinationFolder = System.IO.Path.GetTempPath();
|
||||
_updaterVM = new UpdaterViewModel(updater);
|
||||
_updaterVM.StartProcess();
|
||||
};
|
||||
releaseInfoVM.StartProcess();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -145,8 +180,8 @@ namespace zaaReloaded2
|
||||
#region Private fields
|
||||
|
||||
Ribbon _ribbon;
|
||||
UpdaterViewModel _updaterVM;
|
||||
string _oldCaption;
|
||||
UpdaterViewModel _updaterVM;
|
||||
|
||||
#endregion
|
||||
|
||||
@ -163,5 +198,13 @@ namespace zaaReloaded2
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Updater.cs
|
||||
using Bovender.Versioning;
|
||||
/* Updater.cs
|
||||
* part of zaaReloaded2
|
||||
*
|
||||
* Copyright 2015 Daniel Kraus
|
||||
@ -24,23 +25,38 @@ namespace zaaReloaded2.Updater
|
||||
{
|
||||
class Updater : Bovender.Versioning.Updater
|
||||
{
|
||||
protected override Bovender.Versioning.SemanticVersion GetCurrentVersion()
|
||||
#region Static properties
|
||||
|
||||
public static Updater Default { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public static methods
|
||||
|
||||
public static Updater CreateDefault(IReleaseInfo releaseInfo)
|
||||
{
|
||||
return Version.CurrentVersion();
|
||||
Default = new Updater(releaseInfo);
|
||||
return Default;
|
||||
}
|
||||
|
||||
protected override Uri GetVersionInfoUri()
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
public Updater(Bovender.Versioning.IReleaseInfo releaseInfo)
|
||||
: base(releaseInfo)
|
||||
{
|
||||
return new Uri(Properties.Settings.Default.VersionInfoFile);
|
||||
CurrentVersion = Version.Current;
|
||||
}
|
||||
|
||||
protected override string BuildDestinationFileName()
|
||||
{
|
||||
return System.IO.Path.Combine(
|
||||
DestinationFolder,
|
||||
DownloadUri.ToString().Split('/').Last()
|
||||
);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -26,18 +26,41 @@ namespace zaaReloaded2.Updater
|
||||
{
|
||||
class Version : SemanticVersion
|
||||
{
|
||||
#region Static 'overrides'
|
||||
#region Current version singleton
|
||||
|
||||
public static SemanticVersion Current
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lazy.Value;
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly Lazy<SemanticVersion> _lazy =
|
||||
new Lazy<SemanticVersion>(() => new Version());
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public method
|
||||
|
||||
public string BrandName
|
||||
{
|
||||
get
|
||||
{
|
||||
return Properties.Settings.Default.AddinName + " " + ToString();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
/// <summary>
|
||||
/// Returns the current version of the XL Toolbox addin.
|
||||
/// Creates an instance with the current zaaReloaded2 version
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
new public static SemanticVersion CurrentVersion()
|
||||
{
|
||||
return Bovender.Versioning.SemanticVersion.CurrentVersion(
|
||||
Assembly.GetExecutingAssembly()
|
||||
);
|
||||
}
|
||||
private Version() : base(Assembly.GetExecutingAssembly()) { }
|
||||
|
||||
public Version(string version) : base(version) { }
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
198
zaaReloaded2/UserSettings.cs
Executable file
198
zaaReloaded2/UserSettings.cs
Executable file
@ -0,0 +1,198 @@
|
||||
/* UserSettings.cs
|
||||
* part of zaaReloaded2
|
||||
*
|
||||
* Copyright 2016 Daniel Kraus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace zaaReloaded2
|
||||
{
|
||||
[Serializable]
|
||||
class UserSettings : Bovender.UserSettings.UserSettingsBase
|
||||
{
|
||||
#region Static property
|
||||
|
||||
public static string UserSettingsFile
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
Properties.Settings.Default.AppDataFolder,
|
||||
Properties.Settings.Default.UserFolder,
|
||||
Properties.Settings.Default.UserSettingsFile);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Singleton factory
|
||||
|
||||
new public static UserSettings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lazy.Value;
|
||||
}
|
||||
}
|
||||
|
||||
private static Lazy<UserSettings> _lazy = new Lazy<UserSettings>(() =>
|
||||
{
|
||||
// Logger.Info("Initializing singleton instance");
|
||||
UserSettings s = FromFileOrDefault<UserSettings>(UserSettingsFile);
|
||||
Bovender.UserSettings.UserSettingsBase.Default = s;
|
||||
return s;
|
||||
});
|
||||
|
||||
#endregion
|
||||
|
||||
#region User settings
|
||||
|
||||
public DateTime LastUpdateCheck
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_lastUpdateCheck == null)
|
||||
{
|
||||
_lastUpdateCheck = new DateTime(2016, 1, 1);
|
||||
}
|
||||
return _lastUpdateCheck;
|
||||
}
|
||||
set
|
||||
{
|
||||
_lastUpdateCheck = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string LastVersionSeen
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_lastVersionSeen == null)
|
||||
{
|
||||
_lastVersionSeen = DEFAULT_VERSION;
|
||||
}
|
||||
return _lastVersionSeen;
|
||||
}
|
||||
set
|
||||
{
|
||||
_lastVersionSeen = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int UpdateCheckInterval
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_updateCheckInterval <= 0)
|
||||
{
|
||||
_updateCheckInterval = 7;
|
||||
}
|
||||
return _updateCheckInterval;
|
||||
}
|
||||
set
|
||||
{
|
||||
_updateCheckInterval = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool EnableLogging
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFile.IsInitializedAndEnabled;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
LogFile.Default.IsFileLoggingEnabled = true;
|
||||
}
|
||||
else if (LogFile.IsInitializedAndEnabled)
|
||||
{
|
||||
LogFile.Default.IsFileLoggingEnabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
public string ImportExportPath { get; set; }
|
||||
|
||||
public bool SuppressItemCommentInteraction { get; set; }
|
||||
|
||||
public Guid LastSettings
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_lastSettings == null)
|
||||
{
|
||||
_lastSettings = new Guid("00000000-0000-0000-0000-000000000000");
|
||||
}
|
||||
return _lastSettings;
|
||||
}
|
||||
set
|
||||
{
|
||||
_lastSettings = value;
|
||||
}
|
||||
}
|
||||
|
||||
public string SettingsRepository { get; set; }
|
||||
|
||||
[YamlDotNet.Serialization.YamlIgnore]
|
||||
public bool FirstRun { get { return LastVersionSeen == DEFAULT_VERSION; } }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private fields
|
||||
|
||||
private DateTime _lastUpdateCheck;
|
||||
private int _updateCheckInterval;
|
||||
private string _lastVersionSeen;
|
||||
private Guid _lastSettings;
|
||||
private const string DEFAULT_VERSION = "0.0.0";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Overrides
|
||||
|
||||
public override string GetSettingsFilePath()
|
||||
{
|
||||
return UserSettingsFile;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance. This should never be called directly, use
|
||||
/// the singleton factory instead. The constructor must be public to
|
||||
/// enable deserialization.
|
||||
/// </summary>
|
||||
public UserSettings() { }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Class logger
|
||||
|
||||
private static NLog.Logger Logger { get { return _logger.Value; } }
|
||||
|
||||
private static readonly Lazy<NLog.Logger> _logger = new Lazy<NLog.Logger>(() => NLog.LogManager.GetCurrentClassLogger());
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,2 +1,2 @@
|
||||
2.2.4
|
||||
2.2.4.0
|
||||
2.2.5
|
||||
2.2.5.0
|
||||
|
@ -67,7 +67,7 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
get
|
||||
{
|
||||
return zaaReloaded2.Updater.Version.CurrentVersion().ToString();
|
||||
return zaaReloaded2.Updater.Version.Current.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ namespace zaaReloaded2.ViewModels
|
||||
public static void InjectIntoIfNeeded<T>()
|
||||
where T: System.Windows.Window, new()
|
||||
{
|
||||
if (!Properties.Settings.Default.FirstRunWizardShown)
|
||||
if (UserSettings.Default.FirstRun)
|
||||
{
|
||||
FirstRunViewModel vm = new FirstRunViewModel();
|
||||
vm.InjectInto<T>().Show();
|
||||
@ -93,34 +93,19 @@ namespace zaaReloaded2.ViewModels
|
||||
void DoSelectDoctorsMode()
|
||||
{
|
||||
// Properties will be saved by the DoCloseView override.
|
||||
Properties.Settings.Default.SuppressItemCommentInteraction = false;
|
||||
UserSettings.Default.SuppressItemCommentInteraction = false;
|
||||
CloseViewCommand.Execute(null);
|
||||
}
|
||||
|
||||
void DoSelectTypistsMode()
|
||||
{
|
||||
// Properties will be saved by the DoCloseView override.
|
||||
Properties.Settings.Default.SuppressItemCommentInteraction = true;
|
||||
UserSettings.Default.SuppressItemCommentInteraction = true;
|
||||
CloseViewCommand.Execute(null);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Overrides
|
||||
|
||||
/// <summary>
|
||||
/// Sets the FirstRunWizardShown property of the assembly properties
|
||||
/// to true and calls the base function to close the associated view.
|
||||
/// </summary>
|
||||
protected override void DoCloseView()
|
||||
{
|
||||
Properties.Settings.Default.FirstRunWizardShown = true;
|
||||
Properties.Settings.Default.Save();
|
||||
base.DoCloseView();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Implementation of ViewModelBase
|
||||
|
||||
public override object RevealModelObject()
|
||||
|
@ -29,25 +29,47 @@ namespace zaaReloaded2.ViewModels
|
||||
/// </summary>
|
||||
public class PreferencesViewModel : ViewModelBase
|
||||
{
|
||||
#region Singleton
|
||||
#region Properties
|
||||
|
||||
public static PreferencesViewModel Default
|
||||
public bool SuppressItemCommentInteraction
|
||||
{
|
||||
get
|
||||
{
|
||||
return _instance;
|
||||
return _suppressCommentInteraction;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _suppressCommentInteraction)
|
||||
{
|
||||
_suppressCommentInteraction = value;
|
||||
OnPropertyChanged("SuppressItemCommentInteraction");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static PreferencesViewModel() { }
|
||||
public bool EnableLogging
|
||||
{
|
||||
get
|
||||
{
|
||||
return _enableLogging;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _enableLogging)
|
||||
{
|
||||
_enableLogging = value;
|
||||
OnPropertyChanged("EnableLogging");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static readonly PreferencesViewModel _instance = new PreferencesViewModel();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
public bool SuppressItemCommentInteraction { get; set; }
|
||||
public string LogFolder
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogFile.Default.LogFolder;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -67,13 +89,32 @@ namespace zaaReloaded2.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
public DelegatingCommand OpenLogFolderCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_openLogFolderCommand == null)
|
||||
{
|
||||
_openLogFolderCommand = new DelegatingCommand(
|
||||
param => DoOpenLogFolder(),
|
||||
param => CanOpenLogFolder());
|
||||
}
|
||||
return _openLogFolderCommand;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
public PreferencesViewModel()
|
||||
{
|
||||
SuppressItemCommentInteraction = Preferences.Default.SuppressItemCommentInteraction;
|
||||
_suppressCommentInteraction = UserSettings.Default.SuppressItemCommentInteraction;
|
||||
_enableLogging = UserSettings.Default.EnableLogging;
|
||||
PropertyChanged += (sender, args) =>
|
||||
{
|
||||
_dirty = true;
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -82,20 +123,45 @@ namespace zaaReloaded2.ViewModels
|
||||
|
||||
void DoSave()
|
||||
{
|
||||
Preferences.Default.SuppressItemCommentInteraction = SuppressItemCommentInteraction;
|
||||
if (_dirty)
|
||||
{
|
||||
UserSettings.Default.SuppressItemCommentInteraction = SuppressItemCommentInteraction;
|
||||
UserSettings.Default.EnableLogging = EnableLogging;
|
||||
}
|
||||
DoCloseView();
|
||||
}
|
||||
|
||||
bool CanSave()
|
||||
{
|
||||
return true;
|
||||
return _dirty;
|
||||
}
|
||||
|
||||
void DoOpenLogFolder()
|
||||
{
|
||||
if (CanOpenLogFolder())
|
||||
{
|
||||
System.Diagnostics.Process.Start(LogFolder);
|
||||
if (!_dirty)
|
||||
{
|
||||
CloseViewCommand.Execute(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool CanOpenLogFolder()
|
||||
{
|
||||
return !String.IsNullOrEmpty(LogFolder);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Field
|
||||
#region Fields
|
||||
|
||||
DelegatingCommand _saveCommand;
|
||||
DelegatingCommand _openLogFolderCommand;
|
||||
bool _dirty;
|
||||
bool _enableLogging;
|
||||
bool _suppressCommentInteraction;
|
||||
|
||||
#endregion
|
||||
|
||||
@ -103,7 +169,7 @@ namespace zaaReloaded2.ViewModels
|
||||
|
||||
public override object RevealModelObject()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return UserSettings.Default;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -445,8 +445,7 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
if (message.Confirmed)
|
||||
{
|
||||
Properties.Settings.Default.ImportExportPath = message.Value;
|
||||
Properties.Settings.Default.Save();
|
||||
UserSettings.Default.ImportExportPath = message.Value;
|
||||
Settings settings = LastSelected.RevealModelObject() as Settings;
|
||||
try
|
||||
{
|
||||
@ -477,8 +476,7 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
if (message.Confirmed)
|
||||
{
|
||||
Properties.Settings.Default.ImportExportPath = message.Value;
|
||||
Properties.Settings.Default.Save();
|
||||
UserSettings.Default.ImportExportPath = message.Value;
|
||||
try
|
||||
{
|
||||
Settings settings = Settings.LoadFromFile(message.Value);
|
||||
@ -495,7 +493,7 @@ namespace zaaReloaded2.ViewModels
|
||||
|
||||
string SuggestImportExportPath()
|
||||
{
|
||||
string path = Properties.Settings.Default.ImportExportPath;
|
||||
string path = UserSettings.Default.ImportExportPath;
|
||||
if (String.IsNullOrEmpty(path))
|
||||
{
|
||||
return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
|
||||
|
@ -38,7 +38,7 @@
|
||||
<TextBlock TextAlignment="Center" Margin="0, 10, 0, 10">
|
||||
Homepage:
|
||||
<Hyperlink Command="{Binding GotoHomepageCommand}">
|
||||
<TextBlock Text="zaa.nephrowiki.de" />
|
||||
<TextBlock Text="doktorkraus.de/zaareloaded" />
|
||||
</Hyperlink>
|
||||
<LineBreak />
|
||||
Quellcode:
|
||||
|
@ -23,22 +23,36 @@
|
||||
xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
|
||||
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
|
||||
SizeToContent="WidthAndHeight" ResizeMode="NoResize" ShowInTaskbar="False"
|
||||
SizeToContent="WidthAndHeight" ResizeMode="NoResize"
|
||||
ShowInTaskbar="False" Topmost="True"
|
||||
b:WindowState.CenterScreen="True" b:WindowState.Save="True"
|
||||
Title="Einstellungen"
|
||||
>
|
||||
<Window.Resources>
|
||||
<ResourceDictionary Source="/Bovender;component/Style.xaml" />
|
||||
</Window.Resources>
|
||||
<DockPanel Margin="10">
|
||||
<DockPanel Margin="20">
|
||||
<UniformGrid DockPanel.Dock="Bottom" Columns="2" Rows="1"
|
||||
HorizontalAlignment="Right" Margin="0 10 0 0">
|
||||
HorizontalAlignment="Right" Margin="0 20 0 0">
|
||||
<Button Command="{Binding SaveCommand}" Content="OK" IsDefault="True" Margin="0 0 5 0" />
|
||||
<Button Command="{Binding CloseViewCommand}" Content="Abbrechen" IsCancel="True" Margin="5 0 0 0" />
|
||||
</UniformGrid>
|
||||
<GroupBox Header="Sekretariatsmodus" Padding="10">
|
||||
<CheckBox IsChecked="{Binding SuppressItemCommentInteraction}" Content="Keine Interaktion für _Kommentare">
|
||||
</CheckBox>
|
||||
<StackPanel>
|
||||
<GroupBox Header="Sekretariatsmodus" Margin="0 0 0 5" Padding="10">
|
||||
<StackPanel>
|
||||
<CheckBox IsChecked="{Binding SuppressItemCommentInteraction}" Content="Keine Interaktion für _Kommentare" />
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
<GroupBox Header="Debugging" Margin="0 5 0 0" Padding="10">
|
||||
<StackPanel>
|
||||
<CheckBox IsChecked="{Binding EnableLogging}" Content="_Logfile aktivieren" />
|
||||
<TextBlock Margin="0 10 0 0">
|
||||
<Hyperlink Command="{Binding OpenLogFolderCommand}">
|
||||
<TextBlock Text="{Binding LogFolder}" />
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
</StackPanel>
|
||||
</DockPanel>
|
||||
</Window>
|
||||
|
@ -38,11 +38,11 @@
|
||||
<action:ShowViewAction View="zaaReloaded2.Views.SettingsView" Assembly="zaaReloaded2" />
|
||||
</i:EventTrigger>
|
||||
<i:EventTrigger SourceObject="{Binding ConfirmDeleteSettingsMessage}" EventName="Sent">
|
||||
<action:ConfirmationAction Caption="Stil entfernen" OkButtonLabel="Ja" CancelButtonLabel="Nein"
|
||||
<action:ConfirmationAction Caption="Stil entfernen" OkButtonText="Ja" CancelButtonText="Nein"
|
||||
Message="Soll dieser Stil wirklich unwiederbringlich entfernt werden?" />
|
||||
</i:EventTrigger>
|
||||
<i:EventTrigger SourceObject="{Binding ConfirmResetSettingsMessage}" EventName="Sent">
|
||||
<action:ConfirmationAction Caption="Stile zurücksetzen" OkButtonLabel="Ja" CancelButtonLabel="Nein"
|
||||
<action:ConfirmationAction Caption="Stile zurücksetzen" OkButtonText="Ja" CancelButtonText="Nein"
|
||||
Message="Sollen alle Stile gelöscht und die eingebauten Stile geladen werden?" />
|
||||
</i:EventTrigger>
|
||||
<i:EventTrigger SourceObject="{Binding ChooseExportFileNameMessage}" EventName="Sent">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
app.config
|
||||
@ -20,12 +20,9 @@
|
||||
-->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<section name="zaaReloaded2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="zaaReloaded2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<applicationSettings>
|
||||
<zaaReloaded2.Properties.Settings>
|
||||
@ -39,13 +36,13 @@
|
||||
<value>Daniel Kraus</value>
|
||||
</setting>
|
||||
<setting name="Homepage" serializeAs="String">
|
||||
<value>http://zaa.nephrowiki.de</value>
|
||||
<value>https://doktorkraus.de/zaareloaded</value>
|
||||
</setting>
|
||||
<setting name="VersionInfoFile" serializeAs="String">
|
||||
<value>http://zaa.nephrowiki.de/versioninfo.txt</value>
|
||||
<value>https://doktorkraus.de/zaareloaded/versioninfo.txt</value>
|
||||
</setting>
|
||||
<setting name="ExceptionPostUrl" serializeAs="String">
|
||||
<value>http://zaa.nephrowiki.de/postreport.php</value>
|
||||
<value>https://doktorkraus.de/zaareloaded/postreport.php</value>
|
||||
</setting>
|
||||
<setting name="LicenseUrl" serializeAs="String">
|
||||
<value>http://www.apache.org/licenses/LICENSE-2.0</value>
|
||||
@ -84,36 +81,28 @@
|
||||
<value>BITTE_ERGÄNZEN</value>
|
||||
</setting>
|
||||
<setting name="Repository" serializeAs="String">
|
||||
<value>http://git.bovender.de</value>
|
||||
<value>https://git.bovender.de</value>
|
||||
</setting>
|
||||
<setting name="DrugsParagraph" serializeAs="String">
|
||||
<value>zaaReloaded2-Medikamente</value>
|
||||
</setting>
|
||||
<setting name="UserFolder" serializeAs="String">
|
||||
<value>user</value>
|
||||
</setting>
|
||||
<setting name="AppDataFolder" serializeAs="String">
|
||||
<value>zaaReloaded2</value>
|
||||
</setting>
|
||||
<setting name="UserSettingsFile" serializeAs="String">
|
||||
<value>settings.yml</value>
|
||||
</setting>
|
||||
</zaaReloaded2.Properties.Settings>
|
||||
</applicationSettings>
|
||||
<userSettings>
|
||||
<zaaReloaded2.Properties.Settings>
|
||||
<setting name="SettingsRepository" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="LastUpdateCheck" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="LastSettings" serializeAs="String">
|
||||
<value>00000000-0000-0000-0000-000000000000</value>
|
||||
</setting>
|
||||
<setting name="ImportExportPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="SuppressItemCommentInteraction" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="FirstRunWizardShown" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="NeedUpgrade" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
</zaaReloaded2.Properties.Settings>
|
||||
</userSettings>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="YamlDotNet" publicKeyToken="ec19458f3c15af5e" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.9.0.0" newVersion="3.9.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
@ -19,6 +19,8 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<packages>
|
||||
<package id="Bovender" version="0.5.0.0" targetFramework="net40" />
|
||||
<package id="Bovender" version="0.14.5.0" targetFramework="net40" />
|
||||
<package id="Expression.Blend.Sdk" version="1.0.2" targetFramework="net40" />
|
||||
<package id="NLog" version="4.3.7" targetFramework="net40" />
|
||||
<package id="YamlDotNet.Signed" version="3.9.0" targetFramework="net40" />
|
||||
</packages>
|
@ -134,14 +134,19 @@
|
||||
-->
|
||||
<ItemGroup>
|
||||
<Reference Include="Accessibility" />
|
||||
<Reference Include="Bovender, Version=0.5.0.0, Culture=neutral, PublicKeyToken=df1c15557d8b6df8, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Bovender.0.5.0.0\lib\net40\Bovender.dll</HintPath>
|
||||
<Reference Include="Bovender, Version=0.14.5.0, Culture=neutral, PublicKeyToken=df1c15557d8b6df8, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Bovender.0.14.5.0\lib\net40\Bovender.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Expression.Interactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
|
||||
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.4.3.7\lib\net40\NLog.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Runtime.Serialization.Formatters.Soap" />
|
||||
@ -156,6 +161,10 @@
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="YamlDotNet, Version=3.9.0.0, Culture=neutral, PublicKeyToken=ec19458f3c15af5e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\YamlDotNet.Signed.3.9.0\lib\net35\YamlDotNet.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Office.Tools.v4.0.Framework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
||||
@ -222,10 +231,10 @@
|
||||
<Compile Include="Formatter\DanielsStyle.cs" />
|
||||
<Compile Include="Formatter\DocumentWriter.cs" />
|
||||
<Compile Include="Formatter\NoLaboratoryDataException.cs" />
|
||||
<Compile Include="LogFile.cs" />
|
||||
<Compile Include="Medication\Formatter.cs" />
|
||||
<Compile Include="Medication\Importer.cs" />
|
||||
<Compile Include="Medication\Prescription.cs" />
|
||||
<Compile Include="Preferences.cs" />
|
||||
<Compile Include="Ribbon.cs" />
|
||||
<Compile Include="Thesaurus\ThesaurusBase.cs" />
|
||||
<Compile Include="Formatter\IItemFormatterDictionary.cs" />
|
||||
@ -258,6 +267,7 @@
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Updater\Updater.cs" />
|
||||
<Compile Include="UserSettings.cs" />
|
||||
<Compile Include="ViewModels\AboutViewModel.cs" />
|
||||
<Compile Include="ViewModels\CategoryViewModel.cs" />
|
||||
<Compile Include="ViewModels\ElementPickerViewModel.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user