////////////////////////////////////////////////////////////////////////// // // pgAdmin III - PostgreSQL Tools // // Copyright (C) 2002 - 2016, The pgAdmin Development Team // This software is released under the PostgreSQL Licence // // frmOptions.cpp - The main options dialogue // ////////////////////////////////////////////////////////////////////////// #include "pgAdmin3.h" // wxWindows headers #include #include #include #include #include #include #include #include #include // App headers #include "frm/frmOptions.h" #include "frm/frmMain.h" #include "frm/frmHint.h" #include "utils/sysSettings.h" #include "utils/sysLogger.h" #include "utils/misc.h" #include "frm/menu.h" #include "ctl/ctlColourPicker.h" // Must be after pgAdmin3.h or MSVC++ complains #include #include "images/properties.pngc" #define BROWSER_ITEM _("Browser") #define BROWSER_DISPLAY_ITEM _("Display") #define BROWSER_PROPERTIES_ITEM _("Properties") #define BROWSER_BINPATH_ITEM _("Binary paths") #define BROWSER_MISC_ITEM _("UI Miscellaneous") #define QUERYTOOL_ITEM _("Query tool") #define QUERYTOOL_EDITOR_ITEM _("Query editor") #define QUERYTOOL_COLOURS_ITEM _("Colours") #define QUERYTOOL_RESULTS_ITEM _("Results grid") #define QUERYTOOL_FILES_ITEM _("Query file") #define QUERYTOOL_FAVOURITES_ITEM _("Favourites") #define QUERYTOOL_MACROS_ITEM _("Macros") #define QUERYTOOL_HISTORYFILE_ITEM _("History file") #define DATABASEDESIGNER_ITEM _("Database Designer") #define SERVERSTATUS_ITEM _("Server status") #define TREEJSON_ITEM _("PgAdmin3opt settings") #define MISC_ITEM _("Miscellaneous") #define MISC_UI_ITEM _("User Interface") #define MISC_HELPPATH_ITEM _("Help paths") #define MISC_GURUHINTS_ITEM _("Guru hints") #define MISC_LOGGING_ITEM _("Logging") #define txtPgHelpPath CTRL_TEXT("txtPgHelpPath") #define txtEdbHelpPath CTRL_TEXT("txtEdbHelpPath") #define txtGpHelpPath CTRL_TEXT("txtGpHelpPath") #define txtSlonyHelpPath CTRL_TEXT("txtSlonyHelpPath") #define pickerSlonyPath CTRL_DIRPICKER("pickerSlonyPath") #define pickerPostgresqlPath CTRL_DIRPICKER("pickerPostgresqlPath") #define pickerEnterprisedbPath CTRL_DIRPICKER("pickerEnterprisedbPath") #define pickerGPDBPath CTRL_DIRPICKER("pickerGPDBPath") #define txtSystemSchemas CTRL_TEXT("txtSystemSchemas") #define pickerLogfile CTRL_FILEPICKER("pickerLogfile") #define radLoglevel CTRL_RADIOBOX("radLoglevel") #define txtMaxRows CTRL_TEXT("txtMaxRows") #define txtMaxColSize CTRL_TEXT("txtMaxColSize") #define pickerFont CTRL_FONTPICKER("pickerFont") #define chkUnicodeFile CTRL_CHECKBOX("chkUnicodeFile") #define chkWriteBOM CTRL_CHECKBOX("chkWriteBOM") #define chkAskSaveConfirm CTRL_CHECKBOX("chkAskSaveConfirm") #define chkAskDelete CTRL_CHECKBOX("chkAskDelete") #define chkShowUsersForPrivileges CTRL_CHECKBOX("chkShowUsersForPrivileges") #define chkShowDBnameTree CTRL_CHECKBOX("chkShowDBnameTree") #define txtAutoRowCount CTRL_TEXT("txtAutoRowCount") #define chkNumberPretty CTRL_CHECKBOX("chkNumberPretty") #define txtIndent CTRL_TEXT("txtIndent") #define chkSpacesForTabs CTRL_CHECKBOX("chkSpacesForTabs") #define cbCopyQuote CTRL_COMBOBOX("cbCopyQuote") #define cbCopyQuoteChar CTRL_COMBOBOX("cbCopyQuoteChar") #define cbCopySeparator CTRL_COMBOBOX("cbCopySeparator") #define chkStickySql CTRL_CHECKBOX("chkStickySql") #define chkIndicateNull CTRL_CHECKBOX("chkIndicateNull") #define txtDecimalMark CTRL_TEXT("txtDecimalMark") #define chkColumnNames CTRL_CHECKBOX("chkColumnNames") #define txtThousandsSeparator CTRL_TEXT("txtThousandsSeparator") #define chkAutoRollback CTRL_CHECKBOX("chkAutoRollback") #define chkAutoCommit CTRL_CHECKBOX("chkAutoCommit") #define chkDoubleClickProperties CTRL_CHECKBOX("chkDoubleClickProperties") #define chkShowNotices CTRL_CHECKBOX("chkShowNotices") #define cbLanguage CTRL_COMBOBOX("cbLanguage") #define pickerSqlFont CTRL_FONTPICKER("pickerSqlFont") #define chkSuppressHints CTRL_CHECKBOX("chkSuppressHints") #define chkResetHints CTRL_CHECKBOX("chkResetHints") #define lstDisplay CTRL_CHECKLISTBOX("lstDisplay") #define chkSystemObjects CTRL_CHECKBOX("chkSystemObjects") #define chkIgnoreVersion CTRL_CHECKBOX("chkIgnoreVersion") #define pickerIdleProcessColour CTRL_COLOURPICKER("pickerIdleProcessColour") #define pickerActiveProcessColour CTRL_COLOURPICKER("pickerActiveProcessColour") #define pickerSlowProcessColour CTRL_COLOURPICKER("pickerSlowProcessColour") #define pickerBlockedProcessColour CTRL_COLOURPICKER("pickerBlockedProcessColour") #define pickerBlockedbyProcessColour CTRL_COLOURPICKER("pickerBlockedbyProcessColour") #define pickerFavouritesFile CTRL_FILEPICKER("pickerFavouritesFile") #define pickerMacrosFile CTRL_FILEPICKER("pickerMacrosFile") #define pickerHistoryFile CTRL_FILEPICKER("pickerHistoryFile") #define pickerExtFormatCmd CTRL_FILEPICKER("pickerExtFormatCmd") #define pickerExtAlignCmd CTRL_FILEPICKER("pickerExtAlignCmd") #define txtHistoryMaxQueries CTRL_TEXT("txtHistoryMaxQueries") #define txtHistoryMaxQuerySize CTRL_TEXT("txtHistoryMaxQuerySize") #define txtWidthCaretKeyboardLayout CTRL_TEXT("txtWidthCaretKeyboardLayout") #define chkSQLUseSystemBackgroundColour CTRL_CHECKBOX("chkSQLUseSystemBackgroundColour") #define chkCaretUseSystemBackgroundColour CTRL_CHECKBOX("chkCaretUseSystemBackgroundColour") #define chkSQLUseSystemForegroundColour CTRL_CHECKBOX("chkSQLUseSystemForegroundColour") #define pickerSQLBackgroundColour CTRL_COLOURPICKER("pickerSQLBackgroundColour") #define pickerCaretBackgroundColour CTRL_COLOURPICKER("pickerCaretBackgroundColour") #define pickerSQLForegroundColour CTRL_COLOURPICKER("pickerSQLForegroundColour") #define stSQLCustomBackgroundColour CTRL_STATIC("stSQLCustomBackgroundColour") #define stCaretCustomBackgroundColour CTRL_STATIC("stCaretCustomBackgroundColour") #define stSQLCustomForegroundColour CTRL_STATIC("stSQLCustomForegroundColour") #define pickerSQLMarginBackgroundColour CTRL_COLOURPICKER("pickerSQLMarginBackgroundColour") #define pickerSQLColour1 CTRL_COLOURPICKER("pickerSQLColour1") #define pickerSQLColour2 CTRL_COLOURPICKER("pickerSQLColour2") #define pickerSQLColour3 CTRL_COLOURPICKER("pickerSQLColour3") #define pickerSQLColour4 CTRL_COLOURPICKER("pickerSQLColour4") #define pickerSQLColour5 CTRL_COLOURPICKER("pickerSQLColour5") #define pickerSQLColour6 CTRL_COLOURPICKER("pickerSQLColour6") #define pickerSQLColour7 CTRL_COLOURPICKER("pickerSQLColour7") #define pickerSQLColour10 CTRL_COLOURPICKER("pickerSQLColour10") #define pickerSQLColour11 CTRL_COLOURPICKER("pickerSQLColour11") #define pickerSQLCaretColour CTRL_COLOURPICKER("pickerSQLCaretColour") #define chkKeywordsInUppercase CTRL_CHECKBOX("chkKeywordsInUppercase") #define chkASUTPstyle CTRL_CHECKBOX("chkASUTPstyle") #define chkHideQueryHistory CTRL_CHECKBOX("chkHideQueryHistory") #define chkAutosaveQuery CTRL_CHECKBOX("chkAutosaveQuery") #define chkUseHintWords CTRL_CHECKBOX("chkUseHintWords") #define chkReplaceVars CTRL_CHECKBOX("chkReplaceVars") #define chkJumpRoot CTRL_CHECKBOX("chkJumpRoot") #define menus CTRL_TREE("menus") #define pnlBrowserDisplay CTRL_PANEL("pnlBrowserDisplay") #define pnlTreeJSON CTRL_PANEL("pnlTreeJSON") #define pnlBrowserProperties CTRL_PANEL("pnlBrowserProperties") #define pnlBrowserBinPath CTRL_PANEL("pnlBrowserBinPath") #define pnlBrowserMisc CTRL_PANEL("pnlBrowserMisc") #define pnlQueryToolEditor CTRL_PANEL("pnlQueryToolEditor") #define pnlQueryToolColours CTRL_PANEL("pnlQueryToolColours") #define pnlQueryToolResults CTRL_PANEL("pnlQueryToolResults") #define pnlQueryToolFiles CTRL_PANEL("pnlQueryToolFiles") #define pnlQueryToolFavourites CTRL_PANEL("pnlQueryToolFavourites") #define pnlQueryToolMacros CTRL_PANEL("pnlQueryToolMacros") #define pnlQueryToolHistoryFile CTRL_PANEL("pnlQueryToolHistoryFile") #define pnlDatabaseDesigner CTRL_PANEL("pnlDatabaseDesigner") #define pnlServerStatus CTRL_PANEL("pnlServerStatus") #define pnlMiscUI CTRL_PANEL("pnlMiscUI") #define pnlMiscHelpPath CTRL_PANEL("pnlMiscHelpPath") #define pnlMiscGuruHints CTRL_PANEL("pnlMiscGuruHints") #define pnlMiscLogging CTRL_PANEL("pnlMiscLogging") #define cbRefreshOnClick CTRL_COMBOBOX("cbRefreshOnClick") #define pickerFontDD CTRL_FONTPICKER("pickerFontDD") #define treeJSON CTRL_TREEJSON("treeJSON") BEGIN_EVENT_TABLE(frmOptions, pgDialog) EVT_MENU(MNU_HELP, frmOptions::OnHelp) EVT_BUTTON (XRCID("btnDefault"), frmOptions::OnDefault) EVT_CHECKBOX(XRCID("chkSuppressHints"), frmOptions::OnSuppressHints) EVT_CHECKBOX(XRCID("chkResetHints"), frmOptions::OnResetHints) EVT_CHECKBOX(XRCID("chkSQLUseSystemBackgroundColour"), frmOptions::OnChangeSQLUseCustomColour) EVT_CHECKBOX(XRCID("chkCaretUseSystemBackgroundColour"), frmOptions::OnChangeSQLUseCustomColour) EVT_CHECKBOX(XRCID("chkSQLUseSystemForegroundColour"), frmOptions::OnChangeSQLUseCustomColour) EVT_BUTTON (wxID_OK, frmOptions::OnOK) EVT_BUTTON (wxID_HELP, frmOptions::OnHelp) EVT_BUTTON (wxID_CANCEL, frmOptions::OnCancel) EVT_COMBOBOX(XRCID("cbCopyQuote"), frmOptions::OnChangeCopyQuote) EVT_TREE_SEL_CHANGED(XRCID("menus"), frmOptions::OnTreeSelChanged) END_EVENT_TABLE() //---------------------------------------------------------------------------- // wxRichTextFontDialog: a substitute for wxFontDialog, which is broken on // Mac OS X Snow Leopard //---------------------------------------------------------------------------- #ifdef __WXMAC__ #if !wxCHECK_VERSION(2, 9, 0) #include #include #include class wxRichTextFontDialog: public wxFontDialogBase { public: wxRichTextFontDialog() : wxFontDialogBase() { Init(); /* must be Create()d later */ } wxRichTextFontDialog(wxWindow *parent) : wxFontDialogBase(parent) { Init(); Create(parent); } wxRichTextFontDialog(wxWindow *parent, const wxFontData &data) : wxFontDialogBase(parent, data) { Init(); Create(parent, data); } void Init() { m_title = _("Font"); } virtual int ShowModal(); virtual void SetTitle( const wxString &title) { m_title = title; } virtual wxString GetTitle() const { return m_title; } protected: wxString m_title; DECLARE_DYNAMIC_CLASS_NO_COPY(wxRichTextFontDialog) }; IMPLEMENT_DYNAMIC_CLASS(wxRichTextFontDialog, wxDialog) int wxRichTextFontDialog::ShowModal() { wxTextAttrEx attr; if (m_fontData.GetInitialFont().Ok()) attr.SetFont(m_fontData.GetInitialFont()); if (m_fontData.GetColour().Ok()) attr.SetTextColour(m_fontData.GetColour()); wxRichTextFormattingDialog formatDlg(wxRICHTEXT_FORMAT_FONT, GetParent(), GetTitle()); formatDlg.SetAttributes(attr); if (formatDlg.ShowModal() == wxID_OK) { wxTextAttrEx attr(formatDlg.GetAttributes()); m_fontData.SetChosenFont(attr.GetFont()); m_fontData.SetColour(attr.GetTextColour()); return wxID_OK; } else return wxID_CANCEL; } #endif #endif //---------------------------------------------------------------------------- frmOptions::frmOptions(frmMain *parent) { wxTreeItemId root, node; wxTreeItemIdValue cookie; mainForm = parent; SetFont(settings->GetSystemFont()); LoadResource(parent, wxT("frmOptions")); // Icon SetIcon(*properties_png_ico); RestorePosition(); wxAcceleratorEntry entries[1]; entries[0].Set(wxACCEL_NORMAL, WXK_F1, MNU_HELP); wxAcceleratorTable accel(1, entries); SetAcceleratorTable(accel); //wxPanel* parentForTree = XRCCTRL(*this, "pnlTreeJSON", wxPanel); //m_jsontree = new ctlTreeJSON(); //m_jsontree->Create(parentForTree, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS | wxSIMPLE_BORDER | wxTR_EDIT_LABELS | wxTR_FULL_ROW_HIGHLIGHT | wxTR_NO_LINES | wxTR_HIDE_ROOT); //m_jsontree->InitMy(); //wxXmlResource::Get()->AttachUnknownControl("treeJSON", m_jsontree); treeJSON->InitMy(); wxTextValidator numval(wxFILTER_NUMERIC); txtMaxRows->SetValidator(numval); txtMaxColSize->SetValidator(numval); txtAutoRowCount->SetValidator(numval); txtIndent->SetValidator(numval); txtHistoryMaxQueries->SetValidator(numval); txtHistoryMaxQuerySize->SetValidator(numval); txtWidthCaretKeyboardLayout->SetValidator(numval); pickerLogfile->SetPath(settings->GetLogFile()); radLoglevel->SetSelection(settings->GetLogLevel()); txtMaxRows->SetValue(NumToStr(settings->GetMaxRows())); txtMaxColSize->SetValue(NumToStr(settings->GetMaxColSize())); chkAskSaveConfirm->SetValue(!settings->GetAskSaveConfirmation()); chkAskDelete->SetValue(settings->GetConfirmDelete()); chkShowUsersForPrivileges->SetValue(settings->GetShowUsersForPrivileges()); txtAutoRowCount->SetValue(NumToStr(settings->GetAutoRowCountThreshold())); chkShowDBnameTree->SetValue(settings->GetVisibleDbNameTree()); txtIndent->SetValue(NumToStr(settings->GetIndentSpaces())); chkSpacesForTabs->SetValue(settings->GetSpacesForTabs()); cbCopyQuote->SetSelection(settings->GetCopyQuoting()); cbCopyQuoteChar->SetValue(settings->GetCopyQuoteChar()); cbRefreshOnClick->SetSelection(settings->GetRefreshOnClick()); wxString copySeparator = settings->GetCopyColSeparator(); if (copySeparator == wxT("\t")) copySeparator = _("Tab"); cbCopySeparator->SetValue(copySeparator); chkStickySql->SetValue(settings->GetStickySql()); chkIndicateNull->SetValue(settings->GetIndicateNull()); txtThousandsSeparator->SetValue(settings->GetThousandsSeparator()); chkAutoRollback->SetValue(settings->GetAutoRollback()); chkAutoCommit->SetValue(settings->GetAutoCommit()); chkDoubleClickProperties->SetValue(settings->GetDoubleClickProperties()); txtDecimalMark->SetValue(settings->GetDecimalMark()); chkColumnNames->SetValue(settings->GetColumnNames()); chkShowNotices->SetValue(settings->GetShowNotices()); txtPgHelpPath->SetValue(settings->GetPgHelpPath()); txtEdbHelpPath->SetValue(settings->GetEdbHelpPath()); txtGpHelpPath->SetValue(settings->GetGpHelpPath()); txtSlonyHelpPath->SetValue(settings->GetSlonyHelpPath()); txtSystemSchemas->SetValue(settings->GetSystemSchemas()); chkUnicodeFile->SetValue(settings->GetUnicodeFile()); chkWriteBOM->SetValue(settings->GetWriteBOM()); chkSuppressHints->SetValue(settings->GetSuppressGuruHints()); pickerSlonyPath->SetPath(settings->GetSlonyPath()); pickerPostgresqlPath->SetPath(settings->GetPostgresqlPath()); pickerEnterprisedbPath->SetPath(settings->GetEnterprisedbPath()); pickerGPDBPath->SetPath(settings->GetGPDBPath()); chkIgnoreVersion->SetValue(settings->GetIgnoreVersion()); // Get back the colours pickerIdleProcessColour->SetColour(settings->GetIdleProcessColour()); pickerActiveProcessColour->SetColour(settings->GetActiveProcessColour()); pickerSlowProcessColour->SetColour(settings->GetSlowProcessColour()); pickerBlockedProcessColour->SetColour(settings->GetBlockedProcessColour()); pickerBlockedbyProcessColour->SetColour(settings->GetBlockedbyProcessColour()); pickerFavouritesFile->SetPath(settings->GetFavouritesFile()); pickerMacrosFile->SetPath(settings->GetMacrosFile()); pickerHistoryFile->SetPath(settings->GetHistoryFile()); pickerExtFormatCmd->SetPath(settings->GetExtFormatCmd()); pickerExtAlignCmd->SetPath(settings->GetExtAlignCmd()); txtHistoryMaxQueries->SetValue(NumToStr(settings->GetHistoryMaxQueries())); txtHistoryMaxQuerySize->SetValue(NumToStr(settings->GetHistoryMaxQuerySize())); txtWidthCaretKeyboardLayout->SetValue(NumToStr((long)settings->GetWidthCaretForKeyboardLayout())); chkSQLUseSystemBackgroundColour->SetValue(settings->GetSQLBoxUseSystemBackground()); chkCaretUseSystemBackgroundColour->SetValue(settings->GetCaretUseSystemBackground()); chkSQLUseSystemForegroundColour->SetValue(settings->GetSQLBoxUseSystemForeground()); UpdateColourControls(); pickerSQLColour1->SetColour(settings->GetSQLBoxColour(1)); pickerSQLColour2->SetColour(settings->GetSQLBoxColour(2)); pickerSQLColour3->SetColour(settings->GetSQLBoxColour(3)); pickerSQLColour4->SetColour(settings->GetSQLBoxColour(4)); pickerSQLColour5->SetColour(settings->GetSQLBoxColour(5)); pickerSQLColour6->SetColour(settings->GetSQLBoxColour(6)); pickerSQLColour7->SetColour(settings->GetSQLBoxColour(7)); pickerSQLColour10->SetColour(settings->GetSQLBoxColour(10)); pickerSQLColour11->SetColour(settings->GetSQLBoxColour(11)); chkKeywordsInUppercase->SetValue(settings->GetSQLKeywordsInUppercase()); chkASUTPstyle->SetValue(settings->GetASUTPstyle()); chkHideQueryHistory->SetValue(settings->GetHideQueryHistory()); chkAutosaveQuery->SetValue(settings->GetAutosaveQuery()); chkUseHintWords->SetValue(settings->GetUseHintWords()); chkReplaceVars->SetValue(settings->GetReplaceVars()); chkJumpRoot->SetValue(settings->GetJumpRoot()); chkNumberPretty->SetValue(settings->GetNumberPretty()); cbLanguage->Append(_("Default")); int sel = 0; wxLanguage langId = settings->GetCanonicalLanguage(); int langCount = existingLangs.GetCount(); if (langCount) { int langNo; const wxLanguageInfo *langInfo; for (langNo = 0; langNo < langCount ; langNo++) { langInfo = wxLocale::GetLanguageInfo(existingLangs.Item(langNo)); cbLanguage->Append(wxT("(") + langInfo->CanonicalName + wxT(") ") + existingLangNames.Item(langNo)); if (langId == langInfo->Language) sel = langNo + 1; } } cbLanguage->SetSelection(sel); pickerFont->SetSelectedFont(settings->GetSystemFont()); pickerSqlFont->SetSelectedFont(settings->GetSQLFont()); pickerFontDD->SetSelectedFont(settings->GetDDFont()); // Load the display options lstDisplay->Append(_("Databases")); lstDisplay->Append(_("Tablespaces")); lstDisplay->Append(_("pgAgent Jobs")); lstDisplay->Append(_("pgpro_scheduler")); lstDisplay->Append(_("Groups/group Roles")); lstDisplay->Append(_("Users/login Roles")); lstDisplay->Append(_("Resource Queues")); lstDisplay->Append(_("Resource Groups")); lstDisplay->Append(_("Catalogs")); lstDisplay->Append(_("Casts")); lstDisplay->Append(_("Event Triggers")); lstDisplay->Append(_("Extensions")); lstDisplay->Append(_("Publications")); lstDisplay->Append(_("Subscriptions")); lstDisplay->Append(_("Foreign Data Wrappers")); lstDisplay->Append(_("Foreign Servers")); lstDisplay->Append(_("User Mappings")); lstDisplay->Append(_("Languages")); lstDisplay->Append(_("Schemas")); lstDisplay->Append(_("Synonyms")); lstDisplay->Append(_("Slony-I Clusters")); lstDisplay->Append(_("Aggregates")); lstDisplay->Append(_("Collations")); lstDisplay->Append(_("Conversions")); lstDisplay->Append(_("Domains")); lstDisplay->Append(_("External Tables")); lstDisplay->Append(_("Foreign Tables")); lstDisplay->Append(_("FTS Configurations")); lstDisplay->Append(_("FTS Dictionaries")); lstDisplay->Append(_("FTS Parsers")); lstDisplay->Append(_("FTS Templates")); lstDisplay->Append(_("Functions")); lstDisplay->Append(_("Operators")); lstDisplay->Append(_("Operator Classes")); lstDisplay->Append(_("Operator Families")); lstDisplay->Append(_("Packages")); lstDisplay->Append(_("Procedures")); lstDisplay->Append(_("Sequences")); lstDisplay->Append(_("Tables")); lstDisplay->Append(_("Trigger Functions")); lstDisplay->Append(_("Types")); lstDisplay->Append(_("Views")); for (unsigned int x = 0; x < lstDisplay->GetCount(); x++) lstDisplay->Check(x, settings->GetDisplayOption(lstDisplay->GetString(x))); chkSystemObjects->SetValue(settings->GetShowSystemObjects()); wxCommandEvent e; OnChangeCopyQuote(e); // Fill the treeview root = menus->AddRoot(_("Options")); node = menus->AppendItem(root, BROWSER_ITEM); menus->AppendItem(node, BROWSER_DISPLAY_ITEM); menus->AppendItem(node, BROWSER_PROPERTIES_ITEM); menus->AppendItem(node, BROWSER_BINPATH_ITEM); menus->AppendItem(node, BROWSER_MISC_ITEM); node = menus->AppendItem(root, QUERYTOOL_ITEM); menus->AppendItem(node, QUERYTOOL_EDITOR_ITEM); menus->AppendItem(node, QUERYTOOL_COLOURS_ITEM); menus->AppendItem(node, QUERYTOOL_RESULTS_ITEM); menus->AppendItem(node, QUERYTOOL_FILES_ITEM); menus->AppendItem(node, QUERYTOOL_FAVOURITES_ITEM); menus->AppendItem(node, QUERYTOOL_MACROS_ITEM); menus->AppendItem(node, QUERYTOOL_HISTORYFILE_ITEM); node = menus->AppendItem(root, DATABASEDESIGNER_ITEM); node = menus->AppendItem(root, SERVERSTATUS_ITEM); node = menus->AppendItem(root, MISC_ITEM); menus->AppendItem(node, MISC_UI_ITEM); menus->AppendItem(node, MISC_HELPPATH_ITEM); menus->AppendItem(node, MISC_GURUHINTS_ITEM); menus->AppendItem(node, MISC_LOGGING_ITEM); node = menus->AppendItem(root, TREEJSON_ITEM); menus->ExpandAllChildren(root); menuSelection = settings->GetOptionsLastTreeItem(); wxTreeItemId menuItem = GetTreeItemByLabel(root, menuSelection); if (!menuItem.IsOk()) menuItem = menus->GetFirstChild(root, cookie); menus->SelectItem(menuItem); ShowPanel(menuItem); } frmOptions::~frmOptions() { SavePosition(); } void frmOptions::OnHelp(wxCommandEvent &ev) { DisplayHelp(wxT("options"), HELP_PGADMIN); } void frmOptions::OnDefault(wxCommandEvent &ev) { // Reset the display options to the defaults. // Clear them all first for (unsigned int x = 0; x < lstDisplay->GetCount(); x++) lstDisplay->Check(x, settings->GetDisplayOption(lstDisplay->GetString(x), true)); } void frmOptions::OnSuppressHints(wxCommandEvent &ev) { if (chkSuppressHints->GetValue()) chkResetHints->SetValue(false); } void frmOptions::OnResetHints(wxCommandEvent &ev) { if (chkResetHints->GetValue()) chkSuppressHints->SetValue(false); } void frmOptions::UpdateColourControls() { if (chkSQLUseSystemBackgroundColour->GetValue()) { pickerSQLBackgroundColour->Enable(false); pickerSQLBackgroundColour->SetColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); stSQLCustomBackgroundColour->Enable(false); } else { pickerSQLBackgroundColour->Enable(true); pickerSQLBackgroundColour->SetColour(settings->GetSQLBoxColourBackground()); stSQLCustomBackgroundColour->Enable(true); } if (chkCaretUseSystemBackgroundColour->GetValue()) { pickerCaretBackgroundColour->Enable(false); pickerCaretBackgroundColour->SetColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); stCaretCustomBackgroundColour->Enable(false); } else { pickerCaretBackgroundColour->Enable(true); pickerCaretBackgroundColour->SetColour(settings->GetCaretColourBackground()); stCaretCustomBackgroundColour->Enable(true); stCaretCustomBackgroundColour->Enable(true); } if (chkSQLUseSystemForegroundColour->GetValue()) { pickerSQLForegroundColour->Enable(false); pickerSQLForegroundColour->SetColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); stSQLCustomForegroundColour->Enable(false); } else { pickerSQLForegroundColour->Enable(true); pickerSQLForegroundColour->SetColour(settings->GetSQLBoxColourForeground()); stSQLCustomForegroundColour->Enable(true); } pickerSQLCaretColour->SetColour(settings->GetSQLColourCaret()); pickerSQLMarginBackgroundColour->SetColour(settings->GetSQLMarginBackgroundColour()); } void frmOptions::OnChangeSQLUseCustomColour(wxCommandEvent &ev) { UpdateColourControls(); } void frmOptions::OnOK(wxCommandEvent &ev) { // Check the PostgreSQL and EnterpriseDB paths #ifdef __WXMSW__ if (!pickerPostgresqlPath->GetPath().IsEmpty() && !isPgApp(pickerPostgresqlPath->GetPath() + wxT("\\pg_dump.exe"))) #else if (!pickerPostgresqlPath->GetPath().IsEmpty() && !isPgApp(pickerPostgresqlPath->GetPath() + wxT("/pg_dump"))) #endif { wxMessageBox(_("The PostgreSQL bin path specified is not valid or does not contain a PostgreSQL pg_dump executable.\n\nPlease select another directory, or leave the path blank."), _("Error"), wxICON_ERROR | wxOK); return; } #ifdef __WXMSW__ if (!pickerEnterprisedbPath->GetPath().IsEmpty() && !isEdbApp(pickerEnterprisedbPath->GetPath() + wxT("\\pg_dump.exe"))) #else if (!pickerEnterprisedbPath->GetPath().IsEmpty() && !isEdbApp(pickerEnterprisedbPath->GetPath() + wxT("/pg_dump"))) #endif { wxMessageBox(_("The EnterpriseDB bin path specified is not valid or does not contain an EnterpriseDB pg_dump executable.\n\nPlease select another directory, or leave the path blank."), _("Error"), wxICON_ERROR | wxOK); return; } #ifdef __WXMSW__ if (!pickerGPDBPath->GetPath().IsEmpty() && !isGpApp(pickerGPDBPath->GetPath() + wxT("\\pg_dump.exe"))) #else if (!pickerGPDBPath->GetPath().IsEmpty() && !isGpApp(pickerGPDBPath->GetPath() + wxT("/pg_dump"))) #endif { wxMessageBox(_("The Greenplum bin path specified is not valid or does not contain a Greenplum pg_dump executable.\n\nPlease select another directory, or leave the path blank."), _("Error"), wxICON_ERROR | wxOK); return; } if (txtDecimalMark->GetValue() != wxEmptyString) { // Check decimal mark <> thousands separator if (txtDecimalMark->GetValue() == txtThousandsSeparator->GetValue()) { wxMessageBox(_("The decimal mark and thousands separator must not be equal."), _("Error"), wxICON_ERROR | wxOK); return; } } // Clean and check the help paths txtPgHelpPath->SetValue(CleanHelpPath(txtPgHelpPath->GetValue())); if (!HelpPathValid(txtPgHelpPath->GetValue())) { wxMessageBox(_("An invalid PostgreSQL help path was specified.\n\nPlease enter another filename, directory or URL, or leave the path blank."), _("Error"), wxICON_ERROR | wxOK); txtPgHelpPath->SetFocus(); return; } txtEdbHelpPath->SetValue(CleanHelpPath(txtEdbHelpPath->GetValue())); if (!HelpPathValid(txtEdbHelpPath->GetValue())) { wxMessageBox(_("An invalid EnterpriseDB help path was specified.\n\nPlease enter another filename, directory or URL, or leave the path blank."), _("Error"), wxICON_ERROR | wxOK); txtEdbHelpPath->SetFocus(); return; } txtGpHelpPath->SetValue(CleanHelpPath(txtGpHelpPath->GetValue())); if (!HelpPathValid(txtGpHelpPath->GetValue())) { wxMessageBox(_("An invalid GreenplumDB help path was specified.\n\nPlease enter another filename, directory or URL, or leave the path blank."), _("Error"), wxICON_ERROR | wxOK); txtGpHelpPath->SetFocus(); return; } txtSlonyHelpPath->SetValue(CleanHelpPath(txtSlonyHelpPath->GetValue())); if (!HelpPathValid(txtSlonyHelpPath->GetValue())) { wxMessageBox(_("An invalid Slony help path was specified.\n\nPlease enter another filename, directory or URL, or leave the path blank."), _("Error"), wxICON_ERROR | wxOK); txtSlonyHelpPath->SetFocus(); return; } // Logfile wxString logFile = pickerLogfile->GetPath(); wxLogInfo(wxT("Setting logfile to: %s"), logFile.c_str()); settings->SetLogFile(logFile); // Loglevel wxString logInfo = radLoglevel->GetStringSelection(); wxLogInfo(wxT("Setting loglevel to: %s"), logInfo.c_str()); int sel = radLoglevel->GetSelection(); switch(sel) { case(0): settings->SetLogLevel(LOG_NONE); break; case(1): settings->SetLogLevel(LOG_ERRORS); break; case(2): settings->SetLogLevel(LOG_NOTICE); break; case(3): settings->SetLogLevel(LOG_SQL); break; case(4): settings->SetLogLevel(LOG_DEBUG); break; default: settings->SetLogLevel(LOG_ERRORS); break; } // Query parameter settings->SetMaxRows(StrToLong(txtMaxRows->GetValue())); settings->SetMaxColSize(StrToLong(txtMaxColSize->GetValue())); settings->SetAskSaveConfirmation(!chkAskSaveConfirm->GetValue()); settings->SetConfirmDelete(chkAskDelete->GetValue()); settings->SetShowUsersForPrivileges(chkShowUsersForPrivileges->GetValue()); settings->SetVisibleDbNameTree(chkShowDBnameTree->GetValue()); settings->SetAutoRowCountThreshold(StrToLong(txtAutoRowCount->GetValue())); settings->SetIndentSpaces(StrToLong(txtIndent->GetValue())); settings->SetSpacesForTabs(chkSpacesForTabs->GetValue()); settings->SetCopyQuoting(cbCopyQuote->GetCurrentSelection()); settings->SetCopyQuoteChar(cbCopyQuoteChar->GetValue()); settings->SetHistoryMaxQueries(StrToLong(txtHistoryMaxQueries->GetValue())); settings->SetHistoryMaxQuerySize(StrToLong(txtHistoryMaxQuerySize->GetValue())); settings->SetWidthCaretForKeyboardLayout((int)StrToLong(txtWidthCaretKeyboardLayout->GetValue())); settings->SetRefreshOnClick(cbRefreshOnClick->GetSelection()); wxString copySeparator = cbCopySeparator->GetValue(); if (copySeparator == _("Tab")) copySeparator = wxT("\t"); settings->SetCopyColSeparator(copySeparator); settings->SetStickySql(chkStickySql->GetValue()); settings->SetIndicateNull(chkIndicateNull->GetValue()); settings->SetDecimalMark(txtDecimalMark->GetValue()); settings->SetColumnNames(chkColumnNames->GetValue()); settings->SetThousandsSeparator(txtThousandsSeparator->GetValue()); settings->SetAutoRollback(chkAutoRollback->GetValue()); settings->SetAutoCommit(chkAutoCommit->GetValue()); settings->SetDoubleClickProperties(chkDoubleClickProperties->GetValue()); settings->SetShowNotices(chkShowNotices->GetValue()); settings->SetUnicodeFile(chkUnicodeFile->GetValue()); settings->SetWriteBOM(chkWriteBOM->GetValue()); settings->SetSystemFont(pickerFont->GetSelectedFont()); settings->SetSQLFont(pickerSqlFont->GetSelectedFont()); settings->SetDDFont(pickerFontDD->GetSelectedFont()); settings->SetSuppressGuruHints(chkSuppressHints->GetValue()); settings->SetSlonyPath(pickerSlonyPath->GetPath()); settings->SetPostgresqlPath(pickerPostgresqlPath->GetPath()); settings->SetEnterprisedbPath(pickerEnterprisedbPath->GetPath()); settings->SetGPDBPath(pickerGPDBPath->GetPath()); // Setup PostgreSQL/EnterpriseDB working paths #if defined(__WXMSW__) pgBackupExecutable = settings->GetPostgresqlPath() + wxT("\\pg_dump.exe"); pgBackupAllExecutable = settings->GetPostgresqlPath() + wxT("\\pg_dumpall.exe"); pgRestoreExecutable = settings->GetPostgresqlPath() + wxT("\\pg_restore.exe"); edbBackupExecutable = settings->GetEnterprisedbPath() + wxT("\\pg_dump.exe"); edbBackupAllExecutable = settings->GetEnterprisedbPath() + wxT("\\pg_dumpall.exe"); edbRestoreExecutable = settings->GetEnterprisedbPath() + wxT("\\pg_restore.exe"); gpBackupExecutable = settings->GetGPDBPath() + wxT("\\pg_dump.exe"); gpBackupAllExecutable = settings->GetGPDBPath() + wxT("\\pg_dumpall.exe"); gpRestoreExecutable = settings->GetGPDBPath() + wxT("\\pg_restore.exe"); #else pgBackupExecutable = settings->GetPostgresqlPath() + wxT("/pg_dump"); pgBackupAllExecutable = settings->GetPostgresqlPath() + wxT("/pg_dumpall"); pgRestoreExecutable = settings->GetPostgresqlPath() + wxT("/pg_restore"); edbBackupExecutable = settings->GetEnterprisedbPath() + wxT("/pg_dump"); edbBackupAllExecutable = settings->GetEnterprisedbPath() + wxT("/pg_dumpall"); edbRestoreExecutable = settings->GetEnterprisedbPath() + wxT("/pg_restore"); gpBackupExecutable = settings->GetGPDBPath() + wxT("/pg_dump"); gpBackupAllExecutable = settings->GetGPDBPath() + wxT("/pg_dumpall"); gpRestoreExecutable = settings->GetGPDBPath() + wxT("/pg_restore"); #endif if (!wxFile::Exists(pgBackupExecutable)) pgBackupExecutable = wxEmptyString; if (!wxFile::Exists(pgBackupAllExecutable)) pgBackupAllExecutable = wxEmptyString; if (!wxFile::Exists(pgRestoreExecutable)) pgRestoreExecutable = wxEmptyString; if (!wxFile::Exists(edbBackupExecutable)) edbBackupExecutable = wxEmptyString; if (!wxFile::Exists(edbBackupAllExecutable)) edbBackupAllExecutable = wxEmptyString; if (!wxFile::Exists(edbRestoreExecutable)) edbRestoreExecutable = wxEmptyString; if (!wxFile::Exists(gpBackupExecutable)) gpBackupExecutable = wxEmptyString; if (!wxFile::Exists(gpBackupAllExecutable)) gpBackupAllExecutable = wxEmptyString; if (!wxFile::Exists(gpRestoreExecutable)) gpRestoreExecutable = wxEmptyString; settings->SetIgnoreVersion(chkIgnoreVersion->GetValue()); if (chkResetHints->GetValue()) frmHint::ResetHints(); // Set the help paths settings->SetPgHelpPath(txtPgHelpPath->GetValue()); settings->SetEdbHelpPath(txtEdbHelpPath->GetValue()); settings->SetGpHelpPath(txtGpHelpPath->GetValue()); settings->SetSlonyHelpPath(txtSlonyHelpPath->GetValue()); settings->SetSystemSchemas(txtSystemSchemas->GetValue()); // Save the display options bool changed = false; for (unsigned int x = 0; x < lstDisplay->GetCount(); x++) { if (lstDisplay->IsChecked(x) != settings->GetDisplayOption(lstDisplay->GetString(x))) { changed = true; settings->SetDisplayOption(lstDisplay->GetString(x), lstDisplay->IsChecked(x)); } } if (chkSystemObjects->GetValue() != settings->GetShowSystemObjects()) { changed = true; settings->SetShowSystemObjects(chkSystemObjects->GetValue()); } // Change the status colours if (pickerIdleProcessColour->GetColourString() != settings->GetIdleProcessColour()) changed = true; settings->SetIdleProcessColour(pickerIdleProcessColour->GetColourString()); if (pickerActiveProcessColour->GetColourString() != settings->GetActiveProcessColour()) changed = true; settings->SetActiveProcessColour(pickerActiveProcessColour->GetColourString()); if (pickerSlowProcessColour->GetColourString() != settings->GetSlowProcessColour()) changed = true; settings->SetSlowProcessColour(pickerSlowProcessColour->GetColourString()); if (pickerBlockedProcessColour->GetColourString() != settings->GetBlockedProcessColour()) changed = true; settings->SetBlockedbyProcessColour(pickerBlockedProcessColour->GetColourString()); if (pickerBlockedbyProcessColour->GetColourString() != settings->GetBlockedbyProcessColour()) changed = true; settings->SetBlockedbyProcessColour(pickerBlockedbyProcessColour->GetColourString()); // Change files' location settings->SetFavouritesFile(pickerFavouritesFile->GetPath()); settings->SetMacrosFile(pickerMacrosFile->GetPath()); settings->SetHistoryFile(pickerHistoryFile->GetPath()); settings->SetExtFormatCmd(pickerExtFormatCmd->GetPath()); settings->SetExtAlignCmd(pickerExtAlignCmd->GetPath()); // Change SQL Syntax colours if (settings->GetSQLBoxUseSystemBackground() != chkSQLUseSystemBackgroundColour->GetValue()) { changed = true; settings->SetSQLBoxUseSystemBackground(chkSQLUseSystemBackgroundColour->GetValue()); } if (settings->GetCaretUseSystemBackground() != chkCaretUseSystemBackgroundColour->GetValue()) { changed = true; settings->SetCaretUseSystemBackground(chkCaretUseSystemBackgroundColour->GetValue()); } if (settings->GetSQLBoxUseSystemForeground() != chkSQLUseSystemForegroundColour->GetValue()) { changed = true; settings->SetSQLBoxUseSystemForeground(chkSQLUseSystemForegroundColour->GetValue()); } if (!settings->GetSQLBoxUseSystemBackground()) { if (pickerSQLBackgroundColour->GetColourString() != settings->GetSQLBoxColourBackground()) changed = true; settings->SetSQLBoxColourBackground(pickerSQLBackgroundColour->GetColourString()); } if (!settings->GetCaretUseSystemBackground()) { if (pickerCaretBackgroundColour->GetColourString() != settings->GetCaretColourBackground()) changed = true; settings->SetCaretColourBackground(pickerCaretBackgroundColour->GetColourString()); } if (!settings->GetSQLBoxUseSystemForeground()) { if (pickerSQLForegroundColour->GetColourString() != settings->GetSQLBoxColourForeground()) changed = true; settings->SetSQLBoxColourForeground(pickerSQLForegroundColour->GetColourString()); } if (pickerSQLMarginBackgroundColour->GetColourString() != settings->GetSQLMarginBackgroundColour()) changed = true; settings->SetSQLMarginBackgroundColour(pickerSQLMarginBackgroundColour->GetColourString()); if (pickerSQLCaretColour->GetColourString() != settings->GetSQLColourCaret()) changed = true; settings->SetSQLColourCaret(pickerSQLCaretColour->GetColourString()); if (pickerSQLColour1->GetColourString() != settings->GetSQLBoxColour(1)) changed = true; settings->SetSQLBoxColour(1, pickerSQLColour1->GetColourString()); if (pickerSQLColour2->GetColourString() != settings->GetSQLBoxColour(2)) changed = true; settings->SetSQLBoxColour(2, pickerSQLColour2->GetColourString()); if (pickerSQLColour3->GetColourString() != settings->GetSQLBoxColour(3)) changed = true; settings->SetSQLBoxColour(3, pickerSQLColour3->GetColourString()); if (pickerSQLColour4->GetColourString() != settings->GetSQLBoxColour(4)) changed = true; settings->SetSQLBoxColour(4, pickerSQLColour4->GetColourString()); if (pickerSQLColour5->GetColourString() != settings->GetSQLBoxColour(5)) changed = true; settings->SetSQLBoxColour(5, pickerSQLColour5->GetColourString()); if (pickerSQLColour6->GetColourString() != settings->GetSQLBoxColour(6)) changed = true; settings->SetSQLBoxColour(6, pickerSQLColour6->GetColourString()); if (pickerSQLColour7->GetColourString() != settings->GetSQLBoxColour(7)) changed = true; settings->SetSQLBoxColour(7, pickerSQLColour7->GetColourString()); if (pickerSQLColour10->GetColourString() != settings->GetSQLBoxColour(10)) changed = true; settings->SetSQLBoxColour(10, pickerSQLColour10->GetColourString()); if (pickerSQLColour11->GetColourString() != settings->GetSQLBoxColour(11)) changed = true; settings->SetSQLBoxColour(11, pickerSQLColour11->GetColourString()); if (settings->GetASUTPstyle() != chkASUTPstyle->GetValue()) { changed = true; settings->SetASUTPstyle(chkASUTPstyle->GetValue()); } if (settings->GetHideQueryHistory() != chkHideQueryHistory->GetValue()) { changed = true; settings->SetHideQueryHistory(chkHideQueryHistory->GetValue()); } if (settings->GetAutosaveQuery() != chkAutosaveQuery->GetValue()) { changed = true; settings->SetAutosaveQuery(chkAutosaveQuery->GetValue()); } if (settings->GetUseHintWords() != chkUseHintWords->GetValue()) { changed = true; settings->SetUseHintWords(chkUseHintWords->GetValue()); } if (settings->GetReplaceVars() != chkReplaceVars->GetValue()) { changed = true; settings->SetReplaceVars(chkReplaceVars->GetValue()); } if (settings->GetJumpRoot() != chkJumpRoot->GetValue()) { changed = true; settings->SetJumpRoot(chkJumpRoot->GetValue()); } if (settings->GetNumberPretty() != chkNumberPretty->GetValue()) { changed = true; settings->SetNumberPretty(chkNumberPretty->GetValue()); } // Change the language last, as it will affect our tests for changes // in the display object types. int langNo = cbLanguage->GetCurrentSelection(); if (langNo >= 0) { wxLanguage langId; if (langNo == 0) langId = wxLANGUAGE_DEFAULT; else { const wxLanguageInfo *langInfo = wxLocale::GetLanguageInfo(existingLangs.Item(langNo - 1)); langId = (wxLanguage) langInfo->Language; } settings->SetCanonicalLanguage(langId); } settings->SetOptionsLastTreeItem(menuSelection); // Did any display options change? Display this message last, so it's // in the selected language. if (changed) wxMessageBox(_("Changes to the display options may not be visible until the browser tree is refreshed."), _("Display options"), wxICON_INFORMATION | wxOK); treeJSON->Save(); //m_jsontree->Save(); Destroy(); } void frmOptions::OnCancel(wxCommandEvent &ev) { Destroy(); } optionsFactory::optionsFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) : actionFactory(list) { mnu->Append(id, _("&Options..."), _("Show options dialog.")); } wxWindow *optionsFactory::StartDialog(frmMain *form, pgObject *obj) { frmOptions *frm = new frmOptions(form); frm->Show(); return 0; } // Enable/disable the copy quote option as required. void frmOptions::OnChangeCopyQuote(wxCommandEvent &WXUNUSED(ev)) { if (cbCopyQuote->GetValue() == _("None")) cbCopyQuoteChar->Disable(); else cbCopyQuoteChar->Enable(); } wxString frmOptions::CheckColour(wxString oldColour) { wxString newColour = wxEmptyString; if (oldColour != wxEmptyString) { wxColour colour; if (colour.Set(oldColour)) newColour = colour.GetAsString(wxC2S_HTML_SYNTAX); else wxLogError(_("The colour specified is not valid.")); } return newColour; } void frmOptions::OnTreeSelChanged(wxTreeEvent &event) { wxTreeItemId sel = event.GetItem(); if (sel) ShowPanel(sel); } void frmOptions::ShowPanel(const wxTreeItemId &menuItem) { // Hide everything pnlBrowserDisplay->Show(false); pnlTreeJSON->Show(false); pnlBrowserProperties->Show(false); pnlBrowserBinPath->Show(false); pnlBrowserMisc->Show(false); pnlQueryToolEditor->Show(false); pnlQueryToolColours->Show(false); pnlQueryToolResults->Show(false); pnlQueryToolFiles->Show(false); pnlQueryToolFavourites->Show(false); pnlQueryToolMacros->Show(false); pnlQueryToolHistoryFile->Show(false); pnlDatabaseDesigner->Show(false); pnlServerStatus->Show(false); pnlMiscUI->Show(false); pnlMiscHelpPath->Show(false); pnlMiscGuruHints->Show(false); pnlMiscLogging->Show(false); // Find the one to show menuSelection = menus->GetItemText(menuItem); if (menuSelection == BROWSER_ITEM || menuSelection == BROWSER_DISPLAY_ITEM) pnlBrowserDisplay->Show(true); else if (menuSelection == BROWSER_PROPERTIES_ITEM) pnlBrowserProperties->Show(true); else if (menuSelection == BROWSER_BINPATH_ITEM) pnlBrowserBinPath->Show(true); else if (menuSelection == BROWSER_MISC_ITEM) pnlBrowserMisc->Show(true); else if (menuSelection == QUERYTOOL_ITEM || menuSelection == QUERYTOOL_EDITOR_ITEM) pnlQueryToolEditor->Show(true); else if (menuSelection == QUERYTOOL_COLOURS_ITEM) { pnlQueryToolColours->Show(true); pickerSQLBackgroundColour->UpdateColour(); pickerSQLForegroundColour->UpdateColour(); pickerSQLMarginBackgroundColour->UpdateColour(); pickerSQLColour1->UpdateColour(); pickerSQLColour2->UpdateColour(); pickerSQLColour3->UpdateColour(); pickerSQLColour4->UpdateColour(); pickerSQLColour5->UpdateColour(); pickerSQLColour6->UpdateColour(); pickerSQLColour7->UpdateColour(); pickerSQLColour10->UpdateColour(); pickerSQLColour11->UpdateColour(); pickerSQLCaretColour->UpdateColour(); } else if (menuSelection == QUERYTOOL_RESULTS_ITEM) pnlQueryToolResults->Show(true); else if (menuSelection == QUERYTOOL_FILES_ITEM) pnlQueryToolFiles->Show(true); else if (menuSelection == QUERYTOOL_FAVOURITES_ITEM) pnlQueryToolFavourites->Show(true); else if (menuSelection == QUERYTOOL_MACROS_ITEM) pnlQueryToolMacros->Show(true); else if (menuSelection == QUERYTOOL_HISTORYFILE_ITEM) pnlQueryToolHistoryFile->Show(true); else if (menuSelection == DATABASEDESIGNER_ITEM) pnlDatabaseDesigner->Show(true); else if (menuSelection == TREEJSON_ITEM) pnlTreeJSON->Show(true); else if (menuSelection == SERVERSTATUS_ITEM) { pnlServerStatus->Show(true); pickerIdleProcessColour->UpdateColour(); pickerActiveProcessColour->UpdateColour(); pickerSlowProcessColour->UpdateColour(); pickerBlockedProcessColour->UpdateColour(); } else if (menuSelection == MISC_ITEM || menuSelection == MISC_UI_ITEM) pnlMiscUI->Show(true); else if (menuSelection == MISC_HELPPATH_ITEM) pnlMiscHelpPath->Show(true); else if (menuSelection == MISC_GURUHINTS_ITEM) pnlMiscGuruHints->Show(true); else if (menuSelection == MISC_LOGGING_ITEM) pnlMiscLogging->Show(true); pnlBrowserDisplay->GetParent()->Layout(); // we don't need to call GetParent()->Layout() for all panels // because they all share the same parent } wxTreeItemId frmOptions::GetTreeItemByLabel(const wxTreeItemId &root, const wxString &label) { wxTreeItemIdValue cookie; wxTreeItemId child; wxTreeItemId notfound; if (!root.IsOk()) return notfound; if (label.CompareTo(menus->GetItemText(root)) == 0) return root; if (!menus->ItemHasChildren(root)) return notfound; child = menus->GetFirstChild(root, cookie); while (child.IsOk()) { child = GetTreeItemByLabel(child, label); if (child.IsOk()) return child; child = menus->GetNextChild(root, cookie); } return child; }