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
|
#ifndef _CONNECTION_PAGE_H_
#define _CONNECTION_PAGE_H_
#include "grtui/grtdb_connect_panel.h"
class ConnectionPage : public grtui::WizardPage
{
public:
ConnectionPage(grtui::WizardForm *form, const char *name= "connect", const std::string &selection_save_name = "")
: WizardPage(form, name), _dbconn(0),
_connect(grtui::DbConnectPanelDefaults|(selection_save_name.empty() ? 0 : grtui::DbConnectPanelDontSetDefaultConnection)),
_selection_save_name(selection_save_name)
{
set_title(_("Set Parameters for Connecting to a DBMS"));
set_short_title(_("Connection Options"));
add(&_connect, true, true);
scoped_connect(_connect.signal_validation_state_changed(),
boost::bind(&ConnectionPage::connection_validation_changed, this, _1, _2));
}
void set_db_connection(DbConnection *conn)
{
_dbconn= conn;
_connect.init(_dbconn);
}
protected:
virtual bool pre_load()
{
if (!_dbconn)
throw std::logic_error("must call set_db_connection() 1st");
if (!_selection_save_name.empty())
{
std::string name = wizard()->grtm()->get_app_option_string(_selection_save_name);
if (!name.empty())
_connect.set_active_stored_conn(name);
}
return true;
}
virtual bool advance()
{
if (!_selection_save_name.empty())
{
db_mgmt_ConnectionRef conn(_connect.get_connection());
if (conn.is_valid() && conn->name() != "")
wizard()->grtm()->set_app_option(_selection_save_name, conn->name());
}
return WizardPage::advance();
}
void connection_validation_changed(const std::string &error, bool ok)
{
if (!ok)
_form->set_problem(error);
else
_form->clear_problem();
}
protected:
DbConnection *_dbconn;
grtui::DbConnectPanel _connect;
std::string _selection_save_name;
};
#endif // _CONNECTION_PAGE_H_
|