From bbe764fd5c8909751d0889462b5580ebea0723f5 Mon Sep 17 00:00:00 2001 From: Alex Z Date: Sat, 22 Feb 2020 13:56:48 +0300 Subject: [PATCH] - fix addon editor - add restart after edit project/addon --- .../Model/VIewModel/FormAddonViewModel.cs | 24 +----- .../UI/FormAddons.Designer.cs | 27 +++---- src/UniversalValveToolbox/UI/FormAddons.cs | 74 +++++++++---------- src/UniversalValveToolbox/UI/FormMain.cs | 8 +- .../UI/FormProfiles.Designer.cs | 2 + src/UniversalValveToolbox/UI/FormProfiles.cs | 8 ++ src/UniversalValveToolbox/UI/FormSettings.cs | 11 --- 7 files changed, 66 insertions(+), 88 deletions(-) diff --git a/src/UniversalValveToolbox/Model/VIewModel/FormAddonViewModel.cs b/src/UniversalValveToolbox/Model/VIewModel/FormAddonViewModel.cs index d946ab3..d317cb4 100644 --- a/src/UniversalValveToolbox/Model/VIewModel/FormAddonViewModel.cs +++ b/src/UniversalValveToolbox/Model/VIewModel/FormAddonViewModel.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using UniversalValveToolbox.Base; using UniversalValveToolbox.Model.Dto; +using static System.Windows.Forms.ListView; namespace UniversalValveToolbox.Model.ViewModel { class FormAddonViewModel: DtoModel { @@ -12,7 +13,6 @@ namespace UniversalValveToolbox.Model.ViewModel { private int selectAddonIndex = 0; private EngineDtoModel[] engines; - private List arraySelectAddonIndex = new List(); public FormAddonViewModel(AddonDtoModel[] addons, EngineDtoModel[] engines) { this.addons = addons; @@ -33,9 +33,6 @@ namespace UniversalValveToolbox.Model.ViewModel { set { ForceUpdateField(value, ref selectAddonIndex); OnPropertyChanged(nameof(SelectAddon)); - - var indexs = SelectAddon.Engines; - ArraySelectAddonIndex = indexs; } } @@ -47,24 +44,5 @@ namespace UniversalValveToolbox.Model.ViewModel { UpdateField(value, ref engines); } } - - public int[] ArraySelectAddonIndex { - get => arraySelectAddonIndex.ToArray(); - set { - ForceUpdateField(value.ToList(), ref arraySelectAddonIndex); - //OnPropertyChanged(nameof(ArraySelectEngine)); - } - } - - //public EngineDtoModel[] ArraySelectEngine { - // get { - // List result = new List(); - // foreach (var index in arraySelectAddonIndex) { - // result.Add(engines[index]); - // } - - // return result.ToArray(); - // } - //} } } diff --git a/src/UniversalValveToolbox/UI/FormAddons.Designer.cs b/src/UniversalValveToolbox/UI/FormAddons.Designer.cs index a3f84ad..ba1f642 100644 --- a/src/UniversalValveToolbox/UI/FormAddons.Designer.cs +++ b/src/UniversalValveToolbox/UI/FormAddons.Designer.cs @@ -47,12 +47,13 @@ this.comboBoxCategory = new System.Windows.Forms.ComboBox(); this.labelCategory = new System.Windows.Forms.Label(); this.buttonApply = new System.Windows.Forms.Button(); - this.engineListView = new System.Windows.Forms.ListView(); + this.engineCheckedListBox = new System.Windows.Forms.CheckedListBox(); this.SuspendLayout(); // // buttonCancel // this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.buttonCancel.Location = new System.Drawing.Point(327, 382); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); @@ -64,6 +65,7 @@ // buttonOK // this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; this.buttonOK.Location = new System.Drawing.Point(246, 382); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); @@ -228,26 +230,21 @@ this.buttonApply.UseVisualStyleBackColor = true; this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click); // - // engineListView + // engineCheckedListBox // - this.engineListView.CheckBoxes = true; - this.engineListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.engineListView.HideSelection = false; - this.engineListView.Location = new System.Drawing.Point(15, 182); - this.engineListView.Name = "engineListView"; - this.engineListView.Size = new System.Drawing.Size(387, 188); - this.engineListView.TabIndex = 28; - this.engineListView.UseCompatibleStateImageBehavior = false; - this.engineListView.View = System.Windows.Forms.View.List; - this.engineListView.SelectedIndexChanged += new System.EventHandler(this.engineListView_SelectedIndexChanged); - this.engineListView.ItemChecked += EngineListView_ItemChecked; + this.engineCheckedListBox.CheckOnClick = true; + this.engineCheckedListBox.FormattingEnabled = true; + this.engineCheckedListBox.Location = new System.Drawing.Point(15, 182); + this.engineCheckedListBox.Name = "engineCheckedListBox"; + this.engineCheckedListBox.Size = new System.Drawing.Size(387, 169); + this.engineCheckedListBox.TabIndex = 28; // // FormAddons // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(495, 417); - this.Controls.Add(this.engineListView); + this.Controls.Add(this.engineCheckedListBox); this.Controls.Add(this.buttonApply); this.Controls.Add(this.labelCategory); this.Controls.Add(this.comboBoxCategory); @@ -299,6 +296,6 @@ private System.Windows.Forms.ComboBox comboBoxCategory; private System.Windows.Forms.Label labelCategory; private System.Windows.Forms.Button buttonApply; - private System.Windows.Forms.ListView engineListView; + private System.Windows.Forms.CheckedListBox engineCheckedListBox; } } \ No newline at end of file diff --git a/src/UniversalValveToolbox/UI/FormAddons.cs b/src/UniversalValveToolbox/UI/FormAddons.cs index ba1b8ae..15a648b 100644 --- a/src/UniversalValveToolbox/UI/FormAddons.cs +++ b/src/UniversalValveToolbox/UI/FormAddons.cs @@ -10,11 +10,13 @@ using UniversalValveToolbox.Utils; namespace UniversalValveToolbox { public partial class FormAddons : Form { + private bool needRestart; + private bool isEnableListBoxCheckListener = false; + private DataProvider dataProvider = new DataProvider(); private FormAddonViewModel model; - private AddonDtoModel[] arrayAddon; public FormAddons() { InitializeComponent(); @@ -22,7 +24,7 @@ namespace UniversalValveToolbox { model = new FormAddonViewModel(dataProvider.Addons, dataProvider.Engines); UpdateAddonsComboBox(); - InitEnginesListView(); + UpdateEngineCheckedListView(); comboBox_Addon.Bind(a => a.SelectedIndex, model, a => a.SelectAddonIndex); @@ -31,38 +33,47 @@ namespace UniversalValveToolbox { textBoxArgs.Bind(a => a.Text, model, a => a.SelectAddon.Args); model.PropertyChanged += Model_PropertyChanged; + + this.engineCheckedListBox.ItemCheck += EngineCheckedListBox_ItemCheck; + } + + private void EngineCheckedListBox_ItemCheck(object sender, ItemCheckEventArgs e) { + if (isEnableListBoxCheckListener) { + List checkedItems = new List(); + foreach (var item in engineCheckedListBox.CheckedItems) + checkedItems.Add((EngineDtoModel)item); + + if (e.NewValue == CheckState.Checked) + checkedItems.Add((EngineDtoModel)engineCheckedListBox.Items[e.Index]); + else + checkedItems.Remove((EngineDtoModel)engineCheckedListBox.Items[e.Index]); + + + model.SelectAddon.Engines = checkedItems.Select(engine => engine.Appid).ToArray(); + } } private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { - UpdateEnginesListView(); + if (e.PropertyName == nameof(model.SelectAddon)) { + UpdateEngineCheckedListView(); + } } + private void UpdateEngineCheckedListView() { + isEnableListBoxCheckListener = false; - private void EngineListView_ItemChecked(object sender, System.Windows.Forms.ItemCheckedEventArgs e) { - var listCheckedIndex = new List(); + engineCheckedListBox.Items.Clear(); + engineCheckedListBox.Items.AddRange(model.Engines); - if (engineListView.Items == null) - return; + for (var i = 0; i < model.Engines.Length; i++) { + var engine = model.Engines[i]; - foreach (ListViewItem item in engineListView.Items) { - if (item?.Checked ?? false) { - listCheckedIndex.Add(item.Index); + if (model.SelectAddon.Engines.Contains(engine.Appid)) { + engineCheckedListBox.SetItemChecked(i, true); } } - - model.ArraySelectAddonIndex = listCheckedIndex.ToArray(); - } - - - private void InitEnginesListView() { - var checkedEngineListItem = dataProvider.Engines.Select(engine => { - var item = new ListViewItem(engine.Name); - item.Checked = model.SelectAddon.Engines.Contains(engine.Appid); - return item; - }).ToArray(); - - engineListView.Items.Clear(); - engineListView.Items.AddRange(checkedEngineListItem); + + isEnableListBoxCheckListener = true; } private void UpdateAddonsComboBox() { @@ -71,13 +82,6 @@ namespace UniversalValveToolbox { comboBox_Addon.SelectedIndex = 0; } - private void UpdateEnginesListView() { - var indexs = model.ArraySelectAddonIndex; - - for (var i = 0; i < model.Engines.Length; i++) { - engineListView.Items[i].Checked = indexs.Contains(i); - } - } private void buttonCancel_Click(object sender, EventArgs e) { Close(); @@ -108,10 +112,6 @@ namespace UniversalValveToolbox { model.SelectAddonIndex = comboBox_Addon.SelectedIndex; } - private void engineListView_SelectedIndexChanged(object sender, EventArgs e) { - - } - private void Remove() { var newAddonList = new List(model.Addons); newAddonList.RemoveAt(model.SelectAddonIndex); @@ -134,8 +134,6 @@ namespace UniversalValveToolbox { } private void Save() { - - JsonFileUtil.SaveValues(DataProvider.AddonsPath, "json", model.Addons.ToList()); } @@ -148,6 +146,8 @@ namespace UniversalValveToolbox { } private void buttonApply_Click(object sender, EventArgs e) { + needRestart = true; + Save(); } diff --git a/src/UniversalValveToolbox/UI/FormMain.cs b/src/UniversalValveToolbox/UI/FormMain.cs index 9840d37..2a62182 100644 --- a/src/UniversalValveToolbox/UI/FormMain.cs +++ b/src/UniversalValveToolbox/UI/FormMain.cs @@ -311,11 +311,15 @@ namespace UniversalValveToolbox { } else if (selectItemText == Properties.translations.MenuItems.itmEditConfigurations) { var frmProfiles = new FormProfiles(); - frmProfiles.ShowDialog(); + if (frmProfiles.ShowDialog() == DialogResult.OK) { + Application.Restart(); + } } else if (selectItemText == Properties.translations.MenuItems.itmEditPlugins) { var frmPlugins = new FormAddons(); - frmPlugins.ShowDialog(); + if (frmPlugins.ShowDialog() == DialogResult.OK) { + Application.Restart(); + } } else if (selectItemText == Properties.translations.MenuItems.itmAbout) { var frmAbout = new FormAbout(); diff --git a/src/UniversalValveToolbox/UI/FormProfiles.Designer.cs b/src/UniversalValveToolbox/UI/FormProfiles.Designer.cs index cb7645a..753a2f4 100644 --- a/src/UniversalValveToolbox/UI/FormProfiles.Designer.cs +++ b/src/UniversalValveToolbox/UI/FormProfiles.Designer.cs @@ -60,6 +60,7 @@ namespace UniversalValveToolbox { // buttonOK // this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; this.buttonOK.Location = new System.Drawing.Point(251, 225); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); @@ -71,6 +72,7 @@ namespace UniversalValveToolbox { // buttonCancel // this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.buttonCancel.Location = new System.Drawing.Point(332, 225); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); diff --git a/src/UniversalValveToolbox/UI/FormProfiles.cs b/src/UniversalValveToolbox/UI/FormProfiles.cs index 5093714..ffcde5a 100644 --- a/src/UniversalValveToolbox/UI/FormProfiles.cs +++ b/src/UniversalValveToolbox/UI/FormProfiles.cs @@ -10,6 +10,8 @@ using UniversalValveToolbox.Utils; namespace UniversalValveToolbox { public partial class FormProfiles : Form { + private bool needRestart = false; + private DataProvider dataProvider = new DataProvider(); private FormProjectViewModel model; @@ -54,6 +56,10 @@ namespace UniversalValveToolbox { } private void buttonCancel_Click(object sender, EventArgs e) { + if (needRestart) { + DialogResult = DialogResult.OK; + } + Close(); } @@ -115,6 +121,8 @@ namespace UniversalValveToolbox { private void buttonApply_Click(object sender, EventArgs e) { Save(); + + needRestart = true; } private void buttonNew_Click(object sender, EventArgs e) { diff --git a/src/UniversalValveToolbox/UI/FormSettings.cs b/src/UniversalValveToolbox/UI/FormSettings.cs index 1e8bbae..f8a1563 100644 --- a/src/UniversalValveToolbox/UI/FormSettings.cs +++ b/src/UniversalValveToolbox/UI/FormSettings.cs @@ -14,17 +14,6 @@ namespace UniversalValveToolbox { comboBoxLang.Bind(a => a.SelectedIndex, settings, a => a.SelectedLanguageIndex); comboBoxTheme.SelectedIndex = 0; - - - //comboBoxLang.Bind(a => a.DataSource, settings, a => a.Languages); - //comboBoxLang.SelectedIndex = settings.SelectedLanguageIndex; - - - //this.Bind(a => a.Text, settings, a => a.Language); - - //^ - //this.DataBindings.Add(new Binding(nameof(this.Text), settings, nameof(settings.Language), false, DataSourceUpdateMode.OnPropertyChanged)); - } private void buttonCancel_Click(object sender, EventArgs e) {