diff --git a/DTOs/SaveFile/App4Options.cs b/DTOs/SaveFile/App4Options.cs index 91f7896..2e8ade6 100644 --- a/DTOs/SaveFile/App4Options.cs +++ b/DTOs/SaveFile/App4Options.cs @@ -182,13 +182,13 @@ namespace RokettoLaunch.DTOs.SaveFile public string ResolvedStartPath { get; private set; } - public Item CopyOf() + public Item CopyOf(bool addPrefix = true) { var json = JsonSerializer.Serialize(this); var newTileInfo = JsonSerializer.Deserialize(json); newTileInfo.Id = Guid.NewGuid(); - newTileInfo.Title = "Copy of " + newTileInfo.Title; + newTileInfo.Title = (addPrefix ? "Copy of " : "") + newTileInfo.Title; newTileInfo.Position = new Point(-1, -1); if (newTileInfo.IsGroup) diff --git a/DTOs/SaveFile/AppOptionsBase.cs b/DTOs/SaveFile/AppOptionsBase.cs index 6ba5c1e..d60912a 100644 --- a/DTOs/SaveFile/AppOptionsBase.cs +++ b/DTOs/SaveFile/AppOptionsBase.cs @@ -10,7 +10,7 @@ namespace RokettoLaunch.DTOs.SaveFile public bool ShowBigIcons { get; set; } = true; - public RyzStudio.Windows.ThemedForms.ButtonTextBox.ThKeyCodeTextBox.Results ShowToggleHotkey { get; set; } = null; + public RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results ShowToggleHotkey { get; set; } = null; public bool HideOnClose { get; set; } = true; diff --git a/Forms/CopyToTileForm.cs b/Forms/CopyToTileForm.cs index a7342f7..fcdfd8f 100644 --- a/Forms/CopyToTileForm.cs +++ b/Forms/CopyToTileForm.cs @@ -10,7 +10,7 @@ namespace RokettoLaunch.Forms public class CopyToTileForm : Form { private Label label1; - private ThPickerBox pickerBox1; + private RyzStudio.Windows.ThemedForms.T3PickerBox pickerBox1; private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1; @@ -21,7 +21,7 @@ namespace RokettoLaunch.Forms { InitializeComponent(); - UISetup.Dialog(this, true); + this.SetupDialog(); this.Text = "Copy To..."; @@ -40,7 +40,7 @@ namespace RokettoLaunch.Forms private void InitializeComponent() { label1 = new Label(); - pickerBox1 = new ThPickerBox(); + pickerBox1 = new RyzStudio.Windows.ThemedForms.T3PickerBox(); dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter(); SuspendLayout(); // diff --git a/Forms/EditFolderForm.cs b/Forms/EditFolderForm.cs index 9edf088..5172e75 100644 --- a/Forms/EditFolderForm.cs +++ b/Forms/EditFolderForm.cs @@ -1,22 +1,18 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Drawing; -using System.IO; using System.Linq; using System.Windows.Forms; using RokettoLaunch.DTOs.SaveFile; using RyzStudio.Windows.Forms; -using RyzStudio.Windows.ThemedForms; -using RyzStudio.Windows.ThemedForms.ButtonTextBox; namespace RokettoLaunch.Forms { public class EditFolderForm : Form { private Label label1; - private ThClearableTextBox textBox1; - private ThListBox listBox1; + private RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox textBox1; + private RyzStudio.Windows.ThemedForms.T3ListBox listBox1; private Label label2; private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1; @@ -24,11 +20,18 @@ namespace RokettoLaunch.Forms private App4Options.Item result = null; + public EditFolderForm() + { + InitializeComponent(); + + this.SetupDialog(); + } + public EditFolderForm(App4Options.Item model = null) { InitializeComponent(); - UISetup.Dialog(this, true); + this.SetupDialog(); this.Text = (result == null) ? "Add Folder" : "Edit Folder"; @@ -54,9 +57,9 @@ namespace RokettoLaunch.Forms private void InitializeComponent() { - textBox1 = new ThClearableTextBox(); + textBox1 = new RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox(); label1 = new Label(); - listBox1 = new ThListBox(); + listBox1 = new RyzStudio.Windows.ThemedForms.T3ListBox(); label2 = new Label(); dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter(); SuspendLayout(); @@ -92,6 +95,7 @@ namespace RokettoLaunch.Forms // // listBox1 // + listBox1.AllowDrop = true; listBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; listBox1.BackColor = Color.Transparent; listBox1.EnableMovable = false; diff --git a/Forms/EditGroupForm.cs b/Forms/EditGroupForm.cs index 8f7affc..f145194 100644 --- a/Forms/EditGroupForm.cs +++ b/Forms/EditGroupForm.cs @@ -3,8 +3,6 @@ using System.Windows.Forms; using RokettoLaunch.DTOs.SaveFile; using RokettoLaunch.Windows.Forms; using RyzStudio.Windows.Forms; -using RyzStudio.Windows.ThemedForms.ButtonTextBox; -using RyzStudio.Windows.ThemedForms.PickerBox; namespace RokettoLaunch.Forms { @@ -12,13 +10,13 @@ namespace RokettoLaunch.Forms { private Label label2; private Label label1; - private ThYesNoPickerBox pickerBox1; - private ThClearableTextBox textBox1; + private RyzStudio.Windows.ThemedForms.T3YnPickerBox pickerBox1; + private RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox textBox1; private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1; private THorizontalSeparator horizontalSeparator1; - private RyzStudio.Windows.ThemedForms.ThNumericBox numericBox1; + private RyzStudio.Windows.ThemedForms.T4NumericBox numericBox1; private Label label4; - private RyzStudio.Windows.ThemedForms.ThNumericBox numericBox2; + private RyzStudio.Windows.ThemedForms.T4NumericBox numericBox2; private Label label3; private App4Options.Group result = null; @@ -27,7 +25,7 @@ namespace RokettoLaunch.Forms { InitializeComponent(); - UISetup.Dialog(this, true); + this.SetupDialog(); this.Text = (result == null) ? "Add Group" : "Edit Group"; @@ -53,15 +51,15 @@ namespace RokettoLaunch.Forms private void InitializeComponent() { - textBox1 = new ThClearableTextBox(); + textBox1 = new RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox(); label2 = new Label(); label1 = new Label(); - pickerBox1 = new ThYesNoPickerBox(); + pickerBox1 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox(); dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter(); horizontalSeparator1 = new THorizontalSeparator(); - numericBox1 = new RyzStudio.Windows.ThemedForms.ThNumericBox(); + numericBox1 = new RyzStudio.Windows.ThemedForms.T4NumericBox(); label4 = new Label(); - numericBox2 = new RyzStudio.Windows.ThemedForms.ThNumericBox(); + numericBox2 = new RyzStudio.Windows.ThemedForms.T4NumericBox(); label3 = new Label(); SuspendLayout(); // diff --git a/Forms/EditTileForm.cs b/Forms/EditTileForm.cs index 29058db..405eab3 100644 --- a/Forms/EditTileForm.cs +++ b/Forms/EditTileForm.cs @@ -4,9 +4,6 @@ using System.Drawing; using System.Windows.Forms; using RokettoLaunch.DTOs.SaveFile; using RyzStudio.Windows.Forms; -using RyzStudio.Windows.ThemedForms; -using RyzStudio.Windows.ThemedForms.ButtonTextBox; -using RyzStudio.Windows.ThemedForms.PickerBox; namespace RokettoLaunch.Forms { @@ -18,13 +15,13 @@ namespace RokettoLaunch.Forms private Label label3; private Label label2; private Label label1; - private ThPathTextBox textBox2; - private ThClearableTextBox textBox3; - private ThPathTextBox textBox4; - private ThPickerBox pickerBox1; - private ThYesNoPickerBox pickerBox2; + private RyzStudio.Windows.FontForms.TextBox.T4PathTextBox textBox2; + private RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox textBox3; + private RyzStudio.Windows.FontForms.TextBox.T4PathTextBox textBox4; + private RyzStudio.Windows.ThemedForms.T3PickerBox pickerBox1; + private RyzStudio.Windows.ThemedForms.T3YnPickerBox pickerBox2; private THorizontalSeparator horizontalSeparator1; - private ThClearableTextBox textBox1; + private RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox textBox1; private RyzStudio.Windows.ThemedForms.Composite.DialogFooter dialogFooter1; @@ -35,7 +32,7 @@ namespace RokettoLaunch.Forms { InitializeComponent(); - UISetup.Dialog(this, true); + this.SetupDialog(); this.Text = (result == null) ? "Add Tile" : "Edit Tile"; @@ -58,18 +55,18 @@ namespace RokettoLaunch.Forms private void InitializeComponent() { - textBox1 = new ThClearableTextBox(); + textBox1 = new RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox(); label6 = new Label(); label7 = new Label(); label4 = new Label(); label3 = new Label(); label2 = new Label(); label1 = new Label(); - textBox2 = new ThPathTextBox(); - textBox3 = new ThClearableTextBox(); - textBox4 = new ThPathTextBox(); - pickerBox1 = new ThPickerBox(); - pickerBox2 = new ThYesNoPickerBox(); + textBox2 = new RyzStudio.Windows.FontForms.TextBox.T4PathTextBox(); + textBox3 = new RyzStudio.Windows.FontForms.TextBox.T4ClearTextBox(); + textBox4 = new RyzStudio.Windows.FontForms.TextBox.T4PathTextBox(); + pickerBox1 = new RyzStudio.Windows.ThemedForms.T3PickerBox(); + pickerBox2 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox(); horizontalSeparator1 = new THorizontalSeparator(); dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter(); SuspendLayout(); @@ -177,7 +174,7 @@ namespace RokettoLaunch.Forms // textBox2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; textBox2.BackColor = Color.Transparent; - textBox2.DialogMode = ThPathTextBox.DialogType.OpenFile; + textBox2.DialogMode = RyzStudio.Windows.FontForms.TextBox.T4PathTextBox.DialogType.OpenFile; textBox2.EnableMovable = false; textBox2.FolderBrowserDialog = null; textBox2.Icon = "D"; @@ -208,7 +205,7 @@ namespace RokettoLaunch.Forms // textBox4.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; textBox4.BackColor = Color.Transparent; - textBox4.DialogMode = ThPathTextBox.DialogType.FolderBrowser; + textBox4.DialogMode = RyzStudio.Windows.FontForms.TextBox.T4PathTextBox.DialogType.FolderBrowser; textBox4.EnableMovable = false; textBox4.FolderBrowserDialog = null; textBox4.Icon = "D"; diff --git a/Forms/LoadingForm.cs b/Forms/LoadingForm.cs index ea7d32a..0a723f7 100644 --- a/Forms/LoadingForm.cs +++ b/Forms/LoadingForm.cs @@ -11,8 +11,8 @@ namespace RokettoLaunch.Forms public class LoadingForm : Form { private TProgressBar progressBar1; - private RyzStudio.Windows.ThemedForms.ThUserControl userControl1; - private RyzStudio.Windows.ThemedForms.ThUserControl userControl2; + private RyzStudio.Windows.ThemedForms.T3UserControl userControl1; + private RyzStudio.Windows.ThemedForms.T3UserControl userControl2; private TProgressBar progressBar2; private App4Options result = null; @@ -25,7 +25,7 @@ namespace RokettoLaunch.Forms { InitializeComponent(); - UISetup.Dialog(this, true); + this.SetupDialog(); this.Text = "Loading"; } @@ -34,8 +34,8 @@ namespace RokettoLaunch.Forms private void InitializeComponent() { progressBar1 = new TProgressBar(); - userControl1 = new RyzStudio.Windows.ThemedForms.ThUserControl(); - userControl2 = new RyzStudio.Windows.ThemedForms.ThUserControl(); + userControl1 = new RyzStudio.Windows.ThemedForms.T3UserControl(); + userControl2 = new RyzStudio.Windows.ThemedForms.T3UserControl(); progressBar2 = new TProgressBar(); label1 = new Label(); label2 = new Label(); @@ -137,8 +137,8 @@ namespace RokettoLaunch.Forms { this.Clear(); - UIControl.SetText(label1, "Loading..."); - UIControl.SetText(label2, "... " + Path.GetFileName(loadFilename)); + label1.SetText("Loading..."); + label2.SetText("... " + Path.GetFileName(loadFilename)); var newSession = await LoadSaveSessionWithVersion(loadFilename); @@ -146,12 +146,12 @@ namespace RokettoLaunch.Forms progressBar1.Maximum = newSession.Groups?.Count ?? 0; progressBar2.Maximum = 0; - UIControl.SetText(label1, "Counting..."); - UIControl.SetText(label2, ""); + label1.SetText("Counting..."); + label2.SetText(""); foreach (var group in newSession?.Groups ?? new List()) { - UIControl.SetText(label2, "... " + group.Title); + label2.SetText("... " + group.Title); foreach (var item in group?.Items ?? new List()) { @@ -169,8 +169,8 @@ namespace RokettoLaunch.Forms // Resolve paths progressBar2.Value = 0; - UIControl.SetText(label1, "Seeking..."); - UIControl.SetText(label2, ""); + label1.SetText("Seeking..."); + label2.SetText(""); // Resolve paths foreach (var group in newSession?.Groups ?? new List()) @@ -179,7 +179,7 @@ namespace RokettoLaunch.Forms { progressBar1.Value++; - UIControl.SetText(label2, "... " + group.Title); + label2.SetText("... " + group.Title); if (item.IsGroup) { @@ -187,7 +187,7 @@ namespace RokettoLaunch.Forms { progressBar2.Value++; - UIControl.SetText(label2, "... " + subItem.Title); + label2.SetText("... " + subItem.Title); subItem.ResolvePaths(); } @@ -196,7 +196,7 @@ namespace RokettoLaunch.Forms { progressBar2.Value++; - UIControl.SetText(label2, "... " + item.Title); + label2.SetText("... " + item.Title); item.ResolvePaths(); } @@ -205,8 +205,8 @@ namespace RokettoLaunch.Forms result = newSession; - UIControl.SetText(label1, "Done"); - UIControl.SetText(label2, "Done"); + label1.SetText("Done"); + label2.SetText("Done"); }); this.DialogResult = DialogResult.OK; @@ -237,8 +237,8 @@ namespace RokettoLaunch.Forms public void Clear() { - UIControl.SetText(label1, "Ready"); - UIControl.SetText(label2, ""); + label1.SetText("Ready"); + label2.SetText(""); progressBar1.Value = progressBar1.Maximum = 0; progressBar2.Value = progressBar2.Maximum = 0; diff --git a/Forms/OptionsForm.cs b/Forms/OptionsForm.cs index 33dd3e3..f595708 100644 --- a/Forms/OptionsForm.cs +++ b/Forms/OptionsForm.cs @@ -2,9 +2,6 @@ using System.Windows.Forms; using RokettoLaunch.DTOs.SaveFile; using RyzStudio.Windows.Forms; -using RyzStudio.Windows.ThemedForms; -using RyzStudio.Windows.ThemedForms.ButtonTextBox; -using RyzStudio.Windows.ThemedForms.PickerBox; namespace RokettoLaunch.Forms { @@ -20,12 +17,12 @@ namespace RokettoLaunch.Forms private Label label1; private Label label6; private Label label7; - private ThYesNoPickerBox yesNoPickerBox1; - private ThNumericBox numericBox1; - private ThYesNoPickerBox yesNoPickerBox4; - private ThKeyCodeTextBox textBox1; - private ThYesNoPickerBox yesNoPickerBox2; - private ThYesNoPickerBox yesNoPickerBox3; + private RyzStudio.Windows.ThemedForms.T3YnPickerBox yesNoPickerBox1; + private RyzStudio.Windows.ThemedForms.T4NumericBox numericBox1; + private RyzStudio.Windows.ThemedForms.T3YnPickerBox yesNoPickerBox4; + private RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox textBox1; + private RyzStudio.Windows.ThemedForms.T3YnPickerBox yesNoPickerBox2; + private RyzStudio.Windows.ThemedForms.T3YnPickerBox yesNoPickerBox3; private TTogglePanel togglePanel3; private App4Options _appSession = null; @@ -35,11 +32,11 @@ namespace RokettoLaunch.Forms { InitializeComponent(); - UISetup.Dialog(this, true); - UISetup.AutoSizeChildren(flowLayoutPanel1); + this.SetupDialog(); _appSession = appSession; + flowLayoutPanel1.AutoSizeChildren(); numericBox1.Minimum = 4; numericBox1.Maximum = 24; } @@ -50,7 +47,7 @@ namespace RokettoLaunch.Forms numericBox1.Value = _appSession?.TilesPerRow ?? 4; yesNoPickerBox1.Value = _appSession?.ShowBigIcons ?? true; - textBox1.UpdateKeyCode(_appSession?.ShowToggleHotkey ?? new ThKeyCodeTextBox.Results()); + textBox1.UpdateKeyCode(_appSession?.ShowToggleHotkey ?? new RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results()); yesNoPickerBox4.Value = _appSession?.AlwaysOnTop ?? true; yesNoPickerBox2.Value = _appSession?.HideOnClose ?? true; yesNoPickerBox3.Value = _appSession?.HideOnExecute ?? true; @@ -58,32 +55,32 @@ namespace RokettoLaunch.Forms private void InitializeComponent() { - ThKeyCodeTextBox.Results results1 = new ThKeyCodeTextBox.Results(); + RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results results1 = new RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results(); dialogFooter1 = new RyzStudio.Windows.ThemedForms.Composite.DialogFooter(); flowLayoutPanel1 = new FlowLayoutPanel(); togglePanel1 = new TTogglePanel(); - yesNoPickerBox1 = new ThYesNoPickerBox(); - numericBox1 = new ThNumericBox(); + yesNoPickerBox1 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox(); + numericBox1 = new RyzStudio.Windows.ThemedForms.T4NumericBox(); label2 = new Label(); label4 = new Label(); togglePanel2 = new TTogglePanel(); label6 = new Label(); - yesNoPickerBox4 = new ThYesNoPickerBox(); - textBox1 = new ThKeyCodeTextBox(); - yesNoPickerBox2 = new ThYesNoPickerBox(); + yesNoPickerBox4 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox(); + textBox1 = new RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox(); + yesNoPickerBox2 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox(); label3 = new Label(); label1 = new Label(); togglePanel3 = new TTogglePanel(); label7 = new Label(); - yesNoPickerBox3 = new ThYesNoPickerBox(); + yesNoPickerBox3 = new RyzStudio.Windows.ThemedForms.T3YnPickerBox(); flowLayoutPanel1.SuspendLayout(); togglePanel1.SuspendLayout(); togglePanel2.SuspendLayout(); togglePanel3.SuspendLayout(); SuspendLayout(); - // + // // dialogFooter1 - // + // dialogFooter1.BackColor = System.Drawing.Color.FromArgb(240, 240, 240); dialogFooter1.Dock = DockStyle.Bottom; dialogFooter1.EnableMovable = false; @@ -93,9 +90,9 @@ namespace RokettoLaunch.Forms dialogFooter1.Size = new System.Drawing.Size(444, 70); dialogFooter1.TabIndex = 0; dialogFooter1.TabStop = false; - // + // // flowLayoutPanel1 - // + // flowLayoutPanel1.AutoScroll = true; flowLayoutPanel1.BackColor = System.Drawing.Color.Transparent; flowLayoutPanel1.Controls.Add(togglePanel1); @@ -109,9 +106,9 @@ namespace RokettoLaunch.Forms flowLayoutPanel1.Size = new System.Drawing.Size(444, 451); flowLayoutPanel1.TabIndex = 195; flowLayoutPanel1.WrapContents = false; - // + // // togglePanel1 - // + // togglePanel1.BackColor = System.Drawing.Color.FromArgb(252, 252, 252); togglePanel1.CloseIcon = "H"; togglePanel1.Controls.Add(yesNoPickerBox1); @@ -130,9 +127,9 @@ namespace RokettoLaunch.Forms togglePanel1.Title = "Appearance"; togglePanel1.TitleContextMenuStrip = null; togglePanel1.TitleCursor = Cursors.Default; - // + // // yesNoPickerBox1 - // + // yesNoPickerBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right; yesNoPickerBox1.BackColor = System.Drawing.Color.Transparent; yesNoPickerBox1.EnableMovable = false; @@ -143,9 +140,9 @@ namespace RokettoLaunch.Forms yesNoPickerBox1.TabIndex = 197; yesNoPickerBox1.TabStop = false; yesNoPickerBox1.Value = false; - // + // // numericBox1 - // + // numericBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right; numericBox1.BackColor = System.Drawing.Color.Transparent; numericBox1.EnableMovable = false; @@ -157,9 +154,9 @@ namespace RokettoLaunch.Forms numericBox1.TabIndex = 196; numericBox1.TabStop = false; numericBox1.Value = 1; - // + // // label2 - // + // label2.AutoSize = true; label2.BackColor = System.Drawing.Color.Transparent; label2.ForeColor = System.Drawing.SystemColors.ControlText; @@ -171,9 +168,9 @@ namespace RokettoLaunch.Forms label2.TabIndex = 194; label2.Text = "Show Big Icons"; label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // label4 - // + // label4.AutoSize = true; label4.BackColor = System.Drawing.Color.Transparent; label4.ForeColor = System.Drawing.SystemColors.ControlText; @@ -185,9 +182,9 @@ namespace RokettoLaunch.Forms label4.TabIndex = 193; label4.Text = "Tiles Per Row"; label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // togglePanel2 - // + // togglePanel2.BackColor = System.Drawing.Color.FromArgb(252, 252, 252); togglePanel2.CloseIcon = "H"; togglePanel2.Controls.Add(label6); @@ -208,9 +205,9 @@ namespace RokettoLaunch.Forms togglePanel2.Title = "Behaviour"; togglePanel2.TitleContextMenuStrip = null; togglePanel2.TitleCursor = Cursors.Default; - // + // // label6 - // + // label6.AutoSize = true; label6.BackColor = System.Drawing.Color.Transparent; label6.ForeColor = System.Drawing.SystemColors.ControlText; @@ -222,9 +219,9 @@ namespace RokettoLaunch.Forms label6.TabIndex = 182; label6.Text = "Close To System Tray"; label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // yesNoPickerBox4 - // + // yesNoPickerBox4.Anchor = AnchorStyles.Top | AnchorStyles.Right; yesNoPickerBox4.BackColor = System.Drawing.Color.Transparent; yesNoPickerBox4.EnableMovable = false; @@ -235,9 +232,9 @@ namespace RokettoLaunch.Forms yesNoPickerBox4.TabIndex = 195; yesNoPickerBox4.TabStop = false; yesNoPickerBox4.Value = false; - // + // // textBox1 - // + // textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; textBox1.BackColor = System.Drawing.Color.Transparent; textBox1.EnableMovable = false; @@ -254,9 +251,9 @@ namespace RokettoLaunch.Forms textBox1.TabIndex = 194; textBox1.TabStop = false; textBox1.UseSystemPasswordChar = false; - // + // // yesNoPickerBox2 - // + // yesNoPickerBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right; yesNoPickerBox2.BackColor = System.Drawing.Color.Transparent; yesNoPickerBox2.EnableMovable = false; @@ -267,9 +264,9 @@ namespace RokettoLaunch.Forms yesNoPickerBox2.TabIndex = 192; yesNoPickerBox2.TabStop = false; yesNoPickerBox2.Value = false; - // + // // label3 - // + // label3.AutoSize = true; label3.BackColor = System.Drawing.Color.Transparent; label3.ForeColor = System.Drawing.SystemColors.ControlText; @@ -281,9 +278,9 @@ namespace RokettoLaunch.Forms label3.TabIndex = 190; label3.Text = "Always On Top"; label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // label1 - // + // label1.AutoSize = true; label1.BackColor = System.Drawing.Color.Transparent; label1.ForeColor = System.Drawing.SystemColors.ControlText; @@ -295,9 +292,9 @@ namespace RokettoLaunch.Forms label1.TabIndex = 153; label1.Text = "Show Toggle Hotkey"; label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // togglePanel3 - // + // togglePanel3.BackColor = System.Drawing.Color.FromArgb(252, 252, 252); togglePanel3.CloseIcon = "H"; togglePanel3.Controls.Add(label7); @@ -314,9 +311,9 @@ namespace RokettoLaunch.Forms togglePanel3.Title = "Action"; togglePanel3.TitleContextMenuStrip = null; togglePanel3.TitleCursor = Cursors.Default; - // + // // label7 - // + // label7.AutoSize = true; label7.BackColor = System.Drawing.Color.Transparent; label7.ForeColor = System.Drawing.SystemColors.ControlText; @@ -328,9 +325,9 @@ namespace RokettoLaunch.Forms label7.TabIndex = 184; label7.Text = "Hide On Execute"; label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // + // // yesNoPickerBox3 - // + // yesNoPickerBox3.Anchor = AnchorStyles.Top | AnchorStyles.Right; yesNoPickerBox3.BackColor = System.Drawing.Color.Transparent; yesNoPickerBox3.EnableMovable = false; @@ -341,9 +338,9 @@ namespace RokettoLaunch.Forms yesNoPickerBox3.TabIndex = 193; yesNoPickerBox3.TabStop = false; yesNoPickerBox3.Value = false; - // + // // OptionsForm - // + // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; BackColor = System.Drawing.Color.White; diff --git a/MainForm.cs b/MainForm.cs index e6eada2..0928f63 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -10,9 +10,9 @@ using RokettoLaunch.DTOs.SaveFile; using RokettoLaunch.Forms; using RokettoLaunch.Windows.Forms; using RyzStudio; +using RyzStudio.Services; +using RyzStudio.Windows.FontForms.TextBox; using RyzStudio.Windows.Forms; -using RyzStudio.Windows.ThemedForms; -using RyzStudio.Windows.ThemedForms.ButtonTextBox; namespace RokettoLaunch { @@ -49,15 +49,23 @@ namespace RokettoLaunch { base.OnShown(e); - var args = WinApplication.GetCommandLine(); + var args = this.GetCommandLine(); + + string jsonfigFilename = null; + if (!args.TryGetValue("open", out jsonfigFilename)) + { + if (!args.TryGetValue("o", out jsonfigFilename)) + { + jsonfigFilename = null; + } + } - string jsonfigFilename = args.Where(x => (x.Key.Equals("o") || x.Key.Equals("open"))).Select(x => x.Value).FirstOrDefault(); if (string.IsNullOrWhiteSpace(jsonfigFilename)) { jsonfigFilename = Path.ChangeExtension(Application.ExecutablePath, "jsonfig"); } - if (!string.IsNullOrWhiteSpace(jsonfigFilename) && File.Exists(jsonfigFilename)) + if (File.Exists(jsonfigFilename)) { await _fileSessionManager.OpenSession(jsonfigFilename); } @@ -66,7 +74,7 @@ namespace RokettoLaunch //await _fileSessionManager.NewSession(); } - UIControl.SetFocus(this); + UIControl.Invoke(this, (x) => this.Focus()); } protected async override void OnFormClosing(FormClosingEventArgs e) @@ -95,7 +103,7 @@ namespace RokettoLaunch return; } - if ((this.CurrentSession?.ShowToggleHotkey ?? new ThKeyCodeTextBox.Results()).Key != Keys.None) + if ((this.CurrentSession?.ShowToggleHotkey ?? new T4KeyTextBox.Results()).Key != Keys.None) { #if !DEBUG RyzStudio.Runtime.InteropServices.User32.UnregisterHotKey((IntPtr)Handle, 1); @@ -149,17 +157,17 @@ namespace RokettoLaunch { if (!this.CurrentSession.StartPosition.IsEmpty) { - UIControl.SetLocation(this, this.CurrentSession.StartPosition); + UIControl.Invoke(this, (x) => this.Location = this.CurrentSession.StartPosition); } if (this.CurrentSession.Width > 0) { - UIControl.SetClientWidth(this, this.CurrentSession.Width); + UIControl.Invoke(this, (x) => this.Width = this.CurrentSession.Width); } if (this.CurrentSession.Height > 0) { - UIControl.SetClientHeight(this, this.CurrentSession.Height); + UIControl.Invoke(this, (x) => this.Height = this.CurrentSession.Height); } } @@ -171,7 +179,7 @@ namespace RokettoLaunch RyzStudio.Runtime.InteropServices.User32.UnregisterHotKey((IntPtr)Handle, 1); }); - if ((this.CurrentSession?.ShowToggleHotkey ?? new ThKeyCodeTextBox.Results()).Key != Keys.None) + if ((this.CurrentSession?.ShowToggleHotkey ?? new RyzStudio.Windows.FontForms.TextBox.T4KeyTextBox.Results()).Key != Keys.None) { UIControl.Invoke(this, (x) => { @@ -180,7 +188,7 @@ namespace RokettoLaunch } #endif - UIControl.SetTopMost(this, this.CurrentSession.AlwaysOnTop); + UIControl.Invoke(this, (x) => this.TopMost = this.CurrentSession.AlwaysOnTop); } private void MainMenuStrip_MenuActivate(object sender, EventArgs e) @@ -381,7 +389,7 @@ namespace RokettoLaunch /// private void AboutToolStripMenuItem_Click(object sender, EventArgs e) { - var form = new RyzStudio.Windows.ThemedForms.AboutForm(); + var form = new RyzStudio.Forms.T3AboutForm(); form.ProductURL = AppResource.AppProductURL; form.AuthorURL = AppResource.AppAuthorURL; form.CompanyURL = AppResource.AppCompanyURL; @@ -425,7 +433,7 @@ namespace RokettoLaunch // Enforce minimum number of rows this.CurrentSession.TilesPerRow = Math.Max(this.CurrentSession.TilesPerRow, TileLayoutPanel.MIN_COLUMNS); - UIControl.Clear(flowLayoutPanel1); + UIControl.Invoke(flowLayoutPanel1, (x) => flowLayoutPanel1.Controls.Clear()); AddGroupToolStripMenuItem_Click(null, null); @@ -490,7 +498,7 @@ namespace RokettoLaunch this.CurrentSession.Width = this.DisplayRectangle.Width; this.CurrentSession.Height = this.DisplayRectangle.Height; - var result = GenericResult.Create(); + var result = MethodResult.Create(); switch (Path.GetExtension(filename?.ToLower()?.Trim() ?? string.Empty)) { @@ -511,34 +519,34 @@ namespace RokettoLaunch result = await RyzStudio.IO.Compression.ZFile.WriteFile(filename, "Document.json", this.CurrentSession); break; default: - result = GenericResult.Fault("Format not supported"); + result = MethodResult.Error("Format not supported"); break; } - if (result.IsSuccess) + if (result.Success) { if (showNotices) { - ThMessageBox.Show(this, "Session saved!", "Save session", MessageBoxButtons.OK, MessageBoxIcon.Information); + RyzStudio.Forms.T3MessageBox.Show(this, "Session saved!", "Save session", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { if (showNotices) { - ThMessageBox.Show(this, "Session saved!", "Save session"); + RyzStudio.Forms.T3MessageBox.Show(this, "Session saved!", "Save session"); } } isBusy = false; - return result.IsSuccess; + return result.Success; }); } private async Task fileSessionManager_OnClearSession(FileSessionManager sender) { - UIControl.Clear(flowLayoutPanel1); + UIControl.Invoke(flowLayoutPanel1, (x) => flowLayoutPanel1.Controls.Clear()); return true; } @@ -550,13 +558,13 @@ namespace RokettoLaunch switch (sender.SessionState) { case FileSessionManager.SessionStateEnum.New: - UIControl.SetText(this, "New Session - " + Application.ProductName); + this.SetText("New Session - " + Application.ProductName); break; case FileSessionManager.SessionStateEnum.Open: - UIControl.SetText(this, Path.GetFileNameWithoutExtension(filename) + " - " + Application.ProductName); + this.SetText(Path.GetFileNameWithoutExtension(filename) + " - " + Application.ProductName); break; case FileSessionManager.SessionStateEnum.Close: - UIControl.SetText(this, Application.ProductName); + this.SetText(Application.ProductName); break; default: break; @@ -575,7 +583,7 @@ namespace RokettoLaunch /// private void AddTileToolStripMenuItem_Click(object sender, EventArgs e) { - var panel = UIControl.GetOwner((ToolStripMenuItem)sender); + var panel = ((ToolStripMenuItem)sender).GetOwner(); if (panel == null) { return; @@ -586,32 +594,35 @@ namespace RokettoLaunch return; } - var groupInfo = this.CurrentSession.Groups.Where(x => x.Id == panel.ToggleControlId.Value).FirstOrDefault(); - if (groupInfo == null) - { - return; - } + AddNewTile(panel.ToggleControlId.Value, (TileLayoutPanel)panel.ToggleControl); - var newTileInfo = new App4Options.Item() - { - Id = Guid.NewGuid(), - Title = "New Tile", - IsGroup = false, - Position = new Point(-1, -1) - }; + //var groupInfo = this.CurrentSession.Groups.Where(x => x.Id == panel.ToggleControlId.Value).FirstOrDefault(); + //if (groupInfo == null) + //{ + // return; + //} - newTileInfo = groupInfo.AddItem(newTileInfo); + //var newTileInfo = new App4Options.Item() + //{ + // Id = Guid.NewGuid(), + // Title = "New Tile", + // IsGroup = false, + // Position = new Point(-1, -1) + //}; - // Update table layout - var newTilePanel = CreateTile(newTileInfo); + //newTileInfo = groupInfo.AddItem(newTileInfo); - var tableLayout = (TileLayoutPanel)panel.ToggleControl; - tableLayout.AddTilePanel(newTilePanel, newTileInfo.Position.X, newTileInfo.Position.Y); - tableLayout.SetGridSize(groupInfo.GridSize); + //// Update table layout + //var newTilePanel = CreateTile(newTileInfo); + + //var tableLayout = (TileLayoutPanel)panel.ToggleControl; + //tableLayout.AddTilePanel(newTilePanel, newTileInfo.Position.X, newTileInfo.Position.Y); + //tableLayout.SetGridSize(groupInfo.GridSize); _fileSessionManager.HasChanged = true; } + /// /// Add Folder /// @@ -619,7 +630,7 @@ namespace RokettoLaunch /// private void AddFolderToolStripMenuItem_Click(object sender, EventArgs e) { - var panel = UIControl.GetOwner((ToolStripMenuItem)sender); + var panel = ((ToolStripMenuItem)sender).GetOwner(); if (panel == null) { return; @@ -663,7 +674,7 @@ namespace RokettoLaunch /// private void EditGroupToolStripMenuItem_Click(object sender, EventArgs e) { - var panel = UIControl.GetOwner((ToolStripMenuItem)sender); + var panel = ((ToolStripMenuItem)sender).GetOwner(); if (panel == null) { return; @@ -707,7 +718,7 @@ namespace RokettoLaunch /// private async void toolStripMenuItem5_Click(object sender, EventArgs e) { - var panel = UIControl.GetOwner((ToolStripMenuItem)sender); + var panel = ((ToolStripMenuItem)sender).GetOwner(); if (panel == null) { return; @@ -745,19 +756,19 @@ namespace RokettoLaunch /// private void MoveTopToolStripMenuItem_Click(object sender, EventArgs e) { - var panel = UIControl.GetOwner((ToolStripDropDownItem)sender); + var panel = ((ToolStripDropDownItem)sender).GetOwner(); if (panel == null) { return; } // Move header - UIControl.MoveTop(flowLayoutPanel1, panel); + flowLayoutPanel1.MoveTop(panel); // Move sidecar if (panel.ToggleControl != null) { - UIControl.MoveNext(flowLayoutPanel1, panel, panel.ToggleControl); + flowLayoutPanel1.MoveNext(panel, panel.ToggleControl); } // Move group @@ -780,19 +791,19 @@ namespace RokettoLaunch /// private void MoveUpToolStripMenuItem_Click(object sender, EventArgs e) { - var panel = UIControl.GetOwner((ToolStripDropDownItem)sender); + var panel = ((ToolStripDropDownItem)sender).GetOwner(); if (panel == null) { return; } // Move header - UIControl.MovePos(flowLayoutPanel1, panel, -2); + flowLayoutPanel1.MovePos(panel, -2); // Move sidecar if (panel.ToggleControl != null) { - UIControl.MoveNext(flowLayoutPanel1, panel, panel.ToggleControl); + flowLayoutPanel1.MoveNext(panel, panel.ToggleControl); } // Move group @@ -815,19 +826,19 @@ namespace RokettoLaunch /// private void MoveDownToolStripMenuItem_Click(object sender, EventArgs e) { - var panel = UIControl.GetOwner((ToolStripDropDownItem)sender); + var panel = ((ToolStripDropDownItem)sender).GetOwner(); if (panel == null) { return; } // Move header - UIControl.MovePos(flowLayoutPanel1, panel, 3); + flowLayoutPanel1.MovePos(panel, 3); // Move sidecar if (panel.ToggleControl != null) { - UIControl.MovePos(flowLayoutPanel1, panel.ToggleControl, 3); + flowLayoutPanel1.MovePos(panel.ToggleControl, 3); } // Move group @@ -850,19 +861,19 @@ namespace RokettoLaunch /// private void MoveBottomToolStripMenuItem_Click(object sender, EventArgs e) { - var panel = UIControl.GetOwner((ToolStripDropDownItem)sender); + var panel = ((ToolStripDropDownItem)sender).GetOwner(); if (panel == null) { return; } // Move header - UIControl.MoveBottom(flowLayoutPanel1, panel); + flowLayoutPanel1.MoveBottom(panel); // Move sidecar if (panel.ToggleControl != null) { - UIControl.MoveNext(flowLayoutPanel1, panel, panel.ToggleControl); + flowLayoutPanel1.MoveNext(panel, panel.ToggleControl); } // Move group @@ -892,7 +903,7 @@ namespace RokettoLaunch return; } - var panel = UIControl.GetOwner((ToolStripMenuItem)sender); + var panel = ((ToolStripMenuItem)sender).GetOwner(); if (panel?.Parent == null) { return; @@ -929,7 +940,7 @@ namespace RokettoLaunch /// private void EditTileToolStripMenuItem_Click(object sender, EventArgs e) { - var tilePanel = UIControl.GetOwner((ToolStripMenuItem)sender); + var tilePanel = ((ToolStripMenuItem)sender).GetOwner(); var tileInfo = this.GetTileInfo(tilePanel); if (tileInfo == null) @@ -976,7 +987,7 @@ namespace RokettoLaunch /// private async void CopyToTileToolStripMenuItem_Click(object sender, EventArgs e) { - var tilePanel = UIControl.GetOwner((ToolStripMenuItem)sender); + var tilePanel = ((ToolStripMenuItem)sender).GetOwner(); var tileInfo = this.GetTileInfo(tilePanel); if (tileInfo == null) @@ -1009,8 +1020,6 @@ namespace RokettoLaunch var tableLayout = (TileLayoutPanel)headers[n].ToggleControl; tableLayout.AddTilePanel(newTilePanel, newTileInfo.Position.X, newTileInfo.Position.Y); tableLayout.SetGridSize(this.CurrentSession.Groups[n].GridSize); - - } } @@ -1027,7 +1036,7 @@ namespace RokettoLaunch /// private void RemoveTileToolStripMenuItem_Click(object sender, EventArgs e) { - var tilePanel = UIControl.GetOwner((ToolStripMenuItem)sender); + var tilePanel = ((ToolStripMenuItem)sender).GetOwner(); var tileInfo = this.GetTileInfo(tilePanel); if (tileInfo == null) @@ -1056,6 +1065,32 @@ namespace RokettoLaunch #endregion + private TilePanel AddNewTile(Guid groupId, TileLayoutPanel tableLayout) + { + var groupInfo = this.CurrentSession.Groups.Where(x => x.Id == groupId).FirstOrDefault(); + if (groupInfo == null) + { + return null; + } + + var newTileInfo = new App4Options.Item() + { + Id = Guid.NewGuid(), + Title = "New Tile", + IsGroup = false, + Position = new Point(-1, -1) + }; + + newTileInfo = groupInfo.AddItem(newTileInfo); + + // Update table layout + var newTilePanel = CreateTile(newTileInfo); + + tableLayout.AddTilePanel(newTilePanel, newTileInfo.Position.X, newTileInfo.Position.Y); + tableLayout.SetGridSize(groupInfo.GridSize); + + return newTilePanel; + } private void AddGroup(App4Options.Group groupInfo) { @@ -1067,8 +1102,8 @@ namespace RokettoLaunch header.ToggleControl = tableLayout; header.IsOpen = groupInfo.IsOpen; - UIControl.Add(flowLayoutPanel1, header); - UIControl.Add(flowLayoutPanel1, tableLayout); + UIControl.Invoke(flowLayoutPanel1, (x) => flowLayoutPanel1.Controls.Add(header)); + UIControl.Invoke(flowLayoutPanel1, (x) => flowLayoutPanel1.Controls.Add(tableLayout)); foreach (var item in groupInfo.Items ?? new List()) { @@ -1105,10 +1140,33 @@ namespace RokettoLaunch } } + private void ConvertToFolder(App4Options.Item tileInfo) + { + if (tileInfo.IsGroup) + { + return; + } + + var newTileInfo = tileInfo.CopyOf(false); + + tileInfo.Title = "New Folder"; + tileInfo.IsGroup = true; + tileInfo.TargetPath = string.Empty; + tileInfo.StartPath = string.Empty; + tileInfo.Argument = string.Empty; + tileInfo.RunAsAdmin = false; + + tileInfo.Items.Clear(); + tileInfo.Items.Add(newTileInfo); + + tileInfo.ResolvePaths(); + } + private TileLayoutPanel CreateTable(Size gridSize) { var layoutPanel = new TileLayoutPanel(); - layoutPanel.DragDrop += LayoutPanel_DragDrop; + layoutPanel.DragDrop += LayoutPanel_TileDragDrop; + layoutPanel.DragDrop += LayoutPanel_FileDragDrop; layoutPanel.SetGridSize(gridSize); return layoutPanel; @@ -1222,8 +1280,13 @@ namespace RokettoLaunch return contextMenu; } - private async void LayoutPanel_DragDrop(object sender, DragEventArgs e) + private async void LayoutPanel_TileDragDrop(object sender, DragEventArgs e) { + if (e.Effect != DragDropEffects.Move) + { + return; + } + if (!e.Data.TryGetData(out var tilePanel)) { return; @@ -1260,6 +1323,72 @@ namespace RokettoLaunch _fileSessionManager.HasChanged = true; } + private async void LayoutPanel_FileDragDrop(object sender, DragEventArgs e) + { + if (e.Effect != DragDropEffects.Link) + { + return; + } + + var fileList = e.Data.GetData(DataFormats.FileDrop) as string[]; + if (fileList == null) + { + return; + } + + if (fileList.Length <= 0) + { + return; + } + + var tableLayout = (sender as TileLayoutPanel); + if (tableLayout == null) + { + return; + } + + if (tableLayout.GroupId == Guid.Empty) + { + return; + } + + var newTilePanel = AddNewTile(tableLayout.GroupId, tableLayout); + var tileInfo = this.CurrentSession.FindById(newTilePanel.TileId); + + if (fileList.Length <= 1) + { + tileInfo.IsGroup = false; + tileInfo.TargetPath = fileList[0]; + tileInfo.StartPath = string.Empty; + tileInfo.Argument = string.Empty; + tileInfo.RunAsAdmin = false; + + tileInfo.Items.Clear(); + tileInfo.ResolvePaths(); + + tileInfo.Title = RyzStudio.IO.File.GetName(tileInfo.ResolvedTargetPath); + } + else + { + tileInfo.Title = "New Folder"; + tileInfo.IsGroup = true; + tileInfo.TargetPath = string.Empty; + tileInfo.StartPath = string.Empty; + tileInfo.Argument = string.Empty; + tileInfo.RunAsAdmin = false; + + tileInfo.Items.Clear(); + + this.AddToFolder(tileInfo, fileList.ToList(), false); + + tileInfo.ResolvePaths(); + } + + this.UpdateTile(newTilePanel, tileInfo); + + _fileSessionManager.HasChanged = true; + } + private void TilePanel_MouseClick(object sender, MouseEventArgs e) { @@ -1306,60 +1435,59 @@ namespace RokettoLaunch var tileInfo = this.CurrentSession.FindById(sender.TileId); // Append - if (keys.HasFlag(Keys.Shift)) + if (keys.HasFlag(Keys.Shift) || ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)) { if (tileInfo.IsGroup) { - this.AddToFolder(tileInfo, paths, true); + if (MessageBox.Show("Do you want to add shortcut to the folder?", "Add Item", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) + { + AddToFolder(tileInfo, paths, true); + } } else { - var newTileInfo = tileInfo.CopyOf(); - - tileInfo.Title = "New Folder"; - tileInfo.IsGroup = true; - tileInfo.TargetPath = string.Empty; - tileInfo.StartPath = string.Empty; - tileInfo.Argument = string.Empty; - tileInfo.RunAsAdmin = false; - - tileInfo.Items.Clear(); - tileInfo.Items.Add(newTileInfo); - - this.AddToFolder(tileInfo, paths, true); - - tileInfo.ResolvePaths(); + if (MessageBox.Show("Do you want to convert this shortcut to a folder, then add shortcut to the folder?", "Add Item (Convert)", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) + { + ConvertToFolder(tileInfo); + AddToFolder(tileInfo, paths, true); + } } } else { if (paths.Count <= 1) { - tileInfo.IsGroup = false; - tileInfo.TargetPath = paths[0]; - tileInfo.StartPath = string.Empty; - tileInfo.Argument = string.Empty; - tileInfo.RunAsAdmin = false; + if (MessageBox.Show("Do you want to replace this shortcut?", "Replace Item", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) + { + tileInfo.IsGroup = false; + tileInfo.TargetPath = paths[0]; + tileInfo.StartPath = string.Empty; + tileInfo.Argument = string.Empty; + tileInfo.RunAsAdmin = false; - tileInfo.Items.Clear(); - tileInfo.ResolvePaths(); + tileInfo.Items.Clear(); + tileInfo.ResolvePaths(); - tileInfo.Title = RyzStudio.IO.File.GetName(tileInfo.ResolvedTargetPath); + tileInfo.Title = RyzStudio.IO.File.GetName(tileInfo.ResolvedTargetPath); + } } else { - tileInfo.Title = "New Folder"; - tileInfo.IsGroup = true; - tileInfo.TargetPath = string.Empty; - tileInfo.StartPath = string.Empty; - tileInfo.Argument = string.Empty; - tileInfo.RunAsAdmin = false; + if (MessageBox.Show("Do you want to replace this shortcut with a folder?", "Replace Item (Folder)", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) + { + tileInfo.Title = "New Folder"; + tileInfo.IsGroup = true; + tileInfo.TargetPath = string.Empty; + tileInfo.StartPath = string.Empty; + tileInfo.Argument = string.Empty; + tileInfo.RunAsAdmin = false; - tileInfo.Items.Clear(); + tileInfo.Items.Clear(); - this.AddToFolder(tileInfo, paths, false); + this.AddToFolder(tileInfo, paths, false); - tileInfo.ResolvePaths(); + tileInfo.ResolvePaths(); + } } } @@ -1381,6 +1509,11 @@ namespace RokettoLaunch return; } + if (string.IsNullOrWhiteSpace(model.TargetPath)) + { + return; + } + if (this.CurrentSession.HideOnExecute) { this.Visible = false; diff --git a/RokettoLaunch.csproj b/RokettoLaunch.csproj index 9905373..e41b57e 100644 --- a/RokettoLaunch.csproj +++ b/RokettoLaunch.csproj @@ -14,7 +14,7 @@ Ray Lam 1.0.0.0 1.0.0.0 - 0.4.1.0217 + 0.4.2.204 False x64 icon-128.png @@ -47,6 +47,7 @@ + @@ -64,6 +65,7 @@ + @@ -79,8 +81,9 @@ - - + + + diff --git a/Windows/Forms/TileForms/DefaultVisualStyle.cs b/Windows/Forms/TileForms/DefaultVisualStyle.cs new file mode 100644 index 0000000..8aba9a2 --- /dev/null +++ b/Windows/Forms/TileForms/DefaultVisualStyle.cs @@ -0,0 +1,55 @@ +using System.Drawing; +using RyzStudio.Drawing; + +namespace RyzStudio.Windows.TileForms +{ + public class DefaultVisualStyle + { + //private static FontProvider _fontProvider; + + //public static FontProvider FontProvider + //{ + // get + // { + // if (_fontProvider == null) + // { + // _fontProvider = new FontProvider(); + // _fontProvider.AddFont(Resource2.RyzStudio8); + // } + + // return _fontProvider; + // } + //} + + //public static FontFamily[] Fonts + //{ + // get + // { + // return FontProvider.Collection.Families; + // } + //} + + + public class StyleSet + { + public BorderStyle Border { get; set; } = new BorderStyle(); + + public Color BackColour { get; set; } + + public Color ForeColour { get; set; } + + //public Color IconColour { get; set; } + + } + + + public static StyleSet Default = new StyleSet() + { + Border = BorderStyle.Create(1, Color.FromArgb(204, 206, 218), 0, 2), + BackColour = Color.FromArgb(250, 250, 250), + ForeColour = Color.FromArgb(99, 105, 119), + //IconColour = Color.FromArgb(86, 86, 149) + }; + + } +} \ No newline at end of file diff --git a/Windows/Forms/TileForms/Tile.Designer.cs b/Windows/Forms/TileForms/Tile.Designer.cs new file mode 100644 index 0000000..ff80652 --- /dev/null +++ b/Windows/Forms/TileForms/Tile.Designer.cs @@ -0,0 +1,43 @@ +namespace RyzStudio.Windows.TileForms +{ + partial class Tile + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + SuspendLayout(); + // + // Tile + // + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + Name = "Tile"; + Size = new System.Drawing.Size(82, 81); + ResumeLayout(false); + } + + #endregion + } +} diff --git a/Windows/Forms/TileForms/Tile.cs b/Windows/Forms/TileForms/Tile.cs new file mode 100644 index 0000000..53c5c15 --- /dev/null +++ b/Windows/Forms/TileForms/Tile.cs @@ -0,0 +1,130 @@ +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace RyzStudio.Windows.TileForms +{ + public partial class Tile : RyzStudio.Windows.Forms.TUserControl + { + private int _imageLeft = 0; + private int _imageTop = 11; + private int _labelMargin = 3; + private int _labelTop = 47; + private Rectangle _labelRectangle = new Rectangle(); + + private string _title = ""; + private Image _largeIcon = null; + + + public Tile() + { + InitializeComponent(); + + this.AutoScaleMode = AutoScaleMode.None; + this.BackColor = DefaultVisualStyle.Default.BackColour; + this.DoubleBuffered = true; + this.Font = new Font(this.Font.FontFamily, 8.25F); + this.ForeColor = DefaultVisualStyle.Default.ForeColour; + //this.Size = new Size(70, 70); + + this.EnableMovable = true; + } + +#region encapsulated properties + + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public override bool AutoSize { get => base.AutoSize; set => base.AutoSize = false; } + + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public new AutoScaleMode AutoScaleMode { get => base.AutoScaleMode; set => base.AutoScaleMode = AutoScaleMode.None; } + + //[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + //public new Padding Margin { get => base.Margin; set => base.Margin = new Padding(0); } + + //[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + //public new Padding Padding { get => base.Padding; set => base.Padding = new Padding(0); } + + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public override Size MaximumSize { get => base.MaximumSize; set => this.Size = value; } + + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public override Size MinimumSize { get => base.MinimumSize; set => this.Size = value; } + + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public new Size Size { get => base.Size; set => base.MaximumSize = base.MinimumSize = base.Size = value; } + +#endregion + +#region public properties + + [Category("Appearance"), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] + public Image LargeIcon + { + get => _largeIcon; + set + { + _largeIcon = value; + + if (_largeIcon == null) + { + _imageLeft = 0; + } + else + { + _imageLeft = (this.Width - _largeIcon.Width) / 2; + } + + this.Invalidate(); + } + } + + [Category("Appearance"), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] + public string Title + { + get => _title; + set + { + _title = value; + + _labelRectangle = new Rectangle(_labelMargin, _labelTop, (this.Width - (_labelMargin * 2)), (this.Height - _labelTop - 1)); + + this.Invalidate(); + } + } + + [Category("Behaviour"), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] + public ContextMenuStrip LeftContextMenuStrip { get; set; } + +#endregion + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + + Graphics g = e.Graphics; + + if (this.LargeIcon != null) + { + g.DrawImage(this.LargeIcon, new Point(_imageLeft, _imageTop)); + } + + if (!string.IsNullOrWhiteSpace(this.Title)) + { + TextRenderer.DrawText(e.Graphics, this.Title, this.Font, _labelRectangle, this.ForeColor, TextFormatFlags.HorizontalCenter | TextFormatFlags.NoPadding | TextFormatFlags.EndEllipsis); + } + + g.DrawRectangle(new Pen(DefaultVisualStyle.Default.Border.Colour, DefaultVisualStyle.Default.Border.Width), new Rectangle(this.DisplayRectangle.X, this.DisplayRectangle.Y, (this.DisplayRectangle.Width - 1), (this.DisplayRectangle.Height - 1))); + } + + protected override void OnMouseClick(MouseEventArgs e) + { + base.OnMouseClick(e); + + if (e.Button == MouseButtons.Left) + { + this.LeftContextMenuStrip?.Show(this, e.Location); + } + } + + } +} \ No newline at end of file diff --git a/Windows/Forms/TileForms/Tile.resx b/Windows/Forms/TileForms/Tile.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/Windows/Forms/TileForms/Tile.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Windows/Forms/TileLayoutPanel.cs b/Windows/Forms/TileLayoutPanel.cs index b1b4c84..98a15a5 100644 --- a/Windows/Forms/TileLayoutPanel.cs +++ b/Windows/Forms/TileLayoutPanel.cs @@ -22,6 +22,13 @@ namespace RokettoLaunch.Windows.Forms this.RowCount = 0; } + //protected override void OnDragOver(DragEventArgs e) + //{ + // base.OnDragDrop(e); + + // e.Effect = (e.Data.GetDataPresent(DataFormats.FileDrop)) ? DragDropEffects.Link : DragDropEffects.None; + //} + protected override void OnDragEnter(DragEventArgs e) { base.OnDragEnter(e); @@ -30,6 +37,14 @@ namespace RokettoLaunch.Windows.Forms { e.Effect = DragDropEffects.Move; } + else if (e.Data.GetDataPresent(DataFormats.FileDrop)) + { + e.Effect = DragDropEffects.Link; + } + else + { + e.Effect = DragDropEffects.None; + } } @@ -39,7 +54,7 @@ namespace RokettoLaunch.Windows.Forms public void AddTilePanel(TilePanel tilePanel, int x, int y) { - UIControl.Add(this, tilePanel, x, y); + UIControl.Invoke(this, (_) => this.Controls.Add(tilePanel, x, y)); } public void SetGridSize(Size gridSize) diff --git a/Windows/Forms/TilePanel.cs b/Windows/Forms/TilePanel.cs index af33696..c06a478 100644 --- a/Windows/Forms/TilePanel.cs +++ b/Windows/Forms/TilePanel.cs @@ -42,7 +42,14 @@ namespace RokettoLaunch.Windows.Forms { base.OnDragDrop(e); - e.Effect = (e.Data.GetDataPresent(DataFormats.FileDrop)) ? DragDropEffects.Link : DragDropEffects.None; + if (e.Data.GetDataPresent(DataFormats.FileDrop)) + { + e.Effect = ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) ? DragDropEffects.Copy : DragDropEffects.Link; + } + else + { + e.Effect = DragDropEffects.None; + } } protected override void OnDragDrop(DragEventArgs e)