[meld: 8/12] move unsafe_set to DiffTreeStore
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld: 8/12] move unsafe_set to DiffTreeStore
- Date: Sun, 2 Sep 2018 00:28:03 +0000 (UTC)
commit ece36def7ff3d982e103f2616e0920e0c9124f01
Author: hugosenari <hugosenari gmail com>
Date: Sun Aug 5 07:25:53 2018 -0300
move unsafe_set to DiffTreeStore
meld/tree.py | 39 ++++++++++++++++++++++++++++++++++++++-
meld/treehelpers.py | 40 ----------------------------------------
2 files changed, 38 insertions(+), 41 deletions(-)
---
diff --git a/meld/tree.py b/meld/tree.py
index 92e7221f..9094616b 100644
--- a/meld/tree.py
+++ b/meld/tree.py
@@ -16,8 +16,11 @@
import os
+from gi.module import get_introspection_module
from gi.repository import Gdk
from gi.repository import GLib
+from gi.repository import GObject
+from gi.repository import Gtk
from gi.repository import Pango
from meld.misc import colour_lookup_with_fallback
@@ -29,6 +32,13 @@ from meld.vc._vc import ( # noqa: F401
STATE_NOCHANGE, STATE_NONE, STATE_NONEXIST, STATE_NORMAL, STATE_REMOVED,
)
+_GIGtk = None
+
+try:
+ _GIGtk = get_introspection_module('Gtk')
+except Exception:
+ pass
+
COL_PATH, COL_STATE, COL_TEXT, COL_ICON, COL_TINT, COL_FG, COL_STYLE, \
COL_WEIGHT, COL_STRIKE, COL_END = list(range(10))
@@ -43,7 +53,10 @@ class DiffTreeStore(SearchableTreeStore):
for col_type in (COL_TYPES + tuple(types)):
full_types.extend([col_type] * ntree)
super().__init__(*full_types)
- self.set_none_of_cols(full_types)
+ self._none_of_cols = {
+ col_num: GObject.Value(col_type, None)
+ for col_num, col_type in enumerate(full_types)
+ }
self.ntree = ntree
self._setup_default_styles()
@@ -183,6 +196,30 @@ class DiffTreeStore(SearchableTreeStore):
if state in states:
yield it
+ def unsafe_set(self, treeiter, keys_values):
+ """ This must be fastest than super.set,
+ at the cost that may crash the application if you don't
+ know what your're passing here.
+ ie: pass treeiter or column as None crash meld
+
+ treeiter: Gtk.TreeIter
+ keys_values: dict<column, value>
+ column: Int col index
+ value: Str (UTF-8), Int, Float, Double, Boolean, None or GObject
+
+ return None
+ """
+ safe_keys_values = {
+ col: val if val is not None else self._none_of_cols.get(col)
+ for col, val in keys_values.items()
+ }
+ if _GIGtk and treeiter:
+ columns = [col for col in safe_keys_values.keys()]
+ values = [val for val in safe_keys_values.values()]
+ _GIGtk.TreeStore.set(self, treeiter, columns, values)
+ else:
+ self.set(treeiter, safe_keys_values)
+
def treeview_search_cb(model, column, key, it, data):
# If the key contains a path separator, search the whole path,
diff --git a/meld/treehelpers.py b/meld/treehelpers.py
index 0183cb94..abf0787b 100644
--- a/meld/treehelpers.py
+++ b/meld/treehelpers.py
@@ -14,19 +14,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from gi.module import get_introspection_module
-from gi.repository import GObject
from gi.repository import Gtk
-_GIGtk = None
-
-try:
- _GIGtk = get_introspection_module('Gtk')
-except Exception:
- pass
-
-
def tree_path_as_tuple(path):
"""Get the path indices as a tuple
@@ -81,12 +71,6 @@ def refocus_deleted_path(model, path):
class SearchableTreeStore(Gtk.TreeStore):
- def set_none_of_cols(self, types):
- self._none_of_cols = {
- col_num: GObject.Value(col_type, None)
- for col_num, col_type in enumerate(types)
- }
-
def inorder_search_down(self, it):
while it:
child = self.iter_children(it)
@@ -146,27 +130,3 @@ class SearchableTreeStore(Gtk.TreeStore):
break
return prev_path, next_path
-
- def unsafe_set(self, treeiter, keys_values):
- """ This must be fastest than super.set,
- at the cost that may crash the application if you don't
- know what your're passing here.
- ie: pass treeiter or column as None crash meld
-
- treeiter: Gtk.TreeIter
- keys_values: dict<column, value>
- column: Int col index
- value: Str (UTF-8), Int, Float, Double, Boolean, None or GObject
-
- return None
- """
- safe_keys_values = {
- col: val if val is not None else self._none_of_cols.get(col)
- for col, val in keys_values.items()
- }
- if _GIGtk and treeiter:
- columns = [col for col in safe_keys_values.keys()]
- values = [val for val in safe_keys_values.values()]
- _GIGtk.TreeStore.set(self, treeiter, columns, values)
- else:
- self.set(treeiter, safe_keys_values)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]