예제 #1
0
        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();
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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();
        }
예제 #4
0
        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();
        }