Example #1
0
void
NetLogGuiGtkWindow::on_service_removed(fawkes::NetworkService *service)
{
  bool removed = false;
  do {
    removed = false;

    for (int i = 0; ! removed && (i < ntb_logviewers.get_n_pages()); ++i) {
      Gtk::Widget *child = ntb_logviewers.get_nth_page(i);
      Gtk::Widget *tab_label = ntb_logviewers.get_tab_label(*child);
      Gtk::HBox   *hbox = dynamic_cast<Gtk::HBox *>(tab_label);

      if ( hbox ) {
        std::vector<Gtk::Widget *> children = hbox->get_children();
	Gtk::Widget *w = children[2];
	if (w) {
	  Gtk::Label *label = dynamic_cast<Gtk::Label *>(w);
	  if ( label ) {
	    Glib::ustring s = Glib::ustring(service->name()) + "::" + service->type() + "::" + service->domain();
	    if (label->get_text() == s) {
	      ntb_logviewers.remove_page(i);
	      removed = true;
	    }
	  }
	}
      }
    }
  } while (removed);

  if ( ntb_logviewers.get_n_pages() == 0 ) {
    ntb_logviewers.hide();
    //Gtk::Container *thiscon = this;
    //thiscon->remove(ntb_logviewers);
    //add(lab_no_connection);
    lab_no_connection->show();
  }
}