public AdvancedCarnassialOptions(CarnassialState state, MarkableCanvas markableCanvas, Window owner) { this.InitializeComponent(); this.Owner = owner; this.carnassialState = state; this.markableCanvas = markableCanvas; // Throttles this.ImageRendersPerSecond.Minimum = Constant.ThrottleValues.DesiredMaximumImageRendersPerSecondLowerBound; this.ImageRendersPerSecond.Maximum = Constant.ThrottleValues.DesiredMaximumImageRendersPerSecondUpperBound; this.ImageRendersPerSecond.Value = this.carnassialState.Throttles.DesiredImageRendersPerSecond; this.ImageRendersPerSecond.ValueChanged += this.ImageRendersPerSecond_ValueChanged; this.ImageRendersPerSecond.ToolTip = this.carnassialState.Throttles.DesiredImageRendersPerSecond; // The Max Zoom Value this.MaxZoom.Value = this.markableCanvas.ZoomMaximum; this.MaxZoom.ToolTip = this.markableCanvas.ZoomMaximum; this.MaxZoom.Maximum = Constant.MarkableCanvas.ImageZoomMaximumRangeMaximum; this.MaxZoom.Minimum = Constant.MarkableCanvas.ImageZoomMaximumRangeMinimum; // Image Differencing Thresholds this.DifferenceThreshold.Value = this.carnassialState.DifferenceThreshold; this.DifferenceThreshold.ToolTip = this.carnassialState.DifferenceThreshold; this.DifferenceThreshold.Maximum = Constant.Images.DifferenceThresholdMax; this.DifferenceThreshold.Minimum = Constant.Images.DifferenceThresholdMin; }
public CarnassialWindow() { AppDomain.CurrentDomain.UnhandledException += this.OnUnhandledException; this.InitializeComponent(); this.MarkableCanvas.MouseEnter += new MouseEventHandler(this.MarkableCanvas_MouseEnter); this.MarkableCanvas.PreviewMouseDown += new MouseButtonEventHandler(this.MarkableCanvas_PreviewMouseDown); this.MarkableCanvas.MarkerEvent += new EventHandler<MarkerEventArgs>(this.MarkableCanvas_RaiseMarkerEvent); this.speechSynthesizer = new SpeechSynthesizer(); this.state = new CarnassialState(); this.Title = Constant.MainWindowBaseTitle; // recall user's state from prior sessions this.state.ReadFromRegistry(); this.MenuOptionsAudioFeedback.IsChecked = this.state.AudioFeedback; this.MenuOptionsEnableCsvImportPrompt.IsChecked = !this.state.SuppressSpreadsheetImportPrompt; this.MenuOptionsOrderFilesByDateTime.IsChecked = this.state.OrderFilesByDateTime; this.MenuOptionsSkipDarkFileCheck.IsChecked = this.state.SkipDarkImagesCheck; // timer callback so the display will update to the current slider position when the user pauses whilst dragging the slider this.timerFileNavigatorSlider = new DispatcherTimer(); this.timerFileNavigatorSlider.Interval = TimeSpan.FromSeconds(1.0 / Constant.ThrottleValues.DesiredMaximumImageRendersPerSecondUpperBound); this.timerFileNavigatorSlider.Tick += this.FileNavigatorSlider_TimerTick; // populate lists of menu items for (int analysisSlot = 0; analysisSlot < Constant.AnalysisSlots; ++analysisSlot) { int displaySlot = analysisSlot + 1; MenuItem copyToAnalysisSlot = new MenuItem(); copyToAnalysisSlot.Click += this.MenuEditCopyValuesToAnalysis_Click; copyToAnalysisSlot.Header = String.Format("Analysis _{0}", displaySlot); copyToAnalysisSlot.Icon = new Image() { Source = Constant.Images.Copy.Value }; copyToAnalysisSlot.InputGestureText = String.Format("Ctrl+{0}", displaySlot); copyToAnalysisSlot.Tag = analysisSlot; copyToAnalysisSlot.ToolTip = String.Format("Copy data entered for the current file analysis number {0}.", displaySlot); this.MenuEditCopyValuesToAnalysis.Items.Add(copyToAnalysisSlot); MenuItem pasteFromAnalysisSlot = new MenuItem(); pasteFromAnalysisSlot.Click += this.MenuEditPasteFromAnalysis_Click; pasteFromAnalysisSlot.Icon = new Image() { Source = Constant.Images.Paste.Value }; pasteFromAnalysisSlot.InputGestureText = String.Format("{0}", displaySlot); pasteFromAnalysisSlot.IsEnabled = false; pasteFromAnalysisSlot.Header = String.Format("Analysis _{0}", displaySlot); pasteFromAnalysisSlot.Tag = analysisSlot; pasteFromAnalysisSlot.ToolTip = String.Format("Apply data in analysis {0}.", displaySlot); this.MenuEditPasteValuesFromAnalysis.Items.Add(pasteFromAnalysisSlot); } this.MenuFileRecentImageSets_Refresh(); this.Top = this.state.CarnassialWindowPosition.Y; this.Left = this.state.CarnassialWindowPosition.X; this.Height = this.state.CarnassialWindowPosition.Height; this.Width = this.state.CarnassialWindowPosition.Width; Utilities.TryFitWindowInWorkingArea(this); }
public void CarnassialProductionKeysRead() { CarnassialState state = new CarnassialState(); state.ReadFromRegistry(); }