Fixed file session manager
Added has-changed detection flag Fixed dialog result null-value Changed session manager event names
This commit is contained in:
parent
f06d311f40
commit
2e3b2998e7
186
EditGroupForm.cs
Normal file
186
EditGroupForm.cs
Normal file
@ -0,0 +1,186 @@
|
||||
using System.Windows.Forms;
|
||||
using FizzyLauncher.Models;
|
||||
using RyzStudio.Windows.Forms;
|
||||
using RyzStudio.Windows.ThemedForms;
|
||||
using RyzStudio.Windows.ThemedForms.ButtonTextBox;
|
||||
using RyzStudio.Windows.ThemedForms.PickerBox;
|
||||
|
||||
namespace FizzyLauncher
|
||||
{
|
||||
public class EditGroupForm : TDialog
|
||||
{
|
||||
private Label label2;
|
||||
private Label label1;
|
||||
private ThButton button1;
|
||||
private ThYesNoPickerBox pickerBox1;
|
||||
private THorizontalSeparator horizontalSeparator2;
|
||||
private ThClearableTextBox textBox1;
|
||||
|
||||
private TileGroupModel result = null;
|
||||
|
||||
|
||||
public EditGroupForm(TileGroupModel model = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
result = model;
|
||||
|
||||
StartPosition = FormStartPosition.WindowsDefaultLocation;
|
||||
Text = result == null ? "Add Group" : "Edit Group";
|
||||
OkButton = button1;
|
||||
|
||||
pickerBox1.ComboBox.Items.Clear();
|
||||
pickerBox1.ComboBox.Items.AddRange(new string[] { "No", "Yes" });
|
||||
if (pickerBox1.ComboBox.Items.Count > 0)
|
||||
{
|
||||
pickerBox1.ComboBox.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
if (result != null)
|
||||
{
|
||||
textBox1.Text = result.Title?.Trim() ?? string.Empty;
|
||||
pickerBox1.Value = result.IsExpanded;
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditGroupForm));
|
||||
textBox1 = new ThClearableTextBox();
|
||||
label2 = new Label();
|
||||
label1 = new Label();
|
||||
button1 = new ThButton();
|
||||
pickerBox1 = new ThYesNoPickerBox();
|
||||
horizontalSeparator2 = new THorizontalSeparator();
|
||||
SuspendLayout();
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
textBox1.AcceptButton = null;
|
||||
textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
textBox1.BackColor = System.Drawing.Color.Transparent;
|
||||
textBox1.ClearedValue = "";
|
||||
textBox1.EnableReactiveVisual = true;
|
||||
textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
|
||||
textBox1.HighlightImage = (System.Drawing.Image)resources.GetObject("textBox1.HighlightImage");
|
||||
textBox1.Location = new System.Drawing.Point(192, 20);
|
||||
textBox1.Margin = new Padding(10, 10, 10, 0);
|
||||
textBox1.Name = "textBox1";
|
||||
textBox1.NormalImage = (System.Drawing.Image)resources.GetObject("textBox1.NormalImage");
|
||||
textBox1.Padding = new Padding(4, 4, 3, 3);
|
||||
textBox1.Size = new System.Drawing.Size(177, 32);
|
||||
textBox1.TabIndex = 152;
|
||||
textBox1.TabStop = false;
|
||||
textBox1.UseSystemPasswordChar = false;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
label2.AutoSize = true;
|
||||
label2.BackColor = System.Drawing.Color.Transparent;
|
||||
label2.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
label2.Location = new System.Drawing.Point(10, 62);
|
||||
label2.Name = "label2";
|
||||
label2.Padding = new Padding(0, 9, 0, 10);
|
||||
label2.Size = new System.Drawing.Size(91, 34);
|
||||
label2.TabIndex = 155;
|
||||
label2.Text = "Show Expanded";
|
||||
label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
label1.AutoSize = true;
|
||||
label1.BackColor = System.Drawing.Color.Transparent;
|
||||
label1.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
label1.Location = new System.Drawing.Point(10, 21);
|
||||
label1.Margin = new Padding(0);
|
||||
label1.Name = "label1";
|
||||
label1.Padding = new Padding(0, 9, 0, 10);
|
||||
label1.Size = new System.Drawing.Size(29, 34);
|
||||
label1.TabIndex = 153;
|
||||
label1.Text = "Title";
|
||||
label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
button1.AcceptButton = null;
|
||||
button1.ActiveImage = null;
|
||||
button1.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
button1.BackColor = System.Drawing.Color.Transparent;
|
||||
button1.EnableMenuOnClick = false;
|
||||
button1.EnableReactiveVisual = true;
|
||||
button1.HoverImage = null;
|
||||
button1.IdleImage = null;
|
||||
button1.LabelText = "&Save";
|
||||
button1.Location = new System.Drawing.Point(241, 469);
|
||||
button1.Margin = new Padding(10, 10, 10, 0);
|
||||
button1.Name = "button1";
|
||||
button1.Padding = new Padding(4, 4, 3, 3);
|
||||
button1.Size = new System.Drawing.Size(128, 32);
|
||||
button1.TabIndex = 173;
|
||||
button1.TabStop = false;
|
||||
//
|
||||
// pickerBox1
|
||||
//
|
||||
pickerBox1.AcceptButton = null;
|
||||
pickerBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
pickerBox1.BackColor = System.Drawing.Color.Transparent;
|
||||
pickerBox1.EnableReactiveVisual = true;
|
||||
pickerBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
|
||||
pickerBox1.Location = new System.Drawing.Point(285, 62);
|
||||
pickerBox1.Name = "pickerBox1";
|
||||
pickerBox1.Padding = new Padding(4, 4, 3, 3);
|
||||
pickerBox1.SelectedIndex = 0;
|
||||
pickerBox1.Size = new System.Drawing.Size(84, 34);
|
||||
pickerBox1.TabIndex = 174;
|
||||
pickerBox1.TabStop = false;
|
||||
pickerBox1.Value = false;
|
||||
//
|
||||
// horizontalSeparator2
|
||||
//
|
||||
horizontalSeparator2.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
horizontalSeparator2.AutoScrollMargin = new System.Drawing.Size(0, 0);
|
||||
horizontalSeparator2.AutoScrollMinSize = new System.Drawing.Size(0, 0);
|
||||
horizontalSeparator2.BackColor = System.Drawing.Color.Transparent;
|
||||
horizontalSeparator2.Location = new System.Drawing.Point(10, 437);
|
||||
horizontalSeparator2.Margin = new Padding(0, 10, 0, 0);
|
||||
horizontalSeparator2.MaximumSize = new System.Drawing.Size(4920, 2);
|
||||
horizontalSeparator2.MinimumSize = new System.Drawing.Size(0, 22);
|
||||
horizontalSeparator2.Name = "horizontalSeparator2";
|
||||
horizontalSeparator2.Size = new System.Drawing.Size(364, 22);
|
||||
horizontalSeparator2.TabIndex = 182;
|
||||
horizontalSeparator2.TabStop = false;
|
||||
//
|
||||
// EditGroupForm
|
||||
//
|
||||
ClientSize = new System.Drawing.Size(384, 521);
|
||||
Controls.Add(horizontalSeparator2);
|
||||
Controls.Add(pickerBox1);
|
||||
Controls.Add(button1);
|
||||
Controls.Add(label2);
|
||||
Controls.Add(label1);
|
||||
Controls.Add(textBox1);
|
||||
MinimumSize = new System.Drawing.Size(400, 560);
|
||||
Name = "EditGroupForm";
|
||||
Text = "Edit Group";
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
public TileGroupModel Result
|
||||
{
|
||||
get
|
||||
{
|
||||
if (result == null)
|
||||
{
|
||||
result = new TileGroupModel();
|
||||
}
|
||||
|
||||
result.Title = textBox1.Text?.Trim() ?? string.Empty;
|
||||
result.IsExpanded = pickerBox1.Value;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
@ -117,4 +117,25 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="textBox1.HighlightImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wQAADsEBuJFr7QAAAN5JREFUOE/tUzsKwkAUXLCyFMHjeIvdB4Gk8ALamU4rsbLaTWz0AOYGOYMewTqe
|
||||
QLEQnZc8WRMSsBYHhrzPzJBin2pC60PPGLs3xl3Bp5DrHe9E1g2tHUH8QMjKmGReketyZkRWh9abfhTZ
|
||||
YRimI4jWRPYSBMngkzzjHWtYyx6xK4X0Anz/7rcsxM4BdoxBTuTOqCdEaUyU6DrTuNqxxuXsEXsFDLfg
|
||||
UdpOsIa10nr8A34p4CRtJ1jTGoC3PsPiBi78ETXplqzBwU3F5sHHgWWGJ3rHt+3tg+Uu84ek1AsYYd8q
|
||||
EsfwCwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="textBox1.NormalImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
wQAADsEBuJFr7QAAANFJREFUOE/tkzEKAjEURANWliJ4HG+h9l5AO7fTSjyCxWpCIBB2b+AZ9AjW6wlc
|
||||
LGSdWb9Elw1YiwOP/Pw/E1Ikqqksyzpa670x5goqgfWOM7HFhfAE5jvWNdYFkZq9sdg+laZp13vfBwOY
|
||||
NjBfnHO9d9jjjB56mZG4UhgW4HXdbykkXl97iMYBnFFPrbUJGDVIOKOHXmYk/hSaW3CUbVT00CvboP8B
|
||||
v3TASbZR0RM7YA5KsAT1J2phBUq8wpnEgvg5MMwxvGFte/uVzPLwkZR6AInAKK6aICfTAAAAAElFTkSu
|
||||
QmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
@ -6,36 +6,43 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using FizzyLauncher.Models;
|
||||
using FizzyLauncher.Windows.Forms;
|
||||
using RyzStudio.Windows.Forms;
|
||||
using RyzStudio.Windows.ThemedForms;
|
||||
using RyzStudio.Windows.ThemedForms.ButtonTextBox;
|
||||
using static RyzStudio.Windows.ThemedForms.ButtonTextBox.ThKeyCodeTextBox;
|
||||
|
||||
namespace FizzyLauncher.Windows.Forms
|
||||
namespace FizzyLauncher
|
||||
{
|
||||
public class EditTileFolderForm : TDialog
|
||||
{
|
||||
private System.Windows.Forms.Label label1;
|
||||
private Label label1;
|
||||
private ThButton button1;
|
||||
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
|
||||
private ThTextBox textBox1;
|
||||
private THorizontalSeparator horizontalSeparator2;
|
||||
private ThClearableTextBox textBox1;
|
||||
private ThListBox listBox1;
|
||||
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private THorizontalSeparator tHorizontalSeparator1;
|
||||
private Label label2;
|
||||
|
||||
private TileModel result = null;
|
||||
|
||||
|
||||
public EditTileFolderForm(TileModel model = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.StartPosition = FormStartPosition.WindowsDefaultLocation;
|
||||
this.OkButton = button1;
|
||||
StartPosition = FormStartPosition.WindowsDefaultLocation;
|
||||
OkButton = button1;
|
||||
|
||||
if (model != null)
|
||||
result = model;
|
||||
|
||||
if (result != null)
|
||||
{
|
||||
this.Text = "Edit Folder";
|
||||
Text = "Edit Folder";
|
||||
|
||||
textBox1.Text = model?.Title ?? string.Empty;
|
||||
textBox1.Text = result?.Title ?? string.Empty;
|
||||
|
||||
foreach (TileModel item in model.Items ?? new System.Collections.Generic.List<TileModel>())
|
||||
foreach (TileModel item in result.Items ?? new List<TileModel>())
|
||||
{
|
||||
if (item.IsGroup)
|
||||
{
|
||||
@ -47,33 +54,29 @@ namespace FizzyLauncher.Windows.Forms
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Text = "Add Folder";
|
||||
Text = "Add Folder";
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
textBox1 = new ThTextBox();
|
||||
textBox1 = new ThClearableTextBox();
|
||||
label1 = new Label();
|
||||
button1 = new ThButton();
|
||||
horizontalSeparator2 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
||||
horizontalSeparator2 = new THorizontalSeparator();
|
||||
listBox1 = new ThListBox();
|
||||
label2 = new Label();
|
||||
tHorizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
||||
tHorizontalSeparator1 = new THorizontalSeparator();
|
||||
SuspendLayout();
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
textBox1.AcceptButton = null;
|
||||
textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
textBox1.BackColor = Color.Transparent;
|
||||
textBox1.EnableReactiveVisual = true;
|
||||
textBox1.Font = new Font("Microsoft Sans Serif", 8.25F);
|
||||
textBox1.Location = new Point(109, 20);
|
||||
textBox1.Margin = new Padding(10, 10, 10, 0);
|
||||
textBox1.Name = "textBox1";
|
||||
textBox1.Padding = new Padding(4, 4, 3, 3);
|
||||
textBox1.ReadOnly = false;
|
||||
textBox1.Size = new Size(260, 35);
|
||||
textBox1.TabIndex = 152;
|
||||
textBox1.TabStop = false;
|
||||
@ -196,12 +199,14 @@ namespace FizzyLauncher.Windows.Forms
|
||||
{
|
||||
get
|
||||
{
|
||||
var result = new TileModel()
|
||||
if (result == null)
|
||||
{
|
||||
Title = textBox1.Text?.Trim() ?? string.Empty,
|
||||
IsGroup = true,
|
||||
Items = new List<TileModel>()
|
||||
};
|
||||
result = new TileModel();
|
||||
}
|
||||
|
||||
result.Title = textBox1.Text?.Trim() ?? string.Empty;
|
||||
result.IsGroup = true;
|
||||
result.Items = new List<TileModel>();
|
||||
|
||||
foreach (TileModel item in listBox1.ListBox.Items.OfType<TileModel>())
|
||||
{
|
||||
@ -253,7 +258,7 @@ namespace FizzyLauncher.Windows.Forms
|
||||
};
|
||||
}
|
||||
|
||||
private void listBox1_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
|
||||
private void listBox1_DragOver(object sender, DragEventArgs e)
|
||||
{
|
||||
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
||||
{
|
@ -4,34 +4,40 @@ using FizzyLauncher.Models;
|
||||
using RyzStudio.Windows.Forms;
|
||||
using RyzStudio.Windows.ThemedForms;
|
||||
using RyzStudio.Windows.ThemedForms.ButtonTextBox;
|
||||
using RyzStudio.Windows.ThemedForms.PickerBox;
|
||||
using static RyzStudio.Windows.ThemedForms.ButtonTextBox.ThKeyCodeTextBox;
|
||||
|
||||
namespace FizzyLauncher.Windows.Forms
|
||||
namespace FizzyLauncher
|
||||
{
|
||||
public class EditTileForm : TDialog
|
||||
{
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private Label label6;
|
||||
private Label label7;
|
||||
private Label label4;
|
||||
private Label label3;
|
||||
private Label label2;
|
||||
private Label label1;
|
||||
private ThPathDialogTextBox textBox2;
|
||||
private ThTextBox textBox3;
|
||||
private ThClearableTextBox textBox3;
|
||||
private ThPathDialogTextBox textBox4;
|
||||
private ThButton button1;
|
||||
private ThPickerBox pickerBox1;
|
||||
private ThPickerBox pickerBox2;
|
||||
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator1;
|
||||
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
|
||||
private ThTextBox textBox1;
|
||||
private ThYesNoPickerBox pickerBox2;
|
||||
private THorizontalSeparator horizontalSeparator1;
|
||||
private THorizontalSeparator horizontalSeparator2;
|
||||
private ThClearableTextBox textBox1;
|
||||
|
||||
private TileModel result = null;
|
||||
|
||||
|
||||
public EditTileForm(TileModel model = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.StartPosition = FormStartPosition.WindowsDefaultLocation;
|
||||
this.OkButton = button1;
|
||||
StartPosition = FormStartPosition.WindowsDefaultLocation;
|
||||
OkButton = button1;
|
||||
|
||||
result = model;
|
||||
|
||||
pickerBox1.ComboBox.Items.Clear();
|
||||
pickerBox1.ComboBox.Items.AddRange(new string[] { "Normal", "Hidden", "Minimized", "Maximized" });
|
||||
@ -40,33 +46,26 @@ namespace FizzyLauncher.Windows.Forms
|
||||
pickerBox1.ComboBox.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
pickerBox2.ComboBox.Items.Clear();
|
||||
pickerBox2.ComboBox.Items.AddRange(new string[] { "No", "Yes" });
|
||||
if (pickerBox2.ComboBox.Items.Count > 0)
|
||||
if (result != null)
|
||||
{
|
||||
pickerBox2.ComboBox.SelectedIndex = 0;
|
||||
}
|
||||
Text = "Edit Tile";
|
||||
|
||||
if (model != null)
|
||||
{
|
||||
this.Text = "Edit Tile";
|
||||
|
||||
textBox1.Text = model?.Title ?? string.Empty;
|
||||
textBox2.Text = model?.ProcessFilename ?? string.Empty;
|
||||
textBox3.Text = model?.ProcessArgument ?? string.Empty;
|
||||
textBox4.Text = model?.ProcessWorkingDirectory ?? string.Empty;
|
||||
pickerBox1.ComboBox.SelectedIndex = (int)model.ProcessWindowStyle;
|
||||
pickerBox2.ComboBox.SelectedIndex = (model.ProcessAsAdmin ? 1 : 0);
|
||||
textBox1.Text = result?.Title ?? string.Empty;
|
||||
textBox2.Text = result?.ProcessFilename ?? string.Empty;
|
||||
textBox3.Text = result?.ProcessArgument ?? string.Empty;
|
||||
textBox4.Text = result?.ProcessWorkingDirectory ?? string.Empty;
|
||||
pickerBox1.ComboBox.SelectedIndex = (int)result.ProcessWindowStyle;
|
||||
pickerBox2.Value = result.ProcessAsAdmin;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Text = "Add Tile";
|
||||
Text = "Add Tile";
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
textBox1 = new ThTextBox();
|
||||
textBox1 = new ThClearableTextBox();
|
||||
label6 = new Label();
|
||||
label7 = new Label();
|
||||
label4 = new Label();
|
||||
@ -74,27 +73,23 @@ namespace FizzyLauncher.Windows.Forms
|
||||
label2 = new Label();
|
||||
label1 = new Label();
|
||||
textBox2 = new ThPathDialogTextBox();
|
||||
textBox3 = new ThTextBox();
|
||||
textBox3 = new ThClearableTextBox();
|
||||
textBox4 = new ThPathDialogTextBox();
|
||||
button1 = new ThButton();
|
||||
pickerBox1 = new ThPickerBox();
|
||||
pickerBox2 = new ThPickerBox();
|
||||
horizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
||||
horizontalSeparator2 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
||||
pickerBox2 = new ThYesNoPickerBox();
|
||||
horizontalSeparator1 = new THorizontalSeparator();
|
||||
horizontalSeparator2 = new THorizontalSeparator();
|
||||
SuspendLayout();
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
textBox1.AcceptButton = null;
|
||||
textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
textBox1.BackColor = Color.Transparent;
|
||||
textBox1.EnableReactiveVisual = true;
|
||||
textBox1.Font = new Font("Segoe UI", 9F);
|
||||
textBox1.Location = new Point(126, 20);
|
||||
textBox1.Margin = new Padding(10, 10, 10, 0);
|
||||
textBox1.Name = "textBox1";
|
||||
textBox1.Padding = new Padding(4, 4, 3, 3);
|
||||
textBox1.ReadOnly = false;
|
||||
textBox1.Size = new Size(243, 35);
|
||||
textBox1.TabIndex = 152;
|
||||
textBox1.TabStop = false;
|
||||
@ -181,21 +176,14 @@ namespace FizzyLauncher.Windows.Forms
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
textBox2.AcceptButton = null;
|
||||
textBox2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
textBox2.BackColor = Color.Transparent;
|
||||
textBox2.DialogMode = ThPathDialogTextBox.DialogType.OpenFile;
|
||||
textBox2.EnableReactiveVisual = true;
|
||||
textBox2.FolderBrowserDialog = null;
|
||||
textBox2.Font = new Font("Segoe UI", 9F);
|
||||
textBox2.HighlightImage = null;
|
||||
textBox2.Location = new Point(126, 61);
|
||||
textBox2.Margin = new Padding(10, 10, 10, 0);
|
||||
textBox2.Name = "textBox2";
|
||||
textBox2.NormalImage = null;
|
||||
textBox2.OpenFileDialog = null;
|
||||
textBox2.Padding = new Padding(4, 4, 3, 3);
|
||||
textBox2.SaveFileDialog = null;
|
||||
textBox2.Size = new Size(243, 32);
|
||||
textBox2.TabIndex = 170;
|
||||
textBox2.TabStop = false;
|
||||
@ -203,38 +191,25 @@ namespace FizzyLauncher.Windows.Forms
|
||||
//
|
||||
// textBox3
|
||||
//
|
||||
textBox3.AcceptButton = null;
|
||||
textBox3.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
textBox3.BackColor = Color.Transparent;
|
||||
textBox3.EnableReactiveVisual = true;
|
||||
textBox3.Font = new Font("Segoe UI", 9F);
|
||||
textBox3.Location = new Point(147, 102);
|
||||
textBox3.Margin = new Padding(10, 10, 10, 0);
|
||||
textBox3.Name = "textBox3";
|
||||
textBox3.Padding = new Padding(4, 4, 3, 3);
|
||||
textBox3.ReadOnly = false;
|
||||
textBox3.Size = new Size(222, 35);
|
||||
textBox3.TabIndex = 171;
|
||||
textBox3.TabStop = false;
|
||||
textBox3.UseSystemPasswordChar = false;
|
||||
//
|
||||
// textBox4
|
||||
//
|
||||
textBox4.AcceptButton = null;
|
||||
textBox4.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
textBox4.BackColor = Color.Transparent;
|
||||
textBox4.DialogMode = ThPathDialogTextBox.DialogType.FolderBrowser;
|
||||
textBox4.EnableReactiveVisual = true;
|
||||
textBox4.FolderBrowserDialog = null;
|
||||
textBox4.Font = new Font("Segoe UI", 9F);
|
||||
textBox4.HighlightImage = null;
|
||||
textBox4.Location = new Point(147, 143);
|
||||
textBox4.Margin = new Padding(10, 10, 10, 0);
|
||||
textBox4.Name = "textBox4";
|
||||
textBox4.NormalImage = null;
|
||||
textBox4.OpenFileDialog = null;
|
||||
textBox4.Padding = new Padding(4, 4, 3, 3);
|
||||
textBox4.SaveFileDialog = null;
|
||||
textBox4.Size = new Size(222, 32);
|
||||
textBox4.TabIndex = 172;
|
||||
textBox4.TabStop = false;
|
||||
@ -277,16 +252,12 @@ namespace FizzyLauncher.Windows.Forms
|
||||
//
|
||||
// pickerBox2
|
||||
//
|
||||
pickerBox2.AcceptButton = null;
|
||||
pickerBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
pickerBox2.BackColor = Color.Transparent;
|
||||
pickerBox2.EnableReactiveVisual = true;
|
||||
pickerBox2.Font = new Font("Segoe UI", 9F);
|
||||
pickerBox2.Location = new Point(285, 250);
|
||||
pickerBox2.Margin = new Padding(10, 10, 10, 0);
|
||||
pickerBox2.Name = "pickerBox2";
|
||||
pickerBox2.Padding = new Padding(4, 4, 3, 3);
|
||||
pickerBox2.SelectedIndex = -1;
|
||||
pickerBox2.Size = new Size(84, 34);
|
||||
pickerBox2.TabIndex = 175;
|
||||
pickerBox2.TabStop = false;
|
||||
@ -349,15 +320,22 @@ namespace FizzyLauncher.Windows.Forms
|
||||
|
||||
public TileModel Result
|
||||
{
|
||||
get => new TileModel()
|
||||
get
|
||||
{
|
||||
Title = textBox1.Text?.Trim() ?? string.Empty,
|
||||
ProcessFilename = textBox2.Text?.Trim() ?? string.Empty,
|
||||
ProcessArgument = textBox3.Text?.Trim() ?? string.Empty,
|
||||
ProcessWorkingDirectory = textBox4.Text?.Trim(),
|
||||
ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle)pickerBox1.ComboBox.SelectedIndex,
|
||||
ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1)
|
||||
};
|
||||
if (result == null)
|
||||
{
|
||||
result = new TileModel();
|
||||
}
|
||||
|
||||
result.Title = textBox1.Text?.Trim() ?? string.Empty;
|
||||
result.ProcessFilename = textBox2.Text?.Trim() ?? string.Empty;
|
||||
result.ProcessArgument = textBox3.Text?.Trim() ?? string.Empty;
|
||||
result.ProcessWorkingDirectory = textBox4.Text?.Trim();
|
||||
result.ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle)pickerBox1.ComboBox.SelectedIndex;
|
||||
result.ProcessAsAdmin = pickerBox2.Value;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,209 +0,0 @@
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FizzyLauncher
|
||||
{
|
||||
public class FileSessionManager
|
||||
{
|
||||
public delegate void OnNewSessionEvent(FileSessionManager sender);
|
||||
public delegate Task<bool> OnSaveSessionEvent(FileSessionManager sender, string filename, bool showNotices = true);
|
||||
public delegate Task<bool> OnLoadSessionEvent(FileSessionManager sender, string filename);
|
||||
public delegate Task OnClearSessionEvent(FileSessionManager sender);
|
||||
|
||||
|
||||
public string SessionFilename { get; set; } = null;
|
||||
|
||||
public string NewSessionPromptTitle { get; set; } = "New session";
|
||||
public string OpenSessionPromptTitle { get; set; } = "Open session";
|
||||
public string CloseSessionPromptTitle { get; set; } = "Close session";
|
||||
public string SaveExistingSession { get; set; } = "Save existing session?";
|
||||
|
||||
public OpenFileDialog OpenFileDialog { get; set; } = null;
|
||||
public SaveFileDialog SaveFileDialog { get; set; } = null;
|
||||
|
||||
public OnNewSessionEvent OnNewSession { get; set; } = null;
|
||||
public OnSaveSessionEvent OnSaveSession { get; set; } = null;
|
||||
public OnLoadSessionEvent OnLoadSession { get; set; } = null;
|
||||
public OnClearSessionEvent OnClearSession { get; set; } = null;
|
||||
|
||||
|
||||
public async Task NewSession()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(this.SessionFilename))
|
||||
{
|
||||
this.SessionFilename = null;
|
||||
|
||||
PerformNewSession();
|
||||
}
|
||||
else
|
||||
{
|
||||
var result = MessageBox.Show(this.SaveExistingSession, this.NewSessionPromptTitle, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
||||
if (result == DialogResult.Yes)
|
||||
{
|
||||
var result2 = await PerformSaveSession(this.SessionFilename, false);
|
||||
if (result2)
|
||||
{
|
||||
this.SessionFilename = null;
|
||||
|
||||
PerformNewSession();
|
||||
}
|
||||
}
|
||||
else if (result == DialogResult.No)
|
||||
{
|
||||
this.SessionFilename = null;
|
||||
|
||||
PerformNewSession();
|
||||
}
|
||||
else if (result == DialogResult.Cancel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async Task OpenSession(string filename)
|
||||
{
|
||||
this.SessionFilename = filename;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(this.SessionFilename))
|
||||
{
|
||||
await this.OpenSession();
|
||||
}
|
||||
else
|
||||
{
|
||||
await PerformLoadSession(this.SessionFilename);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task OpenSession()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(this.SessionFilename))
|
||||
{
|
||||
if (this.OpenFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
this.SessionFilename = this.OpenFileDialog.FileName;
|
||||
|
||||
await PerformLoadSession(this.SessionFilename);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var result = MessageBox.Show(this.SaveExistingSession, this.OpenSessionPromptTitle, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
||||
if (result == DialogResult.Yes)
|
||||
{
|
||||
if (await PerformSaveSession(this.SessionFilename, false))
|
||||
{
|
||||
if (this.OpenFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
this.SessionFilename = this.OpenFileDialog.FileName;
|
||||
|
||||
await PerformLoadSession(this.SessionFilename);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (result == DialogResult.No)
|
||||
{
|
||||
if (this.OpenFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
this.SessionFilename = this.OpenFileDialog.FileName;
|
||||
|
||||
await PerformLoadSession(this.SessionFilename);
|
||||
}
|
||||
}
|
||||
else if (result == DialogResult.Cancel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async Task SaveSession()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(this.SessionFilename))
|
||||
{
|
||||
await this.SaveAsSession();
|
||||
}
|
||||
else
|
||||
{
|
||||
await PerformSaveSession(this.SessionFilename, true);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> SaveAsSession()
|
||||
{
|
||||
if (this.SaveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
bool result = await PerformSaveSession(this.SaveFileDialog.FileName);
|
||||
if (result)
|
||||
{
|
||||
this.SessionFilename = this.SaveFileDialog.FileName;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public async Task CloseSession()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(this.SessionFilename))
|
||||
{
|
||||
this.SessionFilename = null;
|
||||
|
||||
await PerformClearSession();
|
||||
}
|
||||
else
|
||||
{
|
||||
var result = MessageBox.Show(this.SaveExistingSession, this.CloseSessionPromptTitle, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
||||
if (result == DialogResult.Yes)
|
||||
{
|
||||
bool result2 = await PerformSaveSession(this.SessionFilename, false);
|
||||
if (result2)
|
||||
{
|
||||
this.SessionFilename = null;
|
||||
|
||||
await PerformClearSession();
|
||||
}
|
||||
}
|
||||
else if (result == DialogResult.No)
|
||||
{
|
||||
this.SessionFilename = null;
|
||||
|
||||
await PerformClearSession();
|
||||
}
|
||||
else if (result == DialogResult.Cancel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void PerformNewSession() => this.OnNewSession?.Invoke(this);
|
||||
|
||||
private async Task<bool> PerformSaveSession(string filename, bool showNotices = true)
|
||||
{
|
||||
if (this.OnSaveSession == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return await this.OnSaveSession?.Invoke(this, filename, showNotices);
|
||||
}
|
||||
|
||||
private async Task<bool> PerformLoadSession(string filename)
|
||||
{
|
||||
if (this.OnLoadSession == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return await this.OnLoadSession?.Invoke(this, filename);
|
||||
}
|
||||
|
||||
private async Task PerformClearSession() => this.OnClearSession?.Invoke(this);
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
<Copyright>Ray Lam</Copyright>
|
||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
||||
<FileVersion>1.0.0.0</FileVersion>
|
||||
<Version>0.2.5.058</Version>
|
||||
<Version>0.3.0.153</Version>
|
||||
<EnableNETAnalyzers>False</EnableNETAnalyzers>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
|
36
MainForm.Designer.cs
generated
36
MainForm.Designer.cs
generated
@ -76,9 +76,11 @@ namespace FizzyLauncher
|
||||
toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
panel1 = new System.Windows.Forms.Panel();
|
||||
contextMenuStrip2.SuspendLayout();
|
||||
menuStrip1.SuspendLayout();
|
||||
tileContainerMenu1.SuspendLayout();
|
||||
panel1.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// saveFileDialog1
|
||||
@ -117,7 +119,7 @@ namespace FizzyLauncher
|
||||
menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { fileToolStripMenuItem, toolStripMenuItem1, viewToolStripMenuItem, toolsToolStripMenuItem, helpToolStripMenuItem1 });
|
||||
menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
menuStrip1.Name = "menuStrip1";
|
||||
menuStrip1.Size = new System.Drawing.Size(873, 24);
|
||||
menuStrip1.Size = new System.Drawing.Size(404, 24);
|
||||
menuStrip1.TabIndex = 2;
|
||||
menuStrip1.MenuActivate += menuStrip1_MenuActivate;
|
||||
//
|
||||
@ -215,14 +217,14 @@ namespace FizzyLauncher
|
||||
// showBigIconsToolStripMenuItem
|
||||
//
|
||||
showBigIconsToolStripMenuItem.Name = "showBigIconsToolStripMenuItem";
|
||||
showBigIconsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
showBigIconsToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
|
||||
showBigIconsToolStripMenuItem.Text = "Show &Big Icons";
|
||||
showBigIconsToolStripMenuItem.Click += showBigIconsToolStripMenuItem_Click;
|
||||
//
|
||||
// alwaysOnTopToolStripMenuItem
|
||||
//
|
||||
alwaysOnTopToolStripMenuItem.Name = "alwaysOnTopToolStripMenuItem";
|
||||
alwaysOnTopToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
alwaysOnTopToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
|
||||
alwaysOnTopToolStripMenuItem.Text = "Always On &Top";
|
||||
alwaysOnTopToolStripMenuItem.Click += alwaysOnTopToolStripMenuItem_Click;
|
||||
//
|
||||
@ -378,21 +380,35 @@ namespace FizzyLauncher
|
||||
// flowLayoutPanel1
|
||||
//
|
||||
flowLayoutPanel1.AutoScroll = true;
|
||||
flowLayoutPanel1.BackColor = System.Drawing.Color.FromArgb(255, 192, 255);
|
||||
flowLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
|
||||
flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||
flowLayoutPanel1.Location = new System.Drawing.Point(12, 27);
|
||||
flowLayoutPanel1.Location = new System.Drawing.Point(6, 0);
|
||||
flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
|
||||
flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
flowLayoutPanel1.Size = new System.Drawing.Size(461, 426);
|
||||
flowLayoutPanel1.Size = new System.Drawing.Size(398, 417);
|
||||
flowLayoutPanel1.TabIndex = 8;
|
||||
flowLayoutPanel1.WrapContents = false;
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
panel1.BackColor = System.Drawing.Color.Transparent;
|
||||
panel1.Controls.Add(flowLayoutPanel1);
|
||||
panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
panel1.Location = new System.Drawing.Point(0, 24);
|
||||
panel1.Margin = new System.Windows.Forms.Padding(0);
|
||||
panel1.Name = "panel1";
|
||||
panel1.Padding = new System.Windows.Forms.Padding(6, 0, 0, 0);
|
||||
panel1.Size = new System.Drawing.Size(404, 417);
|
||||
panel1.TabIndex = 9;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
BackColor = System.Drawing.Color.FromArgb(250, 250, 250);
|
||||
BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
ClientSize = new System.Drawing.Size(873, 505);
|
||||
Controls.Add(flowLayoutPanel1);
|
||||
ClientSize = new System.Drawing.Size(404, 441);
|
||||
Controls.Add(panel1);
|
||||
Controls.Add(menuStrip1);
|
||||
DoubleBuffered = true;
|
||||
ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
@ -400,13 +416,14 @@ namespace FizzyLauncher
|
||||
MainMenuStrip = menuStrip1;
|
||||
MaximizeBox = false;
|
||||
MinimizeBox = false;
|
||||
MinimumSize = new System.Drawing.Size(420, 280);
|
||||
MinimumSize = new System.Drawing.Size(300, 320);
|
||||
Name = "MainForm";
|
||||
Text = "Fizzy Launcher";
|
||||
contextMenuStrip2.ResumeLayout(false);
|
||||
menuStrip1.ResumeLayout(false);
|
||||
menuStrip1.PerformLayout();
|
||||
tileContainerMenu1.ResumeLayout(false);
|
||||
panel1.ResumeLayout(false);
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
@ -456,6 +473,7 @@ namespace FizzyLauncher
|
||||
private System.Windows.Forms.ToolStripMenuItem upToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem downToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem bottomToolStripMenuItem;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
}
|
||||
}
|
||||
|
||||
|
867
MainForm.cs
867
MainForm.cs
File diff suppressed because it is too large
Load Diff
27
Models/AppOptions.cs
Normal file
27
Models/AppOptions.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
|
||||
namespace FizzyLauncher.Models
|
||||
{
|
||||
public class AppOptions
|
||||
{
|
||||
public int TilesPerRow { get; set; } = 8;
|
||||
|
||||
public bool ShowBigIcons { get; set; } = true;
|
||||
|
||||
public RyzStudio.Windows.ThemedForms.ButtonTextBox.ThKeyCodeTextBox.Results ShowToggleHotkey { get; set; } = null;
|
||||
|
||||
public bool HideOnClose { get; set; } = true;
|
||||
|
||||
public bool HideOnExecute { get; set; } = true;
|
||||
|
||||
public bool AlwaysOnTop { get; set; } = false;
|
||||
|
||||
public List<TileGroupModel> Groups { get; set; } = new List<TileGroupModel>();
|
||||
|
||||
public Point StartPosition { get; set; } = Point.Empty;
|
||||
|
||||
public int Height { get; set; } = 280;
|
||||
|
||||
}
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using RyzStudio.Windows.ThemedForms.ButtonTextBox;
|
||||
|
||||
namespace FizzyLauncher.Models
|
||||
{
|
||||
public class LauncherSession
|
||||
{
|
||||
public int TilesPerRow { get; set; } = 8;
|
||||
|
||||
public bool ShowBigIcons { get; set; } = true;
|
||||
|
||||
public ThKeyCodeTextBox.Results ShowToggleHotkey { get; set; } = null;
|
||||
|
||||
public bool HideOnClose { get; set; } = true;
|
||||
|
||||
public bool HideOnExecute { get; set; } = true;
|
||||
|
||||
public bool AlwaysOnTop { get; set; } = false;
|
||||
|
||||
|
||||
|
||||
//public class HotKeyOptions
|
||||
//{
|
||||
// public bool IsCtrl { get; set; } = false;
|
||||
// public bool IsAlt { get; set; } = false;
|
||||
// public bool IsShift { get; set; } = false;
|
||||
// public int Key { get; set; } = (int)System.Windows.Forms.Keys.None;
|
||||
|
||||
// public int ModifierCode => ((this.IsAlt ? 1 : 0) + (this.IsCtrl ? 2 : 0) + (this.IsShift ? 4 : 0));
|
||||
|
||||
// public System.Windows.Forms.Keys KeyCode => (System.Windows.Forms.Keys)this.Key;
|
||||
//}
|
||||
|
||||
//public enum AutoSaveOption
|
||||
//{
|
||||
// Prompt = 0,
|
||||
// Yes,
|
||||
// No
|
||||
//}
|
||||
|
||||
//public int DefaultHeight { get; set; } = 280;
|
||||
|
||||
//public ThKeyCodeTextBox.Results HotKey { get; set; } = null;
|
||||
|
||||
//public bool AlwaysOnTop { get; set; } = false;
|
||||
//public bool EnableAnimation { get; set; } = false;
|
||||
//public bool EnableBigIconInFolder { get; set; } = false;
|
||||
|
||||
//public bool HideOnClose { get; set; } = false;
|
||||
//public bool HideOnClick { get; set; } = false;
|
||||
//public AutoSaveOption AutoSave { get; set; } = AutoSaveOption.Prompt;
|
||||
|
||||
public List<TileGroupModel> Groups { get; set; } = new List<TileGroupModel>();
|
||||
|
||||
public Point StartPosition { get; set; } = Point.Empty;
|
||||
|
||||
public int Height { get; set; } = 280;
|
||||
|
||||
|
||||
//public int ColumnCount { get; set; } = 8;
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -10,8 +10,6 @@ namespace FizzyLauncher.Models
|
||||
|
||||
public bool IsExpanded { get; set; } = false;
|
||||
|
||||
public bool IsExclusive { get; set; } = false;
|
||||
|
||||
public List<TileModel> Items { get; set; } = new List<TileModel>();
|
||||
|
||||
[JsonConverter(typeof(RyzStudio.Text.Json.JsonSizeConverter))]
|
||||
|
@ -29,10 +29,10 @@ namespace FizzyLauncher
|
||||
private ThYesNoPickerBox yesNoPickerBox4;
|
||||
private Label label3;
|
||||
|
||||
private LauncherSession _appSession = null;
|
||||
private AppOptions _appSession = null;
|
||||
|
||||
|
||||
public OptionsForm(LauncherSession appSession)
|
||||
public OptionsForm(AppOptions appSession)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
@ -57,7 +57,7 @@ namespace FizzyLauncher
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionsForm));
|
||||
ThKeyCodeTextBox.Results results2 = new ThKeyCodeTextBox.Results();
|
||||
ThKeyCodeTextBox.Results results1 = new ThKeyCodeTextBox.Results();
|
||||
label1 = new Label();
|
||||
button1 = new ThButton();
|
||||
yesNoPickerBox2 = new ThYesNoPickerBox();
|
||||
@ -198,11 +198,11 @@ namespace FizzyLauncher
|
||||
textBox1.EnableReactiveVisual = true;
|
||||
textBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||
textBox1.HighlightImage = (System.Drawing.Image)resources.GetObject("textBox1.HighlightImage");
|
||||
results2.IsAlt = false;
|
||||
results2.IsCtrl = false;
|
||||
results2.IsShift = false;
|
||||
results2.Key = Keys.None;
|
||||
textBox1.KeyCodeResults = results2;
|
||||
results1.IsAlt = false;
|
||||
results1.IsCtrl = false;
|
||||
results1.IsShift = false;
|
||||
results1.Key = Keys.None;
|
||||
textBox1.KeyCodeResults = results1;
|
||||
textBox1.Location = new System.Drawing.Point(192, 21);
|
||||
textBox1.Margin = new Padding(10, 10, 10, 0);
|
||||
textBox1.Name = "textBox1";
|
||||
@ -253,9 +253,9 @@ namespace FizzyLauncher
|
||||
flowLayoutPanel1.Controls.Add(tTogglePanel1);
|
||||
flowLayoutPanel1.Controls.Add(tTogglePanel2);
|
||||
flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
|
||||
flowLayoutPanel1.Location = new System.Drawing.Point(10, 12);
|
||||
flowLayoutPanel1.Location = new System.Drawing.Point(8, 12);
|
||||
flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
flowLayoutPanel1.Size = new System.Drawing.Size(424, 412);
|
||||
flowLayoutPanel1.Size = new System.Drawing.Size(436, 412);
|
||||
flowLayoutPanel1.TabIndex = 194;
|
||||
flowLayoutPanel1.WrapContents = false;
|
||||
flowLayoutPanel1.Resize += flowLayoutPanel1_Resize;
|
||||
@ -268,6 +268,7 @@ namespace FizzyLauncher
|
||||
tTogglePanel1.Controls.Add(label2);
|
||||
tTogglePanel1.Controls.Add(label4);
|
||||
tTogglePanel1.Controls.Add(numericBox1);
|
||||
tTogglePanel1.ExpandedHeight = 100;
|
||||
tTogglePanel1.ForeColor = System.Drawing.Color.FromArgb(99, 105, 119);
|
||||
tTogglePanel1.IsOpen = true;
|
||||
tTogglePanel1.Location = new System.Drawing.Point(0, 0);
|
||||
@ -324,6 +325,7 @@ namespace FizzyLauncher
|
||||
tTogglePanel2.Controls.Add(yesNoPickerBox3);
|
||||
tTogglePanel2.Controls.Add(label6);
|
||||
tTogglePanel2.Controls.Add(label7);
|
||||
tTogglePanel2.ExpandedHeight = 100;
|
||||
tTogglePanel2.ForeColor = System.Drawing.Color.FromArgb(99, 105, 119);
|
||||
tTogglePanel2.IsOpen = true;
|
||||
tTogglePanel2.Location = new System.Drawing.Point(0, 119);
|
||||
@ -394,13 +396,6 @@ namespace FizzyLauncher
|
||||
flowLayoutPanel1_Resize(null, e);
|
||||
}
|
||||
|
||||
//protected override void OnShown(EventArgs e)
|
||||
//{
|
||||
// base.OnShown(e);
|
||||
|
||||
// flowLayoutPanel1_Resize(null, e);
|
||||
//}
|
||||
|
||||
private void flowLayoutPanel1_Resize(object sender, EventArgs e)
|
||||
{
|
||||
var width = flowLayoutPanel1.ClientRectangle.Width - SystemInformation.VerticalScrollBarWidth;
|
||||
@ -411,13 +406,13 @@ namespace FizzyLauncher
|
||||
}
|
||||
}
|
||||
|
||||
public LauncherSession Result
|
||||
public AppOptions Result
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_appSession == null)
|
||||
{
|
||||
_appSession = new LauncherSession();
|
||||
_appSession = new AppOptions();
|
||||
}
|
||||
|
||||
_appSession.TilesPerRow = numericBox1.Value;
|
||||
|
@ -1,164 +0,0 @@
|
||||
using System.Windows.Forms;
|
||||
using FizzyLauncher.Models;
|
||||
using RyzStudio.Windows.Forms;
|
||||
using RyzStudio.Windows.ThemedForms;
|
||||
|
||||
namespace FizzyLauncher.Windows.Forms
|
||||
{
|
||||
public class EditGroupForm : TDialog
|
||||
{
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private ThButton button1;
|
||||
private ThPickerBox pickerBox1;
|
||||
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
|
||||
private ThTextBox textBox1;
|
||||
|
||||
|
||||
public EditGroupForm(TileGroupModel model = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.StartPosition = FormStartPosition.WindowsDefaultLocation;
|
||||
this.Text = ((model == null) ? "Add Group" : "Edit Group");
|
||||
this.OkButton = button1;
|
||||
|
||||
pickerBox1.ComboBox.Items.Clear();
|
||||
pickerBox1.ComboBox.Items.AddRange(new string[] { "No", "Yes" });
|
||||
if (pickerBox1.ComboBox.Items.Count > 0)
|
||||
{
|
||||
pickerBox1.ComboBox.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
if (model != null)
|
||||
{
|
||||
textBox1.Text = model.Title?.Trim() ?? string.Empty;
|
||||
pickerBox1.ComboBox.SelectedIndex = (model.IsExclusive ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.textBox1 = new ThTextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.button1 = new ThButton();
|
||||
this.pickerBox1 = new ThPickerBox();
|
||||
this.horizontalSeparator2 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.textBox1.Location = new System.Drawing.Point(192, 20);
|
||||
this.textBox1.Margin = new System.Windows.Forms.Padding(10, 6, 10, 6);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Padding = new System.Windows.Forms.Padding(10, 10, 9, 9);
|
||||
this.textBox1.Size = new System.Drawing.Size(177, 35);
|
||||
this.textBox1.AcceptButton = null;
|
||||
this.textBox1.TabIndex = 152;
|
||||
this.textBox1.UseSystemPasswordChar = false;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label2.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.label2.Location = new System.Drawing.Point(10, 62);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
|
||||
this.label2.Size = new System.Drawing.Size(119, 34);
|
||||
this.label2.TabIndex = 155;
|
||||
this.label2.Text = "Show Only Expanded";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label1.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.label1.Location = new System.Drawing.Point(10, 21);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
|
||||
this.label1.Size = new System.Drawing.Size(29, 34);
|
||||
this.label1.TabIndex = 153;
|
||||
this.label1.Text = "Title";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.button1.IdleImage = null;
|
||||
this.button1.ActiveImage = null;
|
||||
this.button1.LabelText = "&Save";
|
||||
this.button1.Location = new System.Drawing.Point(241, 469);
|
||||
this.button1.Margin = new System.Windows.Forms.Padding(10);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.HoverImage = null;
|
||||
this.button1.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
|
||||
this.button1.Size = new System.Drawing.Size(128, 32);
|
||||
this.button1.TabIndex = 173;
|
||||
//
|
||||
// pickerBox1
|
||||
//
|
||||
this.pickerBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pickerBox1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.pickerBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.pickerBox1.Location = new System.Drawing.Point(285, 62);
|
||||
this.pickerBox1.Margin = new System.Windows.Forms.Padding(10, 6, 10, 6);
|
||||
this.pickerBox1.Name = "pickerBox1";
|
||||
this.pickerBox1.Padding = new System.Windows.Forms.Padding(10, 6, 7, 5);
|
||||
this.pickerBox1.Size = new System.Drawing.Size(84, 34);
|
||||
this.pickerBox1.AcceptButton = null;
|
||||
this.pickerBox1.TabIndex = 174;
|
||||
//
|
||||
// horizontalSeparator2
|
||||
//
|
||||
this.horizontalSeparator2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.horizontalSeparator2.AutoScrollMargin = new System.Drawing.Size(0, 0);
|
||||
this.horizontalSeparator2.AutoScrollMinSize = new System.Drawing.Size(0, 0);
|
||||
this.horizontalSeparator2.BackColor = System.Drawing.Color.Transparent;
|
||||
this.horizontalSeparator2.Location = new System.Drawing.Point(10, 437);
|
||||
this.horizontalSeparator2.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
|
||||
this.horizontalSeparator2.MaximumSize = new System.Drawing.Size(4920, 2);
|
||||
this.horizontalSeparator2.MinimumSize = new System.Drawing.Size(0, 22);
|
||||
this.horizontalSeparator2.Name = "horizontalSeparator2";
|
||||
this.horizontalSeparator2.Padding = new System.Windows.Forms.Padding(0, 10, 0, 10);
|
||||
this.horizontalSeparator2.Size = new System.Drawing.Size(364, 22);
|
||||
this.horizontalSeparator2.TabIndex = 182;
|
||||
//
|
||||
// EditGroupForm
|
||||
//
|
||||
this.ClientSize = new System.Drawing.Size(384, 521);
|
||||
this.Controls.Add(this.horizontalSeparator2);
|
||||
this.Controls.Add(this.pickerBox1);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.MinimumSize = new System.Drawing.Size(400, 560);
|
||||
this.Name = "EditGroupForm";
|
||||
this.Text = "Edit Group";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public TileGroupModel Result
|
||||
{
|
||||
get => new TileGroupModel()
|
||||
{
|
||||
Title = textBox1.Text?.Trim() ?? string.Empty,
|
||||
IsExclusive = (pickerBox1.ComboBox.SelectedIndex == 1)
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@ -1,149 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using FizzyLauncher.Models;
|
||||
using RyzStudio.Windows.Forms;
|
||||
|
||||
namespace FizzyLauncher.Windows.Forms
|
||||
{
|
||||
public class TileContainer : Panel
|
||||
{
|
||||
protected const int DEFAULT_COLUMN = 6;
|
||||
|
||||
protected FlowLayoutPanel flowLayoutPanel1 = null;
|
||||
|
||||
|
||||
public TileContainer()
|
||||
{
|
||||
flowLayoutPanel1 = new FlowLayoutPanel();
|
||||
flowLayoutPanel1.AutoSize = true;
|
||||
flowLayoutPanel1.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
flowLayoutPanel1.BackColor = Color.Transparent;
|
||||
flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
|
||||
flowLayoutPanel1.Location = new Point(10, 10);
|
||||
flowLayoutPanel1.Margin = new Padding(0);
|
||||
flowLayoutPanel1.Padding = new Padding(0, 0, 0, 20);
|
||||
flowLayoutPanel1.Size = new Size(0, 20);
|
||||
flowLayoutPanel1.WrapContents = false;
|
||||
|
||||
this.AutoScroll = true;
|
||||
this.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
this.BackColor = System.Drawing.Color.Transparent;
|
||||
this.Margin = new Padding(0);
|
||||
this.Name = "tileContainer1";
|
||||
this.Padding = new Padding(10, 10, 10, 20);
|
||||
this.Controls.Add(flowLayoutPanel1);
|
||||
}
|
||||
|
||||
|
||||
[Browsable(false)]
|
||||
public event EventHandler OnColumnSizeChanged;
|
||||
|
||||
|
||||
public int CalcWidth
|
||||
{
|
||||
get =>
|
||||
TilePanelLayout.CalcWidth(this.TileWidthCount) +
|
||||
this.Left + this.Padding.Horizontal + this.Margin.Horizontal +
|
||||
flowLayoutPanel1.Padding.Horizontal + flowLayoutPanel1.Margin.Horizontal;
|
||||
}
|
||||
|
||||
public int GroupCount
|
||||
{
|
||||
get => flowLayoutPanel1.Controls.Count;
|
||||
}
|
||||
|
||||
public IEnumerable<TilePanelLayout> Groups
|
||||
{
|
||||
get
|
||||
{
|
||||
for (int i = 0; i < flowLayoutPanel1.Controls.Count; i++)
|
||||
{
|
||||
if (flowLayoutPanel1.Controls[i].GetType() != typeof(TilePanelLayout))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
TilePanelLayout container = flowLayoutPanel1.Controls[i] as TilePanelLayout;
|
||||
yield return container;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<TileGroupModel> GroupModels
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (TilePanelLayout item in this.Groups)
|
||||
{
|
||||
yield return item.Model;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int TileWidthCount { get; private set; } = DEFAULT_COLUMN;
|
||||
|
||||
|
||||
public void Add()
|
||||
{
|
||||
this.Add(new TilePanelLayout(new TileGroupModel()
|
||||
{
|
||||
Title = "New Group",
|
||||
IsExpanded = true,
|
||||
GridSize = new Size(this.TileWidthCount, 1)
|
||||
}));
|
||||
}
|
||||
|
||||
public void Add(TilePanelLayout tilePanelLayout)
|
||||
{
|
||||
UIControl.Add(flowLayoutPanel1, tilePanelLayout);
|
||||
|
||||
this.InvalidateColumnSize();
|
||||
}
|
||||
|
||||
public void Add(int columnCount)
|
||||
{
|
||||
this.TileWidthCount = ((columnCount <= 0) ? DEFAULT_COLUMN : columnCount);
|
||||
|
||||
this.Add();
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
UIControl.Clear(flowLayoutPanel1);
|
||||
|
||||
this.TileWidthCount = DEFAULT_COLUMN;
|
||||
|
||||
InvalidateColumnSize();
|
||||
}
|
||||
|
||||
public void InvalidateColumnSize()
|
||||
{
|
||||
this.OnColumnSizeChanged?.Invoke(this, null);
|
||||
}
|
||||
|
||||
public void Load(List<TileGroupModel> groupList)
|
||||
{
|
||||
this.Clear();
|
||||
|
||||
if (groupList == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (TileGroupModel item in groupList)
|
||||
{
|
||||
this.TileWidthCount = Math.Max(this.TileWidthCount, item.GridSize.Width);
|
||||
|
||||
TilePanelLayout panel = new TilePanelLayout(item);
|
||||
|
||||
this.Add(panel);
|
||||
}
|
||||
|
||||
InvalidateColumnSize();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
241
Windows/Forms/TilePanelLayout.Designer.cs
generated
241
Windows/Forms/TilePanelLayout.Designer.cs
generated
@ -1,241 +0,0 @@
|
||||
namespace FizzyLauncher.Windows.Forms
|
||||
{
|
||||
partial class TilePanelLayout
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.addListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.removeRowToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.topToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.upToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.downToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.bottomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.removeRowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.contextMenuStrip1.SuspendLayout();
|
||||
this.contextMenuStrip2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// contextMenuStrip1
|
||||
//
|
||||
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.addToolStripMenuItem,
|
||||
this.addListToolStripMenuItem,
|
||||
this.toolStripMenuItem6,
|
||||
this.removeRowToolStripMenuItem1});
|
||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||
this.contextMenuStrip1.Size = new System.Drawing.Size(144, 76);
|
||||
//
|
||||
// addToolStripMenuItem
|
||||
//
|
||||
this.addToolStripMenuItem.Name = "addToolStripMenuItem";
|
||||
this.addToolStripMenuItem.Size = new System.Drawing.Size(143, 22);
|
||||
this.addToolStripMenuItem.Text = "&Add Tile";
|
||||
this.addToolStripMenuItem.Click += new System.EventHandler(this.addTileMenuItem_Click);
|
||||
//
|
||||
// addListToolStripMenuItem
|
||||
//
|
||||
this.addListToolStripMenuItem.Name = "addListToolStripMenuItem";
|
||||
this.addListToolStripMenuItem.Size = new System.Drawing.Size(143, 22);
|
||||
this.addListToolStripMenuItem.Text = "Add &Folder";
|
||||
this.addListToolStripMenuItem.Click += new System.EventHandler(this.addListTileMenuItem_Click);
|
||||
//
|
||||
// toolStripMenuItem6
|
||||
//
|
||||
this.toolStripMenuItem6.Name = "toolStripMenuItem6";
|
||||
this.toolStripMenuItem6.Size = new System.Drawing.Size(140, 6);
|
||||
//
|
||||
// removeRowToolStripMenuItem1
|
||||
//
|
||||
this.removeRowToolStripMenuItem1.Name = "removeRowToolStripMenuItem1";
|
||||
this.removeRowToolStripMenuItem1.Size = new System.Drawing.Size(143, 22);
|
||||
this.removeRowToolStripMenuItem1.Text = "&Remove Row";
|
||||
this.removeRowToolStripMenuItem1.Click += new System.EventHandler(this.removeRowToolStripMenuItem_Click_1);
|
||||
//
|
||||
// contextMenuStrip2
|
||||
//
|
||||
this.contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripMenuItem2,
|
||||
this.toolStripMenuItem1,
|
||||
this.toolStripSeparator3,
|
||||
this.toolStripMenuItem7,
|
||||
this.toolStripSeparator2,
|
||||
this.toolStripMenuItem4,
|
||||
this.toolStripSeparator1,
|
||||
this.toolStripMenuItem3});
|
||||
this.contextMenuStrip2.Name = "contextMenuStrip1";
|
||||
this.contextMenuStrip2.Size = new System.Drawing.Size(181, 154);
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(180, 22);
|
||||
this.toolStripMenuItem2.Text = "&Add Group";
|
||||
this.toolStripMenuItem2.Click += new System.EventHandler(this.addGroupMenuItem_Click);
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
|
||||
this.toolStripMenuItem1.Text = "&Edit";
|
||||
this.toolStripMenuItem1.Click += new System.EventHandler(this.editGroupMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(177, 6);
|
||||
//
|
||||
// toolStripMenuItem4
|
||||
//
|
||||
this.toolStripMenuItem4.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.topToolStripMenuItem,
|
||||
this.upToolStripMenuItem,
|
||||
this.downToolStripMenuItem,
|
||||
this.bottomToolStripMenuItem});
|
||||
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
|
||||
this.toolStripMenuItem4.Size = new System.Drawing.Size(180, 22);
|
||||
this.toolStripMenuItem4.Text = "&Move";
|
||||
//
|
||||
// topToolStripMenuItem
|
||||
//
|
||||
this.topToolStripMenuItem.Name = "topToolStripMenuItem";
|
||||
this.topToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
|
||||
this.topToolStripMenuItem.Text = "&Top";
|
||||
this.topToolStripMenuItem.Click += new System.EventHandler(this.moveTopMenuItem_Click);
|
||||
//
|
||||
// upToolStripMenuItem
|
||||
//
|
||||
this.upToolStripMenuItem.Name = "upToolStripMenuItem";
|
||||
this.upToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
|
||||
this.upToolStripMenuItem.Text = "&Up";
|
||||
this.upToolStripMenuItem.Click += new System.EventHandler(this.moveUpMenuItem_Click);
|
||||
//
|
||||
// downToolStripMenuItem
|
||||
//
|
||||
this.downToolStripMenuItem.Name = "downToolStripMenuItem";
|
||||
this.downToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
|
||||
this.downToolStripMenuItem.Text = "&Down";
|
||||
this.downToolStripMenuItem.Click += new System.EventHandler(this.moveDownMenuItem_Click);
|
||||
//
|
||||
// bottomToolStripMenuItem
|
||||
//
|
||||
this.bottomToolStripMenuItem.Name = "bottomToolStripMenuItem";
|
||||
this.bottomToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
|
||||
this.bottomToolStripMenuItem.Text = "&Bottom";
|
||||
this.bottomToolStripMenuItem.Click += new System.EventHandler(this.moveBottomMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(177, 6);
|
||||
//
|
||||
// toolStripMenuItem3
|
||||
//
|
||||
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(180, 22);
|
||||
this.toolStripMenuItem3.Text = "&Remove";
|
||||
this.toolStripMenuItem3.Click += new System.EventHandler(this.removeGroupMenuItem3_Click);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(177, 6);
|
||||
//
|
||||
// toolStripMenuItem7
|
||||
//
|
||||
this.toolStripMenuItem7.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripMenuItem5,
|
||||
this.removeRowToolStripMenuItem});
|
||||
this.toolStripMenuItem7.Name = "toolStripMenuItem7";
|
||||
this.toolStripMenuItem7.Size = new System.Drawing.Size(180, 22);
|
||||
this.toolStripMenuItem7.Text = "Ro&w";
|
||||
//
|
||||
// toolStripMenuItem5
|
||||
//
|
||||
this.toolStripMenuItem5.Name = "toolStripMenuItem5";
|
||||
this.toolStripMenuItem5.Size = new System.Drawing.Size(180, 22);
|
||||
this.toolStripMenuItem5.Text = "Add &Row";
|
||||
this.toolStripMenuItem5.Click += new System.EventHandler(this.toolStripMenuItem5_Click);
|
||||
//
|
||||
// removeRowToolStripMenuItem
|
||||
//
|
||||
this.removeRowToolStripMenuItem.Name = "removeRowToolStripMenuItem";
|
||||
this.removeRowToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.removeRowToolStripMenuItem.Text = "Remo&ve Row";
|
||||
this.removeRowToolStripMenuItem.Click += new System.EventHandler(this.removeRowToolStripMenuItem_Click_1);
|
||||
//
|
||||
// TilePanelLayout
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.Transparent;
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
|
||||
this.Name = "TilePanelLayout";
|
||||
this.Size = new System.Drawing.Size(432, 173);
|
||||
this.contextMenuStrip1.ResumeLayout(false);
|
||||
this.contextMenuStrip2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem addListToolStripMenuItem;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip2;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
|
||||
private System.Windows.Forms.ToolStripMenuItem topToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem upToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem downToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem bottomToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem6;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeRowToolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem7;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeRowToolStripMenuItem;
|
||||
}
|
||||
}
|
@ -1,438 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using FizzyLauncher.Models;
|
||||
using RyzStudio.Windows.Forms;
|
||||
|
||||
namespace FizzyLauncher.Windows.Forms
|
||||
{
|
||||
public partial class TilePanelLayout : TileGridPanelLayout<TilePanel>
|
||||
{
|
||||
protected TileGroupModel groupModel = null;
|
||||
|
||||
|
||||
public TilePanelLayout(TileGroupModel model) : base()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.TitleContextMenuStrip = contextMenuStrip2;
|
||||
this.ContainerContextMenuStrip = contextMenuStrip1;
|
||||
|
||||
this.LoadModel(model);
|
||||
}
|
||||
|
||||
protected override void OnDragDrop(DragEventArgs e)
|
||||
{
|
||||
string[] fileList = e.Data.GetData(DataFormats.FileDrop) as string[];
|
||||
|
||||
this.LoadShortcuts(fileList);
|
||||
}
|
||||
|
||||
public new bool EnableAnimation
|
||||
{
|
||||
get
|
||||
{
|
||||
MainForm mainForm = this.MainForm;
|
||||
if (mainForm == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mainForm.CurrentSession == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
base.EnableAnimation = mainForm.CurrentSession.EnableAnimation;
|
||||
|
||||
return base.EnableAnimation;
|
||||
}
|
||||
set => base.EnableAnimation = value;
|
||||
}
|
||||
|
||||
public void LoadShortcuts(string[] fileList)
|
||||
{
|
||||
if (fileList == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (fileList.Length <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(fileList[0]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
TileModel model = new TileModel()
|
||||
{
|
||||
ProcessFilename = fileList[0],
|
||||
Title = Path.GetFileName(fileList[0])
|
||||
};
|
||||
|
||||
// exe
|
||||
if (Path.GetExtension(fileList[0]).Equals(".exe", StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
if (File.Exists(fileList[0]))
|
||||
{
|
||||
try
|
||||
{
|
||||
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(fileList[0]);
|
||||
if (fvi != null)
|
||||
{
|
||||
model.Title = fvi.ProductName;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(model.Title))
|
||||
{
|
||||
model.Title = Path.GetFileNameWithoutExtension(fileList[0]);
|
||||
}
|
||||
}
|
||||
|
||||
this.AddTile(model);
|
||||
}
|
||||
|
||||
public TileGroupModel Model
|
||||
{
|
||||
get
|
||||
{
|
||||
TileGroupModel rs = new TileGroupModel()
|
||||
{
|
||||
Title = groupModel.Title,
|
||||
GridSize = new Size(this.GridSize.X, this.GridSize.Y),
|
||||
IsExpanded = this.IsExpanded,
|
||||
IsExclusive = groupModel.IsExclusive,
|
||||
Items = this.Tiles
|
||||
};
|
||||
|
||||
return rs;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public MainForm MainForm { get => UIControl.GetParentsUntil<MainForm>(this.Parent); }
|
||||
|
||||
public List<TileModel> Tiles
|
||||
{
|
||||
get
|
||||
{
|
||||
List<TileModel> result = new List<TileModel>();
|
||||
foreach (GridTileItem item in this.GridTileItems.Where(x => x.Tile.GetType() == typeof(TilePanel)))
|
||||
{
|
||||
TileModel model = (item.Tile as TilePanel).ModelInfo;
|
||||
model.Position = item.Coord;
|
||||
|
||||
result.Add(model);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public void AddTile(TileModel tile)
|
||||
{
|
||||
Point gridSize = this.GridSize;
|
||||
|
||||
if (GridTileItems.Count >= (gridSize.X * gridSize.Y))
|
||||
{
|
||||
this.SetGridSize(gridSize.X, (gridSize.Y + 1));
|
||||
}
|
||||
|
||||
Point? newCoord = tile.Position;
|
||||
if ((newCoord == null) || HasTile(tile.Position))
|
||||
{
|
||||
newCoord = FindLastFreeCoord();
|
||||
}
|
||||
|
||||
if (newCoord == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
tile.Position = newCoord.Value;
|
||||
|
||||
TilePanel panel = new TilePanel();
|
||||
panel.LoadInfo(tile);
|
||||
panel.Location = ConvertCoordToLocation(tile.Position);
|
||||
|
||||
GridTileItems.Add(new GridTileItem()
|
||||
{
|
||||
Tile = panel,
|
||||
Coord = tile.Position
|
||||
});
|
||||
|
||||
this.Controls.Add(panel);
|
||||
}
|
||||
|
||||
public void AddGroup()
|
||||
{
|
||||
if (this.FlowLayoutPanel == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.FlowLayoutPanel.Controls.Add(new TilePanelLayout(new TileGroupModel()
|
||||
{
|
||||
Title = "New Group",
|
||||
GridSize = new Size(8, 1)
|
||||
}));
|
||||
}
|
||||
|
||||
public void AddRow() => this.SetGridSize(this.GridSize.X, (this.GridSize.Y + 1));
|
||||
|
||||
public void EditGroup()
|
||||
{
|
||||
//EditGroupForm.ShowDialog(this);
|
||||
}
|
||||
|
||||
public async void LoadModel(TileGroupModel model)
|
||||
{
|
||||
groupModel = model;
|
||||
|
||||
this.Title = groupModel?.Title ?? string.Empty;
|
||||
this.IsExpanded = groupModel.IsExpanded;
|
||||
|
||||
//label1.Image = (isExpanded ? AppResource.toggle_right_ea_16 : AppResource.toggle_left_ea_16);
|
||||
|
||||
this.SetGridSize(groupModel.GridSize.Width, groupModel.GridSize.Height);
|
||||
this.LoadTiles(model.Items);
|
||||
this.SetGridSize(groupModel.GridSize.Width, groupModel.GridSize.Height);
|
||||
|
||||
await this.Invalidate();
|
||||
}
|
||||
|
||||
public async void UpdateModel(TileGroupModel model)
|
||||
{
|
||||
groupModel = model;
|
||||
|
||||
this.Title = groupModel?.Title ?? string.Empty;
|
||||
this.IsExpanded = groupModel.IsExpanded;
|
||||
|
||||
await this.Invalidate();
|
||||
}
|
||||
|
||||
public void LoadTiles(List<TileModel> tiles)
|
||||
{
|
||||
if (tiles == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (tiles.Count() <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (TileModel item in tiles)
|
||||
{
|
||||
// resolve final grid position
|
||||
Point? confirmedPosition = ResolveCoord(item.Position);
|
||||
if (confirmedPosition == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// place control
|
||||
TilePanel panel = new TilePanel();
|
||||
panel.LoadInfo(item);
|
||||
panel.Location = ConvertCoordToLocation(confirmedPosition.Value);
|
||||
|
||||
GridTileItems.Add(new GridTileItem()
|
||||
{
|
||||
Tile = panel,
|
||||
Coord = confirmedPosition.Value
|
||||
});
|
||||
|
||||
this.Controls.Add(panel);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetGridSize(int width, int height)
|
||||
{
|
||||
this.GridSize = new Point(width, height);
|
||||
|
||||
groupModel.GridSize = new Size(groupModel.GridSize.Width, height);
|
||||
}
|
||||
|
||||
protected override async void label1_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
base.label1_MouseClick(sender, e);
|
||||
|
||||
if (isAnimating)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
// exclusivity
|
||||
if (this.IsExpanded)
|
||||
{
|
||||
if (this.Model.IsExclusive)
|
||||
{
|
||||
if (this.FlowLayoutPanel != null)
|
||||
{
|
||||
foreach (TilePanelLayout item in this.FlowLayoutPanel.Controls.OfType<TilePanelLayout>())
|
||||
{
|
||||
if (item.Equals(this))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
await item.Collapse();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region tile context menu
|
||||
|
||||
/// <summary>
|
||||
/// Add tile
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void addTileMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Point coord = ConvertLocationToCoord(lastMousePosition.X, lastMousePosition.Y);
|
||||
|
||||
//EditTileForm.ShowAddDialog(this, coord);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add folder
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void addListTileMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Point coord = ConvertLocationToCoord(lastMousePosition.X, lastMousePosition.Y);
|
||||
|
||||
//EditTileFolderForm.ShowAddDialog(this, coord);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region group context menu
|
||||
|
||||
/// <summary>
|
||||
/// Add group
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void addGroupMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.AddGroup();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Edit group
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void editGroupMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.EditGroup();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add row
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void toolStripMenuItem5_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.AddRow();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Remove row
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void removeRowToolStripMenuItem_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
if (this.GridSize.Y <= 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
bool rs = GridTileItems.Exists(x => x.Coord.Y.Equals(this.GridSize.Y - 1));
|
||||
if (rs)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.SetGridSize(this.GridSize.X, (this.GridSize.Y - 1));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Move to top
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void moveTopMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.MoveTop();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Move up
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void moveUpMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.MoveUp();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Move down
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void moveDownMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.MoveDown();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Move to bottom
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void moveBottomMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.MoveBottom();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Remove group
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void removeGroupMenuItem3_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Remove();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="contextMenuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>172, 17</value>
|
||||
</metadata>
|
||||
</root>
|
37
Windows/GridTableLayout.Designer.cs
generated
37
Windows/GridTableLayout.Designer.cs
generated
@ -1,37 +0,0 @@
|
||||
namespace FizzyLauncher.Windows
|
||||
{
|
||||
partial class GridTableLayout
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FizzyLauncher.Windows
|
||||
{
|
||||
public partial class GridTableLayout : RyzStudio.Windows.Forms.T1UserControl
|
||||
{
|
||||
public GridTableLayout()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
37
Windows/TileGridPanel.Designer.cs
generated
37
Windows/TileGridPanel.Designer.cs
generated
@ -1,37 +0,0 @@
|
||||
namespace RyzStudio.Windows.Forms
|
||||
{
|
||||
partial class TileGridPanel
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
namespace RyzStudio.Windows.Forms
|
||||
{
|
||||
public partial class TileGridPanel : RyzStudio.Windows.Forms.T1UserControl
|
||||
{
|
||||
public TileGridPanel() : base()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.EnableMovable = true;
|
||||
}
|
||||
|
||||
//protected override void OnDragOver(DragEventArgs e)
|
||||
//{
|
||||
// base.OnDragDrop(e);
|
||||
|
||||
// e.Effect = (e.Data.GetDataPresent(DataFormats.FileDrop)) ? DragDropEffects.Link : DragDropEffects.None;
|
||||
//}
|
||||
|
||||
//protected override void OnMouseUp(MouseEventArgs e)
|
||||
//{
|
||||
// base.OnMouseUp(e);
|
||||
|
||||
// isDragging = false;
|
||||
//}
|
||||
|
||||
//protected override void OnMouseDown(MouseEventArgs e)
|
||||
//{
|
||||
// base.OnMouseDown(e);
|
||||
|
||||
// //var parentLayout = this.TileGridLayout;
|
||||
// //if (parentLayout == null)
|
||||
// //{
|
||||
// // return;
|
||||
// //}
|
||||
|
||||
// this.BringToFront();
|
||||
|
||||
// if (((e.Button == MouseButtons.Left) && (Control.ModifierKeys == Keys.Control)) || (e.Button == MouseButtons.Right))
|
||||
// {
|
||||
// isDragging = true;
|
||||
// startPosition = e.Location;
|
||||
// }
|
||||
//}
|
||||
|
||||
//protected override void OnMouseMove(MouseEventArgs e)
|
||||
//{
|
||||
// base.OnMouseMove(e);
|
||||
|
||||
// if (isDragging)
|
||||
// {
|
||||
// //var parentLayout = this.TileGridLayout;
|
||||
// //if (parentLayout == null)
|
||||
// //{
|
||||
// // return;
|
||||
// //}
|
||||
|
||||
// int x = (this.Location.X + (e.Location.X - startPosition.X));
|
||||
// int y = (this.Location.Y + (e.Location.Y - startPosition.Y));
|
||||
|
||||
// //parentLayout.MoveTile(this, x, y);
|
||||
|
||||
// this.Location = new Point(x, y);
|
||||
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
//public TileGridPanelLayout<Control> TileGridLayout { get => UIControl.GetParentsUntil<TileGridPanelLayout<Control>>(this); }
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
67
Windows/TileGridPanelLayout.Designer.cs
generated
67
Windows/TileGridPanelLayout.Designer.cs
generated
@ -1,67 +0,0 @@
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RyzStudio.Windows.Forms
|
||||
{
|
||||
partial class TileGridPanelLayout<T>
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
label1 = new System.Windows.Forms.Label();
|
||||
SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(99)))), ((int)(((byte)(105)))), ((int)(((byte)(119)))));
|
||||
this.label1.Image = global::FizzyLauncher.AppResource.toggle_left_ea_16;
|
||||
this.label1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.label1.Location = new System.Drawing.Point(0, 4);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label1.Padding = new System.Windows.Forms.Padding(0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(0, 15);
|
||||
this.label1.TabIndex = 2;
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.label1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.label1_MouseClick);
|
||||
this.label1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.label1_MouseClick);
|
||||
//
|
||||
// GridLayout2
|
||||
//
|
||||
AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
Controls.Add(label1);
|
||||
Name = "GridLayout2";
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
@ -1,581 +0,0 @@
|
||||
using System;
|
||||
using System.CodeDom;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using FizzyLauncher;
|
||||
using FizzyLauncher.Windows.Forms;
|
||||
|
||||
namespace RyzStudio.Windows.Forms
|
||||
{
|
||||
public partial class TileGridPanelLayout<T> : RyzStudio.Windows.Forms.TUserControl where T : Control
|
||||
{
|
||||
public static int CalcWidth(int tileCount)
|
||||
=> (tileCount * tileSize) + ((tileCount - 1) * margin);
|
||||
|
||||
|
||||
public class GridTileItem
|
||||
{
|
||||
public T Tile { get; set; }
|
||||
public Point Coord { get; set; } = new Point(0, 0);
|
||||
}
|
||||
|
||||
|
||||
protected const int tileSize = 70;
|
||||
protected const int margin = 3;
|
||||
protected const int labelHeight = 20;
|
||||
protected const int collapseIncrement = 6;
|
||||
protected const int expandIncrement = 8;
|
||||
|
||||
protected int collapseHeight = 0;
|
||||
protected int expandedHeight = 0;
|
||||
|
||||
protected bool isAnimating = false;
|
||||
protected bool isExpanded = true;
|
||||
protected Point lastMousePosition = new Point();
|
||||
protected Point gridSize = new Point(0, 0);
|
||||
|
||||
|
||||
public TileGridPanelLayout() : base()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.AllowDrop = true;
|
||||
this.BackColor = Color.Transparent;
|
||||
this.Margin = new Padding(0);
|
||||
this.Padding = new Padding(0, 0, 0, 10);
|
||||
|
||||
}
|
||||
|
||||
protected override void OnControlAdded(ControlEventArgs e)
|
||||
{
|
||||
base.OnControlAdded(e);
|
||||
|
||||
e.Control.MouseMove += (sender, e) =>
|
||||
{
|
||||
this.MoveTile(sender as T, e.X, e.Y);
|
||||
};
|
||||
}
|
||||
|
||||
private void tilePanel_Move(object sender, EventArgs e)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override void OnDragOver(DragEventArgs e)
|
||||
{
|
||||
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
||||
{
|
||||
e.Effect = DragDropEffects.Link;
|
||||
}
|
||||
else
|
||||
{
|
||||
e.Effect = DragDropEffects.None;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseClick(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseClick(e);
|
||||
|
||||
lastMousePosition = e.Location;
|
||||
|
||||
bool isLabel = ((e.Location.X >= 0) && (e.Location.X <= this.Width) && (e.Location.Y >= 0) && (e.Location.Y <= 20));
|
||||
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
else if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
if (isLabel)
|
||||
{
|
||||
this.TitleContextMenuStrip?.Show(this, e.Location);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.ContainerContextMenuStrip?.Show(this, e.Location);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseDoubleClick(MouseEventArgs e)
|
||||
=> base.OnMouseClick(e);
|
||||
|
||||
protected override async void OnResize(EventArgs e)
|
||||
{
|
||||
base.OnResize(e);
|
||||
|
||||
await this.Invalidate();
|
||||
}
|
||||
|
||||
protected virtual async void label1_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (isAnimating)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
this.IsExpanded = !this.IsExpanded;
|
||||
|
||||
//label1.Image = (this.IsExpanded ? AppResource.toggle_right_ea_16 : AppResource.toggle_left_ea_16);
|
||||
|
||||
await this.Invalidate();
|
||||
|
||||
// exclusivity
|
||||
//if (this.IsExpanded)
|
||||
//{
|
||||
//if (this.Model.IsExclusive)
|
||||
//{
|
||||
// if (this.FlowLayoutPanel != null)
|
||||
// {
|
||||
// foreach (TilePanelLayout item in this.FlowLayoutPanel.Controls.OfType<TilePanelLayout>())
|
||||
// {
|
||||
// if (item.Equals(this))
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
// await item.Collapse();
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//}
|
||||
|
||||
//label1.Image = (this.IsExpanded ? AppResource.toggle_right_ea_16 : AppResource.toggle_left_ea_16);
|
||||
}
|
||||
else if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
this.TitleContextMenuStrip?.Show(this, e.Location);
|
||||
}
|
||||
}
|
||||
|
||||
#region encapsulation
|
||||
|
||||
[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, 0, 0, 10); }
|
||||
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public new ContextMenuStrip ContextMenuStrip { get; set; } = null;
|
||||
|
||||
#endregion
|
||||
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public Point GridSize
|
||||
{
|
||||
get => gridSize;
|
||||
protected set
|
||||
{
|
||||
gridSize = value;
|
||||
expandedHeight = (this.TileSize * value.Y) + labelHeight;
|
||||
|
||||
int newWidth = CalcWidth(gridSize.X);
|
||||
|
||||
this.Size = new Size(newWidth, (this.IsExpanded ? this.ExpandedHeight : this.CollapseHeight));
|
||||
}
|
||||
}
|
||||
|
||||
[Category("Appearance")]
|
||||
public ContextMenuStrip TitleContextMenuStrip { get; set; } = null;
|
||||
|
||||
[Category("Appearance")]
|
||||
public ContextMenuStrip ContainerContextMenuStrip { get; set; } = null;
|
||||
|
||||
[Category("Appearance")]
|
||||
public bool EnableAnimation { get; set; } = false;
|
||||
|
||||
[Category("Appearance")]
|
||||
public string Title { get => label1.Text?.Trim(); set => label1.Text = " " + value; }
|
||||
|
||||
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public List<GridTileItem> GridTileItems { get; protected set; } = new List<GridTileItem>();
|
||||
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public FlowLayoutPanel FlowLayoutPanel { get => UIControl.GetParentsUntil<FlowLayoutPanel>(this.Parent); }
|
||||
|
||||
protected int CollapseHeight
|
||||
=> labelHeight + collapseHeight;
|
||||
|
||||
protected int ExpandedHeight
|
||||
=> expandedHeight + this.Padding.Bottom;
|
||||
|
||||
protected int TileSize => (tileSize + margin);
|
||||
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public bool IsExpanded
|
||||
{
|
||||
get => isExpanded;
|
||||
protected set
|
||||
{
|
||||
isExpanded = value;
|
||||
|
||||
//label1.Image = (isExpanded ? UIResource1.toggle_right_16 : UIResource1.toggle_left_16);
|
||||
label1.Image = (isExpanded ? AppResource.toggle_right_ea_16 : AppResource.toggle_left_ea_16);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
this.Controls.Clear();
|
||||
}
|
||||
|
||||
public async Task Collapse()
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
if (isAnimating) return;
|
||||
|
||||
isAnimating = true;
|
||||
this.IsExpanded = false;
|
||||
|
||||
if (this.EnableAnimation)
|
||||
{
|
||||
while (this.Height > this.CollapseHeight)
|
||||
{
|
||||
UIControl.SetHeight(this, (this.Height - collapseIncrement));
|
||||
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
}
|
||||
|
||||
UIControl.SetHeight(this, this.CollapseHeight);
|
||||
|
||||
isAnimating = false;
|
||||
|
||||
this.Invalidate(this.DisplayRectangle, false);
|
||||
});
|
||||
}
|
||||
|
||||
public async Task Expand()
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
if (isAnimating) return;
|
||||
|
||||
isAnimating = true;
|
||||
this.IsExpanded = true;
|
||||
|
||||
if (this.EnableAnimation)
|
||||
{
|
||||
while (this.Height < this.ExpandedHeight)
|
||||
{
|
||||
UIControl.SetHeight(this, (this.Height + expandIncrement));
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
}
|
||||
|
||||
UIControl.SetHeight(this, this.ExpandedHeight);
|
||||
|
||||
isAnimating = false;
|
||||
|
||||
this.Invalidate(this.DisplayRectangle, false);
|
||||
});
|
||||
}
|
||||
|
||||
public new async Task Invalidate()
|
||||
{
|
||||
base.Invalidate();
|
||||
|
||||
if (isAnimating)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.IsExpanded)
|
||||
{
|
||||
await this.Expand();
|
||||
}
|
||||
else
|
||||
{
|
||||
await this.Collapse();
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveTop()
|
||||
{
|
||||
if (this.FlowLayoutPanel != null)
|
||||
{
|
||||
this.FlowLayoutPanel.Controls.SetChildIndex(this, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveUp()
|
||||
{
|
||||
if (this.FlowLayoutPanel != null)
|
||||
{
|
||||
int pos = this.FlowLayoutPanel.Controls.GetChildIndex(this);
|
||||
if (pos <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.FlowLayoutPanel.Controls.SetChildIndex(this, (pos - 1));
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveDown()
|
||||
{
|
||||
if (this.FlowLayoutPanel != null)
|
||||
{
|
||||
int pos = this.FlowLayoutPanel.Controls.GetChildIndex(this);
|
||||
if (pos >= (this.FlowLayoutPanel.Controls.Count - 1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.FlowLayoutPanel.Controls.SetChildIndex(this, (pos + 1));
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveBottom()
|
||||
{
|
||||
if (this.FlowLayoutPanel != null)
|
||||
{
|
||||
this.FlowLayoutPanel.Controls.SetChildIndex(this, (this.FlowLayoutPanel.Controls.Count - 1));
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveTile(T panel, int posX, int posY)
|
||||
{
|
||||
GridTileItem item = this.GridTileItems.Where(x => x.Tile.Equals(panel)).FirstOrDefault();
|
||||
if (item == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//Point newPosition = ConvertLocationToNearestCoord(posX, posY);
|
||||
//Point newPosition = ConvertLocationToCoord(posX, posY);
|
||||
Point newPosition = ConvertLocationToCoord(panel.Location.X, panel.Location.Y);
|
||||
if (!IsCoordInBounds(newPosition))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (HasTile(newPosition))
|
||||
{
|
||||
GridTileItem swapItem = this.GridTileItems.Where(x => x.Coord.Equals(newPosition)).FirstOrDefault();
|
||||
if (swapItem != null)
|
||||
{
|
||||
swapItem.Coord = item.Coord;
|
||||
swapItem.Tile.Location = ConvertCoordToLocation(item.Coord);
|
||||
}
|
||||
|
||||
item.Coord = newPosition;
|
||||
panel.Location = ConvertCoordToLocation(newPosition);
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Coord = newPosition;
|
||||
panel.Location = ConvertCoordToLocation(newPosition);
|
||||
}
|
||||
}
|
||||
|
||||
public void Remove()
|
||||
{
|
||||
if (this.FlowLayoutPanel != null)
|
||||
{
|
||||
this.FlowLayoutPanel.Controls.Remove(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void Remove(T panel)
|
||||
{
|
||||
GridTileItem m = this.GridTileItems.Where(x => x.Tile.Equals(panel)).FirstOrDefault();
|
||||
if (m != null)
|
||||
{
|
||||
this.GridTileItems.Remove(m);
|
||||
}
|
||||
|
||||
this.Controls.Remove(panel);
|
||||
}
|
||||
|
||||
//protected Point CalcCoordFromPosition(int posX, int posY)
|
||||
//{
|
||||
// int x = (int)Math.Round(decimal.Divide(posX, this.TileSize));
|
||||
// int y = (int)Math.Round(decimal.Divide((posY - labelHeight), this.TileSize));
|
||||
|
||||
// if (x < 0) x = 0;
|
||||
// if (y < 0) y = 0;
|
||||
|
||||
// return new Point((x * this.TileSize), ((y * this.TileSize) + labelHeight));
|
||||
//}
|
||||
|
||||
protected Point ConvertCoordToLocation(Point position)
|
||||
=> new Point((position.X * this.TileSize), ((position.Y * this.TileSize) + labelHeight));
|
||||
|
||||
protected Point ConvertLocationToCoord(int posX, int posY)
|
||||
{
|
||||
int x = (int)Math.Round(decimal.Divide(posX, this.TileSize));
|
||||
int y = (int)Math.Round(decimal.Divide((posY - labelHeight), this.TileSize));
|
||||
|
||||
//int x = (int)Math.Ceiling(decimal.Divide(posX, this.TileSize));
|
||||
//int y = (int)Math.Ceiling(decimal.Divide((posY - labelHeight), this.TileSize));
|
||||
|
||||
//x--;
|
||||
//y--;
|
||||
|
||||
if (x < 0) x = 0;
|
||||
if (y < 0) y = 0;
|
||||
|
||||
return new Point(x, y);
|
||||
}
|
||||
|
||||
//protected Point ConvertLocationToNearestCoord(int posX, int posY)
|
||||
//{
|
||||
// int x = (int)Math.Round(decimal.Divide(posX, this.TileSize));
|
||||
// int y = (int)Math.Round(decimal.Divide((posY - labelHeight), this.TileSize));
|
||||
|
||||
// if (x < 0) x = 0;
|
||||
// if (y < 0) y = 0;
|
||||
|
||||
// return new Point(x, y);
|
||||
//}
|
||||
|
||||
protected bool HasTile(Point position)
|
||||
{
|
||||
if (GridTileItems == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (GridTileItems.Count <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return GridTileItems.Any(x => x.Coord.Equals(position));
|
||||
}
|
||||
|
||||
protected bool IsCoordInBounds(Point position)
|
||||
{
|
||||
if (position.X >= this.GridSize.X)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (position.Y >= this.GridSize.Y)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected Point? FindFirstFreeCoord()
|
||||
{
|
||||
for (int y = 0; y < this.GridSize.Y; y++)
|
||||
{
|
||||
for (int x = 0; x < this.GridSize.X; x++)
|
||||
{
|
||||
if (HasTile(new Point(x, y)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return new Point(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected Point? FindLastFreeCoord()
|
||||
{
|
||||
Point gridSize = this.GridSize;
|
||||
|
||||
// none available
|
||||
if (GridTileItems.Count >= (gridSize.X * gridSize.Y))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (GridTileItems.Count <= 0)
|
||||
{
|
||||
return FindFirstFreeCoord();
|
||||
}
|
||||
|
||||
// only one available
|
||||
if (GridTileItems.Count >= ((gridSize.X * gridSize.Y) - 1))
|
||||
{
|
||||
return FindFirstFreeCoord();
|
||||
}
|
||||
|
||||
Point? rv = null;
|
||||
|
||||
for (int y = (gridSize.Y - 1); y >= 0; y--)
|
||||
{
|
||||
for (int x = (gridSize.X - 1); x >= 0; x--)
|
||||
{
|
||||
if (HasTile(new Point(x, y)))
|
||||
{
|
||||
if (rv.HasValue)
|
||||
{
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = new Point(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected Point? FindNextFreeCoord(Point coord)
|
||||
{
|
||||
Point newCoord = coord;
|
||||
|
||||
while (true)
|
||||
{
|
||||
newCoord.X++;
|
||||
|
||||
if (newCoord.X >= this.GridSize.X)
|
||||
{
|
||||
newCoord.Y++;
|
||||
newCoord.X = 0;
|
||||
}
|
||||
|
||||
if (!IsCoordInBounds(newCoord))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (HasTile(newCoord))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return newCoord;
|
||||
}
|
||||
}
|
||||
|
||||
protected Point? ResolveCoord(Point coord)
|
||||
{
|
||||
if (!IsCoordInBounds(coord))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!HasTile(coord))
|
||||
{
|
||||
return coord;
|
||||
}
|
||||
|
||||
return FindNextFreeCoord(coord);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user