/[ghosts]/ghosts/gedcomviewer/src/BakeryGateway/ViewFamilyLink.hh
ViewVC logotype

Diff of /ghosts/gedcomviewer/src/BakeryGateway/ViewFamilyLink.hh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by cpcp, Sun Aug 3 19:50:47 2003 UTC revision 1.5 by cpcp, Mon Dec 1 20:11:00 2003 UTC
# Line 28  Line 28 
28  #include "BakeryExtras/View_RunTimeSubscriber.hh"  #include "BakeryExtras/View_RunTimeSubscriber.hh"
29  #include "BakeryGateway/Document.hh"  #include "BakeryGateway/Document.hh"
30  #include "OneFamilyLinkHandler.hh"  #include "OneFamilyLinkHandler.hh"
31    #include "FamilyMemberHandler.hh"
32  #include "OneFamilyLink.hh"  #include "OneFamilyLink.hh"
33  #include "widgets/WidgetNote.hh"  #include "widgets/WidgetNote.hh"
34  #include <sigc++/object.h>  #include <sigc++/object.h>
# Line 45  Line 46 
46  #define BUTTON_RIGHT 3  #define BUTTON_RIGHT 3
47    
48  namespace BakeryGateway {  namespace BakeryGateway {
49      typedef std::vector < SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords > > IndividualRecordsPredicates_t;
50    
51    template < class T_FamilyLink >    template < class T_FamilyLink >
52    class ViewFamilyLink : public BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::IndividualRecord >,    class ViewFamilyLink : public BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::IndividualRecord >,
53                           public BakeryExtras::View_Navigator < BakeryGateway::Document, std::string >,                           public BakeryExtras::View_Navigator < BakeryGateway::Document, std::string >,
# Line 56  namespace BakeryGateway { Line 59  namespace BakeryGateway {
59        _during_load(false)        _during_load(false)
60      {};      {};
61    protected:    protected:
62      OneFamilyLinkHandler::PopdownLinkEditionReturnHandler_t RightButtonPressed(GdkEventButton * event, std::string const * src_key, SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords > * predicate)      FamilyMemberHandler::PopdownLinkEditionReturnHandler_t RightButtonPressed(GdkEventButton * event, GEDCOMParser::FamilyRecord * const family_record, IndividualRecordsPredicates_t const * const predicates)
63      {      {
       std::cerr << "entering RightButtonPressed " << std::endl;  
64        if (event->button == BUTTON_RIGHT)        if (event->button == BUTTON_RIGHT)
65          {          {
66            MMIFamilyLink * mmi_family_link = getMMIFamilyLink();            MMIFamilyLink * mmi_family_link = getMMIFamilyLink();
# Line 67  namespace BakeryGateway { Line 69  namespace BakeryGateway {
69            GEDCOMParser::IndividualRecords_t individus = lineage->getIndividualRecords();            GEDCOMParser::IndividualRecords_t individus = lineage->getIndividualRecords();
70            LinkEditorMenu_t menus;            LinkEditorMenu_t menus;
71            MenuItems_t menus_items;            MenuItems_t menus_items;
72            menus_items.push_back(MenuItem_t(_("New"),"-1"));            std::string * menu_id = 0;
73            if (!(*predicate).Null())            menu_id = new std::string("-1");
74              menus_items.push_back(MenuItem_t(_("New"),SigC::bind(SigC::bind(SigC::slot(*this, &ViewFamilyLink::family_edited), family_record), menu_id)));
75              for (IndividualRecordsPredicates_t::const_iterator
76                     predicate_iter = predicates->begin();
77                   predicate_iter != predicates->end();
78                   predicate_iter++)
79              {              {
80                std::cerr << "PREDICATE != 0" << std::endl;                if (!(*predicate_iter).Null())
               GEDCOMParser::Predicates::PredicateIndividualRecordsAdapter adapter((*predicate).getPtr());          
               std::cerr << "adapter OK" << std::endl;  
               GEDCOMParser::IndividualRecords_t::iterator iter = find_if(individus.begin(), individus.end(), adapter);  
               do  
81                  {                  {
82                    std::cerr << "iter OK" << std::endl;                    GEDCOMParser::Predicates::PredicateIndividualRecordsAdapter adapter((*predicate_iter).getPtr());        
83                    if (iter != individus.end())                    GEDCOMParser::IndividualRecords_t::iterator individu_iter = find_if(individus.begin(), individus.end(), adapter);
84                      do
85                      {                      {
86                        menus_items.push_back(MenuItem_t((*iter).second->getPersonalNames()[0]->getName(),(*iter).second->getId()));                        if (individu_iter != individus.end())
87                        std::cerr << "menus_item.push_back OK" << std::endl;                          {
88                        iter = find_if(++iter, individus.end(), adapter);                            menu_id = new std::string((*individu_iter).second->getId());
89                      }                            LinkEditionSlotHandler_t menu_slot(SigC::bind(SigC::bind(SigC::slot(*this, &ViewFamilyLink::family_edited), family_record), menu_id));
90                              menus_items.push_back(MenuItem_t((*individu_iter).second->getPersonalNames()[0]->getName(), menu_slot));
91                              individu_iter = find_if(++individu_iter, individus.end(), adapter);
92                            }
93                      }                      }
94                while (iter != individus.end());                    while (individu_iter != individus.end());
95                    }
96                  menus.push_back(menus_items);
97                  menus_items.clear();
98              }              }
           std::cerr << "while OK" << std::endl;  
           menus.push_back(menus_items);  
           std::cerr << "menus.push_back OK" << std::endl;  
           menus_items.clear();  
           menus_items.push_back(MenuItem_t("Thierry","3"));  
           menus_items.push_back(MenuItem_t("Mathieu","4"));  
           menus.push_back(menus_items);  
           menus.push_back(menus_items);  
99            one_family_link->PopupLinkEditorMenu(menus);            one_family_link->PopupLinkEditorMenu(menus);
100          }          }
101        return 1;        return 1;
102      };      };
103            
104      OneFamilyLinkHandler::NavigationReturnHandler_t LeftButtonPressed(GdkEventButton * event, std::string const * target_key)      FamilyMemberHandler::NavigationReturnHandler_t LeftButtonPressed(GdkEventButton * event, std::string const * target_key)
105      {      {
106                
107        bool new_win = false;        bool new_win = false;
# Line 135  namespace BakeryGateway { Line 137  namespace BakeryGateway {
137        return *individual_name;        return *individual_name;
138      };      };
139            
140      OneFamilyLinkHandler::NavigationSlotHandler_t * getNavigationSlotHandler(std::string * target_individu_id)      FamilyMemberHandler::NavigationSlotHandler_t * getNavigationSlotHandler(std::string const * const target_individu_id)
141      {      {
142        return new OneFamilyLinkHandler::NavigationSlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewFamilyLink < T_FamilyLink > ::LeftButtonPressed), target_individu_id));        return new FamilyMemberHandler::NavigationSlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewFamilyLink < T_FamilyLink > ::LeftButtonPressed), target_individu_id));
143      };      };
144        
145      void ManageFamilyRecordNote(OneFamilyLink * family_link, GEDCOMParser::FamilyRecord * family_record)      void ManageFamilyRecordNote(OneFamilyLink * family_link, GEDCOMParser::FamilyRecord * family_record)
# Line 151  namespace BakeryGateway { Line 153  namespace BakeryGateway {
153      };      };
154    
155    
156      virtual OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * getPopdownLinkEditionSlotHandler(std::string * src_individu_id, SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords > * predicate)      virtual FamilyMemberHandler::PopdownLinkEditionSlotHandler_t * getPopdownLinkEditionSlotHandler(GEDCOMParser::FamilyRecord * const family_record, IndividualRecordsPredicates_t const * const predicates)
157      {      {
158        return new OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewFamilyLink < T_FamilyLink > ::RightButtonPressed), src_individu_id, predicate));        return new FamilyMemberHandler::PopdownLinkEditionSlotHandler_t(SigC::bind(SigC::bind(SigC::slot(this, &BakeryGateway::ViewFamilyLink < T_FamilyLink > ::RightButtonPressed), predicates), family_record));
159      };      };
160            
161      bool _during_load;      bool _during_load;
162      virtual void family_added(void) = 0;      virtual void family_added(void) = 0;
163      virtual void family_deleted(int family_index) = 0;      virtual void family_deleted(int family_index) = 0;
164      virtual void family_edited(std::string id) = 0;      virtual void family_edited(std::string  * id, GEDCOMParser::FamilyRecord * const record) = 0;
165      virtual MMIFamilyLink * getMMIFamilyLink(void) const = 0;      virtual MMIFamilyLink * getMMIFamilyLink(void) const = 0;
166    };    };
167  };  };

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26