pgadmin3/dlg/dlgMainConfig.cpp
2024-02-06 08:34:42 +05:00

183 lines
4.2 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// dlgMainConfig.cpp - Configure setting
//
//////////////////////////////////////////////////////////////////////////
// App headers
#include "pgAdmin3.h"
#include "dlg/dlgMainConfig.h"
// Icons
#include "images/property.pngc"
BEGIN_EVENT_TABLE(dlgMainConfig, DialogWithHelp)
EVT_BUTTON (wxID_OK, dlgMainConfig::OnOK)
EVT_BUTTON (wxID_CANCEL, dlgMainConfig::OnCancel)
EVT_TEXT(XRCID("txtValue"), dlgMainConfig::OnChange)
EVT_TEXT(XRCID("cbValue"), dlgMainConfig::OnChange)
EVT_CHECKBOX(XRCID("chkValue"), dlgMainConfig::OnChange)
END_EVENT_TABLE()
#define chkEnabled CTRL_CHECKBOX("chkEnabled")
#define cbValue CTRL_COMBOBOX("cbValue")
#define txtValue CTRL_TEXT("txtValue")
#define chkValue CTRL_CHECKBOX("chkValue")
#define txtComment CTRL_TEXT("txtComment")
#define stName CTRL_STATIC("stName")
#define stDescription CTRL_STATIC("stDescription")
static const wxChar *contextStrings[] =
{
__("Internal - not externally settable"),
__("Postmaster - set on server start"),
__("SIGHUP - reloaded on SIGHUP signal"),
__("Backend - overridable in individual backend"),
__("Suset - may be overridden by superuser"),
__("Userlimit - may be set by user"),
__("Userset - may be set by user"),
__("Unknown")
};
static const wxChar *sourceStrings[] =
{
__("Variable has still its initial default value"),
__("Set via environment variable"),
__("Set in configuration file"),
__("Set on command line"),
__("Set by unprivileged command"),
__("Set in database variables"),
__("Set in user variables"),
__("Set in client parameters"),
__("set by Override"),
__("Set interactively"),
__("Set by test"),
__("Set by session parameters")
};
dlgMainConfig::dlgMainConfig(pgFrame *parent, pgSettingItem *_item) :
DialogWithHelp((frmMain *)parent)
{
SetFont(settings->GetSystemFont());
LoadResource((wxWindow *)parent, wxT("dlgMainConfig"));
// Icon
SetIcon(*property_png_ico);
RestorePosition();
item = _item;
SetTitle(wxString::Format(_("Configuration setting \"%s\""), item->name.c_str()));
// Setup the default values
cbValue->Hide();
chkValue->Hide();
if (!item->newLine)
{
if (item->orgLine)
item->newLine = new pgConfigLine(item->orgLine);
else
{
item->newLine = new pgConfigLine();
item->newLine->item = item;
}
}
chkEnabled->SetValue(!item->newLine->isComment);
txtValue->SetValue(item->newLine->value);
txtComment->SetValue(item->newLine->comment);
wxFont fntLabel = stName->GetFont();
fntLabel.SetWeight(wxFONTWEIGHT_BOLD);
stName->SetFont(fntLabel);
stName->SetLabel(item->name);
wxString str;
str += _("Category") + wxString(wxT(": ")) + item->category + END_OF_LINE;
str += _("Context") + wxString(wxT(": "));
str += wxGetTranslation(contextStrings[item->context]);
str += END_OF_LINE;
if (item->source != pgSettingItem::PGC_UNKNOWNSOURCE)
{
str += _("Current value") + wxString(wxT(": "));
if (item->value == wxT("unset") && item->source == pgSettingItem::PGC_DEFAULT)
str += _("unset");
else
str += item->value + END_OF_LINE wxT(" ") + wxGetTranslation(sourceStrings[item->source]);
str += END_OF_LINE;
}
stDescription->SetLabel(str + END_OF_LINE + item->short_desc + END_OF_LINE + item->extra_desc);
btnOK->Enable();
}
dlgMainConfig::~dlgMainConfig()
{
SavePosition();
}
wxString dlgMainConfig::GetValue()
{
return txtValue->GetValue();
}
wxString dlgMainConfig::GetHelpPage() const
{
return wxT("pg/runtime-config");
}
void dlgMainConfig::OnChange(wxCommandEvent &ev)
{
}
void dlgMainConfig::OnOK(wxCommandEvent &ev)
{
#ifdef __WXGTK__
if (!btnOK->IsEnabled())
return;
#endif
item->newLine->value = GetValue();
item->newLine->comment = txtComment->GetValue();
item->newLine->isComment = !chkEnabled->GetValue();
EndModal(wxID_OK);
}
void dlgMainConfig::OnCancel(wxCommandEvent &ev)
{
EndModal(wxID_CANCEL);
}
int dlgMainConfig::Go()
{
// Set focus on the Password textbox and show modal
return ShowModal();
}