mirror of
https://github.com/EpicMorg/UniversalValveToolbox.git
synced 2025-02-10 21:58:48 +03:00
update editor addons
This commit is contained in:
parent
b563fa5117
commit
b745c51b95
@ -8,6 +8,14 @@ namespace UniversalValveToolbox.Model.Dto {
|
|||||||
private string name;
|
private string name;
|
||||||
private string category;
|
private string category;
|
||||||
|
|
||||||
|
public AddonDtoModel() {
|
||||||
|
this.engines = new int[0];
|
||||||
|
this.args = "";
|
||||||
|
this.bin = "";
|
||||||
|
this.name = "";
|
||||||
|
this.category = "";
|
||||||
|
}
|
||||||
|
|
||||||
public int[] Engines {
|
public int[] Engines {
|
||||||
get => engines;
|
get => engines;
|
||||||
set => UpdateField(value, ref engines);
|
set => UpdateField(value, ref engines);
|
||||||
|
@ -8,12 +8,63 @@ using UniversalValveToolbox.Model.Dto;
|
|||||||
|
|
||||||
namespace UniversalValveToolbox.Model.ViewModel {
|
namespace UniversalValveToolbox.Model.ViewModel {
|
||||||
class FormAddonViewModel: DtoModel {
|
class FormAddonViewModel: DtoModel {
|
||||||
private AddonDtoModel selectAddon;
|
private AddonDtoModel[] addons;
|
||||||
|
private int selectAddonIndex = 0;
|
||||||
|
|
||||||
public AddonDtoModel SelectAddon {
|
private EngineDtoModel[] engines;
|
||||||
get => selectAddon;
|
private List<int> arraySelectAddonIndex = new List<int>();
|
||||||
set => UpdateField(value, ref selectAddon);
|
|
||||||
|
public FormAddonViewModel(AddonDtoModel[] addons, EngineDtoModel[] engines) {
|
||||||
|
this.addons = addons;
|
||||||
|
this.engines = engines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AddonDtoModel[] Addons {
|
||||||
|
get => addons;
|
||||||
|
set {
|
||||||
|
UpdateField(value, ref addons);
|
||||||
|
|
||||||
|
SelectAddonIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int SelectAddonIndex {
|
||||||
|
get => selectAddonIndex;
|
||||||
|
set {
|
||||||
|
ForceUpdateField(value, ref selectAddonIndex);
|
||||||
|
OnPropertyChanged(nameof(SelectAddon));
|
||||||
|
|
||||||
|
var indexs = SelectAddon.Engines;
|
||||||
|
ArraySelectAddonIndex = indexs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public AddonDtoModel SelectAddon => addons[selectAddonIndex];
|
||||||
|
|
||||||
|
public EngineDtoModel[] Engines {
|
||||||
|
get => engines;
|
||||||
|
set {
|
||||||
|
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();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,7 @@
|
|||||||
this.buttonOK.TabIndex = 7;
|
this.buttonOK.TabIndex = 7;
|
||||||
this.buttonOK.Text = "OK";
|
this.buttonOK.Text = "OK";
|
||||||
this.buttonOK.UseVisualStyleBackColor = true;
|
this.buttonOK.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
|
||||||
//
|
//
|
||||||
// comboBox_Addon
|
// comboBox_Addon
|
||||||
//
|
//
|
||||||
@ -92,6 +93,7 @@
|
|||||||
this.buttonRemove.TabIndex = 10;
|
this.buttonRemove.TabIndex = 10;
|
||||||
this.buttonRemove.Text = "Remove";
|
this.buttonRemove.Text = "Remove";
|
||||||
this.buttonRemove.UseVisualStyleBackColor = true;
|
this.buttonRemove.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
|
||||||
//
|
//
|
||||||
// buttonNew
|
// buttonNew
|
||||||
//
|
//
|
||||||
@ -102,6 +104,7 @@
|
|||||||
this.buttonNew.TabIndex = 9;
|
this.buttonNew.TabIndex = 9;
|
||||||
this.buttonNew.Text = "New";
|
this.buttonNew.Text = "New";
|
||||||
this.buttonNew.UseVisualStyleBackColor = true;
|
this.buttonNew.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonNew.Click += new System.EventHandler(this.buttonNew_Click);
|
||||||
//
|
//
|
||||||
// labelAddon
|
// labelAddon
|
||||||
//
|
//
|
||||||
@ -223,6 +226,7 @@
|
|||||||
this.buttonApply.TabIndex = 27;
|
this.buttonApply.TabIndex = 27;
|
||||||
this.buttonApply.Text = "Apply";
|
this.buttonApply.Text = "Apply";
|
||||||
this.buttonApply.UseVisualStyleBackColor = true;
|
this.buttonApply.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click);
|
||||||
//
|
//
|
||||||
// engineListView
|
// engineListView
|
||||||
//
|
//
|
||||||
@ -236,6 +240,7 @@
|
|||||||
this.engineListView.UseCompatibleStateImageBehavior = false;
|
this.engineListView.UseCompatibleStateImageBehavior = false;
|
||||||
this.engineListView.View = System.Windows.Forms.View.List;
|
this.engineListView.View = System.Windows.Forms.View.List;
|
||||||
this.engineListView.SelectedIndexChanged += new System.EventHandler(this.engineListView_SelectedIndexChanged);
|
this.engineListView.SelectedIndexChanged += new System.EventHandler(this.engineListView_SelectedIndexChanged);
|
||||||
|
this.engineListView.ItemChecked += EngineListView_ItemChecked;
|
||||||
//
|
//
|
||||||
// FormAddons
|
// FormAddons
|
||||||
//
|
//
|
||||||
@ -273,6 +278,7 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.Button buttonCancel;
|
private System.Windows.Forms.Button buttonCancel;
|
||||||
|
@ -5,6 +5,8 @@ using UniversalValveToolbox.Model.ViewModel;
|
|||||||
using UniversalValveToolbox.Model.Dto;
|
using UniversalValveToolbox.Model.Dto;
|
||||||
using kasthack.binding.wf;
|
using kasthack.binding.wf;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UniversalValveToolbox.Utils;
|
||||||
|
|
||||||
namespace UniversalValveToolbox {
|
namespace UniversalValveToolbox {
|
||||||
public partial class FormAddons : Form {
|
public partial class FormAddons : Form {
|
||||||
@ -17,17 +19,12 @@ namespace UniversalValveToolbox {
|
|||||||
public FormAddons() {
|
public FormAddons() {
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
model = new FormAddonViewModel();
|
model = new FormAddonViewModel(dataProvider.Addons, dataProvider.Engines);
|
||||||
model.SelectAddon = new AddonDtoModel();
|
|
||||||
|
|
||||||
var addons = dataProvider.Addons;
|
UpdateAddonsComboBox();
|
||||||
arrayAddon = new AddonDtoModel[addons.Length + 1];
|
InitEnginesListView();
|
||||||
arrayAddon[0] = model.SelectAddon;
|
|
||||||
Array.Copy(addons, 0, arrayAddon, 1, addons.Length);
|
|
||||||
|
|
||||||
comboBox_Addon.Items.Clear();
|
comboBox_Addon.Bind(a => a.SelectedIndex, model, a => a.SelectAddonIndex);
|
||||||
comboBox_Addon.Items.AddRange(arrayAddon);
|
|
||||||
comboBox_Addon.SelectedIndex = 0;
|
|
||||||
|
|
||||||
textBoxName.Bind(a => a.Text, model, a => a.SelectAddon.Name);
|
textBoxName.Bind(a => a.Text, model, a => a.SelectAddon.Name);
|
||||||
textBoxPath.Bind(a => a.Text, model, a => a.SelectAddon.Bin);
|
textBoxPath.Bind(a => a.Text, model, a => a.SelectAddon.Bin);
|
||||||
@ -37,25 +34,49 @@ namespace UniversalValveToolbox {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
|
private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
|
||||||
var availableEngines = dataProvider.Engines.Select(engine => {
|
UpdateEnginesListView();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void EngineListView_ItemChecked(object sender, System.Windows.Forms.ItemCheckedEventArgs e) {
|
||||||
|
var listCheckedIndex = new List<int>();
|
||||||
|
|
||||||
|
if (engineListView.Items == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach (ListViewItem item in engineListView.Items) {
|
||||||
|
if (item?.Checked ?? false) {
|
||||||
|
listCheckedIndex.Add(item.Index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
model.ArraySelectAddonIndex = listCheckedIndex.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void InitEnginesListView() {
|
||||||
|
var checkedEngineListItem = dataProvider.Engines.Select(engine => {
|
||||||
var item = new ListViewItem(engine.Name);
|
var item = new ListViewItem(engine.Name);
|
||||||
item.Checked = model.SelectAddon.Engines.Contains(engine.Appid);
|
item.Checked = model.SelectAddon.Engines.Contains(engine.Appid);
|
||||||
return item;
|
return item;
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
|
|
||||||
|
|
||||||
engineListView.Items.Clear();
|
engineListView.Items.Clear();
|
||||||
engineListView.Items.AddRange(availableEngines);
|
engineListView.Items.AddRange(checkedEngineListItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateAddonsComboBox() {
|
||||||
|
comboBox_Addon.Items.Clear();
|
||||||
//dataGridViewEngines.Rows.add
|
comboBox_Addon.Items.AddRange(model.Addons);
|
||||||
//var index = availableEngines.ToList().FindIndex(engine => engine.Appid == model.SelectProject.Engine);
|
comboBox_Addon.SelectedIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
//comboBoxEngine.Items.Clear();
|
private void UpdateEnginesListView() {
|
||||||
//comboBoxEngine.Items.AddRange(availableEngines);
|
var indexs = model.ArraySelectAddonIndex;
|
||||||
|
|
||||||
//comboBoxEngine.SelectedIndex = index;
|
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) {
|
||||||
@ -79,18 +100,61 @@ namespace UniversalValveToolbox {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FormAddons_Load(object sender, EventArgs e)
|
private void FormAddons_Load(object sender, EventArgs e) {
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void comboBox_Addon_SelectedIndexChanged(object sender, EventArgs e) {
|
private void comboBox_Addon_SelectedIndexChanged(object sender, EventArgs e) {
|
||||||
var selectAddon = arrayAddon.First(addon => addon.Name == ((AddonDtoModel)comboBox_Addon.SelectedItem).Name);
|
model.SelectAddonIndex = comboBox_Addon.SelectedIndex;
|
||||||
model.SelectAddon = selectAddon;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void engineListView_SelectedIndexChanged(object sender, EventArgs e) {
|
private void engineListView_SelectedIndexChanged(object sender, EventArgs e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Remove() {
|
||||||
|
var newAddonList = new List<AddonDtoModel>(model.Addons);
|
||||||
|
newAddonList.RemoveAt(model.SelectAddonIndex);
|
||||||
|
|
||||||
|
model.Addons = newAddonList.ToArray();
|
||||||
|
|
||||||
|
UpdateAddonsComboBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void New() {
|
||||||
|
var newAddon = new AddonDtoModel();
|
||||||
|
newAddon.Name = "<new addon>";
|
||||||
|
|
||||||
|
var newAddonList = new List<AddonDtoModel>(model.Addons);
|
||||||
|
newAddonList.Insert(0, newAddon);
|
||||||
|
|
||||||
|
model.Addons = newAddonList.ToArray();
|
||||||
|
|
||||||
|
UpdateAddonsComboBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Save() {
|
||||||
|
|
||||||
|
|
||||||
|
JsonFileUtil.SaveValues(DataProvider.AddonsPath, "json", model.Addons.ToList());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonRemove_Click(object sender, EventArgs e) {
|
||||||
|
Remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonNew_Click(object sender, EventArgs e) {
|
||||||
|
New();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonApply_Click(object sender, EventArgs e) {
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonOK_Click(object sender, EventArgs e) {
|
||||||
|
Save();
|
||||||
|
|
||||||
|
Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,16 +29,9 @@ namespace UniversalValveToolbox {
|
|||||||
|
|
||||||
comboBox_Mod.Bind(a => a.SelectedIndex, model, a => a.SelectProjectIndex);
|
comboBox_Mod.Bind(a => a.SelectedIndex, model, a => a.SelectProjectIndex);
|
||||||
comboBoxEngine.Bind(a => a.SelectedIndex, model, a => a.SelectEngineIndex);
|
comboBoxEngine.Bind(a => a.SelectedIndex, model, a => a.SelectEngineIndex);
|
||||||
|
|
||||||
//model.PropertyChanged += Model_PropertyChanged;
|
|
||||||
|
|
||||||
UpdateComboBoxEngine();
|
|
||||||
|
|
||||||
//comboBox_Mod.SelectedIndex = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
|
private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
|
||||||
|
|
||||||
UpdateComboBoxEngine();
|
UpdateComboBoxEngine();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,8 +104,6 @@ namespace UniversalValveToolbox {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void Save() {
|
private void Save() {
|
||||||
var selectProject = model.SelectProject;
|
|
||||||
|
|
||||||
JsonFileUtil.SaveValues(DataProvider.ProjectsPath, "json", model.Projects.ToList());
|
JsonFileUtil.SaveValues(DataProvider.ProjectsPath, "json", model.Projects.ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user