Fixes for project manager

This commit is contained in:
Tiberiu Chibici 2014-08-16 14:35:54 +03:00
parent bedc107bb1
commit fb2929e02a
9 changed files with 38 additions and 40 deletions

View File

@ -51,14 +51,14 @@ namespace RainmeterStudio.Business
/// </summary> /// </summary>
/// <param name="name">Name of project</param> /// <param name="name">Name of project</param>
/// <param name="path">Path of project file</param> /// <param name="path">Path of project file</param>
public void CreateProject(string name, string path) public void CreateProject(string name, string path, IProjectTemplate template)
{ {
// If there is an opened project, close it // If there is an opened project, close it
if (ActiveProject != null) if (ActiveProject != null)
Close(); Close();
// Create project object // Create project object
ActiveProject = new Project(); ActiveProject = template.CreateProject();
ActiveProject.Name = name; ActiveProject.Name = name;
ActiveProject.Path = path; ActiveProject.Path = path;

View File

@ -163,12 +163,12 @@ namespace RainmeterStudio.Properties {
[global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")] [global::System.Configuration.DefaultSettingValueAttribute("")]
public string CreateProjectDialog_SavedLocation { public string Project_SavedLocation {
get { get {
return ((string)(this["CreateProjectDialog_SavedLocation"])); return ((string)(this["Project_SavedLocation"]));
} }
set { set {
this["CreateProjectDialog_SavedLocation"] = value; this["Project_SavedLocation"] = value;
} }
} }

View File

@ -35,7 +35,7 @@
<Setting Name="CreateProjectDialog_RecentLocations" Type="System.String" Scope="User"> <Setting Name="CreateProjectDialog_RecentLocations" Type="System.String" Scope="User">
<Value Profile="(Default)" /> <Value Profile="(Default)" />
</Setting> </Setting>
<Setting Name="CreateProjectDialog_SavedLocation" Type="System.String" Scope="User"> <Setting Name="Project_SavedLocation" Type="System.String" Scope="User">
<Value Profile="(Default)" /> <Value Profile="(Default)" />
</Setting> </Setting>
<Setting Name="CreateProjectDialog_CreateDirectoryCheckbox" Type="System.Boolean" Scope="User"> <Setting Name="CreateProjectDialog_CreateDirectoryCheckbox" Type="System.Boolean" Scope="User">

View File

@ -31,6 +31,8 @@ namespace RainmeterStudio.UI.Controller
public Command DocumentCreateCommand { get; private set; } public Command DocumentCreateCommand { get; private set; }
public Command DocumentOpenCommand { get; private set; }
#endregion #endregion
/// <summary> /// <summary>
@ -58,25 +60,22 @@ namespace RainmeterStudio.UI.Controller
DocumentManager = documentManager; DocumentManager = documentManager;
ProjectManager = projectManager; ProjectManager = projectManager;
DocumentCreateCommand = new Command("DocumentCreateCommand", () => CreateWindow()); DocumentCreateCommand = new Command("DocumentCreateCommand", () => Create(), () => ProjectManager.ActiveProject != null);
ProjectManager.ActiveProjectChanged += new EventHandler((obj, e) => DocumentCreateCommand.NotifyCanExecuteChanged());
} }
public void CreateWindow(IDocumentTemplate defaultFormat = null, string defaultPath = "") public void Create()
{ {
// Show dialog // Show dialog
var dialog = new CreateDocumentDialog(this) var dialog = new CreateDocumentDialog(this);
{ dialog.Owner = OwnerWindow;
Owner = OwnerWindow,
SelectedTemplate = new DocumentTemplateViewModel(defaultFormat),
SelectedPath = defaultPath
};
bool? res = dialog.ShowDialog(); bool? res = dialog.ShowDialog();
if (!res.HasValue || !res.Value) if (!res.HasValue || !res.Value)
return; return;
var format = dialog.SelectedTemplate; var format = dialog.SelectedTemplate;
var path = dialog.SelectedPath; var path = dialog.SelectedName;
// Call manager // Call manager
DocumentManager.Create(format.Template); DocumentManager.Create(format.Template);

View File

@ -8,6 +8,7 @@ using RainmeterStudio.Business;
using RainmeterStudio.Core.Model; using RainmeterStudio.Core.Model;
using RainmeterStudio.UI.Dialogs; using RainmeterStudio.UI.Dialogs;
using RainmeterStudio.UI.ViewModel; using RainmeterStudio.UI.ViewModel;
using RainmeterStudio.Properties;
namespace RainmeterStudio.UI.Controller namespace RainmeterStudio.UI.Controller
{ {
@ -115,9 +116,10 @@ namespace RainmeterStudio.UI.Controller
string selectedName = dialog.SelectedName; string selectedName = dialog.SelectedName;
string selectedPath = dialog.SelectedPath; string selectedPath = dialog.SelectedPath;
IProjectTemplate selectedTemplate = dialog.SelectedTemplate;
// Call manager // Call manager
Manager.CreateProject(selectedName, selectedPath); Manager.CreateProject(selectedName, selectedPath, selectedTemplate);
} }
/// <summary> /// <summary>
@ -132,6 +134,7 @@ namespace RainmeterStudio.UI.Controller
+ Resources.Strings.Dialog_FileType_AllFiles + "|*.*"; + Resources.Strings.Dialog_FileType_AllFiles + "|*.*";
dialog.Title = Resources.Strings.Dialog_OpenProject_Title; dialog.Title = Resources.Strings.Dialog_OpenProject_Title;
dialog.Multiselect = false; dialog.Multiselect = false;
dialog.InitialDirectory = Settings.Default.Project_SavedLocation;
// Show dialog // Show dialog
bool? res = dialog.ShowDialog(OwnerWindow); bool? res = dialog.ShowDialog(OwnerWindow);

View File

@ -34,7 +34,6 @@
<Grid Grid.Row="1"> <Grid Grid.Row="1">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition /> <RowDefinition />
<RowDefinition />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
@ -43,18 +42,14 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Text="{x:Static r:Strings.CreateDocumentDialog_Name}" /> <TextBlock Grid.Row="0" Text="{x:Static r:Strings.CreateDocumentDialog_Name}" />
<TextBox Name="textPath" Grid.Row="0" Grid.Column="1" Margin="1px"></TextBox> <TextBox Name="textName" Grid.Row="0" Grid.Column="1" Margin="1px" TextChanged="textName_TextChanged"/>
<TextBlock Grid.Row="1">Path:</TextBlock>
<TextBox Name="textPath1" Grid.Row="1" Grid.Column="1" Margin="1px"></TextBox>
<Button Grid.Row="1" Grid.Column="2">...</Button>
</Grid> </Grid>
<StackPanel Grid.Row="2" Orientation="Horizontal" <StackPanel Grid.Row="2" Orientation="Horizontal"
HorizontalAlignment="Right"> HorizontalAlignment="Right">
<Button Name="buttonCreate" Click="buttonCreate_Click" IsDefault="True" Margin="1px">Create</Button> <Button Name="buttonCreate" Content="{x:Static r:Strings.Dialog_Create}" IsDefault="True" Margin="1px" Click="buttonCreate_Click" />
<Button Name="buttonCancel" Click="buttonCancel_Click" IsCancel="True" Margin="1px">Cancel</Button> <Button Name="buttonCancel" Content="{x:Static r:Strings.Dialog_Cancel}" IsCancel="True" Margin="1px" Click="buttonCancel_Click" />
</StackPanel> </StackPanel>
</Grid> </Grid>

View File

@ -2,6 +2,7 @@
using System.Linq; using System.Linq;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using RainmeterStudio.Core.Utils;
using RainmeterStudio.UI.Controller; using RainmeterStudio.UI.Controller;
using RainmeterStudio.UI.ViewModel; using RainmeterStudio.UI.ViewModel;
@ -32,15 +33,15 @@ namespace RainmeterStudio.UI.Dialogs
/// <summary> /// <summary>
/// Gets or sets the path /// Gets or sets the path
/// </summary> /// </summary>
public string SelectedPath public string SelectedName
{ {
get get
{ {
return textPath.Text; return textName.Text;
} }
set set
{ {
textPath.Text = value; textName.Text = value;
} }
} }
@ -52,13 +53,9 @@ namespace RainmeterStudio.UI.Dialogs
InitializeComponent(); InitializeComponent();
_documentController = docCtrl; _documentController = docCtrl;
PopulateFormats(); listTemplates.ItemsSource = _documentController.DocumentTemplates.OrderBy(x => x.DisplayText);
Validate();
}
private void PopulateFormats() Validate();
{
listTemplates.ItemsSource = _documentController.DocumentTemplates;
} }
private void buttonCreate_Click(object sender, RoutedEventArgs e) private void buttonCreate_Click(object sender, RoutedEventArgs e)
@ -77,9 +74,8 @@ namespace RainmeterStudio.UI.Dialogs
{ {
bool res = true; bool res = true;
res &= !String.IsNullOrWhiteSpace(textPath.Text);
res &= !textPath.Text.Intersect(System.IO.Path.GetInvalidFileNameChars()).Any();
res &= (listTemplates.SelectedItem != null); res &= (listTemplates.SelectedItem != null);
res &= PathHelper.IsFileNameValid(SelectedName);
buttonCreate.IsEnabled = res; buttonCreate.IsEnabled = res;
} }
@ -88,5 +84,10 @@ namespace RainmeterStudio.UI.Dialogs
{ {
Validate(); Validate();
} }
private void textName_TextChanged(object sender, TextChangedEventArgs e)
{
Validate();
}
} }
} }

View File

@ -32,11 +32,11 @@ namespace RainmeterStudio.UI.Dialogs
/// <summary> /// <summary>
/// Gets or sets the currently selected file format /// Gets or sets the currently selected file format
/// </summary> /// </summary>
public IDocumentTemplate SelectedTemplate public IProjectTemplate SelectedTemplate
{ {
get get
{ {
return listTemplates.SelectedItem as IDocumentTemplate; return listTemplates.SelectedItem as IProjectTemplate;
} }
set set
{ {
@ -125,7 +125,7 @@ namespace RainmeterStudio.UI.Dialogs
private string GetLocation() private string GetLocation()
{ {
// Get setting // Get setting
string location = Settings.Default.CreateProjectDialog_SavedLocation; string location = Settings.Default.Project_SavedLocation;
// No location provided, use default // No location provided, use default
if (String.IsNullOrEmpty(location)) if (String.IsNullOrEmpty(location))
@ -197,7 +197,7 @@ namespace RainmeterStudio.UI.Dialogs
// Save location // Save location
if (checkLocationDefault.IsChecked.HasValue && checkLocationDefault.IsChecked.Value) if (checkLocationDefault.IsChecked.HasValue && checkLocationDefault.IsChecked.Value)
{ {
Settings.Default.CreateProjectDialog_SavedLocation = SelectedLocation; Settings.Default.Project_SavedLocation = SelectedLocation;
} }
} }
} }

View File

@ -41,7 +41,7 @@
<setting name="CreateProjectDialog_RecentLocations" serializeAs="String"> <setting name="CreateProjectDialog_RecentLocations" serializeAs="String">
<value /> <value />
</setting> </setting>
<setting name="CreateProjectDialog_SavedLocation" serializeAs="String"> <setting name="Project_SavedLocation" serializeAs="String">
<value /> <value />
</setting> </setting>
<setting name="CreateProjectDialog_CreateDirectoryCheckbox" serializeAs="String"> <setting name="CreateProjectDialog_CreateDirectoryCheckbox" serializeAs="String">