Create custom cell renderer for image labels in GalleryTab for better control.

svn: r9084
This commit is contained in:
Zsolt Foldvari 2007-10-05 12:59:11 +00:00
parent b10607715e
commit e9bb3d75c1
2 changed files with 34 additions and 10 deletions

View File

@ -1,3 +1,7 @@
2007-10-05 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
* src/DisplayTabs/_GalleryTab.py (build_interface): Create custom cell
renderer for labels for better control.
2007-10-05 Benny Malengier <benny.malengier@gramps-project.org> 2007-10-05 Benny Malengier <benny.malengier@gramps-project.org>
* src/DisplayTabs/_GalleryTab.py: remove bug that leads to database corruption, * src/DisplayTabs/_GalleryTab.py: remove bug that leads to database corruption,
if media is deleted in mediaview, remove media in all open gallery tabs if media is deleted in mediaview, remove media in all open gallery tabs

View File

@ -28,6 +28,7 @@
from gettext import gettext as _ from gettext import gettext as _
import cPickle as pickle import cPickle as pickle
import urlparse import urlparse
import os
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -35,7 +36,7 @@ import urlparse
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import gtk import gtk
import os import pango
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -145,27 +146,46 @@ class GalleryTab(ButtonTab):
self.iconmodel.connect_after('row-deleted', self._update_internal_list) self.iconmodel.connect_after('row-deleted', self._update_internal_list)
def build_interface(self): def build_interface(self):
"""Setup the GUI.
It includes an IconView placed inside of a ScrolledWindow.
"""
item_width = 125
# create the model used with the icon view
self._build_icon_model() self._build_icon_model()
# build the icon view # build the icon view
self.iconlist = gtk.IconView() self.iconlist = gtk.IconView()
self.iconlist.set_pixbuf_column(0) self.iconlist.set_pixbuf_column(0)
self.iconlist.set_text_column(1) # set custom text cell renderer for better control
text_renderer = gtk.CellRendererText()
text_renderer.set_property('xalign', 0.5)
text_renderer.set_property('yalign', 0.0)
text_renderer.set_property('wrap-mode', pango.WRAP_WORD_CHAR)
text_renderer.set_property('wrap-width', item_width)
self.iconlist.pack_end(text_renderer)
self.iconlist.set_attributes(text_renderer, text=1)
# set basic properties of the icon view
self.iconlist.set_margin(12) self.iconlist.set_margin(12)
try: self.iconlist.set_spacing(24)
# This is only available for pygtk 2.8 self.iconlist.set_item_width(item_width)
self.iconlist.set_reorderable(True)
except AttributeError:
pass
self.iconlist.set_item_width(125)
self.iconlist.set_spacing(24)
self.iconlist.set_selection_mode(gtk.SELECTION_SINGLE) self.iconlist.set_selection_mode(gtk.SELECTION_SINGLE)
if gtk.pygtk_version >= (2, 8, 0):
self.iconlist.set_reorderable(True)
# connect the signals
self.iconlist.connect('selection-changed', self._selection_changed) self.iconlist.connect('selection-changed', self._selection_changed)
self.iconlist.connect('button_press_event', self.double_click) self.iconlist.connect('button_press_event', self.double_click)
self._connect_icon_model() self._connect_icon_model()
# create the scrolled window
scroll = gtk.ScrolledWindow() scroll = gtk.ScrolledWindow()
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
# put everything together
scroll.add(self.iconlist) scroll.add(self.iconlist)
self.pack_start(scroll, True) self.pack_start(scroll, True)