- fix addon editor

- add restart after edit project/addon
This commit is contained in:
Alex Z 2020-02-22 13:56:48 +03:00
parent f174fd4cb9
commit bbe764fd5c
7 changed files with 66 additions and 88 deletions

View File

@ -5,6 +5,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using UniversalValveToolbox.Base; using UniversalValveToolbox.Base;
using UniversalValveToolbox.Model.Dto; using UniversalValveToolbox.Model.Dto;
using static System.Windows.Forms.ListView;
namespace UniversalValveToolbox.Model.ViewModel { namespace UniversalValveToolbox.Model.ViewModel {
class FormAddonViewModel: DtoModel { class FormAddonViewModel: DtoModel {
@ -12,7 +13,6 @@ namespace UniversalValveToolbox.Model.ViewModel {
private int selectAddonIndex = 0; private int selectAddonIndex = 0;
private EngineDtoModel[] engines; private EngineDtoModel[] engines;
private List<int> arraySelectAddonIndex = new List<int>();
public FormAddonViewModel(AddonDtoModel[] addons, EngineDtoModel[] engines) { public FormAddonViewModel(AddonDtoModel[] addons, EngineDtoModel[] engines) {
this.addons = addons; this.addons = addons;
@ -33,9 +33,6 @@ namespace UniversalValveToolbox.Model.ViewModel {
set { set {
ForceUpdateField(value, ref selectAddonIndex); ForceUpdateField(value, ref selectAddonIndex);
OnPropertyChanged(nameof(SelectAddon)); OnPropertyChanged(nameof(SelectAddon));
var indexs = SelectAddon.Engines;
ArraySelectAddonIndex = indexs;
} }
} }
@ -47,24 +44,5 @@ namespace UniversalValveToolbox.Model.ViewModel {
UpdateField(value, ref engines); UpdateField(value, ref engines);
} }
} }
public int[] ArraySelectAddonIndex {
get => arraySelectAddonIndex.ToArray();
set {
ForceUpdateField(value.ToList(), ref arraySelectAddonIndex);
//OnPropertyChanged(nameof(ArraySelectEngine));
}
}
//public EngineDtoModel[] ArraySelectEngine {
// get {
// List<EngineDtoModel> result = new List<EngineDtoModel>();
// foreach (var index in arraySelectAddonIndex) {
// result.Add(engines[index]);
// }
// return result.ToArray();
// }
//}
} }
} }

View File

@ -47,12 +47,13 @@
this.comboBoxCategory = new System.Windows.Forms.ComboBox(); this.comboBoxCategory = new System.Windows.Forms.ComboBox();
this.labelCategory = new System.Windows.Forms.Label(); this.labelCategory = new System.Windows.Forms.Label();
this.buttonApply = new System.Windows.Forms.Button(); this.buttonApply = new System.Windows.Forms.Button();
this.engineListView = new System.Windows.Forms.ListView(); this.engineCheckedListBox = new System.Windows.Forms.CheckedListBox();
this.SuspendLayout(); this.SuspendLayout();
// //
// buttonCancel // buttonCancel
// //
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 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.Location = new System.Drawing.Point(327, 382);
this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23); this.buttonCancel.Size = new System.Drawing.Size(75, 23);
@ -64,6 +65,7 @@
// buttonOK // buttonOK
// //
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 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.Location = new System.Drawing.Point(246, 382);
this.buttonOK.Name = "buttonOK"; this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(75, 23); this.buttonOK.Size = new System.Drawing.Size(75, 23);
@ -228,26 +230,21 @@
this.buttonApply.UseVisualStyleBackColor = true; this.buttonApply.UseVisualStyleBackColor = true;
this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click); this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click);
// //
// engineListView // engineCheckedListBox
// //
this.engineListView.CheckBoxes = true; this.engineCheckedListBox.CheckOnClick = true;
this.engineListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; this.engineCheckedListBox.FormattingEnabled = true;
this.engineListView.HideSelection = false; this.engineCheckedListBox.Location = new System.Drawing.Point(15, 182);
this.engineListView.Location = new System.Drawing.Point(15, 182); this.engineCheckedListBox.Name = "engineCheckedListBox";
this.engineListView.Name = "engineListView"; this.engineCheckedListBox.Size = new System.Drawing.Size(387, 169);
this.engineListView.Size = new System.Drawing.Size(387, 188); this.engineCheckedListBox.TabIndex = 28;
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;
// //
// FormAddons // FormAddons
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(495, 417); 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.buttonApply);
this.Controls.Add(this.labelCategory); this.Controls.Add(this.labelCategory);
this.Controls.Add(this.comboBoxCategory); this.Controls.Add(this.comboBoxCategory);
@ -299,6 +296,6 @@
private System.Windows.Forms.ComboBox comboBoxCategory; private System.Windows.Forms.ComboBox comboBoxCategory;
private System.Windows.Forms.Label labelCategory; private System.Windows.Forms.Label labelCategory;
private System.Windows.Forms.Button buttonApply; private System.Windows.Forms.Button buttonApply;
private System.Windows.Forms.ListView engineListView; private System.Windows.Forms.CheckedListBox engineCheckedListBox;
} }
} }

View File

@ -10,11 +10,13 @@ using UniversalValveToolbox.Utils;
namespace UniversalValveToolbox { namespace UniversalValveToolbox {
public partial class FormAddons : Form { public partial class FormAddons : Form {
private bool needRestart;
private bool isEnableListBoxCheckListener = false;
private DataProvider dataProvider = new DataProvider(); private DataProvider dataProvider = new DataProvider();
private FormAddonViewModel model; private FormAddonViewModel model;
private AddonDtoModel[] arrayAddon;
public FormAddons() { public FormAddons() {
InitializeComponent(); InitializeComponent();
@ -22,7 +24,7 @@ namespace UniversalValveToolbox {
model = new FormAddonViewModel(dataProvider.Addons, dataProvider.Engines); model = new FormAddonViewModel(dataProvider.Addons, dataProvider.Engines);
UpdateAddonsComboBox(); UpdateAddonsComboBox();
InitEnginesListView(); UpdateEngineCheckedListView();
comboBox_Addon.Bind(a => a.SelectedIndex, model, a => a.SelectAddonIndex); 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); textBoxArgs.Bind(a => a.Text, model, a => a.SelectAddon.Args);
model.PropertyChanged += Model_PropertyChanged; model.PropertyChanged += Model_PropertyChanged;
this.engineCheckedListBox.ItemCheck += EngineCheckedListBox_ItemCheck;
}
private void EngineCheckedListBox_ItemCheck(object sender, ItemCheckEventArgs e) {
if (isEnableListBoxCheckListener) {
List<EngineDtoModel> checkedItems = new List<EngineDtoModel>();
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) { 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) { engineCheckedListBox.Items.Clear();
var listCheckedIndex = new List<int>(); engineCheckedListBox.Items.AddRange(model.Engines);
if (engineListView.Items == null) for (var i = 0; i < model.Engines.Length; i++) {
return; var engine = model.Engines[i];
foreach (ListViewItem item in engineListView.Items) { if (model.SelectAddon.Engines.Contains(engine.Appid)) {
if (item?.Checked ?? false) { engineCheckedListBox.SetItemChecked(i, true);
listCheckedIndex.Add(item.Index);
} }
} }
model.ArraySelectAddonIndex = listCheckedIndex.ToArray(); isEnableListBoxCheckListener = true;
}
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);
} }
private void UpdateAddonsComboBox() { private void UpdateAddonsComboBox() {
@ -71,13 +82,6 @@ namespace UniversalValveToolbox {
comboBox_Addon.SelectedIndex = 0; 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) { private void buttonCancel_Click(object sender, EventArgs e) {
Close(); Close();
@ -108,10 +112,6 @@ namespace UniversalValveToolbox {
model.SelectAddonIndex = comboBox_Addon.SelectedIndex; model.SelectAddonIndex = comboBox_Addon.SelectedIndex;
} }
private void engineListView_SelectedIndexChanged(object sender, EventArgs e) {
}
private void Remove() { private void Remove() {
var newAddonList = new List<AddonDtoModel>(model.Addons); var newAddonList = new List<AddonDtoModel>(model.Addons);
newAddonList.RemoveAt(model.SelectAddonIndex); newAddonList.RemoveAt(model.SelectAddonIndex);
@ -134,8 +134,6 @@ namespace UniversalValveToolbox {
} }
private void Save() { private void Save() {
JsonFileUtil.SaveValues(DataProvider.AddonsPath, "json", model.Addons.ToList()); JsonFileUtil.SaveValues(DataProvider.AddonsPath, "json", model.Addons.ToList());
} }
@ -148,6 +146,8 @@ namespace UniversalValveToolbox {
} }
private void buttonApply_Click(object sender, EventArgs e) { private void buttonApply_Click(object sender, EventArgs e) {
needRestart = true;
Save(); Save();
} }

View File

@ -311,11 +311,15 @@ namespace UniversalValveToolbox {
} }
else if (selectItemText == Properties.translations.MenuItems.itmEditConfigurations) { else if (selectItemText == Properties.translations.MenuItems.itmEditConfigurations) {
var frmProfiles = new FormProfiles(); var frmProfiles = new FormProfiles();
frmProfiles.ShowDialog(); if (frmProfiles.ShowDialog() == DialogResult.OK) {
Application.Restart();
}
} }
else if (selectItemText == Properties.translations.MenuItems.itmEditPlugins) { else if (selectItemText == Properties.translations.MenuItems.itmEditPlugins) {
var frmPlugins = new FormAddons(); var frmPlugins = new FormAddons();
frmPlugins.ShowDialog(); if (frmPlugins.ShowDialog() == DialogResult.OK) {
Application.Restart();
}
} }
else if (selectItemText == Properties.translations.MenuItems.itmAbout) { else if (selectItemText == Properties.translations.MenuItems.itmAbout) {
var frmAbout = new FormAbout(); var frmAbout = new FormAbout();

View File

@ -60,6 +60,7 @@ namespace UniversalValveToolbox {
// buttonOK // buttonOK
// //
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 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.Location = new System.Drawing.Point(251, 225);
this.buttonOK.Name = "buttonOK"; this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(75, 23); this.buttonOK.Size = new System.Drawing.Size(75, 23);
@ -71,6 +72,7 @@ namespace UniversalValveToolbox {
// buttonCancel // buttonCancel
// //
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 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.Location = new System.Drawing.Point(332, 225);
this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23); this.buttonCancel.Size = new System.Drawing.Size(75, 23);

View File

@ -10,6 +10,8 @@ using UniversalValveToolbox.Utils;
namespace UniversalValveToolbox { namespace UniversalValveToolbox {
public partial class FormProfiles : Form { public partial class FormProfiles : Form {
private bool needRestart = false;
private DataProvider dataProvider = new DataProvider(); private DataProvider dataProvider = new DataProvider();
private FormProjectViewModel model; private FormProjectViewModel model;
@ -54,6 +56,10 @@ namespace UniversalValveToolbox {
} }
private void buttonCancel_Click(object sender, EventArgs e) { private void buttonCancel_Click(object sender, EventArgs e) {
if (needRestart) {
DialogResult = DialogResult.OK;
}
Close(); Close();
} }
@ -115,6 +121,8 @@ namespace UniversalValveToolbox {
private void buttonApply_Click(object sender, EventArgs e) { private void buttonApply_Click(object sender, EventArgs e) {
Save(); Save();
needRestart = true;
} }
private void buttonNew_Click(object sender, EventArgs e) { private void buttonNew_Click(object sender, EventArgs e) {

View File

@ -14,17 +14,6 @@ namespace UniversalValveToolbox {
comboBoxLang.Bind(a => a.SelectedIndex, settings, a => a.SelectedLanguageIndex); comboBoxLang.Bind(a => a.SelectedIndex, settings, a => a.SelectedLanguageIndex);
comboBoxTheme.SelectedIndex = 0; 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) { private void buttonCancel_Click(object sender, EventArgs e) {