Added Theme Editor window and added to Tools menu

This commit is contained in:
Ben
2015-06-26 10:17:32 +01:00
parent cc05945108
commit aa5cedcbba
22 changed files with 199 additions and 17 deletions

View File

@@ -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();

View File

@@ -1,7 +1,7 @@
using System;
using System.Globalization;
using System.Windows.Data;
using Filtration.ViewModels;
using Filtration.Interface;
namespace Filtration.Converters
{

View File

@@ -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" />

View File

@@ -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)

View File

@@ -1,7 +0,0 @@
namespace Filtration.ViewModels
{
interface IDocument
{
bool IsScript { get; }
}
}

View File

@@ -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;

View File

@@ -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();

View File

@@ -1,4 +1,5 @@
using Filtration.ViewModels.ToolPanes;
using Filtration.Interface;
using Filtration.ViewModels.ToolPanes;
using GalaSoft.MvvmLight.CommandWpf;
using GalaSoft.MvvmLight.Messaging;

View File

@@ -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>

View File

@@ -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

View File

@@ -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;

View File

@@ -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">