Author: andreas
Date: 2005-09-18 22:23:34 +0100 (Sun, 18 Sep 2005)
New Revision: 4455
Modified:
trunk/pgadmin3/src/dlg/dlgSelectConnection.cpp
trunk/pgadmin3/src/frm/frmQuery.cpp
trunk/pgadmin3/src/include/dlgSelectConnection.h
Log:
The very last fixes
Modified: trunk/pgadmin3/src/dlg/dlgSelectConnection.cpp
===================================================================
--- trunk/pgadmin3/src/dlg/dlgSelectConnection.cpp 2005-09-18 20:52:46 UTC (rev 4454)
+++ trunk/pgadmin3/src/dlg/dlgSelectConnection.cpp 2005-09-18 21:23:34 UTC (rev 4455)
@@ -78,21 +78,36 @@
}
if (remoteServer->GetConnected())
{
- pgSet *set=remoteServer->ExecuteSet(
+ pgSetIterator set(remoteServer->GetConnection(),
wxT("SELECT DISTINCT datname\n")
wxT(" FROM pg_database db\n")
wxT(" WHERE datallowconn ORDER BY datname"));
- if (set)
+
+ while(set.RowsLeft())
{
- while (!set->Eof())
+ wxString dbName=set.GetVal(wxT("datname"));
+
+ bool alreadyConnected=false;
+
+ if (cbConnection)
{
- cbDatabase->Append(set->GetVal(wxT("datname")));
- set->MoveNext();
+ int i;
+
+ for (i=0 ; i < cbConnection->GetCount()-1 ; i++)
+ {
+ pgConn *conn=(pgConn*)cbConnection->GetClientData(i);
+ if (conn->GetHost() == remoteServer->GetName() && conn->GetDbname() == dbName)
+ {
+ alreadyConnected=true;
+ break;
+ }
+ }
}
- delete set;
-
+ if (!alreadyConnected)
+ cbDatabase->Append(dbName);
+ }
+ if (cbDatabase->GetCount())
cbDatabase->SetSelection(0);
- }
}
}
@@ -124,8 +139,9 @@
}
-int dlgSelectConnection::Go(pgConn *conn)
+int dlgSelectConnection::Go(pgConn *conn, wxComboBox *cb)
{
+ cbConnection=cb;
treeObjectIterator servers(mainForm->GetBrowser(), mainForm->GetServerCollection());
pgServer *s;
Modified: trunk/pgadmin3/src/frm/frmQuery.cpp
===================================================================
--- trunk/pgadmin3/src/frm/frmQuery.cpp 2005-09-18 20:52:46 UTC (rev 4454)
+++ trunk/pgadmin3/src/frm/frmQuery.cpp 2005-09-18 21:23:34 UTC (rev 4455)
@@ -390,7 +390,7 @@
{
// new Connection
dlgSelectConnection dlg(this, mainForm);
- int rc=dlg.Go(conn);
+ int rc=dlg.Go(conn, cbConnection);
if (rc == wxID_OK)
{
conn = dlg.GetServer()->CreateConn(dlg.GetDatabase());
Modified: trunk/pgadmin3/src/include/dlgSelectConnection.h
===================================================================
--- trunk/pgadmin3/src/include/dlgSelectConnection.h 2005-09-18 20:52:46 UTC (rev 4454)
+++ trunk/pgadmin3/src/include/dlgSelectConnection.h 2005-09-18 21:23:34 UTC (rev 4455)
@@ -25,7 +25,7 @@
pgServer *GetServer() { return remoteServer; }
wxString GetDatabase();
- int Go(pgConn *conn);
+ int Go(pgConn *conn, wxComboBox *cb);
private:
void OnChangeServer(wxCommandEvent& ev);
@@ -34,6 +34,7 @@
void OnCancel(wxCommandEvent& ev);
pgServer *remoteServer;
+ wxComboBox *cbConnection;
DECLARE_EVENT_TABLE()
};