diff --git a/LinearAppLauncher.csproj b/LinearAppLauncher.csproj
index 547fbca..8a584d0 100644
--- a/LinearAppLauncher.csproj
+++ b/LinearAppLauncher.csproj
@@ -128,6 +128,9 @@
UserControl.cs
+
+ Form
+
Form
@@ -192,6 +195,9 @@
TextButtonBox.cs
+
+ AddTileForm.cs
+
EditTileForm.cs
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 92fc8f6..e2c842f 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -88,6 +88,7 @@
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(600, 369);
this.flowLayoutPanel1.TabIndex = 27;
+ this.flowLayoutPanel1.WrapContents = false;
//
// button3
//
diff --git a/MainForm.cs b/MainForm.cs
index 9895c64..e031341 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -27,6 +27,23 @@ namespace AppLauncher
InitializeComponent();
}
+ //protected override void OnLoad(EventArgs e)
+ //{
+ // base.OnLoad(e);
+
+ //}
+
+ protected override void OnShown(EventArgs e)
+ {
+ base.OnShown(e);
+
+ string jsonfigFilename = Path.ChangeExtension(Application.ExecutablePath, "jsonfig");
+ if (File.Exists(jsonfigFilename))
+ {
+ loadSession(jsonfigFilename);
+ }
+ }
+
private async void button1_Click(object sender, EventArgs e)
{
//if (this.Width > collapsedWidth)
@@ -173,7 +190,7 @@ namespace AppLauncher
this.Close();
}
- protected void loadSession(string filename)
+ protected async void loadSession(string filename)
{
string sourceCode = File.ReadAllText(filename);
if (string.IsNullOrWhiteSpace(sourceCode))
@@ -193,13 +210,18 @@ namespace AppLauncher
{
TileContainer panel = new TileContainer(item);
flowLayoutPanel1.Controls.Add(panel);
+
+ if (item.IsExpanded)
+ {
+ //await panel.Expand();
+ }
}
}
private void button3_Click(object sender, EventArgs e)
{
- loadSession(Application.StartupPath.TrimEnd('\\') + "\\test1.jsonfig");
+// loadSession(Application.StartupPath.TrimEnd('\\') + "\\test1.jsonfig");
}
diff --git a/Windows/Forms/AddTileForm.cs b/Windows/Forms/AddTileForm.cs
new file mode 100644
index 0000000..62c04c8
--- /dev/null
+++ b/Windows/Forms/AddTileForm.cs
@@ -0,0 +1,374 @@
+using AppLauncher.Models;
+using RyzStudio.Windows.ThemedForms;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AppLauncher.Windows.Forms
+{
+ public class AddTileForm : DialogForm
+ {
+ 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 TextButtonBox textBox2;
+ private TextBox textBox3;
+ private TextButtonBox textBox4;
+ private Button button1;
+ private PickerBox pickerBox1;
+ private PickerBox pickerBox2;
+ private RyzStudio.Windows.Forms.HorizontalSeparator horizontalSeparator1;
+ private RyzStudio.Windows.Forms.HorizontalSeparator horizontalSeparator2;
+ private TextBox textBox1;
+
+ protected TileLayoutPanel parentPanel = null;
+
+ public AddTileForm() : base()
+ {
+ InitializeComponent();
+ initialiseComponents2();
+ }
+
+ public AddTileForm(TileLayoutPanel panel) : base()
+ {
+ parentPanel = panel;
+
+ InitializeComponent();
+ initialiseComponents2();
+ }
+
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditTileForm));
+ this.textBox1 = new RyzStudio.Windows.ThemedForms.TextBox();
+ 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 RyzStudio.Windows.ThemedForms.TextButtonBox();
+ this.textBox3 = new RyzStudio.Windows.ThemedForms.TextBox();
+ this.textBox4 = new RyzStudio.Windows.ThemedForms.TextButtonBox();
+ this.button1 = new RyzStudio.Windows.ThemedForms.Button();
+ this.pickerBox1 = new RyzStudio.Windows.ThemedForms.PickerBox();
+ this.pickerBox2 = new RyzStudio.Windows.ThemedForms.PickerBox();
+ this.horizontalSeparator1 = new RyzStudio.Windows.Forms.HorizontalSeparator();
+ this.horizontalSeparator2 = new RyzStudio.Windows.Forms.HorizontalSeparator();
+ ((System.ComponentModel.ISupportInitialize)(this.imgbxClose)).BeginInit();
+ this.SuspendLayout();
+ //
+ // imgbxClose
+ //
+ this.imgbxClose.Image = ((System.Drawing.Image)(resources.GetObject("imgbxClose.Image")));
+ this.imgbxClose.Location = new System.Drawing.Point(367, 5);
+ //
+ // lblDescription
+ //
+ this.lblDescription.Size = new System.Drawing.Size(359, 30);
+ this.lblDescription.Text = "Edit Tile";
+ //
+ // panel1
+ //
+ this.panel1.Location = new System.Drawing.Point(394, 474);
+ //
+ // area1
+ //
+ this.area1.Location = new System.Drawing.Point(1, 474);
+ this.area1.Size = new System.Drawing.Size(392, 5);
+ //
+ // 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);
+ this.textBox1.Location = new System.Drawing.Point(159, 50);
+ 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(220, 32);
+ this.textBox1.SubmitButton = null;
+ this.textBox1.TabIndex = 152;
+ this.textBox1.UseSystemPasswordChar = false;
+ //
+ // label6
+ //
+ this.label6.BackColor = System.Drawing.Color.Transparent;
+ this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(95)))), ((int)(((byte)(99)))), ((int)(((byte)(104)))));
+ this.label6.Location = new System.Drawing.Point(18, 268);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(208, 32);
+ this.label6.TabIndex = 163;
+ this.label6.Text = "Run As Admin";
+ this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label7
+ //
+ this.label7.BackColor = System.Drawing.Color.Transparent;
+ this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(95)))), ((int)(((byte)(99)))), ((int)(((byte)(104)))));
+ this.label7.Location = new System.Drawing.Point(18, 227);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(208, 32);
+ this.label7.TabIndex = 161;
+ this.label7.Text = "Window Style";
+ this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label4
+ //
+ this.label4.BackColor = System.Drawing.Color.Transparent;
+ this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(95)))), ((int)(((byte)(99)))), ((int)(((byte)(104)))));
+ this.label4.Location = new System.Drawing.Point(18, 173);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(131, 32);
+ this.label4.TabIndex = 159;
+ this.label4.Text = "Working Directory";
+ this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label3
+ //
+ this.label3.BackColor = System.Drawing.Color.Transparent;
+ this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(95)))), ((int)(((byte)(99)))), ((int)(((byte)(104)))));
+ this.label3.Location = new System.Drawing.Point(18, 132);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(131, 32);
+ this.label3.TabIndex = 157;
+ this.label3.Text = "Argument";
+ this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label2
+ //
+ this.label2.BackColor = System.Drawing.Color.Transparent;
+ this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(95)))), ((int)(((byte)(99)))), ((int)(((byte)(104)))));
+ this.label2.Location = new System.Drawing.Point(18, 91);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(131, 32);
+ this.label2.TabIndex = 155;
+ this.label2.Text = "Filename";
+ this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label1
+ //
+ this.label1.BackColor = System.Drawing.Color.Transparent;
+ this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(95)))), ((int)(((byte)(99)))), ((int)(((byte)(104)))));
+ this.label1.Location = new System.Drawing.Point(18, 50);
+ this.label1.Margin = new System.Windows.Forms.Padding(0);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(131, 32);
+ 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.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
+ this.textBox2.HighlightImage = global::AppLauncher.Properties.Resources.button16_file_add2;
+ this.textBox2.Location = new System.Drawing.Point(159, 91);
+ this.textBox2.Margin = new System.Windows.Forms.Padding(10, 3, 3, 3);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.NormalImage = global::AppLauncher.Properties.Resources.button16_file_add;
+ this.textBox2.Padding = new System.Windows.Forms.Padding(10, 10, 9, 9);
+ this.textBox2.Size = new System.Drawing.Size(220, 32);
+ this.textBox2.SubmitButton = 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("Microsoft Sans Serif", 8.25F);
+ this.textBox3.Location = new System.Drawing.Point(159, 132);
+ 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(220, 32);
+ this.textBox3.SubmitButton = 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.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
+ this.textBox4.HighlightImage = global::AppLauncher.Properties.Resources.button16_folder_add2;
+ this.textBox4.Location = new System.Drawing.Point(159, 173);
+ this.textBox4.Margin = new System.Windows.Forms.Padding(10, 3, 3, 3);
+ this.textBox4.Name = "textBox4";
+ this.textBox4.NormalImage = global::AppLauncher.Properties.Resources.button16_folder_add;
+ this.textBox4.Padding = new System.Windows.Forms.Padding(10, 10, 9, 9);
+ this.textBox4.Size = new System.Drawing.Size(220, 32);
+ this.textBox4.SubmitButton = null;
+ this.textBox4.TabIndex = 172;
+ this.textBox4.UseSystemPasswordChar = false;
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.button1.BackColor = System.Drawing.Color.Transparent;
+ this.button1.DefaultImage = null;
+ this.button1.DownImage = null;
+ this.button1.LabelText = "&Save";
+ this.button1.Location = new System.Drawing.Point(251, 427);
+ this.button1.Name = "button1";
+ this.button1.OverImage = 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.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.pickerBox1.BackColor = System.Drawing.Color.Transparent;
+ this.pickerBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
+ this.pickerBox1.Location = new System.Drawing.Point(239, 227);
+ 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(140, 32);
+ this.pickerBox1.SubmitButton = null;
+ this.pickerBox1.TabIndex = 174;
+ //
+ // pickerBox2
+ //
+ this.pickerBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.pickerBox2.BackColor = System.Drawing.Color.Transparent;
+ this.pickerBox2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
+ this.pickerBox2.Location = new System.Drawing.Point(239, 268);
+ 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(140, 32);
+ this.pickerBox2.SubmitButton = 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.Location = new System.Drawing.Point(10, 215);
+ this.horizontalSeparator1.MaximumSize = new System.Drawing.Size(4920, 2);
+ this.horizontalSeparator1.Name = "horizontalSeparator1";
+ this.horizontalSeparator1.Size = new System.Drawing.Size(380, 2);
+ this.horizontalSeparator1.TabIndex = 176;
+ //
+ // 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.Location = new System.Drawing.Point(10, 310);
+ this.horizontalSeparator2.MaximumSize = new System.Drawing.Size(4920, 2);
+ this.horizontalSeparator2.Name = "horizontalSeparator2";
+ this.horizontalSeparator2.Size = new System.Drawing.Size(380, 2);
+ this.horizontalSeparator2.TabIndex = 177;
+ //
+ // EditTileForm
+ //
+ this.ClientSize = new System.Drawing.Size(400, 480);
+ 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.Description = "Edit Tile";
+ this.Name = "EditTileForm";
+ this.Controls.SetChildIndex(this.imgbxClose, 0);
+ this.Controls.SetChildIndex(this.lblDescription, 0);
+ this.Controls.SetChildIndex(this.panel1, 0);
+ this.Controls.SetChildIndex(this.area1, 0);
+ this.Controls.SetChildIndex(this.textBox1, 0);
+ this.Controls.SetChildIndex(this.label1, 0);
+ this.Controls.SetChildIndex(this.label2, 0);
+ this.Controls.SetChildIndex(this.label3, 0);
+ this.Controls.SetChildIndex(this.label4, 0);
+ this.Controls.SetChildIndex(this.label7, 0);
+ this.Controls.SetChildIndex(this.label6, 0);
+ this.Controls.SetChildIndex(this.textBox2, 0);
+ this.Controls.SetChildIndex(this.textBox3, 0);
+ this.Controls.SetChildIndex(this.textBox4, 0);
+ this.Controls.SetChildIndex(this.button1, 0);
+ this.Controls.SetChildIndex(this.pickerBox1, 0);
+ this.Controls.SetChildIndex(this.pickerBox2, 0);
+ this.Controls.SetChildIndex(this.horizontalSeparator1, 0);
+ this.Controls.SetChildIndex(this.horizontalSeparator2, 0);
+ ((System.ComponentModel.ISupportInitialize)(this.imgbxClose)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ private void initialiseComponents2()
+ {
+ 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;
+ }
+
+ //protected override void OnShown(EventArgs e)
+ //{
+ // base.OnShown(e);
+
+ // if (parentPanel != null)
+ // {
+ // textBox1.Text = parentPanel.ModelInfo.Title;
+ // textBox2.Text = parentPanel.ModelInfo.ProcessFilename;
+ // textBox3.Text = parentPanel.ModelInfo.ProcessArgument;
+ // textBox4.Text = parentPanel.ModelInfo.ProcessWorkingDirectory;
+ // pickerBox1.ComboBox.SelectedIndex = (int)parentPanel.ModelInfo.ProcessWindowStyle;
+ // pickerBox2.ComboBox.SelectedIndex = (parentPanel.ModelInfo.ProcessAsAdmin ? 1 : 0);
+ // }
+ //}
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ TileModel model = 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)
+ };
+
+ //parentPanel.LoadInfo(model);
+
+ //parentPanel.Info.Title = textBox1.Text?.Trim();
+ //parentPanel.Info.ProcessFilename = textBox2.Text?.Trim();
+ //parentPanel.Info.ProcessArgument = textBox3.Text?.Trim();
+ //parentPanel.Info.ProcessWorkingDirectory = textBox4.Text?.Trim();
+ //parentPanel.Info.ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle) pickerBox1.ComboBox.SelectedIndex;
+ //parentPanel.Info.ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1);
+
+ this.Close();
+ }
+
+ }
+}
diff --git a/Windows/Forms/AddTileForm.resx b/Windows/Forms/AddTileForm.resx
new file mode 100644
index 0000000..3747e00
--- /dev/null
+++ b/Windows/Forms/AddTileForm.resx
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+ wwAADsMBx2+oZAAAABh0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMS4xYyqcSwAAANlJREFUOE+lU1sO
+ gjAQrHgRY6KemQ+VT9NrgAfgfRA+SawzdTAk2lhkkgm7s7vTAq0py/LUNM0dHEEXSfYWfd8fDQIOD23b
+ nvFMY6jeAcxpMFIwC1HX9YWzNOCWUunR4AxnvxpUVbV3zm2UGsbUlHoEDfBhdsgf4BWDCcmYGmtqCxtw
+ NeQcoJ6JjGn43hXy8CvIxDeIGbREZY+pHjLgtqeVHf7SzVq7VdmDM6x9GGj1/19h9UckVv3GWMwNRh5L
+ 6dGYH+UCHCTQ9SfV+7pMvJIIaLL0Oudd1x2eUQ8MyeAeq0cAAAAASUVORK5CYII=
+
+
+
\ No newline at end of file
diff --git a/Windows/Forms/EditTileForm.cs b/Windows/Forms/EditTileForm.cs
index 5af5165..851cbf3 100644
--- a/Windows/Forms/EditTileForm.cs
+++ b/Windows/Forms/EditTileForm.cs
@@ -1,4 +1,5 @@
-using RyzStudio.Windows.ThemedForms;
+using AppLauncher.Models;
+using RyzStudio.Windows.ThemedForms;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -225,6 +226,7 @@ namespace AppLauncher.Windows.Forms
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
//
@@ -335,15 +337,39 @@ namespace AppLauncher.Windows.Forms
if (parentPanel != null)
{
- textBox1.Text = parentPanel.Info.Title;
- textBox2.Text = parentPanel.Info.ProcessFilename;
- textBox3.Text = parentPanel.Info.ProcessArgument;
- textBox4.Text = parentPanel.Info.ProcessWorkingDirectory;
- pickerBox1.ComboBox.SelectedIndex = (int)parentPanel.Info.ProcessWindowStyle;
- pickerBox2.ComboBox.SelectedIndex = (parentPanel.Info.ProcessAsAdmin ? 1 : 0);
+ textBox1.Text = parentPanel.ModelInfo.Title;
+ textBox2.Text = parentPanel.ModelInfo.ProcessFilename;
+ textBox3.Text = parentPanel.ModelInfo.ProcessArgument;
+ textBox4.Text = parentPanel.ModelInfo.ProcessWorkingDirectory;
+ pickerBox1.ComboBox.SelectedIndex = (int)parentPanel.ModelInfo.ProcessWindowStyle;
+ pickerBox2.ComboBox.SelectedIndex = (parentPanel.ModelInfo.ProcessAsAdmin ? 1 : 0);
}
}
+ private void button1_Click(object sender, EventArgs e)
+ {
+ TileModel model = 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)
+ };
+
+ parentPanel.LoadInfo(model);
+
+ //parentPanel.Info.Title = textBox1.Text?.Trim();
+ //parentPanel.Info.ProcessFilename = textBox2.Text?.Trim();
+ //parentPanel.Info.ProcessArgument = textBox3.Text?.Trim();
+ //parentPanel.Info.ProcessWorkingDirectory = textBox4.Text?.Trim();
+ //parentPanel.Info.ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle) pickerBox1.ComboBox.SelectedIndex;
+ //parentPanel.Info.ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1);
+
+ this.Close();
+ }
+
}
}
diff --git a/Windows/Forms/Tile/TileContainer.Designer.cs b/Windows/Forms/Tile/TileContainer.Designer.cs
index 4dcd41d..23b6118 100644
--- a/Windows/Forms/Tile/TileContainer.Designer.cs
+++ b/Windows/Forms/Tile/TileContainer.Designer.cs
@@ -28,8 +28,12 @@
///
private void InitializeComponent()
{
+ this.components = new System.ComponentModel.Container();
this.label1 = new AppLauncher.Windows.Forms.TileGroupLabel();
this.panel1 = new AppLauncher.Windows.Forms.TileLayoutPanel();
+ this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// label1
@@ -57,6 +61,20 @@
this.panel1.Size = new System.Drawing.Size(223, 127);
this.panel1.TabIndex = 27;
//
+ // contextMenuStrip1
+ //
+ this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.addToolStripMenuItem});
+ this.contextMenuStrip1.Name = "contextMenuStrip1";
+ this.contextMenuStrip1.Size = new System.Drawing.Size(181, 48);
+ //
+ // addToolStripMenuItem
+ //
+ this.addToolStripMenuItem.Name = "addToolStripMenuItem";
+ this.addToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.addToolStripMenuItem.Text = "&Add";
+ this.addToolStripMenuItem.Click += new System.EventHandler(this.addToolStripMenuItem_Click);
+ //
// TileContainer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -66,6 +84,7 @@
this.Controls.Add(this.label1);
this.Name = "TileContainer";
this.Size = new System.Drawing.Size(370, 150);
+ this.contextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -74,5 +93,7 @@
private TileGroupLabel label1;
private TileLayoutPanel panel1;
+ private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem;
}
}
diff --git a/Windows/Forms/Tile/TileContainer.cs b/Windows/Forms/Tile/TileContainer.cs
index 83a5886..ffaa380 100644
--- a/Windows/Forms/Tile/TileContainer.cs
+++ b/Windows/Forms/Tile/TileContainer.cs
@@ -17,11 +17,15 @@ namespace AppLauncher.Windows.Forms
protected int collapseIncrement = 6;
protected int expandIncrement = 8;
protected TileGroupModel groupInfo = null;
+ protected bool isAnimating = false;
public TileContainer(TileGroupModel model) : base()
{
InitializeComponent();
+ this.ContextMenuStrip = contextMenuStrip1;
+ //this.BackColor = Color.MistyRose;
+
label1.TileGroupPanel = this;
groupInfo = model;
@@ -29,40 +33,36 @@ namespace AppLauncher.Windows.Forms
label1.TitleText = groupInfo.Title;
panel1.SetGridSize(groupInfo.GridSize.Width, groupInfo.GridSize.Height);
label1.Checked = groupInfo.IsExpanded;
-
- //label1.Width = panel1.Width;
- //label1.PanelHeight = panel1.Height;
-
- //this.Margin = new Padding(0);
- //this.Size = new Size(panel1.Width, (label1.Height + panel1.Height));
- //this.MaximumSize = this.Size;
- //this.MinimumSize = this.Size;
-
- //this.BackColor = Color.MistyRose;
-
panel1.LoadTiles(model.Items);
}
- protected override void OnLoad(EventArgs e)
+ protected override async void OnLoad(EventArgs e)
{
base.OnLoad(e);
label1.Width = panel1.Width;
- this.Margin = new Padding(0);
- this.MaximumSize = new Size(panel1.Width, (label1.Height + panel1.ExpandedHeight));
+ this.Margin = new Padding(0, 0, 0, 0);
+ this.Padding = new Padding(0, 0, 0, 20);
+ this.MaximumSize = new Size(panel1.Width, expandedHeight);
this.MinimumSize = new Size(panel1.Width, label1.Height);
this.Size = this.MaximumSize;
}
protected int collapseHeight => label1.Height + panel1.CollapseHeight;
- protected int expandedHeight => label1.Height + panel1.ExpandedHeight;
+ protected int expandedHeight => label1.Height + panel1.ExpandedHeight + this.Padding.Top + this.Padding.Bottom;
+
+ public bool IsAnimating => isAnimating;
public async Task Collapse()
{
await Task.Run(() =>
{
+ if (isAnimating) return;
+
+ isAnimating = true;
+
while (this.Height > collapseHeight)
{
if (this.InvokeRequired)
@@ -78,6 +78,8 @@ namespace AppLauncher.Windows.Forms
Thread.Sleep(10);
}
+
+ isAnimating = false;
});
}
@@ -85,6 +87,10 @@ namespace AppLauncher.Windows.Forms
{
await Task.Run(() =>
{
+ if (isAnimating) return;
+
+ isAnimating = true;
+
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(() => {
@@ -95,6 +101,8 @@ namespace AppLauncher.Windows.Forms
{
this.Height = collapseHeight;
}
+
+ isAnimating = false;
});
}
@@ -102,6 +110,10 @@ namespace AppLauncher.Windows.Forms
{
await Task.Run(() =>
{
+ if (isAnimating) return;
+
+ isAnimating = true;
+
while (this.Height < expandedHeight)
{
if (this.InvokeRequired)
@@ -119,8 +131,40 @@ namespace AppLauncher.Windows.Forms
Thread.Sleep(10);
}
+
+ isAnimating = false;
});
}
+ public async Task InvalidateContainer(bool animate = true)
+ {
+ if (this.IsAnimating)
+ {
+ return;
+ }
+
+ if (label1.Checked)
+ {
+ await this.Expand();
+ }
+ else
+ {
+ if (animate)
+ {
+ await this.Collapse();
+ }
+ else
+ {
+ await this.CollapseNow();
+ }
+ }
+ }
+
+ private void addToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ AddTileForm addForm = new AddTileForm(panel1);
+ addForm.ShowDialog();
+ }
+
}
}
diff --git a/Windows/Forms/Tile/TileContainer.resx b/Windows/Forms/Tile/TileContainer.resx
index 1af7de1..ad53752 100644
--- a/Windows/Forms/Tile/TileContainer.resx
+++ b/Windows/Forms/Tile/TileContainer.resx
@@ -117,4 +117,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
\ No newline at end of file
diff --git a/Windows/Forms/Tile/TileGroupLabel.cs b/Windows/Forms/Tile/TileGroupLabel.cs
index d43696d..9c60aea 100644
--- a/Windows/Forms/Tile/TileGroupLabel.cs
+++ b/Windows/Forms/Tile/TileGroupLabel.cs
@@ -1,20 +1,15 @@
-using System;
-using System.ComponentModel;
-using System.Threading.Tasks;
+using System.ComponentModel;
using System.Windows.Forms;
namespace AppLauncher.Windows.Forms
{
public partial class TileGroupLabel : AUserControl
{
- protected bool isChecked = false;
+ protected bool isChecked = true;
public TileGroupLabel() : base()
{
InitializeComponent();
-
- this.Checked = false;
-
}
[Category("Appearance"), Browsable(true)]
@@ -29,20 +24,18 @@ namespace AppLauncher.Windows.Forms
isChecked = value;
pictureBox1.BackgroundImage = (value) ? Properties.Resources.toggle_right_ea_16 : Properties.Resources.toggle_left_ea_16;
+
+ if (this.TileGroupPanel != null)
+ {
+ this.TileGroupPanel.InvalidateContainer();
+ }
}
}
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public TileContainer TileGroupPanel { get; set; } = null;
- protected async override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
-
- await invalidateToggle(false);
- }
-
- protected async void panel_MouseClick(object sender, MouseEventArgs e)
+ protected void panel_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Left)
{
@@ -50,32 +43,6 @@ namespace AppLauncher.Windows.Forms
}
this.Checked = !this.Checked;
-
- await invalidateToggle();
- }
-
- protected async Task invalidateToggle(bool animate = true)
- {
- if (this.TileGroupPanel == null)
- {
- return;
- }
-
- if (this.Checked)
- {
- await this.TileGroupPanel.Expand();
- }
- else
- {
- if (animate)
- {
- await this.TileGroupPanel.Collapse();
- }
- else
- {
- await this.TileGroupPanel.CollapseNow();
- }
- }
}
}
diff --git a/Windows/Forms/Tile/TileLayoutPanel.cs b/Windows/Forms/Tile/TileLayoutPanel.cs
index 02c5610..43b3f7b 100644
--- a/Windows/Forms/Tile/TileLayoutPanel.cs
+++ b/Windows/Forms/Tile/TileLayoutPanel.cs
@@ -56,6 +56,11 @@ namespace AppLauncher.Windows.Forms
public int ExpandedHeight => expandedHeight;
+ public void AddTile(TileModel tile)
+ {
+
+ }
+
public void Clear()
{
this.Controls.Clear();
@@ -87,13 +92,6 @@ namespace AppLauncher.Windows.Forms
return new Point((x * this.TileSize), (y * this.TileSize));
}
- public void SetGridSize(int width, int height)
- {
- expandedHeight = (this.TileSize * height);
-
- this.Size = new Size((this.TileSize * width), expandedHeight);
- }
-
public void LoadTiles(List tiles)
{
if (tiles == null)
@@ -109,7 +107,7 @@ namespace AppLauncher.Windows.Forms
foreach (TileModel item in tiles)
{
// resolve final grid position
- Point? confirmedPosition = resolvePosition(item.Position);
+ Point? confirmedPosition = resolveCoord(item.Position);
if (confirmedPosition == null)
{
continue;
@@ -119,7 +117,7 @@ namespace AppLauncher.Windows.Forms
// place control
TilePanel panel = new TilePanel();
panel.LoadInfo(item);
- panel.Location = convertPositionToLocation(confirmedPosition.Value);
+ panel.Location = convertCoordToLocation(confirmedPosition.Value);
items.Add(new Item()
{
@@ -139,7 +137,7 @@ namespace AppLauncher.Windows.Forms
return;
}
- Point newPosition = convertLocationToPosition(posX, posY);
+ Point newPosition = convertLocationToCoord(posX, posY);
if (!isTileInBounds(newPosition))
{
return;
@@ -151,22 +149,40 @@ namespace AppLauncher.Windows.Forms
if (swapItem != null)
{
swapItem.Coord = item.Coord;
- swapItem.Tile.Location = convertPositionToLocation(item.Coord);
+ swapItem.Tile.Location = convertCoordToLocation(item.Coord);
}
item.Coord = newPosition;
- panel.Location = convertPositionToLocation(newPosition);
+ panel.Location = convertCoordToLocation(newPosition);
}
else
{
item.Coord = newPosition;
- panel.Location = convertPositionToLocation(newPosition);
+ panel.Location = convertCoordToLocation(newPosition);
}
}
- protected Point convertPositionToLocation(Point position) => new Point((position.X * this.TileSize), (position.Y * this.TileSize));
+ public void Remove(TilePanel panel)
+ {
+ Item m = items.Where(x => x.Tile.Equals(panel)).FirstOrDefault();
+ if (m != null)
+ {
+ items.Remove(m);
+ }
- protected Point convertLocationToPosition(int posX, int posY)
+ this.Controls.Remove(panel);
+ }
+
+ public void SetGridSize(int width, int height)
+ {
+ expandedHeight = (this.TileSize * height);
+
+ this.Size = new Size((this.TileSize * width), expandedHeight);
+ }
+
+ protected Point convertCoordToLocation(Point position) => new Point((position.X * this.TileSize), (position.Y * this.TileSize));
+
+ protected Point convertLocationToCoord(int posX, int posY)
{
int x = (int)Math.Round(decimal.Divide(posX, this.TileSize));
int y = (int)Math.Round(decimal.Divide(posY, this.TileSize));
@@ -177,47 +193,47 @@ namespace AppLauncher.Windows.Forms
return new Point(x, y);
}
- protected Point? resolvePosition(Point position)
+ protected Point? resolveCoord(Point coord)
{
- if (!isTileInBounds(position))
+ if (!isTileInBounds(coord))
{
return null;
}
- if (!hasTile(position))
+ if (!hasTile(coord))
{
- return position;
+ return coord;
}
- return resolveNextPosition(position);
+ return resolveNextCoord(coord);
}
- protected Point? resolveNextPosition(Point position)
+ protected Point? resolveNextCoord(Point coord)
{
Point gridSize = this.GridSize;
- Point newPosition = position;
+ Point newCoord = coord;
while (true)
{
- newPosition.X++;
+ newCoord.X++;
- if (newPosition.X >= gridSize.X)
+ if (newCoord.X >= gridSize.X)
{
- newPosition.Y++;
- newPosition.X = 0;
+ newCoord.Y++;
+ newCoord.X = 0;
}
- if (!isTileInBounds(newPosition))
+ if (!isTileInBounds(newCoord))
{
return null;
}
- if (hasTile(newPosition))
+ if (hasTile(newCoord))
{
continue;
}
- return newPosition;
+ return newCoord;
}
}
diff --git a/Windows/Forms/Tile/TilePanel.cs b/Windows/Forms/Tile/TilePanel.cs
index 3ed5924..97940e1 100644
--- a/Windows/Forms/Tile/TilePanel.cs
+++ b/Windows/Forms/Tile/TilePanel.cs
@@ -13,7 +13,7 @@ namespace AppLauncher.Windows.Forms
protected bool isDragging = false;
protected Point startPosition = new Point();
- protected TileModel model = new TileModel();
+ protected TileModel modelInfo = new TileModel();
protected EditTileForm editForm = null;
public TilePanel() : base()
@@ -40,7 +40,7 @@ namespace AppLauncher.Windows.Forms
public Image Image { get => pictureBox1.BackgroundImage; protected set => pictureBox1.BackgroundImage = value; }
[Browsable(false)]
- public TileModel Info => model;
+ public TileModel ModelInfo => modelInfo;
public TileLayoutPanel PanelContainer
{
@@ -62,25 +62,25 @@ namespace AppLauncher.Windows.Forms
public void LoadInfo(TileModel model)
{
- this.model = model;
+ this.modelInfo = model;
this.Title = model.Title;
- //this.Image = model.Icon;
+ this.Image = model.Icon;
- //if (this.Image == null)
- //{
- // if (File.Exists(model.ProcessFilename))
- // {
- // try
- // {
- // this.Image = Icon.ExtractAssociatedIcon(model.ProcessFilename)?.ToBitmap();
- // }
- // catch
- // {
+ if (this.Image == null)
+ {
+ if (File.Exists(model.ProcessFilename))
+ {
+ try
+ {
+ this.Image = Icon.ExtractAssociatedIcon(model.ProcessFilename)?.ToBitmap();
+ }
+ catch
+ {
- // }
- // }
- //}
+ }
+ }
+ }
}
@@ -127,27 +127,27 @@ namespace AppLauncher.Windows.Forms
private void TilePanel_MouseDoubleClick(object sender, MouseEventArgs e)
{
- if (this.Info == null)
+ if (this.ModelInfo == null)
{
return;
}
- if (string.IsNullOrWhiteSpace(this.Info.ProcessFilename))
+ if (string.IsNullOrWhiteSpace(this.ModelInfo.ProcessFilename))
{
return;
}
- if (!File.Exists(this.Info.ProcessFilename))
+ if (!File.Exists(this.ModelInfo.ProcessFilename))
{
return;
}
ProcessStartInfo p = new ProcessStartInfo();
- p.FileName = this.Info.ProcessFilename;
- p.WindowStyle = this.Info.ProcessWindowStyle;
- if (!string.IsNullOrWhiteSpace(this.Info.ProcessArgument)) p.Arguments = this.Info.ProcessArgument;
- if (!string.IsNullOrWhiteSpace(this.Info.ProcessWorkingDirectory)) p.WorkingDirectory = this.Info.ProcessWorkingDirectory;
- if (this.Info.ProcessAsAdmin) p.Verb = "runas";
+ p.FileName = this.ModelInfo.ProcessFilename;
+ p.WindowStyle = this.ModelInfo.ProcessWindowStyle;
+ if (!string.IsNullOrWhiteSpace(this.ModelInfo.ProcessArgument)) p.Arguments = this.ModelInfo.ProcessArgument;
+ if (!string.IsNullOrWhiteSpace(this.ModelInfo.ProcessWorkingDirectory)) p.WorkingDirectory = this.ModelInfo.ProcessWorkingDirectory;
+ if (this.ModelInfo.ProcessAsAdmin) p.Verb = "runas";
try
{
@@ -172,7 +172,12 @@ namespace AppLauncher.Windows.Forms
private void removeToolStripMenuItem_Click(object sender, EventArgs e)
{
+ if (this.PanelContainer == null)
+ {
+ return;
+ }
+ this.PanelContainer.Remove(this);
}
}
diff --git a/Windows/Forms/TitlePanel.cs b/Windows/Forms/TitlePanel.cs
index e70f2df..aadf460 100644
--- a/Windows/Forms/TitlePanel.cs
+++ b/Windows/Forms/TitlePanel.cs
@@ -87,11 +87,15 @@ namespace AppLauncher.Windows.Forms
if (isDragging)
{
Point pos = this.PointToScreen(e.Location);
+ int y = (pos.Y - windowOffset.Y);
+ int x = (pos.X - windowOffset.X);
- int y = Math.Max((pos.Y - windowOffset.Y), Screen.PrimaryScreen.WorkingArea.Y);
- y = Math.Min(y, (Screen.PrimaryScreen.WorkingArea.Y + Screen.PrimaryScreen.WorkingArea.Height) - this.Height);
+ this.Parent.Location = new Point(x, y);
- this.Parent.Location = new Point(Screen.PrimaryScreen.WorkingArea.X, y);
+ //int y = Math.Max((pos.Y - windowOffset.Y), Screen.PrimaryScreen.WorkingArea.Y);
+ //y = Math.Min(y, (Screen.PrimaryScreen.WorkingArea.Y + Screen.PrimaryScreen.WorkingArea.Height) - this.Height);
+
+ //this.Parent.Location = new Point(Screen.PrimaryScreen.WorkingArea.X, y);
}
}
@@ -116,5 +120,21 @@ namespace AppLauncher.Windows.Forms
await this.MainForm.ToggleSize();
}
+ //protected Point validateFormLocation(int x, int y)
+ //{
+ // Screen activeScreen = Screen.FromControl(this);
+ // int maxX = (activeScreen.WorkingArea.X + activeScreen.WorkingArea.Width) - this.Width;
+ // int maxY = (activeScreen.WorkingArea.Y + activeScreen.WorkingArea.Height) - this.Height;
+
+ // if (x < activeScreen.WorkingArea.X) x = activeScreen.WorkingArea.X;
+ // if (y < activeScreen.WorkingArea.Y) y = activeScreen.WorkingArea.Y;
+ // if (x > maxX) x = maxX;
+ // if (y > maxY) y = maxY;
+
+ // //y = activeScreen.WorkingArea.Y;
+
+ // return new Point(x, y);
+ //}
+
}
}