private void toolImportCSV_Click(object sender, EventArgs e) { openFileDialog1.Filter = "CSV Files|*.csv"; openFileDialog1.FileName = ""; if (openFileDialog1.ShowDialog() == DialogResult.OK) { /*var lines*/ IEnumerable <string[]> lines = File.ReadAllLines(openFileDialog1.FileName).Select(a => a.Split(',')); List <string> duplicates = new List <string>(); foreach (string[] line in lines) { if (line.Count() < 1) { continue; } ItemExtendable itemData = new ItemExtendable(); int ID = 0; int.TryParse(line[0], out ID); if (CurrentProject.itemCollection.ContainsKey(ID)) { ID = CurrentProject.itemCollection.Count + 1; } itemData.ID = ID; int i = 1; foreach (KeyValuePair <string, DefinitionData> entry in CurrentProject.attributeDefinitions) { if (i < line.Count()) { itemData.setValue(entry.Key, line[i]); i++; continue; } itemData.setValue(entry.Key, ""); } CurrentProject.itemCollection.Add(itemData.ID, itemData); } renderItemList(); } }
public object RowImageGetter(object rowObject) { ItemExtendable s = (ItemExtendable)rowObject; foreach (KeyValuePair <string, DefinitionData> data in CurrentProject.attributeDefinitions) { if (data.Value.DataType == DefinitionDataType.Sprite) { if (imageListSmall.Images.Keys.IndexOf(s.getValue(data.Key)) > -1) { string a = s.getValue(data.Key); return(a); } } } return(-1); }
private void editItem(bool edit, int selectedID) { if (CurrentProject == null) { return; } int itemID = -1; if (edit) { int.TryParse(itemListViewExt.Items[selectedID].Text, out itemID); } //ListViewItem newItem = itemListView.Items.Add("Item " + itemListView.Items.Count.ToString()); using (Edit form = new Edit()) { int counter = 10; List <Control> controlList = new List <Control>(); if (edit) { form.itemID.Text = itemID.ToString(); form.EditID = itemID; } #region render_controls // render controls foreach (KeyValuePair <string, DefinitionData> definition in CurrentProject.attributeDefinitions) { Label l = new Label(); l.Text = definition.Key + ":"; l.Top = counter; l.Left = 20; l.Height = 13; form.Controls.Add(l); counter += 15; switch (definition.Value.DataType) { case DefinitionDataType.Bool: CheckBox c = new CheckBox(); c.Top = counter; c.Left = 20; c.Tag = definition.Key; if (edit) { c.Checked = CurrentProject.itemCollection[itemID].getValue(definition.Key) == "1"; } form.Controls.Add(c); controlList.Add(c); break; case DefinitionDataType.Int: case DefinitionDataType.String: if (definition.Value.GroupLink > -1) { ComboBox t = new ComboBox(); t.Top = counter; t.Left = 20; t.DropDownStyle = ComboBoxStyle.DropDownList; t.Tag = definition.Key; foreach (string option in CurrentProject.groupDefinitions.ElementAt(definition.Value.GroupLink).Value) { t.Items.Add(option); } t.SelectedIndex = 0; if (edit) { int selected = 0; if (int.TryParse(CurrentProject.itemCollection[itemID].getValue(definition.Key), out selected)) { t.SelectedIndex = selected; } } form.Controls.Add(t); controlList.Add(t); } else { TextBox t = new TextBox(); t.Top = counter; t.Left = 20; t.Tag = definition.Key; if (edit) { t.Text = CurrentProject.itemCollection[itemID].getValue(definition.Key); } form.Controls.Add(t); controlList.Add(t); } break; case DefinitionDataType.Sprite: ComboBox cb = new ComboBox(); cb.Top = counter; cb.Left = 20; cb.DropDownStyle = ComboBoxStyle.DropDownList; cb.Tag = definition.Key; foreach (string sprite in CurrentProject.GMXspritesFiltered) { cb.Items.Add(sprite); } if (edit) { cb.SelectedIndex = cb.FindStringExact(CurrentProject.itemCollection[itemID].getValue(definition.Key)); } form.Controls.Add(cb); controlList.Add(cb); break; } counter += 25; } #endregion Label la = new Label(); la.Text = ""; la.Top = counter; la.Left = 20; la.Height = 13; form.Controls.Add(la); form.Height = Math.Min(500, counter + 50); form.ShowDialog(); if (form.DialogResult == DialogResult.OK) { ItemExtendable itemData = new ItemExtendable(); // since it was already try-parsed in Edit form, just parse here itemData.ID = int.Parse(form.itemID.Text); if (edit) { if (itemData.ID == itemID) { itemData = CurrentProject.itemCollection[itemID]; } } // fill data for (non-)existing item foreach (Control control in controlList) { switch (CurrentProject.attributeDefinitions[control.Tag.ToString()].DataType) { case DefinitionDataType.Bool: itemData.setValue(control.Tag.ToString(), ((CheckBox)control).Checked); break; case DefinitionDataType.Int: int value = 0; if (control is ComboBox) { value = ((ComboBox)control).SelectedIndex; } else { int.TryParse(control.Text, out value); } itemData.setValue(control.Tag.ToString(), value); break; case DefinitionDataType.Sprite: case DefinitionDataType.String: itemData.setValue(control.Tag.ToString(), control.Text); break; } } if (edit) { if (itemData.ID == itemID) { //CurrentProject.itemCollection[itemID] = itemData; } else { CurrentProject.itemCollection.Remove(itemID); CurrentProject.itemCollection.Add(itemData.ID, itemData); } } else { CurrentProject.itemCollection.Add(itemData.ID, itemData); } // render only if OK was pressed int selection = itemListViewExt.SelectedIndex; //itemListViewExt.SetObjects(CurrentProject.itemCollection.Values.ToList()); itemListViewExt.BuildList(); if (selection > -1) { itemListViewExt.SelectedIndex = selection; } //renderItemList(); } } ensureButtonsVisible(); }
private void renderItemList() { int selection = -1; int count = itemListViewExt.Items.Count; //if (itemListViewExt.SelectedItems.Count > 0) if (itemListViewExt.SelectedObjects.Count > 0) { selection = itemListViewExt.SelectedIndex; } itemListViewExt.Enabled = false; itemListViewExt.Reset(); // render columns //itemListView.Columns.Add("ID"); //foreach (KeyValuePair<string, DefinitionData> entry in CurrentProject.attributeDefinitions) //{ // itemListView.Columns.Add(entry.Key); //} // render same for objectListView //List<OLVColumn> columns = new List<OLVColumn>(); OLVColumn olvDefaultColumn = new OLVColumn() { AspectName = "ID", Text = "ID", Groupable = false, Sortable = false, Hideable = false, IsVisible = true }; //columns.Add(olvDefaultColumn); itemListViewExt.AllColumns.Add(olvDefaultColumn); foreach (KeyValuePair <string, DefinitionData> entry in CurrentProject.attributeDefinitions) { OLVColumn olvKeyCol = new OLVColumn() { Text = entry.Key, AspectName = entry.Key, //AspectGetter = delegate(object x) { return ((ItemExtendable)x).getValue(entry.Key); }, Sortable = (entry.Key == "Name"), Groupable = false, Hideable = true, IsVisible = true, //IsHeaderVertical = (entry.Value.DataType == DefinitionDataType.Int), //, //FillsFreeSpace = true }; if (entry.Key == CurrentProject.GroupBy) { //olvKeyCol.ImageGetter = new ImageGetterDelegate(this.RowImageGetter); olvDefaultColumn.ImageGetter = new ImageGetterDelegate(this.RowImageGetter); /*olvDefaultColumn.AspectToStringConverter = delegate(object x){ * return "eee"; * };*/ //olvKeyCol.GroupKeyToTitleConverter = delegate(object x) //{ // return CurrentProject.groupDefinitions[CurrentProject.GroupBy].IndexOf(x.ToString()).ToString() + ". " + x.ToString(); //}; olvKeyCol.GroupKeyGetter = delegate(object x) { ItemExtendable item = (ItemExtendable)x; int eiteration = 0; int leadingZeros = (int)Math.Ceiling(CurrentProject.groupDefinitions[CurrentProject.GroupBy].Count / 10.0); string val = item.getValue(CurrentProject.GroupBy).ToString(); foreach (string option in CurrentProject.groupDefinitions[CurrentProject.GroupBy]) { if (eiteration.ToString() == val) { return((eiteration + 1).ToString().PadLeft(leadingZeros, '0') + ". " + option); } eiteration++; } return(val); }; // add as a first column //itemListViewExt.AlwaysGroupByColumn = olvKeyCol; olvKeyCol.Groupable = true; olvKeyCol.Sortable = true; olvKeyCol.IsVisible = true; itemListViewExt.PrimarySortColumn = olvKeyCol; } //if (itemListViewExt.Columns.Count < 8) //{ //itemListViewExt.Columns.Add(olvKeyCol); itemListViewExt.AllColumns.Add(olvKeyCol); //itemListViewExt.RebuildColumns(); //olvKeyCol.Hideable = true; //} } itemListViewExt.Visible = false; itemListViewExt.ShowGroups = true; itemListViewExt.SetObjects(CurrentProject.itemCollection.Values.ToList()); itemListViewExt.RebuildColumns(); itemListViewExt.BuildList(); //itemListViewExt.BuildGroups(itemListViewExt.PrimarySortColumn, SortOrder.Ascending); itemListViewExt.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); itemListViewExt.Visible = true; itemListViewExt.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); // render items //foreach (KeyValuePair<int, ItemExtendable> entry in CurrentProject.itemCollection) //{ // ListViewItem item = itemListView.Items.Add(entry.Key.ToString()); // item.ImageIndex = 0; // item.UseItemStyleForSubItems = false; // foreach (KeyValuePair<string, DefinitionData> data in CurrentProject.attributeDefinitions) // { // ListViewItem.ListViewSubItem c = item.SubItems.Add(entry.Value.getValueLabel(data.Key)); // if (data.Value.GroupName == CurrentProject.GroupBy) // { // item.Group = itemListView.Groups[entry.Value.getValueLabel(data.Key)]; // } // if (data.Value.DataType == DefinitionDataType.Sprite && item.ImageIndex == 0) // 0 == not yet changed // { // if (imageListBig.Images.Keys.IndexOf(entry.Value.getValue(data.Key)) > -1) // { // item.ImageKey = entry.Value.getValue(data.Key); // } // } // if (item.ToolTipText == "" && data.Value.DataType == DefinitionDataType.String) // { // item.ToolTipText = entry.Value.getValue(data.Key); // } // if (c.Text == CurrentProject.attributeDefinitions[data.Key].DefaultValue) // { // c.ForeColor = Color.Green; // } // else if (c.Text == "0") // { // c.ForeColor = Color.Gray; // } // } //} // auto column width /*foreach (ColumnHeader col in itemListView.Columns) * { * int w1; * col.Width = -1; * w1 = col.Width; * col.Width = Math.Max(w1, 60); * }*/ // bring back selection if (selection > -1 && itemListViewExt.Items.Count == count) { itemListViewExt.SelectedIndex = selection; //itemListViewExt.Items[selection].Selected = true; itemListViewExt.Focus(); } else if (itemListViewExt.Items.Count > 0) { //itemListViewExt.Items[itemListViewExt.Items.Count - 1].Selected = true; itemListViewExt.Items[0].Selected = true; } itemListViewExt.Enabled = true; itemListViewExt.Focus(); }