mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 06:05:49 -06:00
1. Добавлена подсветка клиентов c окрытой транзакцией превышающей время idle_in_transaction_session_timeout. Цвет выбирается в настройках. 2. Добавлен фильтр показывающий только строки с подсветкой.
1015 lines
22 KiB
C++
1015 lines
22 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// pgAdmin III - PostgreSQL Tools
|
|
//
|
|
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
|
// This software is released under the PostgreSQL Licence
|
|
//
|
|
// sysSettings.h - Settings handling class
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef SYSSETTINGS_H
|
|
#define SYSSETTINGS_H
|
|
|
|
#include "utils/sysLogger.h"
|
|
#include "utils/json/jsonval.h"
|
|
// wxWindows headers
|
|
#include <wx/wx.h>
|
|
#include <wx/config.h>
|
|
#include <wx/fileconf.h>
|
|
|
|
// Class declarations
|
|
class sysSettings : private wxConfig
|
|
{
|
|
friend class ctlTreeJSON;
|
|
public:
|
|
sysSettings(const wxString &name);
|
|
~sysSettings();
|
|
// Display options
|
|
bool GetDisplayOption(const wxString &objtype, bool GetDefault = false);
|
|
void SetDisplayOption(const wxString &objtype, bool display);
|
|
bool GetFirstGroup(wxString& str, long& lIndex) { return wxConfig::GetFirstGroup(str,lIndex); };
|
|
bool GetNextGroup(wxString& str, long& lIndex) { return wxConfig::GetNextGroup(str, lIndex); };
|
|
bool GetFirstEntry(wxString& str, long& lIndex) { return wxConfig::GetFirstEntry(str, lIndex); };
|
|
bool GetNextEntry(wxString& str, long& lIndex) { return wxConfig::GetNextEntry(str, lIndex); };
|
|
EntryType GetEntryType(wxString& str) { return wxConfig::GetEntryType(str); };
|
|
void SetPath(wxString& str) { return wxConfig::SetPath(str); };
|
|
|
|
void FlushChanges()
|
|
{
|
|
wxConfig::Flush();
|
|
}
|
|
|
|
// Log
|
|
wxString GetLogFile();
|
|
void SetLogFile(const wxString &newval)
|
|
{
|
|
Write(wxT("LogFile"), newval);
|
|
sysLogger::logFile = newval;
|
|
}
|
|
int GetLogLevel() const
|
|
{
|
|
int i;
|
|
Read(wxT("LogLevel"), &i, LOG_ERRORS);
|
|
return i;
|
|
}
|
|
void SetLogLevel(const int newval)
|
|
{
|
|
WriteInt(wxT("LogLevel"), newval);
|
|
sysLogger::logLevel = newval;
|
|
}
|
|
|
|
// Last connection
|
|
wxString GetLastDescription() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("LastDescription"), &s, wxT("PostgreSQL Server"));
|
|
return s;
|
|
}
|
|
void SetLastDescription(const wxString &newval)
|
|
{
|
|
Write(wxT("LastDescription"), newval);
|
|
}
|
|
wxString GetLastServer() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("LastServer"), &s, wxT("localhost"));
|
|
return s;
|
|
}
|
|
void SetLastServer(const wxString &newval)
|
|
{
|
|
Write(wxT("LastServer"), newval);
|
|
}
|
|
wxString GetLastDatabase() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("LastDatabase"), &s, wxT("postgres"));
|
|
return s;
|
|
}
|
|
void SetLastDatabase(const wxString &newval)
|
|
{
|
|
Write(wxT("LastDatabase"), newval);
|
|
}
|
|
wxString GetLastUsername() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("LastUsername"), &s, wxT("postgres"));
|
|
return s;
|
|
}
|
|
void SetLastUsername(const wxString &newval)
|
|
{
|
|
Write(wxT("LastUsername"), newval);
|
|
}
|
|
int GetLastPort() const
|
|
{
|
|
int i;
|
|
Read(wxT("LastPort"), &i, 5432);
|
|
return i;
|
|
}
|
|
void SetLastPort(const int newval)
|
|
{
|
|
WriteInt(wxT("LastPort"), newval);
|
|
}
|
|
int GetLastSSL() const
|
|
{
|
|
int i;
|
|
Read(wxT("LastSSL"), &i, 0);
|
|
return i;
|
|
}
|
|
void SetLastSSL(const int newval)
|
|
{
|
|
WriteInt(wxT("LastSSL"), newval);
|
|
}
|
|
|
|
// Helper paths
|
|
wxString GetSlonyPath() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("SlonyPath"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetSlonyPath(const wxString &newval)
|
|
{
|
|
Write(wxT("SlonyPath"), newval);
|
|
}
|
|
wxString GetPostgresqlPath() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("PostgreSQLPath"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetPostgresqlPath(const wxString &newval)
|
|
{
|
|
Write(wxT("PostgreSQLPath"), newval);
|
|
}
|
|
wxString GetEnterprisedbPath() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("EnterpriseDBPath"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetEnterprisedbPath(const wxString &newval)
|
|
{
|
|
Write(wxT("EnterpriseDBPath"), newval);
|
|
}
|
|
wxString GetGPDBPath() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("GreenplumDBPath"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetGPDBPath(const wxString &newval)
|
|
{
|
|
Write(wxT("GreenplumDBPath"), newval);
|
|
}
|
|
|
|
// Help paths
|
|
wxString GetSlonyHelpPath();
|
|
void SetSlonyHelpPath(const wxString &newval)
|
|
{
|
|
Write(wxT("SlonyHelpPath"), newval);
|
|
}
|
|
wxString GetPgHelpPath();
|
|
void SetPgHelpPath(const wxString &newval)
|
|
{
|
|
Write(wxT("PostgreSQLHelpPath"), newval);
|
|
}
|
|
wxString GetEdbHelpPath();
|
|
void SetEdbHelpPath(const wxString &newval)
|
|
{
|
|
Write(wxT("EnterpriseDBHelpPath"), newval);
|
|
}
|
|
wxString GetGpHelpPath();
|
|
void SetGpHelpPath(const wxString &newval)
|
|
{
|
|
Write(wxT("GreenplumDBHelpPath"), newval);
|
|
}
|
|
|
|
// Copy options
|
|
wxString GetCopyQuoteChar() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("Copy/QuoteChar"), &s, wxT("\""));
|
|
return s;
|
|
}
|
|
void SetCopyQuoteChar(const wxString &newval)
|
|
{
|
|
Write(wxT("Copy/QuoteChar"), newval);
|
|
}
|
|
wxString GetCopyColSeparator() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("Copy/ColSeparator"), &s, wxT(";"));
|
|
return s;
|
|
}
|
|
void SetCopyColSeparator(const wxString &newval)
|
|
{
|
|
Write(wxT("Copy/ColSeparator"), newval);
|
|
}
|
|
int GetCopyQuoting(); // 0=none 1=string 2=all
|
|
void SetCopyQuoting(const int i);
|
|
|
|
// Export options
|
|
wxString GetExportQuoteChar() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("Export/QuoteChar"), &s, wxT("\""));
|
|
return s;
|
|
}
|
|
void SetExportQuoteChar(const wxString &newval)
|
|
{
|
|
Write(wxT("Export/QuoteChar"), newval);
|
|
}
|
|
wxString GetExportColSeparator() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("Export/ColSeparator"), &s, wxT(";"));
|
|
return s;
|
|
}
|
|
void SetExportColSeparator(const wxString &newval)
|
|
{
|
|
Write(wxT("Export/ColSeparator"), newval);
|
|
}
|
|
wxString GetExportRowSeparator();
|
|
void SetExportRowSeparator(const wxString &s);
|
|
int GetExportQuoting(); // 0=none 1=string 2=all
|
|
void SetExportQuoting(const int i);
|
|
bool GetExportUnicode() const
|
|
{
|
|
bool b;
|
|
Read(wxT("Export/Unicode"), &b, true);
|
|
return b;
|
|
}
|
|
void SetExportUnicode(const bool newval)
|
|
{
|
|
WriteBool(wxT("Export/Unicode"), newval);
|
|
}
|
|
bool GetWriteBOM() const
|
|
{
|
|
bool b;
|
|
Read(wxT("Export/WriteBOM"), &b, true);
|
|
return b;
|
|
}
|
|
void SetWriteBOM(const bool newval)
|
|
{
|
|
WriteBool(wxT("Export/WriteBOM"), newval);
|
|
}
|
|
|
|
// Explain options
|
|
bool GetExplainVerbose() const
|
|
{
|
|
bool b;
|
|
Read(wxT("frmQuery/ExplainVerbose"), &b, false);
|
|
return b;
|
|
}
|
|
void SetExplainVerbose(const bool newval)
|
|
{
|
|
WriteBool(wxT("frmQuery/ExplainVerbose"), newval);
|
|
}
|
|
bool GetExplainCosts() const
|
|
{
|
|
bool b;
|
|
Read(wxT("frmQuery/ExplainCosts"), &b, true);
|
|
return b;
|
|
}
|
|
void SetExplainCosts(const bool newval)
|
|
{
|
|
WriteBool(wxT("frmQuery/ExplainCosts"), newval);
|
|
}
|
|
bool GetExplainBuffers() const
|
|
{
|
|
bool b;
|
|
Read(wxT("frmQuery/ExplainBuffers"), &b, false);
|
|
return b;
|
|
}
|
|
void SetExplainBuffers(const bool newval)
|
|
{
|
|
WriteBool(wxT("frmQuery/ExplainBuffers"), newval);
|
|
}
|
|
bool GetExplainTiming() const
|
|
{
|
|
bool b;
|
|
Read(wxT("frmQuery/ExplainTiming"), &b, true);
|
|
return b;
|
|
}
|
|
void SetExplainTiming(const bool newval)
|
|
{
|
|
WriteBool(wxT("frmQuery/ExplainTiming"), newval);
|
|
}
|
|
|
|
// Display options
|
|
wxString GetSystemSchemas() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("SystemSchemas"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetSystemSchemas(const wxString &newval)
|
|
{
|
|
Write(wxT("SystemSchemas"), newval);
|
|
}
|
|
bool GetShowUsersForPrivileges() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ShowUsersForPrivileges"), &b, false);
|
|
return b;
|
|
}
|
|
void SetShowUsersForPrivileges(const bool newval)
|
|
{
|
|
WriteBool(wxT("ShowUsersForPrivileges"), newval);
|
|
}
|
|
bool GetShowSystemObjects() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ShowSystemObjects"), &b, false);
|
|
return b;
|
|
}
|
|
void SetShowSystemObjects(const bool newval)
|
|
{
|
|
WriteBool(wxT("ShowSystemObjects"), newval);
|
|
}
|
|
|
|
// Editor options
|
|
bool GetSpacesForTabs() const
|
|
{
|
|
bool b;
|
|
Read(wxT("SpacesForTabs"), &b, false);
|
|
return b;
|
|
}
|
|
void SetSpacesForTabs(const bool newval)
|
|
{
|
|
WriteBool(wxT("SpacesForTabs"), newval);
|
|
}
|
|
long GetIndentSpaces() const
|
|
{
|
|
long l;
|
|
Read(wxT("IndentSpaces"), &l, 0L);
|
|
return l;
|
|
}
|
|
void SetIndentSpaces(const long newval)
|
|
{
|
|
WriteLong(wxT("IndentSpaces"), newval);
|
|
}
|
|
bool GetIndicateNull() const
|
|
{
|
|
bool b;
|
|
Read(wxT("frmQuery/IndicateNull"), &b, false);
|
|
return b;
|
|
}
|
|
void SetIndicateNull(const bool newval)
|
|
{
|
|
WriteBool(wxT("frmQuery/IndicateNull"), newval);
|
|
}
|
|
wxString GetThousandsSeparator() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("frmQuery/ThousandsSeparator"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetThousandsSeparator(const wxString &newval)
|
|
{
|
|
Write(wxT("frmQuery/ThousandsSeparator"), newval);
|
|
}
|
|
bool GetAutoRollback() const
|
|
{
|
|
bool b;
|
|
Read(wxT("frmQuery/AutoRollback"), &b, false);
|
|
return b;
|
|
}
|
|
bool GetAutoSelectQuery() const
|
|
{
|
|
bool b;
|
|
Read(wxT("frmQuery/AutoSelectQuery"), &b, false);
|
|
return b;
|
|
}
|
|
void SetAutoRollback(const bool newval)
|
|
{
|
|
WriteBool(wxT("frmQuery/AutoRollback"), newval);
|
|
}
|
|
bool GetAutoCommit() const
|
|
{
|
|
bool b;
|
|
Read(wxT("frmQuery/AutoCommit"), &b, true);
|
|
return b;
|
|
}
|
|
void SetAutoCommit(const bool newval)
|
|
{
|
|
WriteBool(wxT("frmQuery/AutoCommit"), newval);
|
|
}
|
|
wxString GetDecimalMark() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("DecimalMark"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetDecimalMark(const wxString &newval)
|
|
{
|
|
Write(wxT("DecimalMark"), newval);
|
|
}
|
|
bool GetColumnNames() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ColumnNames"), &b, false);
|
|
return b;
|
|
}
|
|
void SetColumnNames(const bool newval)
|
|
{
|
|
WriteBool(wxT("ColumnNames"), newval);
|
|
}
|
|
bool GetLineNumber() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ShowLineNumber"), &b, false);
|
|
return b;
|
|
}
|
|
void SetLineNumber(const bool newval)
|
|
{
|
|
WriteBool(wxT("ShowLineNumber"), newval);
|
|
}
|
|
bool GetUnicodeFile() const
|
|
{
|
|
bool b;
|
|
Read(wxT("WriteUnicodeFile"), &b, true);
|
|
return b;
|
|
}
|
|
void SetUnicodeFile(const bool newval)
|
|
{
|
|
WriteBool(wxT("WriteUnicodeFile"), newval);
|
|
}
|
|
wxFont GetSystemFont();
|
|
void SetSystemFont(const wxFont &font);
|
|
wxFont GetSQLFont();
|
|
void SetSQLFont(const wxFont &font);
|
|
wxFont GetDDFont();
|
|
void SetDDFont(const wxFont &font);
|
|
int GetLineEndingType() const
|
|
{
|
|
int i;
|
|
int defval = 2;
|
|
#ifdef __WXMSW__
|
|
defval = 0; /* SC_EOL_CRLF in Scintilla.h */
|
|
#else
|
|
defval = 2; /* SC_EOL_LF in Scintilla.h */
|
|
#endif
|
|
Read(wxT("LineEndingType"), &i, defval);
|
|
return i;
|
|
}
|
|
void SetLineEndingType(const int newval)
|
|
{
|
|
WriteInt(wxT("LineEndingType"), newval);
|
|
}
|
|
int GetWidthCaretForKeyboardLayout() const
|
|
{
|
|
int i;
|
|
int defval = 1;
|
|
Read(wxT("WidthCaretForKeyboardLayout"), &i, defval);
|
|
return i;
|
|
}
|
|
void SetWidthCaretForKeyboardLayout(const int newval)
|
|
{
|
|
WriteInt(wxT("WidthCaretForKeyboardLayout"), newval);
|
|
}
|
|
wxString GetFavouritesFile();
|
|
void SetFavouritesFile(const wxString &newval)
|
|
{
|
|
Write(wxT("FavouritesFile"), newval);
|
|
}
|
|
wxString GetMacrosFile();
|
|
wxString GetAutoReplaceFile();
|
|
void SetAutoReplaceFile(const wxString &newval)
|
|
{
|
|
Write(wxT("AutoReplaceFile"), newval);
|
|
}
|
|
void SetMacrosFile(const wxString &newval)
|
|
{
|
|
Write(wxT("MacrosFile"), newval);
|
|
}
|
|
wxString GetExtFormatCmd()
|
|
{
|
|
wxString s;
|
|
Read(wxT("ExtFormatCmd"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetExtFormatCmd(const wxString &newval)
|
|
{
|
|
Write(wxT("ExtFormatCmd"), newval);
|
|
}
|
|
wxString GetExtAlignCmd()
|
|
{
|
|
wxString s;
|
|
Read(wxT("ExtAlignCmd"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetExtAlignCmd(const wxString& newval)
|
|
{
|
|
Write(wxT("ExtAlignCmd"), newval);
|
|
}
|
|
long GetExtFormatTimeout() const
|
|
{
|
|
long l;
|
|
Read(wxT("ExtFormatTimeout"), &l, 3000L);
|
|
return l;
|
|
}
|
|
void SetExtFormatTimeout(const long newval)
|
|
{
|
|
WriteLong(wxT("ExtFormatTimeout"), newval);
|
|
}
|
|
wxString GetHistoryFile();
|
|
void SetHistoryFile(const wxString &newval)
|
|
{
|
|
Write(wxT("History/File"), newval);
|
|
}
|
|
long GetHistoryMaxQueries() const
|
|
{
|
|
long l;
|
|
Read(wxT("History/MaxQueries"), &l, 10L);
|
|
return l;
|
|
}
|
|
void SetHistoryMaxQueries(const long newval)
|
|
{
|
|
WriteLong(wxT("History/MaxQueries"), newval);
|
|
}
|
|
long GetHistoryMaxQuerySize() const
|
|
{
|
|
long l;
|
|
Read(wxT("History/MaxQuerySize"), &l, 1024L);
|
|
return l;
|
|
}
|
|
void SetHistoryMaxQuerySize(const long newval)
|
|
{
|
|
WriteLong(wxT("History/MaxQuerySize"), newval);
|
|
}
|
|
|
|
// Custom Colours options
|
|
wxString GetCustomColour(int index) const
|
|
{
|
|
wxString s;
|
|
Read(wxT("CustomColour") + NumToStr((long) index), &s, wxT("#ffffff"));
|
|
return s;
|
|
}
|
|
void SetCustomColour(int index, const wxString &newval)
|
|
{
|
|
Write(wxT("CustomColour") + NumToStr((long) index), newval);
|
|
}
|
|
|
|
// Status Colours options
|
|
wxString GetIdleProcessColour() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("IdleProcessColour"), &s, wxT("#5fa4d9"));
|
|
return s;
|
|
}
|
|
void SetIdleProcessColour(const wxString &newval)
|
|
{
|
|
Write(wxT("IdleProcessColour"), newval);
|
|
}
|
|
wxString GetActiveProcessColour() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("ActiveProcessColour"), &s, wxT("#5fd95f"));
|
|
return s;
|
|
}
|
|
void SetActiveProcessColour(const wxString &newval)
|
|
{
|
|
Write(wxT("ActiveProcessColour"), newval);
|
|
}
|
|
wxString GetSlowProcessColour() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("SlowProcessColour"), &s, wxT("#d9a75f"));
|
|
return s;
|
|
}
|
|
void SetSlowProcessColour(const wxString &newval)
|
|
{
|
|
Write(wxT("SlowProcessColour"), newval);
|
|
}
|
|
void SetIdle_in_transaction_session_timeoutProcessColour(const wxString& newval)
|
|
{
|
|
Write(wxT("Idle_in_transaction_session_timeoutProcessColour"), newval);
|
|
}
|
|
wxString GetIdle_in_transaction_session_timeoutProcessColour() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("Idle_in_transaction_session_timeoutProcessColour"), &s, wxT("#ad5bff"));
|
|
return s;
|
|
}
|
|
wxString GetBlockedProcessColour() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("BlockedProcessColour"), &s, wxT("#d96e5f"));
|
|
return s;
|
|
}
|
|
void SetBlockedProcessColour(const wxString &newval)
|
|
{
|
|
Write(wxT("BlockedProcessColour"), newval);
|
|
}
|
|
wxString GetBlockedbyProcessColour() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("BlockedbyProcessColour"), &s, wxT("#FFF200"));
|
|
return s;
|
|
}
|
|
void SetBlockedbyProcessColour(const wxString &newval)
|
|
{
|
|
Write(wxT("BlockedbyProcessColour"), newval);
|
|
}
|
|
|
|
// SQL Editor Colours options
|
|
bool GetSQLBoxUseSystemBackground() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ctlSQLBox/UseSystemBackground"), &b, true);
|
|
return b;
|
|
}
|
|
void SetSQLBoxUseSystemBackground(const bool newval)
|
|
{
|
|
WriteBool(wxT("ctlSQLBox/UseSystemBackground"), newval);
|
|
}
|
|
bool GetCaretUseSystemBackground() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ctlSQLBox/CaretUseSystemBackground"), &b, true);
|
|
return b;
|
|
}
|
|
void SetCaretUseSystemBackground(const bool newval)
|
|
{
|
|
WriteBool(wxT("ctlSQLBox/CaretUseSystemBackground"), newval);
|
|
}
|
|
bool GetSQLBoxUseSystemForeground() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ctlSQLBox/UseSystemForeground"), &b, true);
|
|
return b;
|
|
}
|
|
void SetSQLBoxUseSystemForeground(const bool newval)
|
|
{
|
|
WriteBool(wxT("ctlSQLBox/UseSystemForeground"), newval);
|
|
}
|
|
wxString GetCaretColourBackground() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("ctlSQLBox/CaretColourBackground"), &s, wxT("#ffffff"));
|
|
return s;
|
|
}
|
|
void SetCaretColourBackground(const wxString& newval)
|
|
{
|
|
Write(wxT("ctlSQLBox/CaretColourBackground"), newval);
|
|
}
|
|
|
|
wxString GetSQLBoxColourBackground() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("ctlSQLBox/ColourBackground"), &s, wxT("#ffffff"));
|
|
return s;
|
|
}
|
|
void SetSQLBoxColourBackground(const wxString &newval)
|
|
{
|
|
Write(wxT("ctlSQLBox/ColourBackground"), newval);
|
|
}
|
|
wxString GetSQLBoxColourForeground() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("ctlSQLBox/ColourForeground"), &s, wxT("#000000"));
|
|
return s;
|
|
}
|
|
void SetSQLBoxColourForeground(const wxString &newval)
|
|
{
|
|
Write(wxT("ctlSQLBox/ColourForeground"), newval);
|
|
}
|
|
|
|
wxString GetSQLColourCaret() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("ctlSQLBox/ColourCaret"), &s, wxT("#000000"));
|
|
return s;
|
|
}
|
|
void SetSQLColourCaret(const wxString &newval)
|
|
{
|
|
Write(wxT("ctlSQLBox/ColourCaret"), newval);
|
|
}
|
|
|
|
wxString GetSQLBoxColour(int index) const
|
|
{
|
|
wxString s;
|
|
Read(wxString::Format(wxT("ctlSQLBox/Colour%i"), index), &s, getDefaultElementColor(index));
|
|
return s;
|
|
}
|
|
void SetSQLBoxColour(int index, const wxString &newval)
|
|
{
|
|
Write(wxString::Format(wxT("ctlSQLBox/Colour%i"), index), newval);
|
|
}
|
|
|
|
wxString GetSQLMarginBackgroundColour() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("ctlSQLBox/MarginBackgroundColour"), &s, wxT("#dddddd"));
|
|
return s;
|
|
}
|
|
void SetSQLMarginBackgroundColour(const wxString &newval)
|
|
{
|
|
Write(wxT("ctlSQLBox/MarginBackgroundColour"), newval);
|
|
}
|
|
bool GetSQLKeywordsInUppercase() const
|
|
{
|
|
bool b;
|
|
Read(wxT("KeywordsInUppercase"), &b, false);
|
|
return b;
|
|
}
|
|
void SetSQLKeywordsInUppercase(const bool newval)
|
|
{
|
|
WriteBool(wxT("KeywordsInUppercase"), newval);
|
|
}
|
|
|
|
// Misc options
|
|
long GetAutoRowCountThreshold() const
|
|
{
|
|
long l;
|
|
Read(wxT("AutoRowCount"), &l, 2000L);
|
|
return l;
|
|
}
|
|
void SetAutoRowCountThreshold(const long newval)
|
|
{
|
|
WriteLong(wxT("AutoRowCount"), newval);
|
|
}
|
|
bool GetStickySql() const
|
|
{
|
|
bool b;
|
|
Read(wxT("StickySql"), &b, false);
|
|
return b;
|
|
}
|
|
void SetStickySql(const bool newval)
|
|
{
|
|
WriteBool(wxT("StickySql"), newval);
|
|
}
|
|
bool GetDoubleClickProperties() const
|
|
{
|
|
bool b;
|
|
Read(wxT("DoubleClickProperties"), &b, false);
|
|
return b;
|
|
}
|
|
void SetDoubleClickProperties(const bool newval)
|
|
{
|
|
WriteBool(wxT("DoubleClickProperties"), newval);
|
|
}
|
|
long GetMaxServerLogSize() const
|
|
{
|
|
long l;
|
|
Read(wxT("MaxServerLogSize"), &l, 100000L);
|
|
return l;
|
|
}
|
|
void SetMaxServerLogSize(const long newval)
|
|
{
|
|
WriteLong(wxT("MaxServerLogSize"), newval);
|
|
}
|
|
bool GetSuppressGuruHints() const
|
|
{
|
|
bool b;
|
|
Read(wxT("SuppressGuruHints"), &b, false);
|
|
return b;
|
|
}
|
|
void SetSuppressGuruHints(const bool newval)
|
|
{
|
|
WriteBool(wxT("SuppressGuruHints"), newval);
|
|
}
|
|
long GetMaxRows() const
|
|
{
|
|
long l;
|
|
Read(wxT("frmQuery/MaxRows"), &l, 100L);
|
|
return l;
|
|
}
|
|
void SetMaxRows(const long newval)
|
|
{
|
|
WriteLong(wxT("frmQuery/MaxRows"), newval);
|
|
}
|
|
long GetMaxColSize() const
|
|
{
|
|
long l;
|
|
Read(wxT("frmQuery/MaxColSize"), &l, 256L);
|
|
return l;
|
|
}
|
|
void SetMaxColSize(const long newval)
|
|
{
|
|
WriteLong(wxT("frmQuery/MaxColSize"), newval);
|
|
}
|
|
bool GetAskSaveConfirmation() const
|
|
{
|
|
bool b;
|
|
Read(wxT("AskSaveConfirmation"), &b, true);
|
|
return b;
|
|
}
|
|
void SetAskSaveConfirmation(const bool newval)
|
|
{
|
|
WriteBool(wxT("AskSaveConfirmation"), newval);
|
|
}
|
|
bool GetConfirmDelete() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ConfirmDelete"), &b, true);
|
|
return b;
|
|
}
|
|
void SetConfirmDelete(const bool newval)
|
|
{
|
|
WriteBool(wxT("ConfirmDelete"), newval);
|
|
}
|
|
wxString GetCanonicalLanguageName();
|
|
wxLanguage GetCanonicalLanguage() const
|
|
{
|
|
int i;
|
|
Read(wxT("LanguageId"), &i, wxLANGUAGE_UNKNOWN);
|
|
return (wxLanguage)i;
|
|
}
|
|
void SetCanonicalLanguage(const wxLanguage &lang);
|
|
bool GetIgnoreVersion() const
|
|
{
|
|
bool b;
|
|
Read(wxT("IgnoreVersion"), &b, false);
|
|
return b;
|
|
}
|
|
void SetIgnoreVersion(const bool newval)
|
|
{
|
|
WriteBool(wxT("IgnoreVersion"), newval);
|
|
}
|
|
|
|
int GetRefreshOnClick() const
|
|
{
|
|
int i;
|
|
Read(wxT("RefreshOnClick"), &i, 0);
|
|
return i;
|
|
}
|
|
void SetRefreshOnClick(const int newval)
|
|
{
|
|
WriteInt(wxT("RefreshOnClick"), newval);
|
|
}
|
|
|
|
bool GetShowNotices() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ShowNotices"), &b, false);
|
|
return b;
|
|
}
|
|
void SetShowNotices(const bool newval)
|
|
{
|
|
WriteBool(wxT("ShowNotices"), newval);
|
|
}
|
|
bool GetASUTPstyle() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ASUTPstyle"), &b, false);
|
|
return b;
|
|
}
|
|
void SetASUTPstyle(const bool newval)
|
|
{
|
|
WriteBool(wxT("ASUTPstyle"), newval);
|
|
}
|
|
bool GetHideQueryHistory() const
|
|
{
|
|
bool b;
|
|
Read(wxT("HideQueryHistory"), &b, false);
|
|
return b;
|
|
}
|
|
void SetHideQueryHistory(const bool newval)
|
|
{
|
|
WriteBool(wxT("HideQueryHistory"), newval);
|
|
}
|
|
|
|
bool GetUseHintWords() const
|
|
{
|
|
bool b;
|
|
Read(wxT("UseHintWords"), &b, false);
|
|
return b;
|
|
}
|
|
void SetUseHintWords(const bool newval)
|
|
{
|
|
WriteBool(wxT("UseHintWords"), newval);
|
|
}
|
|
bool GetReplaceVars() const
|
|
{
|
|
bool b;
|
|
Read(wxT("ReplaceVars"), &b, false);
|
|
return b;
|
|
}
|
|
void SetReplaceVars(const bool newval)
|
|
{
|
|
WriteBool(wxT("ReplaceVars"), newval);
|
|
}
|
|
bool GetAutosaveQuery() const
|
|
{
|
|
bool b;
|
|
Read(wxT("AutosaveQuery"), &b, true);
|
|
return b;
|
|
}
|
|
void SetAutosaveQuery(const bool newval)
|
|
{
|
|
WriteBool(wxT("AutosaveQuery"), newval);
|
|
}
|
|
bool GetJumpRoot() const
|
|
{
|
|
bool b;
|
|
Read(wxT("JumpRoot"), &b, true);
|
|
return b;
|
|
}
|
|
void SetJumpRoot(const bool newval)
|
|
{
|
|
WriteBool(wxT("JumpRoot"), newval);
|
|
}
|
|
bool GetNumberPretty() const
|
|
{
|
|
bool b;
|
|
Read(wxT("NumberPretty"), &b, false);
|
|
return b;
|
|
}
|
|
void SetNumberPretty(const bool newval)
|
|
{
|
|
WriteBool(wxT("NumberPretty"), newval);
|
|
}
|
|
bool GetVisibleDbNameTree() const
|
|
{
|
|
bool b;
|
|
Read(wxT("VisibleDbNameTree"), &b, true);
|
|
return b;
|
|
}
|
|
void SetVisibleDbNameTree(const bool newval)
|
|
{
|
|
WriteBool(wxT("VisibleDbNameTree"), newval);
|
|
}
|
|
|
|
|
|
wxString GetOptionsLastTreeItem() const
|
|
{
|
|
wxString s;
|
|
Read(wxT("OptionsLastTreeItem"), &s, wxEmptyString);
|
|
return s;
|
|
}
|
|
void SetOptionsLastTreeItem(const wxString &newval)
|
|
{
|
|
Write(wxT("OptionsLastTreeItem"), newval);
|
|
}
|
|
|
|
|
|
// Functions for storing settings
|
|
bool Write(const wxString &key, const wxString &value)
|
|
{
|
|
return wxConfig::Write(key, value);
|
|
}
|
|
bool WriteLong(const wxString &key, long value)
|
|
{
|
|
return wxConfig::Write(key, value);
|
|
}
|
|
bool WriteInt(const wxString &key, int value)
|
|
{
|
|
return wxConfig::Write(key, value);
|
|
}
|
|
bool WriteBool(const wxString &key, bool value);
|
|
bool WritePoint(const wxString &key, const wxPoint &value);
|
|
bool WriteSize(const wxString &key, const wxSize &value);
|
|
bool WriteJsonObect(const wxString& key, wxJSONValue& value);
|
|
bool WriteJsonFile();
|
|
bool ReloadJsonFileIfNeed();
|
|
bool ReadJsonObect(const wxString& key, wxJSONValue& value, wxJSONValue& defvalue);
|
|
bool WriteSizePoint(const wxString &key, const wxSize &size, const wxPoint &point)
|
|
{
|
|
WritePoint(key, point);
|
|
WriteSize(key, size);
|
|
return true;
|
|
}
|
|
|
|
// Functions for reading settings
|
|
bool Read(const wxString &key, wxString *str, const wxString &defaultVal) const;
|
|
bool Read(const wxString &key, bool *str, bool defaultVal) const;
|
|
bool Read(const wxString &key, int *i, int defaultVal) const;
|
|
bool Read(const wxString &key, long *l, long defaultVal) const;
|
|
wxString Read(const wxString &key, const wxString &defaultVal) const;
|
|
long Read(const wxString &key, long defaultVal) const;
|
|
wxPoint Read(const wxString &key, const wxPoint &defaultVal) const;
|
|
wxSize Read(const wxString &key, const wxSize &defaultVal) const;
|
|
|
|
enum configFileName
|
|
{
|
|
PGPASS
|
|
};
|
|
static wxString GetConfigFile(configFileName cfgname);
|
|
|
|
private:
|
|
static const wxString &getDefaultElementColor(int index)
|
|
{
|
|
static const wxString colors[] =
|
|
{
|
|
wxT("#808080"), wxT("#007f00"), wxT("#007f00"), wxT("#7f7f7f"),
|
|
wxT("#007f7f"), wxT("#00007f"), wxT("#7f007f"), wxT("#7f007f"),
|
|
wxT("#007f7f"), wxT("#7f7f7f"), wxT("#000000"), wxT("#000000")
|
|
};
|
|
return colors[index];
|
|
}
|
|
|
|
bool moveStringValue(const wxChar *oldKey, const wxChar *newKey, int index = -1);
|
|
bool moveLongValue(const wxChar *oldKey, const wxChar *newKey, int index = -1);
|
|
|
|
wxFileConfig *defaultSettings;
|
|
wxString appName;
|
|
wxJSONValue jsoncfg;
|
|
bool jsonchange = false;
|
|
wxDateTime jsonfilemod;
|
|
};
|
|
|
|
#endif
|