/** Copyright 2003 Cyril Picard This file is part of the GEDCOMViewer tool (developed within the Genealogy Free Software Tools project). The GEDCOMViewer tool is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GEDCOMViewer tool is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the GEDCOMViewer tool ; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA **/ #include "config.h" #include #include "MMIFamilyLink.hh" #include #include #include "MMIMenuFamily.hh" MMIFamilyLink::MMIFamilyLink(std::string const &label = "") : Gtk::Frame(label), _cpt_family(0), _family_added(), _family_deleted() { Gtk::Label *label58 = manage(new class Gtk::Label(_("Family"))); Gtk::HBox *hbox24 = manage(new class Gtk::HBox(false, 0)); _family_links = manage(new class Gtk::Notebook()); label58->set_alignment(0.5, 0.5); label58->set_padding(0, 0); _family_links->set_flags(GTK_CAN_FOCUS); _family_links->set_show_tabs(true); _family_links->set_tab_border(3); set_label_align(0, 0); set_shadow_type(GTK_SHADOW_ETCHED_IN); add(*_family_links); button_press_event.connect(slot(this, &MMIFamilyLink::button_pressed)); label58->show(); hbox24->show(); _family_links->show(); show(); } MMIFamilyLink::~MMIFamilyLink() { } void MMIFamilyLink::Clear(void) { _family_links->pages().clear(); _cpt_family = 0; return; } void MMIFamilyLink::deleteFamilyLink(void) { _cpt_family--; Gtk::Notebook_Helpers::PageList pages =_family_links->pages(); Gtk::Notebook_Helpers::PageList::iterator page_iter = pages.find(_family_links->get_current()); if (page_iter != pages.end()) { pages.erase(page_iter); } return; } SigC::Signal0 &MMIFamilyLink::FamilyAdded(void) { return _family_added; } SigC::Signal1 &MMIFamilyLink::FamilyDeleted(void) { return _family_deleted; } int MMIFamilyLink::button_pressed(GdkEventButton * event) { if (event->button == 3) { MMIMenuFamily * popup_menu = manage(new MMIMenuFamily()); popup_menu->getAddItem()->activate.connect(slot(this, &MMIFamilyLink::menu_add_activated)); popup_menu->getDeleteItem()->activate.connect(slot(this, &MMIFamilyLink::menu_delete_activated)); guint button = 3; guint32 activate_time = 0; popup_menu->popup(button, activate_time); } return 1; } void MMIFamilyLink::menu_delete_activated(void) { int family_index = _family_links->get_current_page_num(); deleteFamilyLink(); _family_deleted.emit(family_index); return; } void MMIFamilyLink::menu_add_activated(void) { _family_added.emit(); return; }