~ubuntu-branches/ubuntu/utopic/gramps/utopic

« back to all changes in this revision

Viewing changes to src/gui/filtereditor.py

  • Committer: Package Import Robot
  • Author(s): James A. Treacy
  • Date: 2012-05-22 17:18:36 UTC
  • mfrom: (39.1.4 sid)
  • Revision ID: package-import@ubuntu.com-20120522171836-35fi62lp4w7jnrd7
Tags: 3.4.0-1
* New upstream version
* Updated desktop file. Closes: #667472

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
# Gramps - a GTK+/GNOME based genealogy program
3
3
#
4
4
# Copyright (C) 2000-2007  Donald N. Allingham
 
5
# Copyright (C) 2011       Tim G L Lyons
5
6
#
6
7
# This program is free software; you can redistribute it and/or modify
7
8
# it under the terms of the GNU General Public License as published by
18
19
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20
#
20
21
 
21
 
# $Id:_FilterEditor.py 9912 2008-01-22 09:17:46Z acraphae $
 
22
# $Id: filtereditor.py 19265 2012-04-07 19:01:53Z nick-h $
22
23
 
23
24
"""
24
25
Custom Filter Editor tool.
85
86
            'MediaObject' : _('Media Object Filters'),
86
87
            'Repository' : _('Repository Filters'),
87
88
            'Note' : _('Note Filters'),
 
89
            'Citation' : _('Citation Filters'),
88
90
}
89
91
 
90
92
_name2typeclass = {
293
295
        'MediaObject'  : _('Media Object'),
294
296
        'Repository' : _('Repository'),
295
297
        'Note'   : _('Note'),
 
298
        'Citation' : _('Citation'),
296
299
        }
297
300
    
298
301
    def __init__(self, dbstate, uistate, track, namespace='Person'):
345
348
        elif self.namespace == 'Source':
346
349
            source = self.db.get_source_from_gramps_id(gramps_id)
347
350
            name = source.get_title()
 
351
        elif self.namespace == 'Citation':
 
352
            citation = self.db.get_citation_from_gramps_id(gramps_id)
 
353
            name = citation.get_page()
348
354
        elif self.namespace == 'MediaObject':
349
355
            obj = self.db.get_object_from_gramps_id(gramps_id)
350
356
            name = obj.get_path()
461
467
            class_list = Rules.Event.editor_rule_list
462
468
        elif self.namespace == 'Source':
463
469
            class_list = Rules.Source.editor_rule_list
 
470
        elif self.namespace == 'Citation':
 
471
            class_list = Rules.Citation.editor_rule_list
464
472
        elif self.namespace == 'Place':
465
473
            class_list = Rules.Place.editor_rule_list
466
474
        elif self.namespace == 'MediaObject':
635
643
            return self.expand_collapse()
636
644
 
637
645
    def _key_press(self, obj, event):
638
 
        if not event.state or event.state  in (gtk.gdk.MOD2_MASK, ):
639
 
            if event.keyval in (gtk.keysyms.Return, gtk.keysyms.KP_Enter):
640
 
                return self.expand_collapse()
 
646
        if event.keyval in (gtk.keysyms.Return, gtk.keysyms.KP_Enter):
 
647
            return self.expand_collapse()
641
648
        return False    
642
649
    
643
650
    def expand_collapse(self):
697
704
            new_rule = class_obj(value_list)
698
705
 
699
706
            self.update_rule(self.active_rule, new_rule)
700
 
            self._save_size()
701
707
            self.close()
702
708
        except KeyError:
703
709
            pass
713
719
                 filterdb, update=None, selection_callback=None):
714
720
 
715
721
        ManagedWindow.ManagedWindow.__init__(self, uistate, track, self)
716
 
 
 
722
        self.width_key = "interface.edit-filter-width"
 
723
        self.height_key = "interface.edit-filter-height"
717
724
        self.namespace = namespace
718
725
        self.update = update
719
726
        self.dbstate = dbstate
756
763
        self.fname.connect('changed', self.filter_name_changed)
757
764
 
758
765
        op = self.filter.get_logical_op()
759
 
        self.logical.set_active(
760
 
            1 if op == 'or' else 2 if op == 'one' else 2
761
 
            )
 
766
        # WARNING: must be listed in this order:
 
767
        self.logical.set_active(["and", "or", "one", "sequence"].index(op))
762
768
        self.logical_not.set_active(self.filter.get_invert())
763
769
        if self.filter.get_name():
764
770
            self.fname.set_text(self.filter.get_name())
765
771
        self.comment.set_text(self.filter.get_comment())
766
772
        self.draw_rules()
767
773
 
 
774
        self._set_size()
768
775
        self.show()
769
776
 
770
777
    def on_help_clicked(self, obj):
811
818
                self.filterdb.get_filters(self.namespace).remove(f)
812
819
                break
813
820
        val = self.logical.get_active()
814
 
        op = 'or' if val == 1 else 'one' if val == 2 else 'and'
 
821
        # WARNING: must be listed in this order:
 
822
        op = ('and' if val == 0 else 
 
823
              'or' if val == 1 else 
 
824
              'one' if val == 2 else 
 
825
              'sequence')
 
826
        self.logical.set_active(val)
815
827
        self.filter.set_logical_op(op)
816
828
        self.filter.set_invert(self.logical_not.get_active())
817
829
        self.filterdb.add(self.namespace,self.filter)
915
927
            source = self.db.get_source_from_handle(handle)
916
928
            name = source.get_title()
917
929
            gid = source.get_gramps_id()
 
930
        elif self.namespace == 'Citation':
 
931
            citation = self.db.get_citation_from_handle(handle)
 
932
            name = citation.get_title()
 
933
            gid = citation.get_gramps_id()
918
934
        elif self.namespace == 'Place':
919
935
            place = self.db.get_place_from_handle(handle)
920
936
            name = place.get_title()
946
962
            sortname = self.db.get_event_from_handle(handle).get_description()
947
963
        elif self.namespace == 'Source':
948
964
            sortname = self.db.get_source_from_handle(handle).get_title()
 
965
        elif self.namespace == 'Citation':
 
966
            sortname = self.db.get_citation_from_handle(handle).get_title()
949
967
        elif self.namespace == 'Place':
950
968
            sortname = self.db.get_place_from_handle(handle).get_title()
951
969
        elif self.namespace == 'MediaObject':
970
988
        self.db = dbstate.db
971
989
        self.filterdb = FilterList(filterdb)
972
990
        self.filterdb.load()
 
991
        self.width_key = "interface.filter-editor-width"
 
992
        self.height_key = "interface.filter-editor-height"
973
993
        self.namespace = namespace
974
994
 
975
995
        self.define_glade('filter_list', const.RULE_GLADE)
1005
1025
                            self.filter_select_row,
1006
1026
                            self.edit_filter)
1007
1027
        self.draw_filters()
 
1028
        self._set_size()
1008
1029
        self.show()
1009
1030
 
1010
1031
    def build_menu_names(self, obj):
1133
1154
            return self.db.get_event_handles()
1134
1155
        elif self.namespace == 'Source':
1135
1156
            return self.db.get_source_handles()
 
1157
        elif self.namespace == 'Citation':
 
1158
            return self.db.get_citation_handles()
1136
1159
        elif self.namespace == 'Place':
1137
1160
            return self.db.iter_place_handles()
1138
1161
        elif self.namespace == 'MediaObject':