コード例 #1
0
        public override void AddNewItemRaw()
        {
            try {
                string defaultValue = Clipboard.ContainsText() ? Clipboard.GetText() : "";

                InputDialog dialog = new InputDialog("Paste the database lines here.", "Add new raw items", defaultValue, false, false);
                dialog.Owner = WpfUtilities.TopWindow;
                dialog.TextBoxInput.Loaded += delegate {
                    dialog.TextBoxInput.SelectAll();
                    dialog.TextBoxInput.Focus();
                };
                dialog.TextBoxInput.AcceptsReturn = true;
                dialog.TextBoxInput.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
                dialog.TextBoxInput.TextWrapping = TextWrapping.NoWrap;
                dialog.TextBoxInput.Height       = 200;
                dialog.TextBoxInput.MinHeight    = 200;
                dialog.TextBoxInput.MaxHeight    = 200;
                dialog.TextBoxInput.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;

                if (dialog.ShowDialog() == true)
                {
                    try {
                        Table.Commands.Begin();

                        string text     = dialog.Input;
                        string tempPath = TemporaryFilesManager.GetTemporaryFilePath("db_tmp_{0:0000}.txt");
                        File.WriteAllText(tempPath, text);
                        ProjectDatabase.GetDb <TKey>(Settings.DbData).LoadFromClipboard(tempPath);
                    }
                    catch {
                        Table.Commands.CancelEdit();
                    }
                    finally {
                        Table.Commands.EndEdit();
                    }

                    _listView_SelectionChanged(this, null);
                }
            }
            catch (Exception err) {
                ErrorHandler.HandleException(err);
            }
        }
コード例 #2
0
        public override void ImportFromFile(string fileDefault = null, bool autoIncrement = false)
        {
            try {
                string file = fileDefault ?? PathRequest.OpenFileCde("filter", "All db files|*.conf;*.txt");

                if (file == "clipboard")
                {
                    if (!Clipboard.ContainsText())
                    {
                        return;
                    }

                    file = TemporaryFilesManager.GetTemporaryFilePath("clipboard_{0:0000}.txt");
                    File.WriteAllText(file, Clipboard.GetText());
                }

                if (file != null)
                {
                    try {
                        Table.Commands.Begin();
                        ProjectDatabase.GetDb <TKey>(Settings.DbData).LoadFromClipboard(file);
                    }
                    catch {
                        Table.Commands.CancelEdit();
                    }
                    finally {
                        Table.Commands.EndEdit();

                        if (autoIncrement && typeof(TKey) == typeof(int))
                        {
                            var cmds = Table.Commands.GetUndoCommands();

                            if (cmds.Count > 0)
                            {
                                var lastCmd = cmds.Last() as GroupCommand <TKey, TValue>;

                                if (lastCmd != null)
                                {
                                    if (lastCmd.Commands.Count > 0 && lastCmd.Commands.OfType <ChangeTupleProperties <TKey, TValue> >().Count() == 1)
                                    {
                                        var firstKey = lastCmd.Commands.First().Key;

                                        var tuple    = new ReadableTuple <TKey>(firstKey, Table.AttributeList);
                                        var oldTuple = (ReadableTuple <TKey>)(object) Table.TryGetTuple(firstKey);
                                        tuple.Copy(oldTuple);
                                        tuple.Added = true;

                                        ProjectDatabase.Commands.Undo();
                                        Table.Commands.AddTuple(tuple.GetKey <TKey>(), (TValue)(object)tuple, false, true, null);
                                    }
                                }
                            }
                        }
                    }

                    _listView_SelectionChanged(this, null);
                }
            }
            catch (Exception err) {
                ErrorHandler.HandleException(err);
            }
        }
コード例 #3
0
 public AbstractDb <T> GetDb <T>(ServerDbs source)
 {
     return(ProjectDatabase.GetDb <T>(source));
 }
コード例 #4
0
        public void Initialize(GTabSettings <TKey, TValue> settings)
        {
            Settings = settings;

            _displayGrid = new Grid();
            _displayGrid.SetValue(Grid.ColumnProperty, 2);
            _displayGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = new GridLength(1, GridUnitType.Auto)
            });
            _displayGrid.ColumnDefinitions.Add(new ColumnDefinition());
            _displayGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = new GridLength(10)
            });
            _displayGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = new GridLength(1, GridUnitType.Auto)
            });
            _displayGrid.ColumnDefinitions.Add(new ColumnDefinition());

            if (Settings.DbData == ServerDbs.ClientItems ||
                Settings.DbData == ServerDbs.Pet ||
                Settings.DbData == ServerDbs.Pet2 ||
                Settings.DbData == ServerDbs.Mobs ||
                Settings.DbData == ServerDbs.Mobs2 ||
                Settings.DbData == ServerDbs.MobGroups ||
                Settings.DbData == ServerDbs.Items ||
                Settings.DbData == ServerDbs.Items2)
            {
                _viewGrid.Children.Add(_displayGrid);
            }
            else
            {
                ScrollViewer sv = new ScrollViewer();
                sv.SetValue(Grid.ColumnProperty, 2);
                sv.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);
                sv.Focusable = false;
                sv.Content   = _displayGrid;
                _viewGrid.Children.Add(sv);
            }

            ProjectDatabase = settings.ClientDatabase;
            DbComponent     = ProjectDatabase.GetDb <TKey>(settings.DbData);
            Table           = Settings.Table;
            Header          = Settings.TabName;
            Style           = TryFindResource(settings.Style) as Style ?? Style;
            SearchEngine    = settings.SearchEngine;
            SearchEngine.Init(_dbSearchPanel, this);
            Table.TableUpdated += new Table <TKey, TValue> .UpdateTableEventHandler(_table_TableUpdated);

            if (Settings.SearchEngine.SetupImageDataGetter != null)
            {
                ListViewDataTemplateHelper.GenerateListViewTemplateNew(_listView, new ListViewDataTemplateHelper.GeneralColumnInfo[] {
                    new ListViewDataTemplateHelper.GeneralColumnInfo {
                        Header = Settings.AttId.DisplayName, DisplayExpression = "[" + Settings.AttId.Index + "]", SearchGetAccessor = Settings.AttId.AttributeName, FixedWidth = Settings.AttIdWidth, TextAlignment = TextAlignment.Right, ToolTipBinding = "[" + Settings.AttId.Index + "]"
                    },
                    new ListViewDataTemplateHelper.ImageColumnInfo {
                        Header = "", DisplayExpression = "DataImage", SearchGetAccessor = Settings.AttId.AttributeName, FixedWidth = 26, MaxHeight = 24
                    },
                    new ListViewDataTemplateHelper.RangeColumnInfo {
                        Header = Settings.AttDisplay.DisplayName, DisplayExpression = "[" + Settings.AttDisplay.Index + "]", SearchGetAccessor = Settings.AttDisplay.AttributeName, IsFill = true, ToolTipBinding = "[" + Settings.AttDisplay.Index + "]", MinWidth = 100, TextWrapping = TextWrapping.Wrap
                    }
                }, new DatabaseItemSorter(Settings.AttributeList), new string[] { "Deleted", "{DynamicResource CellBrushRemoved}", "Modified", "{DynamicResource CellBrushModified}", "Added", "{DynamicResource CellBrushAdded}", "Normal", "{DynamicResource TextForeground}" });
            }
            else
            {
                ListViewDataTemplateHelper.GenerateListViewTemplateNew(_listView, new ListViewDataTemplateHelper.GeneralColumnInfo[] {
                    new ListViewDataTemplateHelper.GeneralColumnInfo {
                        Header = Settings.AttId.DisplayName, DisplayExpression = "[" + Settings.AttId.Index + "]", SearchGetAccessor = Settings.AttId.AttributeName, FixedWidth = Settings.AttIdWidth, TextAlignment = TextAlignment.Right, ToolTipBinding = "[" + Settings.AttId.Index + "]"
                    },
                    new ListViewDataTemplateHelper.RangeColumnInfo {
                        Header = Settings.AttDisplay.DisplayName, DisplayExpression = "[" + Settings.AttDisplay.Index + "]", SearchGetAccessor = Settings.AttDisplay.AttributeName, IsFill = true, ToolTipBinding = "[" + Settings.AttDisplay.Index + "]", MinWidth = 100, TextWrapping = TextWrapping.Wrap
                    }
                }, new DatabaseItemSorter(Settings.AttributeList), new string[] { "Deleted", "{DynamicResource CellBrushRemoved}", "Modified", "{DynamicResource CellBrushModified}", "Added", "{DynamicResource CellBrushAdded}", "Normal", "{DynamicResource TextForeground}" });
            }

            if (!Settings.CanBeDelayed || Settings.AttributeList.Attributes.Any(p => p.IsSkippable))
            {
                _deployTabControls();
            }

            _initTableEvents();

            if (Settings.ContextMenu != null)
            {
                if (Header is Control)
                {
                    ((Control)Header).ContextMenu = Settings.ContextMenu;
                }
            }

            if (Settings.Loaded != null)
            {
                Settings.Loaded((GDbTabWrapper <TKey, ReadableTuple <TKey> >)(object) this, (GTabSettings <TKey, ReadableTuple <TKey> >)(object) Settings, ProjectDatabase.GetDb <TKey>(Settings.DbData));
            }

            if (Settings.DisplayablePropertyMaker.OnTabVisible != null)
            {
                Settings.DisplayablePropertyMaker.OnTabVisible(this);
            }

            Loaded += delegate {
                TabControl parent = WpfUtilities.FindParentControl <TabControl>(this);

                if (parent != null)
                {
                    parent.SelectionChanged += new SelectionChangedEventHandler(_parent_SelectionChanged);
                }
            };

            _listView.PreviewMouseDown += delegate { _listView.Focus(); };

            _listView.Loaded += delegate {
                try {
                    if (IsVisible)
                    {
                        Keyboard.Focus(_listView);
                    }
                }
                catch {
                }
            };

            ApplicationShortcut.Link(ApplicationShortcut.Paste, () => ImportFromFile("clipboard"), _listView);
            ApplicationShortcut.Link(ApplicationShortcut.AdvancedPaste, () => ImportFromFile("clipboard", true), this);
            ApplicationShortcut.Link(ApplicationShortcut.AdvancedPaste2, () => ImportFromFile("clipboard", true), this);
            ApplicationShortcut.Link(ApplicationShortcut.Cut, () => _miCut_Click(null, null), _listView);
            ApplicationShortcut.Link(ApplicationShortcut.FromString("F3", "Search next empty ID"), () => {
                if (_listView.SelectedItems.Count > 0)
                {
                    ReadableTuple <int> item = (_listView.SelectedItems[_listView.SelectedItems.Count - 1]) as ReadableTuple <int>;
                    var original             = item;

                    if (item != null)
                    {
                        int id = item.Key;

                        while (true)
                        {
                            id++;
                            var idGeneric = (TKey)(object)id;

                            var tuple = (ReadableTuple <int>)(object) Table.TryGetTuple(idGeneric);

                            if (tuple == null && item != original && item != null)
                            {
                                TabNavigation.SelectList(DbComponent.DbSource, new TKey[] { item.GetKey <TKey>() });
                                break;
                            }

                            item = tuple;
                        }
                    }
                }
            }, _listView);
        }
コード例 #5
0
ファイル: SDEMenu.cs プロジェクト: zdurexz/RagnarokSDE
        private void _menuItemUpdateClientQuests_Click(object sender, RoutedEventArgs e)
        {
            try {
                var tab = FindTopmostTab();

                if (tab == null)
                {
                    return;
                }

                string file = PathRequest.OpenFileCde("fileName", "iRO-questid2display.txt");

                if (file != null)
                {
                    var db    = ProjectDatabase.GetDb <int>(ServerDbs.CQuests);
                    var table = db.Table;

                    try {
                        table.Commands.BeginNoDelay();

                        foreach (string[] elements in TextFileHelper.GetElementsInt(File.ReadAllBytes(file)))
                        {
                            int itemId = Int32.Parse(elements[0]);
                            var tuple  = table.TryGetTuple(itemId);

                            if (tuple != null)
                            {
                                DbIOClientQuests.SetQuestValue(table, tuple, elements, 1);
                                table.Set(itemId, ClientQuestsAttributes.SG, elements[2]);
                                table.Set(itemId, ClientQuestsAttributes.QUE, elements[3]);
                                DbIOClientQuests.SetQuestValue(table, tuple, elements, 4);
                                DbIOClientQuests.SetQuestValue(table, tuple, elements, 5);
                            }
                            else
                            {
                                ReadableTuple <int> newTuple = new ReadableTuple <int>(itemId, ClientQuestsAttributes.AttributeList);
                                table.Commands.AddTuple(itemId, newTuple);
                                table.Commands.Set(newTuple, ClientQuestsAttributes.Name, elements[1]);
                                table.Commands.Set(newTuple, ClientQuestsAttributes.SG, elements[2]);
                                table.Commands.Set(newTuple, ClientQuestsAttributes.QUE, elements[3]);
                                table.Commands.Set(newTuple, ClientQuestsAttributes.FullDesc, elements[4]);
                                table.Commands.Set(newTuple, ClientQuestsAttributes.ShortDesc, elements[5]);
                            }
                        }

                        var db2 = db.ProjectDatabase.GetMetaTable <int>(ServerDbs.Quests);

                        foreach (var quest in db2.FastItems)
                        {
                            var id    = quest.Key;
                            var tuple = table.TryGetTuple(id);

                            if (tuple != null)
                            {
                                DbIOClientQuests.SetQuestValue(table, tuple, quest.GetValue <string>(ServerQuestsAttributes.QuestTitle), ClientQuestsAttributes.Name.Index);
                            }
                            else
                            {
                                ReadableTuple <int> newTuple = new ReadableTuple <int>(id, ClientQuestsAttributes.AttributeList);
                                table.Commands.AddTuple(id, newTuple);
                                table.Commands.Set(newTuple, ClientQuestsAttributes.Name, quest.GetValue <string>(ServerQuestsAttributes.QuestTitle));
                                table.Commands.Set(newTuple, ClientQuestsAttributes.SG, "SG_FEEL");
                                table.Commands.Set(newTuple, ClientQuestsAttributes.QUE, "QUE_NOIMAGE");
                                table.Commands.Set(newTuple, ClientQuestsAttributes.FullDesc, "...");
                                table.Commands.Set(newTuple, ClientQuestsAttributes.ShortDesc, "");
                            }
                        }

                        Debug.Ignore(() => DbDebugHelper.OnLoaded(db.DbSource, db.ProjectDatabase.MetaGrf.FindTkPath(file), db));
                    }
                    catch (Exception err) {
                        table.Commands.CancelEdit();
                        ErrorHandler.HandleException(err);
                    }
                    finally {
                        table.Commands.End();
                    }
                }
            }
            catch (Exception err) {
                ErrorHandler.HandleException(err);
            }
        }
コード例 #6
0
ファイル: GDbTabWrapper.cs プロジェクト: zdurexz/RagnarokSDE
        public void Initialize(GTabSettings <TKey, TValue> settings)
        {
            Settings = settings;

            ProjectDatabase = settings.ClientDatabase;
            DbComponent     = ProjectDatabase.GetDb <TKey>(settings.DbData);
            Table           = Settings.Table;
            Header          = Settings.TabName;
            Style           = TryFindResource(settings.Style) as Style ?? Style;
            SearchEngine    = settings.SearchEngine;
            SearchEngine.Init(_dbSearchPanel, this);
            Table.TableUpdated += new Table <TKey, TValue> .UpdateTableEventHandler(_table_TableUpdated);

            if (Settings.SearchEngine.SetupImageDataGetter != null)
            {
                Extensions.GenerateListViewTemplate(_listView, new ListViewDataTemplateHelper.GeneralColumnInfo[] {
                    new ListViewDataTemplateHelper.GeneralColumnInfo {
                        Header = Settings.AttId.DisplayName, DisplayExpression = "[" + Settings.AttId.Index + "]", SearchGetAccessor = Settings.AttId.AttributeName, FixedWidth = Settings.AttIdWidth, TextAlignment = TextAlignment.Right, ToolTipBinding = "[" + Settings.AttId.Index + "]"
                    },
                    new ListViewDataTemplateHelper.ImageColumnInfo {
                        Header = "", DisplayExpression = "DataImage", SearchGetAccessor = Settings.AttId.AttributeName, FixedWidth = 26, MaxHeight = 24
                    },
                    new ListViewDataTemplateHelper.RangeColumnInfo {
                        Header = Settings.AttDisplay.DisplayName, DisplayExpression = "[" + Settings.AttDisplay.Index + "]", SearchGetAccessor = Settings.AttDisplay.AttributeName, IsFill = true, ToolTipBinding = "[" + Settings.AttDisplay.Index + "]", MinWidth = 100, TextWrapping = TextWrapping.Wrap
                    }
                }, new DatabaseItemSorter(Settings.AttributeList), new string[] { "Deleted", "Red", "Modified", "Green", "Added", "Blue", "Normal", "Black" }, "generateStyle", "false");
            }
            else
            {
                Extensions.GenerateListViewTemplate(_listView, new ListViewDataTemplateHelper.GeneralColumnInfo[] {
                    new ListViewDataTemplateHelper.GeneralColumnInfo {
                        Header = Settings.AttId.DisplayName, DisplayExpression = "[" + Settings.AttId.Index + "]", SearchGetAccessor = Settings.AttId.AttributeName, FixedWidth = Settings.AttIdWidth, TextAlignment = TextAlignment.Right, ToolTipBinding = "[" + Settings.AttId.Index + "]"
                    },
                    new ListViewDataTemplateHelper.RangeColumnInfo {
                        Header = Settings.AttDisplay.DisplayName, DisplayExpression = "[" + Settings.AttDisplay.Index + "]", SearchGetAccessor = Settings.AttDisplay.AttributeName, IsFill = true, ToolTipBinding = "[" + Settings.AttDisplay.Index + "]", MinWidth = 100, TextWrapping = TextWrapping.Wrap
                    }
                }, new DatabaseItemSorter(Settings.AttributeList), new string[] { "Deleted", "Red", "Modified", "Green", "Added", "Blue", "Normal", "Black" }, "generateStyle", "false");
            }

            if (!Settings.CanBeDelayed || Settings.AttributeList.Attributes.Any(p => p.IsSkippable))
            {
                _deployTabControls();
            }

            _initTableEvents();

            if (Settings.ContextMenu != null)
            {
                if (Header is Control)
                {
                    ((Control)Header).ContextMenu = Settings.ContextMenu;
                }
            }

            if (Settings.Loaded != null)
            {
                Settings.Loaded((GDbTabWrapper <TKey, ReadableTuple <TKey> >)(object) this, (GTabSettings <TKey, ReadableTuple <TKey> >)(object) Settings, ProjectDatabase.GetDb <TKey>(Settings.DbData));
            }

            if (Settings.DisplayablePropertyMaker.OnTabVisible != null)
            {
                Settings.DisplayablePropertyMaker.OnTabVisible(this);
            }

            Loaded += delegate {
                TabControl parent = WpfUtilities.FindParentControl <TabControl>(this);

                if (parent != null)
                {
                    parent.SelectionChanged += new SelectionChangedEventHandler(_parent_SelectionChanged);
                }
            };

            _listView.PreviewMouseDown += delegate { _listView.Focus(); };

            _listView.Loaded += delegate {
                try {
                    if (IsVisible)
                    {
                        Keyboard.Focus(_listView);
                    }
                }
                catch {
                }
            };

            ApplicationShortcut.Link(ApplicationShortcut.Paste, () => ImportFromFile("clipboard"), _listView);
            ApplicationShortcut.Link(ApplicationShortcut.AdvancedPaste, () => ImportFromFile("clipboard", true), this);
            ApplicationShortcut.Link(ApplicationShortcut.AdvancedPaste2, () => ImportFromFile("clipboard", true), this);
            ApplicationShortcut.Link(ApplicationShortcut.Cut, () => _miCut_Click(null, null), _listView);
        }