MainForm - Add Recently open file menu item

This commit is contained in:
miku-666
2024-03-30 02:20:05 +01:00
parent fc883d2364
commit 1cadb432ee
5 changed files with 148 additions and 8 deletions

View File

@@ -32,6 +32,8 @@
System.Windows.Forms.PictureBox logoPictureBox;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.contextMenuPCKEntries = new System.Windows.Forms.ContextMenuStrip(this.components);
this.createToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -142,8 +144,12 @@
this.imageList = new System.Windows.Forms.ImageList(this.components);
this.previewPictureBox = new PckStudio.ToolboxItems.InterpolationPictureBox();
this.LittleEndianCheckBox = new MetroFramework.Controls.MetroCheckBox();
this.recentlyOpenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
logoPictureBox = new System.Windows.Forms.PictureBox();
toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
((System.ComponentModel.ISupportInitialize)(logoPictureBox)).BeginInit();
this.contextMenuPCKEntries.SuspendLayout();
this.menuStrip.SuspendLayout();
@@ -474,7 +480,11 @@
this.packSettingsToolStripMenuItem,
this.saveToolStripMenuItem1,
this.saveToolStripMenuItem,
this.closeToolStripMenuItem});
this.closeToolStripMenuItem,
toolStripSeparator2,
this.recentlyOpenToolStripMenuItem,
toolStripSeparator4,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.ForeColor = System.Drawing.Color.Silver;
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
resources.ApplyResources(this.fileToolStripMenuItem, "fileToolStripMenuItem");
@@ -1064,6 +1074,26 @@
this.LittleEndianCheckBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.LittleEndianCheckBox.UseSelectable = true;
//
// recentlyOpenToolStripMenuItem
//
this.recentlyOpenToolStripMenuItem.Name = "recentlyOpenToolStripMenuItem";
resources.ApplyResources(this.recentlyOpenToolStripMenuItem, "recentlyOpenToolStripMenuItem");
//
// toolStripSeparator2
//
toolStripSeparator2.Name = "toolStripSeparator2";
resources.ApplyResources(toolStripSeparator2, "toolStripSeparator2");
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
resources.ApplyResources(this.exitToolStripMenuItem, "exitToolStripMenuItem");
//
// toolStripSeparator4
//
toolStripSeparator4.Name = "toolStripSeparator4";
resources.ApplyResources(toolStripSeparator4, "toolStripSeparator4");
//
// MainForm
//
this.ApplyImageInvert = true;
@@ -1212,6 +1242,8 @@
private System.Windows.Forms.ToolStripMenuItem moveDownToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem joinDevelopmentDiscordToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem trelloBoardToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem recentlyOpenToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
}
}

View File

@@ -30,14 +30,15 @@ using PckStudio.Extensions;
using PckStudio.Popups;
using PckStudio.Classes.Utils;
using PckStudio.Helper;
using PCKStudio_Updater;
using System.Text.RegularExpressions;
namespace PckStudio
{
public partial class MainForm : MetroFramework.Forms.MetroForm
{
private PckManager PckManager = null;
string saveLocation = string.Empty;
string saveLocation;
PckFile currentPCK = null;
bool __modified = false;
@@ -189,16 +190,59 @@ namespace PckStudio
imageList.Images.Add(Resources.BEHAVIOURS_ICON); // Icon for Behaviour files (behaviours.bin)
imageList.Images.Add(Resources.ENTITY_MATERIALS_ICON); // Icon for Entity Material files (entityMaterials.bin)
LoadRecentFileList();
isSelectingTab = true;
tabControl.SelectTab(0);
isSelectingTab = false;
UpdateRichPresence();
if (saveLocation != String.Empty) LoadPckFromFile(saveLocation);
if (!string.IsNullOrWhiteSpace(saveLocation))
LoadPckFromFile(saveLocation);
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
private void LoadRecentFileList()
{
Settings.Default.RecentFiles ??= new System.Collections.Specialized.StringCollection();
recentlyOpenToolStripMenuItem.DropDownItems.Clear();
for (int i = 0; i < Settings.Default.RecentFiles.Count && i < 5; i++)
{
string filepath = Settings.Default.RecentFiles[i];
if (!string.IsNullOrWhiteSpace(filepath))
{
string displayFilepath = Regex.Replace(filepath, @"([A-Z]{1}\:\\[Uu]sers\\)([^\\]*\\)(.*)", "~\\$3");
var item = recentlyOpenToolStripMenuItem.DropDownItems.Add(displayFilepath, null, HandleOpenFile);
item.Tag = filepath;
}
}
}
private void HandleOpenFile(object sender, EventArgs e)
{
if (((ToolStripMenuItem)sender).Tag is string filepath && File.Exists(filepath))
LoadPckFromFile(filepath);
}
private void SaveToRecentFiles(string filepath)
{
if (filepath is null || string.IsNullOrWhiteSpace(filepath))
return;
if (Settings.Default.RecentFiles.Contains(filepath))
Settings.Default.RecentFiles.Remove(filepath);
Settings.Default.RecentFiles.Insert(0, filepath);
if (Settings.Default.RecentFiles.Count > 5)
{
for (int i = 5; i < Settings.Default.RecentFiles.Count; i++)
{
Settings.Default.RecentFiles.RemoveAt(i);
}
}
Settings.Default.Save();
LoadRecentFileList();
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
PckManager?.Close();
checkSaveState();
@@ -221,7 +265,8 @@ namespace PckStudio
{
isTemplateFile = false;
saveLocation = filePath;
var reader = new PckFileReader(LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian);
SaveToRecentFiles(filePath);
var reader = new PckFileReader(LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian);
try
{
PckFile pck = reader.FromFile(filePath);
@@ -732,7 +777,8 @@ namespace PckStudio
{
Save(saveFileDialog.FileName);
saveLocation = saveFileDialog.FileName;
pckFileLabel.Text = Path.GetFileName(saveLocation);
SaveToRecentFiles(saveFileDialog.FileName);
pckFileLabel.Text = Path.GetFileName(saveLocation);
isTemplateFile = false;
}
}

View File

@@ -1322,6 +1322,30 @@
<data name="closeToolStripMenuItem.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<metadata name="toolStripSeparator2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 6</value>
</data>
<data name="recentlyOpenToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>186, 22</value>
</data>
<data name="recentlyOpenToolStripMenuItem.Text" xml:space="preserve">
<value>Recently open</value>
</data>
<metadata name="toolStripSeparator4.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 6</value>
</data>
<data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>186, 22</value>
</data>
<data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>Exit</value>
</data>
<data name="fileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>37, 20</value>
</data>
@@ -7700,6 +7724,30 @@
<data name="&gt;&gt;imageList.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;recentlyOpenToolStripMenuItem.Name" xml:space="preserve">
<value>recentlyOpenToolStripMenuItem</value>
</data>
<data name="&gt;&gt;recentlyOpenToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripSeparator2.Name" xml:space="preserve">
<value>toolStripSeparator2</value>
</data>
<data name="&gt;&gt;toolStripSeparator2.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;exitToolStripMenuItem.Name" xml:space="preserve">
<value>exitToolStripMenuItem</value>
</data>
<data name="&gt;&gt;exitToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripSeparator4.Name" xml:space="preserve">
<value>toolStripSeparator4</value>
</data>
<data name="&gt;&gt;toolStripSeparator4.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainForm</value>
</data>

View File

@@ -12,7 +12,7 @@ namespace PckStudio.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -115,5 +115,16 @@ namespace PckStudio.Properties {
this["UseComboBoxForGRFParameter"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Collections.Specialized.StringCollection RecentFiles {
get {
return ((global::System.Collections.Specialized.StringCollection)(this["RecentFiles"]));
}
set {
this["RecentFiles"] = value;
}
}
}
}

View File

@@ -26,5 +26,8 @@
<Setting Name="UseComboBoxForGRFParameter" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="RecentFiles" Type="System.Collections.Specialized.StringCollection" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>