[meld] ui.cellrenderers: Add a file perms cell renderer and update dirdiff
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] ui.cellrenderers: Add a file perms cell renderer and update dirdiff
- Date: Sat, 16 Dec 2017 02:37:52 +0000 (UTC)
commit 3524f3cfd9d3c87477b66fa01ef0843665f0ab87
Author: Kai Willadsen <kai willadsen gmail com>
Date: Sun Oct 23 13:54:19 2016 +1000
ui.cellrenderers: Add a file perms cell renderer and update dirdiff
meld/dirdiff.py | 20 ++++++--------------
meld/ui/cellrenderers.py | 32 ++++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 14 deletions(-)
---
diff --git a/meld/dirdiff.py b/meld/dirdiff.py
index c6f6fc12..7b85bcff 100644
--- a/meld/dirdiff.py
+++ b/meld/dirdiff.py
@@ -45,7 +45,8 @@ from meld.misc import all_same
from meld.recent import RecentType
from meld.settings import bind_settings, meldsettings, settings
from meld.treehelpers import refocus_deleted_path
-from meld.ui.cellrenderers import CellRendererByteSize, CellRendererDate
+from meld.ui.cellrenderers import (
+ CellRendererByteSize, CellRendererDate, CellRendererFileMode)
################################################################################
@@ -210,7 +211,7 @@ COL_EMBLEM, COL_SIZE, COL_TIME, COL_PERMS, COL_END = \
class DirDiffTreeStore(tree.DiffTreeStore):
def __init__(self, ntree):
- tree.DiffTreeStore.__init__(self, ntree, [str, object, object, str])
+ tree.DiffTreeStore.__init__(self, ntree, [str, object, object, object])
class CanonicalListing(object):
@@ -406,9 +407,9 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
# Create permissions CellRenderer
column = Gtk.TreeViewColumn(_("Permissions"))
column.set_resizable(True)
- rentext = Gtk.CellRendererText()
+ rentext = CellRendererFileMode()
column.pack_start(rentext, False)
- column.set_attributes(rentext, markup=col_index(COL_PERMS, i))
+ column.set_attributes(rentext, file_mode=col_index(COL_PERMS, i))
self.treeview[i].append_column(column)
self.columns_dict[i]["permissions"] = column
@@ -1317,17 +1318,8 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
SIZE = self.model.column_index(COL_SIZE, j)
self.model.set_value(it, SIZE, sizes[j])
- def format_mode(mode):
- perms = []
- rwx = ((4, 'r'), (2, 'w'), (1, 'x'))
- for group_index in (6, 3, 0):
- group = mode >> group_index & 7
- perms.extend([p if group & i else '-' for i, p in rwx])
- return "".join(perms)
-
PERMS = self.model.column_index(COL_PERMS, j)
- perm_str = format_mode(perms[j])
- self.model.set_value(it, PERMS, perm_str)
+ self.model.set_value(it, PERMS, perms[j])
for j in range(self.model.ntree):
if not mod_times[j]:
diff --git a/meld/ui/cellrenderers.py b/meld/ui/cellrenderers.py
index c4613c6e..18089e3f 100644
--- a/meld/ui/cellrenderers.py
+++ b/meld/ui/cellrenderers.py
@@ -79,3 +79,35 @@ class CellRendererByteSize(Gtk.CellRendererText):
getter=get_bytesize,
setter=set_bytesize,
)
+
+
+class CellRendererFileMode(Gtk.CellRendererText):
+
+ __gtype_name__ = "CellRendererFileMode"
+
+ DATETIME_FORMAT = "%a %d %b %Y %H:%M:%S"
+
+ def get_file_mode(self):
+ return getattr(self, '_file_mode', None)
+
+ def set_file_mode(self, value):
+ if value == self.get_file_mode():
+ return
+ if value is None:
+ mode_str = ''
+ else:
+ perms = []
+ rwx = ((4, 'r'), (2, 'w'), (1, 'x'))
+ for group_index in (6, 3, 0):
+ group = value >> group_index & 7
+ perms.extend([p if group & i else '-' for i, p in rwx])
+ mode_str = "".join(perms)
+ self.props.markup = mode_str
+ self._file_mode = value
+
+ file_mode = GObject.property(
+ type=object,
+ nick="Byte size to display",
+ getter=get_file_mode,
+ setter=set_file_mode,
+ )
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]