private void tabButton_Click(object sender, EventArgs e) { Button source = (Button)sender; switch (source.Name.Substring(0, 4)) { #region Open case "open": { string fromTab = source.Name.Replace("open", string.Empty); switch (fromTab) { case "CatalogAddonDetails": { using (AddonDetailsDialog addonDetailsDialog = new AddonDetailsDialog(addonProject.catalog.addonName, AddonType.catalogWithBaskets, addonProject.catalog.addonCreator, addonProject.catalog.addonVersion, addonProject.catalog.addonDescription)) { if (addonDetailsDialog.ShowDialog() == DialogResult.OK) { addonProject.catalog.addonName = addonDetailsDialog.returnValues[0]; addonProject.catalog.addonCreator = addonDetailsDialog.returnValues[1]; addonProject.catalog.addonVersion = addonDetailsDialog.returnValues[2]; addonProject.catalog.addonDescription = addonDetailsDialog.returnValues[3]; } } } break; case "AccentAddonDetails": { using (AddonDetailsDialog addonDetailsDialog = new AddonDetailsDialog(addonProject.accent.addonName, AddonType.accent, addonProject.accent.addonCreator, addonProject.accent.addonVersion, addonProject.accent.addonDescription)) { if (addonDetailsDialog.ShowDialog() == DialogResult.OK) { addonProject.accent.addonName = addonDetailsDialog.returnValues[0]; addonProject.accent.addonCreator = addonDetailsDialog.returnValues[1]; addonProject.accent.addonVersion = addonDetailsDialog.returnValues[2]; addonProject.accent.addonDescription = addonDetailsDialog.returnValues[3]; } } } break; case "ThemeAddonDetails": { using (AddonDetailsDialog addonDetailsDialog = new AddonDetailsDialog(addonProject.theme.addonName, AddonType.theme, addonProject.theme.addonCreator, addonProject.theme.addonVersion, addonProject.theme.addonDescription)) { if (addonDetailsDialog.ShowDialog() == DialogResult.OK) { addonProject.theme.addonName = addonDetailsDialog.returnValues[0]; addonProject.theme.addonCreator = addonDetailsDialog.returnValues[1]; addonProject.theme.addonVersion = addonDetailsDialog.returnValues[2]; addonProject.theme.addonDescription = addonDetailsDialog.returnValues[3]; } } } break; case "LanguageDefault": { if (helpLanguageForm == null) helpLanguageForm = new HelpLanguageForm(); helpLanguageForm.Show(); helpLanguageForm.BringToFront(); } break; case "LanguageAddonDetails": { using (AddonDetailsDialog addonDetailsDialog = new AddonDetailsDialog(addonProject.language.addonName, AddonType.language, addonProject.language.addonCreator, addonProject.language.addonVersion, addonProject.language.addonDescription)) { if (addonDetailsDialog.ShowDialog() == DialogResult.OK) { addonProject.language.addonName = addonDetailsDialog.returnValues[0]; addonProject.language.addonCreator = addonDetailsDialog.returnValues[1]; addonProject.language.addonVersion = addonDetailsDialog.returnValues[2]; addonProject.language.addonDescription = addonDetailsDialog.returnValues[3]; } } } break; case "MemoryPatchAddonDetails": { using (AddonDetailsDialog addonDetailsDialog = new AddonDetailsDialog(addonProject.memoryPatch.addonName, AddonType.memoryPatch, addonProject.memoryPatch.addonCreator, addonProject.memoryPatch.addonVersion, addonProject.memoryPatch.addonDescription)) { if (addonDetailsDialog.ShowDialog() == DialogResult.OK) { addonProject.memoryPatch.addonName = addonDetailsDialog.returnValues[0]; addonProject.memoryPatch.addonCreator = addonDetailsDialog.returnValues[1]; addonProject.memoryPatch.addonVersion = addonDetailsDialog.returnValues[2]; addonProject.memoryPatch.addonDescription = addonDetailsDialog.returnValues[3]; } } } break; } break; } #endregion #region Create case "crea": { string fromTab = source.Name.Replace("create", string.Empty); switch (fromTab) { case "Catalog": if (productsListBox.CheckedItems.Count == productsListBox.Items.Count && categoriesListBox.CheckedItems.Count == categoriesListBox.Items.Count) { createAddonDialog.FilterIndex = 1; createAddonDialog.FileName = addonProject.catalog.addonName; if (createAddonDialog.ShowDialog() == DialogResult.OK) { if (createAddonDialog.FileName.EndsWith(".serveraddon.catalogwithbasket")) { string targetAddon = createAddonDialog.FileName; saveAddonProperties(targetAddon, addonProject.catalog.addonName, AddonType.catalogWithBaskets, addonProject.catalog.addonCreator, addonProject.catalog.addonVersion, addonProject.catalog.addonDescription); if (targetAddon.saveAddonFile(AddonType.catalogWithBaskets, productsListBox.Items.Cast<string>().ToArray(), categoriesListBox.Items.Cast<string>().ToArray(), basketsListBox.Items.Cast<string>().ToArray() )) { MessageBox.Show("The catalog addon has been created successfully!", "Just to let you know...", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { if (File.Exists(targetAddon)) File.Delete(targetAddon); MessageBox.Show("Create catalog addon operation has been cancelled.", "Just to let you know...", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Please use the default extension '.serveraddon.catalogwithbasket' and retry.", "Hold your horses there, big guy!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } else { MessageBox.Show("Please fill in the missing entries in the catalog section and retry.", "Hold your horses there, big guy!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } break; case "Accent": { try { if (String.IsNullOrWhiteSpace(avalonEditProxyAccent.textEditor.Text)) return; var xElement = XElement.Parse(avalonEditProxyAccent.textEditor.Text); String docAccent = xElement.ToString(); createAddonDialog.FilterIndex = 2; createAddonDialog.FileName = addonProject.accent.addonName; if (createAddonDialog.ShowDialog() == DialogResult.OK) { if (createAddonDialog.FileName.EndsWith(".serveraddon.accent")) { string targetAddon = createAddonDialog.FileName; saveAddonProperties(targetAddon, addonProject.accent.addonName, AddonType.accent, addonProject.accent.addonCreator, addonProject.accent.addonVersion, addonProject.accent.addonDescription); if (targetAddon.saveAddonFile(AddonType.accent, new string[] { docAccent })) { MessageBox.Show("The accent addon has been created successfully!", "Just to let you know...", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { if (File.Exists(targetAddon)) File.Delete(targetAddon); MessageBox.Show("Create accent addon operation has been cancelled.", "Just to let you know...", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Please use the default extension '.serveraddon.accent' and retry.", "Hold your horses there, big guy!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } catch (Exception ex) { MessageBox.Show(String.Format("{0}\r\n\r\nPlease retry after fixing the error.", ex.Message), "ERROR: Not valid input", MessageBoxButtons.OK, MessageBoxIcon.Error); } } break; case "Theme": { try { if (String.IsNullOrWhiteSpace(avalonEditProxyTheme.textEditor.Text)) return; var xElement = XElement.Parse(avalonEditProxyTheme.textEditor.Text); String docTheme = xElement.ToString(); createAddonDialog.FilterIndex = 3; createAddonDialog.FileName = addonProject.theme.addonName; if (createAddonDialog.ShowDialog() == DialogResult.OK) { if (createAddonDialog.FileName.EndsWith(".serveraddon.theme")) { string targetAddon = createAddonDialog.FileName; saveAddonProperties(targetAddon, addonProject.theme.addonName, AddonType.theme, addonProject.theme.addonCreator, addonProject.theme.addonVersion, addonProject.theme.addonDescription); if (targetAddon.saveAddonFile(AddonType.theme, new string[] { docTheme })) { MessageBox.Show("The theme addon has been created successfully!", "Just to let you know...", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { if (File.Exists(targetAddon)) File.Delete(targetAddon); MessageBox.Show("Create theme addon operation has been cancelled.", "Just to let you know...", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Please use the default extension '.serveraddon.theme' and retry.", "Hold your horses there, big guy!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } catch (Exception ex) { MessageBox.Show(String.Format("{0}\r\n\r\nPlease retry after fixing the error.", ex.Message), "ERROR: Not valid input", MessageBoxButtons.OK, MessageBoxIcon.Error); } } break; case "Language": { try { if (String.IsNullOrWhiteSpace(avalonEditProxyLanguage.textEditor.Text)) return; var xElement = XElement.Parse(avalonEditProxyLanguage.textEditor.Text); String docLanguage = xElement.ToString(); createAddonDialog.FilterIndex = 4; createAddonDialog.FileName = addonProject.language.addonName; if (createAddonDialog.ShowDialog() == DialogResult.OK) { if (createAddonDialog.FileName.EndsWith(".serveraddon.language")) { string targetAddon = createAddonDialog.FileName; saveAddonProperties(targetAddon, addonProject.language.addonName, AddonType.language, addonProject.language.addonCreator, addonProject.language.addonVersion, addonProject.language.addonDescription); if (targetAddon.saveAddonFile(AddonType.language, new string[] { docLanguage })) { MessageBox.Show("The language addon has been created successfully!", "Just to let you know...", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { if (File.Exists(targetAddon)) File.Delete(targetAddon); MessageBox.Show("Create language addon operation has been cancelled.", "Just to let you know...", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("Please use the default extension '.serveraddon.language' and retry.", "Hold your horses there, big guy!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } catch (Exception ex) { MessageBox.Show(String.Format("{0}\r\n\r\nPlease retry after fixing the error.", ex.Message), "ERROR: Not valid input", MessageBoxButtons.OK, MessageBoxIcon.Error); } } break; case "MemoryPatch": MessageBox.Show("codedom-jitcompile-dll-main-attach/detach"); break; } break; } #endregion #region Discard case "disc": { string fromTab = source.Name.Replace("discard", string.Empty); switch (fromTab) { case "Catalog": { clearCatalogListBoxes(); addonProject.catalog = new AddonProject.Catalog(); } break; case "Accent": { addonProject.accent = new AddonProject.Accent(); avalonEditProxyAccent.textEditor.Text = AddonProject.Accent.defaultAccentXaml; } break; case "Theme": { addonProject.theme = new AddonProject.Theme(); avalonEditProxyTheme.textEditor.Text = AddonProject.Theme.defaultThemeXaml; } break; case "Language": { addonProject.language = new AddonProject.Language(); avalonEditProxyLanguage.textEditor.Text = AddonProject.Language.defaultLanguageFileText; } break; case "MemoryPatch": { addonProject.memoryPatch = new AddonProject.MemoryPatch(); avalonEditProxyMemoryPatch.textEditor.Text = ""; } break; } break; } #endregion } }