[meld] Only show columns that will be populated by the VC in use (bgo#698495)
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Only show columns that will be populated by the VC in use (bgo#698495)
- Date: Tue, 23 Apr 2013 21:59:47 +0000 (UTC)
commit c3f3ff922248b5a496db94d06db487a189b9b5fe
Author: Kai Willadsen <kai willadsen gmail com>
Date: Wed Apr 24 06:34:12 2013 +1000
Only show columns that will be populated by the VC in use (bgo#698495)
meld/vc/__init__.py | 2 ++
meld/vc/_vc.py | 4 ++++
meld/vc/cvs.py | 3 +++
meld/vc/fossil.py | 2 ++
meld/vc/git.py | 2 ++
meld/vc/svn.py | 3 +++
meld/vcview.py | 36 +++++++++++++++++++++++-------------
7 files changed, 39 insertions(+), 13 deletions(-)
---
diff --git a/meld/vc/__init__.py b/meld/vc/__init__.py
index f78dd53..b89e1f0 100644
--- a/meld/vc/__init__.py
+++ b/meld/vc/__init__.py
@@ -24,6 +24,8 @@
import os
import glob
from . import _null
+from ._vc import DATA_NAME, DATA_STATE, DATA_REVISION, DATA_TAG, DATA_OPTIONS
+
def load_plugins():
_vcdir = os.path.dirname(os.path.abspath(__file__))
diff --git a/meld/vc/_vc.py b/meld/vc/_vc.py
index 8bd05ed..969182a 100644
--- a/meld/vc/_vc.py
+++ b/meld/vc/_vc.py
@@ -45,6 +45,8 @@ CONFLICT_THIS = CONFLICT_LOCAL
conflicts = [_("Merged"), _("Base"), _("Local"), _("Remote")]
assert len(conflicts) == CONFLICT_MAX
+DATA_NAME, DATA_STATE, DATA_REVISION, DATA_TAG, DATA_OPTIONS = list(range(5))
+
class Entry(object):
# These are the possible states of files. Be sure to get the colons correct.
@@ -88,6 +90,8 @@ class Vc(object):
VC_ROOT_WALK = True
VC_METADATA = None
+ VC_COLUMNS = (DATA_NAME, DATA_STATE)
+
def __init__(self, location):
# Save the requested comparison location. The location may be a
# sub-directory of the repository we are diffing and can be useful in
diff --git a/meld/vc/cvs.py b/meld/vc/cvs.py
index f61b198..171e0ad 100644
--- a/meld/vc/cvs.py
+++ b/meld/vc/cvs.py
@@ -41,6 +41,9 @@ class Vc(_vc.Vc):
VC_ROOT_WALK = False
PATCH_INDEX_RE = "^Index:(.*)$"
+ VC_COLUMNS = (_vc.DATA_NAME, _vc.DATA_STATE, _vc.DATA_REVISION,
+ _vc.DATA_TAG, _vc.DATA_OPTIONS)
+
def __init__(self, location):
super(Vc, self).__init__(location)
if not _vc.call(["which", self.ALT_CMD]):
diff --git a/meld/vc/fossil.py b/meld/vc/fossil.py
index b99fd8a..ba4a203 100644
--- a/meld/vc/fossil.py
+++ b/meld/vc/fossil.py
@@ -37,6 +37,8 @@ class Vc(_vc.CachedVc):
VC_METADATA = [".fslckout", "_FOSSIL_", ".fos"] # One or the other
PATCH_INDEX_RE = "^--- (.*)$"
+ VC_COLUMNS = (_vc.DATA_NAME, _vc.DATA_STATE, _vc.DATA_REVISION)
+
state_map = {
'ADDED' : _vc.STATE_NEW,
'DELETED' : _vc.STATE_REMOVED,
diff --git a/meld/vc/git.py b/meld/vc/git.py
index 5b296c1..382c761 100644
--- a/meld/vc/git.py
+++ b/meld/vc/git.py
@@ -47,6 +47,8 @@ class Vc(_vc.CachedVc):
PATCH_INDEX_RE = "^diff --git [ac]/(.*) [bw]/.*$"
GIT_DIFF_FILES_RE = ":(\d+) (\d+) [a-z0-9]+ [a-z0-9]+ ([ADMU])\t(.*)"
+ VC_COLUMNS = (_vc.DATA_NAME, _vc.DATA_STATE, _vc.DATA_OPTIONS)
+
conflict_map = {
# These are the arguments for git-show
# CONFLICT_MERGED has no git-show argument unfortunately.
diff --git a/meld/vc/svn.py b/meld/vc/svn.py
index 49e5ec9..73e7988 100644
--- a/meld/vc/svn.py
+++ b/meld/vc/svn.py
@@ -39,6 +39,9 @@ class Vc(_vc.CachedVc):
VC_DIR = ".svn"
VC_ROOT_WALK = False
PATCH_INDEX_RE = "^Index:(.*)$"
+
+ VC_COLUMNS = (_vc.DATA_NAME, _vc.DATA_STATE, _vc.DATA_REVISION)
+
state_map = {
"unversioned": _vc.STATE_NONE,
"added": _vc.STATE_NEW,
diff --git a/meld/vcview.py b/meld/vcview.py
index 6a26ea0..f60439b 100644
--- a/meld/vcview.py
+++ b/meld/vcview.py
@@ -201,7 +201,9 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
self.treeview.set_headers_visible(1)
self.treeview.set_search_equal_func(self.treeview_search_cb)
self.current_path, self.prev_path, self.next_path = None, None, None
- column = gtk.TreeViewColumn( _("Name") )
+
+ self.column_name_map = {}
+ column = gtk.TreeViewColumn(_("Name"))
renicon = emblemcellrenderer.EmblemCellRenderer()
rentext = gtk.CellRendererText()
column.pack_start(renicon, expand=0)
@@ -216,23 +218,25 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
style=col_index(tree.COL_STYLE, 0),
weight=col_index(tree.COL_WEIGHT, 0),
strikethrough=col_index(tree.COL_STRIKE, 0))
+ column_index = self.treeview.append_column(column) - 1
+ self.column_name_map[vc.DATA_NAME] = column_index
- self.treeview.append_column(column)
-
- def addCol(name, num):
+ def addCol(name, num, data_name=None):
column = gtk.TreeViewColumn(name)
rentext = gtk.CellRendererText()
column.pack_start(rentext, expand=0)
- column.set_attributes(rentext, markup=self.model.column_index(num, 0))
- self.treeview.append_column(column)
+ column.set_attributes(rentext,
+ markup=self.model.column_index(num, 0))
+ column_index = self.treeview.append_column(column) - 1
+ if data_name:
+ self.column_name_map[data_name] = column_index
return column
- self.treeview_column_location = addCol( _("Location"), COL_LOCATION)
- addCol(_("Status"), COL_STATUS)
- addCol(_("Rev"), COL_REVISION)
- addCol(_("Tag"), COL_TAG)
- addCol(_("Options"), COL_OPTIONS)
-
+ self.treeview_column_location = addCol(_("Location"), COL_LOCATION)
+ addCol(_("Status"), COL_STATUS, vc.DATA_STATE)
+ addCol(_("Revision"), COL_REVISION, vc.DATA_REVISION)
+ addCol(_("Tag"), COL_TAG, vc.DATA_TAG)
+ addCol(_("Options"), COL_OPTIONS, vc.DATA_OPTIONS)
self.state_filters = []
for s in self.state_actions:
@@ -275,6 +279,11 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
melddoc.MeldDoc.on_container_switch_in_event(self, ui)
self.scheduler.add_task(self.on_treeview_cursor_changed)
+ def update_visible_columns(self):
+ for data_id in self.column_name_map:
+ col = self.treeview.get_column(self.column_name_map[data_id])
+ col.set_visible(data_id in self.vc.VC_COLUMNS)
+
def update_actions_sensitivity(self):
"""Disable actions that use not implemented VC plugin methods
"""
@@ -339,12 +348,13 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
self.combobox_vcs.set_sensitive(len(vcs) > 1)
self.combobox_vcs.lock = False
self.combobox_vcs.set_active(default_active)
-
+
def on_vc_change(self, cb):
if not cb.lock:
self.vc = cb.get_model()[cb.get_active_iter()][1]
self._set_location(self.vc.location)
self.update_actions_sensitivity()
+ self.update_visible_columns()
def set_location(self, location):
self.choose_vc(vc.get_vcs(os.path.abspath(location or ".")))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]