[meld] Port from manual gdk.Pixbuf handling to gtk.IconTheme
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Port from manual gdk.Pixbuf handling to gtk.IconTheme
- Date: Mon, 18 Oct 2010 21:20:44 +0000 (UTC)
commit 71c25907ad5910c7b96d68106f7c84973ccc7de6
Author: Kai Willadsen <kai willadsen gmail com>
Date: Sun Sep 5 11:45:12 2010 +1000
Port from manual gdk.Pixbuf handling to gtk.IconTheme
This commit moves from custom loading and handling of pixbufs toward
using gtk.IconTheme for all pixbuf access, including moving from
file-based access to icon-name access.
data/icons/button_[apply|delete]*.xpm: Make apply/delete icons square
data/icons/tree-[file|folder]-*: Remove now-unused icons, replaced by
tinted versions of icon theme icons
meld/dirdiff.py: Adapt to named icon and tint columns, and move our
custom cell renderer
meld/filediff.py: Adapt and workaround our odd linkmap pixbuf usage
meld/meldapp.py: Use theme icons instead of custom folder/file ones
meld/tree.py: Use named icons and add status-based tint table and column
meld/ui/emblemcellrenderer.py: Move custom cell renderer to its own
file, move to using cairo, and allow for
tinting of icons
meld/ui/gnomeglade.py: Remove now-unused load_pixbuf function
meld/vcview.py: Adapt to use updated EmblemCellRenderer
data/icons/button_apply0.xpm | 11 ++-
data/icons/button_apply1.xpm | 39 ++++++------
data/icons/button_delete.xpm | 11 ++-
data/icons/tree-file-changed.png | Bin 2244 -> 0 bytes
data/icons/tree-file-missing.png | Bin 2191 -> 0 bytes
data/icons/tree-file-new.png | Bin 2258 -> 0 bytes
data/icons/tree-file-newer.png | Bin 2412 -> 0 bytes
data/icons/tree-file-normal.png | Bin 2250 -> 0 bytes
data/icons/tree-folder-changed.png | Bin 840 -> 0 bytes
data/icons/tree-folder-missing.png | Bin 1095 -> 0 bytes
data/icons/tree-folder-new.png | Bin 840 -> 0 bytes
data/icons/tree-folder-normal.png | Bin 840 -> 0 bytes
meld/dirdiff.py | 65 ++++----------------
meld/filediff.py | 17 +++--
meld/meldapp.py | 5 +-
meld/tree.py | 60 +++++++++++--------
meld/ui/emblemcellrenderer.py | 118 ++++++++++++++++++++++++++++++++++++
meld/ui/gnomeglade.py | 11 ---
meld/vcview.py | 16 +++--
19 files changed, 225 insertions(+), 128 deletions(-)
---
diff --git a/data/icons/button_apply0.xpm b/data/icons/button_apply0.xpm
index f21f171..9833895 100644
--- a/data/icons/button_apply0.xpm
+++ b/data/icons/button_apply0.xpm
@@ -1,9 +1,10 @@
/* XPM */
-static char * button_apply_xpm[] = {
-"16 12 3 1",
+static char * button_apply0_xpm[] = {
+"16 16 2 1",
" c None",
". c #000000",
-"+ c #FFFFFF",
+" ",
+" ",
" ",
" ... ",
" ... ",
@@ -15,4 +16,6 @@ static char * button_apply_xpm[] = {
" .... ",
" ... ",
" ... ",
-" ... "};
+" ... ",
+" ",
+" "};
diff --git a/data/icons/button_apply1.xpm b/data/icons/button_apply1.xpm
index 41a3783..884b082 100644
--- a/data/icons/button_apply1.xpm
+++ b/data/icons/button_apply1.xpm
@@ -1,20 +1,21 @@
/* XPM */
-static char *button_apply1[] = {
-/* columns rows colors chars-per-pixel */
-"16 12 2 1",
-" c black",
-". c None",
-/* pixels */
-"................",
-"..... ........",
-".... .........",
-"... ..........",
-".. ..........",
-". .",
-" .",
-". .",
-".. ..........",
-"... ..........",
-".... .........",
-"..... ........"
-};
+static char * button_apply1_xpm[] = {
+"16 16 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ... ",
+" ... ",
+" ... ",
+" .... ",
+" .............. ",
+"............... ",
+" .............. ",
+" .... ",
+" ... ",
+" ... ",
+" ... ",
+" ",
+" ",
+" "};
diff --git a/data/icons/button_delete.xpm b/data/icons/button_delete.xpm
index 09dcd37..a6bb6d7 100644
--- a/data/icons/button_delete.xpm
+++ b/data/icons/button_delete.xpm
@@ -1,8 +1,9 @@
/* XPM */
static char * button_delete_xpm[] = {
-"16 12 2 1",
-". c black",
+"16 16 2 1",
" c None",
+". c #000000",
+" ",
" ",
" .... .... ",
" .... .... ",
@@ -14,5 +15,7 @@ static char * button_delete_xpm[] = {
" ........ ",
" .... .... ",
" .... .... ",
-" .... .... "
-};
+" .... .... ",
+" ",
+" ",
+" "};
diff --git a/meld/dirdiff.py b/meld/dirdiff.py
index db044d2..2abc0a0 100644
--- a/meld/dirdiff.py
+++ b/meld/dirdiff.py
@@ -17,7 +17,6 @@
import filecmp
import paths
from ui import gnomeglade
-import gobject
import gtk
import gtk.keysyms
import math
@@ -32,6 +31,8 @@ import re
import stat
import time
+import ui.emblemcellrenderer
+
gdk = gtk.gdk
################################################################################
@@ -99,9 +100,7 @@ def _files_same(lof, regexes):
_cache[ lof ] = misc.struct(sigs=sigs, result=result)
return result
-COL_EMBLEM = tree.COL_END + 1
-pixbuf_newer = gnomeglade.load_pixbuf(paths.icon_dir("tree-file-newer.png"), 14)
-TYPE_PIXBUF = type(pixbuf_newer)
+COL_EMBLEM, COL_END = tree.COL_END, tree.COL_END + 1
################################################################################
#
@@ -110,49 +109,8 @@ TYPE_PIXBUF = type(pixbuf_newer)
################################################################################
class DirDiffTreeStore(tree.DiffTreeStore):
def __init__(self, ntree):
- types = [type("")] * COL_EMBLEM * ntree
- types[tree.COL_ICON*ntree:tree.COL_ICON*ntree+ntree] = [TYPE_PIXBUF] * ntree
- types[COL_EMBLEM*ntree:COL_EMBLEM*ntree+ntree] = [TYPE_PIXBUF] * ntree
- gtk.TreeStore.__init__(self, *types)
- self.ntree = ntree
- self._setup_default_styles()
-
-################################################################################
-#
-# EmblemCellRenderer
-#
-################################################################################
-class EmblemCellRenderer(gtk.GenericCellRenderer):
- __gproperties__ = {
- 'pixbuf': (gtk.gdk.Pixbuf, 'pixmap property', 'the base pixmap', gobject.PARAM_READWRITE),
- 'emblem': (gtk.gdk.Pixbuf, 'emblem property', 'the emblem pixmap', gobject.PARAM_READWRITE),
- }
- def __init__(self):
- self.__gobject_init__()
- self.renderer = gtk.CellRendererPixbuf()
- self.pixbuf = None
- self.emblem = None
-
- def do_set_property(self, pspec, value):
- if not hasattr(self, pspec.name):
- raise AttributeError, 'unknown property %s' % pspec.name
- setattr(self, pspec.name, value)
- def do_get_property(self, pspec):
- return getattr(self, pspec.name)
-
- def on_render(self, window, widget, background_area, cell_area, expose_area, flags):
- r = self.renderer
- r.props.pixbuf = self.pixbuf
- r.render(window, widget, background_area, cell_area, expose_area, flags)
- r.props.pixbuf = self.emblem
- r.render(window, widget, background_area, cell_area, expose_area, flags)
-
- def on_get_size(self, widget, cell_area):
- if not hasattr(self, "size"):
- r = self.renderer
- r.props.pixbuf = self.pixbuf
- self.size = r.get_size(widget, cell_area)
- return self.size
+ types = [str] * COL_END * ntree
+ tree.DiffTreeStore.__init__(self, ntree, types)
################################################################################
#
@@ -224,12 +182,15 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
self.treeview[i].get_selection().set_mode(gtk.SELECTION_MULTIPLE)
column = gtk.TreeViewColumn()
rentext = gtk.CellRendererText()
- renicon = EmblemCellRenderer()
+ renicon = ui.emblemcellrenderer.EmblemCellRenderer()
column.pack_start(renicon, expand=0)
column.pack_start(rentext, expand=1)
- column.set_attributes(renicon, pixbuf=self.model.column_index(tree.COL_ICON,i),
- emblem=self.model.column_index(COL_EMBLEM,i))
- column.set_attributes(rentext, markup=self.model.column_index(tree.COL_TEXT,i))
+ col_index = self.model.column_index
+ column.set_attributes(rentext, markup=col_index(tree.COL_TEXT,i))
+ column.set_attributes(renicon,
+ icon_name=col_index(tree.COL_ICON, i),
+ emblem_name=col_index(COL_EMBLEM, i),
+ icon_tint=col_index(tree.COL_TINT, i))
self.treeview[i].append_column(column)
self.scrolledwindow[i].get_vadjustment().connect("value-changed", self._sync_vscroll )
self.scrolledwindow[i].get_hadjustment().connect("value-changed", self._sync_hscroll )
@@ -820,7 +781,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
self.model.set_state(it, j, tree.STATE_MODIFIED, isdir)
self.model.set_value(it,
self.model.column_index(COL_EMBLEM, j),
- j == newest_index and pixbuf_newer or None)
+ j == newest_index and "emblem-meld-newer-file" or None)
one_isdir[j] = isdir
for j in range(self.model.ntree):
if not mod_times[j]:
diff --git a/meld/filediff.py b/meld/filediff.py
index 76b5df8..ce9ff0f 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -521,12 +521,17 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
self.textview[i].set_tabs(tabs)
for i in range(2):
self.linkmap[i].queue_draw()
- load = lambda x: gnomeglade.load_pixbuf(paths.icon_dir(x), self.pixels_per_line)
- self.pixbuf_apply0 = load("button_apply0.xpm")
- self.pixbuf_apply1 = load("button_apply1.xpm")
- self.pixbuf_delete = load("button_delete.xpm")
- self.pixbuf_copy0 = load("button_copy0.xpm")
- self.pixbuf_copy1 = load("button_copy1.xpm")
+
+ icon_theme = gtk.icon_theme_get_default()
+ load = lambda x: icon_theme.load_icon(x, self.pixels_per_line, 0)
+ self.pixbuf_apply0 = load("button_apply0")
+ self.pixbuf_apply1 = load("button_apply1")
+ self.pixbuf_delete = load("button_delete")
+ # FIXME: this is a somewhat bizarre action to take, but our non-square
+ # icons really make this kind of handling difficult
+ load = lambda x: icon_theme.load_icon(x, self.pixels_per_line * 2, 0)
+ self.pixbuf_copy0 = load("button_copy0")
+ self.pixbuf_copy1 = load("button_copy1")
def on_preference_changed(self, key, value):
if key == "tab_size":
diff --git a/meld/meldapp.py b/meld/meldapp.py
index 9b2a0cb..96bcdde 100644
--- a/meld/meldapp.py
+++ b/meld/meldapp.py
@@ -505,7 +505,7 @@ class MeldApp(gnomeglade.Component):
def append_dirdiff(self, dirs, auto_compare=False):
assert len(dirs) in (1,2,3)
doc = dirdiff.DirDiff(self.prefs, len(dirs))
- self._append_page(doc, "tree-folder-normal")
+ self._append_page(doc, "folder")
doc.set_locations(dirs)
# FIXME: This doesn't work, as dirdiff behaves differently to vcview
if auto_compare:
@@ -522,7 +522,7 @@ class MeldApp(gnomeglade.Component):
seq.clear()
seq.connect("can-undo", self.on_can_undo)
seq.connect("can-redo", self.on_can_redo)
- self._append_page(doc, "tree-file-normal")
+ self._append_page(doc, "text-x-generic")
doc.set_files(files)
return doc
@@ -557,6 +557,7 @@ class MeldApp(gnomeglade.Component):
assert len(locations) in (1,)
location = locations[0]
doc = vcview.VcView(self.prefs)
+ # FIXME: need a good themed VC icon
self._append_page(doc, "vc-icon")
doc.set_location(location)
if auto_compare:
diff --git a/meld/tree.py b/meld/tree.py
index 3b58927..430fbb3 100644
--- a/meld/tree.py
+++ b/meld/tree.py
@@ -20,27 +20,17 @@ import gtk
from ui import gnomeglade
import paths
-COL_PATH, COL_STATE, COL_TEXT, COL_ICON, COL_END = range(5)
+COL_PATH, COL_STATE, COL_TEXT, COL_ICON, COL_TINT, COL_END = range(6)
from vc._vc import STATE_IGNORED, STATE_NONE, STATE_NORMAL, STATE_NOCHANGE, \
STATE_ERROR, STATE_EMPTY, STATE_NEW, \
STATE_MODIFIED, STATE_CONFLICT, STATE_REMOVED, \
STATE_MISSING, STATE_MAX
-load = lambda x,s=14: gnomeglade.load_pixbuf(paths.icon_dir(x), s)
-pixbuf_folder = load("tree-folder-normal.png", 20)
-pixbuf_folder_new = load("tree-folder-new.png", 20)
-pixbuf_folder_changed = load("tree-folder-changed.png", 20)
-pixbuf_folder_missing = load("tree-folder-missing.png", 20)
-pixbuf_file = load("tree-file-normal.png")
-pixbuf_file_new = load("tree-file-new.png")
-pixbuf_file_changed = load("tree-file-changed.png")
-pixbuf_file_missing = load("tree-file-missing.png")
class DiffTreeStore(gtk.TreeStore):
- def __init__(self, ntree = 3, num_col = COL_END):
- types = [type("")] * num_col * ntree
- types[COL_ICON*ntree:COL_ICON*ntree+ntree] = [type(pixbuf_file)] * ntree
+
+ def __init__(self, ntree, types):
gtk.TreeStore.__init__(self, *types)
self.ntree = ntree
self._setup_default_styles()
@@ -60,20 +50,36 @@ class DiffTreeStore(gtk.TreeStore):
'<span foreground="#888888" strikethrough="true">%s</span>' # STATE_MISSING
]
assert len(self.textstyle) == STATE_MAX
+
self.pixstyle = [
- (pixbuf_file, pixbuf_folder), # IGNORED
- (pixbuf_file, pixbuf_folder), # NONE
- (pixbuf_file, pixbuf_folder), # NORMAL
- (pixbuf_file, pixbuf_folder), # NOCHANGE
- (None, None), # ERROR
- (None, None), # EMPTY
- (pixbuf_file_new, pixbuf_folder_new), # NEW
- (pixbuf_file_changed, pixbuf_folder_changed), # MODIFIED
- (pixbuf_file_changed, pixbuf_folder_changed), # CONFLICT
- (pixbuf_file_changed, pixbuf_folder_changed), # REMOVED
- (pixbuf_file_missing, pixbuf_folder_missing) # MISSING
+ ("text-x-generic", "folder"), # IGNORED
+ ("text-x-generic", "folder"), # NONE
+ ("text-x-generic", "folder"), # NORMAL
+ ("text-x-generic", "folder"), # NOCHANGE
+ (None, None), # ERROR
+ (None, None), # EMPTY
+ ("text-x-generic", "folder"), # NEW
+ ("text-x-generic", "folder"), # MODIFIED
+ ("text-x-generic", "folder"), # CONFLICT
+ ("text-x-generic", "folder"), # REMOVED
+ ("text-x-generic", "folder"), # MISSING
]
- assert len(self.pixstyle) == STATE_MAX
+
+ self.icon_tints = [
+ (None, None), # IGNORED
+ (None, None), # NONE
+ (None, None), # NORMAL
+ (None, None), # NOCHANGE
+ (None, None), # ERROR
+ (None, None), # EMPTY
+ ("#00ff00", None), # NEW
+ ("#ff0000", None), # MODIFIED
+ ("#ff0000", None), # CONFLICT
+ ("#ff0000", None), # REMOVED
+ ("#ffffff", "#ffffff"), # MISSING
+ ]
+
+ assert len(self.pixstyle) == len(self.icon_tints) == STATE_MAX
def add_entries(self, parent, names):
child = self.append(parent)
@@ -94,6 +100,8 @@ class DiffTreeStore(gtk.TreeStore):
for i in range(self.ntree):
self.set_value(err, self.column_index(COL_STATE,i), STATE_ERROR)
self.set_value(err, self.column_index(COL_ICON, pane), self.pixstyle[STATE_ERROR][0] )
+ self.set_value(err, self.column_index(COL_TINT, pane),
+ self.icon_tints[STATE_ERROR][0])
self.set_value(err, self.column_index(COL_TEXT, pane), self.textstyle[STATE_ERROR] % gobject.markup_escape_text(msg))
def value_paths(self, it):
@@ -109,9 +117,11 @@ class DiffTreeStore(gtk.TreeStore):
STATE = self.column_index(COL_STATE, pane)
TEXT = self.column_index(COL_TEXT, pane)
ICON = self.column_index(COL_ICON, pane)
+ TINT = self.column_index(COL_TINT, pane)
self.set_value(it, STATE, state)
self.set_value(it, TEXT, self.textstyle[state] % name)
self.set_value(it, ICON, self.pixstyle[state][isdir])
+ self.set_value(it, TINT, self.icon_tints[state][isdir])
def get_state(self, it, pane):
STATE = self.column_index(COL_STATE, pane)
diff --git a/meld/ui/emblemcellrenderer.py b/meld/ui/emblemcellrenderer.py
new file mode 100644
index 0000000..283360b
--- /dev/null
+++ b/meld/ui/emblemcellrenderer.py
@@ -0,0 +1,118 @@
+### Copyright (C) 2002-2006 Stephen Kennedy <stevek gnome org>
+### Copyright (C) 2010 Kai Willadsen <kai willadsen gmail com>
+
+### This program is free software; you can redistribute it and/or modify
+### it under the terms of the GNU General Public License as published by
+### the Free Software Foundation; either version 2 of the License, or
+### (at your option) any later version.
+
+### This program is distributed in the hope that it will be useful,
+### but WITHOUT ANY WARRANTY; without even the implied warranty of
+### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+### GNU General Public License for more details.
+
+### You should have received a copy of the GNU General Public License
+### along with this program; if not, write to the Free Software
+### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+import cairo
+import gobject
+import gtk
+
+
+class EmblemCellRenderer(gtk.GenericCellRenderer):
+
+ __gproperties__ = {
+ "icon-name": (str, "Named icon",
+ "Name for base icon",
+ "text-x-generic", gobject.PARAM_READWRITE),
+ "emblem-name": (str, "Named emblem icon",
+ "Name for emblem icon to overlay",
+ None, gobject.PARAM_READWRITE),
+ "icon-tint": (str, "Icon tint",
+ "GDK-parseable color to be used to tint icon",
+ None, gobject.PARAM_READWRITE),
+ }
+
+ def __init__(self):
+ self.__gobject_init__()
+ self._icon_name = "text-x-generic"
+ self._emblem_name = None
+ self._icon_tint = None
+ self._tint_color = None
+ self._state = None
+ # FIXME: hardcoded sizes
+ self._icon_size = 16
+ self._emblem_size = 8
+
+ def do_set_property(self, pspec, value):
+ if pspec.name == "icon-name":
+ self._icon_name = value
+ elif pspec.name == "emblem-name":
+ self._emblem_name = value
+ elif pspec.name == "icon-tint":
+ self._icon_tint = value
+ if self._icon_tint:
+ self._tint_color = gtk.gdk.color_parse(value)
+ else:
+ self._tint_color = None
+ else:
+ raise AttributeError, "unknown property %s" % name
+
+ def do_get_property(self, pspec):
+ if pspec.name == "icon-name":
+ return self._icon_name
+ elif pspec.name == "emblem-name":
+ return self._emblem_name
+ elif pspec.name == "icon-tint":
+ return self._icon_tint
+ else:
+ raise AttributeError, "unknown property %s" % name
+
+ def on_render(self, window, widget, background_area, cell_area,
+ expose_area, flags):
+ context = window.cairo_create()
+ context.translate(cell_area.x, cell_area.y)
+ context.rectangle(0, 0, cell_area.width, cell_area.height)
+ context.clip()
+
+ # TODO: Incorporate padding
+ context.push_group()
+ if self._icon_name:
+ icon_theme = gtk.icon_theme_get_default()
+ # Assumes square icons; may break if we don't get the requested size
+ pixbuf = icon_theme.load_icon(self._icon_name,
+ self._icon_size, 0).copy() # FIXME: copy?
+
+ context.set_operator(cairo.OPERATOR_SOURCE)
+ context.set_source_pixbuf(pixbuf, 0, 0)
+ context.rectangle(0, 0, cell_area.width, cell_area.height)
+ context.fill()
+
+ if self._tint_color:
+ c = self._tint_color
+ context.set_source_rgba(c.red, c.green, c.blue, 0.2)
+ context.set_operator(cairo.OPERATOR_ATOP)
+ context.paint()
+
+ if self._emblem_name:
+ emblem_pixbuf = icon_theme.load_icon(self._emblem_name,
+ self._emblem_size, 0)
+
+ x_offset = self._icon_size - self._emblem_size
+ context.set_operator(cairo.OPERATOR_OVER)
+ context.set_source_pixbuf(emblem_pixbuf, x_offset, 0)
+ context.rectangle(x_offset, 0,
+ cell_area.width, self._emblem_size)
+ context.fill()
+
+ context.set_source(context.pop_group())
+ context.set_operator(cairo.OPERATOR_OVER)
+ context.paint()
+
+ def on_get_size(self, widget, cell_area):
+ # TODO: Account for cell_area if we have alignment set
+ x_offset, y_offset = 0, 0
+ width, height = self._icon_size, self._icon_size
+ # TODO: Account for padding
+ return (x_offset, y_offset, width, height)
diff --git a/meld/ui/gnomeglade.py b/meld/ui/gnomeglade.py
index a4336bc..8f4b1e2 100644
--- a/meld/ui/gnomeglade.py
+++ b/meld/ui/gnomeglade.py
@@ -116,16 +116,5 @@ def connect_signal_handlers(obj):
print ('Warning: attribute %r not connected'
' as a signal handler' % (attr,))
-def load_pixbuf(fname, size=0):
- """Load an image from a file as a pixbuf, with optional resizing.
- """
- image = gtk.Image()
- image.set_from_file(fname)
- image = image.get_pixbuf()
- if size:
- aspect = float(image.get_height()) / image.get_width()
- image = image.scale_simple(size, int(aspect*size), 2)
- return image
-
import gladesupport
diff --git a/meld/vcview.py b/meld/vcview.py
index 4b47797..5cbd6a4 100644
--- a/meld/vcview.py
+++ b/meld/vcview.py
@@ -25,6 +25,7 @@ import misc
from ui import gnomeglade
import melddoc
import paths
+import ui.emblemcellrenderer
import vc
################################################################################
@@ -88,7 +89,9 @@ COL_LOCATION, COL_STATUS, COL_REVISION, COL_TAG, COL_OPTIONS, COL_END = range(tr
class VcTreeStore(tree.DiffTreeStore):
def __init__(self):
- tree.DiffTreeStore.__init__(self, 1, COL_END)
+ ntree = 1
+ types = [str] * COL_END * ntree
+ tree.DiffTreeStore.__init__(self, ntree, types)
self.textstyle[tree.STATE_MISSING] = '<span foreground="#000088" strikethrough="true" weight="bold">%s</span>'
################################################################################
@@ -161,12 +164,15 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
self.treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
self.treeview.set_headers_visible(1)
column = gtk.TreeViewColumn( _("Name") )
- renpix = gtk.CellRendererPixbuf()
+ renicon = ui.emblemcellrenderer.EmblemCellRenderer()
rentext = gtk.CellRendererText()
- column.pack_start(renpix, expand=0)
+ column.pack_start(renicon, expand=0)
column.pack_start(rentext, expand=1)
- column.set_attributes(renpix, pixbuf=self.model.column_index(tree.COL_ICON, 0))
- column.set_attributes(rentext, markup=self.model.column_index(tree.COL_TEXT, 0))
+ col_index = self.model.column_index
+ column.set_attributes(renicon,
+ icon_name=col_index(tree.COL_ICON, 0),
+ icon_tint=col_index(tree.COL_TINT, 0))
+ column.set_attributes(rentext, markup=col_index(tree.COL_TEXT, 0))
self.treeview.append_column(column)
def addCol(name, num):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]