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); } }
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); } }
public AbstractDb <T> GetDb <T>(ServerDbs source) { return(ProjectDatabase.GetDb <T>(source)); }
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); }
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); } }
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); }