Added: support for add tile at coord

This commit is contained in:
Ray 2020-05-17 02:17:30 +01:00
parent c90d846f2e
commit d4258b39eb
9 changed files with 408 additions and 371 deletions

View File

@ -7,7 +7,6 @@ namespace AppLauncher.Models
public class TileModel
{
public string Title { get; set; }
public Image Icon { get; set; }
public string ProcessFilename { get; set; }
public string ProcessArgument { get; set; }
public string ProcessWorkingDirectory { get; set; }
@ -16,7 +15,22 @@ namespace AppLauncher.Models
public Point Position { get; set; }
public bool IsGroup { get; set; } = false;
protected List<TileModel> Items { get; set; } = new List<TileModel>();
public List<TileModel> Items { get; set; } = new List<TileModel>();
public override string ToString() => this.Title ?? string.Empty;
//public void Update(TileModel model)
//{
// this.Title = model.Title;
// this.ProcessFilename = model.ProcessFilename;
// this.ProcessArgument = model.ProcessArgument;
// this.ProcessWorkingDirectory = model.ProcessWorkingDirectory;
// this.ProcessWindowStyle = model.ProcessWindowStyle;
// this.ProcessAsAdmin = model.ProcessAsAdmin;
// this.Position = model.Position;
// this.IsGroup = model.IsGroup;
// this.Items = model.Items;
//}
}
}

View File

@ -26,9 +26,9 @@
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="362.07537"
inkscape:cx="331.14896"
inkscape:zoom="5.6"
inkscape:cy="407.3011"
inkscape:cx="356.66747"
inkscape:zoom="11.2"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
@ -523,7 +523,10 @@
inkscape:export-ydpi="120" />
</g>
<g
transform="matrix(0.26458333,0,0,0.26458333,90.279613,100.24874)"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="L:\gitlab-hiimray\linear-app-launcher\Resources\folder_32.png"
transform="matrix(0.34189664,0,0,0.34189664,90.202299,100.09411)"
id="g1832"
style="fill:none;stroke:#636977;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1">
<path

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -6,9 +6,10 @@ namespace AppLauncher.Windows.Forms
{
public class AddListTileForm : TDialogForm
{
public static void ShowDialog(TTilePanelLayout panel)
public static void ShowDialog(TTilePanelLayout control)
{
AddListTileForm form = new AddListTileForm(panel);
AddListTileForm form = new AddListTileForm();
form.TilePanelLayout = control;
form.ShowDialog();
}
@ -16,20 +17,14 @@ namespace AppLauncher.Windows.Forms
private TButton button1;
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator1;
private TTextBox textBox1;
protected TTilePanelLayout parentPanel = null;
public TTilePanelLayout TilePanelLayout { get; set; } = null;
public AddListTileForm() : base()
{
InitializeComponent();
}
public AddListTileForm(TTilePanelLayout panel) : base()
{
parentPanel = panel;
InitializeComponent();
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddListTileForm));
@ -156,7 +151,7 @@ namespace AppLauncher.Windows.Forms
IsGroup = true
};
parentPanel.AddTile(model);
this.TilePanelLayout.AddTile(model);
this.Close();
}

View File

@ -1,19 +1,24 @@
using AppLauncher.Models;
using RyzStudio.Windows.ThemedForms;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
namespace AppLauncher.Windows.Forms
{
public class AddTileForm : TDialogForm
{
public static void ShowDialog(TTilePanelLayout panel)
public static void ShowDialog(TTilePanelLayout control, Point coord)
{
AddTileForm form = new AddTileForm(panel);
AddTileForm form = new AddTileForm();
form.TilePanelLayout = control;
form.AimCoord = coord;
form.ShowDialog();
}
public static void ShowDialog(TListBox control)
{
AddTileForm form = new AddTileForm();
form.ListBox = control;
form.ShowDialog();
}
@ -32,20 +37,22 @@ namespace AppLauncher.Windows.Forms
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator1;
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
private TTextBox textBox1;
protected TTilePanelLayout parentPanel = null;
public TTilePanelLayout TilePanelLayout { get; set; } = null;
public Point AimCoord { get; set; } = new Point(-1, -1);
public TListBox ListBox { get; set; } = null;
public AddTileForm() : base()
{
InitializeComponent();
initialiseComponents2();
}
public AddTileForm(TTilePanelLayout panel) : base()
{
parentPanel = panel;
pickerBox1.ComboBox.Items.Clear();
pickerBox1.ComboBox.Items.AddRange(new string[] { "Normal", "Hidden", "Minimized", "Maximized" });
if (pickerBox1.ComboBox.Items.Count > 0) pickerBox1.ComboBox.SelectedIndex = 0;
InitializeComponent();
initialiseComponents2();
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()
@ -343,20 +350,26 @@ namespace AppLauncher.Windows.Forms
}
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;
}
private void button1_Click(object sender, EventArgs e)
{
TileModel model = new TileModel()
TileModel model = buildModel();
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;
}
this.Close();
}
protected TileModel buildModel()
{
TileModel rs = new TileModel()
{
Title = textBox1.Text?.Trim(),
ProcessFilename = textBox2.Text?.Trim(),
@ -366,9 +379,12 @@ namespace AppLauncher.Windows.Forms
ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1)
};
parentPanel.AddTile(model);
if (!this.AimCoord.Equals(new Point(-1, -1)))
{
rs.Position = this.AimCoord;
}
this.Close();
return rs;
}
}

View File

@ -6,25 +6,28 @@ namespace AppLauncher.Windows.Forms
{
public class EditGroupForm : TDialogForm
{
public static void ShowDialog(TTilePanelLayout 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 TTextBox textBox1;
protected TTilePanelLayout parentContainer = null;
public TTilePanelLayout TilePanelLayout { get; set; } = null;
public EditGroupForm() : base()
{
InitializeComponent();
initialiseComponents2();
}
public EditGroupForm(TTilePanelLayout container) : base()
{
parentContainer = container;
InitializeComponent();
initialiseComponents2();
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()
@ -148,31 +151,24 @@ namespace AppLauncher.Windows.Forms
}
private void initialiseComponents2()
{
pickerBox1.ComboBox.Items.Clear();
pickerBox1.ComboBox.Items.AddRange(new string[] { "No", "Yes" });
if (pickerBox1.ComboBox.Items.Count > 0) pickerBox1.ComboBox.SelectedIndex = 0;
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
if (parentContainer != null)
if (this.TilePanelLayout != null)
{
textBox1.Text = parentContainer.Model.Title;
pickerBox1.ComboBox.SelectedIndex = (parentContainer.Model.IsExclusive ? 1 : 0);
textBox1.Text = this.TilePanelLayout.Model.Title;
pickerBox1.ComboBox.SelectedIndex = (this.TilePanelLayout.Model.IsExclusive ? 1 : 0);
}
}
private void button1_Click(object sender, EventArgs e)
{
TileGroupModel model = parentContainer.Model;
TileGroupModel model = this.TilePanelLayout.Model;
model.Title = textBox1.Text?.Trim();
model.IsExclusive = (pickerBox1.ComboBox.SelectedIndex == 1);
parentContainer.UpdateModel(model);
this.TilePanelLayout.UpdateModel(model);
this.Close();
}

View File

@ -1,14 +1,16 @@
using AppLauncher.Models;
using RyzStudio.Windows.ThemedForms;
using System;
using System.Linq;
namespace AppLauncher.Windows.Forms
{
public class EditListTileForm : TDialogForm
{
public static void ShowDialog(TTilePanel panel)
public static void ShowDialog(TTilePanel control)
{
EditListTileForm form = new EditListTileForm(panel);
EditListTileForm form = new EditListTileForm();
form.TilePanel = control;
form.ShowDialog();
}
@ -16,79 +18,53 @@ namespace AppLauncher.Windows.Forms
private TButton button1;
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
private TTextBox textBox1;
private TListBox tListBox1;
private TListBox listBox1;
private System.Windows.Forms.Label label2;
private TButton tButton1;
private TButton tButton2;
private TButton tButton3;
private TButton tButton4;
protected TTilePanel parentPanel = null;
public TTilePanel TilePanel { get; set; } = null;
public EditListTileForm() : base()
{
InitializeComponent();
}
public EditListTileForm(TTilePanel panel) : base()
{
parentPanel = panel;
InitializeComponent();
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditListTileForm));
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle1 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle2 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle3 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle4 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle5 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle6 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle7 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle8 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle9 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle10 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle11 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle12 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle13 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle14 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
RyzStudio.Windows.ThemedForms.TButton.ButtonStyle buttonStyle15 = new RyzStudio.Windows.ThemedForms.TButton.ButtonStyle();
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.tListBox1 = new RyzStudio.Windows.ThemedForms.TListBox();
this.listBox1 = new RyzStudio.Windows.ThemedForms.TListBox();
this.label2 = new System.Windows.Forms.Label();
this.tButton1 = new RyzStudio.Windows.ThemedForms.TButton();
this.tButton2 = new RyzStudio.Windows.ThemedForms.TButton();
this.tButton3 = new RyzStudio.Windows.ThemedForms.TButton();
this.tButton4 = new RyzStudio.Windows.ThemedForms.TButton();
((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 List 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)
//
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);
@ -100,9 +76,9 @@ namespace AppLauncher.Windows.Forms
this.textBox1.SubmitButton = null;
this.textBox1.TabIndex = 152;
this.textBox1.UseSystemPasswordChar = false;
//
//
// 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);
@ -112,9 +88,9 @@ namespace AppLauncher.Windows.Forms
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.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button1.BackColor = System.Drawing.Color.Transparent;
this.button1.DefaultImage = null;
@ -139,33 +115,36 @@ namespace AppLauncher.Windows.Forms
this.button1.StyleOver = buttonStyle3;
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)
//
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, 92);
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;
//
// tListBox1
//
this.tListBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
//
// listBox1
//
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.tListBox1.BackColor = System.Drawing.Color.Transparent;
this.tListBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.tListBox1.Location = new System.Drawing.Point(159, 101);
this.tListBox1.Margin = new System.Windows.Forms.Padding(10, 4, 10, 4);
this.tListBox1.Name = "tListBox1";
this.tListBox1.Padding = new System.Windows.Forms.Padding(10, 6, 7, 5);
this.tListBox1.Size = new System.Drawing.Size(220, 180);
this.tListBox1.SubmitButton = null;
this.tListBox1.TabIndex = 180;
//
this.listBox1.BackColor = System.Drawing.Color.Transparent;
this.listBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.listBox1.Location = new System.Drawing.Point(159, 101);
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(220, 280);
this.listBox1.SubmitButton = null;
this.listBox1.TabIndex = 180;
this.listBox1.OnAdd += new System.EventHandler(this.listBox1_OnAdd);
this.listBox1.OnEdit += new System.EventHandler(this.listBox1_OnEdit);
//
// 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, 104);
@ -174,116 +153,12 @@ namespace AppLauncher.Windows.Forms
this.label2.TabIndex = 181;
this.label2.Text = "List";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tButton1
//
this.tButton1.BackColor = System.Drawing.Color.Transparent;
this.tButton1.DefaultImage = global::AppLauncher.Resource1.plus;
this.tButton1.DownImage = global::AppLauncher.Resource1.plus2;
this.tButton1.LabelText = "";
this.tButton1.Location = new System.Drawing.Point(159, 288);
this.tButton1.Name = "tButton1";
this.tButton1.OverImage = global::AppLauncher.Resource1.plus2;
this.tButton1.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.tButton1.Size = new System.Drawing.Size(32, 32);
buttonStyle4.BackColour = System.Drawing.Color.White;
buttonStyle4.ForeImage = null;
buttonStyle4.PenColour = System.Drawing.Color.Black;
this.tButton1.StyleDefault = buttonStyle4;
buttonStyle5.BackColour = System.Drawing.Color.FromArgb(((int)(((byte)(179)))), ((int)(((byte)(179)))), ((int)(((byte)(179)))));
buttonStyle5.ForeImage = null;
buttonStyle5.PenColour = System.Drawing.Color.Black;
this.tButton1.StyleDown = buttonStyle5;
buttonStyle6.BackColour = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
buttonStyle6.ForeImage = null;
buttonStyle6.PenColour = System.Drawing.Color.White;
this.tButton1.StyleOver = buttonStyle6;
this.tButton1.TabIndex = 182;
//
// tButton2
//
this.tButton2.BackColor = System.Drawing.Color.Transparent;
this.tButton2.DefaultImage = null;
this.tButton2.DownImage = null;
this.tButton2.LabelText = "";
this.tButton2.Location = new System.Drawing.Point(197, 288);
this.tButton2.Name = "tButton2";
this.tButton2.OverImage = null;
this.tButton2.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.tButton2.Size = new System.Drawing.Size(32, 32);
buttonStyle7.BackColour = System.Drawing.Color.White;
buttonStyle7.ForeImage = null;
buttonStyle7.PenColour = System.Drawing.Color.Black;
this.tButton2.StyleDefault = buttonStyle7;
buttonStyle8.BackColour = System.Drawing.Color.FromArgb(((int)(((byte)(179)))), ((int)(((byte)(179)))), ((int)(((byte)(179)))));
buttonStyle8.ForeImage = null;
buttonStyle8.PenColour = System.Drawing.Color.Black;
this.tButton2.StyleDown = buttonStyle8;
buttonStyle9.BackColour = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
buttonStyle9.ForeImage = null;
buttonStyle9.PenColour = System.Drawing.Color.White;
this.tButton2.StyleOver = buttonStyle9;
this.tButton2.TabIndex = 183;
//
// tButton3
//
this.tButton3.BackColor = System.Drawing.Color.Transparent;
this.tButton3.DefaultImage = null;
this.tButton3.DownImage = null;
this.tButton3.LabelText = "";
this.tButton3.Location = new System.Drawing.Point(235, 288);
this.tButton3.Name = "tButton3";
this.tButton3.OverImage = null;
this.tButton3.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.tButton3.Size = new System.Drawing.Size(32, 32);
buttonStyle10.BackColour = System.Drawing.Color.White;
buttonStyle10.ForeImage = null;
buttonStyle10.PenColour = System.Drawing.Color.Black;
this.tButton3.StyleDefault = buttonStyle10;
buttonStyle11.BackColour = System.Drawing.Color.FromArgb(((int)(((byte)(179)))), ((int)(((byte)(179)))), ((int)(((byte)(179)))));
buttonStyle11.ForeImage = null;
buttonStyle11.PenColour = System.Drawing.Color.Black;
this.tButton3.StyleDown = buttonStyle11;
buttonStyle12.BackColour = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
buttonStyle12.ForeImage = null;
buttonStyle12.PenColour = System.Drawing.Color.White;
this.tButton3.StyleOver = buttonStyle12;
this.tButton3.TabIndex = 184;
//
// tButton4
//
this.tButton4.BackColor = System.Drawing.Color.Transparent;
this.tButton4.DefaultImage = null;
this.tButton4.DownImage = null;
this.tButton4.LabelText = "";
this.tButton4.Location = new System.Drawing.Point(273, 288);
this.tButton4.Name = "tButton4";
this.tButton4.OverImage = null;
this.tButton4.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.tButton4.Size = new System.Drawing.Size(32, 32);
buttonStyle13.BackColour = System.Drawing.Color.White;
buttonStyle13.ForeImage = null;
buttonStyle13.PenColour = System.Drawing.Color.Black;
this.tButton4.StyleDefault = buttonStyle13;
buttonStyle14.BackColour = System.Drawing.Color.FromArgb(((int)(((byte)(179)))), ((int)(((byte)(179)))), ((int)(((byte)(179)))));
buttonStyle14.ForeImage = null;
buttonStyle14.PenColour = System.Drawing.Color.Black;
this.tButton4.StyleDown = buttonStyle14;
buttonStyle15.BackColour = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51)))));
buttonStyle15.ForeImage = null;
buttonStyle15.PenColour = System.Drawing.Color.White;
this.tButton4.StyleOver = buttonStyle15;
this.tButton4.TabIndex = 185;
//
//
// EditListTileForm
//
//
this.ClientSize = new System.Drawing.Size(400, 480);
this.Controls.Add(this.tButton4);
this.Controls.Add(this.tButton3);
this.Controls.Add(this.tButton2);
this.Controls.Add(this.tButton1);
this.Controls.Add(this.label2);
this.Controls.Add(this.tListBox1);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.horizontalSeparator2);
this.Controls.Add(this.button1);
this.Controls.Add(this.label1);
@ -298,12 +173,8 @@ namespace AppLauncher.Windows.Forms
this.Controls.SetChildIndex(this.label1, 0);
this.Controls.SetChildIndex(this.button1, 0);
this.Controls.SetChildIndex(this.horizontalSeparator2, 0);
this.Controls.SetChildIndex(this.tListBox1, 0);
this.Controls.SetChildIndex(this.listBox1, 0);
this.Controls.SetChildIndex(this.label2, 0);
this.Controls.SetChildIndex(this.tButton1, 0);
this.Controls.SetChildIndex(this.tButton2, 0);
this.Controls.SetChildIndex(this.tButton3, 0);
this.Controls.SetChildIndex(this.tButton4, 0);
((System.ComponentModel.ISupportInitialize)(this.imgbxClose)).EndInit();
this.ResumeLayout(false);
@ -313,9 +184,24 @@ namespace AppLauncher.Windows.Forms
{
base.OnShown(e);
if (parentPanel != null)
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)
{
textBox1.Text = parentPanel.ModelInfo.Title;
foreach (TileModel item in this.TilePanel.ModelInfo.Items)
{
if (item.IsGroup)
{
continue;
}
listBox1.ListBox.Items.Add(item);
}
}
}
@ -327,10 +213,34 @@ namespace AppLauncher.Windows.Forms
IsGroup = true
};
parentPanel.LoadInfo(model);
model.Items = new System.Collections.Generic.List<TileModel>();
foreach (TileModel item in listBox1.ListBox.Items.OfType<TileModel>())
{
if (item.IsGroup)
{
continue;
}
model.Items.Add(item);
}
this.TilePanel.LoadInfo(model);
this.Close();
}
private void listBox1_OnAdd(object sender, EventArgs e) => AddTileForm.ShowDialog(listBox1);
private void listBox1_OnEdit(object sender, EventArgs e)
{
if (listBox1.ListBox.Items.Count <= 0)
{
return;
}
EditTileForm.ShowDialog(listBox1);
}
}
}

View File

@ -1,15 +1,22 @@
using AppLauncher.Models;
using RyzStudio.Windows.ThemedForms;
using System;
using System.IO;
namespace AppLauncher.Windows.Forms
{
public class EditTileForm : TDialogForm
{
public static void ShowDialog(TTilePanel panel)
public static void ShowDialog(TTilePanel control)
{
EditTileForm form = new EditTileForm(panel);
EditTileForm form = new EditTileForm();
form.TilePanel = control;
form.ShowDialog();
}
public static void ShowDialog(TListBox control)
{
EditTileForm form = new EditTileForm();
form.ListBox = control;
form.ShowDialog();
}
@ -28,20 +35,21 @@ namespace AppLauncher.Windows.Forms
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator1;
private RyzStudio.Windows.Forms.THorizontalSeparator horizontalSeparator2;
private TTextBox textBox1;
protected TTilePanel parentPanel = null;
public TTilePanel TilePanel { get; set; } = null;
public TListBox ListBox { get; set; } = null;
public EditTileForm() : base()
{
InitializeComponent();
initialiseComponents2();
}
public EditTileForm(TTilePanel panel) : base()
{
parentPanel = panel;
pickerBox1.ComboBox.Items.Clear();
pickerBox1.ComboBox.Items.AddRange(new string[] { "Normal", "Hidden", "Minimized", "Maximized" });
if (pickerBox1.ComboBox.Items.Count > 0) pickerBox1.ComboBox.SelectedIndex = 0;
InitializeComponent();
initialiseComponents2();
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()
@ -339,36 +347,52 @@ namespace AppLauncher.Windows.Forms
}
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)
if (this.TilePanel != 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);
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);
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
TileModel model = new TileModel()
TileModel model = buildModel();
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;
}
}
this.Close();
}
protected TileModel buildModel()
{
return new TileModel()
{
Title = textBox1.Text?.Trim(),
ProcessFilename = textBox2.Text?.Trim(),
@ -377,18 +401,22 @@ namespace AppLauncher.Windows.Forms
ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle)pickerBox1.ComboBox.SelectedIndex,
ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1)
};
}
parentPanel.LoadInfo(model);
protected void updateModel(TileModel model)
{
if (model == null)
{
return;
}
//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();
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);
}
}
}
}

View File

@ -13,6 +13,7 @@ namespace AppLauncher.Windows.Forms
protected bool isDragging = false;
protected Point startPosition = new Point();
protected ContextMenuStrip groupContextMenu = null;
protected TileModel modelInfo = new TileModel();
public TTilePanel() : base()
@ -77,30 +78,18 @@ namespace AppLauncher.Windows.Forms
{
this.modelInfo = model;
this.Image = null;
this.Title = model.Title;
if (this.modelInfo.IsGroup)
{
this.Image = Properties.Resources.folder_32;
invalidateGroupMenu(this.modelInfo);
}
else
{
this.Image = model.Icon;
if (this.Image == null)
{
if (File.Exists(model.ProcessFilename))
{
try
{
this.Image = Icon.ExtractAssociatedIcon(model.ProcessFilename)?.ToBitmap();
}
catch
{
}
}
}
this.Image = getIcon(model);
}
toolTip1.SetToolTip(this, this.Title);
@ -116,15 +105,13 @@ namespace AppLauncher.Windows.Forms
return;
}
if (e.Button != MouseButtons.Right)
{
return;
}
this.BringToFront();
isDragging = true;
startPosition = e.Location;
if (((e.Button == MouseButtons.Left) && (Control.ModifierKeys == Keys.Control)) || (e.Button == MouseButtons.Right))
{
isDragging = true;
startPosition = e.Location;
}
}
private void panel_MouseUp(object sender, MouseEventArgs e)
@ -151,67 +138,32 @@ namespace AppLauncher.Windows.Forms
private void panel_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Left)
{
return;
}
if (Control.ModifierKeys == Keys.Control) return;
if (this.ModelInfo == null) return;
if (this.ModelInfo == null)
if (e.Button == MouseButtons.Left)
{
return;
}
if (this.ModelInfo.IsGroup)
{
}
else
{
panel_MouseDoubleClick(sender, e);
if (this.ModelInfo.IsGroup)
{
if (groupContextMenu != null)
{
groupContextMenu.Show(this, e.Location);
}
}
else
{
panel_MouseDoubleClick(sender, e);
}
}
}
private void panel_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Left)
{
return;
}
if (Control.ModifierKeys == Keys.Control) return;
if (this.ModelInfo == null)
if (e.Button == MouseButtons.Left)
{
return;
}
if (this.ModelInfo.IsGroup)
{
return;
}
if (string.IsNullOrWhiteSpace(this.ModelInfo.ProcessFilename))
{
return;
}
if (!File.Exists(this.ModelInfo.ProcessFilename))
{
return;
}
ProcessStartInfo p = new ProcessStartInfo();
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
{
Process.Start(p);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
execute(this.ModelInfo);
}
}
@ -237,5 +189,105 @@ namespace AppLauncher.Windows.Forms
this.PanelContainer.Remove(this);
}
protected void execute(TileModel model)
{
if (model == null)
{
return;
}
if (model.IsGroup)
{
return;
}
if (string.IsNullOrWhiteSpace(model.ProcessFilename))
{
return;
}
if (!File.Exists(model.ProcessFilename))
{
return;
}
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = model.ProcessFilename;
p.WindowStyle = model.ProcessWindowStyle;
if (!string.IsNullOrWhiteSpace(model.ProcessArgument)) p.Arguments = model.ProcessArgument;
if (!string.IsNullOrWhiteSpace(model.ProcessWorkingDirectory)) p.WorkingDirectory = model.ProcessWorkingDirectory;
if (model.ProcessAsAdmin) p.Verb = "runas";
try
{
Process.Start(p);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}
protected Image getIcon(TileModel model)
{
if (!File.Exists(model.ProcessFilename))
{
return null;
}
try
{
return Icon.ExtractAssociatedIcon(model.ProcessFilename)?.ToBitmap();
}
catch
{
// do nothing
}
return null;
}
protected void invalidateGroupMenu(TileModel model)
{
if (groupContextMenu == null) 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);
toolItem.Tag = item;
toolItem.Click += toolItem_Click;
}
}
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);
}
}
}

View File

@ -35,6 +35,7 @@ namespace AppLauncher.Windows.Forms
protected bool isAnimating = false;
protected bool isChecked = true;
protected Point lastMousePosition = new Point();
public TTilePanelLayout(TileGroupModel model) : base()
{
@ -139,6 +140,8 @@ namespace AppLauncher.Windows.Forms
{
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)
@ -248,7 +251,12 @@ namespace AppLauncher.Windows.Forms
this.SetGridSize(gridSize.X, (gridSize.Y + 1));
}
Point? newCoord = findLastFreeCoord();
Point? newCoord = tile.Position;
if ((newCoord == null) || hasTile(tile.Position))
{
newCoord = findLastFreeCoord();
}
if (newCoord == null)
{
return;
@ -385,11 +393,7 @@ namespace AppLauncher.Windows.Forms
this.SetGridSize(groupInfo.GridSize.Width, (groupInfo.GridSize.Height + 1));
}
public void EditGroup()
{
EditGroupForm editForm = new EditGroupForm(this);
editForm.ShowDialog();
}
public void EditGroup() => EditGroupForm.ShowDialog(this);
public void LoadModel(TileGroupModel model)
{
@ -457,7 +461,7 @@ namespace AppLauncher.Windows.Forms
return;
}
Point newPosition = convertLocationToCoord(posX, posY);
Point newPosition = convertLocationToCoord_Nearest(posX, posY);
if (!isTileInBounds(newPosition))
{
return;
@ -565,6 +569,20 @@ namespace AppLauncher.Windows.Forms
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));
@ -715,7 +733,12 @@ namespace AppLauncher.Windows.Forms
}
}
private void addTileMenuItem_Click(object sender, EventArgs e) => AddTileForm.ShowDialog(this);
private void addTileMenuItem_Click(object sender, EventArgs e)
{
Point coord = convertLocationToCoord(lastMousePosition.X, lastMousePosition.Y);
AddTileForm.ShowDialog(this, coord);
}
private void addListTileMenuItem_Click(object sender, EventArgs e) => AddListTileForm.ShowDialog(this);