diff --git a/AppResource.Designer.cs b/AppResource.Designer.cs
index 6619817..7e137ef 100644
--- a/AppResource.Designer.cs
+++ b/AppResource.Designer.cs
@@ -8,7 +8,7 @@
//
//------------------------------------------------------------------------------
-namespace FizzyLauncher {
+namespace RokettoLaunch {
using System;
@@ -39,7 +39,7 @@ namespace FizzyLauncher {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FizzyLauncher.AppResource", typeof(AppResource).Assembly);
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RokettoLaunch.AppResource", typeof(AppResource).Assembly);
resourceMan = temp;
}
return resourceMan;
@@ -60,6 +60,24 @@ namespace FizzyLauncher {
}
}
+ ///
+ /// Looks up a localized string similar to .
+ ///
+ internal static string AppAuthorURL {
+ get {
+ return ResourceManager.GetString("AppAuthorURL", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to https://www.hiimray.co.uk.
+ ///
+ internal static string AppCompanyURL {
+ get {
+ return ResourceManager.GetString("AppCompanyURL", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to https://www.hiimray.co.uk/software-fizzy-launcher.
///
@@ -69,6 +87,15 @@ namespace FizzyLauncher {
}
}
+ ///
+ /// Looks up a localized string similar to https://www.hiimray.co.uk/software-fizzy-launcher.
+ ///
+ internal static string AppProductURL {
+ get {
+ return ResourceManager.GetString("AppProductURL", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -132,19 +159,9 @@ namespace FizzyLauncher {
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
- internal static System.Drawing.Bitmap toggle_left_ea_16 {
+ internal static System.Drawing.Bitmap icon_64 {
get {
- object obj = ResourceManager.GetObject("toggle_left_ea_16", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap toggle_right_ea_16 {
- get {
- object obj = ResourceManager.GetObject("toggle_right_ea_16", resourceCulture);
+ object obj = ResourceManager.GetObject("icon_64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
diff --git a/AppResource.resx b/AppResource.resx
index dd727d7..cd59975 100644
--- a/AppResource.resx
+++ b/AppResource.resx
@@ -117,9 +117,18 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ https://www.hiimray.co.uk
+
https://www.hiimray.co.uk/software-fizzy-launcher
+
+ https://www.hiimray.co.uk/software-fizzy-launcher
+
Resources\cog2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -139,10 +148,7 @@
Resources\help2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- Resources\toggle-left-ea-16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\toggle-right-ea-16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ Resources\icon-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
\ No newline at end of file
diff --git a/EditGroupForm.cs b/EditGroupForm.cs
new file mode 100644
index 0000000..6f02d45
--- /dev/null
+++ b/EditGroupForm.cs
@@ -0,0 +1,186 @@
+using System.Windows.Forms;
+using RokettoLaunch.Models;
+using RyzStudio.Windows.Forms;
+using RyzStudio.Windows.ThemedForms;
+using RyzStudio.Windows.ThemedForms.ButtonTextBox;
+using RyzStudio.Windows.ThemedForms.PickerBox;
+
+namespace RokettoLaunch
+{
+ 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;
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/EditGroupForm.resx b/EditGroupForm.resx
new file mode 100644
index 0000000..0386da6
--- /dev/null
+++ b/EditGroupForm.resx
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ wQAADsEBuJFr7QAAAN5JREFUOE/tUzsKwkAUXLCyFMHjeIvdB4Gk8ALamU4rsbLaTWz0AOYGOYMewTqe
+ QLEQnZc8WRMSsBYHhrzPzJBin2pC60PPGLs3xl3Bp5DrHe9E1g2tHUH8QMjKmGReketyZkRWh9abfhTZ
+ YRimI4jWRPYSBMngkzzjHWtYyx6xK4X0Anz/7rcsxM4BdoxBTuTOqCdEaUyU6DrTuNqxxuXsEXsFDLfg
+ UdpOsIa10nr8A34p4CRtJ1jTGoC3PsPiBi78ETXplqzBwU3F5sHHgWWGJ3rHt+3tg+Uu84ek1AsYYd8q
+ EsfwCwAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ wQAADsEBuJFr7QAAANFJREFUOE/tkzEKAjEURANWliJ4HG+h9l5AO7fTSjyCxWpCIBB2b+AZ9AjW6wlc
+ LGSdWb9Elw1YiwOP/Pw/E1Ikqqksyzpa670x5goqgfWOM7HFhfAE5jvWNdYFkZq9sdg+laZp13vfBwOY
+ NjBfnHO9d9jjjB56mZG4UhgW4HXdbykkXl97iMYBnFFPrbUJGDVIOKOHXmYk/hSaW3CUbVT00CvboP8B
+ v3TASbZR0RM7YA5KsAT1J2phBUq8wpnEgvg5MMwxvGFte/uVzPLwkZR6AInAKK6aICfTAAAAAElFTkSu
+ QmCC
+
+
+
\ No newline at end of file
diff --git a/EditTileFolderForm.cs b/EditTileFolderForm.cs
new file mode 100644
index 0000000..a79e0e6
--- /dev/null
+++ b/EditTileFolderForm.cs
@@ -0,0 +1,325 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+using RokettoLaunch.Models;
+using RyzStudio.Windows.Forms;
+using RyzStudio.Windows.ThemedForms;
+using RyzStudio.Windows.ThemedForms.ButtonTextBox;
+
+namespace RokettoLaunch
+{
+ public class EditTileFolderForm : TDialog
+ {
+ private Label label1;
+ private ThButton button1;
+ private THorizontalSeparator horizontalSeparator2;
+ private ThClearableTextBox textBox1;
+ private ThListBox listBox1;
+ private THorizontalSeparator tHorizontalSeparator1;
+ private Label label2;
+
+ private TileModel result = null;
+
+
+ public EditTileFolderForm(TileModel model = null)
+ {
+ InitializeComponent();
+
+ StartPosition = FormStartPosition.WindowsDefaultLocation;
+ OkButton = button1;
+
+ result = model;
+
+ if (result != null)
+ {
+ Text = "Edit Folder";
+
+ textBox1.Text = result?.Title ?? string.Empty;
+
+ foreach (TileModel item in result.Items ?? new List())
+ {
+ if (item.IsGroup)
+ {
+ continue;
+ }
+
+ listBox1.ListBox.Items.Add(item);
+ }
+ }
+ else
+ {
+ Text = "Add Folder";
+ }
+ }
+
+ private void InitializeComponent()
+ {
+ textBox1 = new ThClearableTextBox();
+ label1 = new Label();
+ button1 = new ThButton();
+ horizontalSeparator2 = new THorizontalSeparator();
+ listBox1 = new ThListBox();
+ label2 = new Label();
+ tHorizontalSeparator1 = new THorizontalSeparator();
+ SuspendLayout();
+ //
+ // textBox1
+ //
+ textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ textBox1.BackColor = Color.Transparent;
+ textBox1.EnableReactiveVisual = true;
+ textBox1.Font = new Font("Microsoft Sans Serif", 8.25F);
+ textBox1.Location = new Point(109, 20);
+ textBox1.Name = "textBox1";
+ textBox1.Size = new Size(260, 35);
+ textBox1.TabIndex = 152;
+ textBox1.TabStop = false;
+ textBox1.UseSystemPasswordChar = false;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.BackColor = Color.Transparent;
+ label1.ForeColor = SystemColors.ControlText;
+ label1.Location = new Point(10, 21);
+ label1.Margin = new Padding(0);
+ label1.Name = "label1";
+ label1.Padding = new Padding(0, 9, 0, 10);
+ label1.Size = new Size(29, 34);
+ label1.TabIndex = 153;
+ label1.Text = "Title";
+ label1.TextAlign = ContentAlignment.MiddleLeft;
+ //
+ // button1
+ //
+ button1.AcceptButton = null;
+ button1.ActiveImage = null;
+ button1.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ button1.BackColor = Color.Transparent;
+ button1.EnableMenuOnClick = false;
+ button1.EnableReactiveVisual = true;
+ button1.HoverImage = null;
+ button1.IdleImage = null;
+ button1.LabelText = "&Save";
+ button1.Location = new 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 Size(128, 32);
+ button1.TabIndex = 173;
+ button1.TabStop = false;
+ //
+ // horizontalSeparator2
+ //
+ horizontalSeparator2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ horizontalSeparator2.AutoScrollMargin = new Size(0, 0);
+ horizontalSeparator2.AutoScrollMinSize = new Size(0, 0);
+ horizontalSeparator2.BackColor = Color.Transparent;
+ horizontalSeparator2.Location = new Point(10, 61);
+ horizontalSeparator2.Margin = new Padding(0, 10, 0, 0);
+ horizontalSeparator2.MaximumSize = new Size(4920, 2);
+ horizontalSeparator2.MinimumSize = new Size(0, 22);
+ horizontalSeparator2.Name = "horizontalSeparator2";
+ horizontalSeparator2.Size = new Size(364, 22);
+ horizontalSeparator2.TabIndex = 177;
+ horizontalSeparator2.TabStop = false;
+ //
+ // listBox1
+ //
+ listBox1.AcceptButton = null;
+ listBox1.AllowDrop = true;
+ listBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ listBox1.BackColor = Color.Transparent;
+ listBox1.EnableReactiveVisual = true;
+ listBox1.Font = new Font("Microsoft Sans Serif", 8.25F);
+ listBox1.Location = new Point(109, 87);
+ listBox1.Margin = new Padding(10, 10, 10, 0);
+ listBox1.Name = "listBox1";
+ listBox1.Padding = new Padding(4, 4, 3, 3);
+ listBox1.Size = new Size(260, 346);
+ listBox1.TabIndex = 180;
+ listBox1.OnAdd += listBox1_OnAdd;
+ listBox1.OnEdit += listBox1_OnEdit;
+ listBox1.DragDrop += listBox1_DragDrop;
+ listBox1.DragOver += listBox1_DragOver;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.BackColor = Color.Transparent;
+ label2.ForeColor = SystemColors.ControlText;
+ label2.Location = new Point(8, 87);
+ label2.Name = "label2";
+ label2.Padding = new Padding(0, 9, 0, 10);
+ label2.Size = new Size(30, 34);
+ label2.TabIndex = 181;
+ label2.Text = "Tiles";
+ label2.TextAlign = ContentAlignment.MiddleLeft;
+ //
+ // tHorizontalSeparator1
+ //
+ tHorizontalSeparator1.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ tHorizontalSeparator1.AutoScrollMargin = new Size(0, 0);
+ tHorizontalSeparator1.AutoScrollMinSize = new Size(0, 0);
+ tHorizontalSeparator1.BackColor = Color.Transparent;
+ tHorizontalSeparator1.Location = new Point(10, 437);
+ tHorizontalSeparator1.Margin = new Padding(0, 10, 0, 0);
+ tHorizontalSeparator1.MaximumSize = new Size(4920, 2);
+ tHorizontalSeparator1.MinimumSize = new Size(0, 22);
+ tHorizontalSeparator1.Name = "tHorizontalSeparator1";
+ tHorizontalSeparator1.Size = new Size(364, 22);
+ tHorizontalSeparator1.TabIndex = 182;
+ tHorizontalSeparator1.TabStop = false;
+ //
+ // EditTileFolderForm
+ //
+ ClientSize = new Size(384, 521);
+ Controls.Add(tHorizontalSeparator1);
+ Controls.Add(label2);
+ Controls.Add(listBox1);
+ Controls.Add(horizontalSeparator2);
+ Controls.Add(button1);
+ Controls.Add(label1);
+ Controls.Add(textBox1);
+ MinimumSize = new Size(400, 560);
+ Name = "EditTileFolderForm";
+ Text = "Add List Tile";
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+
+ public TileModel Result
+ {
+ get
+ {
+ if (result == null)
+ {
+ result = new TileModel();
+ }
+
+ result.Title = textBox1.Text?.Trim() ?? string.Empty;
+ result.IsGroup = true;
+ result.Items = new List();
+
+ foreach (TileModel item in listBox1.ListBox.Items.OfType())
+ {
+ if (item.IsGroup)
+ {
+ continue;
+ }
+
+ result.Items.Add(item);
+ }
+
+ return result;
+ }
+ }
+
+
+ private void listBox1_OnAdd(object sender, EventArgs e)
+ {
+ var form = new EditTileForm();
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ listBox1.ListBox.Items.Add(form.Result);
+ };
+ }
+
+ private void listBox1_OnEdit(object sender, EventArgs e)
+ {
+ if (listBox1.ListBox.Items.Count <= 0)
+ {
+ return;
+ }
+
+ var n = listBox1.ListBox.SelectedIndex;
+ if (n < 0)
+ {
+ return;
+ }
+
+ if (listBox1.ListBox.SelectedItem == null)
+ {
+ return;
+ }
+
+ var form = new EditTileForm((TileModel)listBox1.ListBox.SelectedItem);
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ listBox1.ListBox.Items.RemoveAt(n);
+ listBox1.ListBox.Items.Insert(n, form.Result);
+ };
+ }
+
+ private void listBox1_DragOver(object sender, DragEventArgs e)
+ {
+ if (e.Data.GetDataPresent(DataFormats.FileDrop))
+ {
+ e.Effect = DragDropEffects.Link;
+ }
+ else
+ {
+ e.Effect = DragDropEffects.None;
+ }
+ }
+
+ private void listBox1_DragDrop(object sender, DragEventArgs e)
+ {
+ var fileList = e.Data.GetData(DataFormats.FileDrop) as string[];
+ if (fileList == null)
+ {
+ return;
+ }
+
+ if (fileList.Length <= 0)
+ {
+ return;
+ }
+
+ if (string.IsNullOrWhiteSpace(fileList[0]))
+ {
+ return;
+ }
+
+ var 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]);
+ }
+ }
+
+ listBox1.ListBox.Items.Add(model);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Windows/Forms/TileContainer.resx b/EditTileFolderForm.resx
similarity index 93%
rename from Windows/Forms/TileContainer.resx
rename to EditTileFolderForm.resx
index 1af7de1..af32865 100644
--- a/Windows/Forms/TileContainer.resx
+++ b/EditTileFolderForm.resx
@@ -1,17 +1,17 @@
-
diff --git a/EditTileForm.cs b/EditTileForm.cs
new file mode 100644
index 0000000..9df9579
--- /dev/null
+++ b/EditTileForm.cs
@@ -0,0 +1,341 @@
+using System.Drawing;
+using System.Windows.Forms;
+using RokettoLaunch.Models;
+using RyzStudio.Windows.Forms;
+using RyzStudio.Windows.ThemedForms;
+using RyzStudio.Windows.ThemedForms.ButtonTextBox;
+using RyzStudio.Windows.ThemedForms.PickerBox;
+
+namespace RokettoLaunch
+{
+ public class EditTileForm : TDialog
+ {
+ private Label label6;
+ private Label label7;
+ private Label label4;
+ private Label label3;
+ private Label label2;
+ private Label label1;
+ private ThPathDialogTextBox textBox2;
+ private ThClearableTextBox textBox3;
+ private ThPathDialogTextBox textBox4;
+ private ThButton button1;
+ private ThPickerBox pickerBox1;
+ private ThYesNoPickerBox pickerBox2;
+ private THorizontalSeparator horizontalSeparator1;
+ private THorizontalSeparator horizontalSeparator2;
+ private ThClearableTextBox textBox1;
+
+ private TileModel result = null;
+
+
+ public EditTileForm(TileModel model = null)
+ {
+ InitializeComponent();
+
+ StartPosition = FormStartPosition.WindowsDefaultLocation;
+ OkButton = button1;
+
+ result = model;
+
+ pickerBox1.ComboBox.Items.Clear();
+ pickerBox1.ComboBox.Items.AddRange(new string[] { "Normal", "Hidden", "Minimized", "Maximized" });
+ if (pickerBox1.ComboBox.Items.Count > 0)
+ {
+ pickerBox1.ComboBox.SelectedIndex = 0;
+ }
+
+ if (result != null)
+ {
+ Text = "Edit Tile";
+
+ textBox1.Text = result?.Title ?? string.Empty;
+ textBox2.Text = result?.ProcessFilename ?? string.Empty;
+ textBox3.Text = result?.ProcessArgument ?? string.Empty;
+ textBox4.Text = result?.ProcessWorkingDirectory ?? string.Empty;
+ pickerBox1.ComboBox.SelectedIndex = (int)result.ProcessWindowStyle;
+ pickerBox2.Value = result.ProcessAsAdmin;
+ }
+ else
+ {
+ Text = "Add Tile";
+ }
+ }
+
+ private void InitializeComponent()
+ {
+ textBox1 = new ThClearableTextBox();
+ label6 = new Label();
+ label7 = new Label();
+ label4 = new Label();
+ label3 = new Label();
+ label2 = new Label();
+ label1 = new Label();
+ textBox2 = new ThPathDialogTextBox();
+ textBox3 = new ThClearableTextBox();
+ textBox4 = new ThPathDialogTextBox();
+ button1 = new ThButton();
+ pickerBox1 = new ThPickerBox();
+ pickerBox2 = new ThYesNoPickerBox();
+ horizontalSeparator1 = new THorizontalSeparator();
+ horizontalSeparator2 = new THorizontalSeparator();
+ SuspendLayout();
+ //
+ // textBox1
+ //
+ textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ textBox1.BackColor = Color.Transparent;
+ textBox1.EnableReactiveVisual = true;
+ textBox1.Font = new Font("Segoe UI", 9F);
+ textBox1.Location = new Point(126, 20);
+ textBox1.Name = "textBox1";
+ textBox1.Size = new Size(243, 35);
+ textBox1.TabIndex = 152;
+ textBox1.TabStop = false;
+ textBox1.UseSystemPasswordChar = false;
+ //
+ // label6
+ //
+ label6.AutoSize = true;
+ label6.BackColor = Color.Transparent;
+ label6.ForeColor = SystemColors.ControlText;
+ label6.Location = new Point(10, 250);
+ label6.Name = "label6";
+ label6.Padding = new Padding(0, 9, 0, 10);
+ label6.Size = new Size(83, 34);
+ label6.TabIndex = 163;
+ label6.Text = "Run As Admin";
+ label6.TextAlign = ContentAlignment.MiddleLeft;
+ //
+ // label7
+ //
+ label7.AutoSize = true;
+ label7.BackColor = Color.Transparent;
+ label7.ForeColor = SystemColors.ControlText;
+ label7.Location = new Point(10, 209);
+ label7.Name = "label7";
+ label7.Padding = new Padding(0, 9, 0, 10);
+ label7.Size = new Size(79, 34);
+ label7.TabIndex = 161;
+ label7.Text = "Window Style";
+ label7.TextAlign = ContentAlignment.MiddleLeft;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.BackColor = Color.Transparent;
+ label4.ForeColor = SystemColors.ControlText;
+ label4.Location = new Point(10, 144);
+ label4.Name = "label4";
+ label4.Padding = new Padding(0, 9, 0, 10);
+ label4.Size = new Size(103, 34);
+ label4.TabIndex = 159;
+ label4.Text = "Working Directory";
+ label4.TextAlign = ContentAlignment.MiddleLeft;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.BackColor = Color.Transparent;
+ label3.ForeColor = SystemColors.ControlText;
+ label3.Location = new Point(10, 103);
+ label3.Name = "label3";
+ label3.Padding = new Padding(0, 9, 0, 10);
+ label3.Size = new Size(61, 34);
+ label3.TabIndex = 157;
+ label3.Text = "Argument";
+ label3.TextAlign = ContentAlignment.MiddleLeft;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.BackColor = Color.Transparent;
+ label2.ForeColor = SystemColors.ControlText;
+ label2.Location = new Point(10, 62);
+ label2.Name = "label2";
+ label2.Padding = new Padding(0, 9, 0, 10);
+ label2.Size = new Size(55, 34);
+ label2.TabIndex = 155;
+ label2.Text = "Filename";
+ label2.TextAlign = ContentAlignment.MiddleLeft;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.BackColor = Color.Transparent;
+ label1.ForeColor = SystemColors.ControlText;
+ label1.Location = new Point(10, 21);
+ label1.Margin = new Padding(0);
+ label1.Name = "label1";
+ label1.Padding = new Padding(0, 9, 0, 10);
+ label1.Size = new Size(29, 34);
+ label1.TabIndex = 153;
+ label1.Text = "Title";
+ label1.TextAlign = ContentAlignment.MiddleLeft;
+ //
+ // textBox2
+ //
+ textBox2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ textBox2.BackColor = Color.Transparent;
+ textBox2.DialogMode = ThPathDialogTextBox.DialogType.OpenFile;
+ textBox2.EnableReactiveVisual = true;
+ textBox2.Font = new Font("Segoe UI", 9F);
+ textBox2.Location = new Point(126, 61);
+ textBox2.Margin = new Padding(10, 10, 10, 0);
+ textBox2.Name = "textBox2";
+ textBox2.Size = new Size(243, 32);
+ textBox2.TabIndex = 170;
+ textBox2.TabStop = false;
+ textBox2.UseSystemPasswordChar = false;
+ //
+ // textBox3
+ //
+ textBox3.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ textBox3.BackColor = Color.Transparent;
+ textBox3.EnableReactiveVisual = true;
+ textBox3.Font = new Font("Segoe UI", 9F);
+ textBox3.Location = new Point(147, 102);
+ textBox3.Name = "textBox3";
+ textBox3.Size = new Size(222, 35);
+ textBox3.TabIndex = 171;
+ textBox3.TabStop = false;
+ //
+ // textBox4
+ //
+ textBox4.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ textBox4.BackColor = Color.Transparent;
+ textBox4.DialogMode = ThPathDialogTextBox.DialogType.FolderBrowser;
+ textBox4.EnableReactiveVisual = true;
+ textBox4.Font = new Font("Segoe UI", 9F);
+ textBox4.Location = new Point(147, 143);
+ textBox4.Name = "textBox4";
+ textBox4.Size = new Size(222, 32);
+ textBox4.TabIndex = 172;
+ textBox4.TabStop = false;
+ textBox4.UseSystemPasswordChar = false;
+ //
+ // button1
+ //
+ button1.AcceptButton = null;
+ button1.ActiveImage = null;
+ button1.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ button1.BackColor = Color.Transparent;
+ button1.EnableMenuOnClick = false;
+ button1.EnableReactiveVisual = true;
+ button1.HoverImage = null;
+ button1.IdleImage = null;
+ button1.LabelText = "&Save";
+ button1.Location = new 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 Size(128, 32);
+ button1.TabIndex = 173;
+ button1.TabStop = false;
+ //
+ // pickerBox1
+ //
+ pickerBox1.AcceptButton = null;
+ pickerBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ pickerBox1.BackColor = Color.Transparent;
+ pickerBox1.EnableReactiveVisual = true;
+ pickerBox1.Font = new Font("Segoe UI", 9F);
+ pickerBox1.Location = new Point(241, 209);
+ pickerBox1.Margin = new Padding(10, 10, 10, 0);
+ pickerBox1.Name = "pickerBox1";
+ pickerBox1.Padding = new Padding(4, 4, 3, 3);
+ pickerBox1.SelectedIndex = -1;
+ pickerBox1.Size = new Size(128, 34);
+ pickerBox1.TabIndex = 174;
+ pickerBox1.TabStop = false;
+ //
+ // pickerBox2
+ //
+ pickerBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ pickerBox2.BackColor = Color.Transparent;
+ pickerBox2.EnableReactiveVisual = true;
+ pickerBox2.Font = new Font("Segoe UI", 9F);
+ pickerBox2.Location = new Point(285, 250);
+ pickerBox2.Name = "pickerBox2";
+ pickerBox2.Size = new Size(84, 34);
+ pickerBox2.TabIndex = 175;
+ pickerBox2.TabStop = false;
+ //
+ // horizontalSeparator1
+ //
+ horizontalSeparator1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ horizontalSeparator1.AutoScrollMargin = new Size(0, 0);
+ horizontalSeparator1.AutoScrollMinSize = new Size(0, 0);
+ horizontalSeparator1.BackColor = Color.Transparent;
+ horizontalSeparator1.Location = new Point(10, 181);
+ horizontalSeparator1.Margin = new Padding(0, 10, 0, 0);
+ horizontalSeparator1.MaximumSize = new Size(4920, 2);
+ horizontalSeparator1.MinimumSize = new Size(0, 22);
+ horizontalSeparator1.Name = "horizontalSeparator1";
+ horizontalSeparator1.Size = new Size(364, 22);
+ horizontalSeparator1.TabIndex = 176;
+ horizontalSeparator1.TabStop = false;
+ //
+ // horizontalSeparator2
+ //
+ horizontalSeparator2.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ horizontalSeparator2.AutoScrollMargin = new Size(0, 0);
+ horizontalSeparator2.AutoScrollMinSize = new Size(0, 0);
+ horizontalSeparator2.BackColor = Color.Transparent;
+ horizontalSeparator2.Location = new Point(10, 437);
+ horizontalSeparator2.Margin = new Padding(0, 10, 0, 0);
+ horizontalSeparator2.MaximumSize = new Size(4920, 2);
+ horizontalSeparator2.MinimumSize = new Size(0, 22);
+ horizontalSeparator2.Name = "horizontalSeparator2";
+ horizontalSeparator2.Size = new Size(364, 22);
+ horizontalSeparator2.TabIndex = 177;
+ horizontalSeparator2.TabStop = false;
+ //
+ // EditTileForm
+ //
+ ClientSize = new Size(384, 521);
+ Controls.Add(horizontalSeparator2);
+ Controls.Add(horizontalSeparator1);
+ Controls.Add(pickerBox2);
+ Controls.Add(pickerBox1);
+ Controls.Add(button1);
+ Controls.Add(textBox4);
+ Controls.Add(textBox3);
+ Controls.Add(textBox2);
+ Controls.Add(label6);
+ Controls.Add(label7);
+ Controls.Add(label4);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(textBox1);
+ MinimumSize = new Size(400, 560);
+ Name = "EditTileForm";
+ Text = "Add Tile";
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+
+ public TileModel Result
+ {
+ get
+ {
+ if (result == null)
+ {
+ result = new TileModel();
+ }
+
+ result.Title = textBox1.Text?.Trim() ?? string.Empty;
+ result.ProcessFilename = textBox2.Text?.Trim() ?? string.Empty;
+ result.ProcessArgument = textBox3.Text?.Trim() ?? string.Empty;
+ result.ProcessWorkingDirectory = textBox4.Text?.Trim();
+ result.ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle)pickerBox1.ComboBox.SelectedIndex;
+ result.ProcessAsAdmin = pickerBox2.Value;
+
+ return result;
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/EditTileForm.resx b/EditTileForm.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/EditTileForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 2ae6153..de900d0 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -1,6 +1,6 @@
-using FizzyLauncher.Windows.Forms;
+using RokettoLaunch.Windows.Forms;
-namespace FizzyLauncher
+namespace RokettoLaunch
{
partial class MainForm
{
@@ -30,296 +30,409 @@ namespace FizzyLauncher
///
private void InitializeComponent()
{
- this.components = new System.ComponentModel.Container();
+ components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
- this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
- this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
- this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
- this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.exitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
- this.menuStrip1 = new System.Windows.Forms.MenuStrip();
- this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripSeparator();
- this.closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripSeparator();
- this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripSeparator();
- this.exitToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
- this.addGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.showBigIconsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.enableAnimationsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.alwaysOnTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
- this.viewHelpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripMenuItem16 = new System.Windows.Forms.ToolStripSeparator();
- this.aboutToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
- this.tileContainer1 = new FizzyLauncher.Windows.Forms.TileContainer();
- this.contextMenuStrip2.SuspendLayout();
- this.menuStrip1.SuspendLayout();
- this.SuspendLayout();
+ saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
+ openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
+ notifyIcon1 = new System.Windows.Forms.NotifyIcon(components);
+ contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(components);
+ exitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ menuStrip1 = new System.Windows.Forms.MenuStrip();
+ fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripMenuItem13 = new System.Windows.Forms.ToolStripSeparator();
+ closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripMenuItem14 = new System.Windows.Forms.ToolStripSeparator();
+ saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripMenuItem15 = new System.Windows.Forms.ToolStripSeparator();
+ exitToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ addGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ showBigIconsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ alwaysOnTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ viewHelpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripMenuItem16 = new System.Windows.Forms.ToolStripSeparator();
+ aboutToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ tileContainerMenu1 = new System.Windows.Forms.ContextMenuStrip(components);
+ addGroupToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
+ editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
+ addRowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ removeRowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
+ topToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ upToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ downToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ bottomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+ removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
+ panel1 = new System.Windows.Forms.Panel();
+ contextMenuStrip2.SuspendLayout();
+ menuStrip1.SuspendLayout();
+ tileContainerMenu1.SuspendLayout();
+ panel1.SuspendLayout();
+ SuspendLayout();
//
// saveFileDialog1
//
- this.saveFileDialog1.Filter = "Session files|*.jsonfig";
- this.saveFileDialog1.Title = "Choose file to save the session";
+ saveFileDialog1.Filter = "Session files|*.jsonfig";
+ saveFileDialog1.Title = "Choose file to save the session";
//
// openFileDialog1
//
- this.openFileDialog1.Filter = "Session files|*.jsonfig";
- this.openFileDialog1.Title = "Choose session file";
+ openFileDialog1.Filter = "Session files|*.jsonfig";
+ openFileDialog1.Title = "Choose session file";
//
// notifyIcon1
//
- this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip2;
- this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
- this.notifyIcon1.Text = "notifyIcon1";
- this.notifyIcon1.Visible = true;
- this.notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
+ notifyIcon1.ContextMenuStrip = contextMenuStrip2;
+ notifyIcon1.Icon = (System.Drawing.Icon)resources.GetObject("notifyIcon1.Icon");
+ notifyIcon1.Text = "notifyIcon1";
+ notifyIcon1.Visible = true;
+ notifyIcon1.MouseClick += notifyIcon1_MouseClick;
//
// contextMenuStrip2
//
- this.contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.exitToolStripMenuItem1});
- this.contextMenuStrip2.Name = "contextMenuStrip2";
- this.contextMenuStrip2.Size = new System.Drawing.Size(94, 26);
+ contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { exitToolStripMenuItem1 });
+ contextMenuStrip2.Name = "contextMenuStrip2";
+ contextMenuStrip2.Size = new System.Drawing.Size(94, 26);
//
// exitToolStripMenuItem1
//
- this.exitToolStripMenuItem1.Name = "exitToolStripMenuItem1";
- this.exitToolStripMenuItem1.Size = new System.Drawing.Size(93, 22);
- this.exitToolStripMenuItem1.Text = "E&xit";
- this.exitToolStripMenuItem1.Click += new System.EventHandler(this.exitToolStripMenuItem1_Click);
+ exitToolStripMenuItem1.Name = "exitToolStripMenuItem1";
+ exitToolStripMenuItem1.Size = new System.Drawing.Size(93, 22);
+ exitToolStripMenuItem1.Text = "E&xit";
+ exitToolStripMenuItem1.Click += exitToolStripMenuItem1_Click;
//
// menuStrip1
//
- this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.fileToolStripMenuItem,
- this.toolStripMenuItem1,
- this.viewToolStripMenuItem,
- this.toolsToolStripMenuItem,
- this.helpToolStripMenuItem1});
- this.menuStrip1.Location = new System.Drawing.Point(0, 0);
- this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Size = new System.Drawing.Size(633, 24);
- this.menuStrip1.TabIndex = 2;
- this.menuStrip1.MenuActivate += new System.EventHandler(this.menuStrip1_MenuActivate);
+ menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { fileToolStripMenuItem, toolStripMenuItem1, viewToolStripMenuItem, toolsToolStripMenuItem, helpToolStripMenuItem1 });
+ menuStrip1.Location = new System.Drawing.Point(0, 0);
+ menuStrip1.Name = "menuStrip1";
+ menuStrip1.Size = new System.Drawing.Size(404, 24);
+ menuStrip1.TabIndex = 2;
+ menuStrip1.MenuActivate += menuStrip1_MenuActivate;
//
// fileToolStripMenuItem
//
- this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.newToolStripMenuItem,
- this.openToolStripMenuItem,
- this.toolStripMenuItem13,
- this.closeToolStripMenuItem,
- this.toolStripMenuItem14,
- this.saveToolStripMenuItem,
- this.saveAsToolStripMenuItem,
- this.toolStripMenuItem15,
- this.exitToolStripMenuItem2});
- this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
- this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
- this.fileToolStripMenuItem.Text = "&File";
+ fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, toolStripMenuItem13, closeToolStripMenuItem, toolStripMenuItem14, saveToolStripMenuItem, saveAsToolStripMenuItem, toolStripMenuItem15, exitToolStripMenuItem2 });
+ fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+ fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
+ fileToolStripMenuItem.Text = "&File";
//
// newToolStripMenuItem
//
- this.newToolStripMenuItem.Image = AppResource.file;
- this.newToolStripMenuItem.Name = "newToolStripMenuItem";
- this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
- this.newToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
- this.newToolStripMenuItem.Text = "&New";
- this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click);
+ newToolStripMenuItem.Image = AppResource.file;
+ newToolStripMenuItem.Name = "newToolStripMenuItem";
+ newToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N;
+ newToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
+ newToolStripMenuItem.Text = "&New";
+ newToolStripMenuItem.Click += newToolStripMenuItem_Click;
//
// openToolStripMenuItem
//
- this.openToolStripMenuItem.Image = AppResource.folder;
- this.openToolStripMenuItem.Name = "openToolStripMenuItem";
- this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
- this.openToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
- this.openToolStripMenuItem.Text = "&Open";
- this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
+ openToolStripMenuItem.Image = AppResource.folder;
+ openToolStripMenuItem.Name = "openToolStripMenuItem";
+ openToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O;
+ openToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
+ openToolStripMenuItem.Text = "&Open";
+ openToolStripMenuItem.Click += openToolStripMenuItem_Click;
//
// toolStripMenuItem13
//
- this.toolStripMenuItem13.Name = "toolStripMenuItem13";
- this.toolStripMenuItem13.Size = new System.Drawing.Size(143, 6);
+ toolStripMenuItem13.Name = "toolStripMenuItem13";
+ toolStripMenuItem13.Size = new System.Drawing.Size(143, 6);
//
// closeToolStripMenuItem
//
- this.closeToolStripMenuItem.Name = "closeToolStripMenuItem";
- this.closeToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
- this.closeToolStripMenuItem.Text = "&Close";
- this.closeToolStripMenuItem.Click += new System.EventHandler(this.closeToolStripMenuItem_Click);
+ closeToolStripMenuItem.Name = "closeToolStripMenuItem";
+ closeToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
+ closeToolStripMenuItem.Text = "&Close";
+ closeToolStripMenuItem.Click += closeToolStripMenuItem_Click;
//
// toolStripMenuItem14
//
- this.toolStripMenuItem14.Name = "toolStripMenuItem14";
- this.toolStripMenuItem14.Size = new System.Drawing.Size(143, 6);
+ toolStripMenuItem14.Name = "toolStripMenuItem14";
+ toolStripMenuItem14.Size = new System.Drawing.Size(143, 6);
//
// saveToolStripMenuItem
//
- this.saveToolStripMenuItem.Image = AppResource.disk2;
- this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
- this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
- this.saveToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
- this.saveToolStripMenuItem.Text = "&Save";
- this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
+ saveToolStripMenuItem.Image = AppResource.disk2;
+ saveToolStripMenuItem.Name = "saveToolStripMenuItem";
+ saveToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S;
+ saveToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
+ saveToolStripMenuItem.Text = "&Save";
+ saveToolStripMenuItem.Click += saveToolStripMenuItem_Click;
//
// saveAsToolStripMenuItem
//
- this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
- this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
- this.saveAsToolStripMenuItem.Text = "Save &As...";
- this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click);
+ saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
+ saveAsToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
+ saveAsToolStripMenuItem.Text = "Save &As...";
+ saveAsToolStripMenuItem.Click += saveAsToolStripMenuItem_Click;
//
// toolStripMenuItem15
//
- this.toolStripMenuItem15.Name = "toolStripMenuItem15";
- this.toolStripMenuItem15.Size = new System.Drawing.Size(143, 6);
+ toolStripMenuItem15.Name = "toolStripMenuItem15";
+ toolStripMenuItem15.Size = new System.Drawing.Size(143, 6);
//
// exitToolStripMenuItem2
//
- this.exitToolStripMenuItem2.Name = "exitToolStripMenuItem2";
- this.exitToolStripMenuItem2.Size = new System.Drawing.Size(146, 22);
- this.exitToolStripMenuItem2.Text = "E&xit";
- this.exitToolStripMenuItem2.Click += new System.EventHandler(this.exitToolStripMenuItem2_Click);
+ exitToolStripMenuItem2.Name = "exitToolStripMenuItem2";
+ exitToolStripMenuItem2.Size = new System.Drawing.Size(146, 22);
+ exitToolStripMenuItem2.Text = "E&xit";
+ exitToolStripMenuItem2.Click += exitToolStripMenuItem2_Click;
//
// toolStripMenuItem1
//
- this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.addGroupToolStripMenuItem});
- this.toolStripMenuItem1.Name = "toolStripMenuItem1";
- this.toolStripMenuItem1.Size = new System.Drawing.Size(39, 20);
- this.toolStripMenuItem1.Text = "&Edit";
+ toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { addGroupToolStripMenuItem });
+ toolStripMenuItem1.Name = "toolStripMenuItem1";
+ toolStripMenuItem1.Size = new System.Drawing.Size(39, 20);
+ toolStripMenuItem1.Text = "&Edit";
//
// addGroupToolStripMenuItem
//
- this.addGroupToolStripMenuItem.Name = "addGroupToolStripMenuItem";
- this.addGroupToolStripMenuItem.Size = new System.Drawing.Size(132, 22);
- this.addGroupToolStripMenuItem.Text = "&Add Group";
- this.addGroupToolStripMenuItem.Click += new System.EventHandler(this.addGroupToolStripMenuItem_Click);
+ addGroupToolStripMenuItem.Name = "addGroupToolStripMenuItem";
+ addGroupToolStripMenuItem.Size = new System.Drawing.Size(132, 22);
+ addGroupToolStripMenuItem.Text = "&Add Group";
+ addGroupToolStripMenuItem.Click += addGroupToolStripMenuItem_Click;
//
// viewToolStripMenuItem
//
- this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.showBigIconsToolStripMenuItem,
- this.enableAnimationsToolStripMenuItem,
- this.alwaysOnTopToolStripMenuItem});
- this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
- this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
- this.viewToolStripMenuItem.Text = "&View";
+ viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { showBigIconsToolStripMenuItem, alwaysOnTopToolStripMenuItem });
+ viewToolStripMenuItem.Name = "viewToolStripMenuItem";
+ viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
+ viewToolStripMenuItem.Text = "&View";
//
// showBigIconsToolStripMenuItem
//
- this.showBigIconsToolStripMenuItem.Name = "showBigIconsToolStripMenuItem";
- this.showBigIconsToolStripMenuItem.Size = new System.Drawing.Size(173, 22);
- this.showBigIconsToolStripMenuItem.Text = "Show &Big Icons";
- this.showBigIconsToolStripMenuItem.Click += new System.EventHandler(this.showBigIconsToolStripMenuItem_Click);
- //
- // enableAnimationsToolStripMenuItem
- //
- this.enableAnimationsToolStripMenuItem.Name = "enableAnimationsToolStripMenuItem";
- this.enableAnimationsToolStripMenuItem.Size = new System.Drawing.Size(173, 22);
- this.enableAnimationsToolStripMenuItem.Text = "Enable &Animations";
- this.enableAnimationsToolStripMenuItem.Click += new System.EventHandler(this.enableAnimationsToolStripMenuItem_Click);
+ showBigIconsToolStripMenuItem.Name = "showBigIconsToolStripMenuItem";
+ showBigIconsToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
+ showBigIconsToolStripMenuItem.Text = "Show &Big Icons";
+ showBigIconsToolStripMenuItem.Click += showBigIconsToolStripMenuItem_Click;
//
// alwaysOnTopToolStripMenuItem
//
- this.alwaysOnTopToolStripMenuItem.Name = "alwaysOnTopToolStripMenuItem";
- this.alwaysOnTopToolStripMenuItem.Size = new System.Drawing.Size(173, 22);
- this.alwaysOnTopToolStripMenuItem.Text = "Always On &Top";
- this.alwaysOnTopToolStripMenuItem.Click += new System.EventHandler(this.alwaysOnTopToolStripMenuItem_Click);
+ alwaysOnTopToolStripMenuItem.Name = "alwaysOnTopToolStripMenuItem";
+ alwaysOnTopToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
+ alwaysOnTopToolStripMenuItem.Text = "Always On &Top";
+ alwaysOnTopToolStripMenuItem.Click += alwaysOnTopToolStripMenuItem_Click;
//
// toolsToolStripMenuItem
//
- this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.optionsToolStripMenuItem});
- this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
- this.toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 20);
- this.toolsToolStripMenuItem.Text = "&Tools";
+ toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { optionsToolStripMenuItem });
+ toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
+ toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 20);
+ toolsToolStripMenuItem.Text = "&Tools";
//
// optionsToolStripMenuItem
//
- this.optionsToolStripMenuItem.Image = AppResource.cog2;
- this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
- this.optionsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F12)));
- this.optionsToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
- this.optionsToolStripMenuItem.Text = "&Options";
- this.optionsToolStripMenuItem.Click += new System.EventHandler(this.optionsToolStripMenuItem_Click);
+ optionsToolStripMenuItem.Image = AppResource.cog2;
+ optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
+ optionsToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F12;
+ optionsToolStripMenuItem.Size = new System.Drawing.Size(168, 22);
+ optionsToolStripMenuItem.Text = "&Options";
+ optionsToolStripMenuItem.Click += optionsToolStripMenuItem_Click;
//
// helpToolStripMenuItem1
//
- this.helpToolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.viewHelpToolStripMenuItem1,
- this.toolStripMenuItem16,
- this.aboutToolStripMenuItem1});
- this.helpToolStripMenuItem1.Name = "helpToolStripMenuItem1";
- this.helpToolStripMenuItem1.Size = new System.Drawing.Size(44, 20);
- this.helpToolStripMenuItem1.Text = "&Help";
+ helpToolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { viewHelpToolStripMenuItem1, toolStripMenuItem16, aboutToolStripMenuItem1 });
+ helpToolStripMenuItem1.Name = "helpToolStripMenuItem1";
+ helpToolStripMenuItem1.Size = new System.Drawing.Size(44, 20);
+ helpToolStripMenuItem1.Text = "&Help";
//
// viewHelpToolStripMenuItem1
//
- this.viewHelpToolStripMenuItem1.Image = AppResource.help2;
- this.viewHelpToolStripMenuItem1.Name = "viewHelpToolStripMenuItem1";
- this.viewHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1;
- this.viewHelpToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
- this.viewHelpToolStripMenuItem1.Text = "&View Help";
- this.viewHelpToolStripMenuItem1.Click += new System.EventHandler(this.viewHelpToolStripMenuItem1_Click);
+ viewHelpToolStripMenuItem1.Image = AppResource.help2;
+ viewHelpToolStripMenuItem1.Name = "viewHelpToolStripMenuItem1";
+ viewHelpToolStripMenuItem1.ShortcutKeys = System.Windows.Forms.Keys.F1;
+ viewHelpToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
+ viewHelpToolStripMenuItem1.Text = "&View Help";
+ viewHelpToolStripMenuItem1.Click += viewHelpToolStripMenuItem1_Click;
//
// toolStripMenuItem16
//
- this.toolStripMenuItem16.Name = "toolStripMenuItem16";
- this.toolStripMenuItem16.Size = new System.Drawing.Size(143, 6);
+ toolStripMenuItem16.Name = "toolStripMenuItem16";
+ toolStripMenuItem16.Size = new System.Drawing.Size(143, 6);
//
// aboutToolStripMenuItem1
//
- this.aboutToolStripMenuItem1.Name = "aboutToolStripMenuItem1";
- this.aboutToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
- this.aboutToolStripMenuItem1.Text = "&About";
- this.aboutToolStripMenuItem1.Click += new System.EventHandler(this.aboutToolStripMenuItem1_Click);
+ aboutToolStripMenuItem1.Name = "aboutToolStripMenuItem1";
+ aboutToolStripMenuItem1.Size = new System.Drawing.Size(146, 22);
+ aboutToolStripMenuItem1.Text = "&About";
+ aboutToolStripMenuItem1.Click += aboutToolStripMenuItem1_Click;
//
- // tileContainer1
+ // tileContainerMenu1
//
- this.tileContainer1.AutoScroll = true;
- this.tileContainer1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tileContainer1.BackColor = System.Drawing.Color.Transparent;
- this.tileContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tileContainer1.Location = new System.Drawing.Point(0, 24);
- this.tileContainer1.Margin = new System.Windows.Forms.Padding(0);
- this.tileContainer1.Name = "tileContainer1";
- this.tileContainer1.Padding = new System.Windows.Forms.Padding(10, 10, 10, 20);
- this.tileContainer1.Size = new System.Drawing.Size(633, 376);
- this.tileContainer1.TabIndex = 3;
+ tileContainerMenu1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { addGroupToolStripMenuItem1, toolStripMenuItem4, editToolStripMenuItem, toolStripMenuItem5, toolStripSeparator1, toolStripMenuItem2, toolStripSeparator2, toolStripMenuItem3, toolStripSeparator3, removeToolStripMenuItem });
+ tileContainerMenu1.Name = "tileContainerMenu1";
+ tileContainerMenu1.Size = new System.Drawing.Size(133, 176);
+ //
+ // addGroupToolStripMenuItem1
+ //
+ addGroupToolStripMenuItem1.Name = "addGroupToolStripMenuItem1";
+ addGroupToolStripMenuItem1.Size = new System.Drawing.Size(132, 22);
+ addGroupToolStripMenuItem1.Text = "&Add Tile";
+ addGroupToolStripMenuItem1.Click += addGroupToolStripMenuItem1_Click;
+ //
+ // toolStripMenuItem4
+ //
+ toolStripMenuItem4.Name = "toolStripMenuItem4";
+ toolStripMenuItem4.Size = new System.Drawing.Size(132, 22);
+ toolStripMenuItem4.Text = "Add &Group";
+ toolStripMenuItem4.Click += toolStripMenuItem4_Click;
+ //
+ // editToolStripMenuItem
+ //
+ editToolStripMenuItem.Name = "editToolStripMenuItem";
+ editToolStripMenuItem.Size = new System.Drawing.Size(132, 22);
+ editToolStripMenuItem.Text = "&Edit";
+ editToolStripMenuItem.Click += editToolStripMenuItem_Click;
+ //
+ // toolStripMenuItem5
+ //
+ toolStripMenuItem5.Name = "toolStripMenuItem5";
+ toolStripMenuItem5.Size = new System.Drawing.Size(132, 22);
+ toolStripMenuItem5.Text = "&Duplicate";
+ toolStripMenuItem5.Click += toolStripMenuItem5_Click;
+ //
+ // toolStripSeparator1
+ //
+ toolStripSeparator1.Name = "toolStripSeparator1";
+ toolStripSeparator1.Size = new System.Drawing.Size(129, 6);
+ //
+ // toolStripMenuItem2
+ //
+ toolStripMenuItem2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { addRowToolStripMenuItem, removeRowToolStripMenuItem });
+ toolStripMenuItem2.Name = "toolStripMenuItem2";
+ toolStripMenuItem2.Size = new System.Drawing.Size(132, 22);
+ toolStripMenuItem2.Text = "Ro&w";
+ //
+ // addRowToolStripMenuItem
+ //
+ addRowToolStripMenuItem.Name = "addRowToolStripMenuItem";
+ addRowToolStripMenuItem.Size = new System.Drawing.Size(143, 22);
+ addRowToolStripMenuItem.Text = "A&dd Row";
+ addRowToolStripMenuItem.Click += addRowToolStripMenuItem_Click;
+ //
+ // removeRowToolStripMenuItem
+ //
+ removeRowToolStripMenuItem.Name = "removeRowToolStripMenuItem";
+ removeRowToolStripMenuItem.Size = new System.Drawing.Size(143, 22);
+ removeRowToolStripMenuItem.Text = "Remo&ve Row";
+ removeRowToolStripMenuItem.Click += removeRowToolStripMenuItem_Click;
+ //
+ // toolStripSeparator2
+ //
+ toolStripSeparator2.Name = "toolStripSeparator2";
+ toolStripSeparator2.Size = new System.Drawing.Size(129, 6);
+ //
+ // toolStripMenuItem3
+ //
+ toolStripMenuItem3.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { topToolStripMenuItem, upToolStripMenuItem, downToolStripMenuItem, bottomToolStripMenuItem });
+ toolStripMenuItem3.Name = "toolStripMenuItem3";
+ toolStripMenuItem3.Size = new System.Drawing.Size(132, 22);
+ toolStripMenuItem3.Text = "&Move";
+ //
+ // topToolStripMenuItem
+ //
+ topToolStripMenuItem.Name = "topToolStripMenuItem";
+ topToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
+ topToolStripMenuItem.Text = "&Top";
+ topToolStripMenuItem.Click += topToolStripMenuItem_Click;
+ //
+ // upToolStripMenuItem
+ //
+ upToolStripMenuItem.Name = "upToolStripMenuItem";
+ upToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
+ upToolStripMenuItem.Text = "&Up";
+ upToolStripMenuItem.Click += upToolStripMenuItem_Click;
+ //
+ // downToolStripMenuItem
+ //
+ downToolStripMenuItem.Name = "downToolStripMenuItem";
+ downToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
+ downToolStripMenuItem.Text = "&Down";
+ downToolStripMenuItem.Click += downToolStripMenuItem_Click;
+ //
+ // bottomToolStripMenuItem
+ //
+ bottomToolStripMenuItem.Name = "bottomToolStripMenuItem";
+ bottomToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
+ bottomToolStripMenuItem.Text = "&Bottom";
+ bottomToolStripMenuItem.Click += bottomToolStripMenuItem_Click;
+ //
+ // toolStripSeparator3
+ //
+ toolStripSeparator3.Name = "toolStripSeparator3";
+ toolStripSeparator3.Size = new System.Drawing.Size(129, 6);
+ //
+ // removeToolStripMenuItem
+ //
+ removeToolStripMenuItem.Name = "removeToolStripMenuItem";
+ removeToolStripMenuItem.Size = new System.Drawing.Size(132, 22);
+ removeToolStripMenuItem.Text = "&Remove";
+ removeToolStripMenuItem.Click += removeToolStripMenuItem_Click;
+ //
+ // flowLayoutPanel1
+ //
+ flowLayoutPanel1.AutoScroll = true;
+ flowLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
+ flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
+ flowLayoutPanel1.Location = new System.Drawing.Point(6, 0);
+ flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
+ flowLayoutPanel1.Name = "flowLayoutPanel1";
+ flowLayoutPanel1.Size = new System.Drawing.Size(398, 417);
+ flowLayoutPanel1.TabIndex = 8;
+ flowLayoutPanel1.WrapContents = false;
+ //
+ // panel1
+ //
+ panel1.BackColor = System.Drawing.Color.Transparent;
+ panel1.Controls.Add(flowLayoutPanel1);
+ panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ panel1.Location = new System.Drawing.Point(0, 24);
+ panel1.Margin = new System.Windows.Forms.Padding(0);
+ panel1.Name = "panel1";
+ panel1.Padding = new System.Windows.Forms.Padding(6, 0, 0, 0);
+ panel1.Size = new System.Drawing.Size(404, 417);
+ panel1.TabIndex = 9;
//
// MainForm
//
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
- this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
- this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.ClientSize = new System.Drawing.Size(633, 400);
- this.Controls.Add(this.tileContainer1);
- this.Controls.Add(this.menuStrip1);
- this.DoubleBuffered = true;
- this.ForeColor = System.Drawing.SystemColors.ControlText;
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MainMenuStrip = this.menuStrip1;
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.MinimumSize = new System.Drawing.Size(420, 280);
- this.Name = "MainForm";
- this.Text = "Fizzy Launcher";
- this.contextMenuStrip2.ResumeLayout(false);
- this.menuStrip1.ResumeLayout(false);
- this.menuStrip1.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
-
+ AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
+ BackColor = System.Drawing.Color.FromArgb(250, 250, 250);
+ BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
+ ClientSize = new System.Drawing.Size(404, 441);
+ Controls.Add(panel1);
+ Controls.Add(menuStrip1);
+ DoubleBuffered = true;
+ ForeColor = System.Drawing.SystemColors.ControlText;
+ Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon");
+ MainMenuStrip = menuStrip1;
+ MaximizeBox = false;
+ MinimizeBox = false;
+ MinimumSize = new System.Drawing.Size(300, 320);
+ Name = "MainForm";
+ contextMenuStrip2.ResumeLayout(false);
+ menuStrip1.ResumeLayout(false);
+ menuStrip1.PerformLayout();
+ tileContainerMenu1.ResumeLayout(false);
+ panel1.ResumeLayout(false);
+ ResumeLayout(false);
+ PerformLayout();
}
#endregion
@@ -333,7 +446,6 @@ namespace FizzyLauncher
private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem1;
- private TileContainer tileContainer1;
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem13;
@@ -344,7 +456,6 @@ namespace FizzyLauncher
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem15;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem2;
private System.Windows.Forms.ToolStripMenuItem showBigIconsToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem enableAnimationsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem alwaysOnTopToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem viewHelpToolStripMenuItem1;
@@ -352,6 +463,25 @@ namespace FizzyLauncher
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem addGroupToolStripMenuItem;
+ private System.Windows.Forms.ContextMenuStrip tileContainerMenu1;
+ private System.Windows.Forms.ToolStripMenuItem addGroupToolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem;
+ private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
+ private System.Windows.Forms.ToolStripMenuItem addRowToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem removeRowToolStripMenuItem;
+ 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.Panel panel1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5;
}
}
diff --git a/MainForm.cs b/MainForm.cs
index e5dcc0a..a1620ef 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -1,483 +1,177 @@
-using FizzyLauncher.Models;
-using RyzStudio.Drawing;
-using RyzStudio.Text.Json;
-using RyzStudio.Windows.Forms;
-using System;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
-using System.Diagnostics;
using System.IO;
using System.Linq;
-using System.Runtime.InteropServices;
-using System.Text.Json;
using System.Threading.Tasks;
using System.Windows.Forms;
+using RokettoLaunch.Models;
+using RyzStudio.Windows.Forms;
+using RyzStudio.Windows.ThemedForms.ButtonTextBox;
+using RyzStudio.Windows.TileForms;
-namespace FizzyLauncher
+namespace RokettoLaunch
{
public partial class MainForm : Form
{
- [DllImport("user32.dll")]
- protected static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
+ private readonly FileSessionManager _fileSessionManager;
- [DllImport("user32.dll")]
- protected static extern bool UnregisterHotKey(IntPtr hWnd, int id);
-
- //protected const int MOD_ALT = 0x1;
- //protected const int MOD_CONTROL = 0x2;
- //protected const int MOD_SHIFT = 0x4;
- //protected const int MOD_WIN = 0x8;
- protected const int WM_HOTKEY = 0x312;
- protected const int WM_QUERYENDSESSION = 0x0011;
-
- protected OptionsForm optionsForm = null;
- protected string sessionFilename = null;
- protected bool isBusy = false;
- protected bool requestExit = false;
+ private bool _isBusy = false;
+ private bool _requestExit = false;
- public MainForm() : base()
+ public MainForm()
{
InitializeComponent();
- tileContainer1.OnColumnSizeChanged += tileContainer1_OnSizeChanged;
- notifyIcon1.Text = Application.ProductName;
+ this.Text = System.Windows.Forms.Application.ProductName;
+
+ _fileSessionManager = new FileSessionManager();
+ _fileSessionManager.OpenFileDialog = openFileDialog1;
+ _fileSessionManager.SaveFileDialog = saveFileDialog1;
+ _fileSessionManager.OnNewing += fileSessionManager_OnNewSession;
+ _fileSessionManager.OnLoading += fileSessionManager_OnLoadSession;
+ _fileSessionManager.OnSaving += fileSessionManager_OnSaveSession;
+ _fileSessionManager.OnClearing += fileSessionManager_OnClearSession;
+ _fileSessionManager.OnFilenameChanged += fileSessionManager_OnFilenameChanged;
+
+ //tileContainer1.OnColumnSizeChanged += tileContainer1_OnSizeChanged;
+ notifyIcon1.Text = System.Windows.Forms.Application.ProductName;
this.AutoScaleMode = AutoScaleMode.None;
- this.StartPosition = FormStartPosition.WindowsDefaultBounds;
- this.Visible = false;
- }
-
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
-
- this.AutoScaleMode = AutoScaleMode.None;
-
- UIControl.SetVisible(this, false);
- UIControl.SetSize(this, this.MinimumSize);
}
protected async override void OnShown(EventArgs e)
{
base.OnShown(e);
- UIControl.SetVisible(this, false);
+ var args = RyzStudio.Windows.Forms.Application.GetCommandLine();
- string[] commandLineArgs = Environment.GetCommandLineArgs();
-
- string jsonfigFilename = null;
- if (string.IsNullOrWhiteSpace(jsonfigFilename)) jsonfigFilename = parseOpenFile_FromCMD(commandLineArgs);
- if (string.IsNullOrWhiteSpace(jsonfigFilename)) jsonfigFilename = Path.ChangeExtension(Application.ExecutablePath, "jsonfig");
+ string jsonfigFilename = args.Where(x => (x.Key.Equals("o") || x.Key.Equals("open"))).Select(x => x.Value).FirstOrDefault();
+ if (string.IsNullOrWhiteSpace(jsonfigFilename))
+ {
+ jsonfigFilename = Path.ChangeExtension(System.Windows.Forms.Application.ExecutablePath, "jsonfig");
+ }
if (!string.IsNullOrWhiteSpace(jsonfigFilename) && File.Exists(jsonfigFilename))
{
- await loadFile(jsonfigFilename);
+ await _fileSessionManager.OpenSession(jsonfigFilename);
}
else
{
- this.CurrentSession = new LauncherSession();
+ this.CurrentSession = new AppOptions();
- UIControl.SetVisible(this, true);
+ InvalidateOptions();
}
}
- protected override void OnClosing(CancelEventArgs e)
+ protected async override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
- if (this.CurrentSession == null) this.CurrentSession = new LauncherSession();
+ if (this.CurrentSession == null)
+ {
+ this.CurrentSession = new AppOptions();
+ }
- if (this.CurrentSession.HideOnClose && !requestExit)
+ if (this.CurrentSession.HideOnClose && !_requestExit)
{
this.Visible = !this.Visible;
e.Cancel = true;
return;
}
- requestExit = false;
+ _requestExit = false;
- if (string.IsNullOrWhiteSpace(sessionFilename))
- {
- // do nothing
- }
- else
- {
- if (this.CurrentSession.AutoSave == LauncherSession.AutoSaveOption.Prompt)
- {
- DialogResult dr = MessageBox.Show("Save existing session?", "Exit", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
- if (dr == DialogResult.Yes)
- {
- bool rv = saveFile(sessionFilename, false);
- if (!rv)
- {
- e.Cancel = true;
- }
- }
- else if (dr == DialogResult.No)
- {
- // do nothing
- }
- else if (dr == DialogResult.Cancel)
- {
- e.Cancel = true;
- }
- }
- else if (this.CurrentSession.AutoSave == LauncherSession.AutoSaveOption.Yes)
- {
- saveFile(sessionFilename, false);
- }
- }
+ await _fileSessionManager.CloseSession();
- if (this.CurrentSession.HotKey != null)
+ if ((this.CurrentSession?.ShowToggleHotkey ?? new ThKeyCodeTextBox.Results()).Key != Keys.None)
{
- if (this.CurrentSession.HotKey.KeyCode != Keys.None)
- {
#if !DEBUG
- UnregisterHotKey((IntPtr)Handle, 1);
+ RyzStudio.Runtime.InteropServices.User32.UnregisterHotKey((IntPtr)Handle, 1);
#endif
- }
}
-
}
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
- case WM_HOTKEY:
+ case RyzStudio.Runtime.InteropServices.User32.WM_HOTKEY:
if (m.WParam.ToInt32() == 1)
{
this.Visible = !this.Visible;
}
break;
- case WM_QUERYENDSESSION:
- requestExit = true;
- //this.Close();
- Application.Exit();
+ case RyzStudio.Runtime.InteropServices.User32.WM_QUERYENDSESSION:
+ _requestExit = true;
+
+ System.Windows.Forms.Application.Exit();
break;
- default: break;
-
+ default:
+ break;
}
base.WndProc(ref m);
}
- public LauncherSession CurrentSession { get; set; } = null;
+ public AppOptions CurrentSession { get; set; } = null;
- public void Clear(int columnCount)
+ private void InvalidateOptions()
{
- tileContainer1.Clear();
- tileContainer1.Add(columnCount);
+ /// todo: big icons
- sessionFilename = null;
- }
-
-
- protected async Task collapseWindow(int width, int increment = 6)
- {
- await Task.Run(() =>
- {
- while (this.Width > width)
- {
- UIControl.SetWidth(this, (this.Width - increment));
-
- Application.DoEvents();
- }
-
- UIControl.SetWidth(this, width);
- });
- }
-
- protected async Task expandWindow(int width, int increment = 8)
- {
- await Task.Run(() =>
- {
- while (this.Width < width)
- {
- UIControl.SetWidth(this, (this.Width + increment));
-
- Application.DoEvents();
- }
-
- UIControl.SetWidth(this, width);
- });
- }
-
- protected void invalidateHotKey()
- {
#if !DEBUG
- if (this.InvokeRequired)
+ UIControl.Invoke(this, (x) =>
{
- this.Invoke(new MethodInvoker(() =>
+ RyzStudio.Runtime.InteropServices.User32.UnregisterHotKey((IntPtr)Handle, 1);
+ });
+
+ if ((this.CurrentSession?.ShowToggleHotkey ?? new ThKeyCodeTextBox.Results()).Key != Keys.None)
+ {
+ UIControl.Invoke(this, (x) =>
{
- UnregisterHotKey((IntPtr)Handle, 1);
- }));
- }
- else
- {
- UnregisterHotKey((IntPtr)Handle, 1);
+ RyzStudio.Runtime.InteropServices.User32.RegisterHotKey((IntPtr)Handle, 1, this.CurrentSession.ShowToggleHotkey.ModifierCode, this.CurrentSession.ShowToggleHotkey.KeyCode);
+ });
}
#endif
- if (this.CurrentSession.HotKey != null)
- {
- if (this.CurrentSession.HotKey.KeyCode != Keys.None)
- {
-#if !DEBUG
- if (this.InvokeRequired)
- {
- this.Invoke(new MethodInvoker(() =>
- {
- RegisterHotKey((IntPtr)Handle, 1, this.CurrentSession.HotKey.ModifierCode, this.CurrentSession.HotKey.Key);
- }));
- }
- else
- {
- RegisterHotKey((IntPtr)Handle, 1, this.CurrentSession.HotKey.ModifierCode, this.CurrentSession.HotKey.Key);
- }
-#endif
- }
- }
+ UIControl.SetTopMost(this, this.CurrentSession.AlwaysOnTop);
}
- protected string parseOpenFile_FromCMD(string[] args)
+ private void menuStrip1_MenuActivate(object sender, EventArgs e)
{
- if (args.Length <= 1)
- {
- return null;
- }
+ closeToolStripMenuItem.Enabled = (_fileSessionManager.SessionState != FileSessionManager.SessionStateEnum.Close);
- int i = 1;
- while (true)
- {
- if (i > (args.Length - 1))
- {
- break;
- }
+ saveToolStripMenuItem.Enabled = (_fileSessionManager.SessionState == FileSessionManager.SessionStateEnum.Open);
+ saveAsToolStripMenuItem.Enabled = (_fileSessionManager.SessionState != FileSessionManager.SessionStateEnum.Close);
- switch (args[i].Trim().ToLower())
- {
- case "-o":
- case "-open":
- if ((i + 1) > (args.Length - 1)) break;
+ addGroupToolStripMenuItem.Enabled = (_fileSessionManager.SessionState != FileSessionManager.SessionStateEnum.Close);
- string openFilename = args[(i + 1)];
- if (string.IsNullOrWhiteSpace(openFilename)) break;
- if (!File.Exists(openFilename)) break;
-
- return openFilename;
-
- //i++;
- //break;
- }
-
- i++;
- }
-
- return null;
+ showBigIconsToolStripMenuItem.Checked = this.CurrentSession?.ShowBigIcons ?? true;
+ alwaysOnTopToolStripMenuItem.Checked = this.CurrentSession?.AlwaysOnTop ?? false;
}
- protected void newSession()
- {
- NewForm form = new NewForm(this);
- form.ShowDialog();
- }
- protected async Task loadFile(string filename)
- {
- await Task.Run(() =>
- {
- if (isBusy)
- {
- return;
- }
-
- if (string.IsNullOrWhiteSpace(filename))
- {
- return;
- }
-
- if (!File.Exists(filename))
- {
- return;
- }
-
- string sourceCode = null;
-
- try
- {
- sessionFilename = filename;
-
- sourceCode = File.ReadAllText(sessionFilename);
- }
- catch (Exception exc)
- {
- MessageBox.Show(exc.Message, "Load session");
- return;
- }
-
- if (string.IsNullOrWhiteSpace(sourceCode))
- {
- return;
- }
-
- // load options
- var options = new JsonSerializerOptions();
- options.Converters.Add(new JsonPointConverter());
- options.Converters.Add(new JsonSizeConverter());
- options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
-
- try
- {
- this.CurrentSession = JsonSerializer.Deserialize(sourceCode, options);
- }
- catch (Exception)
- {
- MessageBox.Show("Unable to read session", "Load session");
- return;
- }
-
- if (this.CurrentSession == null)
- {
- this.CurrentSession = new LauncherSession();
- }
-
- // load tiles
- tileContainer1.Load(this.CurrentSession.Groups);
-
- // reposition
- if (!this.CurrentSession.StartPosition.IsEmpty) UIControl.SetLocation(this, this.CurrentSession.StartPosition);
-
- //
- UIControl.SetTopMost(this, this.CurrentSession.AlwaysOnTop);
- UIControl.SetVisible(this, true);
- UIControl.SetChecked(enableAnimationsToolStripMenuItem, this.CurrentSession.EnableAnimation);
- UIControl.SetChecked(showBigIconsToolStripMenuItem, this.CurrentSession.EnableBigIconInFolder);
- UIControl.SetClientHeight(this, this.CurrentSession.DefaultHeight);
-
- UIControl.SetFocus(this);
-
- // hotkey
- invalidateHotKey();
-
- });
- }
-
- protected bool saveFile(string filename, bool showNotices = true)
- {
- if (isBusy)
- {
- return false;
- }
-
- if (string.IsNullOrWhiteSpace(filename))
- {
- return false;
- }
-
- if (tileContainer1.GroupCount <= 0)
- {
- return true;
- }
-
- isBusy = true;
-
- // update session
- if (this.CurrentSession == null)
- {
- this.CurrentSession = new LauncherSession();
- }
-
- this.CurrentSession.DefaultHeight = this.Height;
- this.CurrentSession.AlwaysOnTop = this.TopMost;
- this.CurrentSession.StartPosition = this.Location;
- this.CurrentSession.Groups = tileContainer1.GroupModels?.ToList() ?? new List();
-
- var options = new JsonSerializerOptions();
- options.Converters.Add(new JsonPointConverter());
- options.Converters.Add(new JsonSizeConverter());
- options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
-
- try
- {
- File.WriteAllText(filename, JsonSerializer.Serialize(this.CurrentSession, options));
-
- if (showNotices)
- {
- MessageBox.Show("Session saved!", "Save session", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- catch (Exception exc)
- {
- MessageBox.Show(exc.Message, "Save session");
-
- return false;
- }
-
- isBusy = false;
-
- return true;
- }
-
- protected bool saveAsFile()
- {
- if (isBusy)
- {
- return false;
- }
-
- if (saveFileDialog1.ShowDialog() == DialogResult.OK)
- {
- bool rv = saveFile(saveFileDialog1.FileName);
- if (rv)
- {
- sessionFilename = saveFileDialog1.FileName;
- }
-
- return rv;
- }
-
- return false;
- }
-
-#region main menu
+ #region Main Menu
///
/// New
///
///
///
- private void newToolStripMenuItem_Click(object sender, EventArgs e)
+ private async void newToolStripMenuItem_Click(object sender, EventArgs e)
{
- if (string.IsNullOrWhiteSpace(sessionFilename))
+ if (_isBusy)
{
- newSession();
- }
- else
- {
- DialogResult dr = MessageBox.Show("Save existing session?", "New session", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
- if (dr == DialogResult.Yes)
- {
- bool rv = saveFile(sessionFilename, false);
- if (rv)
- {
- newSession();
- }
- }
- else if (dr == DialogResult.No)
- {
- newSession();
- }
- else if (dr == DialogResult.Cancel)
- {
- return;
- }
+ return;
}
+
+ await _fileSessionManager.NewSession();
}
///
@@ -487,39 +181,12 @@ namespace FizzyLauncher
///
private async void openToolStripMenuItem_Click(object sender, EventArgs e)
{
- if (string.IsNullOrWhiteSpace(sessionFilename))
+ if (_isBusy)
{
- if (openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- await loadFile(openFileDialog1.FileName);
- }
- }
- else
- {
- DialogResult dr = MessageBox.Show("Save existing session?", "Open session", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
- if (dr == DialogResult.Yes)
- {
- bool rv = saveFile(sessionFilename, false);
- if (rv)
- {
- if (openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- await loadFile(openFileDialog1.FileName);
- }
- }
- }
- else if (dr == DialogResult.No)
- {
- if (openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- await loadFile(openFileDialog1.FileName);
- }
- }
- else if (dr == DialogResult.Cancel)
- {
- return;
- }
+ return;
}
+
+ await _fileSessionManager.OpenSession();
}
///
@@ -527,36 +194,14 @@ namespace FizzyLauncher
///
///
///
- private void closeToolStripMenuItem_Click(object sender, EventArgs e)
+ private async void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
- if (string.IsNullOrWhiteSpace(sessionFilename))
+ if (_isBusy)
{
- tileContainer1.Clear();
+ return;
}
- else
- {
- DialogResult dr = MessageBox.Show("Save existing session?", "Close session", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
- if (dr == DialogResult.Yes)
- {
- bool rv = saveFile(sessionFilename, false);
- if (rv)
- {
- tileContainer1.Clear();
- sessionFilename = null;
- }
- }
- else if (dr == DialogResult.No)
- {
- tileContainer1.Clear();
-
- sessionFilename = null;
- }
- else if (dr == DialogResult.Cancel)
- {
- return;
- }
- }
+ await _fileSessionManager.CloseSession();
}
///
@@ -564,16 +209,14 @@ namespace FizzyLauncher
///
///
///
- private void saveToolStripMenuItem_Click(object sender, EventArgs e)
+ private async void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
- if (string.IsNullOrWhiteSpace(sessionFilename))
+ if (_isBusy)
{
- saveAsFile();
- }
- else
- {
- saveFile(sessionFilename, true);
+ return;
}
+
+ await _fileSessionManager.SaveSession();
}
///
@@ -581,9 +224,14 @@ namespace FizzyLauncher
///
///
///
- private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
+ private async void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
- saveAsFile();
+ if (_isBusy)
+ {
+ return;
+ }
+
+ await _fileSessionManager.SaveAsSession();
}
///
@@ -593,7 +241,12 @@ namespace FizzyLauncher
///
private void exitToolStripMenuItem2_Click(object sender, EventArgs e)
{
- requestExit = true;
+ if (_isBusy)
+ {
+ return;
+ }
+
+ _requestExit = true;
this.Close();
}
@@ -604,9 +257,9 @@ namespace FizzyLauncher
///
///
///
- private void addGroupToolStripMenuItem_Click(object sender, EventArgs e)
+ private async void addGroupToolStripMenuItem_Click(object sender, EventArgs e)
{
- tileContainer1.Add();
+ await AddNewTileGroup();
}
@@ -622,26 +275,7 @@ namespace FizzyLauncher
return;
}
- this.CurrentSession.EnableBigIconInFolder = !this.CurrentSession.EnableBigIconInFolder;
-
- showBigIconsToolStripMenuItem.Checked = this.CurrentSession.EnableBigIconInFolder;
- }
-
- ///
- /// Enable animations
- ///
- ///
- ///
- private void enableAnimationsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (this.CurrentSession == null)
- {
- return;
- }
-
- this.CurrentSession.EnableAnimation = !this.CurrentSession.EnableAnimation;
-
- enableAnimationsToolStripMenuItem.Checked = this.CurrentSession.EnableAnimation;
+ this.CurrentSession.ShowBigIcons = !this.CurrentSession.ShowBigIcons;
}
///
@@ -651,7 +285,14 @@ namespace FizzyLauncher
///
private void alwaysOnTopToolStripMenuItem_Click(object sender, EventArgs e)
{
- this.TopMost = !this.TopMost;
+ if (this.CurrentSession == null)
+ {
+ return;
+ }
+
+ this.CurrentSession.AlwaysOnTop = !this.CurrentSession.AlwaysOnTop;
+
+ this.TopMost = this.CurrentSession.AlwaysOnTop;
}
@@ -662,10 +303,13 @@ namespace FizzyLauncher
///
private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
{
- if (optionsForm == null) optionsForm = new OptionsForm(this);
- optionsForm.ShowDialog();
+ var form = new OptionsForm(this.CurrentSession);
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ this.CurrentSession = form.Result;
- invalidateHotKey();
+ InvalidateOptions();
+ }
}
@@ -676,18 +320,7 @@ namespace FizzyLauncher
///
private void viewHelpToolStripMenuItem1_Click(object sender, EventArgs e)
{
- try
- {
- System.Diagnostics.Process.Start(new ProcessStartInfo()
- {
- FileName = AppResource.AppHelpURL,
- UseShellExecute = true
- });
- }
- catch
- {
- // do nothing
- }
+ RyzStudio.Diagnostics.Process.Execute(AppResource.AppHelpURL);
}
///
@@ -697,19 +330,19 @@ namespace FizzyLauncher
///
private void aboutToolStripMenuItem1_Click(object sender, EventArgs e)
{
- MessageBox.Show(Application.ProductName + " v" + Application.ProductVersion, "About", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ var form = new RyzStudio.Windows.ThemedForms.AboutForm();
+ form.ProductURL = AppResource.AppProductURL;
+ form.AuthorURL = AppResource.AppAuthorURL;
+ form.CompanyURL = AppResource.AppCompanyURL;
+ form.ProductCopyrightStartYear = 2020;
+ form.ProductLogo = AppResource.icon_64;
+
+ form.ShowDialog();
}
+ #endregion
- private void menuStrip1_MenuActivate(object sender, EventArgs e)
- {
- alwaysOnTopToolStripMenuItem.Checked = this.TopMost;
- saveAsToolStripMenuItem.Enabled = !string.IsNullOrWhiteSpace(sessionFilename);
- }
-
-#endregion
-
-#region notification icon
+ #region Notification Icon
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
@@ -721,18 +354,474 @@ namespace FizzyLauncher
private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
{
- requestExit = true;
+ _requestExit = true;
this.Close();
}
-#endregion
+ #endregion
- private void tileContainer1_OnSizeChanged(object sender, EventArgs e)
+
+ #region File Session Manager
+
+ private async Task fileSessionManager_OnNewSession(FileSessionManager sender)
{
- int newWidth = this.Padding.Horizontal + SystemInformation.VerticalScrollBarWidth + tileContainer1.CalcWidth;
+ return await Task.Run(async () =>
+ {
+ var form = new NewForm();
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ var result = form.Result;
- UIControl.SetClientWidth(this, newWidth);
+ UIControl.Clear(flowLayoutPanel1);
+
+ this.CurrentSession.TilesPerRow = result.ColumnCount;
+
+ for (var i = 0; i < result.GroupCount; i++)
+ {
+ await AddNewTileGroup();
+ }
+ }
+
+ AutoResize();
+
+ return true;
+ });
+ }
+
+ private async Task fileSessionManager_OnLoadSession(FileSessionManager sender, string filename)
+ {
+ return await Task.Run(async () =>
+ {
+ this.CurrentSession = RyzStudio.Text.Json.JsonSerialiser.DeserialiseFile(filename);
+ if (this.CurrentSession == null)
+ {
+ MessageBox.Show("Unable to read session", "Load session");
+
+ return false;
+ }
+
+ if (this.CurrentSession == null)
+ {
+ this.CurrentSession = new AppOptions();
+ }
+
+ // Reposition + resize
+ if (!this.CurrentSession.StartPosition.IsEmpty)
+ {
+ UIControl.SetLocation(this, this.CurrentSession.StartPosition);
+ }
+
+ if (this.CurrentSession.Height > 0)
+ {
+ UIControl.SetClientHeight(this, this.CurrentSession.Height);
+ }
+
+ InvalidateOptions();
+
+ // Load tiles
+ await LoadTileGroups(this.CurrentSession.Groups);
+
+ AutoResize();
+
+ UIControl.SetFocus(this);
+
+ return true;
+ });
+ }
+
+ private async Task fileSessionManager_OnSaveSession(FileSessionManager sender, string filename, bool showNotices)
+ {
+ if (string.IsNullOrWhiteSpace(filename))
+ {
+ return false;
+ }
+
+ if (!flowLayoutPanel1.Controls.OfType().Any())
+ {
+ return true;
+ }
+
+ return await Task.Run(() =>
+ {
+ if (_isBusy)
+ {
+ return false;
+ }
+
+ _isBusy = true;
+
+ // update session
+ if (this.CurrentSession == null)
+ {
+ this.CurrentSession = new AppOptions();
+ }
+
+ this.CurrentSession.StartPosition = this.Location;
+ this.CurrentSession.Height = this.Height;
+
+ this.CurrentSession.Groups = new List();
+ foreach (var container in flowLayoutPanel1.Controls.OfType())
+ {
+ this.CurrentSession.Groups.Add((TileGroupModel)container.Tag);
+ }
+
+ var result = RyzStudio.Text.Json.JsonSerialiser.SerialiseFile(filename, this.CurrentSession);
+ if (result.IsSuccess)
+ {
+ if (showNotices)
+ {
+ MessageBox.Show("Session saved!", "Save session", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ }
+ else
+ {
+ MessageBox.Show(result.Message, "Save session");
+
+ _isBusy = false;
+
+ return false;
+ }
+
+ _isBusy = false;
+
+ return true;
+ });
+ }
+
+ private async Task fileSessionManager_OnClearSession(FileSessionManager sender)
+ {
+ await Task.Run(() =>
+ {
+ UIControl.Clear(flowLayoutPanel1);
+ });
+
+ return true;
+ }
+
+ private async Task fileSessionManager_OnFilenameChanged(FileSessionManager sender, string filename)
+ {
+ await Task.Run(() =>
+ {
+ switch (sender.SessionState)
+ {
+ case FileSessionManager.SessionStateEnum.New:
+ UIControl.SetText(this, "New Session - " + System.Windows.Forms.Application.ProductName);
+ break;
+ case FileSessionManager.SessionStateEnum.Open:
+ UIControl.SetText(this, Path.GetFileNameWithoutExtension(filename) + " - " + System.Windows.Forms.Application.ProductName);
+ break;
+ case FileSessionManager.SessionStateEnum.Close:
+ UIControl.SetText(this, System.Windows.Forms.Application.ProductName);
+ break;
+ default:
+ break;
+ }
+ });
+ }
+
+ #endregion
+
+ #region Tile Container
+
+ ///
+ /// Add Tile
+ ///
+ ///
+ ///
+ private void addGroupToolStripMenuItem1_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripMenuItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ var form = new EditTileForm();
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ var result = form.Result;
+ var newCoord = container.GetNextCoord();
+
+ var newTile = new RokettoLaunch.Windows.Forms.TilePanel();
+ newTile.LoadInfo(result);
+
+ container.Add(newTile, newCoord.X, newCoord.Y);
+
+ _fileSessionManager.HasChanged = true;
+ };
+ }
+
+ ///
+ /// Add Tile Group
+ ///
+ ///
+ ///
+ private void toolStripMenuItem4_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripMenuItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ var form = new EditTileFolderForm();
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ var result = form.Result;
+ var newCoord = container.GetNextCoord();
+
+ var newTile = new RokettoLaunch.Windows.Forms.TilePanel();
+ newTile.LoadInfo(result);
+
+ container.Add(newTile, newCoord.X, newCoord.Y);
+
+ _fileSessionManager.HasChanged = true;
+ };
+ }
+
+ ///
+ /// Edit
+ ///
+ ///
+ ///
+ private void editToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripMenuItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ var model = UIControl.GetTag(container);
+
+ var form = new EditGroupForm(model);
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ var result = form.Result;
+
+ container.Title = result.Title;
+ container.Tag = result;
+
+ container.Invalidate();
+
+ _fileSessionManager.HasChanged = true;
+ };
+ }
+
+ ///
+ /// Duplicate
+ ///
+ ///
+ ///
+ private async void toolStripMenuItem5_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripMenuItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ var model = UIControl.GetTag(container);
+ model.IsExpanded = true;
+
+ await AddTileGroups(model);
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+
+ ///
+ /// Row - Add Row
+ ///
+ ///
+ ///
+ private void addRowToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripDropDownItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ container.AddRow();
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+ ///
+ /// Row - Remove Row
+ ///
+ ///
+ ///
+ private void removeRowToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripDropDownItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ container.RemoveRow();
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+ ///
+ /// Move Top
+ ///
+ ///
+ ///
+ private void topToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripDropDownItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ UIControl.MoveTop(flowLayoutPanel1, container);
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+ ///
+ /// Move Up
+ ///
+ ///
+ ///
+ private void upToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripDropDownItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ UIControl.MoveUp(flowLayoutPanel1, container);
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+ ///
+ /// Move Down
+ ///
+ ///
+ ///
+ private void downToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripDropDownItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ UIControl.MoveDown(flowLayoutPanel1, container);
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+ ///
+ /// Move Bottom
+ ///
+ ///
+ ///
+ private void bottomToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripDropDownItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ UIControl.MoveBottom(flowLayoutPanel1, container);
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+ ///
+ /// Remove
+ ///
+ ///
+ ///
+ private void removeToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var container = UIControl.GetOwner((ToolStripMenuItem)sender);
+ if (container == null)
+ {
+ return;
+ }
+
+ flowLayoutPanel1.Controls.Remove(container);
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+ #endregion
+
+
+ private async Task AddNewTileGroup()
+ {
+ var group = new TileGroupModel();
+ group.Title = "New Group";
+ group.IsExpanded = true;
+ group.GridSize = new System.Drawing.Size(this.CurrentSession.TilesPerRow, 1);
+
+ await AddTileGroups(group);
+
+ _fileSessionManager.HasChanged = true;
+ }
+
+ private async Task AddTileGroups(TileGroupModel model)
+ {
+ await Task.Run(() =>
+ {
+ var panel = new RyzStudio.Windows.TileForms.TileContainer();
+ panel.Title = model.Title;
+ panel.IsOpen = model.IsExpanded;
+ panel.TitleContextMenuStrip = tileContainerMenu1;
+ panel.AutoSizeHeight = true;
+ panel.Tag = model;
+
+ panel.AutoSize(model.GridSize.Width, model.GridSize.Height);
+
+ UIControl.Add(flowLayoutPanel1, panel);
+
+ // Load tiles
+ foreach (var item2 in model.Items ?? new List())
+ {
+ var tile = new RokettoLaunch.Windows.Forms.TilePanel();
+ tile.LoadInfo(item2);
+
+ panel.Add(tile, item2.Position.X, item2.Position.Y);
+ }
+ });
+ }
+
+ private void AutoResize()
+ {
+ if (flowLayoutPanel1.Controls.Count <= 0)
+ {
+ return;
+ }
+
+ var width = 0;
+ foreach (var item in flowLayoutPanel1.Controls.OfType())
+ {
+ width = Math.Max(width, item.Width);
+ }
+
+ UIControl.SetClientWidth(this, width + panel1.Padding.Horizontal + this.Padding.Horizontal + SystemInformation.VerticalScrollBarWidth);
+ }
+
+ private async Task LoadTileGroups(List groupList)
+ {
+ UIControl.Clear(flowLayoutPanel1);
+
+ foreach (var item in groupList ?? new List())
+ {
+ await AddTileGroups(item);
+ }
}
}
diff --git a/MainForm.resx b/MainForm.resx
index 04386e6..233c278 100644
--- a/MainForm.resx
+++ b/MainForm.resx
@@ -1,4 +1,64 @@
-
+
+
+
@@ -74,597 +134,600 @@
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGxc
- VU5rW1Tna1tU22paU5BsXVVCgEBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAaltTZWtbVPxrW1T/a1tU/2tbVP9rW1T/a1tU7mtbU6VrXFNWbVtbDgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABqWlR/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU+Wta
- VLprW1Nrb15VHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAVVVVA2tbVJhrW1T/a1tU/2tbVP+NgXz/2NPR/6+mov+Bc23/a1tU/2tb
- VP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVc1sXFSAa1xSMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtSUkHa1xUqmtbVP9rW1T/a1tU/5iNiP/6+fn/////////
- ////////6+no/7+4tf+Sh4L/bV5X/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVOFrXFOZallTTW1J
- SQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlaWhFqW1TCa1tU/2tbVP9rW1T/o5mV//38
- /P//////////////////////////////////////9PPy/8jDwP+cko3/c2Nd/2tbVP9rW1T/a1tU/2tb
- VP9rW1T/a1tU/2tbVPVrW1SzalxUXmlaWhEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAalhYHWtbVNRrW1T/a1tU/2tb
- VP+1rar/////////////////////////////////////////////////////////////////+vn5/9LN
- y/+lm5f/eGpj/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVPtrWlS9bFxVb2xdVSEAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrWVMra1tU42tb
- VP9rW1T/bV1W/8S9u///////////////////////////////////////////////////////////////
- /////////////////////////v7+/97a2f+xqKT/g3Zw/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tb
- VP5qW1V4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpZ
- VTxrW1Tua1tU/2tbVP9wYVr/0czK////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////+ro5/+8tbL/j4N+/21d
- Vv9rW1T/a1tU/2tbVP9rW1TpAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAbFxTUGtbVPZrW1T/a1tU/3VnYP/d2df/////////////////////////////////////////
+ AAD///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kqyjn1BtXVbuc2Rex5uOiWP///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////KpaMh2Z6a2TYa1tU/2xcVftzZFzKkISAbvn5+Sz///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////KpaJhGhrW1T9d2hh/722s/x5amT1b19Z73Nk
+ XcWLfnh57+npL////yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KqKalFhrW1T/cGBZ////
+ ///8/Pz/yMPA/n5xa/RwYFrvc2NdyIZ5c4fZ1dU2////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KrWu
+ qkhrW1T/a1tU//n5+P////////////7+/v/Szcv/jIF78nRmX+l1Z2C9joF8dc/Kxjr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////KtXRzDdrW1T/a1tU/+7s6////////////////////////////93Z1/+Th4Lzd2li6nhq
+ Y7SShoJuwr66P////yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kvn5+StrXFX8a1tU/+Pf3v//////////////////////////////
+ ////////5uPi/5KFgPdzY1zwhHdyif///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yptXVfxa1tU/8vFw///////////////
+ /////////////////////////////8jDwP9rW1T/cWFb1f///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kvn5+SttW1X5a1tU/2xc
+ Vf+aj4r/6+jo/////////////////////////////////87Jx/9rW1T/b2Ba3v///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KpKG
+ gm5rW1T/a1tU/2tbVP9rW1T/cGFa/7avq//7+vr//////////////////////9TPzf9rW1T/bl5Y5v//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q2dnUNW5fV+drW1T/o5mV/7Oppv9uX1j/a1tU/2tbVP+Bc23/2dXT/////////////////9rW
+ 1P9rW1T/bV1W7v///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qd2ljsmtbVP92Z2H/8/Hx///////49/f/l4yH/2xbVf9rW1T/bFxV/6ad
+ mP/5+Pj//////9/c2v9rW1T/bFxV9v///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yqFeHKGa1tU/2tbVP/Nx8X//////////////////////9vX
+ 1f92Z2D/a1tU/2tbVP+CdW//4d7c/+Xi4f9rW1T/a1tU/fn5+Sv///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////KpCEgG5rW1T8a1tU/6yjn///////////////
+ ///////////////////+/v7/oJaR/2tcVP9rW1T/bl5X/6mgnP9rW1T/a1tU/+bg4DL///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8ql4uGZWxbVflrW1T/lYmE//z8
+ /P///////////////////////////////////////////9jT0v9xYlz/a1tU/2tbVP9rW1T/a1tU/8/K
+ xjr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yqTh4JqbFxU+Gtb
+ VP+Lfnn/+Pf3///////////////////////////////////////////////////////4+Pj/iHx2/2tb
+ VP9rW1T/a1tU/6yiok3///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KoR3
+ colrW1T8a1tU/42BfP/29fT/////////////////////////////////////////////////////////
+ /////////////6CXkv9rW1T/a1tU/29gWt3AuLRB////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yrLx8c7dmhhtmtbVP9rW1T/lImE//n4+P//////////////////////////////////////////////
+ ///////////////////////////////////CvLn/cWJa/2tbVP9vX1njvrezQ////yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///ypzZFzKdWZfu25fWOhxYlvSdWZfvnts
+ ZaaAcm2ThXhxiHlpYrFtXVbua1tU/2tbVP+tpKD//fz8////////////////////////////////////
+ ////////////////////////////////////////////////////////4d7d/3ZnYf9rW1T/bl5Y47y0
+ sET///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///ypuXljma1tU/2tb
+ VP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/e2xm/9LNy///////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+Th
+ 3/93aGH/a1tU/25eWOPCvro/////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yqCdG+Ra1tU/7SsqP/Bu7j/tKyo/6Salv+Wi4b/f3Jr/2tbVP9sXFX/9PPy////////////////////
////////////////////////////////////////////////////////////////////////////////
- //////////////Tz8v/Iw8D/dmdh/2tbVP9rW1T/blpTJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABsXFRha1tU+2tbVP9rW1T/emxl/+Th4P//////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////m5CL/2tbVP9rW1T/a1tTXwAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGtaVHdrW1T/a1tU/2tbVP+DdnD/7uzs/////////////Pvw//z6
- 7v/8+u7//Pru//z67v/8+u7//Pru//z67v/9/PT///////////////////////z4+f/79fX/+/X1//v1
- 9f/79fX/+/X1//v19f/79fX//Pb2////////////////////////////vLWy/2tbVP9rW1T/a1xTmQAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVUDa1tUmGtbVP9rW1T/a1tU/4t/ev/08/L/////////
- ///cyT7/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/6Nt+////////////4bG1/8Rl
- bP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/9KKkP//////////////////////3tvZ/2tb
- VP9rW1T/a1tU1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1JSQdrW1Sra1tU/2tbVP9rW1T/mY6J//r5
- +f////////////389f/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/28Y1////
- ////////0IWL/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/9+fn/////////
- /////////Pz8/3BhWv9rW1T/a1tU/nFVVRIAAAAAAAAAAAAAAAAAAAAAaVpaEWtcVMNrW1T/a1tU/2tb
- VP+kmpb//fz8//////////////////389P/RtwD/0bcA/+TVbP/w56r/8Oeq//Dnqv/w56r/8Oeq/93K
- Qv/RtwD/28Y1////////////0IWL/8RlbP/TjZL/68zO/+vMzv/rzM7/68zO/+vMzv/dpqr/xGVs/8Rl
- bP/8+Pn//////////////////////46CfP9rW1T/a1tU/2xbVEkAAAAAAAAAAAAAAABsWFgaa1xU0Wtb
- VP9rW1T/a1tU/7CopP////////////////////////////389P/RtwD/0bcA/+7lov//////////////
- /////////////+PTY//RtwD/28Y1////////////0IWL/8RlbP/boaX/////////////////////////
- ///px8n/xGVs/8RlbP/8+Pn//////////////////////7CopP9rW1T/a1tU/2tbVIMAAAAAAAAAAAAA
- AABqXFTOa1tU/2tbVP9tXlf/xr+9//////////////////////////////////389P/RtwD/0bcA/+7l
- ov///////////////////////////+PTY//RtwD/28Y1////////////0IWL/8RlbP/boaX/////////
- ///////////////////px8n/xGVs/8RlbP/8+Pn//////////////////////9LNy/9rW1T/a1tU/2tb
- VL8AAAAAAAAAAAAAAABrW1Tva1tU/2tbVP/KxML///////////////////////////////////////38
- 9P/RtwD/0bcA/+7lov///////////////////////////+PTY//RtwD/28Y1////////////0IWL/8Rl
- bP/boaX////////////////////////////px8n/xGVs/8RlbP/8+Pn///////////////////////Py
- 8v9sXFX/a1tU/2tbVPRmZmYFAAAAAAAAAABrW1W4a1tU/2tbVP/Oycf/////////////////////////
- //////////////389P/RtwD/0bcA/+7lov///////////////////////////+PTY//RtwD/28Y1////
- ////////0IWL/8RlbP/boaX////////////////////////////px8n/xGVs/8RlbP/8+Pn/////////
- //////////////////+CdG7/a1tU/2tbVP9sXVM0AAAAAAAAAABqWlR/a1tU/2tbVP+tpKD/////////
- //////////////////////////////389P/RtwD/0bcA/+7lov///////////////////////////+PT
- Y//RtwD/28Y1////////////0IWL/8RlbP/boaX////////////////////////////px8n/xGVs/8Rl
- bP/8+Pn///////////////////////////+jmZX/a1tU/2tbVP9rWlNuAAAAAAAAAABtWlNEa1tU/2tb
- VP+Lfnn///////////////////////////////////////389P/RtwD/0bcA/93JQf/j1Gb/49Rm/+PU
- Zv/j1Gb/49Rm/9jCJ//RtwD/28Y1////////////0IWL/8RlbP/NfYL/3KOn/9yjp//co6f/3KOn/9yj
- p//TjJH/xGVs/8RlbP/8+Pn////////////////////////////Fv7z/a1tU/2tbVP9qW1OoAAAAAAAA
- AABqVVUMa1tU+2tbVP9uXlf/+fn4//////////////////////////////////389P/RtwD/0bcA/9G3
- AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/28c5////////////0IWL/8RlbP/EZWz/xGVs/8Rl
- bP/EZWz/xGVs/8RlbP/EZWz/xGVs/8Rmbf/9+vr////////////////////////////n5eT/a1tU/2tb
- VP9rW1TkAAAAAAAAAAAAAAAAa1tUz2tbVP9rW1T/3NjW//////////////////////////////////38
- 9v/axTP/2sUz/9rFM//axTP/2sUz/9rFM//axTP/2sUz/9rFM//bxzj/8Ois////////////2p2i/9CE
- if/QhIn/0ISJ/9CEif/QhIn/0ISJ/9CEif/QhIn/0ISJ/+GwtP//////////////////////////////
- ///+/v7/dWdg/2tbVP9rW1T/alhYHQAAAAAAAAAAa1tUlGtbVP9rW1T/ubKv////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////l4uG/2tbVP9rW1T/a1pUWAAAAAAAAAAAbFtVWmtbVP9rW1T/mI2I////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////uLGt/2tbVP9rW1T/a1tUkgAAAAAAAAAAa1pSH2tb
- VP9rW1T/dmdh//7+/v////////////////////////////////+rnPH/fGTp/3xk6f98ZOn/fGTp/3xk
- 6f98ZOn/fGTp/3xk6f9/aOr/ysD2////////////rOH9/zi4+v8ztvr/M7b6/zO2+v8ztvr/M7b6/zO2
- +v8ztvr/M7b6/33R/P//////////////////////////////////////2tbV/2tbVP9rW1T/a1tVzQAA
- AAAAAAAAAAAAAGtbVONrW1T/a1tU/+jm5f////////////////////////////r5/v9cPuT/Wz3k/1s9
- 5P9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/gGjq////////////Obj6/wCk+f8ApPn/AKT5/wCk
- +f8ApPn/AKT5/wCk+f8ApPn/AKT5/wGk+f/3/P//////////////////////////////////+vn5/25f
- WP9rW1T/a1tU/GpVVQwAAAAAAAAAAGtcVKprW1T/a1tU/8bAvf////////////////////////////j3
- /v9bPeT/Wz3k/4Vu6/+di+//nYvv/52L7/+di+//nYvv/3Rb6P9bPeT/fWXq////////////Nbf6/wCk
- +f8nsvr/Zsj7/2bI+/9myPv/Zsj7/2bI+/9Bu/v/AKT5/wCk+f/0+///////////////////////////
- /////////////4p9eP9rW1T/a1tU/2xdVUIAAAAAAAAAAGtbVHBrW1T/a1tU/6Sblv//////////////
- //////////////j3/v9bPeT/Wz3k/8O49f///////////////////////////5uI7v9bPeT/fWXq////
- ////////Nbf6/wCk+f9jx/v///////////////////////////+i3v3/AKT5/wCk+f/0+///////////
- /////////////////////////////6yjn/9rW1T/a1tU/2pcVH0AAAAAAAAAAGxdUzRrW1T/a1tU/4J0
- bv////////////////////////////j3/v9bPeT/Wz3k/8O49f///////////////////////////5uI
- 7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v///////////////////////////+i3v3/AKT5/wCk
- +f/0+////////////////////////////////////////87Jx/9rW1T/a1tU/2tbVbgAAAAAAAAAAGZm
- ZgVrW1T0a1tU/2xcVf/z8vL///////////////////////j3/v9bPeT/Wz3k/8O49f//////////////
- /////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v/////////////////////////
- //+i3v3/AKT5/wCk+f/0+////////////////////////////////////////8rEwv9rW1T/a1tU/2tb
- VO8AAAAAAAAAAAAAAABrW1S/a1tU/2tbVP/Szcv///////////////////////j3/v9bPeT/Wz3k/8O4
- 9f///////////////////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v/////////
- //////////////////+i3v3/AKT5/wCk+f/0+///////////////////////////////////xr+9/21e
- V/9rW1T/a1tU/2pcVM4AAAAAAAAAAAAAAABrWlSFa1tU/2tbVP+xqaX///////////////////////j3
- /v9bPeT/Wz3k/8O49f///////////////////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk
- +f9jx/v///////////////////////////+i3v3/AKT5/wCk+f/0+///////////////////////////
- //+6sq//bFxV/2tbVP9rW1T/a1tT1m9eVR4AAAAAAAAAAAAAAABpXFVLa1tU/2tbVP+Pg37/////////
- //////////////j3/v9bPeT/Wz3k/6CP7//Ivvb/yL72/8i+9v/Ivvb/yL72/4Vv6/9bPeT/fWXq////
- ////////Nbf6/wCk+f9CvPv/quH9/6rh/f+q4f3/quH9/6rh/f9sy/z/AKT5/wCk+f/0+///////////
- /////////f39/6ifmv9rW1T/a1tU/2tbVP9rW1TIZllZFAAAAAAAAAAAAAAAAAAAAABpWloRa1tU/Wtb
- VP9wYVr//Pv7//////////////////j3/v9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s9
- 5P9bPeT/fWXq////////////Nbf6/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk
- +f/1+//////////////7+vr/nZKO/2tbVP9rW1T/a1tU/2tcVbJmZk0KAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAa1tT1mtbVP9rW1T/4Nzb//////////////////j3/v9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s9
- 5P9bPeT/Wz3k/1s95P9bPeT/rJ3x////////////Nbf6/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk
- +f8ApPn/AKT5/z66+v////////////b19P+Pg37/a1tU/2tbVP9rW1T/a1tTn4BAQAQAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAa1pUm2tbVP9rW1T/vbaz//////////////////7+///08v3/9PL9//Ty
- /f/08v3/9PL9//Ty/f/08v3/9PL9//Ty/f/49/7/////////////////8vr//+75///u+f//7vn//+75
- ///u+f//7vn//+75///u+f//8Pr/////////////8O/u/4Z5dP9rW1T/a1tU/2tbVP9rXFSIAAAAAQAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbFxUYWtbVP9rW1T/nJGM////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////n5eT/fG5o/2tbVP9rW1T/a1tU/Gta
- VWkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAblpTJWtbVP9rW1T/dmdh/8jD
- wP/08/L/////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////93Z1/91Z2D/a1tU/2tb
- VP9rW1T2bFxTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWtb
- VOlrW1T/a1tU/2tbVP9tXVb/j4N+/7y1sv/q6Of/////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////0czK/3Bh
- Wv9rW1T/a1tU/2tbVO5qWVU8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAGpbVXhrW1T+a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/g3Zw/7GopP/e2tn//v7+////
- ////////////////////////////////////////////////////////////////////////////////
- ///Evbv/bV1W/2tbVP9rW1T/a1tU42tZUysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsXVUhbFxVb2taVL1rW1T7a1tU/2tbVP9rW1T/a1tU/2tb
- VP9rW1T/eGpj/6Wbl//Szcv/+vn5////////////////////////////////////////////////////
- /////////////7Wtqv9rW1T/a1tU/2tbVP9rW1TUalhYHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpWloRbFpUVWtb
- U6JrW1Twa1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/cGFa/5KHgv+/uLX/8O/u////////////////////
- ///////////////////9/f3/p56a/2tbVP9rW1T/a1tU/2pbVcdmWVkUAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABVVVUDallVPGtbVJFrW1Pia1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/bFxV/4l8
- dv+1ran/4d7d//////////////////v6+v+cko3/a1tU/2tbVP9rW1T/a1tUsXFVVQkAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa1xSMmxcVIBrW1XNa1tU/2tb
- VP9rW1T/a1tU/2tbVP9rW1T/a1tU/4Fzbf+vpqL/2NPR/42BfP9rW1T/a1tU/2tbVP9rW1SYVVVVAwAA
+ ///////////////////k4eD/d2hh/2tbVP9wYlvW2dnUNf///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yrMxMQ8bFxU+JySjfX/////////////////////7Orq/2xcVf9rW1T/sqmm////
+ ////////////////////////////////////////////////////////+Ozt/+W7vv/jt7r/47e6/+O3
+ uv/jt7r/6MLF//z39///////////////////////39za/3FhW/9rW1T/dGVfxO7u7i7///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8qeWpjr2xdVvzx8O///////////////////////5mO
+ iv9rW1T/c2Nd///////////////////////////////////////////////////////9+vr/yXF4/8Rl
+ bP/EZWz/xGVs/8RlbP/EZWz/xGVs/9WSl////////////////////////////9PPzf9tXlf/a1tU/31v
+ aJ////8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qp56YVGtbVP+0q6j6////////
+ /////////////+Dc2/9sXFX/a1tU/7Oqp///////////////////////////////////////////////
+ ///25uf/xGVs/+/V1///////////////////////4bG1/8hwdv//////////////////////////////
+ //+/uLX/a1tU/2tbVP6QhIBu////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KnNj
+ XM92ZmD3/Pv7//////////////////////+flZD/a1tU/25fWP/39/f/////////////////////////
+ ///////////////////25uf/xGVs/+/U1v///////////+f2/v/M7f7/yKi1/8Rvdv/M7f7/zO3+/+35
+ ////////////////////////nZOO/2tbVP9sXFXztq+rRv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////KpCDfnNrW1T/ysTC/v/////////////////////u7Oz/cWFb/2tbVP+Wi4b/////////
+ ///////////////////////////////////25uf/xGVs/+/U1v//////s+T9/wOl+f8ApPn/Y4Sy/7Zq
+ dv8ApPn/AKT5/wuo+f/W8P7/////////////////9/f2/4J1b/9rW1T/c2Rcyvn5+Sz///8q////Kv//
+ /yr///8q////Kv///yr///8q////Ku7u7i5uXVfohXdy8v//////////////////////////ta2p/2tb
+ VP9rW1T/2dTT///////////////////////////////////////25uf/xGVs/+/U1v//////ZMj7/yWx
+ +v/M7f7/yKi1/8Rvdv/M7f7/zO3+/wem+f+K1fz//////////////////////+Dd2/9tXlf/a1tU/4Z5
+ c4f///8q////Kv///yr///8q////Kv///yr///8q////Kv///yqAc2ySa1tU/+Dc2///////////////
+ ////////+/r6/4V4cv9rW1T/cmNc//r6+v/////////////////////////////////25uf/xGVs/+/U
+ 1v//////Ysf7/y60+v//////4bG1/8hwdv///////////wmn+f+G1Pz/////////////////////////
+ //+yqqb/a1tU/2xcVfbAuLRB////Kv///yr///8q////Kv///yr///8q////Kv///yrIxL88bFxU+JyR
+ jfT//////////////////////////+Pf3v9uX1j/a1tU/4+Dfv//////////////////////////////
+ ///79PT/xWdu/8+DiP/UjpP/qn+S/5x6kv/UjpP/y3mA/79ugv+Hcev/h3Hr/wWi+P9HifH/h3Hr/6CP
+ 7//08v3////////////8+/v/gXNt/2tbVP94aWKz////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qeGhjsGxdVvzx8O////////////////////////////+3r6z/a1tU/2tbVP+zq6f/////////
+ ////////////////////////6sfK/9WRlv/UjpP/qn+S/5x6kv/UjpP/wX2Y/3ZJyv+Hcev/h3Hr/wWi
+ +P9HifH/h3Hr/2FF5f+ypPL/////////////////08/N/2tbVP9rW1T+oJiSWf///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qpZyZVWtbVP9+cGr9kYWA/5WKhf+cko3/pJuW/6mgnP+upqL/cWFb/2tb
+ VP9rW1T/ycTB////////////////////////////////////////////Ysf7/y60+v//////rJ3x/2dL
+ 5v///////////wmn+f+G1Pz//////3NZ6P+gju///////////////////////5WJhP9rW1T/c2Rdxf//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////KnJjXcxrW1T/a1tU/2tbVP9rW1T/a1tU/2tb
+ VP9rW1T/a1tU/2tbVP9rW1T/bl5X/+fk4///////////////////////////////////////cMz8/xas
+ +v93zvz/UKD1/zB68P93zvz/d878/wSl+f+U2fz//////3NZ6P+gju///////////////////////+He
+ 3P9sXFX/a1tU/6CVj1v///8q////Kv///yr///8q////Kv///yr///8q////KsK+uj+KfXd8hHdyiYJ0
+ b5F+cWqce2xlpnlqZK12aGG4dGVew3NkXM9sXFX4a1tU/3hqY//j397/////////////////////////
+ ////////1fD+/zO2+v8Rqvn/C6P4/wee9/8Rqvn/Ear5/0G7+//r+P///////3NZ6P+gju//////////
+ //////////////////+YjYj/a1tU/3VmYMD///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yq2r6tGbl9Y5WtbVP9zZF3/2tbU////
+ ////////////////////////////////////////rJ3x/2dL5v///////////////////////////3NZ
+ 6P+gju/////////////////////////////d2df/a1tU/2tbVP21rqpI////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qwLi0QW9g
+ WdxrW1T/cGBZ/8W/vP//////////////////////////////////////rJ3x/2dL5v//////////////
+ /////////////3NZ6P+gju//////////////////////////////////h3t1/2tbVP98bmig////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////KtLJyTlxYlzQa1tU/2tbVP+hl5L/+fj4////////////////////////////zcT3/1s9
+ 5P9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s95P/Ct/X/////////////////////////////////xL27/2tb
+ VP9uXVfr9O7uLf///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yrl5eUxeWxmqGtbVP9rW1T/gnRu/9vX1f//////////////
+ /////////////9TM+P+ypPL/sqTy/7Kk8v+ypPL/sqTy/8/H9//+/f//////////////////////////
+ ////////9vX0/3BgWf9rW1T/l4uGZf///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Ko2Ce3RsXVX1a1tU/2xc
+ Vf+km5b/9fPz////////////////////////////////////////////////////////////////////
+ /////////////////////////////5mOiv9rW1T/fGxmpf///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yq6s69GdGVfwmtbVP9rW1T/cmNc/7CopP/39vb/////////////////////////////////////////
+ /////////////////////////////////////////////8K7uf9rW1T/cGFa2////yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Ko+CfXRuXlfqa1tU/2tbVP94aWP/uLGt//Py8v//////////////
+ /////////////////////////////////////////////////////////////+nn5v9rW1T/a1tU/sK+
+ uj////8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yrg4NsyhHZwjWxeVvBrW1T/a1tU/3Bh
+ Wv+lm5f/3drY//7+/v//////////////////////////////////////////////////////////////
+ //97bWf/a1tU/46BfHX///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KtXR
+ 0TeBdW+Obl9Y6GtbVP9rW1T/a1tU/39xa/+yqab/3tvZ//7+/v//////////////////////////////
+ //////////////////+glpH/a1tU/3xuZ6P///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q7u7uLo+CfXRzY13Ia1tU/WtbVP9rW1T/a1tU/3doYf+dko7/wLm2/+He
+ 3f/6+vr///////////////////////////+2r6v/a1tU/3VnYL////8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qwLy4QYR1cItyY13Oa1tU/Gtb
+ VP9rW1T/a1tU/2tbVP9sXFX/f3Fr/5WKhf+upaH/wbu4/8vFw/+rop7/a1tU/3BgWtr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qz8rGOo2Ce3R6bGWncGBZ2WtbVP1rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2xd
+ VfX///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////KuDg2zKpnZpTj4J9dIBxbJd2aGG4cWNbz29g
+ Wt5tXlbsbFtV+XRlX8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAb15VHmtbU2trWlS6a1tU+WtbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2pa
- VH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbVtbDmtcU1ZrW1Ola1tU7mtbVP9rW1T/a1tU/2tb
- VP9rW1T8altTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBABGxd
- VUJqWlOQa1tU22tbVOdsXFVOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//4H///+sEP//AD///6wQ//4AB///rBD/+AAA//+sEP/w
- AAAP/6wQ/+AAAAH/rBD/wAAAAD+sEP+AAAAAH6wQ/wAAAAAPrBD+AAAAAA+sEPwAAAAAD6wQ+AAAAAAP
- rBDgAAAAAA+sEMAAAAAAB6wQgAAAAAAHrBAAAAAAAAesEAAAAAAAB6wQAAAAAAADrBAAAAAAAAOsEAAA
- AAAAA6wQAAAAAAADrBAAAAAAAAOsEIAAAAAAAawQgAAAAAABrBCAAAAAAAGsEIAAAAAAAawQwAAAAAAA
- rBDAAAAAAACsEMAAAAAAAKwQwAAAAAAArBDAAAAAAACsEOAAAAAAAKwQ4AAAAAAArBDgAAAAAAGsEOAA
- AAAAA6wQ8AAAAAAHrBDwAAAAAA+sEPAAAAAAP6wQ8AAAAAB/rBDwAAAAAP+sEPgAAAAB/6wQ/AAAAAP/
- rBD/gAAAB/+sEP/wAAAP/6wQ//8AAB//rBD//+AAf/+sEP///AD//6wQ////gf//rBAoAAAAIAAAAEAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////yBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA
+ AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA
+ 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA
+ AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA
+ 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA
+ AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA
+ 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIE////////8gQoAAAAIAAAAEAA
AAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABsXFRha1tU7GtbVcFqW1RzalxVJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAbFtVe2tbVP5rW1T/a1tU/2tbVP9rW1T/a1tT1mtcVIhrWVU5gICAAgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kry0sERvX1nse21npravq0b///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8qp56YVHJiXPeUiITzdWdg7X1vaaGuqKRM////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yq5sbFFa1tU/8/Kx//5+Pj/wbq484N1
+ cOSAc22pubGxRf///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KtnZ1DVrW1T/w726////
+ /////////v7+/9HLyfePhH7fin13oc/Kxjr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Km1c
+ Vvu4sK3////////////////////////////DvLr8cGJa87avq0b///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr09PQtbV1X/HdoYv+6sq//+vr6/////////////////97a2f9rW1T/n5aRWv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kol6dn9rW1T/fG9p/2tcVf99cGj/087M////////////5OHf/2tbVP+bjolj////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yqto6BObl5X9pyRjP7/////ysTC/3NkXv5rW1T/m5GM//Py8v/q5+b/a1tU/5SI
+ g2v///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qw7u7QHBgWumAcWv89PPy/////////////f39/56Tj/9tXVb/d2dh/8S+
+ u/9rW1T/j4J9dP///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////KsjEvzxyY1zZdWdg/Ovo6P///////////////////////////9vW
+ 1v9zZF3+a1tU/2tbVP+KfXd8////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yqto6BOcWFZ53RlX/zg3Nv/////////////////////////
+ //////////////r5+f+HenX/a1tU/3FjXM/v6ekv////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qta6qSKWcllXAvLhB7u7uLv///yr5+fkri4F6eW5fV/V+cWv86ufm////////////////////
+ //////////////////////////////////+vpqL/bF1W/nZnYcPl5eUx////Kv///yr///8q////Kv//
+ /yr///8q////Kv///ypvX1nsc2Nc92tbVP9rW1T+cGBZ8G5eWPprW1T/l4yH/fTz8v//////////////
+ ///////////////////////////////////////////////////Pysj/bV5X/XVlX8fl5eUx////Kv//
+ /yr///8q////Kv///yr///8q////KnprZamWi4Xxz8rH/8C5tv+yqab/dmdh/3lpZP//////////////
+ ///////////////////////////////////////////////////////////////////Szcv/bV1W/Xdo
+ Yrv09PQt////Kv///yr///8q////Kv///yr///8qsKaiTXFiW/L6+vr///////////+1rar/bFxV/97a
+ 2f/////////////////////////////////z4OL/y3d9/8hvdv/Ib3b/yG92/9qfo///////////////
+ ///KxMH/bFxV/3xvaZ7///8q////Kv///yr///8q////Kv///yr///8qdGZgxcS+u/L///////////Lw
+ 8P9xYVv/f3Fr/////////////////////////////////+W7vv/hsLP//////////////v7/x21z////
+ //////////////////+0rKj/a1tU/pSKhmn///8q////Kv///yr///8q////Kv///yqWjIdmfG5p7P//
+ /////////////7uzsP9sXFX/wbu4////////////////////////////5bu+/+Gws///////WcT7/yOv
+ +f+8aXP/IrD6/zu5+v/q+P////////7+/v+QhH/9bl9X8r63s0P///8q////Kv///yr///8q////Kvn5
+ +StyYlvg2NTS+v///////////Pv7/4FzbP9wYVr/8/Lx///////////////////////lu77/4bCz/+z4
+ //8crvr/3fL9/8Vsc//d8/7/UMH7/7Dj/f///////////+/u7f91Zl/8dGVfzPn5+Sv///8q////Kv//
+ /yr///8q////Koh7dYGNgXzn////////////////4d7d/21eV/+CdW7//////////////////////+nG
+ yf/RiI3/16qx/3iIr//frLD/xXB8/6iY8f89oPb/c5vz/7Ch8v/39v7//////8/KyP9rW1T/kIN+c///
+ /yr///8q////Kv///yr///8q4ODbMm9gWfHMxsT/2NTS/+He3f/n5OP/qaCc/2tbVP+dk47/////////
+ /////////vv8/+vKzf/bvcT/YZHB/+bAxP92TdH/vbH0/0Sp9/+CrPX/hnDr/8W79f///////////4+D
+ ff1xYlvm6uTkMP///yr///8q////Kv///yr///8qf3Fql2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tc
+ Vf+/uLX///////////////////////P7//8Vq/n/h9T8/zVz7v+I1fz/MbX6/7vn/f+ikfD/v7T1////
+ ////////4N3b/2xcVf+Ed3KJ////Kv///yr///8q////Kv///yr5+fksubGxRaifm1KgmJJZm46JY5KG
+ gm6NgXx3cmJc02xcVf7Bu7j//////////////////////7Lk/f+H1Pz/NXPu/4jV/P+a2/3/+/7//6KR
+ 8P+/tPX/////////////////nZKO/nBhWe307u4t////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr07u4teGpkrmtbVP+tpKD//Pz8//////////////////7+//9jRuX/3tj6/97Y
+ +v/e2Pr/lIDt/8G19f/////////////////c2Nb/a1tU/5KGgm7///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr5+fkrgHNskmxcVf2JfHb86Obl/////////////////6uc
+ 8f+Hcev/h3Hr/4dx6/+Oeuz/7uv8//////////////////////+CdG78dmZgxf///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qnJGMX3BhWutuXlj9tKuo//j3
+ 9////////////////////////////////////////////////////////////7y0sf9sXFX90snJOf//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q2dnUNXxt
+ Z6FrXFX8dWdg/LuzsP/08/L/////////////////////////////////////////////////5ePh/2tb
+ VP+QhIBu////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////KrOsqUp4amO1bFxV/W5eWP2elI/+2NTS//7+/v//////////////////////////////
+ ///+/v7/d2hi/HtsZab///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yrAuLRBgHNsknFiWuhrW1T/eGlj/KCWkf/GwL3/7Orp////
+ //////////////////+YjYj/dGVez////yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q+fn5LJuOiWN7bWekcmNc3mtb
+ VP9rW1T/cWJb/Il7dvyglpL/r6ai/4p9eP9wYVnt////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qycDAPY+EgHCAcm2UdmhhtXJkXdlxYlrrbV5X93BgWeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAVVVVA2xbVJVrW1T/bV5X/8K7uf/RzMr/pJqW/3hpY/9rW1T/a1tU/2tb
- VP9rW1TpalxTnGxcVU5mZk0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1JSQdrW1Spa1tU/29fWf/Oycf//////////////////v7+/+He
- 3f+1ran/iXx2/2tbVP9rW1T/a1tU/2tbVPZqW1W7bFxVb2xYWBoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYFAQbFxUwGtbVP91ZmD+3trZ////////////////////
- ////////////////////////6efm/7y0sf+Ogn3/bV1W/2tbVP9rW1T/a1tU/WtbVMZrWlR3ZlVVDwAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaF5VG2tbVNJrW1T/fW9p/+fl5P//////////////
- ///////////////////////////////////////////////////z8vL/x8G//5uQi/9xYlv/a1tU/2tb
- VP9rW1SPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpdVylrW1Tha1tU/4V4cv/w7u7/////////
- //////////////////////////////////////////////////////////////////////////////r6
- +v/Evbv/a1tU/2xbVMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrXVM3a1tU62tbVP+MgHr/9PPy////
- ////////////////////////////////////////////////////////////////////////////////
- //////////////v6+v9vX1n/a1tU+2pVVQwAAAAAAAAAAAAAAAAAAAAAallTTWtbVPVrW1T/mY6K//r5
- +f///v3/1r8d/9G3AP/RtwD/0bcA/9G3AP/RtwD/07oL//r34//57u//x2xy/8RlbP/EZWz/xGVs/8Rl
- bP/EZWz/y3d9///+/v///////////4yAev9rW1T/alpSQQAAAAAAAAAAAAAAAGpaVWBrW1T7a1tU/6mg
- nP/+/v7///////799//RtwD/2cMr/+PUZv/j1Gb/49Rm/9zIPP/RtwD/9vHM//Pg4v/EZWz/0omP/9yj
- p//co6f/3KOn/85/hf/EZWz//fr6////////////rqai/2tbVP9sW1V7AAAAAAAAAABrW1R5a1tU/2xc
- Vf+4sa3//////////////////v33/9G3AP/k1Wz/////////////////7OGW/9G3AP/28cz/8+Di/8Rl
- bP/nwML/////////////////3aaq/8RlbP/9+vr////////////RzMn/a1tU/2pbVLYAAAAAAAAAAGtb
- VO5rW1T/w726///////////////////////+/ff/0bcA/+TVbP/////////////////s4Zb/0bcA//bx
- zP/z4OL/xGVs/+fAwv/////////////////dpqr/xGVs//36+v////////////Lw8P9rW1T/a1tU74CA
- gAIAAAAAa1tUxWtbVP/Z1dP///////////////////////799//RtwD/5NVs/////////////////+zh
- lv/RtwD/9vHM//Pg4v/EZWz/58DC/////////////////92mqv/EZWz//fr6/////////////////4By
- bP9rW1T/aF1RLAAAAABqXFSLa1tU/7iwrf///////////////////////v33/9G3AP/dyUH/7eKZ/+3i
- mf/t4pn/4dBa/9G3AP/28cz/8+Di/8RlbP/Zm6D/58HE/+fBxP/nwcT/04yR/8RlbP/9+vr/////////
- ////////opeT/2tbVP9qW1NlAAAAAGtbVVFrW1T/louG///////////////////////+/ff/0bcA/9G3
- AP/RtwD/0bcA/9G3AP/RtwD/0bcB//n12//z4OL/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/x2xy//79
- /f/////////////////Dvbr/a1tU/2tbU58AAAAAaF1RFmtbVP90ZV///v7+///////////////////+
- /f/28cz/9vHM//bxzP/28cz/9vHM//bxzP/49dr///////35+f/z4OL/8+Di//Pg4v/z4OL/8+Di//Pg
- 4v/47e7//////////////////////+Xi4f9rW1T/altU2gAAAAAAAAAAa1xT3GtbVP/m4+L/////////
- /////////////+zp/P/e2Pr/3tj6/97Y+v/e2Pr/3tj6/+fj+////////////9ry/v/M7f7/zO3+/8zt
- /v/M7f7/zO3+/+L1/v///////////////////////v7+/3VmX/9rW1T+aF1RFgAAAABsWlSha1tU/8S+
- u//////////////////8/P//YkXl/1s95P9bPeT/Wz3k/1s95P9bPeT/XD7k/+jk+//b8v7/AaT5/wCk
- +f8ApPn/AKT5/wCk+f8ApPn/C6j5//v+////////////////////////lYmE/2tbVP9rWlRPAAAAAGpc
- VGdrW1T/o5mU//////////////////r5/v9bPeT/hW7r/72x9P+9sfT/vbH0/5WB7v9bPeT/3tj6/8zt
- /v8ApPn/WsT7/5nb/f+Z2/3/mdv9/0G7+/8ApPn/9/z///////////////////////+2r6v/a1tU/2pb
- VIkAAAAAaF1RLGtbVP+Acmz/////////////////+vn+/1s95P+gj+//////////////////u6/0/1s9
- 5P/e2Pr/zO3+/wCk+f+W2v3/////////////////bMv8/wCk+f/3/P///////////////////////9nV
- 0/9rW1T/a1tUxQAAAACAgIACa1tU72tbVP/y8PD////////////6+f7/Wz3k/6CP7///////////////
- //+7r/T/Wz3k/97Y+v/M7f7/AKT5/5ba/f////////////////9sy/z/AKT5//f8////////////////
- ////////w726/2tbVP9rW1TuAAAAAAAAAABqW1S2a1tU/9HMyf////////////r5/v9bPeT/oI/v////
- /////////////7uv9P9bPeT/3tj6/8zt/v8ApPn/ltr9/////////////////2zL/P8ApPn/9/z/////
- /////////////7ixrf9sXFX/a1tU/2tbVHkAAAAAAAAAAGpcVH1rW1T/r6ej////////////+vn+/1s9
- 5P93Xun/nYvv/52L7/+di+//gmvq/1s95P/e2Pr/zO3+/wCk+f88ufr/Zsj7/2bI+/9myPv/K7P6/wCk
- +f/3/P////////7+/v+upaH/a1tU/2tbVPxqXFRnAAAAAAAAAAAAAAAAa1tUQ2tbVP+NgXz/////////
- ///6+f7/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/YkXl/+3q/P/M7f7/AKT5/wCk+f8ApPn/AKT5/wCk
- +f8ApPn/Ha76//3+///7+vr/nZOO/2tbVP9rWlT4altVVAAAAAAAAAAAAAAAAAAAAAB0XV0La1tU+29f
- Wf/7+vr/////////////////////////////////////////////////////////////////////////
- ////////////////////////9vX0/5CEfv9rW1T/bFxU72pZVTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AABsW1TMa1tU/8S9u//6+vr/////////////////////////////////////////////////////////
- //////////////////////////////Du7v+FeHL/a1tU/2tbVOFqXVcpAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAGtbVI9rW1T/a1tU/3FiW/+bkIv/x8G///Py8v//////////////////////////////
- ///////////////////////////////////n5eT/fW9p/2tbVP9rW1TSaF5VGwAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAZlVVD2taVHdrW1TGa1tU/WtbVP9rW1T/bV1W/46Cff+8tLH/6efm////
- ////////////////////////////////////////3trZ/3ZnYf9rW1T/bFxUwHBgUBAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmWVkUalxUXmtcVKprW1Tya1tU/2tb
- VP9rW1T/f3Fr/6uinv/Y09H//fz8/////////////////9LNy/9xYVv/a1tU/2paVa9xVVUJAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZm
- TQpsXFVOalxTnGtbVOlrW1T/a1tU/2tbVP94aWP/pJqW/9HMyv/Cu7n/bV5X/2tbVP9sW1SVVVVVAwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAgICAAmtZVTlrXFSIa1tT1mtbVP9rW1T/a1tU/2tbVP9rW1T+bFtVewAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAalxVJGpbVHNrW1XBa1tU7Gxc
- VGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/g////wA///wAB//4A
- AD/8AAAH+AAAB/AAAAfgAAADwAAAA4AAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAGAAAAAgAAAAIAA
- AACAAAAAgAAAAMAAAADAAAABwAAAA8AAAAfgAAAP4AAAH+AAAD/8AAB//4AA///wA////wf/KAAAABgA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////KAAAABgA
AAAwAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAa1tTa2xcVfBsXFW1bFpVZmZcUhkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFrWlSFa1tU/4+Dfv+AcWv8a1tU/2tb
- VP5tXlbMa1xUemxbVS0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAVVVVA2xbVJprW1T/qqCc//7+/v//////6+no/7+4tf+RhoH9bF1W/mtbVP9tXlbia1xTmWpZ
- U02AVVUGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0XV0LbFxVtWxcVf+5sq//////////
- ////////////////////////8/Hx/8bAvf+Zjor/cGBa/WtbVP9tXVbxaltUo2heVRsAAAAAAAAAAAAA
- AAAAAAAAAAAAAGZZWRRtXFbKbV1W/sjCv///////////////////////////////////////////////
- ////////+vn5/9LNy/+mnJj/bV1W/WtbVIMAAAAAAAAAAAAAAAAAAAAAaFhYIG1eV9pvYFn808/N////
- ////////////////////////////////////////////////////////////////////////in55/W1d
- Vr4AAAAAAAAAAAAAAABoXVEsbV5X53NlXvzd2tj//v78/9S8EP/RtwD/0bcA/9G3AP/RtwD/8Oit/+zN
- 0P/EZWz/xGVs/8RlbP/EZWz/yG91//79/f//////raSg/2xcVfaAQEAEAAAAAGxcVEBtXVbzfG5n++jm
- 5f///////v35/9G3AP/v5qf/9vHM//bxzP/Ywij/7eKZ/+fBxP/NfYP/8+Di//Pg4v/rysz/xGVs//77
- /P//////z8rH/2tbVP9rXFIyAAAAAG1dVe2CdW/98O/u/////////////v35/9G3AP/38tH/////////
- ///axTL/7eKZ/+fBxP/Qg4n////////////04+T/xGVs//77/P//////8fDv/2tbVP9sW1RtAAAAAG5e
- Vs+ViYT+/////////////////v35/9G3AP/38tH////////////axTL/7eKZ/+fBxP/Qg4n/////////
- ///04+T/xGVs//77/P///////////31waftqW1OoAAAAAGxaU5NyY138/v7+/////////////v35/9G3
- AP/Zwyr/2sUz/9rFM//Tugr/7eOb/+fBxP/Ga3L/0ISJ/9CEif/OfoT/xGVs//78/P///////////6CW
- kv9tXlflAAAAAGpcU1lrW1T/5ePh//////////////79/+3imf/t4pn/7eKZ/+3imf/t4pr/+/nr//bm
- 5//nwcT/58HE/+fBxP/nwcT/7M3P/////////////////8K7uf9rW1T/alhYHW9eVR5rW1T/w726////
- /////////////8rA9v+9sfT/vbH0/72x9P++svT/8vD9/+v4//+a2/3/mdv9/5nb/f+Z2/3/rOH9////
- /////////////+Th4P9rW1T/bFtVVwAAAABtXlfnopeT/////////////Pv+/1s95P92Xej/fGTp/3xk
- 6f9hReX/v7P0/5vb/f8KqPn/M7b6/zO2+v8qs/r/AKT5//r9//////////////7+/v9yY1z8a1tUkQAA
- AABqW1OofXBp+///////////+/r+/1s95P/h3Pr///////////97Y+n/vbH0/5nb/f8ytvr/////////
- ///R7/7/AKT5//n9//////////////////+ViYT+bl5WzwAAAABsW1Rta1tU//Hw7///////+/r+/1s9
- 5P/h3Pr///////////97Y+n/vbH0/5nb/f8ytvr////////////R7/7/AKT5//n9//////////////Dv
- 7v+CdW/9bV1V7QAAAABsXVM0a1tU/9DLyf//////+/r+/1s95P/GvPb/3tj6/97Y+v91W+j/vbH0/5nb
- /f8osvr/zO3+/8zt/v+n4P3/AKT5//n9////////6+no/35wavxsXVX1altURgAAAACAQEAEbV1W9q6m
- ov//////+/r+/1s95P9bPeT/Wz3k/1s95P9bPeT/ysH2/5nb/f8ApPn/AKT5/wCk+f8ApPn/EKr5//z+
- ///g3dv/dmdh/G1dVuptWFMxAAAAAAAAAAAAAAAAbFxVv4x/ev3/////////////////////////////
- /////////////////////////////////////////////9jT0f9xYVv8bV5W32pcVSQAAAAAAAAAAAAA
- AAAAAAAAa1tUg21dVv2mnJj/0s3L//r5+f//////////////////////////////////////////////
- ////////yMK//21dVv5tXFbKZllZFAAAAAAAAAAAAAAAAAAAAAAAAAAAaF5VG2pbVKNsXFXwa1tU/3Bg
- Wv2Zjor+xsC9//Px8f////////////////////////////////+5sq//bFxV/2xcVbV0XV0LAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVUDallVPGtcVIhtXVbba1tU/2tbVP6Ie3X9ta2p/+He
- 3f///////v7+/66mov9rW1T/bFpUoWZmZgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAbFtVLWtcVHpsXVXLa1tU/mtbVP9/cWv7j4N+/2tbVP9rWlSFAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAZlxSGWxaVWZsXFW1bFxV8GtbU2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8H
- /0H8AP9B+AAPQfAAA0HgAANBwAADQYAAAUEAAAFBAAABQQAAAUEAAAFBAAAAQQAAAEGAAABBgAAAQYAA
- AEGAAABBgAABQcAAA0HAAAdBwAAPQfAAH0H/AD9B/+D/QSgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJhW3tvYFn0dWZgsmxbVVdmVVUPAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAAnFiW5eCdG705OHg/8a/vf+UiYT0cWFa+Xdo
- YcptXFVsb15VHgAAAAAAAAAAAAAAAAAAAAAAAAAAbUlJB3NkXbKMgHr09/b2//////////////////r5
- +f/Szcv/oJeS9XNlXfZzZV7baVxVJwAAAAAAAAAAbVtbDnNjXciZj4n1+/r6////////////////////
- ///////////////////+/v7/pJqW+WxdVnYAAAAAamBVGHJkXdmnnpn2/f37/9S8E//axTP/2MIo/+XX
- cP/eqa3/zX2D/9CEif/IcHf//v39/83Ixf92Z2C8AAAAAHJjXOC5sK36//////7++//bxjb///////Xw
- yv/k1Gf/3KOn//Pf4P//////0IaL//79/f/w7u7/cWFb8gAAAAF0Zl/i4+Df///////+/vv/2cMr//bx
- zP/u5aL/5NRn/9yjp//px8n/8+Di/85/hf/+/f3//////3hpYvNuWlMldGReo8K7uf////////79/+PU
- Zv/j1Gb/49Rm//Dorv/qyMv/3KOn/9yjp//eqKz///7+//////+ajoryalxUXmpaVWCbkYzz//////7+
- //+ikfD/nYvv/52L7//Lwfb/ruL9/2bI+/9myPv/b8z8//7/////////wbq3/3RlXqJuWlMleGli8///
- ///8/P//d17p/97Y+v/DuPX/nYvv/2fJ+/+i3v3/zO3+/yuz+v/7/v///////+Pg3/90Zl/iAAAAAXFh
- W/Lw7u7//Pz//35m6v//////3df5/52L7/9nyfv/yuz+//////82t/r/+/7///////+5sK36cmNc4AAA
- AAB2Z2G+zsnH//z8//9iReX/fGTp/3Vb6P+jkvD/Z8n7/yiy+v8ztvr/E6v5//v9/v+to5/4c2Nd3m1b
- UhwAAAAAbF1WdqSalvn+/v7///////////////////////////////////////v6+v+Zj4r2c2ReyW1b
- Ww4AAAAAAAAAAGlcVSdzZV7bc2Vd9qCXkvXSzcv/+vn5//////////////////f29v+MgHr0c2Rdsm1J
- SQcAAAAAAAAAAAAAAAAAAAAAAAAAAG9eVR5rW1NrdGRexnBhWfiShoHvxr+9/uTh4P+CdG70c2RdmYCA
- gAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmVVUPbFtVV3VmYLJvYFn0cmFbewAA
- AAAAAAAAAAAAAAAAAAAAAAAA+D+sQeAHrEHAAaxBgAGsQQABrEEAAKxBAACsQQAArEEAAKxBAACsQQAA
- rEGAAKxBgAGsQYADrEHgB6xB/B+sQQ==
+ AAAAAAAAAAAAAP///yr///8q////Kv///yr///8q////Kv///yr///8qwLi0QXNjXeeEdnCZxcG9Pv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qvrezQ2xdVvzVz832lIeC3Yl8eKDCvro/////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q4ODbMmtb
+ VP/39/b//////+Xj4fuonprclYmEptXRzDf///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Km5eWPzg3dv/////////////////3drY/3Vl
+ X+r///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qrqikTHBhWv1xYlv/pJuX/PTz8v//////6efm/29gWff///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yrh3Nwzd2hh3bSsqPzc2df/fG5o/HJi
+ XP7KxMH+7+7t/2xcVfz///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Ku7u7i55a2XKlouG+P39/f///////////7u0sP9xY1v+joF7/GtbVP/u7u4u////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q1dHMN3lqZM2MgHr3+vn5////
+ ///////////////////u7Oz/fG1n/GtbVP+pn5xQ////Kv///yr///8q////Kv///yr///8q////KpuR
+ i2GTiIFtn5aRWrmxrkWTjIdodWVf6KCUkPn7+vr//////////////////////////////////v7+/6Wb
+ mPxxYlvzq6WeT////yr///8q////Kv///yr///8q////KnNkXeiIe3b1fXBq9HJjW/txYVr/xr+9/v//
+ ///////////////////////////////////////////////////Aubb9cWJb8rCmok3///8q////Kv//
+ /yr///8q////Kod6dIa/uLXq//////z7+/90ZV7+vLSx/////////////////////////v7/3aaq/9iY
+ nf/YmJ3/4bG1////////////vre0/XJiXPK5sbFF////Kv///yr///8q////Kt3Y2DR+cGri/v7+////
+ //+8s7D+dWdg/fz8/P/////////////////68vP/2p2i///////j9f7/y42W/93z/v/3/P///////6+n
+ o/t2aGHa7+npL////yr///8q////Kv///yqAc22f0szK8v/////8/Pz/fXBp/pyTjv7/////////////
+ ///68vP/2p2i/8Lp/v9Gvfv/r4KV/3fO/P9Yw/v///////38/P+Kfnn3gHJsqP///yr///8q////Kv//
+ /yrAvLhBh3l04f//////////4d7c/29fWP/OyMb////////////89/j/0IaL/7mouf+ro7n/yX6L/7Kk
+ 8v8ypPf/uKvz//n4/v/w7u7/cWFb+aCYkln///8q////Kv///yr///8qfW9ouKqhnfy1ran/urKv/42B
+ e/9xYlv+4N3b////////////9+rr/7TK4P+fwuD/kHTe/97Y+v8/s/r/ppbw/9HI9///////u7Ow/Xdp
+ Ytj5+fkr////Kv///yr///8qubGxRYBya5Z+cWuefnFqsH9xart1Z2Did2hi+ero5////////////+H0
+ /v9Uwvv/LpT1/1XC+/+Y2v3/uazz/8/G9///////+/r6/3prZfeSh4Js////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qhHZxk3RlX/jY09H/////////////////inXs/9PL+P/Ty/j/oI7v/9LK
+ +P///////////7+4tf56a2XP////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KpCE
+ gG5wYVv1p52Z+vPx8f//////4Nr6/72x9P+9sfT/wbb1//r6/v////////////b19P9vX1j7ta6qSP//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yrAvLhBfW9otXFhW/m3sKz89/b2////
+ //////////////////////////////////+Wiob3hnlzh////yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////KqqhmlF7bGXJcGFZ+5+UkPjZ1dP//fz8////////////////////
+ ///Bu7j/e21nyf///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qvrezQ4N1cJZ0Zl/pcGFZ+5CEfvS2r6v+zsjG/+Th3//Pysj/dGVf7f///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qvba2QoyA
+ e3h+cWuqe21m0XRlX+1vYFn3b2BZ8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /0EAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA
+ AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABB////QSgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8q////Kv///yr///8q////KsvHxzt6a2bfk4eDgO/p6S////8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yrZ1dU2koaB6eTi4Paso5/Npp2Zc/T0
+ 9C3///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KoN0b/L9/f3//////9zY
+ 1vePg36m////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kp2TjmOEdnD4hXZx/NrW
+ 1f3y8PD/hnlzxv///yr///8q////Kv///yr///8q////Kv///yr///8q////KsjEvzyBc23n8/Hx/+nn
+ 5v+BdG77rKSg+oR2cc////8q////Kv///yr///8q////Kv///yr///8q////KsXBvT5/cWvf4d7c/v//
+ /////////f39/5aKhfl5a2Xu6uTkMP///yr///8q////Kv///yqDdG+/hnhyxIJ1cMKCdW7q4+Df/v//
+ ////////////////////////ysTC+YF0bcb5+fks////Kv///yr///8qkIR+uurn5v+6s7D9mI6J+v//
+ //////////////Ha3P/jt7r/6sfK//////+/ubX2hnlzsf///yr///8q////KqCVkF7Tz8zo+/r6/35w
+ a/zy8fD////////////jtbn/5fb+/66iuP+m3/3//////6KXk/CXi4Zu////Kv///yr5+fkro5iUxP//
+ ///Oycf8iXx2+v//////////4rO2/43E6P/PprH/icv7/8rf+//5+Pj/gnNu6NnV1Tb///8q////KpmP
+ iX2zq6jzvbaz+H5wav2rop76//////bp6v+ar8z/sZrV/3+19/+PnfL/5+P7/83HxfuLfnmg////Kv//
+ /yrv6ekvmo+KYpCDfnGJenR/e21m3tDLyPr/////3PP+/16j9f+V2f3/zsb3/9/a+v/+/v7/hHdx6OXl
+ 5TH///8q////Kv///yr///8q////Kubg4DKBdG7It6+s9v38/P/b1Pn/sqTy/6+h8v/29P7//////721
+ svaUh4N3////Kv///yr///8q////Kv///yr///8q+fn5LIyAepKDdnDp19PR/f7+/v//////////////
+ ///u7Oz/h3hzxf///yr///8q////Kv///yr///8q////Kv///yr///8qwr66P4h6da+CdW7qtq6r9eHe
+ 3P/8/Pz//////4R2ceL///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q4ODbMpSJ
+ gm6HenS2f3Fr34N2cOhzY13xAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAA
+ rEEAAKxBAACsQQAArEEAAKxBAACsQQ==
716, 17
+
+ 831, 17
+
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGxc
- VU5rW1Tna1tU22paU5BsXVVCgEBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAaltTZWtbVPxrW1T/a1tU/2tbVP9rW1T/a1tU7mtbU6VrXFNWbVtbDgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABqWlR/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU+Wta
- VLprW1Nrb15VHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAVVVVA2tbVJhrW1T/a1tU/2tbVP+NgXz/2NPR/6+mov+Bc23/a1tU/2tb
- VP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVc1sXFSAa1xSMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtSUkHa1xUqmtbVP9rW1T/a1tU/5iNiP/6+fn/////////
- ////////6+no/7+4tf+Sh4L/bV5X/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVOFrXFOZallTTW1J
- SQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlaWhFqW1TCa1tU/2tbVP9rW1T/o5mV//38
- /P//////////////////////////////////////9PPy/8jDwP+cko3/c2Nd/2tbVP9rW1T/a1tU/2tb
- VP9rW1T/a1tU/2tbVPVrW1SzalxUXmlaWhEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAalhYHWtbVNRrW1T/a1tU/2tb
- VP+1rar/////////////////////////////////////////////////////////////////+vn5/9LN
- y/+lm5f/eGpj/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVPtrWlS9bFxVb2xdVSEAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrWVMra1tU42tb
- VP9rW1T/bV1W/8S9u///////////////////////////////////////////////////////////////
- /////////////////////////v7+/97a2f+xqKT/g3Zw/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tb
- VP5qW1V4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpZ
- VTxrW1Tua1tU/2tbVP9wYVr/0czK////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////+ro5/+8tbL/j4N+/21d
- Vv9rW1T/a1tU/2tbVP9rW1TpAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAbFxTUGtbVPZrW1T/a1tU/3VnYP/d2df/////////////////////////////////////////
+ AAD///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kqyjn1BtXVbuc2Rex5uOiWP///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////KpaMh2Z6a2TYa1tU/2xcVftzZFzKkISAbvn5+Sz///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////KpaJhGhrW1T9d2hh/722s/x5amT1b19Z73Nk
+ XcWLfnh57+npL////yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KqKalFhrW1T/cGBZ////
+ ///8/Pz/yMPA/n5xa/RwYFrvc2NdyIZ5c4fZ1dU2////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KrWu
+ qkhrW1T/a1tU//n5+P////////////7+/v/Szcv/jIF78nRmX+l1Z2C9joF8dc/Kxjr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////KtXRzDdrW1T/a1tU/+7s6////////////////////////////93Z1/+Th4Lzd2li6nhq
+ Y7SShoJuwr66P////yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kvn5+StrXFX8a1tU/+Pf3v//////////////////////////////
+ ////////5uPi/5KFgPdzY1zwhHdyif///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yptXVfxa1tU/8vFw///////////////
+ /////////////////////////////8jDwP9rW1T/cWFb1f///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kvn5+SttW1X5a1tU/2xc
+ Vf+aj4r/6+jo/////////////////////////////////87Jx/9rW1T/b2Ba3v///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KpKG
+ gm5rW1T/a1tU/2tbVP9rW1T/cGFa/7avq//7+vr//////////////////////9TPzf9rW1T/bl5Y5v//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q2dnUNW5fV+drW1T/o5mV/7Oppv9uX1j/a1tU/2tbVP+Bc23/2dXT/////////////////9rW
+ 1P9rW1T/bV1W7v///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qd2ljsmtbVP92Z2H/8/Hx///////49/f/l4yH/2xbVf9rW1T/bFxV/6ad
+ mP/5+Pj//////9/c2v9rW1T/bFxV9v///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yqFeHKGa1tU/2tbVP/Nx8X//////////////////////9vX
+ 1f92Z2D/a1tU/2tbVP+CdW//4d7c/+Xi4f9rW1T/a1tU/fn5+Sv///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////KpCEgG5rW1T8a1tU/6yjn///////////////
+ ///////////////////+/v7/oJaR/2tcVP9rW1T/bl5X/6mgnP9rW1T/a1tU/+bg4DL///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8ql4uGZWxbVflrW1T/lYmE//z8
+ /P///////////////////////////////////////////9jT0v9xYlz/a1tU/2tbVP9rW1T/a1tU/8/K
+ xjr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yqTh4JqbFxU+Gtb
+ VP+Lfnn/+Pf3///////////////////////////////////////////////////////4+Pj/iHx2/2tb
+ VP9rW1T/a1tU/6yiok3///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KoR3
+ colrW1T8a1tU/42BfP/29fT/////////////////////////////////////////////////////////
+ /////////////6CXkv9rW1T/a1tU/29gWt3AuLRB////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yrLx8c7dmhhtmtbVP9rW1T/lImE//n4+P//////////////////////////////////////////////
+ ///////////////////////////////////CvLn/cWJa/2tbVP9vX1njvrezQ////yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///ypzZFzKdWZfu25fWOhxYlvSdWZfvnts
+ ZaaAcm2ThXhxiHlpYrFtXVbua1tU/2tbVP+tpKD//fz8////////////////////////////////////
+ ////////////////////////////////////////////////////////4d7d/3ZnYf9rW1T/bl5Y47y0
+ sET///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///ypuXljma1tU/2tb
+ VP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/e2xm/9LNy///////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+Th
+ 3/93aGH/a1tU/25eWOPCvro/////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yqCdG+Ra1tU/7SsqP/Bu7j/tKyo/6Salv+Wi4b/f3Jr/2tbVP9sXFX/9PPy////////////////////
////////////////////////////////////////////////////////////////////////////////
- //////////////Tz8v/Iw8D/dmdh/2tbVP9rW1T/blpTJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABsXFRha1tU+2tbVP9rW1T/emxl/+Th4P//////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////m5CL/2tbVP9rW1T/a1tTXwAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGtaVHdrW1T/a1tU/2tbVP+DdnD/7uzs/////////////Pvw//z6
- 7v/8+u7//Pru//z67v/8+u7//Pru//z67v/9/PT///////////////////////z4+f/79fX/+/X1//v1
- 9f/79fX/+/X1//v19f/79fX//Pb2////////////////////////////vLWy/2tbVP9rW1T/a1xTmQAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVUDa1tUmGtbVP9rW1T/a1tU/4t/ev/08/L/////////
- ///cyT7/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/6Nt+////////////4bG1/8Rl
- bP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/9KKkP//////////////////////3tvZ/2tb
- VP9rW1T/a1tU1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1JSQdrW1Sra1tU/2tbVP9rW1T/mY6J//r5
- +f////////////389f/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/28Y1////
- ////////0IWL/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/9+fn/////////
- /////////Pz8/3BhWv9rW1T/a1tU/nFVVRIAAAAAAAAAAAAAAAAAAAAAaVpaEWtcVMNrW1T/a1tU/2tb
- VP+kmpb//fz8//////////////////389P/RtwD/0bcA/+TVbP/w56r/8Oeq//Dnqv/w56r/8Oeq/93K
- Qv/RtwD/28Y1////////////0IWL/8RlbP/TjZL/68zO/+vMzv/rzM7/68zO/+vMzv/dpqr/xGVs/8Rl
- bP/8+Pn//////////////////////46CfP9rW1T/a1tU/2xbVEkAAAAAAAAAAAAAAABsWFgaa1xU0Wtb
- VP9rW1T/a1tU/7CopP////////////////////////////389P/RtwD/0bcA/+7lov//////////////
- /////////////+PTY//RtwD/28Y1////////////0IWL/8RlbP/boaX/////////////////////////
- ///px8n/xGVs/8RlbP/8+Pn//////////////////////7CopP9rW1T/a1tU/2tbVIMAAAAAAAAAAAAA
- AABqXFTOa1tU/2tbVP9tXlf/xr+9//////////////////////////////////389P/RtwD/0bcA/+7l
- ov///////////////////////////+PTY//RtwD/28Y1////////////0IWL/8RlbP/boaX/////////
- ///////////////////px8n/xGVs/8RlbP/8+Pn//////////////////////9LNy/9rW1T/a1tU/2tb
- VL8AAAAAAAAAAAAAAABrW1Tva1tU/2tbVP/KxML///////////////////////////////////////38
- 9P/RtwD/0bcA/+7lov///////////////////////////+PTY//RtwD/28Y1////////////0IWL/8Rl
- bP/boaX////////////////////////////px8n/xGVs/8RlbP/8+Pn///////////////////////Py
- 8v9sXFX/a1tU/2tbVPRmZmYFAAAAAAAAAABrW1W4a1tU/2tbVP/Oycf/////////////////////////
- //////////////389P/RtwD/0bcA/+7lov///////////////////////////+PTY//RtwD/28Y1////
- ////////0IWL/8RlbP/boaX////////////////////////////px8n/xGVs/8RlbP/8+Pn/////////
- //////////////////+CdG7/a1tU/2tbVP9sXVM0AAAAAAAAAABqWlR/a1tU/2tbVP+tpKD/////////
- //////////////////////////////389P/RtwD/0bcA/+7lov///////////////////////////+PT
- Y//RtwD/28Y1////////////0IWL/8RlbP/boaX////////////////////////////px8n/xGVs/8Rl
- bP/8+Pn///////////////////////////+jmZX/a1tU/2tbVP9rWlNuAAAAAAAAAABtWlNEa1tU/2tb
- VP+Lfnn///////////////////////////////////////389P/RtwD/0bcA/93JQf/j1Gb/49Rm/+PU
- Zv/j1Gb/49Rm/9jCJ//RtwD/28Y1////////////0IWL/8RlbP/NfYL/3KOn/9yjp//co6f/3KOn/9yj
- p//TjJH/xGVs/8RlbP/8+Pn////////////////////////////Fv7z/a1tU/2tbVP9qW1OoAAAAAAAA
- AABqVVUMa1tU+2tbVP9uXlf/+fn4//////////////////////////////////389P/RtwD/0bcA/9G3
- AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/28c5////////////0IWL/8RlbP/EZWz/xGVs/8Rl
- bP/EZWz/xGVs/8RlbP/EZWz/xGVs/8Rmbf/9+vr////////////////////////////n5eT/a1tU/2tb
- VP9rW1TkAAAAAAAAAAAAAAAAa1tUz2tbVP9rW1T/3NjW//////////////////////////////////38
- 9v/axTP/2sUz/9rFM//axTP/2sUz/9rFM//axTP/2sUz/9rFM//bxzj/8Ois////////////2p2i/9CE
- if/QhIn/0ISJ/9CEif/QhIn/0ISJ/9CEif/QhIn/0ISJ/+GwtP//////////////////////////////
- ///+/v7/dWdg/2tbVP9rW1T/alhYHQAAAAAAAAAAa1tUlGtbVP9rW1T/ubKv////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////l4uG/2tbVP9rW1T/a1pUWAAAAAAAAAAAbFtVWmtbVP9rW1T/mI2I////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////uLGt/2tbVP9rW1T/a1tUkgAAAAAAAAAAa1pSH2tb
- VP9rW1T/dmdh//7+/v////////////////////////////////+rnPH/fGTp/3xk6f98ZOn/fGTp/3xk
- 6f98ZOn/fGTp/3xk6f9/aOr/ysD2////////////rOH9/zi4+v8ztvr/M7b6/zO2+v8ztvr/M7b6/zO2
- +v8ztvr/M7b6/33R/P//////////////////////////////////////2tbV/2tbVP9rW1T/a1tVzQAA
- AAAAAAAAAAAAAGtbVONrW1T/a1tU/+jm5f////////////////////////////r5/v9cPuT/Wz3k/1s9
- 5P9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/gGjq////////////Obj6/wCk+f8ApPn/AKT5/wCk
- +f8ApPn/AKT5/wCk+f8ApPn/AKT5/wGk+f/3/P//////////////////////////////////+vn5/25f
- WP9rW1T/a1tU/GpVVQwAAAAAAAAAAGtcVKprW1T/a1tU/8bAvf////////////////////////////j3
- /v9bPeT/Wz3k/4Vu6/+di+//nYvv/52L7/+di+//nYvv/3Rb6P9bPeT/fWXq////////////Nbf6/wCk
- +f8nsvr/Zsj7/2bI+/9myPv/Zsj7/2bI+/9Bu/v/AKT5/wCk+f/0+///////////////////////////
- /////////////4p9eP9rW1T/a1tU/2xdVUIAAAAAAAAAAGtbVHBrW1T/a1tU/6Sblv//////////////
- //////////////j3/v9bPeT/Wz3k/8O49f///////////////////////////5uI7v9bPeT/fWXq////
- ////////Nbf6/wCk+f9jx/v///////////////////////////+i3v3/AKT5/wCk+f/0+///////////
- /////////////////////////////6yjn/9rW1T/a1tU/2pcVH0AAAAAAAAAAGxdUzRrW1T/a1tU/4J0
- bv////////////////////////////j3/v9bPeT/Wz3k/8O49f///////////////////////////5uI
- 7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v///////////////////////////+i3v3/AKT5/wCk
- +f/0+////////////////////////////////////////87Jx/9rW1T/a1tU/2tbVbgAAAAAAAAAAGZm
- ZgVrW1T0a1tU/2xcVf/z8vL///////////////////////j3/v9bPeT/Wz3k/8O49f//////////////
- /////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v/////////////////////////
- //+i3v3/AKT5/wCk+f/0+////////////////////////////////////////8rEwv9rW1T/a1tU/2tb
- VO8AAAAAAAAAAAAAAABrW1S/a1tU/2tbVP/Szcv///////////////////////j3/v9bPeT/Wz3k/8O4
- 9f///////////////////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v/////////
- //////////////////+i3v3/AKT5/wCk+f/0+///////////////////////////////////xr+9/21e
- V/9rW1T/a1tU/2pcVM4AAAAAAAAAAAAAAABrWlSFa1tU/2tbVP+xqaX///////////////////////j3
- /v9bPeT/Wz3k/8O49f///////////////////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk
- +f9jx/v///////////////////////////+i3v3/AKT5/wCk+f/0+///////////////////////////
- //+6sq//bFxV/2tbVP9rW1T/a1tT1m9eVR4AAAAAAAAAAAAAAABpXFVLa1tU/2tbVP+Pg37/////////
- //////////////j3/v9bPeT/Wz3k/6CP7//Ivvb/yL72/8i+9v/Ivvb/yL72/4Vv6/9bPeT/fWXq////
- ////////Nbf6/wCk+f9CvPv/quH9/6rh/f+q4f3/quH9/6rh/f9sy/z/AKT5/wCk+f/0+///////////
- /////////f39/6ifmv9rW1T/a1tU/2tbVP9rW1TIZllZFAAAAAAAAAAAAAAAAAAAAABpWloRa1tU/Wtb
- VP9wYVr//Pv7//////////////////j3/v9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s9
- 5P9bPeT/fWXq////////////Nbf6/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk
- +f/1+//////////////7+vr/nZKO/2tbVP9rW1T/a1tU/2tcVbJmZk0KAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAa1tT1mtbVP9rW1T/4Nzb//////////////////j3/v9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s9
- 5P9bPeT/Wz3k/1s95P9bPeT/rJ3x////////////Nbf6/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk
- +f8ApPn/AKT5/z66+v////////////b19P+Pg37/a1tU/2tbVP9rW1T/a1tTn4BAQAQAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAa1pUm2tbVP9rW1T/vbaz//////////////////7+///08v3/9PL9//Ty
- /f/08v3/9PL9//Ty/f/08v3/9PL9//Ty/f/49/7/////////////////8vr//+75///u+f//7vn//+75
- ///u+f//7vn//+75///u+f//8Pr/////////////8O/u/4Z5dP9rW1T/a1tU/2tbVP9rXFSIAAAAAQAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbFxUYWtbVP9rW1T/nJGM////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////n5eT/fG5o/2tbVP9rW1T/a1tU/Gta
- VWkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAblpTJWtbVP9rW1T/dmdh/8jD
- wP/08/L/////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////93Z1/91Z2D/a1tU/2tb
- VP9rW1T2bFxTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWtb
- VOlrW1T/a1tU/2tbVP9tXVb/j4N+/7y1sv/q6Of/////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////0czK/3Bh
- Wv9rW1T/a1tU/2tbVO5qWVU8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAGpbVXhrW1T+a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/g3Zw/7GopP/e2tn//v7+////
- ////////////////////////////////////////////////////////////////////////////////
- ///Evbv/bV1W/2tbVP9rW1T/a1tU42tZUysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsXVUhbFxVb2taVL1rW1T7a1tU/2tbVP9rW1T/a1tU/2tb
- VP9rW1T/eGpj/6Wbl//Szcv/+vn5////////////////////////////////////////////////////
- /////////////7Wtqv9rW1T/a1tU/2tbVP9rW1TUalhYHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpWloRbFpUVWtb
- U6JrW1Twa1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/cGFa/5KHgv+/uLX/8O/u////////////////////
- ///////////////////9/f3/p56a/2tbVP9rW1T/a1tU/2pbVcdmWVkUAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABVVVUDallVPGtbVJFrW1Pia1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/bFxV/4l8
- dv+1ran/4d7d//////////////////v6+v+cko3/a1tU/2tbVP9rW1T/a1tUsXFVVQkAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa1xSMmxcVIBrW1XNa1tU/2tb
- VP9rW1T/a1tU/2tbVP9rW1T/a1tU/4Fzbf+vpqL/2NPR/42BfP9rW1T/a1tU/2tbVP9rW1SYVVVVAwAA
+ ///////////////////k4eD/d2hh/2tbVP9wYlvW2dnUNf///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yrMxMQ8bFxU+JySjfX/////////////////////7Orq/2xcVf9rW1T/sqmm////
+ ////////////////////////////////////////////////////////+Ozt/+W7vv/jt7r/47e6/+O3
+ uv/jt7r/6MLF//z39///////////////////////39za/3FhW/9rW1T/dGVfxO7u7i7///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8qeWpjr2xdVvzx8O///////////////////////5mO
+ iv9rW1T/c2Nd///////////////////////////////////////////////////////9+vr/yXF4/8Rl
+ bP/EZWz/xGVs/8RlbP/EZWz/xGVs/9WSl////////////////////////////9PPzf9tXlf/a1tU/31v
+ aJ////8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qp56YVGtbVP+0q6j6////////
+ /////////////+Dc2/9sXFX/a1tU/7Oqp///////////////////////////////////////////////
+ ///25uf/xGVs/+/V1///////////////////////4bG1/8hwdv//////////////////////////////
+ //+/uLX/a1tU/2tbVP6QhIBu////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KnNj
+ XM92ZmD3/Pv7//////////////////////+flZD/a1tU/25fWP/39/f/////////////////////////
+ ///////////////////25uf/xGVs/+/U1v///////////+f2/v/M7f7/yKi1/8Rvdv/M7f7/zO3+/+35
+ ////////////////////////nZOO/2tbVP9sXFXztq+rRv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////KpCDfnNrW1T/ysTC/v/////////////////////u7Oz/cWFb/2tbVP+Wi4b/////////
+ ///////////////////////////////////25uf/xGVs/+/U1v//////s+T9/wOl+f8ApPn/Y4Sy/7Zq
+ dv8ApPn/AKT5/wuo+f/W8P7/////////////////9/f2/4J1b/9rW1T/c2Rcyvn5+Sz///8q////Kv//
+ /yr///8q////Kv///yr///8q////Ku7u7i5uXVfohXdy8v//////////////////////////ta2p/2tb
+ VP9rW1T/2dTT///////////////////////////////////////25uf/xGVs/+/U1v//////ZMj7/yWx
+ +v/M7f7/yKi1/8Rvdv/M7f7/zO3+/wem+f+K1fz//////////////////////+Dd2/9tXlf/a1tU/4Z5
+ c4f///8q////Kv///yr///8q////Kv///yr///8q////Kv///yqAc2ySa1tU/+Dc2///////////////
+ ////////+/r6/4V4cv9rW1T/cmNc//r6+v/////////////////////////////////25uf/xGVs/+/U
+ 1v//////Ysf7/y60+v//////4bG1/8hwdv///////////wmn+f+G1Pz/////////////////////////
+ //+yqqb/a1tU/2xcVfbAuLRB////Kv///yr///8q////Kv///yr///8q////Kv///yrIxL88bFxU+JyR
+ jfT//////////////////////////+Pf3v9uX1j/a1tU/4+Dfv//////////////////////////////
+ ///79PT/xWdu/8+DiP/UjpP/qn+S/5x6kv/UjpP/y3mA/79ugv+Hcev/h3Hr/wWi+P9HifH/h3Hr/6CP
+ 7//08v3////////////8+/v/gXNt/2tbVP94aWKz////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qeGhjsGxdVvzx8O////////////////////////////+3r6z/a1tU/2tbVP+zq6f/////////
+ ////////////////////////6sfK/9WRlv/UjpP/qn+S/5x6kv/UjpP/wX2Y/3ZJyv+Hcev/h3Hr/wWi
+ +P9HifH/h3Hr/2FF5f+ypPL/////////////////08/N/2tbVP9rW1T+oJiSWf///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qpZyZVWtbVP9+cGr9kYWA/5WKhf+cko3/pJuW/6mgnP+upqL/cWFb/2tb
+ VP9rW1T/ycTB////////////////////////////////////////////Ysf7/y60+v//////rJ3x/2dL
+ 5v///////////wmn+f+G1Pz//////3NZ6P+gju///////////////////////5WJhP9rW1T/c2Rdxf//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////KnJjXcxrW1T/a1tU/2tbVP9rW1T/a1tU/2tb
+ VP9rW1T/a1tU/2tbVP9rW1T/bl5X/+fk4///////////////////////////////////////cMz8/xas
+ +v93zvz/UKD1/zB68P93zvz/d878/wSl+f+U2fz//////3NZ6P+gju///////////////////////+He
+ 3P9sXFX/a1tU/6CVj1v///8q////Kv///yr///8q////Kv///yr///8q////KsK+uj+KfXd8hHdyiYJ0
+ b5F+cWqce2xlpnlqZK12aGG4dGVew3NkXM9sXFX4a1tU/3hqY//j397/////////////////////////
+ ////////1fD+/zO2+v8Rqvn/C6P4/wee9/8Rqvn/Ear5/0G7+//r+P///////3NZ6P+gju//////////
+ //////////////////+YjYj/a1tU/3VmYMD///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yq2r6tGbl9Y5WtbVP9zZF3/2tbU////
+ ////////////////////////////////////////rJ3x/2dL5v///////////////////////////3NZ
+ 6P+gju/////////////////////////////d2df/a1tU/2tbVP21rqpI////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qwLi0QW9g
+ WdxrW1T/cGBZ/8W/vP//////////////////////////////////////rJ3x/2dL5v//////////////
+ /////////////3NZ6P+gju//////////////////////////////////h3t1/2tbVP98bmig////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////KtLJyTlxYlzQa1tU/2tbVP+hl5L/+fj4////////////////////////////zcT3/1s9
+ 5P9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s95P/Ct/X/////////////////////////////////xL27/2tb
+ VP9uXVfr9O7uLf///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yrl5eUxeWxmqGtbVP9rW1T/gnRu/9vX1f//////////////
+ /////////////9TM+P+ypPL/sqTy/7Kk8v+ypPL/sqTy/8/H9//+/f//////////////////////////
+ ////////9vX0/3BgWf9rW1T/l4uGZf///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Ko2Ce3RsXVX1a1tU/2xc
+ Vf+km5b/9fPz////////////////////////////////////////////////////////////////////
+ /////////////////////////////5mOiv9rW1T/fGxmpf///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yq6s69GdGVfwmtbVP9rW1T/cmNc/7CopP/39vb/////////////////////////////////////////
+ /////////////////////////////////////////////8K7uf9rW1T/cGFa2////yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Ko+CfXRuXlfqa1tU/2tbVP94aWP/uLGt//Py8v//////////////
+ /////////////////////////////////////////////////////////////+nn5v9rW1T/a1tU/sK+
+ uj////8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yrg4NsyhHZwjWxeVvBrW1T/a1tU/3Bh
+ Wv+lm5f/3drY//7+/v//////////////////////////////////////////////////////////////
+ //97bWf/a1tU/46BfHX///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KtXR
+ 0TeBdW+Obl9Y6GtbVP9rW1T/a1tU/39xa/+yqab/3tvZ//7+/v//////////////////////////////
+ //////////////////+glpH/a1tU/3xuZ6P///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q7u7uLo+CfXRzY13Ia1tU/WtbVP9rW1T/a1tU/3doYf+dko7/wLm2/+He
+ 3f/6+vr///////////////////////////+2r6v/a1tU/3VnYL////8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qwLy4QYR1cItyY13Oa1tU/Gtb
+ VP9rW1T/a1tU/2tbVP9sXFX/f3Fr/5WKhf+upaH/wbu4/8vFw/+rop7/a1tU/3BgWtr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qz8rGOo2Ce3R6bGWncGBZ2WtbVP1rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2xd
+ VfX///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////KuDg2zKpnZpTj4J9dIBxbJd2aGG4cWNbz29g
+ Wt5tXlbsbFtV+XRlX8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAb15VHmtbU2trWlS6a1tU+WtbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2pa
- VH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbVtbDmtcU1ZrW1Ola1tU7mtbVP9rW1T/a1tU/2tb
- VP9rW1T8altTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBABGxd
- VUJqWlOQa1tU22tbVOdsXFVOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//4H///+sEP//AD///6wQ//4AB///rBD/+AAA//+sEP/w
- AAAP/6wQ/+AAAAH/rBD/wAAAAD+sEP+AAAAAH6wQ/wAAAAAPrBD+AAAAAA+sEPwAAAAAD6wQ+AAAAAAP
- rBDgAAAAAA+sEMAAAAAAB6wQgAAAAAAHrBAAAAAAAAesEAAAAAAAB6wQAAAAAAADrBAAAAAAAAOsEAAA
- AAAAA6wQAAAAAAADrBAAAAAAAAOsEIAAAAAAAawQgAAAAAABrBCAAAAAAAGsEIAAAAAAAawQwAAAAAAA
- rBDAAAAAAACsEMAAAAAAAKwQwAAAAAAArBDAAAAAAACsEOAAAAAAAKwQ4AAAAAAArBDgAAAAAAGsEOAA
- AAAAA6wQ8AAAAAAHrBDwAAAAAA+sEPAAAAAAP6wQ8AAAAAB/rBDwAAAAAP+sEPgAAAAB/6wQ/AAAAAP/
- rBD/gAAAB/+sEP/wAAAP/6wQ//8AAB//rBD//+AAf/+sEP///AD//6wQ////gf//rBAoAAAAIAAAAEAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////yBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA
+ AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA
+ 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA
+ AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA
+ 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAA
+ AAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA
+ 8gQAAAAAAADyBAAAAAAAAPIEAAAAAAAA8gQAAAAAAADyBAAAAAAAAPIE////////8gQoAAAAIAAAAEAA
AAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAABsXFRha1tU7GtbVcFqW1RzalxVJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAbFtVe2tbVP5rW1T/a1tU/2tbVP9rW1T/a1tT1mtcVIhrWVU5gICAAgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kry0sERvX1nse21npravq0b///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8qp56YVHJiXPeUiITzdWdg7X1vaaGuqKRM////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yq5sbFFa1tU/8/Kx//5+Pj/wbq484N1
+ cOSAc22pubGxRf///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KtnZ1DVrW1T/w726////
+ /////////v7+/9HLyfePhH7fin13oc/Kxjr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Km1c
+ Vvu4sK3////////////////////////////DvLr8cGJa87avq0b///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr09PQtbV1X/HdoYv+6sq//+vr6/////////////////97a2f9rW1T/n5aRWv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kol6dn9rW1T/fG9p/2tcVf99cGj/087M////////////5OHf/2tbVP+bjolj////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yqto6BObl5X9pyRjP7/////ysTC/3NkXv5rW1T/m5GM//Py8v/q5+b/a1tU/5SI
+ g2v///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qw7u7QHBgWumAcWv89PPy/////////////f39/56Tj/9tXVb/d2dh/8S+
+ u/9rW1T/j4J9dP///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////KsjEvzxyY1zZdWdg/Ovo6P///////////////////////////9vW
+ 1v9zZF3+a1tU/2tbVP+KfXd8////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yqto6BOcWFZ53RlX/zg3Nv/////////////////////////
+ //////////////r5+f+HenX/a1tU/3FjXM/v6ekv////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qta6qSKWcllXAvLhB7u7uLv///yr5+fkri4F6eW5fV/V+cWv86ufm////////////////////
+ //////////////////////////////////+vpqL/bF1W/nZnYcPl5eUx////Kv///yr///8q////Kv//
+ /yr///8q////Kv///ypvX1nsc2Nc92tbVP9rW1T+cGBZ8G5eWPprW1T/l4yH/fTz8v//////////////
+ ///////////////////////////////////////////////////Pysj/bV5X/XVlX8fl5eUx////Kv//
+ /yr///8q////Kv///yr///8q////KnprZamWi4Xxz8rH/8C5tv+yqab/dmdh/3lpZP//////////////
+ ///////////////////////////////////////////////////////////////////Szcv/bV1W/Xdo
+ Yrv09PQt////Kv///yr///8q////Kv///yr///8qsKaiTXFiW/L6+vr///////////+1rar/bFxV/97a
+ 2f/////////////////////////////////z4OL/y3d9/8hvdv/Ib3b/yG92/9qfo///////////////
+ ///KxMH/bFxV/3xvaZ7///8q////Kv///yr///8q////Kv///yr///8qdGZgxcS+u/L///////////Lw
+ 8P9xYVv/f3Fr/////////////////////////////////+W7vv/hsLP//////////////v7/x21z////
+ //////////////////+0rKj/a1tU/pSKhmn///8q////Kv///yr///8q////Kv///yqWjIdmfG5p7P//
+ /////////////7uzsP9sXFX/wbu4////////////////////////////5bu+/+Gws///////WcT7/yOv
+ +f+8aXP/IrD6/zu5+v/q+P////////7+/v+QhH/9bl9X8r63s0P///8q////Kv///yr///8q////Kvn5
+ +StyYlvg2NTS+v///////////Pv7/4FzbP9wYVr/8/Lx///////////////////////lu77/4bCz/+z4
+ //8crvr/3fL9/8Vsc//d8/7/UMH7/7Dj/f///////////+/u7f91Zl/8dGVfzPn5+Sv///8q////Kv//
+ /yr///8q////Koh7dYGNgXzn////////////////4d7d/21eV/+CdW7//////////////////////+nG
+ yf/RiI3/16qx/3iIr//frLD/xXB8/6iY8f89oPb/c5vz/7Ch8v/39v7//////8/KyP9rW1T/kIN+c///
+ /yr///8q////Kv///yr///8q4ODbMm9gWfHMxsT/2NTS/+He3f/n5OP/qaCc/2tbVP+dk47/////////
+ /////////vv8/+vKzf/bvcT/YZHB/+bAxP92TdH/vbH0/0Sp9/+CrPX/hnDr/8W79f///////////4+D
+ ff1xYlvm6uTkMP///yr///8q////Kv///yr///8qf3Fql2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tc
+ Vf+/uLX///////////////////////P7//8Vq/n/h9T8/zVz7v+I1fz/MbX6/7vn/f+ikfD/v7T1////
+ ////////4N3b/2xcVf+Ed3KJ////Kv///yr///8q////Kv///yr5+fksubGxRaifm1KgmJJZm46JY5KG
+ gm6NgXx3cmJc02xcVf7Bu7j//////////////////////7Lk/f+H1Pz/NXPu/4jV/P+a2/3/+/7//6KR
+ 8P+/tPX/////////////////nZKO/nBhWe307u4t////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr07u4teGpkrmtbVP+tpKD//Pz8//////////////////7+//9jRuX/3tj6/97Y
+ +v/e2Pr/lIDt/8G19f/////////////////c2Nb/a1tU/5KGgm7///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr5+fkrgHNskmxcVf2JfHb86Obl/////////////////6uc
+ 8f+Hcev/h3Hr/4dx6/+Oeuz/7uv8//////////////////////+CdG78dmZgxf///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qnJGMX3BhWutuXlj9tKuo//j3
+ 9////////////////////////////////////////////////////////////7y0sf9sXFX90snJOf//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q2dnUNXxt
+ Z6FrXFX8dWdg/LuzsP/08/L/////////////////////////////////////////////////5ePh/2tb
+ VP+QhIBu////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////KrOsqUp4amO1bFxV/W5eWP2elI/+2NTS//7+/v//////////////////////////////
+ ///+/v7/d2hi/HtsZab///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yrAuLRBgHNsknFiWuhrW1T/eGlj/KCWkf/GwL3/7Orp////
+ //////////////////+YjYj/dGVez////yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q+fn5LJuOiWN7bWekcmNc3mtb
+ VP9rW1T/cWJb/Il7dvyglpL/r6ai/4p9eP9wYVnt////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qycDAPY+EgHCAcm2UdmhhtXJkXdlxYlrrbV5X93BgWeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAVVVVA2xbVJVrW1T/bV5X/8K7uf/RzMr/pJqW/3hpY/9rW1T/a1tU/2tb
- VP9rW1TpalxTnGxcVU5mZk0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1JSQdrW1Spa1tU/29fWf/Oycf//////////////////v7+/+He
- 3f+1ran/iXx2/2tbVP9rW1T/a1tU/2tbVPZqW1W7bFxVb2xYWBoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYFAQbFxUwGtbVP91ZmD+3trZ////////////////////
- ////////////////////////6efm/7y0sf+Ogn3/bV1W/2tbVP9rW1T/a1tU/WtbVMZrWlR3ZlVVDwAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaF5VG2tbVNJrW1T/fW9p/+fl5P//////////////
- ///////////////////////////////////////////////////z8vL/x8G//5uQi/9xYlv/a1tU/2tb
- VP9rW1SPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpdVylrW1Tha1tU/4V4cv/w7u7/////////
- //////////////////////////////////////////////////////////////////////////////r6
- +v/Evbv/a1tU/2xbVMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrXVM3a1tU62tbVP+MgHr/9PPy////
- ////////////////////////////////////////////////////////////////////////////////
- //////////////v6+v9vX1n/a1tU+2pVVQwAAAAAAAAAAAAAAAAAAAAAallTTWtbVPVrW1T/mY6K//r5
- +f///v3/1r8d/9G3AP/RtwD/0bcA/9G3AP/RtwD/07oL//r34//57u//x2xy/8RlbP/EZWz/xGVs/8Rl
- bP/EZWz/y3d9///+/v///////////4yAev9rW1T/alpSQQAAAAAAAAAAAAAAAGpaVWBrW1T7a1tU/6mg
- nP/+/v7///////799//RtwD/2cMr/+PUZv/j1Gb/49Rm/9zIPP/RtwD/9vHM//Pg4v/EZWz/0omP/9yj
- p//co6f/3KOn/85/hf/EZWz//fr6////////////rqai/2tbVP9sW1V7AAAAAAAAAABrW1R5a1tU/2xc
- Vf+4sa3//////////////////v33/9G3AP/k1Wz/////////////////7OGW/9G3AP/28cz/8+Di/8Rl
- bP/nwML/////////////////3aaq/8RlbP/9+vr////////////RzMn/a1tU/2pbVLYAAAAAAAAAAGtb
- VO5rW1T/w726///////////////////////+/ff/0bcA/+TVbP/////////////////s4Zb/0bcA//bx
- zP/z4OL/xGVs/+fAwv/////////////////dpqr/xGVs//36+v////////////Lw8P9rW1T/a1tU74CA
- gAIAAAAAa1tUxWtbVP/Z1dP///////////////////////799//RtwD/5NVs/////////////////+zh
- lv/RtwD/9vHM//Pg4v/EZWz/58DC/////////////////92mqv/EZWz//fr6/////////////////4By
- bP9rW1T/aF1RLAAAAABqXFSLa1tU/7iwrf///////////////////////v33/9G3AP/dyUH/7eKZ/+3i
- mf/t4pn/4dBa/9G3AP/28cz/8+Di/8RlbP/Zm6D/58HE/+fBxP/nwcT/04yR/8RlbP/9+vr/////////
- ////////opeT/2tbVP9qW1NlAAAAAGtbVVFrW1T/louG///////////////////////+/ff/0bcA/9G3
- AP/RtwD/0bcA/9G3AP/RtwD/0bcB//n12//z4OL/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/x2xy//79
- /f/////////////////Dvbr/a1tU/2tbU58AAAAAaF1RFmtbVP90ZV///v7+///////////////////+
- /f/28cz/9vHM//bxzP/28cz/9vHM//bxzP/49dr///////35+f/z4OL/8+Di//Pg4v/z4OL/8+Di//Pg
- 4v/47e7//////////////////////+Xi4f9rW1T/altU2gAAAAAAAAAAa1xT3GtbVP/m4+L/////////
- /////////////+zp/P/e2Pr/3tj6/97Y+v/e2Pr/3tj6/+fj+////////////9ry/v/M7f7/zO3+/8zt
- /v/M7f7/zO3+/+L1/v///////////////////////v7+/3VmX/9rW1T+aF1RFgAAAABsWlSha1tU/8S+
- u//////////////////8/P//YkXl/1s95P9bPeT/Wz3k/1s95P9bPeT/XD7k/+jk+//b8v7/AaT5/wCk
- +f8ApPn/AKT5/wCk+f8ApPn/C6j5//v+////////////////////////lYmE/2tbVP9rWlRPAAAAAGpc
- VGdrW1T/o5mU//////////////////r5/v9bPeT/hW7r/72x9P+9sfT/vbH0/5WB7v9bPeT/3tj6/8zt
- /v8ApPn/WsT7/5nb/f+Z2/3/mdv9/0G7+/8ApPn/9/z///////////////////////+2r6v/a1tU/2pb
- VIkAAAAAaF1RLGtbVP+Acmz/////////////////+vn+/1s95P+gj+//////////////////u6/0/1s9
- 5P/e2Pr/zO3+/wCk+f+W2v3/////////////////bMv8/wCk+f/3/P///////////////////////9nV
- 0/9rW1T/a1tUxQAAAACAgIACa1tU72tbVP/y8PD////////////6+f7/Wz3k/6CP7///////////////
- //+7r/T/Wz3k/97Y+v/M7f7/AKT5/5ba/f////////////////9sy/z/AKT5//f8////////////////
- ////////w726/2tbVP9rW1TuAAAAAAAAAABqW1S2a1tU/9HMyf////////////r5/v9bPeT/oI/v////
- /////////////7uv9P9bPeT/3tj6/8zt/v8ApPn/ltr9/////////////////2zL/P8ApPn/9/z/////
- /////////////7ixrf9sXFX/a1tU/2tbVHkAAAAAAAAAAGpcVH1rW1T/r6ej////////////+vn+/1s9
- 5P93Xun/nYvv/52L7/+di+//gmvq/1s95P/e2Pr/zO3+/wCk+f88ufr/Zsj7/2bI+/9myPv/K7P6/wCk
- +f/3/P////////7+/v+upaH/a1tU/2tbVPxqXFRnAAAAAAAAAAAAAAAAa1tUQ2tbVP+NgXz/////////
- ///6+f7/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/YkXl/+3q/P/M7f7/AKT5/wCk+f8ApPn/AKT5/wCk
- +f8ApPn/Ha76//3+///7+vr/nZOO/2tbVP9rWlT4altVVAAAAAAAAAAAAAAAAAAAAAB0XV0La1tU+29f
- Wf/7+vr/////////////////////////////////////////////////////////////////////////
- ////////////////////////9vX0/5CEfv9rW1T/bFxU72pZVTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AABsW1TMa1tU/8S9u//6+vr/////////////////////////////////////////////////////////
- //////////////////////////////Du7v+FeHL/a1tU/2tbVOFqXVcpAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAGtbVI9rW1T/a1tU/3FiW/+bkIv/x8G///Py8v//////////////////////////////
- ///////////////////////////////////n5eT/fW9p/2tbVP9rW1TSaF5VGwAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAZlVVD2taVHdrW1TGa1tU/WtbVP9rW1T/bV1W/46Cff+8tLH/6efm////
- ////////////////////////////////////////3trZ/3ZnYf9rW1T/bFxUwHBgUBAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmWVkUalxUXmtcVKprW1Tya1tU/2tb
- VP9rW1T/f3Fr/6uinv/Y09H//fz8/////////////////9LNy/9xYVv/a1tU/2paVa9xVVUJAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZm
- TQpsXFVOalxTnGtbVOlrW1T/a1tU/2tbVP94aWP/pJqW/9HMyv/Cu7n/bV5X/2tbVP9sW1SVVVVVAwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAgICAAmtZVTlrXFSIa1tT1mtbVP9rW1T/a1tU/2tbVP9rW1T+bFtVewAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAalxVJGpbVHNrW1XBa1tU7Gxc
- VGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/g////wA///wAB//4A
- AD/8AAAH+AAAB/AAAAfgAAADwAAAA4AAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAGAAAAAgAAAAIAA
- AACAAAAAgAAAAMAAAADAAAABwAAAA8AAAAfgAAAP4AAAH+AAAD/8AAB//4AA///wA////wf/KAAAABgA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////KAAAABgA
AAAwAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAa1tTa2xcVfBsXFW1bFpVZmZcUhkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFrWlSFa1tU/4+Dfv+AcWv8a1tU/2tb
- VP5tXlbMa1xUemxbVS0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAVVVVA2xbVJprW1T/qqCc//7+/v//////6+no/7+4tf+RhoH9bF1W/mtbVP9tXlbia1xTmWpZ
- U02AVVUGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0XV0LbFxVtWxcVf+5sq//////////
- ////////////////////////8/Hx/8bAvf+Zjor/cGBa/WtbVP9tXVbxaltUo2heVRsAAAAAAAAAAAAA
- AAAAAAAAAAAAAGZZWRRtXFbKbV1W/sjCv///////////////////////////////////////////////
- ////////+vn5/9LNy/+mnJj/bV1W/WtbVIMAAAAAAAAAAAAAAAAAAAAAaFhYIG1eV9pvYFn808/N////
- ////////////////////////////////////////////////////////////////////////in55/W1d
- Vr4AAAAAAAAAAAAAAABoXVEsbV5X53NlXvzd2tj//v78/9S8EP/RtwD/0bcA/9G3AP/RtwD/8Oit/+zN
- 0P/EZWz/xGVs/8RlbP/EZWz/yG91//79/f//////raSg/2xcVfaAQEAEAAAAAGxcVEBtXVbzfG5n++jm
- 5f///////v35/9G3AP/v5qf/9vHM//bxzP/Ywij/7eKZ/+fBxP/NfYP/8+Di//Pg4v/rysz/xGVs//77
- /P//////z8rH/2tbVP9rXFIyAAAAAG1dVe2CdW/98O/u/////////////v35/9G3AP/38tH/////////
- ///axTL/7eKZ/+fBxP/Qg4n////////////04+T/xGVs//77/P//////8fDv/2tbVP9sW1RtAAAAAG5e
- Vs+ViYT+/////////////////v35/9G3AP/38tH////////////axTL/7eKZ/+fBxP/Qg4n/////////
- ///04+T/xGVs//77/P///////////31waftqW1OoAAAAAGxaU5NyY138/v7+/////////////v35/9G3
- AP/Zwyr/2sUz/9rFM//Tugr/7eOb/+fBxP/Ga3L/0ISJ/9CEif/OfoT/xGVs//78/P///////////6CW
- kv9tXlflAAAAAGpcU1lrW1T/5ePh//////////////79/+3imf/t4pn/7eKZ/+3imf/t4pr/+/nr//bm
- 5//nwcT/58HE/+fBxP/nwcT/7M3P/////////////////8K7uf9rW1T/alhYHW9eVR5rW1T/w726////
- /////////////8rA9v+9sfT/vbH0/72x9P++svT/8vD9/+v4//+a2/3/mdv9/5nb/f+Z2/3/rOH9////
- /////////////+Th4P9rW1T/bFtVVwAAAABtXlfnopeT/////////////Pv+/1s95P92Xej/fGTp/3xk
- 6f9hReX/v7P0/5vb/f8KqPn/M7b6/zO2+v8qs/r/AKT5//r9//////////////7+/v9yY1z8a1tUkQAA
- AABqW1OofXBp+///////////+/r+/1s95P/h3Pr///////////97Y+n/vbH0/5nb/f8ytvr/////////
- ///R7/7/AKT5//n9//////////////////+ViYT+bl5WzwAAAABsW1Rta1tU//Hw7///////+/r+/1s9
- 5P/h3Pr///////////97Y+n/vbH0/5nb/f8ytvr////////////R7/7/AKT5//n9//////////////Dv
- 7v+CdW/9bV1V7QAAAABsXVM0a1tU/9DLyf//////+/r+/1s95P/GvPb/3tj6/97Y+v91W+j/vbH0/5nb
- /f8osvr/zO3+/8zt/v+n4P3/AKT5//n9////////6+no/35wavxsXVX1altURgAAAACAQEAEbV1W9q6m
- ov//////+/r+/1s95P9bPeT/Wz3k/1s95P9bPeT/ysH2/5nb/f8ApPn/AKT5/wCk+f8ApPn/EKr5//z+
- ///g3dv/dmdh/G1dVuptWFMxAAAAAAAAAAAAAAAAbFxVv4x/ev3/////////////////////////////
- /////////////////////////////////////////////9jT0f9xYVv8bV5W32pcVSQAAAAAAAAAAAAA
- AAAAAAAAa1tUg21dVv2mnJj/0s3L//r5+f//////////////////////////////////////////////
- ////////yMK//21dVv5tXFbKZllZFAAAAAAAAAAAAAAAAAAAAAAAAAAAaF5VG2pbVKNsXFXwa1tU/3Bg
- Wv2Zjor+xsC9//Px8f////////////////////////////////+5sq//bFxV/2xcVbV0XV0LAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVUDallVPGtcVIhtXVbba1tU/2tbVP6Ie3X9ta2p/+He
- 3f///////v7+/66mov9rW1T/bFpUoWZmZgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAbFtVLWtcVHpsXVXLa1tU/mtbVP9/cWv7j4N+/2tbVP9rWlSFAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAZlxSGWxaVWZsXFW1bFxV8GtbU2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8H
- /0H8AP9B+AAPQfAAA0HgAANBwAADQYAAAUEAAAFBAAABQQAAAUEAAAFBAAAAQQAAAEGAAABBgAAAQYAA
- AEGAAABBgAABQcAAA0HAAAdBwAAPQfAAH0H/AD9B/+D/QSgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJhW3tvYFn0dWZgsmxbVVdmVVUPAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAAnFiW5eCdG705OHg/8a/vf+UiYT0cWFa+Xdo
- YcptXFVsb15VHgAAAAAAAAAAAAAAAAAAAAAAAAAAbUlJB3NkXbKMgHr09/b2//////////////////r5
- +f/Szcv/oJeS9XNlXfZzZV7baVxVJwAAAAAAAAAAbVtbDnNjXciZj4n1+/r6////////////////////
- ///////////////////+/v7/pJqW+WxdVnYAAAAAamBVGHJkXdmnnpn2/f37/9S8E//axTP/2MIo/+XX
- cP/eqa3/zX2D/9CEif/IcHf//v39/83Ixf92Z2C8AAAAAHJjXOC5sK36//////7++//bxjb///////Xw
- yv/k1Gf/3KOn//Pf4P//////0IaL//79/f/w7u7/cWFb8gAAAAF0Zl/i4+Df///////+/vv/2cMr//bx
- zP/u5aL/5NRn/9yjp//px8n/8+Di/85/hf/+/f3//////3hpYvNuWlMldGReo8K7uf////////79/+PU
- Zv/j1Gb/49Rm//Dorv/qyMv/3KOn/9yjp//eqKz///7+//////+ajoryalxUXmpaVWCbkYzz//////7+
- //+ikfD/nYvv/52L7//Lwfb/ruL9/2bI+/9myPv/b8z8//7/////////wbq3/3RlXqJuWlMleGli8///
- ///8/P//d17p/97Y+v/DuPX/nYvv/2fJ+/+i3v3/zO3+/yuz+v/7/v///////+Pg3/90Zl/iAAAAAXFh
- W/Lw7u7//Pz//35m6v//////3df5/52L7/9nyfv/yuz+//////82t/r/+/7///////+5sK36cmNc4AAA
- AAB2Z2G+zsnH//z8//9iReX/fGTp/3Vb6P+jkvD/Z8n7/yiy+v8ztvr/E6v5//v9/v+to5/4c2Nd3m1b
- UhwAAAAAbF1WdqSalvn+/v7///////////////////////////////////////v6+v+Zj4r2c2ReyW1b
- Ww4AAAAAAAAAAGlcVSdzZV7bc2Vd9qCXkvXSzcv/+vn5//////////////////f29v+MgHr0c2Rdsm1J
- SQcAAAAAAAAAAAAAAAAAAAAAAAAAAG9eVR5rW1NrdGRexnBhWfiShoHvxr+9/uTh4P+CdG70c2RdmYCA
- gAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmVVUPbFtVV3VmYLJvYFn0cmFbewAA
- AAAAAAAAAAAAAAAAAAAAAAAA+D+sQeAHrEHAAaxBgAGsQQABrEEAAKxBAACsQQAArEEAAKxBAACsQQAA
- rEGAAKxBgAGsQYADrEHgB6xB/B+sQQ==
+ AAAAAAAAAAAAAP///yr///8q////Kv///yr///8q////Kv///yr///8qwLi0QXNjXeeEdnCZxcG9Pv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qvrezQ2xdVvzVz832lIeC3Yl8eKDCvro/////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q4ODbMmtb
+ VP/39/b//////+Xj4fuonprclYmEptXRzDf///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Km5eWPzg3dv/////////////////3drY/3Vl
+ X+r///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qrqikTHBhWv1xYlv/pJuX/PTz8v//////6efm/29gWff///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yrh3Nwzd2hh3bSsqPzc2df/fG5o/HJi
+ XP7KxMH+7+7t/2xcVfz///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Ku7u7i55a2XKlouG+P39/f///////////7u0sP9xY1v+joF7/GtbVP/u7u4u////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q1dHMN3lqZM2MgHr3+vn5////
+ ///////////////////u7Oz/fG1n/GtbVP+pn5xQ////Kv///yr///8q////Kv///yr///8q////KpuR
+ i2GTiIFtn5aRWrmxrkWTjIdodWVf6KCUkPn7+vr//////////////////////////////////v7+/6Wb
+ mPxxYlvzq6WeT////yr///8q////Kv///yr///8q////KnNkXeiIe3b1fXBq9HJjW/txYVr/xr+9/v//
+ ///////////////////////////////////////////////////Aubb9cWJb8rCmok3///8q////Kv//
+ /yr///8q////Kod6dIa/uLXq//////z7+/90ZV7+vLSx/////////////////////////v7/3aaq/9iY
+ nf/YmJ3/4bG1////////////vre0/XJiXPK5sbFF////Kv///yr///8q////Kt3Y2DR+cGri/v7+////
+ //+8s7D+dWdg/fz8/P/////////////////68vP/2p2i///////j9f7/y42W/93z/v/3/P///////6+n
+ o/t2aGHa7+npL////yr///8q////Kv///yqAc22f0szK8v/////8/Pz/fXBp/pyTjv7/////////////
+ ///68vP/2p2i/8Lp/v9Gvfv/r4KV/3fO/P9Yw/v///////38/P+Kfnn3gHJsqP///yr///8q////Kv//
+ /yrAvLhBh3l04f//////////4d7c/29fWP/OyMb////////////89/j/0IaL/7mouf+ro7n/yX6L/7Kk
+ 8v8ypPf/uKvz//n4/v/w7u7/cWFb+aCYkln///8q////Kv///yr///8qfW9ouKqhnfy1ran/urKv/42B
+ e/9xYlv+4N3b////////////9+rr/7TK4P+fwuD/kHTe/97Y+v8/s/r/ppbw/9HI9///////u7Ow/Xdp
+ Ytj5+fkr////Kv///yr///8qubGxRYBya5Z+cWuefnFqsH9xart1Z2Did2hi+ero5////////////+H0
+ /v9Uwvv/LpT1/1XC+/+Y2v3/uazz/8/G9///////+/r6/3prZfeSh4Js////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8qhHZxk3RlX/jY09H/////////////////inXs/9PL+P/Ty/j/oI7v/9LK
+ +P///////////7+4tf56a2XP////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KpCE
+ gG5wYVv1p52Z+vPx8f//////4Nr6/72x9P+9sfT/wbb1//r6/v////////////b19P9vX1j7ta6qSP//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yrAvLhBfW9otXFhW/m3sKz89/b2////
+ //////////////////////////////////+Wiob3hnlzh////yr///8q////Kv///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////KqqhmlF7bGXJcGFZ+5+UkPjZ1dP//fz8////////////////////
+ ///Bu7j/e21nyf///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv//
+ /yr///8qvrezQ4N1cJZ0Zl/pcGFZ+5CEfvS2r6v+zsjG/+Th3//Pysj/dGVf7f///yr///8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8qvba2QoyA
+ e3h+cWuqe21m0XRlX+1vYFn3b2BZ8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
+ /0EAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA
+ AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABB////QSgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8q////Kv///yr///8q////KsvHxzt6a2bfk4eDgO/p6S////8q////Kv//
+ /yr///8q////Kv///yr///8q////Kv///yr///8q////Kv///yrZ1dU2koaB6eTi4Paso5/Npp2Zc/T0
+ 9C3///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////KoN0b/L9/f3//////9zY
+ 1vePg36m////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q////Kp2TjmOEdnD4hXZx/NrW
+ 1f3y8PD/hnlzxv///yr///8q////Kv///yr///8q////Kv///yr///8q////KsjEvzyBc23n8/Hx/+nn
+ 5v+BdG77rKSg+oR2cc////8q////Kv///yr///8q////Kv///yr///8q////KsXBvT5/cWvf4d7c/v//
+ /////////f39/5aKhfl5a2Xu6uTkMP///yr///8q////Kv///yqDdG+/hnhyxIJ1cMKCdW7q4+Df/v//
+ ////////////////////////ysTC+YF0bcb5+fks////Kv///yr///8qkIR+uurn5v+6s7D9mI6J+v//
+ //////////////Ha3P/jt7r/6sfK//////+/ubX2hnlzsf///yr///8q////KqCVkF7Tz8zo+/r6/35w
+ a/zy8fD////////////jtbn/5fb+/66iuP+m3/3//////6KXk/CXi4Zu////Kv///yr5+fkro5iUxP//
+ ///Oycf8iXx2+v//////////4rO2/43E6P/PprH/icv7/8rf+//5+Pj/gnNu6NnV1Tb///8q////KpmP
+ iX2zq6jzvbaz+H5wav2rop76//////bp6v+ar8z/sZrV/3+19/+PnfL/5+P7/83HxfuLfnmg////Kv//
+ /yrv6ekvmo+KYpCDfnGJenR/e21m3tDLyPr/////3PP+/16j9f+V2f3/zsb3/9/a+v/+/v7/hHdx6OXl
+ 5TH///8q////Kv///yr///8q////Kubg4DKBdG7It6+s9v38/P/b1Pn/sqTy/6+h8v/29P7//////721
+ svaUh4N3////Kv///yr///8q////Kv///yr///8q+fn5LIyAepKDdnDp19PR/f7+/v//////////////
+ ///u7Oz/h3hzxf///yr///8q////Kv///yr///8q////Kv///yr///8qwr66P4h6da+CdW7qtq6r9eHe
+ 3P/8/Pz//////4R2ceL///8q////Kv///yr///8q////Kv///yr///8q////Kv///yr///8q4ODbMpSJ
+ gm6HenS2f3Fr34N2cOhzY13xAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAA
+ rEEAAKxBAACsQQAArEEAAKxBAACsQQ==
\ No newline at end of file
diff --git a/Models/AppOptions.cs b/Models/AppOptions.cs
new file mode 100644
index 0000000..afd46e7
--- /dev/null
+++ b/Models/AppOptions.cs
@@ -0,0 +1,27 @@
+using System.Collections.Generic;
+using System.Drawing;
+
+namespace RokettoLaunch.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 Groups { get; set; } = new List();
+
+ public Point StartPosition { get; set; } = Point.Empty;
+
+ public int Height { get; set; } = 280;
+
+ }
+}
\ No newline at end of file
diff --git a/Models/LauncherSession.cs b/Models/LauncherSession.cs
deleted file mode 100644
index 784b2d8..0000000
--- a/Models/LauncherSession.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System.Collections.Generic;
-using System.Drawing;
-
-namespace FizzyLauncher.Models
-{
- public class LauncherSession
- {
- 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 HotKeyOptions 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 Groups { get; set; } = new List();
-
- public Point StartPosition { get; set; } = Point.Empty;
-
- }
-}
\ No newline at end of file
diff --git a/Models/NewFormModel.cs b/Models/NewFormModel.cs
new file mode 100644
index 0000000..7756338
--- /dev/null
+++ b/Models/NewFormModel.cs
@@ -0,0 +1,10 @@
+namespace RokettoLaunch.Models
+{
+ public class NewFormModel
+ {
+ public int ColumnCount { get; set; } = 8;
+
+ public int GroupCount { get; set; } = 1;
+
+ }
+}
\ No newline at end of file
diff --git a/Models/TileGroupModel.cs b/Models/TileGroupModel.cs
index 5ce4fd1..d5e25ef 100644
--- a/Models/TileGroupModel.cs
+++ b/Models/TileGroupModel.cs
@@ -2,7 +2,7 @@
using System.Drawing;
using System.Text.Json.Serialization;
-namespace FizzyLauncher.Models
+namespace RokettoLaunch.Models
{
public class TileGroupModel
{
@@ -10,8 +10,6 @@ namespace FizzyLauncher.Models
public bool IsExpanded { get; set; } = false;
- public bool IsExclusive { get; set; } = false;
-
public List Items { get; set; } = new List();
[JsonConverter(typeof(RyzStudio.Text.Json.JsonSizeConverter))]
diff --git a/Models/TileModel.cs b/Models/TileModel.cs
index d7fe793..e61f02d 100644
--- a/Models/TileModel.cs
+++ b/Models/TileModel.cs
@@ -4,7 +4,7 @@ using System.Diagnostics;
using System.Drawing;
using System.Text.Json.Serialization;
-namespace FizzyLauncher.Models
+namespace RokettoLaunch.Models
{
public class TileModel
{
diff --git a/NewForm.cs b/NewForm.cs
index d6691ab..c0b5adc 100644
--- a/NewForm.cs
+++ b/NewForm.cs
@@ -1,124 +1,168 @@
-using RyzStudio.Windows.ThemedForms;
-using System;
+using System.Windows.Forms;
+using RokettoLaunch.Models;
+using RyzStudio.Windows.Forms;
+using RyzStudio.Windows.ThemedForms;
-namespace FizzyLauncher
+namespace RokettoLaunch
{
- public class NewForm : TDialogForm
+ public class NewForm : TDialog
{
private System.Windows.Forms.Label label1;
- private TButton button1;
- private TNumericBox numericBox1;
+ private ThButton button1;
+ private ThNumericBox numericBox1;
+ private ThNumericBox numericBox2;
+ private Label label2;
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator1;
- public NewForm(MainForm parent) : base()
+ public NewForm()
{
InitializeComponent();
- parentForm = parent;
+ this.OkButton = button1;
numericBox1.Minimum = 4;
numericBox1.Maximum = 24;
- numericBox1.Value = 6;
+ numericBox1.Value = 8;
+ numericBox2.Minimum = 1;
+ numericBox2.Maximum = 8;
+ numericBox2.Value = 1;
}
private void InitializeComponent()
{
- this.label1 = new System.Windows.Forms.Label();
- this.button1 = new RyzStudio.Windows.ThemedForms.TButton();
- this.tHorizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator();
- this.numericBox1 = new RyzStudio.Windows.ThemedForms.TNumericBox();
- this.SuspendLayout();
+ label1 = new Label();
+ button1 = new ThButton();
+ tHorizontalSeparator1 = new THorizontalSeparator();
+ numericBox1 = new ThNumericBox();
+ numericBox2 = new ThNumericBox();
+ label2 = new Label();
+ SuspendLayout();
//
// 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(137, 34);
- this.label1.TabIndex = 153;
- this.label1.Text = "Number of Tiles Per Row";
- this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ 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(76, 34);
+ label1.TabIndex = 153;
+ label1.Text = "Tiles Per Row";
+ 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, 109);
- 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;
- this.button1.Click += new System.EventHandler(this.button1_Click);
+ 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 = "&OK";
+ button1.Location = new System.Drawing.Point(241, 369);
+ 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;
//
// tHorizontalSeparator1
//
- this.tHorizontalSeparator1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.tHorizontalSeparator1.AutoScrollMargin = new System.Drawing.Size(0, 0);
- this.tHorizontalSeparator1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
- this.tHorizontalSeparator1.BackColor = System.Drawing.Color.Transparent;
- this.tHorizontalSeparator1.Location = new System.Drawing.Point(10, 77);
- this.tHorizontalSeparator1.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
- this.tHorizontalSeparator1.MaximumSize = new System.Drawing.Size(4920, 2);
- this.tHorizontalSeparator1.MinimumSize = new System.Drawing.Size(0, 22);
- this.tHorizontalSeparator1.Name = "tHorizontalSeparator1";
- this.tHorizontalSeparator1.Padding = new System.Windows.Forms.Padding(0, 10, 0, 10);
- this.tHorizontalSeparator1.Size = new System.Drawing.Size(364, 22);
- this.tHorizontalSeparator1.TabIndex = 188;
+ tHorizontalSeparator1.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ tHorizontalSeparator1.AutoScrollMargin = new System.Drawing.Size(0, 0);
+ tHorizontalSeparator1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
+ tHorizontalSeparator1.BackColor = System.Drawing.Color.Transparent;
+ tHorizontalSeparator1.Location = new System.Drawing.Point(10, 337);
+ tHorizontalSeparator1.Margin = new Padding(0, 10, 0, 0);
+ tHorizontalSeparator1.MaximumSize = new System.Drawing.Size(4920, 2);
+ tHorizontalSeparator1.MinimumSize = new System.Drawing.Size(0, 22);
+ tHorizontalSeparator1.Name = "tHorizontalSeparator1";
+ tHorizontalSeparator1.Size = new System.Drawing.Size(364, 22);
+ tHorizontalSeparator1.TabIndex = 188;
+ tHorizontalSeparator1.TabStop = false;
//
// numericBox1
//
- this.numericBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.numericBox1.BackColor = System.Drawing.Color.Transparent;
- this.numericBox1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.numericBox1.Location = new System.Drawing.Point(285, 20);
- this.numericBox1.Margin = new System.Windows.Forms.Padding(10, 6, 10, 6);
- this.numericBox1.Name = "numericBox1";
- this.numericBox1.Padding = new System.Windows.Forms.Padding(8, 8, 7, 7);
- this.numericBox1.Size = new System.Drawing.Size(84, 34);
- this.numericBox1.AcceptButton = null;
- this.numericBox1.TabIndex = 189;
- this.numericBox1.Value = 0;
+ numericBox1.AcceptButton = null;
+ numericBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ numericBox1.BackColor = System.Drawing.Color.Transparent;
+ numericBox1.EnableReactiveVisual = true;
+ numericBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
+ numericBox1.Location = new System.Drawing.Point(285, 20);
+ numericBox1.Margin = new Padding(10, 10, 10, 0);
+ numericBox1.Maximum = 100;
+ numericBox1.Minimum = 1;
+ numericBox1.Name = "numericBox1";
+ numericBox1.Padding = new Padding(4, 4, 3, 3);
+ numericBox1.Size = new System.Drawing.Size(84, 32);
+ numericBox1.TabIndex = 189;
+ numericBox1.TabStop = false;
+ numericBox1.Value = 1;
+ //
+ // numericBox2
+ //
+ numericBox2.AcceptButton = null;
+ numericBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ numericBox2.BackColor = System.Drawing.Color.Transparent;
+ numericBox2.EnableReactiveVisual = true;
+ numericBox2.Font = new System.Drawing.Font("Segoe UI", 9F);
+ numericBox2.Location = new System.Drawing.Point(285, 62);
+ numericBox2.Margin = new Padding(10, 10, 10, 0);
+ numericBox2.Maximum = 100;
+ numericBox2.Minimum = 1;
+ numericBox2.Name = "numericBox2";
+ numericBox2.Padding = new Padding(4, 4, 3, 3);
+ numericBox2.Size = new System.Drawing.Size(84, 32);
+ numericBox2.TabIndex = 191;
+ numericBox2.TabStop = false;
+ numericBox2.Value = 1;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.BackColor = System.Drawing.Color.Transparent;
+ label2.ForeColor = System.Drawing.SystemColors.ControlText;
+ label2.Location = new System.Drawing.Point(10, 63);
+ label2.Margin = new Padding(0);
+ label2.Name = "label2";
+ label2.Padding = new Padding(0, 9, 0, 10);
+ label2.Size = new System.Drawing.Size(106, 34);
+ label2.TabIndex = 190;
+ label2.Text = "Number of Groups";
+ label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// NewForm
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(384, 161);
- this.Controls.Add(this.numericBox1);
- this.Controls.Add(this.tHorizontalSeparator1);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.label1);
- this.MinimumSize = new System.Drawing.Size(400, 200);
- this.Name = "NewForm";
- this.Text = "New";
- this.ResumeLayout(false);
- this.PerformLayout();
-
+ AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new System.Drawing.Size(384, 421);
+ Controls.Add(numericBox2);
+ Controls.Add(label2);
+ Controls.Add(numericBox1);
+ Controls.Add(tHorizontalSeparator1);
+ Controls.Add(button1);
+ Controls.Add(label1);
+ MinimumSize = new System.Drawing.Size(400, 200);
+ Name = "NewForm";
+ Text = "New";
+ ResumeLayout(false);
+ PerformLayout();
}
- public MainForm parentForm { get; set; } = null;
-
-
- private void button1_Click(object sender, EventArgs e)
+ public NewFormModel Result
{
- if (parentForm != null)
+ get => new NewFormModel()
{
- parentForm.Clear(numericBox1.Value);
- }
-
- this.Close();
+ ColumnCount = numericBox1.Value,
+ GroupCount = numericBox2.Value
+ };
}
}
diff --git a/NewForm.resx b/NewForm.resx
index f298a7b..af32865 100644
--- a/NewForm.resx
+++ b/NewForm.resx
@@ -1,4 +1,64 @@
-
+
+
+
diff --git a/OptionsForm.cs b/OptionsForm.cs
index 8e845e5..4a37aa7 100644
--- a/OptionsForm.cs
+++ b/OptionsForm.cs
@@ -1,279 +1,429 @@
-using FizzyLauncher.Models;
+using System;
+using System.Linq;
+using System.Windows.Forms;
+using RokettoLaunch.Models;
+using RyzStudio.Windows.Forms;
using RyzStudio.Windows.ThemedForms;
using RyzStudio.Windows.ThemedForms.ButtonTextBox;
using RyzStudio.Windows.ThemedForms.PickerBox;
-using System;
-namespace FizzyLauncher
+namespace RokettoLaunch
{
- public class OptionsForm : TDialogForm
+ public class OptionsForm : TDialog
{
private System.Windows.Forms.Label label1;
- private TButton button1;
- private TYesNoPickerBox pickerBox2;
+ private ThButton button1;
+ private ThYesNoPickerBox yesNoPickerBox2;
private System.Windows.Forms.Label label6;
- private TYesNoPickerBox pickerBox3;
+ private ThYesNoPickerBox yesNoPickerBox3;
private System.Windows.Forms.Label label7;
- private System.Windows.Forms.Label label8;
- private TPickerBox pickerBox1;
private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator1;
- private TKeyCodeTextBox textBox1;
+ private ThKeyCodeTextBox textBox1;
+ private ThNumericBox numericBox1;
+ private Label label4;
+ private FlowLayoutPanel flowLayoutPanel1;
+ private TTogglePanel tTogglePanel1;
+ private TTogglePanel tTogglePanel2;
+ private ThYesNoPickerBox yesNoPickerBox1;
+ private Label label2;
+ private ThYesNoPickerBox yesNoPickerBox4;
+ private Label label3;
+
+ private AppOptions _appSession = null;
- public OptionsForm(MainForm parent) : base()
+ public OptionsForm(AppOptions appSession)
{
InitializeComponent();
- parentForm = parent;
+ this.OkButton = button1;
- pickerBox1.ComboBox.Items.Clear();
- foreach (string item in Enum.GetNames(typeof(LauncherSession.AutoSaveOption)))
+ numericBox1.Minimum = 4;
+ numericBox1.Maximum = 24;
+
+ _appSession = appSession;
+
+ if (_appSession != null)
{
- pickerBox1.ComboBox.Items.Add(item);
+ numericBox1.Value = _appSession.TilesPerRow;
+ yesNoPickerBox1.Value = _appSession.ShowBigIcons;
+ textBox1.UpdateKeyCode(_appSession?.ShowToggleHotkey ?? new ThKeyCodeTextBox.Results());
+ yesNoPickerBox2.Value = _appSession.HideOnClose;
+ yesNoPickerBox3.Value = _appSession.HideOnExecute;
+ yesNoPickerBox4.Value = _appSession.AlwaysOnTop;
}
-
- if (pickerBox1.ComboBox.Items.Count > 0) pickerBox1.ComboBox.SelectedIndex = 0;
-
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionsForm));
- TKeyCodeTextBox.Results results1 = new TKeyCodeTextBox.Results();
- this.label1 = new System.Windows.Forms.Label();
- this.button1 = new TButton();
- this.pickerBox2 = new TYesNoPickerBox();
- this.label6 = new System.Windows.Forms.Label();
- this.pickerBox3 = new TYesNoPickerBox();
- this.label7 = new System.Windows.Forms.Label();
- this.label8 = new System.Windows.Forms.Label();
- this.pickerBox1 = new TPickerBox();
- this.tHorizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator();
- this.textBox1 = new TKeyCodeTextBox();
- this.SuspendLayout();
- //
+ ThKeyCodeTextBox.Results results1 = new ThKeyCodeTextBox.Results();
+ label1 = new Label();
+ button1 = new ThButton();
+ yesNoPickerBox2 = new ThYesNoPickerBox();
+ label6 = new Label();
+ yesNoPickerBox3 = new ThYesNoPickerBox();
+ label7 = new Label();
+ tHorizontalSeparator1 = new THorizontalSeparator();
+ textBox1 = new ThKeyCodeTextBox();
+ numericBox1 = new ThNumericBox();
+ label4 = new Label();
+ flowLayoutPanel1 = new FlowLayoutPanel();
+ tTogglePanel1 = new TTogglePanel();
+ yesNoPickerBox1 = new ThYesNoPickerBox();
+ label2 = new Label();
+ tTogglePanel2 = new TTogglePanel();
+ yesNoPickerBox4 = new ThYesNoPickerBox();
+ label3 = new Label();
+ flowLayoutPanel1.SuspendLayout();
+ tTogglePanel1.SuspendLayout();
+ tTogglePanel2.SuspendLayout();
+ SuspendLayout();
+ //
// 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(107, 34);
- this.label1.TabIndex = 153;
- this.label1.Text = "Show/Hide Hotkey";
- this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
+ //
+ label1.AutoSize = true;
+ label1.BackColor = System.Drawing.Color.Transparent;
+ label1.ForeColor = System.Drawing.SystemColors.ControlText;
+ label1.Location = new System.Drawing.Point(1, 22);
+ label1.Margin = new Padding(0);
+ label1.Name = "label1";
+ label1.Padding = new Padding(0, 8, 0, 0);
+ label1.Size = new System.Drawing.Size(115, 23);
+ label1.TabIndex = 153;
+ label1.Text = "Show Toggle Hotkey";
+ 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;
- this.button1.Click += new System.EventHandler(this.button1_Click);
- //
- // pickerBox2
- //
- this.pickerBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.pickerBox2.BackColor = System.Drawing.Color.Transparent;
- this.pickerBox2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.pickerBox2.Location = new System.Drawing.Point(285, 103);
- this.pickerBox2.Margin = new System.Windows.Forms.Padding(10, 4, 10, 4);
- this.pickerBox2.Name = "pickerBox2";
- this.pickerBox2.Padding = new System.Windows.Forms.Padding(10, 6, 7, 5);
- this.pickerBox2.Size = new System.Drawing.Size(84, 34);
- this.pickerBox2.AcceptButton = null;
- this.pickerBox2.TabIndex = 183;
- this.pickerBox2.Value = true;
- //
+ //
+ 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(301, 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;
+ //
+ // yesNoPickerBox2
+ //
+ yesNoPickerBox2.AcceptButton = null;
+ yesNoPickerBox2.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ yesNoPickerBox2.BackColor = System.Drawing.Color.Transparent;
+ yesNoPickerBox2.EnableReactiveVisual = true;
+ yesNoPickerBox2.Font = new System.Drawing.Font("Segoe UI", 9F);
+ yesNoPickerBox2.Location = new System.Drawing.Point(307, 63);
+ yesNoPickerBox2.Margin = new Padding(10, 10, 10, 0);
+ yesNoPickerBox2.Name = "yesNoPickerBox2";
+ yesNoPickerBox2.Padding = new Padding(4, 4, 3, 3);
+ yesNoPickerBox2.SelectedIndex = 1;
+ yesNoPickerBox2.Size = new System.Drawing.Size(84, 34);
+ yesNoPickerBox2.TabIndex = 183;
+ yesNoPickerBox2.TabStop = false;
+ yesNoPickerBox2.Value = true;
+ //
// label6
- //
- this.label6.AutoSize = true;
- this.label6.BackColor = System.Drawing.Color.Transparent;
- this.label6.ForeColor = System.Drawing.SystemColors.ControlText;
- this.label6.Location = new System.Drawing.Point(10, 103);
- this.label6.Margin = new System.Windows.Forms.Padding(0);
- this.label6.Name = "label6";
- this.label6.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
- this.label6.Size = new System.Drawing.Size(83, 34);
- this.label6.TabIndex = 182;
- this.label6.Text = "Hide On Close";
- this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // pickerBox3
- //
- this.pickerBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.pickerBox3.BackColor = System.Drawing.Color.Transparent;
- this.pickerBox3.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.pickerBox3.Location = new System.Drawing.Point(285, 144);
- this.pickerBox3.Margin = new System.Windows.Forms.Padding(10, 4, 10, 4);
- this.pickerBox3.Name = "pickerBox3";
- this.pickerBox3.Padding = new System.Windows.Forms.Padding(10, 6, 7, 5);
- this.pickerBox3.Size = new System.Drawing.Size(84, 34);
- this.pickerBox3.AcceptButton = null;
- this.pickerBox3.TabIndex = 185;
- this.pickerBox3.Value = true;
- //
+ //
+ label6.AutoSize = true;
+ label6.BackColor = System.Drawing.Color.Transparent;
+ label6.ForeColor = System.Drawing.SystemColors.ControlText;
+ label6.Location = new System.Drawing.Point(1, 63);
+ label6.Margin = new Padding(0);
+ label6.Name = "label6";
+ label6.Padding = new Padding(0, 8, 0, 0);
+ label6.Size = new System.Drawing.Size(83, 23);
+ label6.TabIndex = 182;
+ label6.Text = "Hide On Close";
+ label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // yesNoPickerBox3
+ //
+ yesNoPickerBox3.AcceptButton = null;
+ yesNoPickerBox3.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ yesNoPickerBox3.BackColor = System.Drawing.Color.Transparent;
+ yesNoPickerBox3.EnableReactiveVisual = true;
+ yesNoPickerBox3.Font = new System.Drawing.Font("Segoe UI", 9F);
+ yesNoPickerBox3.Location = new System.Drawing.Point(307, 107);
+ yesNoPickerBox3.Margin = new Padding(10, 10, 10, 0);
+ yesNoPickerBox3.Name = "yesNoPickerBox3";
+ yesNoPickerBox3.Padding = new Padding(4, 4, 3, 3);
+ yesNoPickerBox3.SelectedIndex = 1;
+ yesNoPickerBox3.Size = new System.Drawing.Size(84, 34);
+ yesNoPickerBox3.TabIndex = 185;
+ yesNoPickerBox3.TabStop = false;
+ yesNoPickerBox3.Value = true;
+ //
// label7
- //
- this.label7.AutoSize = true;
- this.label7.BackColor = System.Drawing.Color.Transparent;
- this.label7.ForeColor = System.Drawing.SystemColors.ControlText;
- this.label7.Location = new System.Drawing.Point(10, 144);
- this.label7.Margin = new System.Windows.Forms.Padding(0);
- this.label7.Name = "label7";
- this.label7.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
- this.label7.Size = new System.Drawing.Size(95, 34);
- this.label7.TabIndex = 184;
- this.label7.Text = "Hide On Execute";
- this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // label8
- //
- this.label8.AutoSize = true;
- this.label8.BackColor = System.Drawing.Color.Transparent;
- this.label8.ForeColor = System.Drawing.SystemColors.ControlText;
- this.label8.Location = new System.Drawing.Point(10, 62);
- this.label8.Margin = new System.Windows.Forms.Padding(0);
- this.label8.Name = "label8";
- this.label8.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
- this.label8.Size = new System.Drawing.Size(60, 34);
- this.label8.TabIndex = 186;
- this.label8.Text = "Auto Save";
- this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // 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("Segoe UI", 9F, 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, 4, 10, 4);
- 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 = 187;
- //
+ //
+ label7.AutoSize = true;
+ label7.BackColor = System.Drawing.Color.Transparent;
+ label7.ForeColor = System.Drawing.SystemColors.ControlText;
+ label7.Location = new System.Drawing.Point(1, 107);
+ label7.Margin = new Padding(0);
+ label7.Name = "label7";
+ label7.Padding = new Padding(0, 8, 0, 0);
+ label7.Size = new System.Drawing.Size(95, 23);
+ label7.TabIndex = 184;
+ label7.Text = "Hide On Execute";
+ label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
// tHorizontalSeparator1
- //
- this.tHorizontalSeparator1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.tHorizontalSeparator1.AutoScrollMargin = new System.Drawing.Size(0, 0);
- this.tHorizontalSeparator1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
- this.tHorizontalSeparator1.BackColor = System.Drawing.Color.Transparent;
- this.tHorizontalSeparator1.Location = new System.Drawing.Point(10, 437);
- this.tHorizontalSeparator1.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
- this.tHorizontalSeparator1.MaximumSize = new System.Drawing.Size(4920, 2);
- this.tHorizontalSeparator1.MinimumSize = new System.Drawing.Size(0, 22);
- this.tHorizontalSeparator1.Name = "tHorizontalSeparator1";
- this.tHorizontalSeparator1.Padding = new System.Windows.Forms.Padding(0, 10, 0, 10);
- this.tHorizontalSeparator1.Size = new System.Drawing.Size(364, 22);
- this.tHorizontalSeparator1.TabIndex = 188;
- //
+ //
+ tHorizontalSeparator1.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ tHorizontalSeparator1.AutoScrollMargin = new System.Drawing.Size(0, 0);
+ tHorizontalSeparator1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
+ tHorizontalSeparator1.BackColor = System.Drawing.Color.Transparent;
+ tHorizontalSeparator1.Location = new System.Drawing.Point(10, 437);
+ tHorizontalSeparator1.Margin = new Padding(0, 10, 0, 0);
+ tHorizontalSeparator1.MaximumSize = new System.Drawing.Size(4920, 2);
+ tHorizontalSeparator1.MinimumSize = new System.Drawing.Size(0, 22);
+ tHorizontalSeparator1.Name = "tHorizontalSeparator1";
+ tHorizontalSeparator1.Size = new System.Drawing.Size(424, 22);
+ tHorizontalSeparator1.TabIndex = 188;
+ tHorizontalSeparator1.TabStop = false;
+ //
// 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("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.textBox1.HighlightImage = ((System.Drawing.Image)(resources.GetObject("textBox1.HighlightImage")));
+ //
+ textBox1.AcceptButton = null;
+ textBox1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ textBox1.BackColor = System.Drawing.Color.Transparent;
+ textBox1.EnableReactiveVisual = true;
+ textBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
+ textBox1.HighlightImage = (System.Drawing.Image)resources.GetObject("textBox1.HighlightImage");
results1.IsAlt = false;
results1.IsCtrl = false;
results1.IsShift = false;
- results1.Key = System.Windows.Forms.Keys.None;
- this.textBox1.KeyCodeResults = results1;
- this.textBox1.Location = new System.Drawing.Point(192, 20);
- this.textBox1.Margin = new System.Windows.Forms.Padding(10, 3, 3, 3);
- this.textBox1.Name = "textBox1";
- this.textBox1.NormalImage = ((System.Drawing.Image)(resources.GetObject("textBox1.NormalImage")));
- 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 = 189;
- this.textBox1.UseSystemPasswordChar = false;
- //
+ results1.Key = Keys.None;
+ textBox1.KeyCodeResults = results1;
+ textBox1.Location = new System.Drawing.Point(192, 21);
+ textBox1.Margin = new Padding(10, 10, 10, 0);
+ textBox1.Name = "textBox1";
+ textBox1.NormalImage = (System.Drawing.Image)resources.GetObject("textBox1.NormalImage");
+ textBox1.Padding = new Padding(4, 4, 3, 3);
+ textBox1.Size = new System.Drawing.Size(199, 32);
+ textBox1.TabIndex = 189;
+ textBox1.TabStop = false;
+ textBox1.UseSystemPasswordChar = false;
+ //
+ // numericBox1
+ //
+ numericBox1.AcceptButton = null;
+ numericBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ numericBox1.BackColor = System.Drawing.Color.Transparent;
+ numericBox1.EnableReactiveVisual = true;
+ numericBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
+ numericBox1.Location = new System.Drawing.Point(252, 22);
+ numericBox1.Margin = new Padding(10, 10, 10, 0);
+ numericBox1.Maximum = 100;
+ numericBox1.Minimum = 1;
+ numericBox1.Name = "numericBox1";
+ numericBox1.Padding = new Padding(4, 4, 3, 3);
+ numericBox1.Size = new System.Drawing.Size(139, 32);
+ numericBox1.TabIndex = 192;
+ numericBox1.TabStop = false;
+ numericBox1.Value = 1;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.BackColor = System.Drawing.Color.Transparent;
+ label4.ForeColor = System.Drawing.SystemColors.ControlText;
+ label4.Location = new System.Drawing.Point(1, 22);
+ label4.Margin = new Padding(0);
+ label4.Name = "label4";
+ label4.Padding = new Padding(0, 8, 0, 0);
+ label4.Size = new System.Drawing.Size(76, 23);
+ label4.TabIndex = 193;
+ label4.Text = "Tiles Per Row";
+ label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // flowLayoutPanel1
+ //
+ flowLayoutPanel1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ flowLayoutPanel1.AutoScroll = true;
+ flowLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
+ flowLayoutPanel1.Controls.Add(tTogglePanel1);
+ flowLayoutPanel1.Controls.Add(tTogglePanel2);
+ flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
+ flowLayoutPanel1.Location = new System.Drawing.Point(8, 12);
+ flowLayoutPanel1.Name = "flowLayoutPanel1";
+ flowLayoutPanel1.Size = new System.Drawing.Size(436, 412);
+ flowLayoutPanel1.TabIndex = 194;
+ flowLayoutPanel1.WrapContents = false;
+ flowLayoutPanel1.Resize += flowLayoutPanel1_Resize;
+ //
+ // tTogglePanel1
+ //
+ tTogglePanel1.AutoScrollMargin = new System.Drawing.Size(0, 0);
+ tTogglePanel1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
+ tTogglePanel1.Controls.Add(yesNoPickerBox1);
+ tTogglePanel1.Controls.Add(label2);
+ tTogglePanel1.Controls.Add(label4);
+ tTogglePanel1.Controls.Add(numericBox1);
+ tTogglePanel1.ExpandedHeight = 100;
+ tTogglePanel1.ForeColor = System.Drawing.Color.FromArgb(99, 105, 119);
+ tTogglePanel1.IsOpen = true;
+ tTogglePanel1.Location = new System.Drawing.Point(0, 0);
+ tTogglePanel1.Margin = new Padding(0);
+ tTogglePanel1.Name = "tTogglePanel1";
+ tTogglePanel1.Padding = new Padding(0, 22, 0, 0);
+ tTogglePanel1.Size = new System.Drawing.Size(401, 119);
+ tTogglePanel1.TabIndex = 0;
+ tTogglePanel1.Title = "Appearance";
+ tTogglePanel1.TitleContextMenuStrip = null;
+ tTogglePanel1.TitleCursor = Cursors.Default;
+ tTogglePanel1.TitlePadding = new Padding(4, 4, 0, 2);
+ //
+ // yesNoPickerBox1
+ //
+ yesNoPickerBox1.AcceptButton = null;
+ yesNoPickerBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ yesNoPickerBox1.BackColor = System.Drawing.Color.Transparent;
+ yesNoPickerBox1.EnableReactiveVisual = true;
+ yesNoPickerBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
+ yesNoPickerBox1.Location = new System.Drawing.Point(307, 64);
+ yesNoPickerBox1.Margin = new Padding(10, 10, 10, 0);
+ yesNoPickerBox1.Name = "yesNoPickerBox1";
+ yesNoPickerBox1.Padding = new Padding(4, 4, 3, 3);
+ yesNoPickerBox1.SelectedIndex = 1;
+ yesNoPickerBox1.Size = new System.Drawing.Size(84, 34);
+ yesNoPickerBox1.TabIndex = 195;
+ yesNoPickerBox1.TabStop = false;
+ yesNoPickerBox1.Value = true;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.BackColor = System.Drawing.Color.Transparent;
+ label2.ForeColor = System.Drawing.SystemColors.ControlText;
+ label2.Location = new System.Drawing.Point(1, 64);
+ label2.Margin = new Padding(0);
+ label2.Name = "label2";
+ label2.Padding = new Padding(0, 8, 0, 0);
+ label2.Size = new System.Drawing.Size(87, 23);
+ label2.TabIndex = 194;
+ label2.Text = "Show Big Icons";
+ label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // tTogglePanel2
+ //
+ tTogglePanel2.AutoScrollMargin = new System.Drawing.Size(0, 0);
+ tTogglePanel2.AutoScrollMinSize = new System.Drawing.Size(0, 0);
+ tTogglePanel2.Controls.Add(yesNoPickerBox4);
+ tTogglePanel2.Controls.Add(label3);
+ tTogglePanel2.Controls.Add(label1);
+ tTogglePanel2.Controls.Add(textBox1);
+ tTogglePanel2.Controls.Add(yesNoPickerBox2);
+ tTogglePanel2.Controls.Add(yesNoPickerBox3);
+ tTogglePanel2.Controls.Add(label6);
+ tTogglePanel2.Controls.Add(label7);
+ tTogglePanel2.ExpandedHeight = 100;
+ tTogglePanel2.ForeColor = System.Drawing.Color.FromArgb(99, 105, 119);
+ tTogglePanel2.IsOpen = true;
+ tTogglePanel2.Location = new System.Drawing.Point(0, 119);
+ tTogglePanel2.Margin = new Padding(0);
+ tTogglePanel2.Name = "tTogglePanel2";
+ tTogglePanel2.Padding = new Padding(0, 22, 0, 0);
+ tTogglePanel2.Size = new System.Drawing.Size(401, 206);
+ tTogglePanel2.TabIndex = 1;
+ tTogglePanel2.Title = "Behaviour";
+ tTogglePanel2.TitleContextMenuStrip = null;
+ tTogglePanel2.TitleCursor = Cursors.Default;
+ tTogglePanel2.TitlePadding = new Padding(4, 4, 0, 2);
+ //
+ // yesNoPickerBox4
+ //
+ yesNoPickerBox4.AcceptButton = null;
+ yesNoPickerBox4.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ yesNoPickerBox4.BackColor = System.Drawing.Color.Transparent;
+ yesNoPickerBox4.EnableReactiveVisual = true;
+ yesNoPickerBox4.Font = new System.Drawing.Font("Segoe UI", 9F);
+ yesNoPickerBox4.Location = new System.Drawing.Point(307, 151);
+ yesNoPickerBox4.Margin = new Padding(10, 10, 10, 0);
+ yesNoPickerBox4.Name = "yesNoPickerBox4";
+ yesNoPickerBox4.Padding = new Padding(4, 4, 3, 3);
+ yesNoPickerBox4.SelectedIndex = 1;
+ yesNoPickerBox4.Size = new System.Drawing.Size(84, 34);
+ yesNoPickerBox4.TabIndex = 191;
+ yesNoPickerBox4.TabStop = false;
+ yesNoPickerBox4.Value = true;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.BackColor = System.Drawing.Color.Transparent;
+ label3.ForeColor = System.Drawing.SystemColors.ControlText;
+ label3.Location = new System.Drawing.Point(1, 151);
+ label3.Margin = new Padding(0);
+ label3.Name = "label3";
+ label3.Padding = new Padding(0, 8, 0, 0);
+ label3.Size = new System.Drawing.Size(85, 23);
+ label3.TabIndex = 190;
+ label3.Text = "Always On Top";
+ label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
// OptionsForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(384, 521);
- this.Controls.Add(this.textBox1);
- this.Controls.Add(this.tHorizontalSeparator1);
- this.Controls.Add(this.pickerBox1);
- this.Controls.Add(this.label8);
- this.Controls.Add(this.pickerBox3);
- this.Controls.Add(this.label7);
- this.Controls.Add(this.pickerBox2);
- this.Controls.Add(this.label6);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.label1);
- this.MinimumSize = new System.Drawing.Size(400, 560);
- this.Name = "OptionsForm";
- this.Text = "Options";
- this.ResumeLayout(false);
- this.PerformLayout();
-
+ //
+ AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new System.Drawing.Size(444, 521);
+ Controls.Add(flowLayoutPanel1);
+ Controls.Add(tHorizontalSeparator1);
+ Controls.Add(button1);
+ MinimumSize = new System.Drawing.Size(460, 560);
+ Name = "OptionsForm";
+ Text = "Options";
+ flowLayoutPanel1.ResumeLayout(false);
+ tTogglePanel1.ResumeLayout(false);
+ tTogglePanel1.PerformLayout();
+ tTogglePanel2.ResumeLayout(false);
+ tTogglePanel2.PerformLayout();
+ ResumeLayout(false);
}
- protected override void OnShown(EventArgs e)
+ protected override void OnLoad(EventArgs e)
{
- base.OnShown(e);
+ base.OnLoad(e);
- if (parentForm == null)
- {
- return;
- }
-
- if (parentForm.CurrentSession == null)
- {
- return;
- }
-
- // hotkey
- if (parentForm.CurrentSession.HotKey != null)
- {
- textBox1.UpdateKeyCode(parentForm.CurrentSession.HotKey.IsCtrl, parentForm.CurrentSession.HotKey.IsAlt, parentForm.CurrentSession.HotKey.IsShift, parentForm.CurrentSession.HotKey.KeyCode);
- }
-
- pickerBox1.ComboBox.SelectedIndex = (int)parentForm.CurrentSession.AutoSave;
- pickerBox2.Value = parentForm.CurrentSession.HideOnClose;
- pickerBox3.Value = parentForm.CurrentSession.HideOnClick;
+ flowLayoutPanel1_Resize(null, e);
}
-
- public MainForm parentForm { get; set; } = null;
-
-
- private void button1_Click(object sender, EventArgs e)
+ private void flowLayoutPanel1_Resize(object sender, EventArgs e)
{
- if (parentForm != null)
+ var width = flowLayoutPanel1.ClientRectangle.Width - SystemInformation.VerticalScrollBarWidth;
+
+ foreach (var item in flowLayoutPanel1.Controls.OfType())
{
- if (parentForm.CurrentSession == null) parentForm.CurrentSession = new LauncherSession();
- if (parentForm.CurrentSession.HotKey == null) parentForm.CurrentSession.HotKey = new LauncherSession.HotKeyOptions();
-
- parentForm.CurrentSession.HotKey.IsCtrl = textBox1.KeyCodeResults.IsCtrl;
- parentForm.CurrentSession.HotKey.IsAlt = textBox1.KeyCodeResults.IsAlt;
- parentForm.CurrentSession.HotKey.IsShift = textBox1.KeyCodeResults.IsShift;
- parentForm.CurrentSession.HotKey.Key = textBox1.KeyCodeResults.KeyCode;
-
- parentForm.CurrentSession.AutoSave = (LauncherSession.AutoSaveOption)pickerBox1.ComboBox.SelectedIndex;
- parentForm.CurrentSession.HideOnClose = pickerBox2.Value;
- parentForm.CurrentSession.HideOnClick = pickerBox3.Value;
-
+ item.Width = width;
}
+ }
- this.Close();
+ public AppOptions Result
+ {
+ get
+ {
+ if (_appSession == null)
+ {
+ _appSession = new AppOptions();
+ }
+
+ _appSession.TilesPerRow = numericBox1.Value;
+ _appSession.ShowBigIcons = yesNoPickerBox1.Value;
+ _appSession.ShowToggleHotkey = textBox1.KeyCodeResults;
+ _appSession.HideOnClose = yesNoPickerBox2.Value;
+ _appSession.HideOnExecute = yesNoPickerBox3.Value;
+ _appSession.AlwaysOnTop = yesNoPickerBox4.Value;
+
+ return _appSession;
+ }
}
}
diff --git a/OptionsForm.resx b/OptionsForm.resx
index c8f691f..0386da6 100644
--- a/OptionsForm.resx
+++ b/OptionsForm.resx
@@ -1,4 +1,64 @@
-
+
+
+
@@ -60,21 +120,22 @@
- iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAClSURBVDhP7dI/
- DgFBGIbxSVTKjcRx3MLqXYCOjkocQcMF3MAZOIKaE5AthOexf2QnbJQKb/JLJvO9XzLFhCgtbHDBveB5
- DWcfM8ANC0wKnr1LUUsbHXSxxBlJxDtnduy6E04on/Utd0IPOxwxxBT9iHfO7Nh155kV9vmxMXbsVvkv
- vvIji4f82Bg7tcUxrpih/NyxOeyMUMVPu0WGd39TzuzQDeEB5/ZKvTSyulEAAAAASUVORK5CYII=
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ wQAADsEBuJFr7QAAAN5JREFUOE/tUzsKwkAUXLCyFMHjeIvdB4Gk8ALamU4rsbLaTWz0AOYGOYMewTqe
+ QLEQnZc8WRMSsBYHhrzPzJBin2pC60PPGLs3xl3Bp5DrHe9E1g2tHUH8QMjKmGReketyZkRWh9abfhTZ
+ YRimI4jWRPYSBMngkzzjHWtYyx6xK4X0Anz/7rcsxM4BdoxBTuTOqCdEaUyU6DrTuNqxxuXsEXsFDLfg
+ UdpOsIa10nr8A34p4CRtJ1jTGoC3PsPiBi78ETXplqzBwU3F5sHHgWWGJ3rHt+3tg+Uu84ek1AsYYd8q
+ EsfwCwAAAABJRU5ErkJggg==
- iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADTSURBVDhP7ZI7
- CsJQEEUfWFmK4HLchdpnA9ppp5W4BBtdQNyBC0ilRf6VdVyBwUL03JdXxC/YWThwmDcz94YJjKmH7/uN
- OI7XaZqekiS5Cr1hpZmTPQemAeILeU4eC/dWr+9kVQRB0MzzvB2GYQfBAsExiqJWHfU0k0ZaeQyNAuxa
- X1CYLMu6/MOW4kD2YAK9B9TznGYrj12XVZY0drb4ENJI68q/sR4/YoS9K9+GNHdGLmIEJV+cku1xP4Jh
- Ri7JQ2erDp3mBs7w6jaFZht74MaYGwmLbkeRGexGAAAAAElFTkSuQmCC
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ wQAADsEBuJFr7QAAANFJREFUOE/tkzEKAjEURANWliJ4HG+h9l5AO7fTSjyCxWpCIBB2b+AZ9AjW6wlc
+ LGSdWb9Elw1YiwOP/Pw/E1Ikqqksyzpa670x5goqgfWOM7HFhfAE5jvWNdYFkZq9sdg+laZp13vfBwOY
+ NjBfnHO9d9jjjB56mZG4UhgW4HXdbykkXl97iMYBnFFPrbUJGDVIOKOHXmYk/hSaW3CUbVT00CvboP8B
+ v3TASbZR0RM7YA5KsAT1J2phBUq8wpnEgvg5MMwxvGFte/uVzPLwkZR6AInAKK6aICfTAAAAAElFTkSu
+ QmCC
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
index 71f4564..9470017 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,10 +1,7 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
using System.Windows.Forms;
-namespace FizzyLauncher
+namespace RokettoLaunch
{
static class Program
{
diff --git a/References/HtmlAgilityPack.dll b/References/HtmlAgilityPack.dll
deleted file mode 100644
index d817f94..0000000
Binary files a/References/HtmlAgilityPack.dll and /dev/null differ
diff --git a/References/Ryz3core.deps.json b/References/Ryz3core.deps.json
deleted file mode 100644
index 0866e06..0000000
--- a/References/Ryz3core.deps.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v6.0/win-x64",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v6.0": {},
- ".NETCoreApp,Version=v6.0/win-x64": {
- "Ryz3core/0.1.5.035": {
- "dependencies": {
- "HtmlAgilityPack": "1.11.46",
- "System.Data.SQLite.Core": "1.0.117"
- },
- "runtime": {
- "Ryz3core.dll": {}
- }
- },
- "HtmlAgilityPack/1.11.46": {
- "runtime": {
- "lib/netstandard2.0/HtmlAgilityPack.dll": {
- "assemblyVersion": "1.11.46.0",
- "fileVersion": "1.11.46.0"
- }
- }
- },
- "Stub.System.Data.SQLite.Core.NetStandard/1.0.117": {
- "runtime": {
- "lib/netstandard2.1/System.Data.SQLite.dll": {
- "assemblyVersion": "1.0.117.0",
- "fileVersion": "1.0.117.0"
- }
- },
- "native": {
- "runtimes/win-x64/native/SQLite.Interop.dll": {
- "fileVersion": "1.0.117.0"
- }
- }
- },
- "System.Data.SQLite.Core/1.0.117": {
- "dependencies": {
- "Stub.System.Data.SQLite.Core.NetStandard": "1.0.117"
- }
- }
- }
- },
- "libraries": {
- "Ryz3core/0.1.5.035": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "HtmlAgilityPack/1.11.46": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-dLMn4EVfJBHWmWK4Uh0XGD76FPLHI0qr2Tm0s1m/xmgiHb1JUb9zB8AzO8HtrkBBlMN6JfCUBYddhqC0hZNR+g==",
- "path": "htmlagilitypack/1.11.46",
- "hashPath": "htmlagilitypack.1.11.46.nupkg.sha512"
- },
- "Stub.System.Data.SQLite.Core.NetStandard/1.0.117": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-x1zzPC/A4MmiKGDLoxLE6O5KLu7Kz7dyzhPQzlqYFTFcXmXAtM7hNNWpGw5yLEz833AnGbd/kxoitXArgR4YyA==",
- "path": "stub.system.data.sqlite.core.netstandard/1.0.117",
- "hashPath": "stub.system.data.sqlite.core.netstandard.1.0.117.nupkg.sha512"
- },
- "System.Data.SQLite.Core/1.0.117": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-lGfOhA3QQod9XhdWYqLgNgbgq5uZnVG6DtnhDAdPisbLpTTgZBNbeGnp+GWt8C+3EyaqBYTGJWXcxHlHKwo05A==",
- "path": "system.data.sqlite.core/1.0.117",
- "hashPath": "system.data.sqlite.core.1.0.117.nupkg.sha512"
- }
- }
-}
\ No newline at end of file
diff --git a/References/Ryz3core.dll b/References/Ryz3core.dll
deleted file mode 100644
index 2a0daf0..0000000
Binary files a/References/Ryz3core.dll and /dev/null differ
diff --git a/References/Ryz3ui.dll b/References/Ryz3ui.dll
deleted file mode 100644
index f77c4e4..0000000
Binary files a/References/Ryz3ui.dll and /dev/null differ
diff --git a/References/RyzStudio.8.1.2.244.nupkg b/References/RyzStudio.8.1.2.244.nupkg
new file mode 100644
index 0000000..e296f09
Binary files /dev/null and b/References/RyzStudio.8.1.2.244.nupkg differ
diff --git a/References/RyzStudio.Windows.Forms.8.1.2.246.nupkg b/References/RyzStudio.Windows.Forms.8.1.2.246.nupkg
new file mode 100644
index 0000000..b86205c
Binary files /dev/null and b/References/RyzStudio.Windows.Forms.8.1.2.246.nupkg differ
diff --git a/References/SQLite.Interop.dll b/References/SQLite.Interop.dll
deleted file mode 100644
index 0736a58..0000000
Binary files a/References/SQLite.Interop.dll and /dev/null differ
diff --git a/References/System.Data.SQLite.dll b/References/System.Data.SQLite.dll
deleted file mode 100644
index 58593e6..0000000
Binary files a/References/System.Data.SQLite.dll and /dev/null differ
diff --git a/Resources/icon-128.png b/Resources/icon-128.png
new file mode 100644
index 0000000..ab38161
Binary files /dev/null and b/Resources/icon-128.png differ
diff --git a/Resources/icon-64.png b/Resources/icon-64.png
new file mode 100644
index 0000000..1d94d28
Binary files /dev/null and b/Resources/icon-64.png differ
diff --git a/Resources/toggle-left-ea-16.png b/Resources/toggle-left-ea-16.png
deleted file mode 100644
index e7895fd..0000000
Binary files a/Resources/toggle-left-ea-16.png and /dev/null differ
diff --git a/Resources/toggle-right-ea-16.png b/Resources/toggle-right-ea-16.png
deleted file mode 100644
index aedd7c2..0000000
Binary files a/Resources/toggle-right-ea-16.png and /dev/null differ
diff --git a/FizzyLauncher.csproj b/RokettoLaunch.csproj
similarity index 58%
rename from FizzyLauncher.csproj
rename to RokettoLaunch.csproj
index 1a8e3e7..708b855 100644
--- a/FizzyLauncher.csproj
+++ b/RokettoLaunch.csproj
@@ -2,21 +2,22 @@
WinExe
- net6.0-windows
+ net8.0-windows8.0
true
true
favicon.ico
false
- fizzylauncher
+ rokettolaunch
Ray Lam
Hi, I'm Ray
- Fizzy Launcher
+ RokettoLaunch
Ray Lam
1.0.0.0
1.0.0.0
- 0.2.5.058
+ 0.3.0.153
False
x64
+ icon-128.png
@@ -45,10 +46,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -59,12 +78,8 @@
-
- References\Ryz3core.dll
-
-
- References\Ryz3ui.dll
-
+
+
@@ -83,4 +98,11 @@
+
+
+ True
+ \
+
+
+
\ No newline at end of file
diff --git a/Windows/Forms/EditGroupForm.cs b/Windows/Forms/EditGroupForm.cs
deleted file mode 100644
index 2b0314c..0000000
--- a/Windows/Forms/EditGroupForm.cs
+++ /dev/null
@@ -1,175 +0,0 @@
-using FizzyLauncher.Models;
-using RyzStudio.Windows.ThemedForms;
-using System;
-
-namespace FizzyLauncher.Windows.Forms
-{
- public class EditGroupForm : TDialogForm
- {
- public static void ShowDialog(TilePanelLayout control)
- {
- EditGroupForm form = new EditGroupForm();
- form.TilePanelLayout = control;
- form.ShowDialog();
- }
-
-
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Label label1;
- private TButton button1;
- private TPickerBox pickerBox1;
- private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
- private TTextBox textBox1;
-
-
- public EditGroupForm() : base()
- {
- InitializeComponent();
-
- pickerBox1.ComboBox.Items.Clear();
- pickerBox1.ComboBox.Items.AddRange(new string[] { "No", "Yes" });
- if (pickerBox1.ComboBox.Items.Count > 0) pickerBox1.ComboBox.SelectedIndex = 0;
- }
-
- private void InitializeComponent()
- {
- this.textBox1 = new RyzStudio.Windows.ThemedForms.TTextBox();
- this.label2 = new System.Windows.Forms.Label();
- this.label1 = new System.Windows.Forms.Label();
- this.button1 = new RyzStudio.Windows.ThemedForms.TButton();
- this.pickerBox1 = new RyzStudio.Windows.ThemedForms.TPickerBox();
- 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;
- this.button1.Click += new System.EventHandler(this.button1_Click);
- //
- // 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();
-
- }
-
- protected override void OnShown(EventArgs e)
- {
- base.OnShown(e);
-
- if (this.TilePanelLayout != null)
- {
- textBox1.Text = this.TilePanelLayout.Model.Title;
- pickerBox1.ComboBox.SelectedIndex = (this.TilePanelLayout.Model.IsExclusive ? 1 : 0);
- }
- }
-
-
- public TilePanelLayout TilePanelLayout { get; set; } = null;
-
-
- private void button1_Click(object sender, EventArgs e)
- {
- TileGroupModel model = this.TilePanelLayout.Model;
- model.Title = textBox1.Text?.Trim();
- model.IsExclusive = (pickerBox1.ComboBox.SelectedIndex == 1);
-
- this.TilePanelLayout.UpdateModel(model);
-
- this.Close();
- }
-
- }
-}
diff --git a/Windows/Forms/EditGroupForm.resx b/Windows/Forms/EditGroupForm.resx
deleted file mode 100644
index f298a7b..0000000
--- a/Windows/Forms/EditGroupForm.resx
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/Windows/Forms/EditTileFolderForm.cs b/Windows/Forms/EditTileFolderForm.cs
deleted file mode 100644
index 2bb45d7..0000000
--- a/Windows/Forms/EditTileFolderForm.cs
+++ /dev/null
@@ -1,393 +0,0 @@
-using FizzyLauncher.Models;
-using RyzStudio.Windows.ThemedForms;
-using System;
-using System.Diagnostics;
-using System.Drawing;
-using System.IO;
-using System.Linq;
-using System.Windows.Forms;
-
-namespace FizzyLauncher.Windows.Forms
-{
- public class EditTileFolderForm : TDialogForm
- {
- public static void ShowAddDialog(TilePanelLayout control, Point coord)
- {
- EditTileFolderForm form = new EditTileFolderForm(DialogModeType.Add);
- form.TilePanelLayout = control;
- form.AimCoord = coord;
- form.ShowDialog();
- }
-
- public static void ShowEditDialog(TilePanel control)
- {
- EditTileFolderForm form = new EditTileFolderForm(DialogModeType.Edit);
- form.TilePanel = control;
- form.ShowDialog();
- }
-
-
- private System.Windows.Forms.Label label1;
- private TButton button1;
- private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
- private TTextBox textBox1;
- private TListBox listBox1;
- private RyzStudio.Windows.Forms.THorizontalSeparator tHorizontalSeparator1;
- private System.Windows.Forms.Label label2;
-
-
- public enum DialogModeType
- {
- Add = 0,
- Edit
- }
-
-
- protected DialogModeType dialogMode = DialogModeType.Add;
-
-
- public EditTileFolderForm(DialogModeType dialogMode) : base()
- {
- InitializeComponent();
-
- this.DialogMode = dialogMode;
- }
-
- private void InitializeComponent()
- {
- this.textBox1 = new RyzStudio.Windows.ThemedForms.TTextBox();
- this.label1 = new System.Windows.Forms.Label();
- this.button1 = new RyzStudio.Windows.ThemedForms.TButton();
- this.horizontalSeparator2 = new RyzStudio.Windows.Forms.THorizontalSeparator();
- this.listBox1 = new RyzStudio.Windows.ThemedForms.TListBox();
- this.label2 = new System.Windows.Forms.Label();
- this.tHorizontalSeparator1 = 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;
- //
- // 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;
- this.button1.Click += new System.EventHandler(this.button1_Click);
- //
- // horizontalSeparator2
- //
- this.horizontalSeparator2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | 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, 61);
- 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 = 177;
- //
- // listBox1
- //
- this.listBox1.AllowDrop = true;
- this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.listBox1.BackColor = System.Drawing.Color.Transparent;
- this.listBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.listBox1.Location = new System.Drawing.Point(109, 87);
- this.listBox1.Margin = new System.Windows.Forms.Padding(10, 4, 10, 4);
- this.listBox1.Name = "listBox1";
- this.listBox1.Padding = new System.Windows.Forms.Padding(10, 6, 7, 5);
- this.listBox1.Size = new System.Drawing.Size(260, 346);
- this.listBox1.AcceptButton = null;
- this.listBox1.TabIndex = 180;
- this.listBox1.OnAdd += new System.EventHandler(this.listBox1_OnAdd);
- this.listBox1.OnEdit += new System.EventHandler(this.listBox1_OnEdit);
- this.listBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
- this.listBox1.DragOver += new System.Windows.Forms.DragEventHandler(this.listBox1_DragOver);
- //
- // 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(8, 87);
- this.label2.Name = "label2";
- this.label2.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
- this.label2.Size = new System.Drawing.Size(25, 34);
- this.label2.TabIndex = 181;
- this.label2.Text = "List";
- this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // tHorizontalSeparator1
- //
- this.tHorizontalSeparator1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.tHorizontalSeparator1.AutoScrollMargin = new System.Drawing.Size(0, 0);
- this.tHorizontalSeparator1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
- this.tHorizontalSeparator1.BackColor = System.Drawing.Color.Transparent;
- this.tHorizontalSeparator1.Location = new System.Drawing.Point(10, 437);
- this.tHorizontalSeparator1.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
- this.tHorizontalSeparator1.MaximumSize = new System.Drawing.Size(4920, 2);
- this.tHorizontalSeparator1.MinimumSize = new System.Drawing.Size(0, 22);
- this.tHorizontalSeparator1.Name = "tHorizontalSeparator1";
- this.tHorizontalSeparator1.Padding = new System.Windows.Forms.Padding(0, 10, 0, 10);
- this.tHorizontalSeparator1.Size = new System.Drawing.Size(364, 22);
- this.tHorizontalSeparator1.TabIndex = 182;
- //
- // EditTileFolderForm
- //
- this.ClientSize = new System.Drawing.Size(384, 521);
- this.Controls.Add(this.tHorizontalSeparator1);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.listBox1);
- this.Controls.Add(this.horizontalSeparator2);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.textBox1);
- this.MinimumSize = new System.Drawing.Size(400, 560);
- this.Name = "EditTileFolderForm";
- this.Text = "Add List Tile";
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- protected override void OnShown(EventArgs e)
- {
- base.OnShown(e);
-
- if (this.DialogMode == DialogModeType.Edit)
- {
- listBox1.ListBox.Items.Clear();
-
- if (this.TilePanel == null) return;
- if (this.TilePanel.ModelInfo == null) return;
-
- textBox1.Text = this.TilePanel.ModelInfo.Title;
-
- if (this.TilePanel.ModelInfo.Items != null)
- {
- foreach (TileModel item in this.TilePanel.ModelInfo.Items)
- {
- if (item.IsGroup)
- {
- continue;
- }
-
- listBox1.ListBox.Items.Add(item);
- }
- }
- }
- }
-
-
- public TilePanelLayout TilePanelLayout { get; set; } = null;
-
- public TilePanel TilePanel { get; set; } = null;
-
- public Point AimCoord { get; set; } = new Point(-1, -1);
-
- public DialogModeType DialogMode
- {
- get => dialogMode;
- set
- {
- dialogMode = value;
-
- switch (dialogMode)
- {
- case DialogModeType.Add:
- this.Text = "Add Folder";
- textBox1.Text = "New Folder";
- break;
- case DialogModeType.Edit:
- this.Text = "Edit Folder";
- break;
- default: break;
- }
- }
- }
-
-
- private void button1_Click(object sender, EventArgs e)
- {
- TileModel model = new TileModel()
- {
- Title = textBox1.Text?.Trim(),
- IsGroup = true
- };
-
- switch (this.DialogMode)
- {
- case DialogModeType.Add:
- if (!this.AimCoord.Equals(new Point(-1, -1)))
- {
- model.Position = this.AimCoord;
- }
-
- model.Items = new System.Collections.Generic.List();
-
- foreach (TileModel item in listBox1.ListBox.Items.OfType())
- {
- if (item.IsGroup)
- {
- continue;
- }
-
- model.Items.Add(item);
- }
-
- this.TilePanelLayout.AddTile(model);
-
- break;
- case DialogModeType.Edit:
- model.Items = new System.Collections.Generic.List();
-
- foreach (TileModel item in listBox1.ListBox.Items.OfType())
- {
- if (item.IsGroup)
- {
- continue;
- }
-
- model.Items.Add(item);
- }
-
- this.TilePanel.LoadInfo(model);
-
- break;
- default: break;
- }
-
- this.Close();
- }
-
- private void listBox1_OnAdd(object sender, EventArgs e) => EditTileForm.ShowAddDialog(listBox1);
-
- private void listBox1_OnEdit(object sender, EventArgs e)
- {
- if (listBox1.ListBox.Items.Count <= 0)
- {
- return;
- }
-
- if (listBox1.ListBox.SelectedIndex < 0)
- {
- return;
- }
-
- if (listBox1.ListBox.SelectedItem == null)
- {
- return;
- }
-
- EditTileForm.ShowEditDialog(listBox1);
- }
-
- private void listBox1_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
- {
- if (e.Data.GetDataPresent(DataFormats.FileDrop))
- {
- e.Effect = DragDropEffects.Link;
- }
- else
- {
- e.Effect = DragDropEffects.None;
- }
- }
-
- private void listBox1_DragDrop(object sender, DragEventArgs e)
- {
- string[] fileList = e.Data.GetData(DataFormats.FileDrop) as string[];
- 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]);
- }
- }
-
- listBox1.ListBox.Items.Add(model);
- }
-
- }
-}
\ No newline at end of file
diff --git a/Windows/Forms/EditTileFolderForm.resx b/Windows/Forms/EditTileFolderForm.resx
deleted file mode 100644
index f298a7b..0000000
--- a/Windows/Forms/EditTileFolderForm.resx
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/Windows/Forms/EditTileForm.cs b/Windows/Forms/EditTileForm.cs
deleted file mode 100644
index 0ef5e5f..0000000
--- a/Windows/Forms/EditTileForm.cs
+++ /dev/null
@@ -1,482 +0,0 @@
-using FizzyLauncher.Models;
-using RyzStudio.Windows.ThemedForms;
-using RyzStudio.Windows.ThemedForms.ButtonTextBox;
-using System;
-using System.Drawing;
-
-namespace FizzyLauncher.Windows.Forms
-{
- public class EditTileForm : TDialogForm
- {
- public static void ShowAddDialog(TilePanelLayout control, Point coord)
- {
- EditTileForm form = new EditTileForm(DialogModeType.Add);
- form.TilePanelLayout = control;
- form.AimCoord = coord;
- form.ShowDialog();
- }
-
- public static void ShowAddDialog(TListBox control)
- {
- EditTileForm form = new EditTileForm(DialogModeType.Add);
- form.ListBox = control;
- form.ShowDialog();
- }
-
- public static void ShowEditDialog(TilePanel control)
- {
- EditTileForm form = new EditTileForm(DialogModeType.Edit);
- form.TilePanel = control;
- form.ShowDialog();
- }
-
- public static void ShowEditDialog(TListBox control)
- {
- EditTileForm form = new EditTileForm(DialogModeType.Edit);
- form.ListBox = control;
- form.ShowDialog();
- }
-
-
- private System.Windows.Forms.Label label6;
- private System.Windows.Forms.Label label7;
- private System.Windows.Forms.Label label4;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Label label1;
- private TOpenFileTextBox textBox2;
- private TTextBox textBox3;
- private TFolderTextBox textBox4;
- private TButton button1;
- private TPickerBox pickerBox1;
- private TPickerBox pickerBox2;
- private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator1;
- private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
- private TTextBox textBox1;
-
-
- public enum DialogModeType
- {
- Add = 0,
- Edit
- }
-
-
- protected DialogModeType dialogMode = DialogModeType.Add;
-
-
- public EditTileForm(DialogModeType dialogMode) : base()
- {
- InitializeComponent();
-
- this.DialogMode = dialogMode;
-
- pickerBox1.ComboBox.Items.Clear();
- pickerBox1.ComboBox.Items.AddRange(new string[] { "Normal", "Hidden", "Minimized", "Maximized" });
- if (pickerBox1.ComboBox.Items.Count > 0) pickerBox1.ComboBox.SelectedIndex = 0;
-
- pickerBox2.ComboBox.Items.Clear();
- pickerBox2.ComboBox.Items.AddRange(new string[] { "No", "Yes" });
- if (pickerBox2.ComboBox.Items.Count > 0) pickerBox2.ComboBox.SelectedIndex = 0;
- }
-
- private void InitializeComponent()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditTileForm));
- this.textBox1 = new TTextBox();
- this.label6 = new System.Windows.Forms.Label();
- this.label7 = new System.Windows.Forms.Label();
- this.label4 = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label1 = new System.Windows.Forms.Label();
- this.textBox2 = new TOpenFileTextBox();
- this.textBox3 = new TTextBox();
- this.textBox4 = new TFolderTextBox();
- this.button1 = new TButton();
- this.pickerBox1 = new TPickerBox();
- this.pickerBox2 = new TPickerBox();
- this.horizontalSeparator1 = new RyzStudio.Windows.Forms.THorizontalSeparator();
- 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("Segoe UI", 9F, 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;
- //
- // label6
- //
- this.label6.AutoSize = true;
- this.label6.BackColor = System.Drawing.Color.Transparent;
- this.label6.ForeColor = System.Drawing.SystemColors.ControlText;
- this.label6.Location = new System.Drawing.Point(10, 250);
- this.label6.Name = "label6";
- this.label6.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
- this.label6.Size = new System.Drawing.Size(83, 34);
- this.label6.TabIndex = 163;
- this.label6.Text = "Run As Admin";
- this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // label7
- //
- this.label7.AutoSize = true;
- this.label7.BackColor = System.Drawing.Color.Transparent;
- this.label7.ForeColor = System.Drawing.SystemColors.ControlText;
- this.label7.Location = new System.Drawing.Point(10, 209);
- this.label7.Name = "label7";
- this.label7.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
- this.label7.Size = new System.Drawing.Size(79, 34);
- this.label7.TabIndex = 161;
- this.label7.Text = "Window Style";
- this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // label4
- //
- this.label4.AutoSize = true;
- this.label4.BackColor = System.Drawing.Color.Transparent;
- this.label4.ForeColor = System.Drawing.SystemColors.ControlText;
- this.label4.Location = new System.Drawing.Point(10, 144);
- this.label4.Name = "label4";
- this.label4.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
- this.label4.Size = new System.Drawing.Size(103, 34);
- this.label4.TabIndex = 159;
- this.label4.Text = "Working Directory";
- this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.BackColor = System.Drawing.Color.Transparent;
- this.label3.ForeColor = System.Drawing.SystemColors.ControlText;
- this.label3.Location = new System.Drawing.Point(10, 103);
- this.label3.Name = "label3";
- this.label3.Padding = new System.Windows.Forms.Padding(0, 9, 0, 10);
- this.label3.Size = new System.Drawing.Size(61, 34);
- this.label3.TabIndex = 157;
- this.label3.Text = "Argument";
- this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // 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(55, 34);
- this.label2.TabIndex = 155;
- this.label2.Text = "Filename";
- 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;
- //
- // textBox2
- //
- this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.textBox2.BackColor = System.Drawing.Color.Transparent;
- this.textBox2.FileDialog = null;
- this.textBox2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.textBox2.HighlightImage = ((System.Drawing.Image)(resources.GetObject("textBox2.HighlightImage")));
- this.textBox2.Location = new System.Drawing.Point(192, 61);
- this.textBox2.Margin = new System.Windows.Forms.Padding(10, 3, 3, 3);
- this.textBox2.Name = "textBox2";
- this.textBox2.NormalImage = ((System.Drawing.Image)(resources.GetObject("textBox2.NormalImage")));
- this.textBox2.Padding = new System.Windows.Forms.Padding(10, 10, 9, 9);
- this.textBox2.Size = new System.Drawing.Size(177, 35);
- this.textBox2.AcceptButton = null;
- this.textBox2.TabIndex = 170;
- this.textBox2.UseSystemPasswordChar = false;
- //
- // textBox3
- //
- this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.textBox3.BackColor = System.Drawing.Color.Transparent;
- this.textBox3.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.textBox3.Location = new System.Drawing.Point(192, 102);
- this.textBox3.Margin = new System.Windows.Forms.Padding(10, 6, 10, 6);
- this.textBox3.Name = "textBox3";
- this.textBox3.Padding = new System.Windows.Forms.Padding(10, 10, 9, 9);
- this.textBox3.Size = new System.Drawing.Size(177, 35);
- this.textBox3.AcceptButton = null;
- this.textBox3.TabIndex = 171;
- this.textBox3.UseSystemPasswordChar = false;
- //
- // textBox4
- //
- this.textBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.textBox4.BackColor = System.Drawing.Color.Transparent;
- this.textBox4.FolderDialog = null;
- this.textBox4.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.textBox4.HighlightImage = ((System.Drawing.Image)(resources.GetObject("textBox4.HighlightImage")));
- this.textBox4.Location = new System.Drawing.Point(192, 143);
- this.textBox4.Margin = new System.Windows.Forms.Padding(10, 3, 3, 3);
- this.textBox4.Name = "textBox4";
- this.textBox4.NormalImage = ((System.Drawing.Image)(resources.GetObject("textBox4.NormalImage")));
- this.textBox4.Padding = new System.Windows.Forms.Padding(10, 10, 9, 9);
- this.textBox4.Size = new System.Drawing.Size(177, 35);
- this.textBox4.AcceptButton = null;
- this.textBox4.TabIndex = 172;
- this.textBox4.UseSystemPasswordChar = false;
- //
- // 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;
- this.button1.Click += new System.EventHandler(this.button1_Click);
- //
- // 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("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.pickerBox1.Location = new System.Drawing.Point(241, 209);
- 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(128, 34);
- this.pickerBox1.AcceptButton = null;
- this.pickerBox1.TabIndex = 174;
- //
- // pickerBox2
- //
- this.pickerBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.pickerBox2.BackColor = System.Drawing.Color.Transparent;
- this.pickerBox2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
- this.pickerBox2.Location = new System.Drawing.Point(285, 250);
- this.pickerBox2.Margin = new System.Windows.Forms.Padding(10, 6, 10, 6);
- this.pickerBox2.Name = "pickerBox2";
- this.pickerBox2.Padding = new System.Windows.Forms.Padding(10, 6, 7, 5);
- this.pickerBox2.Size = new System.Drawing.Size(84, 34);
- this.pickerBox2.AcceptButton = null;
- this.pickerBox2.TabIndex = 175;
- //
- // horizontalSeparator1
- //
- this.horizontalSeparator1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.horizontalSeparator1.AutoScrollMargin = new System.Drawing.Size(0, 0);
- this.horizontalSeparator1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
- this.horizontalSeparator1.BackColor = System.Drawing.Color.Transparent;
- this.horizontalSeparator1.Location = new System.Drawing.Point(10, 181);
- this.horizontalSeparator1.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
- this.horizontalSeparator1.MaximumSize = new System.Drawing.Size(4920, 2);
- this.horizontalSeparator1.MinimumSize = new System.Drawing.Size(0, 22);
- this.horizontalSeparator1.Name = "horizontalSeparator1";
- this.horizontalSeparator1.Padding = new System.Windows.Forms.Padding(0, 10, 0, 10);
- this.horizontalSeparator1.Size = new System.Drawing.Size(364, 22);
- this.horizontalSeparator1.TabIndex = 176;
- //
- // 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 = 177;
- //
- // EditTileForm
- //
- this.ClientSize = new System.Drawing.Size(384, 521);
- this.Controls.Add(this.horizontalSeparator2);
- this.Controls.Add(this.horizontalSeparator1);
- this.Controls.Add(this.pickerBox2);
- this.Controls.Add(this.pickerBox1);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.textBox4);
- this.Controls.Add(this.textBox3);
- this.Controls.Add(this.textBox2);
- this.Controls.Add(this.label6);
- this.Controls.Add(this.label7);
- this.Controls.Add(this.label4);
- this.Controls.Add(this.label3);
- 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 = "EditTileForm";
- this.Text = "Add Tile";
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- protected override void OnShown(EventArgs e)
- {
- base.OnShown(e);
-
- if (this.DialogMode == DialogModeType.Edit)
- {
- if (this.TilePanel != null)
- {
- updateModel(this.TilePanel.ModelInfo);
- }
- else if (this.ListBox != null)
- {
- if (this.ListBox.ListBox.SelectedItem != null)
- {
- TileModel model = (this.ListBox.ListBox.SelectedItem as TileModel);
- if (model != null)
- {
- updateModel(model);
- }
- }
- }
- }
- }
-
-
- public TilePanelLayout TilePanelLayout { get; set; } = null;
-
- public TilePanel TilePanel { get; set; } = null;
-
- public TListBox ListBox { get; set; } = null;
-
- public Point AimCoord { get; set; } = new Point(-1, -1);
-
- public DialogModeType DialogMode
- {
- get => dialogMode;
- set
- {
- dialogMode = value;
-
- switch (dialogMode)
- {
- case DialogModeType.Add:
- this.Text = "Add Tile";
- break;
- case DialogModeType.Edit:
- this.Text = "Edit Tile";
- break;
- default: break;
- }
- }
- }
-
-
- private void button1_Click(object sender, EventArgs e)
- {
- TileModel model = buildModel();
-
- switch (this.DialogMode)
- {
- case DialogModeType.Add:
- if (this.TilePanelLayout != null)
- {
- this.TilePanelLayout.AddTile(model);
- }
- else if (this.ListBox != null)
- {
- int n = this.ListBox.ListBox.Items.Add(model);
- this.ListBox.ListBox.SelectedIndex = n;
- }
-
- break;
- case DialogModeType.Edit:
- if (this.TilePanel != null)
- {
- this.TilePanel.LoadInfo(model);
- }
- else if (this.ListBox != null)
- {
- int n = this.ListBox.ListBox.SelectedIndex;
- if (n >= 0)
- {
- this.ListBox.ListBox.Items.RemoveAt(n);
- this.ListBox.ListBox.Items.Insert(n, model);
- this.ListBox.ListBox.SelectedIndex = n;
- }
- }
-
- break;
- default: break;
- }
-
- this.Close();
- }
-
- protected TileModel buildModel()
- {
- TileModel rs = new TileModel()
- {
- Title = textBox1.Text?.Trim(),
- ProcessFilename = textBox2.Text?.Trim(),
- ProcessArgument = textBox3.Text?.Trim(),
- ProcessWorkingDirectory = textBox4.Text?.Trim(),
- ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle)pickerBox1.ComboBox.SelectedIndex,
- ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1)
- };
-
- if (this.DialogMode == DialogModeType.Add)
- {
- if (!this.AimCoord.Equals(new Point(-1, -1)))
- {
- rs.Position = this.AimCoord;
- }
- }
-
- return rs;
- }
-
- protected void updateModel(TileModel model)
- {
- if (model == null)
- {
- return;
- }
-
- textBox1.Text = model.Title;
- textBox2.Text = model.ProcessFilename;
- textBox3.Text = model.ProcessArgument;
- textBox4.Text = model.ProcessWorkingDirectory;
- pickerBox1.ComboBox.SelectedIndex = (int)model.ProcessWindowStyle;
- pickerBox2.ComboBox.SelectedIndex = (model.ProcessAsAdmin ? 1 : 0);
- }
-
- }
-}
diff --git a/Windows/Forms/EditTileForm.resx b/Windows/Forms/EditTileForm.resx
deleted file mode 100644
index 0220ec4..0000000
--- a/Windows/Forms/EditTileForm.resx
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vgAADr4B6kKxwAAAAK9JREFUOE/t0zsKwkAURuGp1BWJK3EhIrgAV+EOLLWwtRQLwQdiIbbiIkwynj+O
- IVwnyhR2XvjyInNIkXHee8f0cEQBPbDOaKEarSvXhsAJO4wirlB4jipiA3phoIvIrLFChhnKiA3o8Ckw
- RR93LNBODVwwwRL62kNKYIxNzQ1FSsDOEHk08HrYJMw/8KtA06/cCef6KJDZgDbTFrHNZO3x9idqOyui
- m2+07bvPgHcPXOhtG3D6cUIAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vgAADr4B6kKxwAAAAMZJREFUOE/tk7sNwjAQQF3BRohJGAQhMQBTsAElFLSUiAKJTxIXhBZlCILNuyRG
- iXEQKeg46fmsO/slhU9Za5XWehiXYcD6JElygZ6qhdwTioVDGo4wDXDjsohXdYkvMDTHVa8R9Hb0tpCz
- XzqJL5Df/CRYRFE0Yn8nr9M07XcSwBXmXN6QDfncRTCjt6+Rgfla4Adfn3D+ERS4Yht/wY8FxVN2xTac
- gLP5qyYLAhmmA4SGyeeEoPkSq3EWydsoB4gRDEqBVU/p15ajstHKCgAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- wAAADsABataJCQAAAJtJREFUOE/t0zEKwkAQheEpvILHSLySlTeJ6AnEzpPYi0ERPIKWKtZKNv9LNS5x
- E6xS+OCDJew8tsgYmeCECsGZo1dKXLBwtnghQ2fe0JDPGHecsW6xwgwjNM8tdIgyxQ0qij2gORV9LejK
- Bk8dfi3QjGY/C0IISS7/gkEVtP3KfbKEZm0PLZM++IVK0d0rdrAcR8TrnKK7BzPLa7Wb+WX/Nb8PAAAA
- AElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- wAAADsABataJCQAAALZJREFUOE/tkzEKwjAYRjt4BY9hvZKTN1HsCYqbJzGzKBGb9gY6qjgrxvdJK7ZS
- Gpwc/ODBnzTvg0AT5Xk+hB3cwVc456ZRSIqi2MAeafbGEq5Zlg3KY+1Bvkkql89Ya/vsnUCZN8FJYWyM
- 6ekKnsWkdF9hb8S3I6ioyRnkpa0FXcFbwOXrAjlyawXe+06q/At+qoDh41cOCU4iV8OaQY8pUVEgOnuA
- VcSzjRm2UHvOHeisdc7FDwDnJKIbLgP9AAAAAElFTkSuQmCC
-
-
-
\ No newline at end of file
diff --git a/Windows/Forms/TileContainer.cs b/Windows/Forms/TileContainer.cs
deleted file mode 100644
index a692bb0..0000000
--- a/Windows/Forms/TileContainer.cs
+++ /dev/null
@@ -1,149 +0,0 @@
-using FizzyLauncher.Models;
-using RyzStudio.Windows.Forms;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.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 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 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 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();
- }
-
- }
-}
diff --git a/Windows/Forms/TilePanel.Designer.cs b/Windows/Forms/TilePanel.Designer.cs
index b771cd9..b61fcff 100644
--- a/Windows/Forms/TilePanel.Designer.cs
+++ b/Windows/Forms/TilePanel.Designer.cs
@@ -1,4 +1,4 @@
-namespace FizzyLauncher.Windows.Forms
+namespace RokettoLaunch.Windows.Forms
{
partial class TilePanel
{
@@ -61,16 +61,9 @@
// TilePanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(234)))), ((int)(((byte)(234)))));
- this.Margin = new System.Windows.Forms.Padding(4, 3, 0, 0);
- this.MaximumSize = new System.Drawing.Size(82, 81);
- this.MinimumSize = new System.Drawing.Size(82, 81);
this.Name = "TilePanel";
- this.Size = new System.Drawing.Size(82, 81);
this.contextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
-
}
#endregion
diff --git a/Windows/Forms/TilePanel.cs b/Windows/Forms/TilePanel.cs
index 57a65cb..a76f573 100644
--- a/Windows/Forms/TilePanel.cs
+++ b/Windows/Forms/TilePanel.cs
@@ -4,130 +4,43 @@ using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
-using FizzyLauncher.Models;
+using RokettoLaunch.Models;
+using RyzStudio.Windows.Forms;
-namespace FizzyLauncher.Windows.Forms
+namespace RokettoLaunch.Windows.Forms
{
- public partial class TilePanel : RyzStudio.Windows.Forms.TC1UserControl
+ public partial class TilePanel : RyzStudio.Windows.TileForms.Tile
{
- protected bool isDragging = false;
- protected Point startPosition = new Point();
-
- protected int imageLeft = 0;
- protected int imageTop = 11;
- protected int labelMargin = 3;
- protected int labelTop = 47;
- protected Rectangle labelRectangle = new Rectangle();
-
- protected string title = "";
- protected Image icon = null;
- protected ContextMenuStrip groupContextMenu = null;
protected TileModel modelInfo = new TileModel();
- public TilePanel() : base()
+ public TilePanel()
{
InitializeComponent();
this.AllowDrop = true;
- this.AutoSize = false;
- this.BackColor = Color.FromArgb(250, 250, 250);
this.ContextMenuStrip = contextMenuStrip1;
- this.DoubleBuffered = true;
- this.Font = new Font(this.Font.FontFamily, 8.25F);
- this.ForeColor = Color.FromArgb(99, 105, 119);
- this.Size = new Size(70, 70);
- this.MaximumSize = this.MinimumSize = this.Size;
- }
-
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
-
- this.AllowDrop = true;
- this.AutoSize = false;
- this.BackColor = Color.FromArgb(250, 250, 250);
- this.ContextMenuStrip = contextMenuStrip1;
- this.DoubleBuffered = true;
this.Font = new Font(this.Font.FontFamily, 8.25F);
this.Size = new Size(70, 70);
- this.MaximumSize = this.MinimumSize = this.Size;
- }
+ this.AutoScaleMode = AutoScaleMode.None;
- protected override void OnPaint(PaintEventArgs e)
- {
- base.OnPaint(e);
-
- Graphics g = e.Graphics;
-
-
- if (this.Image != null)
- {
- g.DrawImage(this.Image, new Point(imageLeft, imageTop));
- }
-
- if (!string.IsNullOrWhiteSpace(this.Title))
- {
- TextRenderer.DrawText(e.Graphics, this.Title, this.Font, labelRectangle, this.ForeColor, TextFormatFlags.HorizontalCenter | TextFormatFlags.NoPadding | TextFormatFlags.EndEllipsis);
- }
-
- g.DrawRectangle(new Pen(Color.FromArgb(204, 206, 218), 1), new Rectangle(this.DisplayRectangle.X, this.DisplayRectangle.Y, (this.DisplayRectangle.Width - 1), (this.DisplayRectangle.Height - 1)));
-
- }
-
- [Category("Tile"), Browsable(true)]
- public Image Image
- {
- get => icon;
- protected set
- {
- icon = value;
-
- if (icon == null)
- {
- imageLeft = 0;
- }
- else
- {
- imageLeft = (this.Width - icon.Width) / 2;
- }
- }
- }
-
- [Category("Tile"), Browsable(true)]
- public string Title
- {
- get => title;
- protected set
- {
- title = value;
-
- labelRectangle = new Rectangle(labelMargin, labelTop, (this.Width - (labelMargin * 2)), (this.Height - labelTop - 1));
-
- this.Invalidate();
- }
+ this.EnableMovable = true;
}
[Browsable(false)]
public TileModel ModelInfo => modelInfo;
- public TilePanelLayout PanelContainer
+ public RyzStudio.Windows.TileForms.TileContainer TileContainer { get => UIControl.GetParentsUntil(this); }
+
+ protected MainForm MainForm { get => UIControl.GetParentsUntil(this); }
+
+
+ protected override void OnDragOver(DragEventArgs e)
{
- get
- {
- if (this.Parent == null)
- {
- return null;
- }
+ base.OnDragDrop(e);
- if (this.Parent.GetType() != typeof(TilePanelLayout))
- {
- return null;
- }
-
- return (TilePanelLayout)this.Parent;
- }
+ e.Effect = (e.Data.GetDataPresent(DataFormats.FileDrop)) ? DragDropEffects.Link : DragDropEffects.None;
}
protected override void OnDragDrop(DragEventArgs e)
@@ -138,67 +51,27 @@ namespace FizzyLauncher.Windows.Forms
{
this.DropFileList(fileList);
- invalidateGroupMenu(this.ModelInfo);
- }
- else
- {
- if (this.PanelContainer != null)
- {
- this.PanelContainer.DropFileList(fileList);
- }
- }
- }
-
- 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);
-
- TilePanelLayout container = this.PanelContainer;
- if (container == null)
- {
- return;
- }
-
- this.BringToFront();
-
- if (((e.Button == MouseButtons.Left) && (Control.ModifierKeys == Keys.Control)) || (e.Button == MouseButtons.Right))
- {
- isDragging = true;
- startPosition = e.Location;
+ InvalidateGroupMenu(this.ModelInfo);
}
}
protected override void OnMouseClick(MouseEventArgs e)
{
- base.OnMouseClick(e);
+ if (Control.ModifierKeys == Keys.Control)
+ {
+ return;
+ }
- if (Control.ModifierKeys == Keys.Control) return;
- if (this.ModelInfo == null) return;
+ if (this.ModelInfo == null)
+ {
+ return;
+ }
if (e.Button == MouseButtons.Left)
{
if (this.ModelInfo.IsGroup)
{
- if (groupContextMenu != null)
- {
- invalidateGroupMenuSize();
-
- groupContextMenu.Show(this, e.Location);
- }
+ this.LeftContextMenuStrip?.Show(this, e.Location);
}
else
{
@@ -211,33 +84,57 @@ namespace FizzyLauncher.Windows.Forms
{
base.OnMouseDoubleClick(e);
- if (Control.ModifierKeys == Keys.Control) return;
+ if (Control.ModifierKeys == Keys.Control)
+ {
+ return;
+ }
if (e.Button == MouseButtons.Left)
{
- execute(this.ModelInfo);
+ Execute(this.ModelInfo);
}
}
- protected override void OnMouseMove(MouseEventArgs e)
+
+#region Context Menu
+
+ ///
+ /// Edit
+ ///
+ ///
+ ///
+ private void editToolStripMenuItem_Click(object sender, EventArgs e)
{
- base.OnMouseMove(e);
-
- if (isDragging)
+ if (this.ModelInfo.IsGroup)
{
- TilePanelLayout layoutPanel = this.PanelContainer;
- if (layoutPanel == null)
+ var form = new EditTileFolderForm(this.ModelInfo);
+ if (form.ShowDialog() == DialogResult.OK)
{
- return;
- }
-
- int x = (this.Location.X + (e.Location.X - startPosition.X));
- int y = (this.Location.Y + (e.Location.Y - startPosition.Y));
-
- layoutPanel.MoveTile(this, x, y);
+ this.LoadInfo(form.Result);
+ };
+ }
+ else
+ {
+ var form = new EditTileForm(this.ModelInfo);
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ this.LoadInfo(form.Result);
+ };
}
}
+ ///
+ /// Remove
+ ///
+ ///
+ ///
+ private void removeToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ this.TileContainer?.Controls?.Remove(this);
+ }
+
+#endregion
+
public void DropFileList(string[] fileList)
{
@@ -294,46 +191,24 @@ namespace FizzyLauncher.Windows.Forms
{
this.modelInfo = model;
- this.Image = null;
+ this.LargeIcon = null;
this.Title = model.Title;
if (this.modelInfo.IsGroup)
{
- this.Image = AppResource.folder_32;
+ this.LargeIcon = AppResource.folder_32;
- invalidateGroupMenu(this.modelInfo);
+ InvalidateGroupMenu(this.modelInfo);
}
else
{
- this.Image = getIcon(model);
+ this.LargeIcon = RyzStudio.IO.File.GetIcon(model.CleanProcessFilename);
}
toolTip1.SetToolTip(this, this.Title);
}
- private void editToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (this.ModelInfo.IsGroup)
- {
- EditTileFolderForm.ShowEditDialog(this);
- }
- else
- {
- EditTileForm.ShowEditDialog(this);
- }
- }
-
- private void removeToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (this.PanelContainer == null)
- {
- return;
- }
-
- this.PanelContainer.Remove(this);
- }
-
- protected void execute(TileModel model)
+ protected void Execute(TileModel model)
{
if (model == null)
{
@@ -345,159 +220,51 @@ namespace FizzyLauncher.Windows.Forms
return;
}
- if (string.IsNullOrWhiteSpace(model.CleanProcessFilename))
+ if (this.MainForm != null)
{
- return;
- }
-
- if (!File.Exists(model.CleanProcessFilename))
- {
- return;
- }
-
- ProcessStartInfo p = new ProcessStartInfo();
- p.FileName = model.CleanProcessFilename;
- p.WindowStyle = model.ProcessWindowStyle;
- p.UseShellExecute = true;
-
- if (!string.IsNullOrWhiteSpace(model.CleanProcessArgument))
- {
- p.Arguments = model.CleanProcessArgument;
- }
-
- if (!string.IsNullOrWhiteSpace(model.CleanProcessWorkingDirectory))
- {
- p.WorkingDirectory = model.CleanProcessWorkingDirectory;
- }
-
- if (model.ProcessAsAdmin)
- {
- p.Verb = "runas";
- }
-
- MainForm parentForm = findMainForm();
- if (parentForm != null)
- {
- if (parentForm.CurrentSession != null)
+ if (this.MainForm.CurrentSession?.HideOnExecute ?? true)
{
- if (parentForm.CurrentSession.HideOnClick)
- {
- parentForm.Visible = false;
- }
+ this.MainForm.Visible = false;
}
}
- try
- {
- Process.Start(p);
- }
- catch (Exception exc)
- {
- MessageBox.Show(exc.Message);
- }
+ RyzStudio.Diagnostics.Process.Execute(model.CleanProcessFilename, model.CleanProcessWorkingDirectory, model.CleanProcessArgument, model.ProcessWindowStyle, model.ProcessAsAdmin);
}
- protected Image getIcon(TileModel model)
+ protected void InvalidateGroupMenu(TileModel model)
{
- if (!File.Exists(model.CleanProcessFilename))
+ var iconSize = ((this.MainForm?.CurrentSession?.ShowBigIcons ?? true) ? 24 : 16);
+
+ if (this.LeftContextMenuStrip == null)
{
- return null;
+ this.LeftContextMenuStrip = new ContextMenuStrip();
}
- try
- {
- return Icon.ExtractAssociatedIcon(model.CleanProcessFilename)?.ToBitmap();
- }
- catch
- {
- // do nothing
- }
+ this.LeftContextMenuStrip.ImageScalingSize = new Size(iconSize, iconSize);
+ this.LeftContextMenuStrip.Items.Clear();
- return null;
- }
-
- protected void invalidateGroupMenu(TileModel model)
- {
- if (groupContextMenu == null)
+ foreach (TileModel item in model?.Items ?? new System.Collections.Generic.List())
{
- groupContextMenu = new ContextMenuStrip();
- }
-
- groupContextMenu.Items.Clear();
-
- if (model.Items == null)
- {
- return;
- }
-
- foreach (TileModel item in model.Items)
- {
- ToolStripItem toolItem = groupContextMenu.Items.Add(item.Title);
- toolItem.Image = getIcon(item);
+ ToolStripItem toolItem = this.LeftContextMenuStrip.Items.Add(item.Title);
+ toolItem.Image = RyzStudio.IO.File.GetIcon(item.CleanProcessFilename);
toolItem.Tag = item;
- toolItem.Click += toolItem_Click;
- }
- }
-
- protected void invalidateGroupMenuSize()
- {
- if (this.PanelContainer != null)
- {
- if (this.PanelContainer.MainForm != null)
+ toolItem.Click += (object sender, EventArgs e) =>
{
- if (this.PanelContainer.MainForm.CurrentSession != null)
+ var menuItem = (System.Windows.Forms.ToolStripMenuItem)sender;
+ if (menuItem == null)
{
- if (this.PanelContainer.MainForm.CurrentSession.EnableBigIconInFolder)
- {
- groupContextMenu.ImageScalingSize = new Size(24, 24);
- return;
- }
+ return;
}
- }
+
+ var model = (menuItem.Tag as TileModel);
+ if (model == null)
+ {
+ return;
+ }
+
+ Execute(model);
+ };
}
-
- groupContextMenu.ImageScalingSize = new Size(16, 16);
- }
-
- protected MainForm findMainForm()
- {
- Control item = this;
-
- while (true)
- {
- item = item.Parent;
- if (item == null)
- {
- return null;
- }
-
- if (item.GetType() == typeof(MainForm))
- {
- return (item as MainForm);
- }
- }
- }
-
- private void toolItem_Click(object sender, EventArgs e)
- {
- if (sender.GetType() != typeof(ToolStripMenuItem))
- {
- return;
- }
-
- ToolStripMenuItem item = (sender as ToolStripMenuItem);
- if (item.Tag == null)
- {
- return;
- }
-
- if (item.Tag.GetType() != typeof(TileModel))
- {
- return;
- }
-
- TileModel model = (item.Tag as TileModel);
- execute(model);
}
}
diff --git a/Windows/Forms/TilePanelLayout.Designer.cs b/Windows/Forms/TilePanelLayout.Designer.cs
deleted file mode 100644
index 41d2ee5..0000000
--- a/Windows/Forms/TilePanelLayout.Designer.cs
+++ /dev/null
@@ -1,259 +0,0 @@
-namespace FizzyLauncher.Windows.Forms
-{
- partial class TilePanelLayout
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Component Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- 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.label1 = new System.Windows.Forms.Label();
- 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);
- //
- // 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(265, 83);
- this.label1.Margin = 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);
- //
- // 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.Controls.Add(this.label1);
- 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.Label label1;
- 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;
- }
-}
diff --git a/Windows/Forms/TilePanelLayout.cs b/Windows/Forms/TilePanelLayout.cs
deleted file mode 100644
index a2b8c9a..0000000
--- a/Windows/Forms/TilePanelLayout.cs
+++ /dev/null
@@ -1,942 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Drawing;
-using System.IO;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using FizzyLauncher.Models;
-using RyzStudio.Windows.Forms;
-
-namespace FizzyLauncher.Windows.Forms
-{
- public partial class TilePanelLayout : RyzStudio.Windows.Forms.TC1UserControl
- {
- public static int CalcWidth(int tileCount) => (tileCount * tileSize) + ((tileCount - 1) * margin);
-
-
- public class Item
- {
- public TilePanel 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 TileGroupModel groupModel = null;
- protected List- items = new List
- ();
-
- protected int collapseHeight = 0;
- protected int expandedHeight = 0;
-
- protected bool isAnimating = false;
- protected bool isChecked = true;
- protected Point lastMousePosition = new Point();
- protected Point gridSize = new Point();
-
-
- public TilePanelLayout(TileGroupModel model) : base()
- {
- InitializeComponent();
-
- this.AllowDrop = true;
- this.BackColor = Color.Transparent;
-
- this.LoadModel(model);
-
- label1.Location = new Point(0, 4);
- label1.Margin = new Padding(0);
- label1.Padding = new Padding(0);
- }
-
- protected override void OnDragDrop(DragEventArgs e)
- {
- string[] fileList = e.Data.GetData(DataFormats.FileDrop) as string[];
-
- this.DropFileList(fileList);
- }
-
- protected override void OnDragOver(DragEventArgs e)
- {
- if (e.Data.GetDataPresent(DataFormats.FileDrop))
- {
- e.Effect = DragDropEffects.Link;
- }
- else
- {
- e.Effect = DragDropEffects.None;
- }
- }
-
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
-
- this.Margin = new Padding(0);
- this.Padding = new Padding(0, 0, 0, 10);
- }
-
- protected override async void OnResize(EventArgs e)
- {
- base.OnResize(e);
-
- await this.InvalidateContainer();
- }
-
- 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)
- {
- contextMenuStrip2.Show(this, e.Location);
- }
- else
- {
- contextMenuStrip1.Show(this, e.Location);
- }
- }
- }
-
- protected override void OnMouseDoubleClick(MouseEventArgs e) => base.OnMouseClick(e);
-
- public Point GridSize
- {
- get => gridSize;
- }
-
- public bool EnableAnimation
- {
- get
- {
- MainForm mainForm = this.MainForm;
- if (mainForm == null)
- {
- return false;
- }
-
- if (mainForm.CurrentSession == null)
- {
- return false;
- }
-
- return mainForm.CurrentSession.EnableAnimation;
- }
- }
-
- public int CollapseHeight => labelHeight + collapseHeight;
-
- public int ExpandedHeight => expandedHeight + this.Padding.Bottom;
-
- public void DropFileList(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 = isChecked,
- IsExclusive = groupModel.IsExclusive,
- Items = this.Tiles
- };
-
- return rs;
- }
- }
-
- public FlowLayoutPanel FlowLayoutPanel
- {
- get
- {
- Control parentControl = this.Parent;
- while (true)
- {
- if (parentControl == null)
- {
- return null;
- }
-
- if (parentControl.GetType() == typeof(FlowLayoutPanel))
- {
- return parentControl as FlowLayoutPanel;
- }
-
- parentControl = parentControl.Parent;
- }
- }
- }
-
- public MainForm MainForm
- {
- get
- {
- Control parentControl = this.FlowLayoutPanel;
- while (true)
- {
- if (parentControl == null)
- {
- return null;
- }
-
- if (parentControl.GetType() == typeof(MainForm))
- {
- return parentControl as MainForm;
- }
-
- parentControl = parentControl.Parent;
- }
- }
- }
-
- public List Tiles
- {
- get
- {
- List rs = new List();
- foreach (Item item in items)
- {
- TileModel model = item.Tile.ModelInfo;
- model.Position = item.Coord;
-
- rs.Add(model);
- }
-
- return rs;
- }
- }
-
- public int TileSize => (tileSize + margin);
-
- public void AddTile(TileModel tile)
- {
- Point gridSize = this.GridSize;
-
- if (items.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);
-
- items.Add(new Item()
- {
- Tile = panel,
- Coord = tile.Position
- });
-
- this.Controls.Add(panel);
- }
-
- public void Clear()
- {
- this.Controls.Clear();
- }
-
- public async Task Collapse()
- {
- await Task.Run(() =>
- {
- if (isAnimating) return;
-
- isAnimating = true;
- isChecked = 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;
- isChecked = 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 Point GetTilePosition(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));
- }
-
- public async Task InvalidateContainer()
- {
- if (isAnimating)
- {
- return;
- }
-
- if (isChecked)
- {
- await this.Expand();
- }
- else
- {
- await this.Collapse();
- }
- }
-
- 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(gridSize.X, (gridSize.Y + 1));
-
- public void EditGroup() => EditGroupForm.ShowDialog(this);
-
- public void LoadModel(TileGroupModel model)
- {
- groupModel = model;
-
- isChecked = groupModel.IsExpanded;
-
- label1.Text = " " + groupModel?.Title;
- label1.Image = (isChecked ? 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);
-
- this.Invalidate();
- }
-
- public void UpdateModel(TileGroupModel model)
- {
- groupModel = model;
- isChecked = groupModel.IsExpanded;
-
- label1.Text = " " + groupModel?.Title;
-
- this.Invalidate();
- }
-
- public void LoadTiles(List 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);
-
- items.Add(new Item()
- {
- Tile = panel,
- Coord = confirmedPosition.Value
- });
-
- this.Controls.Add(panel);
- }
- }
-
- public void MoveTile(TilePanel panel, int posX, int posY)
- {
- Item item = items.Where(x => x.Tile.Equals(panel)).FirstOrDefault();
- if (item == null)
- {
- return;
- }
-
- Point newPosition = convertLocationToCoord_Nearest(posX, posY);
- if (!isTileInBounds(newPosition))
- {
- return;
- }
-
- if (hasTile(newPosition))
- {
- Item swapItem = items.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 MoveTop()
- {
- if (this.FlowLayoutPanel == null)
- {
- return;
- }
-
- this.FlowLayoutPanel.Controls.SetChildIndex(this, 0);
- }
-
- public void MoveUp()
- {
- if (this.FlowLayoutPanel == null)
- {
- return;
- }
-
- 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)
- {
- return;
- }
-
- 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)
- {
- return;
- }
-
- this.FlowLayoutPanel.Controls.SetChildIndex(this, (this.FlowLayoutPanel.Controls.Count - 1));
- }
-
- public void Remove()
- {
- if (this.FlowLayoutPanel == null)
- {
- return;
- }
-
- this.FlowLayoutPanel.Controls.Remove(this);
- }
-
- public void Remove(TilePanel panel)
- {
- Item m = items.Where(x => x.Tile.Equals(panel)).FirstOrDefault();
- if (m != null)
- {
- items.Remove(m);
- }
-
- this.Controls.Remove(panel);
- }
-
- public void SetGridSize(int width, int height)
- {
- gridSize = new Point(width, height);
-
- groupModel.GridSize = new Size(groupModel.GridSize.Width, height);
-
- expandedHeight = (this.TileSize * height) + labelHeight;
-
- int w = CalcWidth(gridSize.X);
-
- this.Size = new Size(w, (isChecked ? this.ExpandedHeight : this.CollapseHeight));
- }
-
- 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.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 convertLocationToCoord_Nearest(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 Point? findFirstFreeCoord()
- {
- Point gridSize = this.GridSize;
-
- for (int y = 0; y < gridSize.Y; y++)
- {
- for (int x = 0; x < 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 (items.Count >= (gridSize.X * gridSize.Y))
- {
- return null;
- }
-
- if (items.Count <= 0)
- {
- return findFirstFreeCoord();
- }
-
- // only one available
- if (items.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 bool hasTile(Point position)
- {
- if (items == null)
- {
- return false;
- }
-
- if (items.Count <= 0)
- {
- return false;
- }
-
- return (items.Count(x => x.Coord.Equals(position)) > 0);
- }
-
- protected bool isTileInBounds(Point position)
- {
- Point gridSize = this.GridSize;
-
- if (position.X >= gridSize.X)
- {
- return false;
- }
-
- if (position.Y >= gridSize.Y)
- {
- return false;
- }
-
- return true;
- }
-
- protected Point? resolveCoord(Point coord)
- {
- if (!isTileInBounds(coord))
- {
- return null;
- }
-
- if (!hasTile(coord))
- {
- return coord;
- }
-
- return resolveNextCoord(coord);
- }
-
- protected Point? resolveNextCoord(Point coord)
- {
- Point gridSize = this.GridSize;
- Point newCoord = coord;
-
- while (true)
- {
- newCoord.X++;
-
- if (newCoord.X >= gridSize.X)
- {
- newCoord.Y++;
- newCoord.X = 0;
- }
-
- if (!isTileInBounds(newCoord))
- {
- return null;
- }
-
- if (hasTile(newCoord))
- {
- continue;
- }
-
- return newCoord;
- }
- }
-
- private async void label1_MouseClick(object sender, MouseEventArgs e)
- {
- if (isAnimating) return;
-
- if (e.Button == MouseButtons.Left)
- {
- isChecked = !isChecked;
-
- label1.Image = (isChecked ? AppResource.toggle_right_ea_16 : AppResource.toggle_left_ea_16);
-
- this.Invalidate();
-
- await this.InvalidateContainer();
-
- // exclusivity
- if (isChecked)
- {
- if (this.Model.IsExclusive)
- {
- if (this.FlowLayoutPanel != null)
- {
- foreach (TilePanelLayout item in this.FlowLayoutPanel.Controls.OfType())
- {
- if (item.Equals(this))
- {
- continue;
- }
-
- await item.Collapse();
- }
- }
- }
- }
-
- label1.Image = (isChecked ? AppResource.toggle_right_ea_16 : AppResource.toggle_left_ea_16);
- }
- else if (e.Button == MouseButtons.Right)
- {
- contextMenuStrip2.Show(this, e.Location);
- }
- }
-
- #region tile context menu
-
- ///
- /// Add tile
- ///
- ///
- ///
- private void addTileMenuItem_Click(object sender, EventArgs e)
- {
- Point coord = convertLocationToCoord(lastMousePosition.X, lastMousePosition.Y);
-
- EditTileForm.ShowAddDialog(this, coord);
- }
-
- ///
- /// Add folder
- ///
- ///
- ///
- private void addListTileMenuItem_Click(object sender, EventArgs e)
- {
- Point coord = convertLocationToCoord(lastMousePosition.X, lastMousePosition.Y);
-
- EditTileFolderForm.ShowAddDialog(this, coord);
- }
-
- #endregion
-
- #region group context menu
-
- ///
- /// Add group
- ///
- ///
- ///
- private void addGroupMenuItem_Click(object sender, EventArgs e)
- {
- this.AddGroup();
- }
-
- ///
- /// Edit group
- ///
- ///
- ///
- private void editGroupMenuItem_Click(object sender, EventArgs e)
- {
- this.EditGroup();
- }
-
- ///
- /// Add row
- ///
- ///
- ///
- private void toolStripMenuItem5_Click(object sender, EventArgs e)
- {
- this.AddRow();
- }
-
- ///
- /// Remove row
- ///
- ///
- ///
- private void removeRowToolStripMenuItem_Click_1(object sender, EventArgs e)
- {
- if (gridSize.Y <= 1)
- {
- return;
- }
-
- bool rs = items.Exists(x => x.Coord.Y.Equals(gridSize.Y - 1));
- if (rs)
- {
- return;
- }
-
- this.SetGridSize(gridSize.X, (gridSize.Y - 1));
- }
-
- ///
- /// Move to top
- ///
- ///
- ///
- private void moveTopMenuItem_Click(object sender, EventArgs e)
- {
- this.MoveTop();
- }
-
- ///
- /// Move up
- ///
- ///
- ///
- private void moveUpMenuItem_Click(object sender, EventArgs e)
- {
- this.MoveUp();
- }
-
- ///
- /// Move down
- ///
- ///
- ///
- private void moveDownMenuItem_Click(object sender, EventArgs e)
- {
- this.MoveDown();
- }
-
- ///
- /// Move to bottom
- ///
- ///
- ///
- private void moveBottomMenuItem_Click(object sender, EventArgs e)
- {
- this.MoveBottom();
- }
-
- ///
- /// Remove group
- ///
- ///
- ///
- private void removeGroupMenuItem3_Click(object sender, EventArgs e)
- {
- this.Remove();
- }
-
- #endregion
-
- }
-}
diff --git a/Windows/Forms/TilePanelLayout.resx b/Windows/Forms/TilePanelLayout.resx
deleted file mode 100644
index b5d6123..0000000
--- a/Windows/Forms/TilePanelLayout.resx
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
- 172, 17
-
-
\ No newline at end of file
diff --git a/build-installer.iss b/build-installer.iss
index 7d944e3..71e6ba0 100644
--- a/build-installer.iss
+++ b/build-installer.iss
@@ -1,15 +1,15 @@
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
-#define MyAppName "Fizzy Launcher"
-#define MyAppVersion "0.2.5.058"
+#define MyAppName "RokettoLaunch"
+#define MyAppVersion "0.3.0.153"
#define MyAppPublisher "Hi, I'm Ray"
#define MyAppURL "https://www.hiimray.co.uk/software-fizzy-launcher"
-#define MyAppExeName "fizzylauncher.exe"
+#define MyAppExeName "rokettolaunch.exe"
-#define AppSourcePath "L:\gitea-hiimray\linear-app-launcher\bin\Release\64"
-#define AppReleasePath "L:\gitea-hiimray\linear-app-launcher\bin\Release"
-#define AppReleaseName "fizzy-launcher"
+#define AppSourcePath "L:\gitea-hiimray\linear-app-launcher\bin"
+#define AppReleasePath "L:\gitea-hiimray\linear-app-launcher\bin"
+#define AppReleaseName "rokettolaunch-installer"
[Setup]
@@ -41,7 +41,7 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
-Source: "{#AppSourcePath}\fizzylauncher.exe"; DestDir: "{app}"; Flags: ignoreversion
+Source: "{#AppSourcePath}\rokettolaunch.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
diff --git a/build.bat b/build.bat
index d90b1f3..244bf0b 100644
--- a/build.bat
+++ b/build.bat
@@ -1,10 +1,17 @@
-rmdir /s /q "bin\Release\"
-dotnet publish skye.sln -r win-x64 -c Release /p:PublishSingleFile=true /p:SelfContained=false /p:PublishReadyToRunfalse=true /p:PublishDir="bin\Release\64\"
+RMDIR /s /q "bin\"
+RMDIR /s /q "obj\"
-##rmdir /s /q "bin\Release\86\"
-##dotnet publish skye.sln -r win-x86 -c Release /p:PublishSingleFile=true /p:SelfContained=false /p:PublishReadyToRunfalse=true /p:PublishDir="bin\Release\"
+MKDIR bin
+
+dotnet restore skye.sln
+dotnet publish skye.sln -r win-x64 -c Release /p:PublishSingleFile=true /p:SelfContained=false /p:PublishReadyToRunfalse=true /p:PublishDir="bin\"
"C:\B\Portable Files (dev)\Inno Setup\v6.0.4-2\app\ISCC.exe" "build-installer.iss"
-cd "bin\Release\64\"
-"C:\B\Portable Files\PeaZip (Portable)\v6.5.1\App\PeaZip\res\7z\7z.exe" a -t7z "..\fizzy-launcher.7z" "*" -mx9
\ No newline at end of file
+"C:\B\Portable Files\7-Zip (Portable)\23.01\App\7-Zip64\7z.exe" a -t7z "bin\rokettolaunch.7z" ".\bin\rokettolaunch.exe" -mx9
+
+RMDIR /s /q "bin\debug"
+RMDIR /s /q "bin\release"
+RMDIR /s /q "obj\"
+
+PAUSE
\ No newline at end of file
diff --git a/favicon.ico b/favicon.ico
index 5d60ade..32f7bcb 100644
Binary files a/favicon.ico and b/favicon.ico differ
diff --git a/skye.sln b/skye.sln
index 94d918f..4e11779 100644
--- a/skye.sln
+++ b/skye.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33205.214
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FizzyLauncher", "FizzyLauncher.csproj", "{4833FB27-0817-4720-A54B-180369B0C374}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RokettoLaunch", "RokettoLaunch.csproj", "{4833FB27-0817-4720-A54B-180369B0C374}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution