diff --git a/SmartDots/App.config b/SmartDots/App.config index 96882fa..0b1bffc 100644 --- a/SmartDots/App.config +++ b/SmartDots/App.config @@ -1,14 +1,14 @@ - + -
+
- + @@ -138,18 +138,22 @@ + + + Office2016White + - + - + @@ -157,12 +161,12 @@ - - + + - - + + + + +
+ + + + + + + + + 10 + + + #FF0000 + + + Dot + + + 2 + + + #00FFFF + + + + + + + + + + + + + + + Seawater + + + #FFFF00 + + + 1 + + + 12 + + + False + + + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + Selected Annotations + + + pixels + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SmartDots/App.xaml.cs b/SmartDots/App.xaml.cs index 0e57b0e..7c48287 100644 --- a/SmartDots/App.xaml.cs +++ b/SmartDots/App.xaml.cs @@ -17,7 +17,7 @@ public partial class App : Application public App() { typeof(DXSplashScreen).GetProperty("MainThreadDelay", BindingFlags.Static | BindingFlags.NonPublic).SetValue(null, -1, null); - ApplicationThemeHelper.UseLegacyDefaultTheme = true; + ApplicationThemeHelper.UseLegacyDefaultTheme = false; ApplicationThemeHelper.UpdateApplicationThemeName(); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; } diff --git a/SmartDots/Controls/SmartDotsGrid.cs b/SmartDots/Controls/SmartDotsGrid.cs new file mode 100644 index 0000000..fffee0c --- /dev/null +++ b/SmartDots/Controls/SmartDotsGrid.cs @@ -0,0 +1,73 @@ +using DevExpress.Data.Filtering; +using DevExpress.Xpf.Core; +using DevExpress.Xpf.Grid; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SmartDots.Controls +{ + + public class SmartDotsGrid : DevExpress.Xpf.Grid.GridControl + { + ObservableCollectionCore mySelectedItems; + public IList MySelectedItems { get { return mySelectedItems.ToList(); } } + public SmartDotsGrid() + { + SelectionChanged += MyGridControl_SelectionChanged; + mySelectedItems = new ObservableCollectionCore(); + } + + Hashtable selection = new Hashtable(); + IEnumerable OrderedSelection { get { return selection.Keys.Cast().OrderBy(x => x); } } + protected override void OnItemsSourceChanged(object oldValue, object newValue) + { + base.OnItemsSourceChanged(oldValue, newValue); + selection.Clear(); + IEnumerable itemsSource = newValue as IEnumerable; + if (itemsSource == null) + return; + int i = 0; + foreach (object item in itemsSource) + selection[i++] = false; + } + + + Locker updateLocker = new Locker(); + void MyGridControl_SelectionChanged(object sender, GridSelectionChangedEventArgs e) + { + if (updateLocker.IsLocked) + return; + for (int i = 0; i < VisibleRowCount; i++) + { + int rowHandle = GetRowHandleByVisibleIndex(i); + selection[GetListIndexByRowHandle(rowHandle)] = View.IsRowSelected(rowHandle); + } + mySelectedItems.BeginUpdate(); + mySelectedItems.Clear(); + foreach (int index in OrderedSelection) + { + if ((bool)selection[index]) + mySelectedItems.Add(GetRowByListIndex(index)); + } + mySelectedItems.EndUpdate(); + } + protected override void ApplyFilter(CriteriaOperator op, FilterGroupSortChangingEventArgs filterSortArgs, bool skipIfFilterEquals) + { + updateLocker.DoLockedAction(() => + { + base.ApplyFilter(op, filterSortArgs, skipIfFilterEquals); + BeginSelection(); + foreach (int index in OrderedSelection) + { + if ((bool)selection[index]) + SelectItem(GetRowHandleByListIndex(index)); + } + EndSelection(); + }); + } + } +} \ No newline at end of file diff --git a/SmartDots/Model/Extension/Analysis.cs b/SmartDots/Model/Extension/Analysis.cs index 3ffef52..323a20c 100644 --- a/SmartDots/Model/Extension/Analysis.cs +++ b/SmartDots/Model/Extension/Analysis.cs @@ -14,5 +14,6 @@ public class Analysis public bool ShowNucleusColumn { get; set; } public bool ShowEdgeColumn { get; set; } public bool UseGrowthGraphAllSamples { get; set; } + public bool AllowSetScale { get; set; } } } diff --git a/SmartDots/Model/Extension/Annotation.cs b/SmartDots/Model/Extension/Annotation.cs index 7585eb0..be43a3a 100644 --- a/SmartDots/Model/Extension/Annotation.cs +++ b/SmartDots/Model/Extension/Annotation.cs @@ -30,6 +30,7 @@ public Annotation() public bool IsApproved { get; set; } public bool IsReadOnly { get; set; } public bool IsFixed { get; set; } + public string ExpertiseLevel { get; set; } //public Image FixedIcon //{ // get diff --git a/SmartDots/Model/Extension/File.cs b/SmartDots/Model/Extension/File.cs index 7430348..713e1bb 100644 --- a/SmartDots/Model/Extension/File.cs +++ b/SmartDots/Model/Extension/File.cs @@ -75,6 +75,7 @@ public void ConvertDbAnnotations(List dbAnnotations) Dots = dots, Comment = annotation.Comment, IsFixed = annotation.IsFixed, + ExpertiseLevel=annotation.ExpertiseLevel //DynamicProperties = annotation.DynamicProperties }; if (annotation.Nucleus == "Opaque" || annotation.Nucleus == "Translucent") temp.Nucleus = annotation.Nucleus; diff --git a/SmartDots/Model/Extension/MaturityAnalysis.cs b/SmartDots/Model/Extension/MaturityAnalysis.cs index 43293d9..85490b8 100644 --- a/SmartDots/Model/Extension/MaturityAnalysis.cs +++ b/SmartDots/Model/Extension/MaturityAnalysis.cs @@ -9,6 +9,6 @@ public class MaturityAnalysis public string HeaderInfo { get; set; } public List MaturitySamples { get; set; } - + public bool AllowSetScale { get; set; } } } diff --git a/SmartDots/Model/Extension/MaturityAnnotation.cs b/SmartDots/Model/Extension/MaturityAnnotation.cs index 1cce044..00eec8e 100644 --- a/SmartDots/Model/Extension/MaturityAnnotation.cs +++ b/SmartDots/Model/Extension/MaturityAnnotation.cs @@ -20,6 +20,8 @@ public class MaturityAnnotation public bool RequiresSaving { get; set; } public string Comments { get; set; } + public string ExpertiseLevel { get; set; } + public string ApprovedPicture { get diff --git a/SmartDots/Model/Extension/MaturitySample.cs b/SmartDots/Model/Extension/MaturitySample.cs index d9a77c6..63eeae3 100644 --- a/SmartDots/Model/Extension/MaturitySample.cs +++ b/SmartDots/Model/Extension/MaturitySample.cs @@ -66,7 +66,8 @@ public void ConvertDbAnnotations(List dbAnnotations) SexID = annotation.SexID, UserID = annotation.UserID, User = annotation.User, - IsApproved = annotation.IsApproved + IsApproved = annotation.IsApproved, + ExpertiseLevel= annotation.ExpertiseLevel }; result.Add(temp); diff --git a/SmartDots/Model/Smartdots/AgeReading/DtoAnalysis.cs b/SmartDots/Model/Smartdots/AgeReading/DtoAnalysis.cs index f24094d..9f5a7d8 100644 --- a/SmartDots/Model/Smartdots/AgeReading/DtoAnalysis.cs +++ b/SmartDots/Model/Smartdots/AgeReading/DtoAnalysis.cs @@ -15,5 +15,6 @@ public class DtoAnalysis public bool ShowEdgeColumn { get; set; } public bool UseGrowthGraphAllSamples { get; set; } = true; + public bool AllowSetScale { get; set; } = true; } } diff --git a/SmartDots/Model/Smartdots/AgeReading/DtoAnnotation.cs b/SmartDots/Model/Smartdots/AgeReading/DtoAnnotation.cs index 49a6158..790c511 100644 --- a/SmartDots/Model/Smartdots/AgeReading/DtoAnnotation.cs +++ b/SmartDots/Model/Smartdots/AgeReading/DtoAnnotation.cs @@ -24,5 +24,6 @@ public class DtoAnnotation public virtual ICollection Dots { get; set; } public virtual ICollection Lines { get; set; } public List DynamicProperties { get; set; } + public string ExpertiseLevel { get; set; } } } diff --git a/SmartDots/Model/Smartdots/Maturity/DtoMaturityAnalysis.cs b/SmartDots/Model/Smartdots/Maturity/DtoMaturityAnalysis.cs index 7da9490..0a41f74 100644 --- a/SmartDots/Model/Smartdots/Maturity/DtoMaturityAnalysis.cs +++ b/SmartDots/Model/Smartdots/Maturity/DtoMaturityAnalysis.cs @@ -9,6 +9,6 @@ public class DtoMaturityAnalysis public string HeaderInfo { get; set; } public List MaturitySamples { get; set; } - + public bool AllowSetScale { get; set; } = true; } } diff --git a/SmartDots/Model/Smartdots/Maturity/DtoMaturityAnnotation.cs b/SmartDots/Model/Smartdots/Maturity/DtoMaturityAnnotation.cs index 321763c..0dc85f0 100644 --- a/SmartDots/Model/Smartdots/Maturity/DtoMaturityAnnotation.cs +++ b/SmartDots/Model/Smartdots/Maturity/DtoMaturityAnnotation.cs @@ -15,6 +15,7 @@ public partial class DtoMaturityAnnotation public Guid? MaturityQualityID { get; set; } public bool IsApproved { get; set; } public string Comments { get; set; } + public string ExpertiseLevel { get; set; } } } diff --git a/SmartDots/SmartDots.csproj b/SmartDots/SmartDots.csproj index 4d0bac4..2f2bea9 100644 --- a/SmartDots/SmartDots.csproj +++ b/SmartDots/SmartDots.csproj @@ -137,77 +137,75 @@ ..\packages\Accord.Statistics.3.8.0\lib\net45\Accord.Statistics.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Charts.v17.1.Core.dll - + False - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Data.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Mvvm.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Printing.v17.1.Core.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.RichEdit.v17.1.Export.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Charts.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Controls.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Core.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Docking.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Grid.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Grid.v17.1.Core.dll - - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.LayoutControl.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Printing.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Themes.HybridApp.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Themes.Office2016Colorful.v17.1.dll - + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Themes.Office2016White.v17.1.dll - + + + False + + + False + + + False + + + False + + + False + + False - ..\..\..\..\..\..\..\Program Files (x86)\DevExpress 17.1\Components\Bin\Framework\DevExpress.Xpf.Themes.Seven.v17.1.dll ..\packages\IronOcr.4.4.0\lib\net40\IronOcr.dll @@ -278,6 +276,7 @@ App.xaml + WaitSplashScreen.xaml @@ -934,4 +933,7 @@ --> + + + \ No newline at end of file diff --git a/SmartDots/SmartDots.csproj.bak b/SmartDots/SmartDots.csproj.bak index c135cdb..aab3803 100644 --- a/SmartDots/SmartDots.csproj.bak +++ b/SmartDots/SmartDots.csproj.bak @@ -9,7 +9,7 @@ Properties SmartDots SmartDots - v4.5.2 + v4.8 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 @@ -18,11 +18,13 @@ SAK SAK SAK - false + true - \\clo.be\dfs\data\data_d1\software\smartdots\ + + + C:\Users\kdecoster\source\repos\ices-eg\SmartDots\SmartDots\publish\ true - Unc + Web true Foreground 7 @@ -30,14 +32,17 @@ false true true + https://raw.githubusercontent.com/ices-eg/SmartDots/master/SmartDots/publish/ + https://raw.githubusercontent.com/ices-eg/SmartDots/master/SmartDots/publish/ SmartDots ILVO - 1.3.0.0 + 3.0.0.8 + true publish.htm false true - 19 - 1.3.0.%2a + 3 + 4.1.0.%2a false true true @@ -66,10 +71,11 @@ false - 691950898E1A9FA1C2BEE0327AEAA135DFE311E6 + CA6424085964A8D4E32915EBF20679BF1B867200 - OtlManager2_TemporaryKey.pfx + + true @@ -109,36 +115,123 @@ true + + false + + + http://timestamp.digicert.com + - - ..\packages\AForge.Imaging.2.2.5\lib\AForge.Imaging.dll - True + + ..\packages\Accord.3.8.0\lib\net45\Accord.dll - - ..\packages\AForge.Math.2.2.5\lib\AForge.Math.dll - True + + ..\packages\Accord.Imaging.3.8.0\lib\net45\Accord.Imaging.dll + + + ..\packages\Accord.Math.3.8.0\lib\net45\Accord.Math.dll - + + ..\packages\Accord.Math.3.8.0\lib\net45\Accord.Math.Core.dll + + + ..\packages\Accord.Statistics.3.8.0\lib\net45\Accord.Statistics.dll + + False + - - - True + + False + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + + False + + + + False + + + + False + + + + False + + + + False + + + + False + + + + ..\packages\IronOcr.4.4.0\lib\net40\IronOcr.dll - - - - - - - - - - - - - - True @@ -157,6 +250,7 @@ True + True @@ -187,10 +281,6 @@ 4.0 True - - ..\packages\Tesseract.3.0.2.0\lib\net451\Tesseract.dll - True - True @@ -215,13 +305,18 @@ SmartdotsSplashScreen.xaml + + + + + @@ -232,36 +327,99 @@ + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True True Reference.svcmap + + + + + + + + + + + + + + + + + + + + + AgeReadingKeyMappingView.xaml + AgeReadingSampleView.xaml @@ -274,66 +432,106 @@ SelectAnalysisDialog.xaml + + LarvaeAllAnnotationView.xaml + + + LarvaeEditorView.xaml + + + LarvaeFileView.xaml + + + LarvaeOwnAnnotationView.xaml + + + LarvaeSampleView.xaml + + + LarvaeStatusbarView.xaml + + + LarvaeView.xaml + MainWindow.xaml + + MaturityAllAnnotationView.xaml + + + MaturityEditorView.xaml + + + MaturityFileView.xaml + + + MaturityOwnAnnotationView.xaml + + + MaturitySampleView.xaml + + + MaturityStatusbarView.xaml + + + MaturityView.xaml + ServerSelectionView.xaml + + AboutWindow.xaml + + + DropDownWindowButton.xaml + SDButton.xaml + + SDFullDropDownButton.xaml + WindowsButton.xaml - - - - - Always - - + Always - + Always + + + + + + + + + + + + + + + + + Always - - Always - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - + + + + + + + + Designer MSBuild:Compile @@ -346,10 +544,18 @@ Designer MSBuild:Compile + + MSBuild:Compile + Designer + Designer MSBuild:Compile + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -385,7 +591,6 @@ - @@ -460,18 +665,86 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + MSBuild:Compile Designer + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + MSBuild:Compile Designer + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + Designer MSBuild:Compile + + MSBuild:Compile + Designer + Designer MSBuild:Compile @@ -498,14 +771,34 @@ curvePanel.cs + Designer + + + GraphViewer.cs + Designer + + + InteractiveGraphViewer.cs + + + LegendControl.cs + + + LegendLabel.cs + + + ScaledViewerBase.cs + SettingsSingleFileGenerator Settings.Designer.cs - + + Designer + Designer @@ -521,6 +814,7 @@ Reference.svcmap + @@ -561,9 +855,9 @@ - + False - Microsoft .NET Framework 4.6.1 %28x86 and x64%29 + Microsoft .NET Framework 4.8 %28x86 and x64%29 true @@ -575,18 +869,6 @@ - - Always - - - Always - - - Always - - - Always - WCF Proxy Generator Reference.cs @@ -616,6 +898,16 @@ + + False + + + + + Include + True + File + False @@ -626,6 +918,16 @@ True File + + False + + + + + Include + True + File + @@ -633,8 +935,18 @@ - + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + @@ -57,6 +58,9 @@ + + + @@ -71,6 +75,7 @@ + @@ -90,18 +95,19 @@ - - + + + - + - + @@ -190,7 +196,7 @@ - +