1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// dlgReassignDropOwned.cpp - Reassign or drop owned objects
//
//////////////////////////////////////////////////////////////////////////
#include "pgAdmin3.h"
// wxWindows headers
#include <wx/wx.h>
// App headers
#include "pgAdmin3.h"
#include "utils/pgDefs.h"
#include "frm/frmMain.h"
#include "utils/misc.h"
#include "schema/pgRole.h"
#include "dlg/dlgReassignDropOwned.h"
// pointer to controls
#define rbReassignTo CTRL_RADIOBUTTON("rbReassignTo")
#define rbDrop CTRL_RADIOBUTTON("rbDrop")
#define cbRoles CTRL_COMBOBOX("cbRoles")
#define cbDatabases CTRL_COMBOBOX("cbDatabases")
#define btnOK CTRL_BUTTON("wxID_OK")
BEGIN_EVENT_TABLE(dlgReassignDropOwned, pgDialog)
EVT_RADIOBUTTON(XRCID("rbReassignTo"), dlgReassignDropOwned::OnChange)
EVT_RADIOBUTTON(XRCID("rbDrop"), dlgReassignDropOwned::OnChange)
EVT_BUTTON(wxID_OK, dlgReassignDropOwned::OnOK)
END_EVENT_TABLE()
dlgReassignDropOwned::dlgReassignDropOwned(frmMain *win, pgConn *conn,
pgRole *role, wxString dbrestriction)
{
wxString query;
connection = conn;
parent = win;
SetFont(settings->GetSystemFont());
LoadResource(win, wxT("dlgReassignDropOwned"));
RestorePosition();
cbRoles->Clear();
query = wxT("SELECT rolname FROM pg_roles WHERE rolname<>") + conn->qtDbString(role->GetName()) + wxT(" ORDER BY rolname");
pgSetIterator roles(connection, query);
while (roles.RowsLeft())
{
cbRoles->Append(roles.GetVal(wxT("rolname")));
}
cbRoles->SetSelection(0);
cbRoles->Enable(cbRoles->GetStrings().Count() > 0);
cbDatabases->Clear();
query = wxT("SELECT DISTINCT datname FROM pg_database WHERE datallowconn");
if (!dbrestriction.IsEmpty())
{
query += wxT(" AND datname NOT IN (") + dbrestriction + wxT(")");
}
query += wxT(" ORDER BY datname");
pgSetIterator databases(connection, query);
while (databases.RowsLeft())
{
cbDatabases->Append(databases.GetVal(wxT("datname")));
}
cbDatabases->SetSelection(0);
if(rbReassignTo->GetValue() && cbRoles->GetStrings().Count() <= 0)
btnOK->Disable();
SetSize(330, 160);
}
dlgReassignDropOwned::~dlgReassignDropOwned()
{
SavePosition();
}
void dlgReassignDropOwned::OnOK(wxCommandEvent &ev)
{
EndModal(wxID_OK);
}
void dlgReassignDropOwned::OnCancel(wxCommandEvent &ev)
{
EndModal(wxID_CANCEL);
}
void dlgReassignDropOwned::OnChange(wxCommandEvent &ev)
{
cbRoles->Enable(rbReassignTo->GetValue() && cbRoles->GetStrings().Count() > 0);
if(rbReassignTo->GetValue() && cbRoles->GetStrings().Count() <= 0)
btnOK->Disable();
else
btnOK->Enable();
}
wxString dlgReassignDropOwned::GetDatabase()
{
return cbDatabases->GetValue();
}
wxString dlgReassignDropOwned::GetRole()
{
return cbRoles->GetValue();
}
bool dlgReassignDropOwned::IsReassign()
{
return rbReassignTo->GetValue();
}
|