void dlgSelectConnection::OnChangeServer(wxCommandEvent& ev) { if (!GetServer()) return; cbDatabase->Clear(); int sel=cbServer->GetCurrentSelection(); if (sel >= 0) { remoteServer = (pgServer*)cbServer->GetClientData(sel); if (!remoteServer->GetConnected()) { remoteServer->Connect(mainForm, remoteServer->GetStorePwd()); if (!remoteServer->GetConnected()) { wxLogError(wxT("%s"), remoteServer->GetLastError().c_str()); return; } } if (remoteServer->GetConnected()) { pgSetIterator set1(remoteServer->GetConnection(), wxT("SELECT DISTINCT datname\n") wxT(" FROM pg_database db\n") wxT(" WHERE datallowconn ORDER BY datname")); while(set1.RowsLeft()) cbDatabase->Append(set1.GetVal(wxT("datname"))); if (cbDatabase->GetCount()) cbDatabase->SetSelection(0); pgSetIterator set2(remoteServer->GetConnection(), wxT("SELECT DISTINCT usename\n") wxT("FROM pg_user db\n") wxT("ORDER BY usename")); while(set2.RowsLeft()) cbUsername->Append(set2.GetVal(wxT("usename"))); if (cbUsername->GetCount()) cbUsername->SetSelection(0); } } OnChangeDatabase(ev); }
void dlgRepClusterBase::OnChangeServer(wxCommandEvent &ev) { cbDatabase->Clear(); if (remoteConn) { delete remoteConn; remoteConn = 0; } int sel = cbServer->GetCurrentSelection(); if (sel >= 0) { remoteServer = (pgServer *)cbServer->wxItemContainer::GetClientData(sel); if (!remoteServer->GetConnected()) { remoteServer->Connect(mainForm, remoteServer->GetStorePwd()); if (!remoteServer->GetConnected()) { wxLogError(remoteServer->GetLastError()); return; } } if (remoteServer->GetConnected()) { pgSet *set = remoteServer->ExecuteSet( wxT("SELECT DISTINCT datname\n") wxT(" FROM pg_database db\n") wxT(" WHERE datallowconn ORDER BY datname")); if (set) { while (!set->Eof()) { cbDatabase->Append(set->GetVal(wxT("datname"))); set->MoveNext(); } delete set; if (cbDatabase->GetCount()) cbDatabase->SetSelection(0); } } } OnChangeDatabase(ev); }
void dlgSelectConnection::OnChangeServer(wxCommandEvent &ev) { int item; wxString olddatabase, oldusername; if (!GetServer()) return; // Keep old value for these comboboxes so that we can restore them if needed olddatabase = cbDatabase->GetValue(); oldusername = cbUsername->GetValue(); // Clear the comboboxes cbDatabase->Clear(); cbUsername->Clear(); cbRolename->Clear(); int sel = cbServer->GetCurrentSelection(); if (sel >= 0) { remoteServer = (pgServer *)cbServer->wxItemContainer::GetClientData(sel); if (!remoteServer->GetConnected()) { remoteServer->Connect(mainForm, remoteServer->GetStorePwd()); if (!remoteServer->GetConnected()) { wxLogError(wxT("%s"), remoteServer->GetLastError().c_str()); return; } } if (remoteServer->GetConnected()) { pgSetIterator set1(remoteServer->GetConnection(), wxT("SELECT DISTINCT datname\n") wxT(" FROM pg_database db\n") wxT(" WHERE datallowconn ORDER BY datname")); item = 0; while(set1.RowsLeft()) { cbDatabase->Append(set1.GetVal(wxT("datname"))); if (set1.GetVal(wxT("datname")) == olddatabase) item = cbDatabase->GetCount() - 1; } if (cbDatabase->GetCount()) cbDatabase->SetSelection(item); pgSetIterator set2(remoteServer->GetConnection(), wxT("SELECT DISTINCT usename\n") wxT("FROM pg_user db\n") wxT("ORDER BY usename")); item = 0; while(set2.RowsLeft()) { cbUsername->Append(set2.GetVal(wxT("usename"))); if (set2.GetVal(wxT("usename")) == oldusername) item = cbDatabase->GetCount() - 1; } if (cbUsername->GetCount()) cbUsername->SetSelection(item); if (remoteServer->GetConnection()->BackendMinimumVersion(8, 1)) { pgSetIterator set3(remoteServer->GetConnection(), wxT("SELECT DISTINCT rolname\n") wxT("FROM pg_roles db\n") wxT("ORDER BY rolname")); cbRolename->Append(wxEmptyString); while(set3.RowsLeft()) cbRolename->Append(set3.GetVal(wxT("rolname"))); cbRolename->Enable(true); } else cbRolename->Disable(); cbRolename->SetValue(wxEmptyString); } } OnChangeDatabase(ev); }