diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-02-13 19:41:19 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-02-13 19:41:19 +0200 |
| commit | ee88fc31d9b1b8f4782c7103d91de2d1b11c211b (patch) | |
| tree | fd988b09e9aea2cd0ccc6a6174d61d4e7811def7 /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common | |
| parent | 39d2d7ff77e3ac949db6d9adde861275401e5e57 (diff) | |
| download | Tango-ee88fc31d9b1b8f4782c7103d91de2d1b11c211b.tar.gz Tango-ee88fc31d9b1b8f4782c7103d91de2d1b11c211b.zip | |
Implemented StudioModuleBase.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common')
3 files changed, 100 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Modules/IStudioModuleLoader.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Modules/IStudioModuleLoader.cs index cb9f1122f..1fd72c53a 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Modules/IStudioModuleLoader.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Modules/IStudioModuleLoader.cs @@ -23,6 +23,13 @@ namespace Tango.MachineStudio.Common.Modules ObservableCollection<IStudioModule> UserModules { get; } /// <summary> + /// Gets the studio module of type T if loaded. + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + T GetStudioModule<T>() where T : IStudioModule; + + /// <summary> /// Loads all available Machine Studio modules. /// </summary> void LoadModules(); diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioModuleBase.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioModuleBase.cs new file mode 100644 index 000000000..a773adf8b --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioModuleBase.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Media.Imaging; +using Tango.Integration.Observables; + +namespace Tango.MachineStudio.Common +{ + /// <summary> + /// Represents a base class for studio modules. + /// </summary> + /// <seealso cref="Tango.MachineStudio.Common.IStudioModule" /> + public abstract class StudioModuleBase : IStudioModule + { + private bool _isInitialized; + private bool _isLoaded; + + /// <summary> + /// Occurs when the user has navigated into or out of this module. + /// </summary> + public event EventHandler<bool> IsLoadedChanged; + + /// <summary> + /// Gets the module name. + /// </summary> + public abstract string Name { get; } + + /// <summary> + /// Gets the module description. + /// </summary> + public abstract string Description { get; } + + /// <summary> + /// Gets the module cover image. + /// </summary> + public abstract BitmapSource Image { get; } + + /// <summary> + /// Gets the module entry point view. + /// </summary> + public abstract FrameworkElement MainView { get; } + + /// <summary> + /// Gets the permission required to see and load this module. + /// </summary> + public abstract Permissions Permission { get; } + + /// <summary> + /// Gets a value indicating whether this module has been initialized. + /// </summary> + public bool IsInitialized + { + get + { + return _isInitialized; + } + protected set + { + _isInitialized = value; + } + } + + /// <summary> + /// Sets a value indicating whether this module is loaded. + /// </summary> + public bool IsLoaded + { + get + { + return _isLoaded; + } + set + { + _isLoaded = value; + IsLoadedChanged?.Invoke(this, value); + } + } + + /// <summary> + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// </summary> + public abstract void Dispose(); + + /// <summary> + /// Perform any operations required to initialize this module. + /// </summary> + public abstract void Initialize(); + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj index 5d5df59b7..20079ff68 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj @@ -92,6 +92,7 @@ <Compile Include="ExtensionMethods\IStudioMessageExtensions.cs" /> <Compile Include="Messages\IStudioMessage.cs" /> <Compile Include="Notifications\TaskItem.cs" /> + <Compile Include="StudioModuleBase.cs" /> <Compile Include="ValidationRules\Required.cs" /> <Compile Include="Video\DefaultVideoCaptureProvider.cs" /> <Compile Include="Video\IVideoCaptureProvider.cs" /> |
