mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 06:05:49 -06:00
1169 lines
44 KiB
C++
1169 lines
44 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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 <wx/wx.h>
|
|
#include <wx/xrc/xmlres.h>
|
|
#include <wx/fontdlg.h>
|
|
#include <wx/fontutil.h>
|
|
#include <wx/file.h>
|
|
#include <wx/clrpicker.h>
|
|
#include <wx/filepicker.h>
|
|
#include <wx/fontpicker.h>
|
|
#include <wx/treectrl.h>
|
|
|
|
// 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 <wx/colordlg.h>
|
|
|
|
#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 pickerIdle_in_transaction_session_timeoutProcessColour CTRL_COLOURPICKER("pickerIdle_in_transaction_session_timeoutProcessColour")
|
|
#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 <wx/fontdlg.h>
|
|
#include <wx/richtext/richtextbuffer.h>
|
|
#include <wx/richtext/richtextformatdlg.h>
|
|
|
|
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());
|
|
pickerIdle_in_transaction_session_timeoutProcessColour->SetColour(settings->GetIdle_in_transaction_session_timeoutProcessColour());
|
|
|
|
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->SetBlockedProcessColour(pickerBlockedProcessColour->GetColourString());
|
|
if (pickerBlockedbyProcessColour->GetColourString() != settings->GetBlockedbyProcessColour())
|
|
changed = true;
|
|
settings->SetBlockedbyProcessColour(pickerBlockedbyProcessColour->GetColourString());
|
|
if (pickerIdle_in_transaction_session_timeoutProcessColour->GetColourString() != settings->GetIdle_in_transaction_session_timeoutProcessColour())
|
|
changed = true;
|
|
settings->SetIdle_in_transaction_session_timeoutProcessColour(pickerIdle_in_transaction_session_timeoutProcessColour->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...\tCtrl-O"), _("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;
|
|
}
|
|
|