From 466037c8c1cd4bdb07b959b844e83a511b3bfcfa Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 26 Jul 2012 20:03:36 +0100 Subject: Finish off server editing in prefs. --- src/wx/config_dialog.cc | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 4b55c1254..547296666 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -160,9 +160,11 @@ ConfigDialog::ConfigDialog (wxWindow* parent) } _add_server->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::add_server_clicked), 0, this); + _edit_server->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::edit_server_clicked), 0, this); _remove_server->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::remove_server_clicked), 0, this); - _servers->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler (ConfigDialog::server_selection_changed)); + _servers->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler (ConfigDialog::server_selection_changed), 0, this); + _servers->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler (ConfigDialog::server_selection_changed), 0, this); wxListEvent ev; server_selection_changed (ev); @@ -241,6 +243,9 @@ ConfigDialog::add_server_clicked (wxCommandEvent &) d->Destroy (); add_server_to_control (s); + vector o = Config::instance()->servers (); + o.push_back (s); + Config::instance()->set_servers (o); } void @@ -256,7 +261,22 @@ ConfigDialog::edit_server_clicked (wxCommandEvent &) item.SetColumn (0); _servers->GetItem (item); - /* XXX: partial */ + vector servers = Config::instance()->servers (); + vector::iterator j = servers.begin(); + while (j != servers.end() && (*j)->host_name() != wx_to_std (item.GetText ())) { + ++j; + } + + if (j == servers.end()) { + return; + } + + ServerDialog* d = new ServerDialog (this, *j); + d->ShowModal (); + d->Destroy (); + + _servers->SetItem (i, 0, std_to_wx ((*j)->host_name ())); + _servers->SetItem (i, 1, std_to_wx (boost::lexical_cast ((*j)->threads ()))); } void @@ -271,7 +291,9 @@ ConfigDialog::remove_server_clicked (wxCommandEvent &) void ConfigDialog::server_selection_changed (wxListEvent& ev) { -// _remove_server->Enable (ev.GetIndex() >= 0); + int const i = _servers->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + _edit_server->Enable (i >= 0); + _remove_server->Enable (i >= 0); } void -- cgit v1.2.3