Update for common sorting
svn: r1016
This commit is contained in:
parent
d7f0b5e424
commit
39213fd6ec
@ -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)
|
||||||
|
@ -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):
|
||||||
|
@ -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):
|
||||||
|
@ -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 "
|
||||||
|
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user