[meld] Remember active state filters for VcView
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Remember active state filters for VcView
- Date: Sun, 1 Jan 2012 00:38:44 +0000 (UTC)
commit c51864a8000cf4011333723c9444a5b4bd5e525c
Author: Kai Willadsen <kai willadsen gmail com>
Date: Sun Jan 1 10:31:29 2012 +1000
Remember active state filters for VcView
meld/preferences.py | 2 +
meld/vcview.py | 59 +++++++++++++++++++++++++++++++++++---------------
2 files changed, 43 insertions(+), 18 deletions(-)
---
diff --git a/meld/preferences.py b/meld/preferences.py
index 5fe7430..d807e01 100644
--- a/meld/preferences.py
+++ b/meld/preferences.py
@@ -251,6 +251,8 @@ class MeldPreferences(prefs.Preferences):
"statusbar_visible" : prefs.Value(prefs.BOOL, True),
"dir_status_filters": prefs.Value(prefs.LIST,
['normal', 'modified', 'new']),
+ "vc_status_filters": prefs.Value(prefs.LIST,
+ ['flatten', 'modified']),
}
def __init__(self):
diff --git a/meld/vcview.py b/meld/vcview.py
index f5355e8..8eeeaf5 100644
--- a/meld/vcview.py
+++ b/meld/vcview.py
@@ -1,5 +1,5 @@
### Copyright (C) 2002-2006 Stephen Kennedy <stevek gnome org>
-### Copyright (C) 2010-2011 Kai Willadsen <kai willadsen gmail com>
+### Copyright (C) 2010-2012 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
@@ -111,6 +111,14 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
"VcRevert": ("revert_command", ()),
}
+ state_actions = {
+ "flatten": ("VcFlatten", None),
+ "modified": ("VcShowModified", entry_modified),
+ "normal": ("VcShowNormal", entry_normal),
+ "unknown": ("VcShowNonVC", entry_nonvc),
+ "ignored": ("VcShowIgnored", entry_ignored),
+ }
+
def __init__(self, prefs):
melddoc.MeldDoc.__init__(self, prefs)
gnomeglade.Component.__init__(self, paths.ui_dir("vcview.ui"), "vcview")
@@ -128,11 +136,11 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
)
toggleactions = (
- ("VcFlatten", gtk.STOCK_GOTO_BOTTOM, _("_Flatten"), None, _("Flatten directories"), self.on_button_flatten_toggled, True),
- ("VcShowModified","filter-modified-24", _("_Modified"), None, _("Show modified"), self.on_button_filter_toggled, True),
- ("VcShowNormal", "filter-normal-24", _("_Normal"), None, _("Show normal"), self.on_button_filter_toggled, False),
- ("VcShowNonVC", "filter-nonvc-24", _("Non _VC"), None, _("Show unversioned files"), self.on_button_filter_toggled, False),
- ("VcShowIgnored", "filter-ignored-24", _("Ignored"), None, _("Show ignored files"), self.on_button_filter_toggled, False),
+ ("VcFlatten", gtk.STOCK_GOTO_BOTTOM, _("_Flatten"), None, _("Flatten directories"), self.on_button_flatten_toggled, False),
+ ("VcShowModified","filter-modified-24", _("_Modified"), None, _("Show modified"), self.on_filter_state_toggled, False),
+ ("VcShowNormal", "filter-normal-24", _("_Normal"), None, _("Show normal"), self.on_filter_state_toggled, False),
+ ("VcShowNonVC", "filter-nonvc-24", _("Non _VC"), None, _("Show unversioned files"), self.on_filter_state_toggled, False),
+ ("VcShowIgnored", "filter-ignored-24", _("Ignored"), None, _("Show ignored files"), self.on_filter_state_toggled, False),
)
self.ui_file = paths.ui_dir("vcview-ui.xml")
@@ -181,6 +189,14 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
addCol(_("Tag"), COL_TAG)
addCol(_("Options"), COL_OPTIONS)
+
+ self.state_filters = []
+ for s in self.state_actions:
+ if s in self.prefs.vc_status_filters:
+ action_name = self.state_actions[s][0]
+ self.state_filters.append(s)
+ self.actiongroup.get_action(action_name).set_active(True)
+
class ConsoleStream(object):
def __init__(self, textview):
self.textview = textview
@@ -308,15 +324,11 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
rootname = self.model.value_path( self.model.get_iter(rootpath), 0 )
prefixlen = 1 + len( self.model.value_path( self.model.get_iter_root(), 0 ) )
todo = [ (rootpath, rootname) ]
- filters = []
- if self.actiongroup.get_action("VcShowModified").get_active():
- filters.append( entry_modified )
- if self.actiongroup.get_action("VcShowNormal").get_active():
- filters.append( entry_normal )
- if self.actiongroup.get_action("VcShowNonVC").get_active():
- filters.append( entry_nonvc )
- if self.actiongroup.get_action("VcShowIgnored").get_active():
- filters.append( entry_ignored )
+
+ active_action = lambda a: self.actiongroup.get_action(a).get_active()
+ filters = [a[1] for a in self.state_actions.values() if \
+ active_action(a[0]) and a[1]]
+
def showable(entry):
for f in filters:
if f(entry): return 1
@@ -420,9 +432,20 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
return False
def on_button_flatten_toggled(self, button):
- self.treeview_column_location.set_visible(self.actiongroup.get_action("VcFlatten").get_active())
- self.refresh()
- def on_button_filter_toggled(self, button):
+ action = self.actiongroup.get_action("VcFlatten")
+ self.treeview_column_location.set_visible(action.get_active())
+ self.on_filter_state_toggled(button)
+
+ def on_filter_state_toggled(self, button):
+ active_action = lambda a: self.actiongroup.get_action(a).get_active()
+ active_filters = [a for a in self.state_actions if \
+ active_action(self.state_actions[a][0])]
+
+ if set(active_filters) == set(self.state_filters):
+ return
+
+ self.state_filters = active_filters
+ self.prefs.vc_status_filters = active_filters
self.refresh()
def _get_selected_files(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]