Update for common sorting

svn: r1016
This commit is contained in:
Don Allingham 2002-05-31 21:24:24 +00:00
parent d7f0b5e424
commit 39213fd6ec
5 changed files with 73 additions and 392 deletions

View File

@ -32,33 +32,27 @@ import os
import GrampsCfg import GrampsCfg
import const import const
import RelImage import RelImage
import Sorter
from intl import gettext from intl import gettext
_ = gettext _ = gettext
class MediaView: class MediaView:
def __init__(self,db,glade,update): def __init__(self,db,glade,update,top_window):
self.db = db self.db = db
self.top_window = top_window
self.media_list = glade.get_widget("media_list") self.media_list = glade.get_widget("media_list")
self.mid = glade.get_widget("mid") self.mid = glade.get_widget("mid")
self.mtype = glade.get_widget("mtype") self.mtype = glade.get_widget("mtype")
self.mdesc = glade.get_widget("mdesc") self.mdesc = glade.get_widget("mdesc")
self.mpath = glade.get_widget("mpath") self.mpath = glade.get_widget("mpath")
self.mdetails = glade.get_widget("mdetails") self.mdetails = glade.get_widget("mdetails")
self.mid_arrow = glade.get_widget("mid_arrow")
self.mdescr_arrow= glade.get_widget("mdescr_arrow")
self.mtype_arrow = glade.get_widget("mtype_arrow")
self.mpath_arrow = glade.get_widget("mpath_arrow")
self.preview = glade.get_widget("preview") self.preview = glade.get_widget("preview")
self.sort_arrow = [self.mdescr_arrow, self.mid_arrow, arrow_map = [ (5, glade.get_widget("mdescr_arrow")),
self.mtype_arrow, self.mpath_arrow] (1, glade.get_widget("mid_arrow")),
self.sort_map = [5,1,2,3,-1] (2, glade.get_widget("mtype_arrow")),
self.media_list.connect('click-column',self.click_column) (3, glade.get_widget("mpath_arrow"))]
self.mid_arrow.hide()
self.mtype_arrow.hide()
self.mpath_arrow.hide()
t = [ ('STRING', 0, 0), t = [ ('STRING', 0, 0),
('text/plain',0,0), ('text/plain',0,0),
@ -66,11 +60,9 @@ class MediaView:
('application/x-rootwin-drop',0,1)] ('application/x-rootwin-drop',0,1)]
self.media_list.drag_source_set(GDK.BUTTON1_MASK|GDK.BUTTON3_MASK, self.media_list.drag_source_set(GDK.BUTTON1_MASK|GDK.BUTTON3_MASK,
t, t,GDK.ACTION_COPY)
GDK.ACTION_COPY)
self.media_list.drag_dest_set(GTK.DEST_DEFAULT_ALL, self.media_list.drag_dest_set(GTK.DEST_DEFAULT_ALL,
t, t,GDK.ACTION_COPY|GDK.ACTION_MOVE)
GDK.ACTION_COPY|GDK.ACTION_MOVE)
self.update = update self.update = update
self.media_list.set_column_visibility(4,GrampsCfg.show_detail) self.media_list.set_column_visibility(4,GrampsCfg.show_detail)
@ -79,10 +71,7 @@ class MediaView:
# Restore the previous sort column # Restore the previous sort column
self.sort_col,self.sort_dir = GrampsCfg.get_sort_cols("media",0,GTK.SORT_ASCENDING) self.media_sort = Sorter.Sorter(self.media_list, arrow_map, 'media', self.top_window)
self.media_list.set_sort_type(self.sort_dir)
self.media_list.set_sort_column(self.sort_map[self.sort_col])
self.set_arrow(self.sort_col)
def change_db(self,db): def change_db(self,db):
self.db = db self.db = db
@ -92,48 +81,6 @@ class MediaView:
self.media_list.select_row(row,0) self.media_list.select_row(row,0)
self.media_list.moveto(row) self.media_list.moveto(row)
def set_arrow(self,column):
for a in self.sort_arrow:
a.hide()
a = self.sort_arrow[column]
a.show()
if self.sort_dir == GTK.SORT_ASCENDING:
a.set(GTK.ARROW_DOWN,2)
else:
a.set(GTK.ARROW_UP,2)
def click_column(self,obj,column):
new_col = self.sort_map[column]
if new_col == -1:
return
data = None
if len(obj.selection) == 1:
data = obj.get_row_data(obj.selection[0])
obj.freeze()
if new_col == self.sort_col:
if self.sort_dir == GTK.SORT_ASCENDING:
self.sort_dir = GTK.SORT_DESCENDING
else:
self.sort_dir = GTK.SORT_ASCENDING
else:
self.sort_dir = GTK.SORT_ASCENDING
self.set_arrow(column)
obj.set_sort_type(self.sort_dir)
obj.set_sort_column(new_col)
self.sort_col = column
GrampsCfg.save_sort_cols("media",self.sort_col,self.sort_dir)
obj.sort()
if data:
row = obj.find_row_from_data(data)
obj.moveto(row)
obj.thaw()
def on_select_row(self,obj,row,b,c): def on_select_row(self,obj,row,b,c):
fexists = 1 fexists = 1
@ -231,7 +178,7 @@ class MediaView:
self.media_list.set_row_data(index,src) self.media_list.set_row_data(index,src)
index = index + 1 index = index + 1
self.media_list.sort() self.media_sort.sort_list()
if index > 0: if index > 0:
self.media_list.select_row(current_row,0) self.media_list.select_row(current_row,0)

View File

@ -42,6 +42,7 @@ from QuestionDialog import QuestionDialog
import EditPlace import EditPlace
import Utils import Utils
import GrampsCfg import GrampsCfg
import Sorter
from intl import gettext from intl import gettext
_ = gettext _ = gettext
@ -53,38 +54,30 @@ _ = gettext
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class PlaceView: class PlaceView:
def __init__(self,db,glade,update): def __init__(self,db,glade,update,top_window):
self.db = db self.db = db
self.glade = glade self.glade = glade
self.top_window = top_window
self.place_list = glade.get_widget("place_list") self.place_list = glade.get_widget("place_list")
self.place_arrow = glade.get_widget("place_arrow")
self.place_id_arrow= glade.get_widget("place_id_arrow")
self.city_arrow = glade.get_widget("city_arrow")
self.parish_arrow = glade.get_widget("parish_arrow")
self.county_arrow = glade.get_widget("county_arrow")
self.state_arrow = glade.get_widget("state_arrow")
self.country_arrow = glade.get_widget("country_arrow")
self.update_display= update self.update_display= update
self.sort_arrow = [ self.place_arrow, self.place_id_arrow,
self.parish_arrow, self.city_arrow,
self.county_arrow, self.state_arrow,
self.country_arrow ]
for i in range(7,13): for i in range(7,13):
self.place_list.set_column_visibility(i,0) self.place_list.set_column_visibility(i,0)
self.place_list.connect('button-press-event',self.on_button_press_event) self.place_list.connect('button-press-event',self.on_button_press_event)
self.place_list.connect('select-row',self.select_row) self.place_list.connect('select-row',self.select_row)
self.active = None self.active = None
self.sort_map = [7,1,8,9,10,11,12]
# Restore the previous sort column plist_map = [(7, glade.get_widget("place_arrow")),
(1, glade.get_widget("place_id_arrow")),
(8, glade.get_widget("parish_arrow")),
(9, glade.get_widget("city_arrow")),
(10, glade.get_widget("county_arrow")),
(11, glade.get_widget("state_arrow")),
(12, glade.get_widget("country_arrow"))]
self.place_sort = Sorter.Sorter(self.place_list,plist_map,'place',self.top_window)
self.sort_col,self.sort_dir = GrampsCfg.get_sort_cols("place",0,GTK.SORT_ASCENDING)
self.set_arrow(self.sort_col)
self.place_list.set_sort_column(self.sort_map[self.sort_col])
self.place_list.set_sort_type(self.sort_dir)
def change_db(self,db): def change_db(self,db):
self.db = db self.db = db
@ -117,7 +110,7 @@ class PlaceView:
else: else:
self.active = None self.active = None
self.place_list.sort() self.place_sort.sort_list()
self.place_list.thaw() self.place_list.thaw()
def select_row(self,obj,row,b,c): def select_row(self,obj,row,b,c):
@ -143,45 +136,6 @@ class PlaceView:
EditPlace.EditPlace(self.active,self.db, EditPlace.EditPlace(self.active,self.db,
self.update_display_after_edit) self.update_display_after_edit)
def set_arrow(self,column):
for a in self.sort_arrow:
a.hide()
a = self.sort_arrow[column]
a.show()
if self.sort_dir == GTK.SORT_ASCENDING:
a.set(GTK.ARROW_DOWN,2)
else:
a.set(GTK.ARROW_UP,2)
def on_click_column(self,obj,column):
obj.freeze()
if len(obj.selection):
id = obj.get_row_data(obj.selection[0])
sel = id
else:
sel = None
for a in self.sort_arrow:
a.hide()
if self.sort_col == column:
if self.sort_dir == GTK.SORT_DESCENDING:
self.sort_dir = GTK.SORT_ASCENDING
else:
self.sort_dir = GTK.SORT_DESCENDING
else:
self.sort_dir = GTK.SORT_ASCENDING
self.sort_col = column
self.set_arrow(column)
self.place_list.set_sort_type(self.sort_dir)
self.place_list.set_sort_column(self.sort_map[self.sort_col])
GrampsCfg.save_sort_cols("place",self.sort_col,self.sort_dir)
self.place_list.sort()
if sel:
self.place_list.moveto(self.place_list.find_row_from_data(sel))
obj.thaw()
def insert_place(self,place): def insert_place(self,place):
self.place_list.append(place.getDisplayInfo()) self.place_list.append(place.getDisplayInfo())
self.place_list.set_row_data(self.place_list.rows-1,place.getId()) self.place_list.set_row_data(self.place_list.rows-1,place.getId())
@ -190,7 +144,7 @@ class PlaceView:
self.place_list.freeze() self.place_list.freeze()
self.db.addPlace(place) self.db.addPlace(place)
self.insert_place(place) self.insert_place(place)
self.place_list.sort() self.place_sort.sort_list()
self.place_list.thaw() self.place_list.thaw()
def update_display_after_edit(self,place): def update_display_after_edit(self,place):
@ -204,7 +158,7 @@ class PlaceView:
self.place_list.remove(index) self.place_list.remove(index)
self.insert_place(place) self.insert_place(place)
self.place_list.sort() self.place_sort.sort_list()
self.place_list.thaw() self.place_list.thaw()
def on_add_place_clicked(self,obj): def on_add_place_clicked(self,obj):

View File

@ -45,6 +45,7 @@ from QuestionDialog import QuestionDialog
import EditSource import EditSource
import Utils import Utils
import GrampsCfg import GrampsCfg
import Sorter
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -55,29 +56,19 @@ from intl import gettext
_ = gettext _ = gettext
class SourceView: class SourceView:
def __init__(self,db,glade,update): def __init__(self,db,glade,update,top_window):
self.glade = glade self.glade = glade
self.db = db self.db = db
self.update = update self.update = update
self.top_window = top_window
arrow_map = [(3, glade.get_widget("title_arrow")),
(1, glade.get_widget("src_id_arrow")),
(4, glade.get_widget("author_arrow"))]
self.source_list = glade.get_widget("source_list") self.source_list = glade.get_widget("source_list")
self.title_arrow = glade.get_widget("title_arrow")
self.id_arrow = glade.get_widget("src_id_arrow")
self.author_arrow= glade.get_widget("author_arrow")
self.source_list.set_column_visibility(3,0) self.source_list.set_column_visibility(3,0)
self.source_list.set_column_visibility(4,0) self.source_list.set_column_visibility(4,0)
self.id_arrow.hide() self.source_sort = Sorter.Sorter(self.source_list,arrow_map,'source',self.top_window)
self.author_arrow.hide()
self.sort_map = [3,1,4,-1]
self.sort_arrow = [self.title_arrow, self.id_arrow, self.author_arrow]
self.source_list.connect('click-column',self.click_column)
self.scol,self.sdir = GrampsCfg.get_sort_cols("source",3,GTK.SORT_ASCENDING)
if self.scol >= len(self.sort_arrow):
self.scol = 0
self.source_list.set_sort_type(self.sdir)
self.source_list.set_sort_column(self.sort_map[self.scol])
self.set_arrow(self.scol)
def change_db(self,db): def change_db(self,db):
self.db = db self.db = db
@ -87,50 +78,6 @@ class SourceView:
self.source_list.select_row(row,0) self.source_list.select_row(row,0)
self.source_list.moveto(row) self.source_list.moveto(row)
def set_arrow(self,column):
for a in self.sort_arrow:
a.hide()
a = self.sort_arrow[column]
a.show()
if self.sdir == GTK.SORT_ASCENDING:
a.set(GTK.ARROW_DOWN,2)
else:
a.set(GTK.ARROW_UP,2)
def click_column(self,obj,column):
new_col = self.sort_map[column]
if new_col == -1:
return
data = None
if len(obj.selection) == 1:
id = obj.get_row_data(obj.selection[0])
data = self.db.getSourceMap()[id]
obj.freeze()
if new_col == self.scol:
if self.sdir == GTK.SORT_ASCENDING:
self.sdir = GTK.SORT_DESCENDING
else:
self.sdir = GTK.SORT_ASCENDING
else:
self.sdir = GTK.SORT_ASCENDING
self.set_arrow(column)
obj.set_sort_type(self.sdir)
obj.set_sort_column(new_col)
self.scol = new_col
GrampsCfg.save_sort_cols("source",self.scol,self.sdir)
obj.sort()
if data:
row = obj.find_row_from_data(data)
obj.moveto(row)
obj.thaw()
def load_sources(self): def load_sources(self):
if len(self.source_list.selection) > 0: if len(self.source_list.selection) > 0:
@ -152,7 +99,7 @@ class SourceView:
self.source_list.select_row(current_row,0) self.source_list.select_row(current_row,0)
self.source_list.moveto(current_row) self.source_list.moveto(current_row)
self.source_list.sort() self.source_sort.sort_list()
self.source_list.thaw() self.source_list.thaw()
def button_press(self,obj,event): def button_press(self,obj,event):

View File

@ -92,7 +92,7 @@ startup = 1
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
progName = "GRAMPS" progName = "GRAMPS"
version = "0.8.0-pre" version = "0.8.0-snap20020531"
copyright = "© 2001-2002 Donald N. Allingham" copyright = "© 2001-2002 Donald N. Allingham"
authors = ["Donald N. Allingham", "David Hampton","Donald A. Peterson"] authors = ["Donald N. Allingham", "David Hampton","Donald A. Peterson"]
comments = _("GRAMPS (Genealogical Research and Analysis " comments = _("GRAMPS (Genealogical Research and Analysis "

View File

@ -66,6 +66,7 @@ import Plugins
import sort import sort
import Utils import Utils
import Bookmarks import Bookmarks
import Sorter
import ListColors import ListColors
import GrampsCfg import GrampsCfg
import EditPerson import EditPerson
@ -100,16 +101,7 @@ class Gramps:
self.active_person = None self.active_person = None
self.active_spouse = None self.active_spouse = None
self.bookmarks = None self.bookmarks = None
self.c_birth_date = 4
self.c_birth_order = 0
self.c_details = 6 self.c_details = 6
self.c_gender = 3
self.c_id = 2
self.c_name = 1
self.c_scol = self.c_birth_order
self.c_sdir = GTK.SORT_ASCENDING
self.scol = 0
self.sdir = GTK.SORT_ASCENDING
self.id2col = {} self.id2col = {}
gtk.rc_parse(const.gtkrcFile) gtk.rc_parse(const.gtkrcFile)
@ -129,17 +121,24 @@ class Gramps:
self.db.set_sprefix(GrampsCfg.sprefix) self.db.set_sprefix(GrampsCfg.sprefix)
self.db.set_pprefix(GrampsCfg.pprefix) self.db.set_pprefix(GrampsCfg.pprefix)
(self.scol,self.sdir) = GrampsCfg.get_sort_cols("person",self.scol,self.sdir)
GrampsCfg.loadConfig(self.full_update) GrampsCfg.loadConfig(self.full_update)
self.init_interface() self.init_interface()
self.col_map = [ 5, 1, 2, 6, 7 ] plist_map = [ (5, self.gtop.get_widget("nameSort")),
self.col_arr = [ self.nameArrow, self.idArrow, self.genderArrow, (1, self.gtop.get_widget("idSort")),
self.dateArrow, self.deathArrow] (2, self.gtop.get_widget("genderSort")),
(6, self.gtop.get_widget("dateSort")),
(7, self.gtop.get_widget("deathSort"))]
self.change_sort(self.scol,self.sdir==GTK.SORT_DESCENDING) date_arrow = self.gtop.get_widget("cDateSort")
self.set_sort_arrow(self.scol,self.sdir) clist_map = [ (0, date_arrow),
(1, self.gtop.get_widget("cNameSort")),
(2, self.gtop.get_widget("cIDSort")),
(3, self.gtop.get_widget("cGenderSort")),
(4, date_arrow)]
self.person_sort = Sorter.Sorter(self.person_list, plist_map, 'person', self.topWindow)
self.child_sort = Sorter.ChildSorter(self.child_list, clist_map, 'child', self.topWindow)
if arg != None: if arg != None:
if string.upper(arg[-3:]) == "GED": if string.upper(arg[-3:]) == "GED":
@ -169,16 +168,7 @@ class Gramps:
self.person_list = self.gtop.get_widget("person_list") self.person_list = self.gtop.get_widget("person_list")
self.filter_list = self.gtop.get_widget("filter_list") self.filter_list = self.gtop.get_widget("filter_list")
self.notebook = self.gtop.get_widget("notebook1") self.notebook = self.gtop.get_widget("notebook1")
self.nameArrow = self.gtop.get_widget("nameSort")
self.genderArrow = self.gtop.get_widget("genderSort")
self.idArrow = self.gtop.get_widget("idSort")
self.dateArrow = self.gtop.get_widget("dateSort")
self.deathArrow = self.gtop.get_widget("deathSort")
self.merge_button= self.gtop.get_widget("merge") self.merge_button= self.gtop.get_widget("merge")
self.cNameArrow = self.gtop.get_widget("cNameSort")
self.cGenderArrow= self.gtop.get_widget("cGenderSort")
self.cIDArrow = self.gtop.get_widget("cIDSort")
self.cDateArrow = self.gtop.get_widget("cDateSort")
self.canvas = self.gtop.get_widget("canvas1") self.canvas = self.gtop.get_widget("canvas1")
self.child_list = self.gtop.get_widget("child_list") self.child_list = self.gtop.get_widget("child_list")
self.toolbar = self.gtop.get_widget("toolbar1") self.toolbar = self.gtop.get_widget("toolbar1")
@ -214,16 +204,16 @@ class Gramps:
self.notebook.set_show_tabs(GrampsCfg.usetabs) self.notebook.set_show_tabs(GrampsCfg.usetabs)
self.child_list.set_column_visibility(self.c_details,GrampsCfg.show_detail) self.child_list.set_column_visibility(self.c_details,GrampsCfg.show_detail)
self.child_list.set_column_justification(self.c_birth_order,GTK.JUSTIFY_RIGHT) self.child_list.set_column_justification(0,GTK.JUSTIFY_RIGHT)
self.pedigree_view = PedigreeView(self.canvas, self.pedigree_view = PedigreeView(self.canvas,
self.modify_statusbar, self.modify_statusbar,
self.statusbar, self.statusbar,
self.change_active_person, self.change_active_person,
self.load_person) self.load_person)
self.place_view = PlaceView(self.db,self.gtop,self.update_display) self.place_view = PlaceView(self.db,self.gtop,self.update_display,self.topWindow)
self.source_view = SourceView(self.db,self.gtop,self.update_display) self.source_view = SourceView(self.db,self.gtop,self.update_display,self.topWindow)
self.media_view = MediaView(self.db,self.gtop,self.update_display) self.media_view = MediaView(self.db,self.gtop,self.update_display,self.topWindow)
self.gtop.signal_autoconnect({ self.gtop.signal_autoconnect({
"delete_event" : self.delete_event, "delete_event" : self.delete_event,
@ -246,7 +236,6 @@ class Gramps:
"on_canvas1_event" : self.pedigree_view.on_canvas1_event, "on_canvas1_event" : self.pedigree_view.on_canvas1_event,
"on_child_list_button_press" : self.on_child_list_button_press, "on_child_list_button_press" : self.on_child_list_button_press,
"on_child_list_select_row" : self.on_child_list_select_row, "on_child_list_select_row" : self.on_child_list_select_row,
"on_child_list_click_column" : self.on_child_list_click_column,
"on_child_list_row_move" : self.on_child_list_row_move, "on_child_list_row_move" : self.on_child_list_row_move,
"on_choose_parents_clicked" : self.on_choose_parents_clicked, "on_choose_parents_clicked" : self.on_choose_parents_clicked,
"on_contents_activate" : self.on_contents_activate, "on_contents_activate" : self.on_contents_activate,
@ -282,9 +271,7 @@ class Gramps:
"on_pedegree1_activate" : self.on_pedegree1_activate, "on_pedegree1_activate" : self.on_pedegree1_activate,
"on_person_list1_activate" : self.on_person_list1_activate, "on_person_list1_activate" : self.on_person_list1_activate,
"on_person_list_button_press" : self.on_person_list_button_press, "on_person_list_button_press" : self.on_person_list_button_press,
"on_person_list_click_column" : self.on_person_list_click_column,
"on_person_list_select_row" : self.on_person_list_select_row, "on_person_list_select_row" : self.on_person_list_select_row,
"on_place_list_click_column" : self.place_view.on_click_column,
"on_main_key_release_event" : self.on_main_key_release_event, "on_main_key_release_event" : self.on_main_key_release_event,
"on_add_media_clicked" : self.media_view.create_add_dialog, "on_add_media_clicked" : self.media_view.create_add_dialog,
"on_media_activate" : self.on_media_activate, "on_media_activate" : self.on_media_activate,
@ -663,9 +650,8 @@ class Gramps:
self.notebook.set_show_tabs(GrampsCfg.usetabs) self.notebook.set_show_tabs(GrampsCfg.usetabs)
self.child_list.set_column_visibility(self.c_details, self.child_list.set_column_visibility(self.c_details,
GrampsCfg.show_detail) GrampsCfg.show_detail)
self.child_list.set_column_visibility(self.c_id,GrampsCfg.id_visible) self.child_list.set_column_visibility(2,GrampsCfg.id_visible)
self.child_list.set_column_visibility(self.c_birth_order, self.child_list.set_column_visibility(0,GrampsCfg.index_visible)
GrampsCfg.index_visible)
self.apply_filter() self.apply_filter()
self.load_family() self.load_family()
self.source_view.load_sources() self.source_view.load_sources()
@ -926,7 +912,7 @@ class Gramps:
self.db.removePerson(self.active_person.getId()) self.db.removePerson(self.active_person.getId())
self.remove_from_person_list(self.active_person) self.remove_from_person_list(self.active_person)
self.person_list.sort() self.person_list.sort_list()
self.update_display(0) self.update_display(0)
Utils.modified() Utils.modified()
@ -968,81 +954,6 @@ class Gramps:
person = self.db.getPerson(obj.get_row_data(row)) person = self.db.getPerson(obj.get_row_data(row))
self.change_active_person(person) self.change_active_person(person)
def on_person_list_click_column(self,obj,column):
self.change_sort(column)
def set_sort_arrow(self,column,direct):
arrow = self.col_arr[column]
for a in self.col_arr:
if arrow != a:
a.hide()
arrow.show()
if direct == GTK.SORT_ASCENDING:
arrow.set(GTK.ARROW_DOWN,2)
else:
arrow.set(GTK.ARROW_UP,2)
def change_sort(self,column,change=1):
arrow = self.col_arr[column]
for a in self.col_arr:
if arrow != a:
a.hide()
arrow.show()
self.person_list.set_sort_column(self.col_map[column])
self.person_list.set_sort_type(self.sdir)
self.sort_person_list()
if change:
if self.scol == column:
if self.sdir == GTK.SORT_DESCENDING:
self.sdir = GTK.SORT_ASCENDING
arrow.set(GTK.ARROW_DOWN,2)
else:
self.sdir = GTK.SORT_DESCENDING
arrow.set(GTK.ARROW_UP,2)
else:
self.sdir = GTK.SORT_ASCENDING
arrow.set(GTK.ARROW_DOWN,2)
self.scol = column
if self.active_person:
pid = self.active_person.getId()
if self.id2col.has_key(pid):
data = self.id2col[pid]
row = self.person_list.find_row_from_data(data)
self.person_list.moveto(row)
GrampsCfg.save_sort_cols("person",self.scol,self.sdir)
def sort_person_list(self):
self.person_list.freeze()
self.person_list.sort()
self.person_list.sort()
if ListColors.get_enable():
try:
loddbg = ListColors.oddbg
loddfg = ListColors.oddfg
levenbg = ListColors.evenbg
levenfg = ListColors.evenfg
cmap = self.topWindow.get_colormap()
oddbg = cmap.alloc(loddbg[0],loddbg[1],loddbg[2])
oddfg = cmap.alloc(loddfg[0],loddfg[1],loddfg[2])
evenbg = cmap.alloc(levenbg[0],levenbg[1],levenbg[2])
evenfg = cmap.alloc(levenfg[0],levenfg[1],levenfg[2])
rows = self.person_list.rows
for i in range(0,rows,2):
self.person_list.set_background(i,oddbg)
self.person_list.set_foreground(i,oddfg)
if i != rows:
self.person_list.set_background(i+1,evenbg)
self.person_list.set_foreground(i+1,evenfg)
except OverflowError:
pass
self.goto_active_person()
self.person_list.thaw()
def on_child_list_button_press(self,obj,event): def on_child_list_button_press(self,obj,event):
if event.button == 1 and event.type == GDK._2BUTTON_PRESS: if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
self.load_person(self.active_child) self.load_person(self.active_child)
@ -1096,81 +1007,6 @@ class Gramps:
id = obj.get_row_data(row) id = obj.get_row_data(row)
self.active_child = id self.active_child = id
def on_child_list_click_column(self,clist,column):
"""Called when the user selects a column header on the self.person_list
window. Change the sort function (column 0 is the name column, and
column 2 is the birthdate column), set the arrows on the labels to
the correct orientation, and then call apply_filter to redraw the
list"""
if column == self.c_name:
self.child_change_sort(clist,self.c_name,self.cNameArrow)
elif column == self.c_gender:
self.child_change_sort(clist,self.c_gender,self.cGenderArrow)
elif column == self.c_id:
self.child_change_sort(clist,self.c_id,self.cIDArrow)
elif column == self.c_birth_order or column == self.c_birth_date:
self.child_change_sort(clist,self.c_birth_order,self.cDateArrow)
else:
return
self.sort_child_list(clist)
if self.active_child and self.id2col.has_key(self.active_child.getId()):
row = clist.find_row_from_data(self.id2col[
self.active_child.getId()])
clist.moveto(row)
def child_change_sort(self,clist,column,arrow):
self.cNameArrow.hide()
self.cDateArrow.hide()
self.cIDArrow.hide()
self.cGenderArrow.hide()
arrow.show()
if self.c_scol == column:
if self.c_sdir == GTK.SORT_DESCENDING:
self.c_sdir = GTK.SORT_ASCENDING
arrow.set(GTK.ARROW_DOWN,2)
else:
self.c_sdir = GTK.SORT_DESCENDING
arrow.set(GTK.ARROW_UP,2)
else:
self.c_sdir = GTK.SORT_ASCENDING
self.c_scol = column
clist.set_sort_type(self.c_sdir)
clist.set_sort_column(self.c_scol)
clist.set_reorderable(self.c_scol == self.c_birth_order)
def sort_child_list(self,clist):
clist.freeze()
clist.sort()
clist.sort()
if ListColors.get_enable():
try:
loddbg = ListColors.oddbg
loddfg = ListColors.oddfg
levenbg = ListColors.evenbg
levenfg = ListColors.evenfg
lafg = ListColors.ancestorfg
cmap = self.topWindow.get_colormap()
oddbg = cmap.alloc(loddbg[0],loddbg[1],loddbg[2])
oddfg = cmap.alloc(loddfg[0],loddfg[1],loddfg[2])
evenbg = cmap.alloc(levenbg[0],levenbg[1],levenbg[2])
evenfg = cmap.alloc(levenfg[0],levenfg[1],levenfg[2])
ancestorfg = cmap.alloc(lafg[0],lafg[1],lafg[2])
rows = clist.rows
for i in range(0,rows):
clist.set_background(i,(evenbg,oddbg)[i%2])
id = clist.get_row_data(i)
person = self.db.getPerson(id)
if (person.getAncestor()):
clist.set_foreground(i,ancestorfg)
else:
clist.set_foreground(i,(evenfg,oddfg)[i%2])
except OverflowError:
pass
clist.thaw()
def on_child_list_row_move(self,clist,fm,to): def on_child_list_row_move(self,clist,fm,to):
"""Validate whether or not this child can be moved within the clist. """Validate whether or not this child can be moved within the clist.
This routine is called in the middle of the clist's callbacks, so This routine is called in the middle of the clist's callbacks, so
@ -1193,7 +1029,7 @@ class Gramps:
# This function deals with ascending order lists. Convert if # This function deals with ascending order lists. Convert if
# necessary. # necessary.
if (self.c_sdir == GTK.SORT_DESCENDING): if (self.child_sort.sort_direction() == GTK.SORT_DESCENDING):
clist_order.reverse() clist_order.reverse()
max_index = len(clist_order) - 1 max_index = len(clist_order) - 1
fm = max_index - fm fm = max_index - fm
@ -1223,13 +1059,13 @@ class Gramps:
# Convert the original list back to whatever ordering is being # Convert the original list back to whatever ordering is being
# used by the clist itself. # used by the clist itself.
if (self.c_sdir == GTK.SORT_DESCENDING): if self.child_sort.sort_direction() == GTK.SORT_DESCENDING:
clist_order.reverse() clist_order.reverse()
# Update the clist indices so any change of sorting works # Update the clist indices so any change of sorting works
i = 0 i = 0
for tmp in clist_order: for tmp in clist_order:
clist.set_text(i,self.c_birth_order,"%2d"%(new_order[tmp]+1)) clist.set_text(i,0,"%2d"%(new_order[tmp]+1))
i = i + 1 i = i + 1
# Need to save the changed order # Need to save the changed order
@ -1447,7 +1283,7 @@ class Gramps:
if self.DataFilter.compare(person): if self.DataFilter.compare(person):
self.person_list.insert(0,person.getDisplayInfo()) self.person_list.insert(0,person.getDisplayInfo())
self.person_list.set_row_data(0,person.getId()) self.person_list.set_row_data(0,person.getId())
self.sort_person_list() self.person_sort.sort_list()
def load_person(self,person): def load_person(self,person):
if person: if person:
@ -1680,9 +1516,6 @@ class Gramps:
self.active_child = None self.active_child = None
i = 0 i = 0
self.child_list.set_sort_type(self.c_sdir)
self.child_list.set_sort_column(self.c_scol)
self.child_list.set_reorderable(self.c_scol == self.c_birth_order)
if family: if family:
if self.active_person == family.getFather(): if self.active_person == family.getFather():
@ -1738,7 +1571,7 @@ class Gramps:
else: else:
fv_prev.set_sensitive(0) fv_prev.set_sensitive(0)
self.child_list.set_data("f",family) self.child_list.set_data("f",family)
self.sort_child_list(self.child_list) self.child_sort.sort_list()
else: else:
self.active_spouse = None self.active_spouse = None
fv_prev.set_sensitive(0) fv_prev.set_sensitive(0)
@ -1857,7 +1690,7 @@ class Gramps:
self.person_list.remove(row) self.person_list.remove(row)
self.person_list.thaw() self.person_list.thaw()
self.sort_person_list() self.person_sort.sort_list()
def on_home_clicked(self,obj): def on_home_clicked(self,obj):
temp = self.db.getDefaultPerson() temp = self.db.getDefaultPerson()