diff options
Diffstat (limited to 'src/ClientWindow.cc')
-rw-r--r-- | src/ClientWindow.cc | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/ClientWindow.cc b/src/ClientWindow.cc new file mode 100644 index 0000000..88e2ad3 --- /dev/null +++ b/src/ClientWindow.cc @@ -0,0 +1,59 @@ +#include <iostream> + +#include "paman.hh" +#include "ClientWindow.hh" + +#define GLADE_NAME "clientWindow" + +ClientWindow::ClientWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade) : + Gtk::Window(cobject), + nameLabel(NULL), + protocolLabel(NULL), + indexLabel(NULL), + ownerModuleLabel(NULL), + closeButton(NULL), + toOwnerModuleButton(NULL) { + + refGlade->get_widget("nameLabel", nameLabel); + refGlade->get_widget("protocolLabel", protocolLabel); + refGlade->get_widget("indexLabel", indexLabel); + refGlade->get_widget("ownerModuleLabel", ownerModuleLabel); + refGlade->get_widget("closeButton", closeButton); + refGlade->get_widget("toOwnerModuleButton", toOwnerModuleButton); + + closeButton->signal_clicked().connect(sigc::mem_fun(*this, &ClientWindow::onCloseButton)); + toOwnerModuleButton->signal_clicked().connect(sigc::mem_fun(*this, &ClientWindow::onToOwnerModuleButton)); +} + +ClientWindow* ClientWindow::create() { + ClientWindow *w = NULL; + Glib::RefPtr<Gnome::Glade::Xml> refXml = Gnome::Glade::Xml::create(GLADE_FILE, GLADE_NAME); + refXml->get_widget_derived(GLADE_NAME, w); + return w; +} + +void ClientWindow::updateInfo(const ClientInfo &i) { + char t[20], ss[PA_SAMPLE_SNPRINT_MAX_LENGTH]; + + nameLabel->set_text(i.name); + protocolLabel->set_text(i.protocol_name); + snprintf(t, sizeof(t), "#%u", i.index); + indexLabel->set_text(t); + + snprintf(t, sizeof(t), "#%u", i.owner_module); + ownerModuleLabel->set_text(t); + + set_title("Client: "+i.name); + + owner_module = i.owner_module; + toOwnerModuleButton->set_sensitive(owner_module != (uint32_t) -1); +} + +void ClientWindow::onCloseButton() { + hide(); +} + +void ClientWindow::onToOwnerModuleButton() { + if (owner_module != (uint32_t) -1) + serverInfoManager->showModuleWindow(owner_module); +} |