--- source_files: - Common/DTS.CommonCore/Interface/DTS.Viewer/MainView/IMainView.cs - Common/DTS.CommonCore/Interface/DTS.Viewer/MainView/IViewerMainView.cs - Common/DTS.CommonCore/Interface/DTS.Viewer/MainView/IViewerMainViewGrid.cs - Common/DTS.CommonCore/Interface/DTS.Viewer/MainView/IMainViewModel.cs - Common/DTS.CommonCore/Interface/DTS.Viewer/MainView/IViewerMainViewModel.cs generated_at: "2026-04-16T12:24:51.311433+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "95ec9f6198f586ac" --- # Documentation: DTS.Common.Interface MainView Interfaces ## 1. Purpose This module defines the core view and ViewModel interfaces for the main window of a DTS Viewer application. It establishes the contract for a modular, region-based UI layout using what appears to be a MVVM (Model-View-ViewModel) architecture. The interfaces support multiple UI regions (navigation, graphs, tests, legends, diagnostics, statistics, cursor, and property panels) and provide keyboard interaction handling, zoom control, and configuration management for a data visualization and analysis tool. --- ## 2. Public Interface ### View Interfaces #### `IMainView` ```csharp public interface IMainView : IBaseView { } ``` Marker interface for a main view component. Extends `IBaseView`. No members defined. #### `IViewerMainView` ```csharp public interface IViewerMainView : IBaseView { } ``` Marker interface for a viewer main view component. Extends `IBaseView`. No members defined. #### `IViewerMainViewGrid` ```csharp public interface IViewerMainViewGrid : IBaseView { } ``` Marker interface for a viewer main view grid component. Extends `IBaseView`. No members defined. --- ### ViewModel Interfaces #### `IMainViewModel` ```csharp public interface IMainViewModel : IBaseViewModel ``` | Member | Type | Access | Description | |--------|------|--------|-------------| | `View` | `IBaseView` | `get` | Gets the Main View instance | | `ContextNavigationRegion` | `object` | `get; set` | Navigation region context | | `ContextGraphRegion` | `object` | `get; set` | Graph region context | | `ContextTestsRegion` | `object` | `get; set` | Tests region context | | `ContextGraphsRegion` | `object` | `get; set` | Graphs region context | | `ContextLegendRegion` | `object` | `get; set` | Legend region context | | `ContextDiagRegion` | `object` | `get; set` | Diagnostics region context | | `ContextStatsRegion` | `object` | `get; set` | Statistics region context | | `ContextCursorRegion` | `object` | `get; set` | Cursor region context | | `ContextPropertyRegion` | `object` | `get; set` | Property region context | | `GetRegions()` | `List` | method | Returns a list of all region FrameworkElements | --- #### `IViewerMainViewModel` ```csharp public interface IViewerMainViewModel : IBaseViewModel, ISelectedDataViewModel ``` | Member | Type | Access | Description | |--------|------|--------|-------------| | `View` | `IBaseView` | `get; set` | Gets or sets the Main View instance | | `Standalone` | `bool` | `get; set` | Indicates if viewer is running in standalone mode | | `ContextNavigationRegion` | `object` | `get; set` | Navigation region context | | `ContextGraphRegion` | `object` | `get; set` | Graph region context | | `ContextTestsRegion` | `object` | `get; set` | Tests region context | | `ContextGraphsRegion` | `object` | `get; set` | Graphs region context | | `ContextLegendRegion` | `object` | `get; set` | Legend region context | | `ContextDiagRegion` | `object` | `get; set` | Diagnostics region context | | `ContextStatsRegion` | `object` | `get; set` | Statistics region context | | `ContextCursorRegion` | `object` | `get; set` | Cursor region context | | `ContextPropertyRegion` | `object` | `get; set` | Property region context | | `GetRegions()` | `List` | method | Returns a list of all region FrameworkElements | | `ConfigPath` | `string` | `get; set` | Path to configuration file | | `DoesUserHaveEditPermission` | `bool` | `get; set` | User edit permission flag | | `ZoomReset()` | `void` | method | Resets zoom to default state | | `LeftKeyPress()` | `void` | method | Handles left arrow key press notification | | `RightKeyPress()` | `void` | method | Handles right arrow key press notification | | `ChannelCodeViewMode` | `Common.Enums.IsoViewMode` | `get; set` | Channel code view mode setting | | `CalibrationBehaviorSetting` | `Common.Enums.Sensors.CalibrationBehaviors` | `get; set` | Calibration behavior configuration | | `CalibrationBehaviorSettableInViewer` | `bool` | `get; set` | Whether calibration behavior can be set in viewer | | `SettingsVisibility` | `Visibility` | `get` | Visibility state of settings UI | --- ## 3. Invariants 1. **Namespace Mismatch**: All interfaces are declared in namespace `DTS.Common.Interface` despite file paths suggesting `DTS.Viewer.MainView` sub-namespaces. The ReSharper disable comments indicate this is intentional. 2. **Region Context Types**: All `Context*Region` properties are typed as `object`, suggesting late binding or multiple possible region types. Implementations must handle assignment of appropriate region types. 3. **View Property Mutability**: `IMainViewModel.View` is read-only (`get`), while `IViewerMainViewModel.View` is read-write (`get; set`). Implementations must respect this difference. 4. **Inheritance Chain**: - All view interfaces must implement `IBaseView` - `IMainViewModel` must implement `IBaseViewModel` - `IViewerMainViewModel` must implement both `IBaseViewModel` and `ISelectedDataViewModel` 5. **GetRegions() Contract**: Must return a non-null `List` containing the UI regions. --- ## 4. Dependencies ### External Dependencies (Imports) | Namespace | Usage | |-----------|-------| | `DTS.Common.Base` | `IBaseView`, `IBaseViewModel`, `ISelectedDataViewModel` base types | | `System.Collections.Generic` | `List` for `GetRegions()` return type | | `System.Windows` | `FrameworkElement`, `Visibility` types | | `Common.Enums` | `IsoViewMode` enum | | `Common.Enums.Sensors` | `CalibrationBehaviors` enum | ### Downstream Dependencies **Unclear from source alone** - These are interface definitions; concrete implementations and consumers are not present in the provided files. --- ## 5. Gotchas 1. **Namespace Inconsistency**: The file paths suggest namespaces like `DTS.Viewer.MainView`, but all interfaces are declared in `DTS.Common.Interface`. The `// ReSharper disable CheckNamespace` directives indicate this mismatch is known and suppressed. New developers should be aware that file location does not match declared namespace. 2. **View Property Asymmetry**: `IMainViewModel.View` is read-only while `IViewerMainViewModel.View` is read-write. This inconsistency could cause confusion when implementing or consuming these interfaces. 3. **Magic Object Types**: All region context properties use `object` type rather than specific region interfaces. The actual types expected/returned are unclear from the source alone. 4. **Duplicate Region Definitions**: Both `IMainViewModel` and `IViewerMainViewModel` define identical region properties. This suggests either parallel evolution or a design that could benefit from a shared base interface for region management. 5. **Partial Enum Paths**: The types `Common.Enums.IsoViewMode` and `Common.Enums.Sensors.CalibrationBehaviors` are referenced but their definitions are not provided, making their exact values and usage unclear from this source alone.