private static void _loaded <TKey>(GDbTabWrapper <TKey, ReadableTuple <TKey> > tab, GTabSettings <TKey, ReadableTuple <TKey> > settings, BaseDb gdb) { string property = "[Server database editor - Enabled state - " + settings.DbData.DisplayName + "]"; Func <bool> getConfig = () => Boolean.Parse(ProjectConfiguration.ConfigAsker[property, true.ToString()]); Action <bool> setConfig = v => ProjectConfiguration.ConfigAsker[property] = v.ToString(); Func <string> getHeader = () => getConfig() ? "Disable" : "Enable"; Func <string> getFullHeader = () => String.Format("{0} '{1}'", getHeader(), settings.DbData.Filename.Replace("_", "__")); Func <Image> getIcon = () => getConfig() ? new Image { Source = (BitmapSource)ApplicationManager.PreloadResourceImage("error16.png") } : new Image { Source = (BitmapSource)ApplicationManager.PreloadResourceImage("validity.png") }; var menuItem = new MenuItem { Header = getFullHeader(), Icon = getIcon() }; menuItem.IsEnabled = false; menuItem.Click += delegate { if (settings.DbData != null) { try { setConfig(!getConfig()); gdb.Attached["IsEnabled"] = getConfig(); TabGenerator <TKey> .TgOnTabVisualUpdate(tab, settings, gdb); menuItem.Dispatch(delegate { menuItem.Header = getFullHeader(); menuItem.Icon = getIcon(); }); } catch (Exception err) { ErrorHandler.HandleException(err); } } else { ErrorHandler.HandleException("File not found."); } }; tab.Database.Reloaded += delegate { menuItem.Dispatch(delegate { menuItem.IsEnabled = true; if (!getConfig()) { gdb.Attached["IsEnabled"] = false; } menuItem.Header = getFullHeader(); menuItem.Icon = getIcon(); }); }; settings.ContextMenu.Items.Insert(1, menuItem); }
static GTabsMaker() { CopyEntriesToClipboardFunctionInt = new GItemCommand <int, ReadableTuple <int> > { AllowMultipleSelection = true, DisplayName = "Copy entries to clipboard", ImagePath = "export.png", InsertIndex = 3, Shortcut = ApplicationShortcut.Copy, AddToCommandsStack = false, GenericCommand = delegate(List <ReadableTuple <int> > items) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < items.Count; i++) { ReadableTuple <int> item = items[i]; builder.AppendLine(string.Join(",", item.GetRawElements().Select(p => (p ?? "").ToString()).ToArray())); } Clipboard.SetText(builder.ToString()); } }; CopyEntriesToClipboardFunctionString = new GItemCommand <string, ReadableTuple <string> > { AllowMultipleSelection = true, DisplayName = "Copy entries to clipboard", ImagePath = "export.png", Shortcut = ApplicationShortcut.Copy, InsertIndex = 3, AddToCommandsStack = false, GenericCommand = delegate(List <ReadableTuple <string> > items) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < items.Count; i++) { ReadableTuple <string> item = items[i]; builder.AppendLine(string.Join(",", item.GetRawElements().Select(p => (p ?? "").ToString()).ToArray())); } Clipboard.SetText(builder.ToString()); } }; SelectFromMobDb = (tab, settings, gdb) => settings.AddedCommands.Add(GenerateSelectFrom(ServerDbs.Mobs, tab)); SelectFromItemDb = (tab, settings, gdb) => settings.AddedCommands.Add(GenerateSelectFrom(ServerDbs.Items, tab)); SelectFromSkillDb = (tab, settings, gdb) => settings.AddedCommands.Add(GenerateSelectFrom(ServerDbs.Skills, tab)); SelectFromMobDbString = (tab, settings, gdb) => settings.AddedCommands.Add(GenerateSelectFrom(ServerDbs.Mobs, tab, ServerMobSkillAttributes.MobId)); SelectFromSkillDbString = (tab, settings, gdb) => settings.AddedCommands.Add(GenerateSelectFrom(ServerDbs.Skills, tab, ServerMobSkillAttributes.SkillId)); SelectFromSkillRequirementsDb = (tab, settings, gdb) => settings.AddedCommands.Add(GenerateSelectFrom(ServerDbs.SkillsRequirement, tab)); }