UI changes, added commands
@ -29,7 +29,7 @@ namespace RainmeterEditor.Documents.Text
|
|||||||
Category = Resources.Strings.Category_Utility,
|
Category = Resources.Strings.Category_Utility,
|
||||||
DefaultExtension = ".txt",
|
DefaultExtension = ".txt",
|
||||||
Description = Resources.Strings.DocumentFormat_TextFile_Description,
|
Description = Resources.Strings.DocumentFormat_TextFile_Description,
|
||||||
Icon = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Resources/Icons/text-x-generic-32.png", UriKind.RelativeOrAbsolute)),
|
Icon = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Resources/Icons/text_file_32.png", UriKind.RelativeOrAbsolute)),
|
||||||
Factory = this
|
Factory = this
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -98,6 +98,7 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Model\IDocumentStorage.cs" />
|
<Compile Include="Model\IDocumentStorage.cs" />
|
||||||
<Compile Include="Storage\SkinDirectory.cs" />
|
<Compile Include="Storage\SkinDirectory.cs" />
|
||||||
|
<Compile Include="UI\Command.cs" />
|
||||||
<Compile Include="UI\Dialogs\CreateDocumentDialog.xaml.cs">
|
<Compile Include="UI\Dialogs\CreateDocumentDialog.xaml.cs">
|
||||||
<DependentUpon>CreateDocumentDialog.xaml</DependentUpon>
|
<DependentUpon>CreateDocumentDialog.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@ -175,14 +176,28 @@
|
|||||||
<AppDesigner Include="Properties\" />
|
<AppDesigner Include="Properties\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Resource Include="Resources\Icons\page_white_text.png" />
|
<Resource Include="Resources\Icons\text_file_32.png" />
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Resource Include="Resources\Icons\text-x-generic-32.png" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<SplashScreen Include="Resources\splash.png" />
|
<SplashScreen Include="Resources\splash.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\Icons\arrow_left_16.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\Icons\arrow_right_16.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\Icons\arrow_backward_16.png" />
|
||||||
|
<Resource Include="Resources\Icons\arrow_forward_16.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\Icons\page_white_star_16.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\Icons\project_16.png" />
|
||||||
|
<Resource Include="Resources\Icons\project_star_16.png" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
BIN
RainmeterEditor/Resources/Icons/arrow_backward_16.png
Normal file
After Width: | Height: | Size: 343 B |
BIN
RainmeterEditor/Resources/Icons/arrow_forward_16.png
Normal file
After Width: | Height: | Size: 375 B |
BIN
RainmeterEditor/Resources/Icons/arrow_left_16.png
Normal file
After Width: | Height: | Size: 345 B |
BIN
RainmeterEditor/Resources/Icons/arrow_right_16.png
Normal file
After Width: | Height: | Size: 349 B |
BIN
RainmeterEditor/Resources/Icons/page_white_star_16.png
Normal file
After Width: | Height: | Size: 565 B |
Before Width: | Height: | Size: 342 B |
BIN
RainmeterEditor/Resources/Icons/project_16.png
Normal file
After Width: | Height: | Size: 724 B |
BIN
RainmeterEditor/Resources/Icons/project_star_16.png
Normal file
After Width: | Height: | Size: 742 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
18
RainmeterEditor/Resources/Strings.Designer.cs
generated
@ -69,6 +69,24 @@ namespace RainmeterEditor.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to New file....
|
||||||
|
/// </summary>
|
||||||
|
internal static string DocumentCreateCommand_DisplayText {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("DocumentCreateCommand_DisplayText", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Creates a new file.
|
||||||
|
/// </summary>
|
||||||
|
internal static string DocumentCreateCommand_ToolTip {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("DocumentCreateCommand_ToolTip", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Text Editor.
|
/// Looks up a localized string similar to Text Editor.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -120,6 +120,12 @@
|
|||||||
<data name="Category_Utility" xml:space="preserve">
|
<data name="Category_Utility" xml:space="preserve">
|
||||||
<value>Utility</value>
|
<value>Utility</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="DocumentCreateCommand_DisplayText" xml:space="preserve">
|
||||||
|
<value>New file...</value>
|
||||||
|
</data>
|
||||||
|
<data name="DocumentCreateCommand_ToolTip" xml:space="preserve">
|
||||||
|
<value>Creates a new file</value>
|
||||||
|
</data>
|
||||||
<data name="DocumentEditor_Text_Name" xml:space="preserve">
|
<data name="DocumentEditor_Text_Name" xml:space="preserve">
|
||||||
<value>Text Editor</value>
|
<value>Text Editor</value>
|
||||||
</data>
|
</data>
|
||||||
|
88
RainmeterEditor/UI/Command.cs
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
|
namespace RainmeterEditor.UI
|
||||||
|
{
|
||||||
|
public class Command : ICommand
|
||||||
|
{
|
||||||
|
#region Private members
|
||||||
|
|
||||||
|
private Action<object> _execute;
|
||||||
|
private Func<object, bool> _canExecute;
|
||||||
|
private Action _executeNoParam;
|
||||||
|
private Func<bool> _canExecuteNoParam;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Public properties
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string DisplayText { get; set; }
|
||||||
|
public string Tooltip { get; set; }
|
||||||
|
public ImageSource Icon { get; set; }
|
||||||
|
public KeyGesture Shortcut { get; set; }
|
||||||
|
|
||||||
|
public string ShortcutText
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string text = String.Empty;
|
||||||
|
|
||||||
|
if ((Shortcut.Modifiers & ModifierKeys.Windows) != 0)
|
||||||
|
text += "Win+";
|
||||||
|
|
||||||
|
if ((Shortcut.Modifiers & ModifierKeys.Control) != 0)
|
||||||
|
text += "Ctrl+";
|
||||||
|
|
||||||
|
if ((Shortcut.Modifiers & ModifierKeys.Alt) != 0)
|
||||||
|
text += "Alt+";
|
||||||
|
|
||||||
|
if ((Shortcut.Modifiers & ModifierKeys.Shift) != 0)
|
||||||
|
text += "Shift+";
|
||||||
|
|
||||||
|
text += Enum.GetName(typeof(Key), Shortcut.Key);
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public event EventHandler CanExecuteChanged;
|
||||||
|
|
||||||
|
public Command(string name = null, Action<object> execute = null, Func<object, bool> canExecute = null)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
_execute = execute;
|
||||||
|
_canExecute = canExecute;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Command(string name = null, Action execute = null, Func<bool> canExecute = null)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
_executeNoParam = execute;
|
||||||
|
_canExecuteNoParam = canExecute;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool CanExecute(object parameter)
|
||||||
|
{
|
||||||
|
if (_canExecute != null)
|
||||||
|
return _canExecute(parameter);
|
||||||
|
else if (_canExecuteNoParam != null)
|
||||||
|
return _canExecuteNoParam();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Execute(object parameter)
|
||||||
|
{
|
||||||
|
if (_execute != null)
|
||||||
|
_execute(parameter);
|
||||||
|
else if (_executeNoParam != null)
|
||||||
|
_executeNoParam();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,11 +7,19 @@ using RainmeterEditor.UI.Dialogs;
|
|||||||
using RainmeterEditor.Model.Events;
|
using RainmeterEditor.Model.Events;
|
||||||
using RainmeterEditor.Model;
|
using RainmeterEditor.Model;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
|
||||||
namespace RainmeterEditor.UI.Controller
|
namespace RainmeterEditor.UI.Controller
|
||||||
{
|
{
|
||||||
public class DocumentController
|
public class DocumentController
|
||||||
{
|
{
|
||||||
|
#region Commands
|
||||||
|
|
||||||
|
public Command DocumentCreateCommand { get; private set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
public event EventHandler<DocumentOpenedEventArgs> DocumentOpened
|
public event EventHandler<DocumentOpenedEventArgs> DocumentOpened
|
||||||
{
|
{
|
||||||
add
|
add
|
||||||
@ -23,19 +31,27 @@ namespace RainmeterEditor.UI.Controller
|
|||||||
DocumentManager.Instance.DocumentOpened -= value;
|
DocumentManager.Instance.DocumentOpened -= value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public event EventHandler DocumentClosed;
|
public event EventHandler DocumentClosed;
|
||||||
|
|
||||||
|
public Window OwnerWindow { get; set; }
|
||||||
|
|
||||||
public DocumentController()
|
public DocumentController()
|
||||||
{
|
{
|
||||||
|
DocumentCreateCommand = new Command("DocumentCreateCommand", () => CreateWindow())
|
||||||
|
{
|
||||||
|
DisplayText = Resources.Strings.DocumentCreateCommand_DisplayText,
|
||||||
|
Tooltip = Resources.Strings.DocumentCreateCommand_ToolTip,
|
||||||
|
Icon = new BitmapImage(new Uri("/Resources/Icons/page_white_star_16.png", UriKind.RelativeOrAbsolute)),
|
||||||
|
Shortcut = new KeyGesture(Key.N, ModifierKeys.Control)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Create(Window parent = null, DocumentFormat defaultFormat = null, string defaultPath = "")
|
public void CreateWindow(DocumentFormat defaultFormat = null, string defaultPath = "")
|
||||||
{
|
{
|
||||||
// Show dialog
|
// Show dialog
|
||||||
var dialog = new CreateDocumentDialog()
|
var dialog = new CreateDocumentDialog()
|
||||||
{
|
{
|
||||||
Owner = parent,
|
Owner = OwnerWindow,
|
||||||
SelectedFormat = defaultFormat,
|
SelectedFormat = defaultFormat,
|
||||||
SelectedPath = defaultPath
|
SelectedPath = defaultPath
|
||||||
};
|
};
|
||||||
@ -56,5 +72,6 @@ namespace RainmeterEditor.UI.Controller
|
|||||||
// Call manager
|
// Call manager
|
||||||
DocumentManager.Instance.Create(format, path);
|
DocumentManager.Instance.Create(format, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<Window x:Class="RainmeterEditor.MainWindow"
|
<Window x:Class="RainmeterEditor.UI.MainWindow"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:ui="clr-namespace:RainmeterEditor.UI"
|
xmlns:ui="clr-namespace:RainmeterEditor.UI"
|
||||||
@ -6,6 +6,11 @@
|
|||||||
xmlns:adlayout="clr-namespace:Xceed.Wpf.AvalonDock.Layout;assembly=Xceed.Wpf.AvalonDock"
|
xmlns:adlayout="clr-namespace:Xceed.Wpf.AvalonDock.Layout;assembly=Xceed.Wpf.AvalonDock"
|
||||||
Title="Rainmeter Studio" Height="350" Width="525"
|
Title="Rainmeter Studio" Height="350" Width="525"
|
||||||
ResizeMode="CanResizeWithGrip" >
|
ResizeMode="CanResizeWithGrip" >
|
||||||
|
|
||||||
|
<Window.Resources>
|
||||||
|
|
||||||
|
</Window.Resources>
|
||||||
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
@ -21,7 +26,23 @@
|
|||||||
<!-- Menu bar -->
|
<!-- Menu bar -->
|
||||||
<Menu Grid.Row="0" Grid.ColumnSpan="10">
|
<Menu Grid.Row="0" Grid.ColumnSpan="10">
|
||||||
<MenuItem Header="_File">
|
<MenuItem Header="_File">
|
||||||
<MenuItem Header="_New Item..." Click="File_New_Click"/>
|
<MenuItem Header="_New">
|
||||||
|
<MenuItem Header="_File..."
|
||||||
|
DataContext="{DynamicResource DocumentCreateCommand}"
|
||||||
|
Command="{Binding}"
|
||||||
|
ToolTip="{Binding Tooltip}"
|
||||||
|
InputGestureText="{Binding ShortcutText}">
|
||||||
|
<MenuItem.Icon>
|
||||||
|
<Image DataContext="{DynamicResource DocumentCreateCommand}"
|
||||||
|
Source="{Binding Icon}" />
|
||||||
|
</MenuItem.Icon>
|
||||||
|
</MenuItem>
|
||||||
|
<MenuItem Header="_Project..." Command="{DynamicResource CreateFileCommand}">
|
||||||
|
<MenuItem.Icon>
|
||||||
|
<Image Source="/Resources/Icons/project_star_16.png" />
|
||||||
|
</MenuItem.Icon>
|
||||||
|
</MenuItem>
|
||||||
|
</MenuItem>
|
||||||
<MenuItem Header="_Open..." />
|
<MenuItem Header="_Open..." />
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem Header="_Close" />
|
<MenuItem Header="_Close" />
|
||||||
@ -32,6 +53,17 @@
|
|||||||
</Menu>
|
</Menu>
|
||||||
|
|
||||||
<!-- Toolbar -->
|
<!-- Toolbar -->
|
||||||
|
<ToolBarTray Grid.Row="1">
|
||||||
|
<ToolBar>
|
||||||
|
<Button Name="buttonBackward" ToolTip="Navigate backward">
|
||||||
|
<Image Width="16" Height="16" Source="/Resources/Icons/arrow_backward_16.png" />
|
||||||
|
</Button>
|
||||||
|
<Button Name="buttonForward" ToolTip="Navigate forward">
|
||||||
|
<Image Width="16" Height="16" Source="/Resources/Icons/arrow_forward_16.png" />
|
||||||
|
</Button>
|
||||||
|
<Separator />
|
||||||
|
</ToolBar>
|
||||||
|
</ToolBarTray>
|
||||||
|
|
||||||
<!-- Grid splitter -->
|
<!-- Grid splitter -->
|
||||||
<GridSplitter Grid.Row="2" Grid.Column="1"
|
<GridSplitter Grid.Row="2" Grid.Column="1"
|
||||||
|
@ -15,20 +15,38 @@ using RainmeterEditor.Model.Events;
|
|||||||
using RainmeterEditor.UI.Controller;
|
using RainmeterEditor.UI.Controller;
|
||||||
using Xceed.Wpf.AvalonDock.Layout;
|
using Xceed.Wpf.AvalonDock.Layout;
|
||||||
|
|
||||||
namespace RainmeterEditor
|
namespace RainmeterEditor.UI
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interaction logic for MainWindow.xaml
|
/// Interaction logic for MainWindow.xaml
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class MainWindow : Window
|
public partial class MainWindow : Window
|
||||||
{
|
{
|
||||||
DocumentController documentController = new DocumentController();
|
private DocumentController documentController;
|
||||||
|
|
||||||
|
private IEnumerable<Command> Commands
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
yield return documentController.DocumentCreateCommand;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
documentController = new DocumentController();
|
||||||
|
documentController.OwnerWindow = this;
|
||||||
documentController.DocumentOpened += documentController_DocumentOpened;
|
documentController.DocumentOpened += documentController_DocumentOpened;
|
||||||
|
|
||||||
|
foreach (var c in Commands)
|
||||||
|
{
|
||||||
|
Resources.Add(c.Name, c);
|
||||||
|
|
||||||
|
if (c.Shortcut != null)
|
||||||
|
InputBindings.Add(new KeyBinding(c, c.Shortcut));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void documentController_DocumentOpened(object sender, DocumentOpenedEventArgs e)
|
void documentController_DocumentOpened(object sender, DocumentOpenedEventArgs e)
|
||||||
@ -58,10 +76,5 @@ namespace RainmeterEditor
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void File_New_Click(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
documentController.Create(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|