mirror of
https://github.com/EpicMorg/UniversalValveToolbox.git
synced 2025-02-05 10:10:29 +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 category;
|
||||
|
||||
public AddonDtoModel() {
|
||||
this.engines = new int[0];
|
||||
this.args = "";
|
||||
this.bin = "";
|
||||
this.name = "";
|
||||
this.category = "";
|
||||
}
|
||||
|
||||
public int[] Engines {
|
||||
get => engines;
|
||||
set => UpdateField(value, ref engines);
|
||||
|
@ -8,12 +8,63 @@ using UniversalValveToolbox.Model.Dto;
|
||||
|
||||
namespace UniversalValveToolbox.Model.ViewModel {
|
||||
class FormAddonViewModel: DtoModel {
|
||||
private AddonDtoModel selectAddon;
|
||||
private AddonDtoModel[] addons;
|
||||
private int selectAddonIndex = 0;
|
||||
|
||||
public AddonDtoModel SelectAddon {
|
||||
get => selectAddon;
|
||||
set => UpdateField(value, ref selectAddon);
|
||||
private EngineDtoModel[] engines;
|
||||
private List<int> arraySelectAddonIndex = new List<int>();
|
||||
|
||||
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.Text = "OK";
|
||||
this.buttonOK.UseVisualStyleBackColor = true;
|
||||
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
|
||||
//
|
||||
// comboBox_Addon
|
||||
//
|
||||
@ -92,6 +93,7 @@
|
||||
this.buttonRemove.TabIndex = 10;
|
||||
this.buttonRemove.Text = "Remove";
|
||||
this.buttonRemove.UseVisualStyleBackColor = true;
|
||||
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
|
||||
//
|
||||
// buttonNew
|
||||
//
|
||||
@ -102,6 +104,7 @@
|
||||
this.buttonNew.TabIndex = 9;
|
||||
this.buttonNew.Text = "New";
|
||||
this.buttonNew.UseVisualStyleBackColor = true;
|
||||
this.buttonNew.Click += new System.EventHandler(this.buttonNew_Click);
|
||||
//
|
||||
// labelAddon
|
||||
//
|
||||
@ -223,6 +226,7 @@
|
||||
this.buttonApply.TabIndex = 27;
|
||||
this.buttonApply.Text = "Apply";
|
||||
this.buttonApply.UseVisualStyleBackColor = true;
|
||||
this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click);
|
||||
//
|
||||
// engineListView
|
||||
//
|
||||
@ -236,6 +240,7 @@
|
||||
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
|
||||
//
|
||||
@ -273,6 +278,7 @@
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
|
@ -5,6 +5,8 @@ using UniversalValveToolbox.Model.ViewModel;
|
||||
using UniversalValveToolbox.Model.Dto;
|
||||
using kasthack.binding.wf;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using UniversalValveToolbox.Utils;
|
||||
|
||||
namespace UniversalValveToolbox {
|
||||
public partial class FormAddons : Form {
|
||||
@ -17,17 +19,12 @@ namespace UniversalValveToolbox {
|
||||
public FormAddons() {
|
||||
InitializeComponent();
|
||||
|
||||
model = new FormAddonViewModel();
|
||||
model.SelectAddon = new AddonDtoModel();
|
||||
model = new FormAddonViewModel(dataProvider.Addons, dataProvider.Engines);
|
||||
|
||||
var addons = dataProvider.Addons;
|
||||
arrayAddon = new AddonDtoModel[addons.Length + 1];
|
||||
arrayAddon[0] = model.SelectAddon;
|
||||
Array.Copy(addons, 0, arrayAddon, 1, addons.Length);
|
||||
UpdateAddonsComboBox();
|
||||
InitEnginesListView();
|
||||
|
||||
comboBox_Addon.Items.Clear();
|
||||
comboBox_Addon.Items.AddRange(arrayAddon);
|
||||
comboBox_Addon.SelectedIndex = 0;
|
||||
comboBox_Addon.Bind(a => a.SelectedIndex, model, a => a.SelectAddonIndex);
|
||||
|
||||
textBoxName.Bind(a => a.Text, model, a => a.SelectAddon.Name);
|
||||
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) {
|
||||
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);
|
||||
item.Checked = model.SelectAddon.Engines.Contains(engine.Appid);
|
||||
return item;
|
||||
}).ToArray();
|
||||
|
||||
|
||||
engineListView.Items.Clear();
|
||||
engineListView.Items.AddRange(availableEngines);
|
||||
engineListView.Items.AddRange(checkedEngineListItem);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//dataGridViewEngines.Rows.add
|
||||
//var index = availableEngines.ToList().FindIndex(engine => engine.Appid == model.SelectProject.Engine);
|
||||
private void UpdateAddonsComboBox() {
|
||||
comboBox_Addon.Items.Clear();
|
||||
comboBox_Addon.Items.AddRange(model.Addons);
|
||||
comboBox_Addon.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
//comboBoxEngine.Items.Clear();
|
||||
//comboBoxEngine.Items.AddRange(availableEngines);
|
||||
private void UpdateEnginesListView() {
|
||||
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) {
|
||||
@ -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) {
|
||||
var selectAddon = arrayAddon.First(addon => addon.Name == ((AddonDtoModel)comboBox_Addon.SelectedItem).Name);
|
||||
model.SelectAddon = selectAddon;
|
||||
model.SelectAddonIndex = comboBox_Addon.SelectedIndex;
|
||||
}
|
||||
|
||||
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);
|
||||
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) {
|
||||
|
||||
UpdateComboBoxEngine();
|
||||
}
|
||||
|
||||
@ -111,8 +104,6 @@ namespace UniversalValveToolbox {
|
||||
}
|
||||
|
||||
private void Save() {
|
||||
var selectProject = model.SelectProject;
|
||||
|
||||
JsonFileUtil.SaveValues(DataProvider.ProjectsPath, "json", model.Projects.ToList());
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user