Added: support for add tile at coord
This commit is contained in:
		
							parent
							
								
									c90d846f2e
								
							
						
					
					
						commit
						d4258b39eb
					
				@ -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;
 | 
			
		||||
        //}
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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  | 
@ -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();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user