From 91803d8f93fffa06da04d5b44cd656f9df33abc1 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 7 Sep 2019 17:07:44 +0300 Subject: [PATCH] Added theme export/import support --- .../Forms/ApplicationSettingsForm.Designer.cs | 220 +++++++++--------- ShareX/Forms/ApplicationSettingsForm.cs | 32 ++- ShareX/Forms/ApplicationSettingsForm.resx | 46 +++- 3 files changed, 180 insertions(+), 118 deletions(-) diff --git a/ShareX/Forms/ApplicationSettingsForm.Designer.cs b/ShareX/Forms/ApplicationSettingsForm.Designer.cs index ba5fdc299..a6de4c079 100644 --- a/ShareX/Forms/ApplicationSettingsForm.Designer.cs +++ b/ShareX/Forms/ApplicationSettingsForm.Designer.cs @@ -45,7 +45,6 @@ private void InitializeComponent() this.btnEditQuickTaskMenu = new System.Windows.Forms.Button(); this.cbShowTray = new System.Windows.Forms.CheckBox(); this.cbTrayIconProgressEnabled = new System.Windows.Forms.CheckBox(); - this.btnLanguages = new ShareX.HelpersLib.MenuButton(); this.cmsLanguages = new System.Windows.Forms.ContextMenuStrip(this.components); this.cbRememberMainFormPosition = new System.Windows.Forms.CheckBox(); this.cbSilentRun = new System.Windows.Forms.CheckBox(); @@ -104,19 +103,10 @@ private void InitializeComponent() this.btnClipboardFormatEdit = new System.Windows.Forms.Button(); this.btnClipboardFormatRemove = new System.Windows.Forms.Button(); this.btnClipboardFormatAdd = new System.Windows.Forms.Button(); - this.lvClipboardFormats = new ShareX.HelpersLib.MyListView(); - this.chDescription = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.chFormat = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.tpUploadRetry = new System.Windows.Forms.TabPage(); this.gbSecondaryFileUploaders = new System.Windows.Forms.GroupBox(); - this.lvSecondaryFileUploaders = new ShareX.HelpersLib.MyListView(); - this.chSecondaryFileUploaders = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.gbSecondaryImageUploaders = new System.Windows.Forms.GroupBox(); - this.lvSecondaryImageUploaders = new ShareX.HelpersLib.MyListView(); - this.chSecondaryImageUploaders = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.gbSecondaryTextUploaders = new System.Windows.Forms.GroupBox(); - this.lvSecondaryTextUploaders = new ShareX.HelpersLib.MyListView(); - this.chSecondaryTextUploaders = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chkUseSecondaryUploaders = new System.Windows.Forms.CheckBox(); this.cbIfUploadFailRetryOnce = new System.Windows.Forms.Label(); this.nudRetryUpload = new System.Windows.Forms.NumericUpDown(); @@ -148,9 +138,20 @@ private void InitializeComponent() this.txtProxyUsername = new System.Windows.Forms.TextBox(); this.tpAdvanced = new System.Windows.Forms.TabPage(); this.pgSettings = new System.Windows.Forms.PropertyGrid(); - this.tttvMain = new ShareX.HelpersLib.TabToTreeView(); this.btnThemeAdd = new System.Windows.Forms.Button(); this.btnThemeRemove = new System.Windows.Forms.Button(); + this.btnLanguages = new ShareX.HelpersLib.MenuButton(); + this.lvClipboardFormats = new ShareX.HelpersLib.MyListView(); + this.chDescription = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.chFormat = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.lvSecondaryFileUploaders = new ShareX.HelpersLib.MyListView(); + this.chSecondaryFileUploaders = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.lvSecondaryImageUploaders = new ShareX.HelpersLib.MyListView(); + this.chSecondaryImageUploaders = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.lvSecondaryTextUploaders = new ShareX.HelpersLib.MyListView(); + this.chSecondaryTextUploaders = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.tttvMain = new ShareX.HelpersLib.TabToTreeView(); + this.eiTheme = new ShareX.HelpersLib.ExportImportControl(); this.tcSettings.SuspendLayout(); this.tpGeneral.SuspendLayout(); this.tpTheme.SuspendLayout(); @@ -303,13 +304,6 @@ private void InitializeComponent() this.cbTrayIconProgressEnabled.UseVisualStyleBackColor = true; this.cbTrayIconProgressEnabled.CheckedChanged += new System.EventHandler(this.cbTrayIconProgressEnabled_CheckedChanged); // - // btnLanguages - // - resources.ApplyResources(this.btnLanguages, "btnLanguages"); - this.btnLanguages.Menu = this.cmsLanguages; - this.btnLanguages.Name = "btnLanguages"; - this.btnLanguages.UseVisualStyleBackColor = true; - // // cmsLanguages // this.cmsLanguages.Name = "cmsLanguages"; @@ -350,6 +344,7 @@ private void InitializeComponent() // // tpTheme // + this.tpTheme.Controls.Add(this.eiTheme); this.tpTheme.Controls.Add(this.btnThemeRemove); this.tpTheme.Controls.Add(this.btnThemeAdd); this.tpTheme.Controls.Add(this.cbThemes); @@ -744,28 +739,6 @@ private void InitializeComponent() this.btnClipboardFormatAdd.UseVisualStyleBackColor = true; this.btnClipboardFormatAdd.Click += new System.EventHandler(this.btnAddClipboardFormat_Click); // - // lvClipboardFormats - // - resources.ApplyResources(this.lvClipboardFormats, "lvClipboardFormats"); - this.lvClipboardFormats.AutoFillColumn = true; - this.lvClipboardFormats.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.chDescription, - this.chFormat}); - this.lvClipboardFormats.FullRowSelect = true; - this.lvClipboardFormats.HideSelection = false; - this.lvClipboardFormats.Name = "lvClipboardFormats"; - this.lvClipboardFormats.UseCompatibleStateImageBehavior = false; - this.lvClipboardFormats.View = System.Windows.Forms.View.Details; - this.lvClipboardFormats.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lvClipboardFormats_MouseDoubleClick); - // - // chDescription - // - resources.ApplyResources(this.chDescription, "chDescription"); - // - // chFormat - // - resources.ApplyResources(this.chFormat, "chFormat"); - // // tpUploadRetry // this.tpUploadRetry.BackColor = System.Drawing.SystemColors.Window; @@ -785,24 +758,6 @@ private void InitializeComponent() this.gbSecondaryFileUploaders.Name = "gbSecondaryFileUploaders"; this.gbSecondaryFileUploaders.TabStop = false; // - // lvSecondaryFileUploaders - // - this.lvSecondaryFileUploaders.AllowDrop = true; - this.lvSecondaryFileUploaders.AllowItemDrag = true; - this.lvSecondaryFileUploaders.AutoFillColumn = true; - this.lvSecondaryFileUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lvSecondaryFileUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.chSecondaryFileUploaders}); - resources.ApplyResources(this.lvSecondaryFileUploaders, "lvSecondaryFileUploaders"); - this.lvSecondaryFileUploaders.FullRowSelect = true; - this.lvSecondaryFileUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.lvSecondaryFileUploaders.HideSelection = false; - this.lvSecondaryFileUploaders.MultiSelect = false; - this.lvSecondaryFileUploaders.Name = "lvSecondaryFileUploaders"; - this.lvSecondaryFileUploaders.UseCompatibleStateImageBehavior = false; - this.lvSecondaryFileUploaders.View = System.Windows.Forms.View.Details; - this.lvSecondaryFileUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); - // // gbSecondaryImageUploaders // this.gbSecondaryImageUploaders.Controls.Add(this.lvSecondaryImageUploaders); @@ -810,24 +765,6 @@ private void InitializeComponent() this.gbSecondaryImageUploaders.Name = "gbSecondaryImageUploaders"; this.gbSecondaryImageUploaders.TabStop = false; // - // lvSecondaryImageUploaders - // - this.lvSecondaryImageUploaders.AllowDrop = true; - this.lvSecondaryImageUploaders.AllowItemDrag = true; - this.lvSecondaryImageUploaders.AutoFillColumn = true; - this.lvSecondaryImageUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lvSecondaryImageUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.chSecondaryImageUploaders}); - resources.ApplyResources(this.lvSecondaryImageUploaders, "lvSecondaryImageUploaders"); - this.lvSecondaryImageUploaders.FullRowSelect = true; - this.lvSecondaryImageUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.lvSecondaryImageUploaders.HideSelection = false; - this.lvSecondaryImageUploaders.MultiSelect = false; - this.lvSecondaryImageUploaders.Name = "lvSecondaryImageUploaders"; - this.lvSecondaryImageUploaders.UseCompatibleStateImageBehavior = false; - this.lvSecondaryImageUploaders.View = System.Windows.Forms.View.Details; - this.lvSecondaryImageUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); - // // gbSecondaryTextUploaders // this.gbSecondaryTextUploaders.Controls.Add(this.lvSecondaryTextUploaders); @@ -835,24 +772,6 @@ private void InitializeComponent() this.gbSecondaryTextUploaders.Name = "gbSecondaryTextUploaders"; this.gbSecondaryTextUploaders.TabStop = false; // - // lvSecondaryTextUploaders - // - this.lvSecondaryTextUploaders.AllowDrop = true; - this.lvSecondaryTextUploaders.AllowItemDrag = true; - this.lvSecondaryTextUploaders.AutoFillColumn = true; - this.lvSecondaryTextUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.lvSecondaryTextUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.chSecondaryTextUploaders}); - resources.ApplyResources(this.lvSecondaryTextUploaders, "lvSecondaryTextUploaders"); - this.lvSecondaryTextUploaders.FullRowSelect = true; - this.lvSecondaryTextUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.lvSecondaryTextUploaders.HideSelection = false; - this.lvSecondaryTextUploaders.MultiSelect = false; - this.lvSecondaryTextUploaders.Name = "lvSecondaryTextUploaders"; - this.lvSecondaryTextUploaders.UseCompatibleStateImageBehavior = false; - this.lvSecondaryTextUploaders.View = System.Windows.Forms.View.Details; - this.lvSecondaryTextUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); - // // chkUseSecondaryUploaders // resources.ApplyResources(this.chkUseSecondaryUploaders, "chkUseSecondaryUploaders"); @@ -1090,16 +1009,6 @@ private void InitializeComponent() this.pgSettings.PropertySort = System.Windows.Forms.PropertySort.Categorized; this.pgSettings.ToolbarVisible = false; // - // tttvMain - // - resources.ApplyResources(this.tttvMain, "tttvMain"); - this.tttvMain.ImageList = null; - this.tttvMain.MainTabControl = null; - this.tttvMain.Name = "tttvMain"; - this.tttvMain.TreeViewFont = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162))); - this.tttvMain.TreeViewSize = 175; - this.tttvMain.TabChanged += new ShareX.HelpersLib.TabToTreeView.TabChangedEventHandler(this.tttvMain_TabChanged); - // // btnThemeAdd // resources.ApplyResources(this.btnThemeAdd, "btnThemeAdd"); @@ -1114,6 +1023,108 @@ private void InitializeComponent() this.btnThemeRemove.UseVisualStyleBackColor = true; this.btnThemeRemove.Click += new System.EventHandler(this.BtnThemeRemove_Click); // + // btnLanguages + // + resources.ApplyResources(this.btnLanguages, "btnLanguages"); + this.btnLanguages.Menu = this.cmsLanguages; + this.btnLanguages.Name = "btnLanguages"; + this.btnLanguages.UseVisualStyleBackColor = true; + // + // lvClipboardFormats + // + resources.ApplyResources(this.lvClipboardFormats, "lvClipboardFormats"); + this.lvClipboardFormats.AutoFillColumn = true; + this.lvClipboardFormats.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.chDescription, + this.chFormat}); + this.lvClipboardFormats.FullRowSelect = true; + this.lvClipboardFormats.HideSelection = false; + this.lvClipboardFormats.Name = "lvClipboardFormats"; + this.lvClipboardFormats.UseCompatibleStateImageBehavior = false; + this.lvClipboardFormats.View = System.Windows.Forms.View.Details; + this.lvClipboardFormats.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lvClipboardFormats_MouseDoubleClick); + // + // chDescription + // + resources.ApplyResources(this.chDescription, "chDescription"); + // + // chFormat + // + resources.ApplyResources(this.chFormat, "chFormat"); + // + // lvSecondaryFileUploaders + // + this.lvSecondaryFileUploaders.AllowDrop = true; + this.lvSecondaryFileUploaders.AllowItemDrag = true; + this.lvSecondaryFileUploaders.AutoFillColumn = true; + this.lvSecondaryFileUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.lvSecondaryFileUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.chSecondaryFileUploaders}); + resources.ApplyResources(this.lvSecondaryFileUploaders, "lvSecondaryFileUploaders"); + this.lvSecondaryFileUploaders.FullRowSelect = true; + this.lvSecondaryFileUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.lvSecondaryFileUploaders.HideSelection = false; + this.lvSecondaryFileUploaders.MultiSelect = false; + this.lvSecondaryFileUploaders.Name = "lvSecondaryFileUploaders"; + this.lvSecondaryFileUploaders.UseCompatibleStateImageBehavior = false; + this.lvSecondaryFileUploaders.View = System.Windows.Forms.View.Details; + this.lvSecondaryFileUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); + // + // lvSecondaryImageUploaders + // + this.lvSecondaryImageUploaders.AllowDrop = true; + this.lvSecondaryImageUploaders.AllowItemDrag = true; + this.lvSecondaryImageUploaders.AutoFillColumn = true; + this.lvSecondaryImageUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.lvSecondaryImageUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.chSecondaryImageUploaders}); + resources.ApplyResources(this.lvSecondaryImageUploaders, "lvSecondaryImageUploaders"); + this.lvSecondaryImageUploaders.FullRowSelect = true; + this.lvSecondaryImageUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.lvSecondaryImageUploaders.HideSelection = false; + this.lvSecondaryImageUploaders.MultiSelect = false; + this.lvSecondaryImageUploaders.Name = "lvSecondaryImageUploaders"; + this.lvSecondaryImageUploaders.UseCompatibleStateImageBehavior = false; + this.lvSecondaryImageUploaders.View = System.Windows.Forms.View.Details; + this.lvSecondaryImageUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); + // + // lvSecondaryTextUploaders + // + this.lvSecondaryTextUploaders.AllowDrop = true; + this.lvSecondaryTextUploaders.AllowItemDrag = true; + this.lvSecondaryTextUploaders.AutoFillColumn = true; + this.lvSecondaryTextUploaders.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.lvSecondaryTextUploaders.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.chSecondaryTextUploaders}); + resources.ApplyResources(this.lvSecondaryTextUploaders, "lvSecondaryTextUploaders"); + this.lvSecondaryTextUploaders.FullRowSelect = true; + this.lvSecondaryTextUploaders.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.lvSecondaryTextUploaders.HideSelection = false; + this.lvSecondaryTextUploaders.MultiSelect = false; + this.lvSecondaryTextUploaders.Name = "lvSecondaryTextUploaders"; + this.lvSecondaryTextUploaders.UseCompatibleStateImageBehavior = false; + this.lvSecondaryTextUploaders.View = System.Windows.Forms.View.Details; + this.lvSecondaryTextUploaders.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvSecondaryUploaders_MouseUp); + // + // tttvMain + // + resources.ApplyResources(this.tttvMain, "tttvMain"); + this.tttvMain.ImageList = null; + this.tttvMain.MainTabControl = null; + this.tttvMain.Name = "tttvMain"; + this.tttvMain.TreeViewFont = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162))); + this.tttvMain.TreeViewSize = 175; + this.tttvMain.TabChanged += new ShareX.HelpersLib.TabToTreeView.TabChangedEventHandler(this.tttvMain_TabChanged); + // + // eiTheme + // + this.eiTheme.DefaultFileName = null; + resources.ApplyResources(this.eiTheme, "eiTheme"); + this.eiTheme.Name = "eiTheme"; + this.eiTheme.ObjectType = null; + this.eiTheme.ExportRequested += new ShareX.HelpersLib.ExportImportControl.ExportEventHandler(this.EiTheme_ExportRequested); + this.eiTheme.ImportRequested += new ShareX.HelpersLib.ExportImportControl.ImportEventHandler(this.EiTheme_ImportRequested); + // // ApplicationSettingsForm // resources.ApplyResources(this, "$this"); @@ -1295,5 +1306,6 @@ private void InitializeComponent() private System.Windows.Forms.ComboBox cbThemes; private System.Windows.Forms.Button btnThemeRemove; private System.Windows.Forms.Button btnThemeAdd; + private ExportImportControl eiTheme; } } \ No newline at end of file diff --git a/ShareX/Forms/ApplicationSettingsForm.cs b/ShareX/Forms/ApplicationSettingsForm.cs index 13ca44a52..6d45a9b96 100644 --- a/ShareX/Forms/ApplicationSettingsForm.cs +++ b/ShareX/Forms/ApplicationSettingsForm.cs @@ -81,6 +81,8 @@ private void InitializeControls() cbTrayLeftClickAction.Items.AddRange(Helpers.GetLocalizedEnumDescriptions()); cbTrayMiddleClickAction.Items.AddRange(Helpers.GetLocalizedEnumDescriptions()); + eiTheme.ObjectType = typeof(ShareXTheme); + CodeMenu.Create(txtSaveImageSubFolderPattern, CodeMenuEntryFilename.t, CodeMenuEntryFilename.pn, CodeMenuEntryFilename.i, CodeMenuEntryFilename.width, CodeMenuEntryFilename.height, CodeMenuEntryFilename.n); cbProxyMethod.Items.AddRange(Helpers.GetLocalizedEnumDescriptions()); @@ -452,6 +454,19 @@ private void ApplySelectedTheme() ShareXResources.ApplyTheme(this); } + private void AddTheme(ShareXTheme theme) + { + if (theme != null) + { + Program.Settings.Themes.Add(theme); + cbThemes.Items.Add(theme); + int index = Program.Settings.Themes.Count - 1; + Program.Settings.SelectedTheme = index; + cbThemes.SelectedIndex = index; + UpdateThemeControls(); + } + } + private void CbThemes_SelectedIndexChanged(object sender, EventArgs e) { Program.Settings.SelectedTheme = cbThemes.SelectedIndex; @@ -473,12 +488,7 @@ private void BtnThemeAdd_Click(object sender, EventArgs e) { ShareXTheme theme = new ShareXTheme(); theme.ApplyDarkColors(); - Program.Settings.Themes.Add(theme); - cbThemes.Items.Add(theme); - int index = Program.Settings.Themes.Count - 1; - Program.Settings.SelectedTheme = index; - cbThemes.SelectedIndex = index; - UpdateThemeControls(); + AddTheme(theme); } private void BtnThemeRemove_Click(object sender, EventArgs e) @@ -516,6 +526,16 @@ private void BtnApplyTheme_Click(object sender, EventArgs e) } } + private object EiTheme_ExportRequested() + { + return pgTheme.SelectedObject as ShareXTheme; + } + + private void EiTheme_ImportRequested(object obj) + { + AddTheme(obj as ShareXTheme); + } + #endregion #region Integration diff --git a/ShareX/Forms/ApplicationSettingsForm.resx b/ShareX/Forms/ApplicationSettingsForm.resx index 90ca60172..07367392a 100644 --- a/ShareX/Forms/ApplicationSettingsForm.resx +++ b/ShareX/Forms/ApplicationSettingsForm.resx @@ -672,6 +672,30 @@ 0 + + 192, 336 + + + 185, 24 + + + 24 + + + eiTheme + + + ShareX.HelpersLib.ExportImportControl, ShareX.HelpersLib, Version=13.0.2.0, Culture=neutral, PublicKeyToken=null + + + tpTheme + + + 0 + + + NoControl + 296, 64 @@ -694,7 +718,10 @@ tpTheme - 0 + 1 + + + NoControl 208, 64 @@ -718,7 +745,7 @@ tpTheme - 1 + 2 16, 64 @@ -739,7 +766,7 @@ tpTheme - 2 + 3 True @@ -769,7 +796,7 @@ tpTheme - 3 + 4 NoControl @@ -778,7 +805,7 @@ 16, 336 - 136, 24 + 168, 24 1 @@ -796,7 +823,7 @@ tpTheme - 4 + 5 False @@ -820,7 +847,7 @@ tpTheme - 5 + 6 True @@ -850,7 +877,7 @@ tpTheme - 6 + 7 4, 22 @@ -3237,6 +3264,9 @@ 737, 402 + + NoControl + 640, 440