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="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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">
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
</data>
|
</data>
|
||||||
@ -117,4 +117,25 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</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>
|
</root>
|
@ -6,36 +6,43 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using FizzyLauncher.Models;
|
using FizzyLauncher.Models;
|
||||||
|
using FizzyLauncher.Windows.Forms;
|
||||||
using RyzStudio.Windows.Forms;
|
using RyzStudio.Windows.Forms;
|
||||||
using RyzStudio.Windows.ThemedForms;
|
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
|
public class EditTileFolderForm : TDialog
|
||||||
{
|
{
|
||||||
private System.Windows.Forms.Label label1;
|
private Label label1;
|
||||||
private ThButton button1;
|
private ThButton button1;
|
||||||
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
|
private THorizontalSeparator horizontalSeparator2;
|
||||||
private ThTextBox textBox1;
|
private ThClearableTextBox textBox1;
|
||||||
private ThListBox listBox1;
|
private ThListBox listBox1;
|
||||||
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator1;
|
private THorizontalSeparator tHorizontalSeparator1;
|
||||||
private System.Windows.Forms.Label label2;
|
private Label label2;
|
||||||
|
|
||||||
|
private TileModel result = null;
|
||||||
|
|
||||||
|
|
||||||
public EditTileFolderForm(TileModel model = null)
|
public EditTileFolderForm(TileModel model = null)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
this.StartPosition = FormStartPosition.WindowsDefaultLocation;
|
StartPosition = FormStartPosition.WindowsDefaultLocation;
|
||||||
this.OkButton = button1;
|
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)
|
if (item.IsGroup)
|
||||||
{
|
{
|
||||||
@ -47,33 +54,29 @@ namespace FizzyLauncher.Windows.Forms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.Text = "Add Folder";
|
Text = "Add Folder";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
textBox1 = new ThTextBox();
|
textBox1 = new ThClearableTextBox();
|
||||||
label1 = new Label();
|
label1 = new Label();
|
||||||
button1 = new ThButton();
|
button1 = new ThButton();
|
||||||
horizontalSeparator2 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
horizontalSeparator2 = new THorizontalSeparator();
|
||||||
listBox1 = new ThListBox();
|
listBox1 = new ThListBox();
|
||||||
label2 = new Label();
|
label2 = new Label();
|
||||||
tHorizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
tHorizontalSeparator1 = new THorizontalSeparator();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// textBox1
|
// textBox1
|
||||||
//
|
//
|
||||||
textBox1.AcceptButton = null;
|
|
||||||
textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
textBox1.BackColor = Color.Transparent;
|
textBox1.BackColor = Color.Transparent;
|
||||||
textBox1.EnableReactiveVisual = true;
|
textBox1.EnableReactiveVisual = true;
|
||||||
textBox1.Font = new Font("Microsoft Sans Serif", 8.25F);
|
textBox1.Font = new Font("Microsoft Sans Serif", 8.25F);
|
||||||
textBox1.Location = new Point(109, 20);
|
textBox1.Location = new Point(109, 20);
|
||||||
textBox1.Margin = new Padding(10, 10, 10, 0);
|
|
||||||
textBox1.Name = "textBox1";
|
textBox1.Name = "textBox1";
|
||||||
textBox1.Padding = new Padding(4, 4, 3, 3);
|
|
||||||
textBox1.ReadOnly = false;
|
|
||||||
textBox1.Size = new Size(260, 35);
|
textBox1.Size = new Size(260, 35);
|
||||||
textBox1.TabIndex = 152;
|
textBox1.TabIndex = 152;
|
||||||
textBox1.TabStop = false;
|
textBox1.TabStop = false;
|
||||||
@ -196,12 +199,14 @@ namespace FizzyLauncher.Windows.Forms
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var result = new TileModel()
|
if (result == null)
|
||||||
{
|
{
|
||||||
Title = textBox1.Text?.Trim() ?? string.Empty,
|
result = new TileModel();
|
||||||
IsGroup = true,
|
}
|
||||||
Items = new List<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>())
|
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))
|
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
||||||
{
|
{
|
@ -4,34 +4,40 @@ using FizzyLauncher.Models;
|
|||||||
using RyzStudio.Windows.Forms;
|
using RyzStudio.Windows.Forms;
|
||||||
using RyzStudio.Windows.ThemedForms;
|
using RyzStudio.Windows.ThemedForms;
|
||||||
using RyzStudio.Windows.ThemedForms.ButtonTextBox;
|
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
|
public class EditTileForm : TDialog
|
||||||
{
|
{
|
||||||
private System.Windows.Forms.Label label6;
|
private Label label6;
|
||||||
private System.Windows.Forms.Label label7;
|
private Label label7;
|
||||||
private System.Windows.Forms.Label label4;
|
private Label label4;
|
||||||
private System.Windows.Forms.Label label3;
|
private Label label3;
|
||||||
private System.Windows.Forms.Label label2;
|
private Label label2;
|
||||||
private System.Windows.Forms.Label label1;
|
private Label label1;
|
||||||
private ThPathDialogTextBox textBox2;
|
private ThPathDialogTextBox textBox2;
|
||||||
private ThTextBox textBox3;
|
private ThClearableTextBox textBox3;
|
||||||
private ThPathDialogTextBox textBox4;
|
private ThPathDialogTextBox textBox4;
|
||||||
private ThButton button1;
|
private ThButton button1;
|
||||||
private ThPickerBox pickerBox1;
|
private ThPickerBox pickerBox1;
|
||||||
private ThPickerBox pickerBox2;
|
private ThYesNoPickerBox pickerBox2;
|
||||||
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator1;
|
private THorizontalSeparator horizontalSeparator1;
|
||||||
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
|
private THorizontalSeparator horizontalSeparator2;
|
||||||
private ThTextBox textBox1;
|
private ThClearableTextBox textBox1;
|
||||||
|
|
||||||
|
private TileModel result = null;
|
||||||
|
|
||||||
|
|
||||||
public EditTileForm(TileModel model = null)
|
public EditTileForm(TileModel model = null)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
this.StartPosition = FormStartPosition.WindowsDefaultLocation;
|
StartPosition = FormStartPosition.WindowsDefaultLocation;
|
||||||
this.OkButton = button1;
|
OkButton = button1;
|
||||||
|
|
||||||
|
result = model;
|
||||||
|
|
||||||
pickerBox1.ComboBox.Items.Clear();
|
pickerBox1.ComboBox.Items.Clear();
|
||||||
pickerBox1.ComboBox.Items.AddRange(new string[] { "Normal", "Hidden", "Minimized", "Maximized" });
|
pickerBox1.ComboBox.Items.AddRange(new string[] { "Normal", "Hidden", "Minimized", "Maximized" });
|
||||||
@ -40,33 +46,26 @@ namespace FizzyLauncher.Windows.Forms
|
|||||||
pickerBox1.ComboBox.SelectedIndex = 0;
|
pickerBox1.ComboBox.SelectedIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pickerBox2.ComboBox.Items.Clear();
|
if (result != null)
|
||||||
pickerBox2.ComboBox.Items.AddRange(new string[] { "No", "Yes" });
|
|
||||||
if (pickerBox2.ComboBox.Items.Count > 0)
|
|
||||||
{
|
{
|
||||||
pickerBox2.ComboBox.SelectedIndex = 0;
|
Text = "Edit Tile";
|
||||||
}
|
|
||||||
|
|
||||||
if (model != null)
|
textBox1.Text = result?.Title ?? string.Empty;
|
||||||
{
|
textBox2.Text = result?.ProcessFilename ?? string.Empty;
|
||||||
this.Text = "Edit Tile";
|
textBox3.Text = result?.ProcessArgument ?? string.Empty;
|
||||||
|
textBox4.Text = result?.ProcessWorkingDirectory ?? string.Empty;
|
||||||
textBox1.Text = model?.Title ?? string.Empty;
|
pickerBox1.ComboBox.SelectedIndex = (int)result.ProcessWindowStyle;
|
||||||
textBox2.Text = model?.ProcessFilename ?? string.Empty;
|
pickerBox2.Value = result.ProcessAsAdmin;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.Text = "Add Tile";
|
Text = "Add Tile";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
textBox1 = new ThTextBox();
|
textBox1 = new ThClearableTextBox();
|
||||||
label6 = new Label();
|
label6 = new Label();
|
||||||
label7 = new Label();
|
label7 = new Label();
|
||||||
label4 = new Label();
|
label4 = new Label();
|
||||||
@ -74,27 +73,23 @@ namespace FizzyLauncher.Windows.Forms
|
|||||||
label2 = new Label();
|
label2 = new Label();
|
||||||
label1 = new Label();
|
label1 = new Label();
|
||||||
textBox2 = new ThPathDialogTextBox();
|
textBox2 = new ThPathDialogTextBox();
|
||||||
textBox3 = new ThTextBox();
|
textBox3 = new ThClearableTextBox();
|
||||||
textBox4 = new ThPathDialogTextBox();
|
textBox4 = new ThPathDialogTextBox();
|
||||||
button1 = new ThButton();
|
button1 = new ThButton();
|
||||||
pickerBox1 = new ThPickerBox();
|
pickerBox1 = new ThPickerBox();
|
||||||
pickerBox2 = new ThPickerBox();
|
pickerBox2 = new ThYesNoPickerBox();
|
||||||
horizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
horizontalSeparator1 = new THorizontalSeparator();
|
||||||
horizontalSeparator2 = new RyzStudio.Windows.Forms.THorizontalSeparator();
|
horizontalSeparator2 = new THorizontalSeparator();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// textBox1
|
// textBox1
|
||||||
//
|
//
|
||||||
textBox1.AcceptButton = null;
|
|
||||||
textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
textBox1.BackColor = Color.Transparent;
|
textBox1.BackColor = Color.Transparent;
|
||||||
textBox1.EnableReactiveVisual = true;
|
textBox1.EnableReactiveVisual = true;
|
||||||
textBox1.Font = new Font("Segoe UI", 9F);
|
textBox1.Font = new Font("Segoe UI", 9F);
|
||||||
textBox1.Location = new Point(126, 20);
|
textBox1.Location = new Point(126, 20);
|
||||||
textBox1.Margin = new Padding(10, 10, 10, 0);
|
|
||||||
textBox1.Name = "textBox1";
|
textBox1.Name = "textBox1";
|
||||||
textBox1.Padding = new Padding(4, 4, 3, 3);
|
|
||||||
textBox1.ReadOnly = false;
|
|
||||||
textBox1.Size = new Size(243, 35);
|
textBox1.Size = new Size(243, 35);
|
||||||
textBox1.TabIndex = 152;
|
textBox1.TabIndex = 152;
|
||||||
textBox1.TabStop = false;
|
textBox1.TabStop = false;
|
||||||
@ -181,21 +176,14 @@ namespace FizzyLauncher.Windows.Forms
|
|||||||
//
|
//
|
||||||
// textBox2
|
// textBox2
|
||||||
//
|
//
|
||||||
textBox2.AcceptButton = null;
|
|
||||||
textBox2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
textBox2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
textBox2.BackColor = Color.Transparent;
|
textBox2.BackColor = Color.Transparent;
|
||||||
textBox2.DialogMode = ThPathDialogTextBox.DialogType.OpenFile;
|
textBox2.DialogMode = ThPathDialogTextBox.DialogType.OpenFile;
|
||||||
textBox2.EnableReactiveVisual = true;
|
textBox2.EnableReactiveVisual = true;
|
||||||
textBox2.FolderBrowserDialog = null;
|
|
||||||
textBox2.Font = new Font("Segoe UI", 9F);
|
textBox2.Font = new Font("Segoe UI", 9F);
|
||||||
textBox2.HighlightImage = null;
|
|
||||||
textBox2.Location = new Point(126, 61);
|
textBox2.Location = new Point(126, 61);
|
||||||
textBox2.Margin = new Padding(10, 10, 10, 0);
|
textBox2.Margin = new Padding(10, 10, 10, 0);
|
||||||
textBox2.Name = "textBox2";
|
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.Size = new Size(243, 32);
|
||||||
textBox2.TabIndex = 170;
|
textBox2.TabIndex = 170;
|
||||||
textBox2.TabStop = false;
|
textBox2.TabStop = false;
|
||||||
@ -203,38 +191,25 @@ namespace FizzyLauncher.Windows.Forms
|
|||||||
//
|
//
|
||||||
// textBox3
|
// textBox3
|
||||||
//
|
//
|
||||||
textBox3.AcceptButton = null;
|
|
||||||
textBox3.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
textBox3.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
textBox3.BackColor = Color.Transparent;
|
textBox3.BackColor = Color.Transparent;
|
||||||
textBox3.EnableReactiveVisual = true;
|
textBox3.EnableReactiveVisual = true;
|
||||||
textBox3.Font = new Font("Segoe UI", 9F);
|
textBox3.Font = new Font("Segoe UI", 9F);
|
||||||
textBox3.Location = new Point(147, 102);
|
textBox3.Location = new Point(147, 102);
|
||||||
textBox3.Margin = new Padding(10, 10, 10, 0);
|
|
||||||
textBox3.Name = "textBox3";
|
textBox3.Name = "textBox3";
|
||||||
textBox3.Padding = new Padding(4, 4, 3, 3);
|
|
||||||
textBox3.ReadOnly = false;
|
|
||||||
textBox3.Size = new Size(222, 35);
|
textBox3.Size = new Size(222, 35);
|
||||||
textBox3.TabIndex = 171;
|
textBox3.TabIndex = 171;
|
||||||
textBox3.TabStop = false;
|
textBox3.TabStop = false;
|
||||||
textBox3.UseSystemPasswordChar = false;
|
|
||||||
//
|
//
|
||||||
// textBox4
|
// textBox4
|
||||||
//
|
//
|
||||||
textBox4.AcceptButton = null;
|
|
||||||
textBox4.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
textBox4.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
textBox4.BackColor = Color.Transparent;
|
textBox4.BackColor = Color.Transparent;
|
||||||
textBox4.DialogMode = ThPathDialogTextBox.DialogType.FolderBrowser;
|
textBox4.DialogMode = ThPathDialogTextBox.DialogType.FolderBrowser;
|
||||||
textBox4.EnableReactiveVisual = true;
|
textBox4.EnableReactiveVisual = true;
|
||||||
textBox4.FolderBrowserDialog = null;
|
|
||||||
textBox4.Font = new Font("Segoe UI", 9F);
|
textBox4.Font = new Font("Segoe UI", 9F);
|
||||||
textBox4.HighlightImage = null;
|
|
||||||
textBox4.Location = new Point(147, 143);
|
textBox4.Location = new Point(147, 143);
|
||||||
textBox4.Margin = new Padding(10, 10, 10, 0);
|
|
||||||
textBox4.Name = "textBox4";
|
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.Size = new Size(222, 32);
|
||||||
textBox4.TabIndex = 172;
|
textBox4.TabIndex = 172;
|
||||||
textBox4.TabStop = false;
|
textBox4.TabStop = false;
|
||||||
@ -277,16 +252,12 @@ namespace FizzyLauncher.Windows.Forms
|
|||||||
//
|
//
|
||||||
// pickerBox2
|
// pickerBox2
|
||||||
//
|
//
|
||||||
pickerBox2.AcceptButton = null;
|
|
||||||
pickerBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
pickerBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
pickerBox2.BackColor = Color.Transparent;
|
pickerBox2.BackColor = Color.Transparent;
|
||||||
pickerBox2.EnableReactiveVisual = true;
|
pickerBox2.EnableReactiveVisual = true;
|
||||||
pickerBox2.Font = new Font("Segoe UI", 9F);
|
pickerBox2.Font = new Font("Segoe UI", 9F);
|
||||||
pickerBox2.Location = new Point(285, 250);
|
pickerBox2.Location = new Point(285, 250);
|
||||||
pickerBox2.Margin = new Padding(10, 10, 10, 0);
|
|
||||||
pickerBox2.Name = "pickerBox2";
|
pickerBox2.Name = "pickerBox2";
|
||||||
pickerBox2.Padding = new Padding(4, 4, 3, 3);
|
|
||||||
pickerBox2.SelectedIndex = -1;
|
|
||||||
pickerBox2.Size = new Size(84, 34);
|
pickerBox2.Size = new Size(84, 34);
|
||||||
pickerBox2.TabIndex = 175;
|
pickerBox2.TabIndex = 175;
|
||||||
pickerBox2.TabStop = false;
|
pickerBox2.TabStop = false;
|
||||||
@ -349,15 +320,22 @@ namespace FizzyLauncher.Windows.Forms
|
|||||||
|
|
||||||
public TileModel Result
|
public TileModel Result
|
||||||
{
|
{
|
||||||
get => new TileModel()
|
get
|
||||||
{
|
{
|
||||||
Title = textBox1.Text?.Trim() ?? string.Empty,
|
if (result == null)
|
||||||
ProcessFilename = textBox2.Text?.Trim() ?? string.Empty,
|
{
|
||||||
ProcessArgument = textBox3.Text?.Trim() ?? string.Empty,
|
result = new TileModel();
|
||||||
ProcessWorkingDirectory = textBox4.Text?.Trim(),
|
}
|
||||||
ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle)pickerBox1.ComboBox.SelectedIndex,
|
|
||||||
ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1)
|
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>
|
<Copyright>Ray Lam</Copyright>
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
<FileVersion>1.0.0.0</FileVersion>
|
||||||
<Version>0.2.5.058</Version>
|
<Version>0.3.0.153</Version>
|
||||||
<EnableNETAnalyzers>False</EnableNETAnalyzers>
|
<EnableNETAnalyzers>False</EnableNETAnalyzers>
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
36
MainForm.Designer.cs
generated
36
MainForm.Designer.cs
generated
@ -76,9 +76,11 @@ namespace FizzyLauncher
|
|||||||
toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||||
|
panel1 = new System.Windows.Forms.Panel();
|
||||||
contextMenuStrip2.SuspendLayout();
|
contextMenuStrip2.SuspendLayout();
|
||||||
menuStrip1.SuspendLayout();
|
menuStrip1.SuspendLayout();
|
||||||
tileContainerMenu1.SuspendLayout();
|
tileContainerMenu1.SuspendLayout();
|
||||||
|
panel1.SuspendLayout();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// saveFileDialog1
|
// saveFileDialog1
|
||||||
@ -117,7 +119,7 @@ namespace FizzyLauncher
|
|||||||
menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { fileToolStripMenuItem, toolStripMenuItem1, viewToolStripMenuItem, toolsToolStripMenuItem, helpToolStripMenuItem1 });
|
menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { fileToolStripMenuItem, toolStripMenuItem1, viewToolStripMenuItem, toolsToolStripMenuItem, helpToolStripMenuItem1 });
|
||||||
menuStrip1.Location = new System.Drawing.Point(0, 0);
|
menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||||
menuStrip1.Name = "menuStrip1";
|
menuStrip1.Name = "menuStrip1";
|
||||||
menuStrip1.Size = new System.Drawing.Size(873, 24);
|
menuStrip1.Size = new System.Drawing.Size(404, 24);
|
||||||
menuStrip1.TabIndex = 2;
|
menuStrip1.TabIndex = 2;
|
||||||
menuStrip1.MenuActivate += menuStrip1_MenuActivate;
|
menuStrip1.MenuActivate += menuStrip1_MenuActivate;
|
||||||
//
|
//
|
||||||
@ -215,14 +217,14 @@ namespace FizzyLauncher
|
|||||||
// showBigIconsToolStripMenuItem
|
// showBigIconsToolStripMenuItem
|
||||||
//
|
//
|
||||||
showBigIconsToolStripMenuItem.Name = "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.Text = "Show &Big Icons";
|
||||||
showBigIconsToolStripMenuItem.Click += showBigIconsToolStripMenuItem_Click;
|
showBigIconsToolStripMenuItem.Click += showBigIconsToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
// alwaysOnTopToolStripMenuItem
|
// alwaysOnTopToolStripMenuItem
|
||||||
//
|
//
|
||||||
alwaysOnTopToolStripMenuItem.Name = "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.Text = "Always On &Top";
|
||||||
alwaysOnTopToolStripMenuItem.Click += alwaysOnTopToolStripMenuItem_Click;
|
alwaysOnTopToolStripMenuItem.Click += alwaysOnTopToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
@ -378,21 +380,35 @@ namespace FizzyLauncher
|
|||||||
// flowLayoutPanel1
|
// flowLayoutPanel1
|
||||||
//
|
//
|
||||||
flowLayoutPanel1.AutoScroll = true;
|
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.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.Name = "flowLayoutPanel1";
|
||||||
flowLayoutPanel1.Size = new System.Drawing.Size(461, 426);
|
flowLayoutPanel1.Size = new System.Drawing.Size(398, 417);
|
||||||
flowLayoutPanel1.TabIndex = 8;
|
flowLayoutPanel1.TabIndex = 8;
|
||||||
flowLayoutPanel1.WrapContents = false;
|
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
|
// MainForm
|
||||||
//
|
//
|
||||||
AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||||
BackColor = System.Drawing.Color.FromArgb(250, 250, 250);
|
BackColor = System.Drawing.Color.FromArgb(250, 250, 250);
|
||||||
BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||||
ClientSize = new System.Drawing.Size(873, 505);
|
ClientSize = new System.Drawing.Size(404, 441);
|
||||||
Controls.Add(flowLayoutPanel1);
|
Controls.Add(panel1);
|
||||||
Controls.Add(menuStrip1);
|
Controls.Add(menuStrip1);
|
||||||
DoubleBuffered = true;
|
DoubleBuffered = true;
|
||||||
ForeColor = System.Drawing.SystemColors.ControlText;
|
ForeColor = System.Drawing.SystemColors.ControlText;
|
||||||
@ -400,13 +416,14 @@ namespace FizzyLauncher
|
|||||||
MainMenuStrip = menuStrip1;
|
MainMenuStrip = menuStrip1;
|
||||||
MaximizeBox = false;
|
MaximizeBox = false;
|
||||||
MinimizeBox = false;
|
MinimizeBox = false;
|
||||||
MinimumSize = new System.Drawing.Size(420, 280);
|
MinimumSize = new System.Drawing.Size(300, 320);
|
||||||
Name = "MainForm";
|
Name = "MainForm";
|
||||||
Text = "Fizzy Launcher";
|
Text = "Fizzy Launcher";
|
||||||
contextMenuStrip2.ResumeLayout(false);
|
contextMenuStrip2.ResumeLayout(false);
|
||||||
menuStrip1.ResumeLayout(false);
|
menuStrip1.ResumeLayout(false);
|
||||||
menuStrip1.PerformLayout();
|
menuStrip1.PerformLayout();
|
||||||
tileContainerMenu1.ResumeLayout(false);
|
tileContainerMenu1.ResumeLayout(false);
|
||||||
|
panel1.ResumeLayout(false);
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
}
|
}
|
||||||
@ -456,6 +473,7 @@ namespace FizzyLauncher
|
|||||||
private System.Windows.Forms.ToolStripMenuItem upToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem upToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem downToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem downToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem bottomToolStripMenuItem;
|
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 IsExpanded { get; set; } = false;
|
||||||
|
|
||||||
public bool IsExclusive { get; set; } = false;
|
|
||||||
|
|
||||||
public List<TileModel> Items { get; set; } = new List<TileModel>();
|
public List<TileModel> Items { get; set; } = new List<TileModel>();
|
||||||
|
|
||||||
[JsonConverter(typeof(RyzStudio.Text.Json.JsonSizeConverter))]
|
[JsonConverter(typeof(RyzStudio.Text.Json.JsonSizeConverter))]
|
||||||
|
@ -29,10 +29,10 @@ namespace FizzyLauncher
|
|||||||
private ThYesNoPickerBox yesNoPickerBox4;
|
private ThYesNoPickerBox yesNoPickerBox4;
|
||||||
private Label label3;
|
private Label label3;
|
||||||
|
|
||||||
private LauncherSession _appSession = null;
|
private AppOptions _appSession = null;
|
||||||
|
|
||||||
|
|
||||||
public OptionsForm(LauncherSession appSession)
|
public OptionsForm(AppOptions appSession)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ namespace FizzyLauncher
|
|||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionsForm));
|
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();
|
label1 = new Label();
|
||||||
button1 = new ThButton();
|
button1 = new ThButton();
|
||||||
yesNoPickerBox2 = new ThYesNoPickerBox();
|
yesNoPickerBox2 = new ThYesNoPickerBox();
|
||||||
@ -198,11 +198,11 @@ namespace FizzyLauncher
|
|||||||
textBox1.EnableReactiveVisual = true;
|
textBox1.EnableReactiveVisual = true;
|
||||||
textBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
|
textBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||||
textBox1.HighlightImage = (System.Drawing.Image)resources.GetObject("textBox1.HighlightImage");
|
textBox1.HighlightImage = (System.Drawing.Image)resources.GetObject("textBox1.HighlightImage");
|
||||||
results2.IsAlt = false;
|
results1.IsAlt = false;
|
||||||
results2.IsCtrl = false;
|
results1.IsCtrl = false;
|
||||||
results2.IsShift = false;
|
results1.IsShift = false;
|
||||||
results2.Key = Keys.None;
|
results1.Key = Keys.None;
|
||||||
textBox1.KeyCodeResults = results2;
|
textBox1.KeyCodeResults = results1;
|
||||||
textBox1.Location = new System.Drawing.Point(192, 21);
|
textBox1.Location = new System.Drawing.Point(192, 21);
|
||||||
textBox1.Margin = new Padding(10, 10, 10, 0);
|
textBox1.Margin = new Padding(10, 10, 10, 0);
|
||||||
textBox1.Name = "textBox1";
|
textBox1.Name = "textBox1";
|
||||||
@ -253,9 +253,9 @@ namespace FizzyLauncher
|
|||||||
flowLayoutPanel1.Controls.Add(tTogglePanel1);
|
flowLayoutPanel1.Controls.Add(tTogglePanel1);
|
||||||
flowLayoutPanel1.Controls.Add(tTogglePanel2);
|
flowLayoutPanel1.Controls.Add(tTogglePanel2);
|
||||||
flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
|
flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
|
||||||
flowLayoutPanel1.Location = new System.Drawing.Point(10, 12);
|
flowLayoutPanel1.Location = new System.Drawing.Point(8, 12);
|
||||||
flowLayoutPanel1.Name = "flowLayoutPanel1";
|
flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||||
flowLayoutPanel1.Size = new System.Drawing.Size(424, 412);
|
flowLayoutPanel1.Size = new System.Drawing.Size(436, 412);
|
||||||
flowLayoutPanel1.TabIndex = 194;
|
flowLayoutPanel1.TabIndex = 194;
|
||||||
flowLayoutPanel1.WrapContents = false;
|
flowLayoutPanel1.WrapContents = false;
|
||||||
flowLayoutPanel1.Resize += flowLayoutPanel1_Resize;
|
flowLayoutPanel1.Resize += flowLayoutPanel1_Resize;
|
||||||
@ -268,6 +268,7 @@ namespace FizzyLauncher
|
|||||||
tTogglePanel1.Controls.Add(label2);
|
tTogglePanel1.Controls.Add(label2);
|
||||||
tTogglePanel1.Controls.Add(label4);
|
tTogglePanel1.Controls.Add(label4);
|
||||||
tTogglePanel1.Controls.Add(numericBox1);
|
tTogglePanel1.Controls.Add(numericBox1);
|
||||||
|
tTogglePanel1.ExpandedHeight = 100;
|
||||||
tTogglePanel1.ForeColor = System.Drawing.Color.FromArgb(99, 105, 119);
|
tTogglePanel1.ForeColor = System.Drawing.Color.FromArgb(99, 105, 119);
|
||||||
tTogglePanel1.IsOpen = true;
|
tTogglePanel1.IsOpen = true;
|
||||||
tTogglePanel1.Location = new System.Drawing.Point(0, 0);
|
tTogglePanel1.Location = new System.Drawing.Point(0, 0);
|
||||||
@ -324,6 +325,7 @@ namespace FizzyLauncher
|
|||||||
tTogglePanel2.Controls.Add(yesNoPickerBox3);
|
tTogglePanel2.Controls.Add(yesNoPickerBox3);
|
||||||
tTogglePanel2.Controls.Add(label6);
|
tTogglePanel2.Controls.Add(label6);
|
||||||
tTogglePanel2.Controls.Add(label7);
|
tTogglePanel2.Controls.Add(label7);
|
||||||
|
tTogglePanel2.ExpandedHeight = 100;
|
||||||
tTogglePanel2.ForeColor = System.Drawing.Color.FromArgb(99, 105, 119);
|
tTogglePanel2.ForeColor = System.Drawing.Color.FromArgb(99, 105, 119);
|
||||||
tTogglePanel2.IsOpen = true;
|
tTogglePanel2.IsOpen = true;
|
||||||
tTogglePanel2.Location = new System.Drawing.Point(0, 119);
|
tTogglePanel2.Location = new System.Drawing.Point(0, 119);
|
||||||
@ -394,13 +396,6 @@ namespace FizzyLauncher
|
|||||||
flowLayoutPanel1_Resize(null, e);
|
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)
|
private void flowLayoutPanel1_Resize(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var width = flowLayoutPanel1.ClientRectangle.Width - SystemInformation.VerticalScrollBarWidth;
|
var width = flowLayoutPanel1.ClientRectangle.Width - SystemInformation.VerticalScrollBarWidth;
|
||||||
@ -411,13 +406,13 @@ namespace FizzyLauncher
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LauncherSession Result
|
public AppOptions Result
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_appSession == null)
|
if (_appSession == null)
|
||||||
{
|
{
|
||||||
_appSession = new LauncherSession();
|
_appSession = new AppOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
_appSession.TilesPerRow = numericBox1.Value;
|
_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