pgadmin3/include/utils/sysSettings.h
lsv c981b6b84f New control ctlTreeJSON
Добавлен новый элемент для редактирования JSON файла pgadmin3opt.json
Этот файл используется для хранения настроек навигационной панели лог файла(ctlNavigatePanel),
хранения конфигураций диалога трансформации текста(dlgTransformText), настройки событий ожиданий(WaitSample).
2024-09-24 11:16:39 +05:00

947 lines
20 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);
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);
}
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);
}
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 GetSQLBoxUseSystemForeground() const
{
bool b;
Read(wxT("ctlSQLBox/UseSystemForeground"), &b, true);
return b;
}
void SetSQLBoxUseSystemForeground(const bool newval)
{
WriteBool(wxT("ctlSQLBox/UseSystemForeground"), 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 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