Added Theme Editor window and added to Tools menu
This commit is contained in:
@@ -23,7 +23,7 @@ namespace Filtration
|
||||
|
||||
_container.Kernel.ComponentModelBuilder.RemoveContributor(propInjector);
|
||||
|
||||
_container.Install(FromAssembly.This());
|
||||
_container.Install(FromAssembly.InThisApplication());
|
||||
|
||||
var mainWindow = _container.Resolve<IMainWindow>();
|
||||
mainWindow.Show();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
using Filtration.ViewModels;
|
||||
using Filtration.Interface;
|
||||
|
||||
namespace Filtration.Converters
|
||||
{
|
||||
|
||||
@@ -156,7 +156,6 @@
|
||||
<Compile Include="ViewModels\SettingsWindowViewModel.cs" />
|
||||
<Compile Include="ViewModels\ToolPanes\BlockGroupBrowserViewModel.cs" />
|
||||
<Compile Include="ViewModels\FiltrationViewModelBase.cs" />
|
||||
<Compile Include="ViewModels\IDocument.cs" />
|
||||
<Compile Include="ViewModels\IItemFilterScriptViewModelFactory.cs" />
|
||||
<Compile Include="ViewModels\IItemFilterBlockViewModelFactory.cs" />
|
||||
<Compile Include="ViewModels\ItemFilterBlockGroupViewModel.cs" />
|
||||
@@ -421,10 +420,18 @@
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Filtration.Interface\Filtration.Interface.csproj">
|
||||
<Project>{0f333344-7695-47b2-b0e6-172e4de74819}</Project>
|
||||
<Name>Filtration.Interface</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj">
|
||||
<Project>{4aac3beb-1dc1-483e-9d11-0e9334e80227}</Project>
|
||||
<Name>Filtration.ObjectModel</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Filtration.ThemeEditor\Filtration.ThemeEditor.csproj">
|
||||
<Project>{41b8f5c2-65aa-42f0-a20b-6f95b13a9f48}</Project>
|
||||
<Name>Filtration.ThemeEditor</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using Filtration.Interface;
|
||||
using Filtration.ViewModels.ToolPanes;
|
||||
using GalaSoft.MvvmLight.Messaging;
|
||||
|
||||
@@ -10,6 +11,7 @@ namespace Filtration.ViewModels
|
||||
{
|
||||
event EventHandler ActiveDocumentChanged;
|
||||
IDocument ActiveDocument { get; set; }
|
||||
ReadOnlyObservableCollection<IDocument> OpenDocuments { get; }
|
||||
IItemFilterScriptViewModel ActiveScriptViewModel { get; }
|
||||
ISectionBrowserViewModel SectionBrowserViewModel { get; }
|
||||
IBlockGroupBrowserViewModel BlockGroupBrowserViewModel { get; }
|
||||
@@ -28,6 +30,7 @@ namespace Filtration.ViewModels
|
||||
private IDocument _activeDocument;
|
||||
private IItemFilterScriptViewModel _activeScriptViewModel;
|
||||
private readonly ObservableCollection<IDocument> _openDocuments;
|
||||
private readonly ReadOnlyObservableCollection<IDocument> _readOnlyOpenDocuments;
|
||||
|
||||
public AvalonDockWorkspaceViewModel(ISectionBrowserViewModel sectionBrowserViewModel,
|
||||
IBlockGroupBrowserViewModel blockGroupBrowserViewModel,
|
||||
@@ -43,14 +46,15 @@ namespace Filtration.ViewModels
|
||||
_blockOutputPreviewViewModel.Initialise(this);
|
||||
|
||||
_openDocuments = new ObservableCollection<IDocument> {startPageViewModel};
|
||||
_readOnlyOpenDocuments = new ReadOnlyObservableCollection<IDocument>(_openDocuments);
|
||||
ActiveDocument = startPageViewModel;
|
||||
}
|
||||
|
||||
public event EventHandler ActiveDocumentChanged;
|
||||
|
||||
public ObservableCollection<IDocument> OpenDocuments
|
||||
public ReadOnlyObservableCollection<IDocument> OpenDocuments
|
||||
{
|
||||
get { return _openDocuments; }
|
||||
get { return _readOnlyOpenDocuments; }
|
||||
}
|
||||
|
||||
public IDocument ActiveDocument
|
||||
@@ -121,7 +125,7 @@ namespace Filtration.ViewModels
|
||||
_activeScriptViewModel = (IItemFilterScriptViewModel) document;
|
||||
}
|
||||
|
||||
OpenDocuments.Add(document);
|
||||
_openDocuments.Add(document);
|
||||
ActiveDocument = document;
|
||||
}
|
||||
|
||||
@@ -139,7 +143,7 @@ namespace Filtration.ViewModels
|
||||
_blockOutputPreviewViewModel.ClearDown();
|
||||
}
|
||||
|
||||
OpenDocuments.Remove(document);
|
||||
_openDocuments.Remove(document);
|
||||
}
|
||||
|
||||
public void SwitchActiveDocument(IDocument document)
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace Filtration.ViewModels
|
||||
{
|
||||
interface IDocument
|
||||
{
|
||||
bool IsScript { get; }
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ using System.Windows;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Forms;
|
||||
using Castle.Core.Internal;
|
||||
using Filtration.Interface;
|
||||
using Filtration.ObjectModel;
|
||||
using Filtration.Services;
|
||||
using Filtration.Translators;
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Windows.Forms;
|
||||
using Filtration.Interface;
|
||||
using Filtration.Repositories;
|
||||
using Filtration.ThemeEditor.ViewModels;
|
||||
using Filtration.Translators;
|
||||
using Filtration.Views;
|
||||
using GalaSoft.MvvmLight.CommandWpf;
|
||||
@@ -25,6 +27,7 @@ namespace Filtration.ViewModels
|
||||
private readonly IReplaceColorsViewModel _replaceColorsViewModel;
|
||||
private readonly IAvalonDockWorkspaceViewModel _avalonDockWorkspaceViewModel;
|
||||
private readonly ISettingsWindowViewModel _settingsWindowViewModel;
|
||||
private readonly IThemeEditorViewModel _themeEditorViewModel;
|
||||
|
||||
private IDocument _activeDocument;
|
||||
|
||||
@@ -32,16 +35,19 @@ namespace Filtration.ViewModels
|
||||
IItemFilterScriptTranslator itemFilterScriptTranslator,
|
||||
IReplaceColorsViewModel replaceColorsViewModel,
|
||||
IAvalonDockWorkspaceViewModel avalonDockWorkspaceViewModel,
|
||||
ISettingsWindowViewModel settingsWindowViewModel)
|
||||
ISettingsWindowViewModel settingsWindowViewModel,
|
||||
IThemeEditorViewModel themeEditorViewModel)
|
||||
{
|
||||
_itemFilterScriptRepository = itemFilterScriptRepository;
|
||||
_itemFilterScriptTranslator = itemFilterScriptTranslator;
|
||||
_replaceColorsViewModel = replaceColorsViewModel;
|
||||
_avalonDockWorkspaceViewModel = avalonDockWorkspaceViewModel;
|
||||
_settingsWindowViewModel = settingsWindowViewModel;
|
||||
_themeEditorViewModel = themeEditorViewModel;
|
||||
|
||||
OpenAboutWindowCommand = new RelayCommand(OnOpenAboutWindowCommand);
|
||||
OpenSettingsWindowCommand = new RelayCommand(OnOpenSettingsWindowCommand);
|
||||
OpenThemeEditorCommand = new RelayCommand(OnOpenThemeEditorCommand);
|
||||
OpenScriptCommand = new RelayCommand(OnOpenScriptCommand);
|
||||
SaveScriptCommand = new RelayCommand(OnSaveScriptCommand, ActiveDocumentIsScript);
|
||||
SaveScriptAsCommand = new RelayCommand(OnSaveScriptAsCommand, ActiveDocumentIsScript);
|
||||
@@ -100,6 +106,7 @@ namespace Filtration.ViewModels
|
||||
public RelayCommand CloseScriptCommand { get; private set; }
|
||||
public RelayCommand OpenAboutWindowCommand { get; private set; }
|
||||
public RelayCommand OpenSettingsWindowCommand { get; private set; }
|
||||
public RelayCommand OpenThemeEditorCommand { get; private set; }
|
||||
public RelayCommand ReplaceColorsCommand { get; private set; }
|
||||
|
||||
public IAvalonDockWorkspaceViewModel AvalonDockWorkspaceViewModel
|
||||
@@ -122,6 +129,18 @@ namespace Filtration.ViewModels
|
||||
return _activeDocument != null && _activeDocument.IsScript;
|
||||
}
|
||||
|
||||
private void OnOpenThemeEditorCommand()
|
||||
{
|
||||
if (AvalonDockWorkspaceViewModel.OpenDocuments.Contains(_themeEditorViewModel))
|
||||
{
|
||||
AvalonDockWorkspaceViewModel.SwitchActiveDocument(_themeEditorViewModel);
|
||||
}
|
||||
else
|
||||
{
|
||||
AvalonDockWorkspaceViewModel.AddDocument(_themeEditorViewModel);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnOpenAboutWindowCommand()
|
||||
{
|
||||
var aboutWindow = new AboutWindow();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Filtration.ViewModels.ToolPanes;
|
||||
using Filtration.Interface;
|
||||
using Filtration.ViewModels.ToolPanes;
|
||||
using GalaSoft.MvvmLight.CommandWpf;
|
||||
using GalaSoft.MvvmLight.Messaging;
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
xmlns:toolPanes="clr-namespace:Filtration.Views.ToolPanes"
|
||||
xmlns:converters="clr-namespace:Filtration.Converters"
|
||||
xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
|
||||
xmlns:themeEditorViews="clr-namespace:Filtration.ThemeEditor.Views;assembly=Filtration.ThemeEditor"
|
||||
mc:Ignorable="d"
|
||||
d:DataContext="{d:DesignInstance d:Type=viewModels:AvalonDockWorkspaceViewModel}"
|
||||
d:DesignHeight="300" d:DesignWidth="300">
|
||||
@@ -53,6 +54,11 @@
|
||||
<views:StartPageView DataContext="{Binding}" />
|
||||
</DataTemplate>
|
||||
</viewsAvalonDock:PanesTemplateSelector.StartPageTemplate>
|
||||
<viewsAvalonDock:PanesTemplateSelector.ThemeEditorTemplate>
|
||||
<DataTemplate>
|
||||
<themeEditorViews:ThemeEditorView DataContext="{Binding}" />
|
||||
</DataTemplate>
|
||||
</viewsAvalonDock:PanesTemplateSelector.ThemeEditorTemplate>
|
||||
</viewsAvalonDock:PanesTemplateSelector>
|
||||
</xcad:DockingManager.LayoutItemTemplateSelector>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Filtration.ViewModels;
|
||||
using Filtration.Interface;
|
||||
using Filtration.ViewModels.ToolPanes;
|
||||
|
||||
namespace Filtration.Views.AvalonDock
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Filtration.ThemeEditor.ViewModels;
|
||||
using Filtration.ViewModels;
|
||||
using Filtration.ViewModels.ToolPanes;
|
||||
using Xceed.Wpf.AvalonDock.Layout;
|
||||
@@ -13,6 +14,7 @@ namespace Filtration.Views.AvalonDock
|
||||
public DataTemplate SectionBrowserTemplate { get; set; }
|
||||
public DataTemplate BlockOutputPreviewTemplate { get; set; }
|
||||
public DataTemplate StartPageTemplate { get; set; }
|
||||
public DataTemplate ThemeEditorTemplate { get; set; }
|
||||
|
||||
public override DataTemplate SelectTemplate(object item, DependencyObject container)
|
||||
{
|
||||
@@ -23,6 +25,11 @@ namespace Filtration.Views.AvalonDock
|
||||
return ItemFilterScriptTemplate;
|
||||
}
|
||||
|
||||
if (item is ThemeEditorViewModel)
|
||||
{
|
||||
return ThemeEditorTemplate;
|
||||
}
|
||||
|
||||
if (item is SectionBrowserViewModel)
|
||||
{
|
||||
return SectionBrowserTemplate;
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Tools">
|
||||
<MenuItem Header="_Replace Colors" Command="{Binding ReplaceColorsCommand}" Icon="{StaticResource ReplaceColorsIcon}" />
|
||||
<MenuItem Header="_Theme Editor" Command="{Binding OpenThemeEditorCommand}" Icon="{StaticResource ReplaceColorsIcon}" />
|
||||
<MenuItem Header="_Settings" Command="{Binding OpenSettingsWindowCommand}" />
|
||||
</MenuItem>
|
||||
<MenuItem Header="_Help">
|
||||
|
||||
Reference in New Issue
Block a user