frmMaintenance::frmMaintenance(frmMain *form, pgObject *obj) : ExecutionDialog(form, obj) { wxWindowBase::SetFont(settings->GetSystemFont()); LoadResource(form, wxT("frmMaintenance")); RestorePosition(); SetTitle(object->GetTranslatedMessage(MAINTENANCEDIALOGTITLE)); txtMessages = CTRL_TEXT("txtMessages"); // Icon SetIcon(*vacuum_png_ico); // Note that under GTK+, SetMaxLength() function may only be used with single line text controls. // (see http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html#wxtextctrlsetmaxlength) #ifndef __WXGTK__ txtMessages->SetMaxLength(0L); #endif if (object->GetMetaType() == PGM_INDEX || object->GetMetaType() == PGM_PRIMARYKEY || object->GetMetaType() == PGM_UNIQUE) { rbxAction->SetSelection(2); rbxAction->Enable(0, false); rbxAction->Enable(1, false); } wxCommandEvent ev; OnAction(ev); }
dlgStep::dlgStep(pgaFactory *f, frmMain *frame, pgaStep *node, pgaJob *j) : dlgAgentProperty(f, frame, wxT("dlgStep")) { step = node; job = j; if (job) jobId = job->GetRecId(); else jobId = 0; sqlBox = new ctlSQLBox(pnlDefinition, CTL_SQLBOX, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxSUNKEN_BORDER | wxTE_RICH2); wxWindow *placeholder = CTRL_TEXT("txtSqlBox"); wxSizer *sizer = placeholder->GetContainingSizer(); sizer->Add(sqlBox, 1, wxRIGHT | wxGROW, 5); sizer->Detach(placeholder); delete placeholder; sizer->Layout(); txtID->Disable(); }
frmMaintenance::frmMaintenance(frmMain *form, pgObject *obj) : ExecutionDialog(form, obj) { wxWindowBase::SetFont(settings->GetSystemFont()); LoadResource(form, wxT("frmMaintenance")); RestorePosition(); SetTitle(object->GetTranslatedMessage(MAINTENANCEDIALOGTITLE)); txtMessages = CTRL_TEXT("txtMessages"); // Icon SetIcon(*vacuum_png_ico); txtMessages->SetMaxLength(0L); if (object->GetMetaType() == PGM_INDEX || object->GetMetaType() == PGM_PRIMARYKEY || object->GetMetaType() == PGM_UNIQUE) { rbxAction->SetSelection(2); rbxAction->Enable(0, false); rbxAction->Enable(1, false); } wxCommandEvent ev; OnAction(ev); }
frmRestore::frmRestore(frmMain *_form, pgObject *obj) : ExternProcessDialog(form) { object=obj; if (object->GetMetaType() == PGM_SERVER) server = (pgServer*)object; else server=object->GetDatabase()->GetServer(); form=_form; wxWindowBase::SetFont(settings->GetSystemFont()); LoadResource(_form, wxT("frmRestore")); RestorePosition(); SetTitle(wxString::Format(_("Restore %s %s"), object->GetTranslatedTypeName().c_str(), object->GetQuotedFullIdentifier().c_str())); if (object->GetConnection()->EdbMinimumVersion(8,0)) restoreExecutable=edbRestoreExecutable; else if (object->GetConnection()->GetIsGreenplum()) restoreExecutable=gpRestoreExecutable; else restoreExecutable=pgRestoreExecutable; if (object->GetMetaType() != PGM_DATABASE) { chkOnlySchema->SetValue(object->GetMetaType() == PGM_FUNCTION || object->GetMetaType() == PGM_INDEX || object->GetMetaType() == PGM_TRIGGER); chkOnlyData->SetValue(object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION); if (object->GetMetaType() != PGM_SCHEMA) { chkOnlyData->Disable(); chkOnlySchema->Disable(); } if (object->GetMetaType() == PGM_FUNCTION) { chkClean->SetValue(true); chkClean->Disable(); } btnView->Disable(); } wxString val; settings->Read(wxT("frmRestore/LastFile"), &val, wxEmptyString); txtFilename->SetValue(val); // Icon SetIcon(wxIcon(restore_xpm)); txtMessages = CTRL_TEXT("txtMessages"); txtMessages->SetMaxLength(0L); btnOK->Disable(); filenameValid=false; if (!server->GetPasswordIsStored()) environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + server->GetConnection()->GetSslModeName()); if (!pgAppMinimumVersion(restoreExecutable, 8, 4)) { chkNoTablespaces->Disable(); chkSingleXact->Disable(); txtNumberOfJobs->Disable(); } if (!pgAppMinimumVersion(restoreExecutable, 8, 2)) { chkNoDataForFailedTables->Disable(); } if (!pgAppMinimumVersion(restoreExecutable, 8, 0)) { chkExitOnError->Disable(); } wxCommandEvent ev; OnChangeName(ev); }
frmBackup::frmBackup(frmMain *form, pgObject *obj) : ExternProcessDialog(form) { object = obj; SetFont(settings->GetSystemFont()); LoadResource(form, wxT("frmBackup")); RestorePosition(); SetTitle(object->GetTranslatedMessage(BACKUPTITLE)); if (object->GetConnection()->EdbMinimumVersion(8, 0)) backupExecutable = edbBackupExecutable; else if (object->GetConnection()->GetIsGreenplum()) backupExecutable = gpBackupExecutable; else backupExecutable = pgBackupExecutable; canBlob = (obj->GetMetaType() == PGM_DATABASE); chkBlobs->SetValue(canBlob); chkDisableDollar->Enable(obj->GetConnection()->BackendMinimumVersion(7, 5)); wxString val; settings->Read(wxT("frmBackup/LastFile"), &val, wxEmptyString); txtFilename->SetValue(val); pgServer *server = object->GetServer(); if (!server->GetPasswordIsStored()) environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + server->GetConnection()->GetSslModeName()); if (server->GetSSLRootCert() != wxEmptyString) environment.Add(wxT("PGSSLROOTCERT=") + server->GetSSLRootCert()); if (server->GetSSLCert() != wxEmptyString) environment.Add(wxT("PGSSLCERT=") + server->GetSSLCert()); if (server->GetSSLKey() != wxEmptyString) environment.Add(wxT("PGSSLKEY=") + server->GetSSLKey()); if (server->GetSSLCrl() != wxEmptyString) environment.Add(wxT("PGSSLCRL=") + server->GetSSLCrl()); // Icon SetIcon(*backup_png_ico); // fix translation problem wxString dollarLabel = wxGetTranslation(_("$$ quoting")); dollarLabel.Replace(wxT("$$"), wxT("$")); chkDisableDollar->SetLabel(dollarLabel); chkDisableDollar->SetSize(chkDisableDollar->GetBestSize()); txtMessages = CTRL_TEXT("txtMessages"); // Note that under GTK+, SetMaxLength() function may only be used with single line text controls. // (see http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html#wxtextctrlsetmaxlength) #ifndef __WXGTK__ txtMessages->SetMaxLength(0L); #endif btnOK->Disable(); long encNo = 0; wxString encStr; cbEncoding->Append(wxT("")); do { encStr = object->GetConnection()->ExecuteScalar( wxT("SELECT pg_encoding_to_char(") + NumToStr(encNo) + wxT(")")); if (pgConn::IsValidServerEncoding(encNo) && !encStr.IsEmpty()) cbEncoding->Append(encStr); encNo++; } while (!encStr.IsEmpty()); cbEncoding->SetSelection(0); wxString i18ndb = _("Database"); wxTreeItemId db = ctvObjects->AddRoot(i18ndb + wxT(" ") + object->GetDatabase()->GetName(), 1); bool checked; wxString query = wxT("SELECT nspname, relname ") wxT("FROM pg_namespace n ") wxT("LEFT JOIN pg_class c ON n.oid=c.relnamespace AND relkind='r' ") wxT("WHERE nspname NOT LIKE E'pg\\\\_%' AND nspname <> 'information_schema' "); if (!object->GetDatabase()->GetSchemaRestriction().IsEmpty()) query += wxT("AND nspname IN (") + object->GetDatabase()->GetSchemaRestriction() + wxT(")"); query += wxT("ORDER BY nspname, relname"); pgSet *objects = object->GetDatabase()->ExecuteSet(query); if (objects) { wxString currentSchema = wxT(""); wxTreeItemId currentSchemaNode; while (!objects->Eof()) { if (currentSchema != objects->GetVal(wxT("nspname"))) { currentSchema = objects->GetVal(wxT("nspname")); if (object->GetMetaType() == PGM_SCHEMA) { checked = ((pgSchema *)object)->GetIdentifier() == currentSchema; } else { if (object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION) { checked = ((pgTable *)object)->GetSchema()->GetIdentifier() == currentSchema || (object->GetMetaType() != PGM_TABLE && object->GetMetaType() != GP_PARTITION); } else { checked = object->GetMetaType() != PGM_TABLE && object->GetMetaType() != GP_PARTITION; } } currentSchemaNode = ctvObjects->AppendItem(db, currentSchema, checked ? 1 : 0); } if (!objects->GetVal(wxT("relname")).IsNull()) { if (object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION) { checked = ((pgTable *)object)->GetSchema()->GetIdentifier() == currentSchema && ((pgTable *)object)->GetIdentifier() == objects->GetVal(wxT("relname")); } else { if (object->GetMetaType() == PGM_SCHEMA) { checked = ((pgSchema *)object)->GetIdentifier() == currentSchema; } else { if (object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION) { checked = ((pgTable *)object)->GetSchema()->GetIdentifier() == currentSchema || (object->GetMetaType() != PGM_TABLE && object->GetMetaType() != GP_PARTITION); } else { checked = object->GetMetaType() != PGM_TABLE && object->GetMetaType() != GP_PARTITION; } } } ctvObjects->AppendItem(currentSchemaNode, objects->GetVal(wxT("relname")), checked ? 1 : 0); } objects->MoveNext(); } ctvObjects->ExpandAll(); delete objects; } if (!pgAppMinimumVersion(backupExecutable, 9, 3)) { txtNumberOfJobs->Disable(); } if (!pgAppMinimumVersion(backupExecutable, 9, 2)) { chkSectionPreData->Disable(); chkSectionData->Disable(); chkSectionPostData->Disable(); } if (!pgAppMinimumVersion(backupExecutable, 9, 1)) { chkForceQuoteForIdent->Disable(); chkNoUnloggedTableData->Disable(); } if (!pgAppMinimumVersion(backupExecutable, 8, 4)) { chkNoTablespaces->Disable(); cbRolename->Disable(); } else { // Available rolenames if (object->GetServer()->GetConnection()->BackendMinimumVersion(8, 1)) { pgSetIterator set(object->GetServer()->GetConnection(), wxT("SELECT DISTINCT rolname\n") wxT("FROM pg_roles db\n") wxT("ORDER BY rolname")); cbRolename->Append(wxEmptyString); while(set.RowsLeft()) cbRolename->Append(set.GetVal(wxT("rolname"))); cbRolename->SetValue(object->GetServer()->GetRolename()); cbRolename->Enable(true); } else cbRolename->Disable(); } if (!pgAppMinimumVersion(backupExecutable, 8, 1)) { cbEncoding->Disable(); } cbFormat->Append(_("Custom")); cbFormat->Append(_("Tar")); cbFormat->Append(_("Plain")); cbFormat->SetSelection(0); if (pgAppMinimumVersion(backupExecutable, 9, 1)) cbFormat->Append(_("Directory")); wxCommandEvent ev; OnChangePlain(ev); }
frmBackupGlobals::frmBackupGlobals(frmMain *form, pgObject *obj) : ExternProcessDialog(form) { object = obj; wxWindowBase::SetFont(settings->GetSystemFont()); LoadResource(form, wxT("frmBackupGlobals")); RestorePosition(); SetTitle(object->GetTranslatedMessage(BACKUPGLOBALS)); if (object->GetConnection()->EdbMinimumVersion(8, 0)) backupExecutable = edbBackupAllExecutable; else if (object->GetConnection()->GetIsGreenplum()) backupExecutable = gpBackupAllExecutable; else backupExecutable = pgBackupAllExecutable; wxString val; settings->Read(wxT("frmBackupGlobals/LastFile"), &val, wxEmptyString); txtFilename->SetValue(val); pgServer *server; if (object->GetMetaType() == PGM_SERVER) server = (pgServer *)object; else server = object->GetDatabase()->GetServer(); bool roles_supported = pgAppMinimumVersion(backupExecutable, 8, 4) && server->GetConnection()->BackendMinimumVersion(8, 1); cbRolename->Enable(roles_supported); if (roles_supported) { // Collect the available rolenames pgSetIterator set(server->GetConnection(), wxT("SELECT DISTINCT rolname\n") wxT("FROM pg_roles db\n") wxT("ORDER BY rolname")); cbRolename->Append(wxEmptyString); while(set.RowsLeft()) cbRolename->Append(set.GetVal(wxT("rolname"))); cbRolename->SetValue(server->GetRolename()); } if (!server->GetPasswordIsStored()) environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + server->GetConnection()->GetSslModeName()); // Icon SetIcon(*backup_png_ico); txtMessages = CTRL_TEXT("txtMessages"); // Note that under GTK+, SetMaxLength() function may only be used with single line text controls. // (see http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html#wxtextctrlsetmaxlength) #ifndef __WXGTK__ txtMessages->SetMaxLength(0L); #endif btnOK->Disable(); if (!pgAppMinimumVersion(backupExecutable, 9, 1)) { chkForceQuoteForIdent->Disable(); } wxCommandEvent ev; OnChange(ev); }
frmBackupServer::frmBackupServer(frmMain *form, pgObject *obj) : ExternProcessDialog(form) { object = obj; wxWindowBase::SetFont(settings->GetSystemFont()); LoadResource(form, wxT("frmBackupServer")); RestorePosition(); SetTitle(object->GetTranslatedMessage(BACKUPSERVERTITLE)); pgServer *server = (pgServer *)object; if (server->GetConnection()->EdbMinimumVersion(8, 0)) backupExecutable = edbBackupAllExecutable; else if (server->GetConnection()->GetIsGreenplum()) backupExecutable = gpBackupAllExecutable; else backupExecutable = pgBackupAllExecutable; wxString val; settings->Read(wxT("frmBackupServer/LastFile"), &val, wxEmptyString); txtFilename->SetValue(val); bool roles_supported = pgAppMinimumVersion(backupExecutable, 8, 4) && server->GetConnection()->BackendMinimumVersion(8, 1); cbRolename->Enable(roles_supported); if (roles_supported) { // Collect the available rolenames pgSetIterator set(server->GetConnection(), wxT("SELECT DISTINCT rolname\n") wxT("FROM pg_roles db\n") wxT("ORDER BY rolname")); cbRolename->Append(wxEmptyString); while(set.RowsLeft()) cbRolename->Append(set.GetVal(wxT("rolname"))); cbRolename->SetValue(server->GetRolename()); } if (!server->GetPasswordIsStored()) environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + server->GetConnection()->GetSslModeName()); // Icon SetIcon(*backup_png_ico); txtMessages = CTRL_TEXT("txtMessages"); txtMessages->SetMaxLength(0L); btnOK->Disable(); if (!pgAppMinimumVersion(backupExecutable, 9, 1)) { chkForceQuoteForIdent->Disable(); } wxCommandEvent ev; OnChange(ev); }
frmBackup::frmBackup(frmMain *form, pgObject *obj) : ExternProcessDialog(form) { object=obj; wxWindowBase::SetFont(settings->GetSystemFont()); LoadResource(form, wxT("frmBackup")); RestorePosition(); SetTitle(wxString::Format(_("Backup %s %s"), object->GetTranslatedTypeName().c_str(), object->GetFullIdentifier().c_str())); if (object->GetConnection()->EdbMinimumVersion(8,0)) backupExecutable=edbBackupExecutable; else if (object->GetConnection()->GetIsGreenplum()) backupExecutable=gpBackupExecutable; else backupExecutable=pgBackupExecutable; canBlob = (obj->GetMetaType() == PGM_DATABASE); chkBlobs->SetValue(canBlob); chkDisableDollar->Enable(obj->GetConnection()->BackendMinimumVersion(7, 5)); wxString val; settings->Read(wxT("frmBackup/LastFile"), &val, wxEmptyString); txtFilename->SetValue(val); if (!object->GetDatabase()->GetServer()->GetPasswordIsStored()) environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + object->GetServer()->GetConnection()->GetSslModeName()); // Icon SetIcon(wxIcon(backup_xpm)); // fix translation problem wxString dollarLabel=wxGetTranslation(_("$$ quoting")); dollarLabel.Replace(wxT("$$"), wxT("$")); chkDisableDollar->SetLabel(dollarLabel); chkDisableDollar->SetSize(chkDisableDollar->GetBestSize()); txtMessages = CTRL_TEXT("txtMessages"); txtMessages->SetMaxLength(0L); btnOK->Disable(); long encNo=0; wxString encStr; cbEncoding->Append(wxT("")); do { encStr=object->GetConnection()->ExecuteScalar( wxT("SELECT pg_encoding_to_char(") + NumToStr(encNo) + wxT(")")); if (pgConn::IsValidServerEncoding(encNo) && !encStr.IsEmpty()) cbEncoding->Append(encStr); encNo++; } while (!encStr.IsEmpty()); cbEncoding->SetSelection(0); wxString i18ndb = _("Database"); wxTreeItemId db = ctvObjects->AddRoot(i18ndb + wxT(" ") + object->GetDatabase()->GetName(), 1); bool checked; wxString query = wxT("SELECT nspname, relname ") wxT("FROM pg_namespace n ") wxT("LEFT JOIN pg_class c ON n.oid=c.relnamespace AND relkind='r' ") wxT("WHERE nspname NOT LIKE 'pg_%' AND nspname <> 'information_schema' "); if (!object->GetDatabase()->GetSchemaRestriction().IsEmpty()) query += wxT("AND nspname IN (") + object->GetDatabase()->GetSchemaRestriction() + wxT(")"); query += wxT("ORDER BY nspname, relname"); pgSet *objects = object->GetDatabase()->ExecuteSet(query); if (objects) { wxString currentSchema = wxT(""); wxTreeItemId currentSchemaNode; while (!objects->Eof()) { if (currentSchema != objects->GetVal(wxT("nspname"))) { currentSchema = objects->GetVal(wxT("nspname")); if (object->GetMetaType() == PGM_SCHEMA) { checked = ((pgSchema*)object)->GetIdentifier() == currentSchema; } else { checked = true; } currentSchemaNode = ctvObjects->AppendItem(db, currentSchema, checked? 1:0); } if (!objects->GetVal(wxT("relname")).IsNull()) { if (object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION) { checked = ((pgTable*)object)->GetSchema()->GetIdentifier() == currentSchema && ((pgTable*)object)->GetIdentifier() == objects->GetVal(wxT("relname")); } else { if (object->GetMetaType() == PGM_SCHEMA) { checked = ((pgSchema*)object)->GetIdentifier() == currentSchema; } else { checked = true; } } ctvObjects->AppendItem(currentSchemaNode, objects->GetVal(wxT("relname")), checked? 1:0); } objects->MoveNext(); } ctvObjects->ExpandAll(); delete objects; } if (!pgAppMinimumVersion(backupExecutable, 8, 4)) { chkNoTablespaces->Disable(); } if (!pgAppMinimumVersion(backupExecutable, 8, 1)) { cbEncoding->Disable(); } wxCommandEvent ev; OnChangePlain(ev); }