Added project templates, work on document template

This commit is contained in:
2014-08-16 00:39:31 +03:00
parent ef8aec25b7
commit 5f4dead9ec
30 changed files with 373 additions and 130 deletions

View File

@ -7,6 +7,7 @@ using RainmeterStudio.Core.Documents;
using RainmeterStudio.Core.Model.Events;
using RainmeterStudio.UI.Dialogs;
using RainmeterStudio.UI.ViewModel;
using RainmeterStudio.Core.Model;
namespace RainmeterStudio.UI.Controller
{
@ -60,7 +61,7 @@ namespace RainmeterStudio.UI.Controller
DocumentCreateCommand = new Command("DocumentCreateCommand", () => CreateWindow());
}
public void CreateWindow(DocumentTemplate defaultFormat = null, string defaultPath = "")
public void CreateWindow(IDocumentTemplate defaultFormat = null, string defaultPath = "")
{
// Show dialog
var dialog = new CreateDocumentDialog(this)
@ -81,7 +82,7 @@ namespace RainmeterStudio.UI.Controller
DocumentManager.Create(format.Template);
}
public void Create(DocumentTemplate format)
public void Create(IDocumentTemplate format)
{
// Call manager
DocumentManager.Create(format);

View File

@ -1,10 +1,13 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Linq;
using Microsoft.Win32;
using RainmeterStudio.Business;
using RainmeterStudio.Core.Model;
using RainmeterStudio.UI.Dialogs;
using RainmeterStudio.UI.ViewModel;
namespace RainmeterStudio.UI.Controller
{
@ -44,6 +47,17 @@ namespace RainmeterStudio.UI.Controller
}
}
/// <summary>
/// Gets the project templates
/// </summary>
public IEnumerable<ProjectTemplateViewModel> ProjectTemplates
{
get
{
return Manager.ProjectTemplates.Select(pt => new ProjectTemplateViewModel(pt));
}
}
#endregion
#region Callbacks
@ -91,7 +105,7 @@ namespace RainmeterStudio.UI.Controller
public void CreateProject(string name = null, string path = null)
{
// Create dialog
var dialog = new CreateProjectDialog();
var dialog = new CreateProjectDialog(this);
dialog.Owner = OwnerWindow;
dialog.SelectedLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Rainmeter Studio Projects");

View File

@ -23,7 +23,7 @@
Width="32" Height="32" Margin="2"
Stretch="Uniform" VerticalAlignment="Top" />
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
<TextBlock Text="{Binding DisplayText}" FontWeight="Bold" />
<TextBlock Text="{Binding Description}" />
</StackPanel>
</DockPanel>

View File

@ -13,9 +13,8 @@
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ListView Name="listTemplates" Grid.Row="0" SelectedIndex="0"
IsEnabled="False">
<ListView Name="listTemplates" Grid.Row="0" Margin="1px"
SelectionChanged="listTemplates_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<DockPanel>
@ -23,21 +22,12 @@
Width="32" Height="32" Margin="2"
Stretch="Uniform" VerticalAlignment="Top" />
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
<TextBlock Text="{Binding DisplayText}" FontWeight="Bold" />
<TextBlock Text="{Binding Description}" />
</StackPanel>
</DockPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock FontWeight="Bold" FontSize="13pt" Text="{Binding Name}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
<Grid Grid.Row="1">

View File

@ -13,6 +13,8 @@ using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using RainmeterStudio.Business;
using RainmeterStudio.Core.Documents;
using RainmeterStudio.Core.Model;
using RainmeterStudio.UI.Controller;
namespace RainmeterStudio.UI.Dialogs
{
@ -54,11 +56,11 @@ namespace RainmeterStudio.UI.Dialogs
/// <summary>
/// Gets or sets the currently selected file format
/// </summary>
public DocumentTemplate SelectedTemplate
public IDocumentTemplate SelectedTemplate
{
get
{
return listTemplates.SelectedItem as DocumentTemplate;
return listTemplates.SelectedItem as IDocumentTemplate;
}
set
{
@ -121,7 +123,7 @@ namespace RainmeterStudio.UI.Dialogs
#endregion
public CreateProjectDialog()
public CreateProjectDialog(ProjectController projectController)
{
InitializeComponent();
@ -132,6 +134,9 @@ namespace RainmeterStudio.UI.Dialogs
// Set data context
DataContext = this;
// Populate templates
listTemplates.ItemsSource = projectController.ProjectTemplates.OrderBy(x => x.DisplayText);
// Focus on name textbox
textName.Focus();
}
@ -208,5 +213,9 @@ namespace RainmeterStudio.UI.Dialogs
{
UpdatePath();
}
private void listTemplates_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
}
}

View File

@ -1,15 +1,18 @@
using System.Windows.Media;
using RainmeterStudio.Business;
using RainmeterStudio.Core.Documents;
using RainmeterStudio.Core.Model;
namespace RainmeterStudio.UI.ViewModel
{
/// <summary>
/// View model for document templates
/// </summary>
public class DocumentTemplateViewModel
{
/// <summary>
/// Gets the document template
/// </summary>
public DocumentTemplate Template { get; private set; }
public IDocumentTemplate Template { get; private set; }
/// <summary>
/// Gets the document template name
@ -23,7 +26,7 @@ namespace RainmeterStudio.UI.ViewModel
{
get
{
return ResourceProvider.GetImage("Template_" + Name + "_Icon");
return ResourceProvider.GetImage("DocumentTemplate_" + Name + "_Icon");
}
}
@ -34,7 +37,7 @@ namespace RainmeterStudio.UI.ViewModel
{
get
{
return ResourceProvider.GetString("Template_" + Name + "_DisplayText");
return ResourceProvider.GetString("DocumentTemplate_" + Name + "_DisplayText");
}
}
@ -45,7 +48,7 @@ namespace RainmeterStudio.UI.ViewModel
{
get
{
return ResourceProvider.GetString("Template_" + Name + "_Description");
return ResourceProvider.GetString("DocumentTemplate_" + Name + "_Description");
}
}
@ -53,7 +56,7 @@ namespace RainmeterStudio.UI.ViewModel
/// Initializes the document template view model
/// </summary>
/// <param name="template">The document template</param>
public DocumentTemplateViewModel(DocumentTemplate template)
public DocumentTemplateViewModel(IDocumentTemplate template)
{
this.Template = template;
}

View File

@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media;
using RainmeterStudio.Business;
using RainmeterStudio.Core.Model;
namespace RainmeterStudio.UI.ViewModel
{
/// <summary>
/// View model for project templates
/// </summary>
public class ProjectTemplateViewModel
{
/// <summary>
/// Gets the project template
/// </summary>
public IProjectTemplate Template { get; private set; }
/// <summary>
/// Gets the name of the template
/// </summary>
public string Name
{
get
{
return Template.Name;
}
}
/// <summary>
/// Gets the display text
/// </summary>
public string DisplayText
{
get
{
return ResourceProvider.GetString("ProjectTemplate_" + Name + "_DisplayText");
}
}
/// <summary>
/// Gets the description
/// </summary>
public string Description
{
get
{
return ResourceProvider.GetString("ProjectTemplate_" + Name + "_Description");
}
}
/// <summary>
/// Gets the icon
/// </summary>
public ImageSource Icon
{
get
{
return ResourceProvider.GetImage("ProjectTemplate_" + Name + "_Icon");
}
}
/// <summary>
/// Initializes the project template view model
/// </summary>
/// <param name="template">A project template</param>
public ProjectTemplateViewModel(IProjectTemplate template)
{
Template = template;
}
}
}