diff --git a/LinearAppLauncher.csproj b/LinearAppLauncher.csproj
index 2d4dbe9..f1e2ffa 100644
--- a/LinearAppLauncher.csproj
+++ b/LinearAppLauncher.csproj
@@ -74,6 +74,9 @@
HeadingPanel.cs
+
+ UserControl
+
UserControl
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 82c2105..698ab8d 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -30,10 +30,6 @@
{
this.button1 = new System.Windows.Forms.Button();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
- this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
- this.panel2 = new System.Windows.Forms.Panel();
- this.panel3 = new System.Windows.Forms.Panel();
- this.panel5 = new System.Windows.Forms.Panel();
this.titlePanel1 = new AppLauncher.Windows.Forms.TitlePanel();
this.headingPanel1 = new AppLauncher.Windows.Forms.HeadingPanel();
this.panel6 = new System.Windows.Forms.Panel();
@@ -47,13 +43,11 @@
this.panel14 = new System.Windows.Forms.Panel();
this.panel15 = new System.Windows.Forms.Panel();
this.button2 = new System.Windows.Forms.Button();
- this.label1 = new System.Windows.Forms.Label();
this.tilePanel2 = new AppLauncher.Windows.Forms.TilePanel();
this.tilePanel1 = new AppLauncher.Windows.Forms.TilePanel();
- this.panel16 = new System.Windows.Forms.Panel();
this.panel4 = new System.Windows.Forms.Panel();
this.panel1 = new System.Windows.Forms.Panel();
- this.flowLayoutPanel1.SuspendLayout();
+ this.tilePanelContainer1 = new AppLauncher.Windows.Forms.TilePanelContainer();
this.SuspendLayout();
//
// button1
@@ -74,44 +68,6 @@
this.richTextBox1.TabIndex = 2;
this.richTextBox1.Text = "";
//
- // flowLayoutPanel1
- //
- this.flowLayoutPanel1.Controls.Add(this.panel2);
- this.flowLayoutPanel1.Controls.Add(this.panel3);
- this.flowLayoutPanel1.Controls.Add(this.panel5);
- this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
- this.flowLayoutPanel1.Location = new System.Drawing.Point(557, 130);
- this.flowLayoutPanel1.Name = "flowLayoutPanel1";
- this.flowLayoutPanel1.Size = new System.Drawing.Size(231, 204);
- this.flowLayoutPanel1.TabIndex = 6;
- //
- // panel2
- //
- this.panel2.BackColor = System.Drawing.Color.LightGray;
- this.panel2.Location = new System.Drawing.Point(3, 3);
- this.panel2.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
- this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(70, 70);
- this.panel2.TabIndex = 4;
- //
- // panel3
- //
- this.panel3.BackColor = System.Drawing.Color.LightGray;
- this.panel3.Location = new System.Drawing.Point(3, 76);
- this.panel3.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
- this.panel3.Name = "panel3";
- this.panel3.Size = new System.Drawing.Size(70, 70);
- this.panel3.TabIndex = 5;
- //
- // panel5
- //
- this.panel5.BackColor = System.Drawing.Color.LightGray;
- this.panel5.Location = new System.Drawing.Point(76, 3);
- this.panel5.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
- this.panel5.Name = "panel5";
- this.panel5.Size = new System.Drawing.Size(70, 70);
- this.panel5.TabIndex = 7;
- //
// titlePanel1
//
this.titlePanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
@@ -245,18 +201,6 @@
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
- // label1
- //
- this.label1.AutoEllipsis = true;
- this.label1.BackColor = System.Drawing.Color.Transparent;
- this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(234)))), ((int)(((byte)(234)))));
- this.label1.Location = new System.Drawing.Point(362, 190);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(73, 13);
- this.label1.TabIndex = 23;
- this.label1.Text = "OpenOffice OpenOffice";
- this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
// tilePanel2
//
this.tilePanel2.AutoScrollMargin = new System.Drawing.Size(0, 0);
@@ -269,6 +213,10 @@
this.tilePanel2.MaximumSize = new System.Drawing.Size(70, 70);
this.tilePanel2.MinimumSize = new System.Drawing.Size(70, 70);
this.tilePanel2.Name = "tilePanel2";
+ this.tilePanel2.ProcessArgument = null;
+ this.tilePanel2.ProcessFilename = null;
+ this.tilePanel2.ProcessWindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
+ this.tilePanel2.ProcessWorkingDirectory = null;
this.tilePanel2.Size = new System.Drawing.Size(70, 70);
this.tilePanel2.TabIndex = 25;
this.tilePanel2.TitleText = "Accessories";
@@ -285,21 +233,14 @@
this.tilePanel1.MaximumSize = new System.Drawing.Size(70, 70);
this.tilePanel1.MinimumSize = new System.Drawing.Size(70, 70);
this.tilePanel1.Name = "tilePanel1";
+ this.tilePanel1.ProcessArgument = null;
+ this.tilePanel1.ProcessFilename = null;
+ this.tilePanel1.ProcessWindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
+ this.tilePanel1.ProcessWorkingDirectory = null;
this.tilePanel1.Size = new System.Drawing.Size(70, 70);
this.tilePanel1.TabIndex = 24;
this.tilePanel1.TitleText = "Mail";
//
- // panel16
- //
- this.panel16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(68)))), ((int)(((byte)(68)))), ((int)(((byte)(68)))));
- this.panel16.BackgroundImage = global::AppLauncher.Properties.Resources.mail_ea_32;
- this.panel16.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
- this.panel16.Location = new System.Drawing.Point(365, 120);
- this.panel16.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
- this.panel16.Name = "panel16";
- this.panel16.Size = new System.Drawing.Size(70, 70);
- this.panel16.TabIndex = 22;
- //
// panel4
//
this.panel4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(68)))), ((int)(((byte)(68)))), ((int)(((byte)(68)))));
@@ -322,6 +263,16 @@
this.panel1.Size = new System.Drawing.Size(70, 70);
this.panel1.TabIndex = 3;
//
+ // tilePanelContainer1
+ //
+ this.tilePanelContainer1.AutoScrollMargin = new System.Drawing.Size(0, 0);
+ this.tilePanelContainer1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
+ this.tilePanelContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255)))));
+ this.tilePanelContainer1.Location = new System.Drawing.Point(509, 109);
+ this.tilePanelContainer1.Name = "tilePanelContainer1";
+ this.tilePanelContainer1.Size = new System.Drawing.Size(278, 220);
+ this.tilePanelContainer1.TabIndex = 26;
+ //
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -329,10 +280,9 @@
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(83)))), ((int)(((byte)(93)))));
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.ClientSize = new System.Drawing.Size(800, 440);
+ this.Controls.Add(this.tilePanelContainer1);
this.Controls.Add(this.tilePanel2);
this.Controls.Add(this.tilePanel1);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.panel16);
this.Controls.Add(this.button2);
this.Controls.Add(this.panel12);
this.Controls.Add(this.panel13);
@@ -347,13 +297,11 @@
this.Controls.Add(this.panel4);
this.Controls.Add(this.headingPanel1);
this.Controls.Add(this.titlePanel1);
- this.Controls.Add(this.flowLayoutPanel1);
this.Controls.Add(this.panel1);
this.Controls.Add(this.richTextBox1);
this.Controls.Add(this.button1);
this.Name = "MainForm";
this.Text = "Form1";
- this.flowLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -363,10 +311,6 @@
private System.Windows.Forms.Button button1;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.Panel panel1;
- private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
- private System.Windows.Forms.Panel panel2;
- private System.Windows.Forms.Panel panel3;
- private System.Windows.Forms.Panel panel5;
private Windows.Forms.TitlePanel titlePanel1;
private Windows.Forms.HeadingPanel headingPanel1;
private System.Windows.Forms.Panel panel4;
@@ -381,10 +325,9 @@
private System.Windows.Forms.Panel panel14;
private System.Windows.Forms.Panel panel15;
private System.Windows.Forms.Button button2;
- private System.Windows.Forms.Panel panel16;
- private System.Windows.Forms.Label label1;
private Windows.Forms.TilePanel tilePanel1;
private Windows.Forms.TilePanel tilePanel2;
+ private Windows.Forms.TilePanelContainer tilePanelContainer1;
}
}
diff --git a/MainForm.cs b/MainForm.cs
index c5f4e69..2d18725 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -24,40 +24,87 @@ namespace AppLauncher
}
- private void button1_Click(object sender, EventArgs e)
+ private async void button1_Click(object sender, EventArgs e)
{
if (this.Width > 40)
{
- while (this.Width > 40)
- {
- this.Width -= 6;
-
- Application.DoEvents();
- }
+ await collapseWindow(40, 6);
}
else
{
- while (this.Width < 800)
- {
- this.Width += 8;
-
- Application.DoEvents();
- }
+ await expandWindow(800, 8);
}
}
private void button2_Click(object sender, EventArgs e)
{
- ProcessStartInfo process = new ProcessStartInfo();
- process.FileName = @"C:\B\Portable Files (pure)\Build and Deploy Utility\v0.2.0.046 alpha\badutil.exe";
- process.Verb = "runas";
+ //ProcessStartInfo process = new ProcessStartInfo();
+ //process.FileName = @"C:\B\Portable Files (pure)\Build and Deploy Utility\v0.2.0.046 alpha\badutil.exe";
+ //process.Arguments = "";
+ //process.WindowStyle = ProcessWindowStyle.Normal;
+ //process.Verb = "runas";
+ //Process.Start(process);
+
+ //richTextBox1.Text += tilePanelContainer1.GridSize.ToString() + Environment.NewLine;
+
+ tilePanelContainer1.Controls.Add(tilePanel1);
+ tilePanel1.Location = new Point(0, 0);
+
+ tilePanelContainer1.Controls.Add(tilePanel2);
+ tilePanel2.Location = new Point(0, 0);
+
+
+
+
- Process.Start(process);
}
+ protected async Task collapseWindow(int width, int increment = 8)
+ {
+ await Task.Run(() =>
+ {
+ while (this.Width > width)
+ {
+ if (this.InvokeRequired)
+ {
+ this.Invoke(new MethodInvoker(() => {
+ this.Width -= increment;
+ }));
+ }
+ else
+ {
+ this.Width -= increment;
+ }
+ Application.DoEvents();
+ }
+ });
+ }
+ protected async Task expandWindow(int width, int increment = 8)
+ {
+ await Task.Run(() =>
+ {
+ while (this.Width < width)
+ {
+ if (this.InvokeRequired)
+ {
+ this.Invoke(new MethodInvoker(() => {
+ this.Width += increment;
+ this.Invalidate();
+ }));
+ }
+ else
+ {
+ this.Width += increment;
+ this.Invalidate();
+ }
+
+ Application.DoEvents();
+ }
+ });
+ }
//private void Form1_MouseDown(object sender, MouseEventArgs e)
//{
diff --git a/Windows/Forms/TilePanel.cs b/Windows/Forms/TilePanel.cs
index 315bf62..e11ceed 100644
--- a/Windows/Forms/TilePanel.cs
+++ b/Windows/Forms/TilePanel.cs
@@ -7,14 +7,44 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using System.Diagnostics;
namespace AppLauncher.Windows.Forms
{
public partial class TilePanel : AUserControl
{
+ protected bool isDragging = false;
+ protected Point startPosition = new Point();
+
public TilePanel() : base()
{
InitializeComponent();
+
+ this.MouseDown += panel_MouseDown;
+ this.MouseUp += panel_MouseUp;
+ this.MouseMove += panel_MouseMove;
+ pictureBox1.MouseDown += panel_MouseDown;
+ pictureBox1.MouseUp += panel_MouseUp;
+ pictureBox1.MouseMove += panel_MouseMove;
+ label1.MouseDown += panel_MouseDown;
+ label1.MouseUp += panel_MouseUp;
+ label1.MouseMove += panel_MouseMove;
+ }
+
+ protected override void OnLocationChanged(EventArgs e)
+ {
+ base.OnLocationChanged(e);
+
+ if (this.Parent != null)
+ {
+ if (this.Parent.GetType() == typeof(TilePanelContainer))
+ {
+ TilePanelContainer container = (TilePanelContainer)this.Parent;
+ Point p = container.GetTilePosition(this.Location);
+
+ //label1.Text = p.X.ToString() + ", " + p.Y.ToString();
+ }
+ }
}
[Category("Appearance"), Browsable(true)]
@@ -23,5 +53,98 @@ namespace AppLauncher.Windows.Forms
[Category("Appearance"), Browsable(true)]
public Image IconImage { get => pictureBox1.BackgroundImage; set => pictureBox1.BackgroundImage = value; }
+ [Browsable(false)]
+ public string ProcessFilename { get; set; }
+
+ [Browsable(false)]
+ public string ProcessArgument { get; set; }
+
+ [Browsable(false)]
+ public string ProcessWorkingDirectory { get; set; }
+
+ [Browsable(false)]
+ public ProcessWindowStyle ProcessWindowStyle { get; set; } = ProcessWindowStyle.Normal;
+
+ public TilePanelContainer PanelContainer
+ {
+ get
+ {
+ if (this.Parent == null)
+ {
+ return null;
+ }
+
+ if (this.Parent.GetType() != typeof(TilePanelContainer))
+ {
+ return null;
+ }
+
+ return (TilePanelContainer)this.Parent;
+ }
+ }
+
+ private void panel_MouseDown(object sender, MouseEventArgs e)
+ {
+ TilePanelContainer container = this.PanelContainer;
+ if (container == null)
+ {
+ return;
+ }
+
+ if (e.Button != MouseButtons.Left)
+ {
+ return;
+ }
+
+ isDragging = true;
+ startPosition = e.Location;
+ }
+
+ private void panel_MouseUp(object sender, MouseEventArgs e)
+ {
+ isDragging = false;
+ }
+
+ private void panel_MouseMove(object sender, MouseEventArgs e)
+ {
+ if (isDragging)
+ {
+ TilePanelContainer container = this.PanelContainer;
+ if (container == null)
+ {
+ return;
+ }
+
+ //label1.Text = e.Location.ToString();
+ //this.Location = new Point(e.Location.X - windowOffset.X, e.Location.Y - windowOffset.Y);
+
+ //int x = parentPosition.X + (e.Location.X - positionOffset.X);
+ //int y = parentPosition.Y + (e.Location.Y - positionOffset.Y);
+ //this.Location = new Point(x, y);
+
+ //int x = (tilePosition.X + e.Location.X);
+ //int y = (tilePosition.Y + e.Location.Y);
+
+ int x = (this.Location.X + (e.Location.X - startPosition.X));
+ int y = (this.Location.Y + (e.Location.Y - startPosition.Y));
+
+ this.Location = container.GetTilePosition(x, y);
+
+
+ //label1.Text = x.ToString() + ", " + y.ToString();
+
+ //label1.Text = e.X.ToString() + ", " + e.Y.ToString();
+
+
+ //Point pos = this.PointToScreen(e.Location);
+
+ //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);
+ }
+
+ }
+
}
}
\ No newline at end of file
diff --git a/Windows/Forms/TilePanelContainer.cs b/Windows/Forms/TilePanelContainer.cs
new file mode 100644
index 0000000..37027a2
--- /dev/null
+++ b/Windows/Forms/TilePanelContainer.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace AppLauncher.Windows.Forms
+{
+ public class TilePanelContainer : AUserControl
+ {
+ protected readonly int tileSize = 70;
+ protected readonly int margin = 3;
+
+ public TilePanelContainer() : base()
+ {
+
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+
+ OnResize(e);
+ }
+
+
+ protected override void OnResize(EventArgs e)
+ {
+ base.OnResize(e);
+
+ int tileWidth = (tileSize + margin);
+ int w = (int)Math.Floor(decimal.Divide(this.Width, tileWidth));
+ int h = (int)Math.Floor(decimal.Divide(this.Height, tileWidth));
+
+ this.GridSize = new Point(w, h);
+ }
+
+ public Point GridSize { get; protected set; }
+
+ public Point GetTileCoord(Point location) => this.GetTileCoord(location.X, location.Y);
+
+ public Point GetTileCoord(int posX, int posY)
+ {
+ int w = (tileSize + margin);
+ int x = (int)Math.Round(decimal.Divide(posX, w));
+ int y = (int)Math.Round(decimal.Divide(posY, w));
+
+ if (x < 0) x = 0;
+ if (y < 0) y = 0;
+
+ return new Point(x, y);
+ }
+
+ public Point GetTilePosition(Point location) => this.GetTilePosition(location.X, location.Y);
+
+ public Point GetTilePosition(int posX, int posY)
+ {
+ int w = (tileSize + margin);
+ int x = (int)Math.Round(decimal.Divide(posX, w));
+ int y = (int)Math.Round(decimal.Divide(posY, w));
+
+ if (x < 0) x = 0;
+ if (y < 0) y = 0;
+
+ return new Point((x * w), (y * w));
+ }
+
+ }
+}
diff --git a/Windows/Forms/TitlePanel.Designer.cs b/Windows/Forms/TitlePanel.Designer.cs
index 213940b..123fa3e 100644
--- a/Windows/Forms/TitlePanel.Designer.cs
+++ b/Windows/Forms/TitlePanel.Designer.cs
@@ -71,7 +71,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label1);
this.Controls.Add(this.pictureBox1);
- this.MinimumSize = new System.Drawing.Size(40, 40);
+ this.MinimumSize = new System.Drawing.Size(100, 40);
this.Name = "TitlePanel";
this.Size = new System.Drawing.Size(697, 40);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
diff --git a/Windows/Forms/TitlePanel.cs b/Windows/Forms/TitlePanel.cs
index 665a72d..04d801f 100644
--- a/Windows/Forms/TitlePanel.cs
+++ b/Windows/Forms/TitlePanel.cs
@@ -12,7 +12,7 @@ namespace AppLauncher.Windows.Forms
{
public partial class TitlePanel : UserControl
{
- private bool windowDragging = false;
+ private bool isDragging = false;
private Point windowOffset = new Point();
public TitlePanel()
@@ -49,18 +49,18 @@ namespace AppLauncher.Windows.Forms
return;
}
- windowDragging = true;
+ isDragging = true;
windowOffset = e.Location;
}
protected void parentForm_MouseUp(object sender, MouseEventArgs e)
{
- windowDragging = false;
+ isDragging = false;
}
protected void parentForm_MouseMove(object sender, MouseEventArgs e)
{
- if (windowDragging)
+ if (isDragging)
{
Point pos = this.PointToScreen(e.Location);