[gedit-plugins] textsize: make it implement the view activatable
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit-plugins] textsize: make it implement the view activatable
- Date: Sun, 12 Jan 2014 11:43:20 +0000 (UTC)
commit 8039ad8aa796fe93acc4ea5508cebf4333103d99
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Sun Jan 12 12:37:06 2014 +0100
textsize: make it implement the view activatable
plugins/textsize/Makefile.am | 2 +-
plugins/textsize/textsize/__init__.py | 50 ++++----------------
.../{documenthelper.py => viewactivatable.py} | 43 +++++++++--------
3 files changed, 33 insertions(+), 62 deletions(-)
---
diff --git a/plugins/textsize/Makefile.am b/plugins/textsize/Makefile.am
index ff943a7..6b58881 100644
--- a/plugins/textsize/Makefile.am
+++ b/plugins/textsize/Makefile.am
@@ -2,7 +2,7 @@ if ENABLE_PYTHON
plugins_textsizedir = $(plugindir)/textsize
plugins_textsize_PYTHON = \
plugins/textsize/textsize/__init__.py \
- plugins/textsize/textsize/documenthelper.py \
+ plugins/textsize/textsize/viewactivatable.py \
plugins/textsize/textsize/signals.py
plugin_in_files += plugins/textsize/textsize.plugin.desktop.in
diff --git a/plugins/textsize/textsize/__init__.py b/plugins/textsize/textsize/__init__.py
index 70beb93..dc8db88 100644
--- a/plugins/textsize/textsize/__init__.py
+++ b/plugins/textsize/textsize/__init__.py
@@ -23,7 +23,7 @@
# Boston, MA 02110-1301, USA.
from gi.repository import GObject, Gio, Gtk, Gdk, Gedit
-from .documenthelper import DocumentHelper
+from .viewactivatable import TextSizeViewActivatable
import gettext
from gpdefs import *
@@ -59,25 +59,11 @@ class TextSizeWindowActivatable(GObject.Object, Gedit.WindowActivatable):
GObject.Object.__init__(self)
def do_activate(self):
- self._views = {}
-
- # Insert menu items
self._insert_menu()
- # Insert document helpers
- for view in self.window.get_views():
- self.add_document_helper(view)
-
- self.window.connect('tab-added', self.on_tab_added)
- self.window.connect('tab-removed', self.on_tab_removed)
-
def do_deactivate(self):
- # Remove any installed menu items
self._remove_menu()
- for view in self.window.get_views():
- self.remove_document_helper(view)
-
def _insert_menu(self):
action = Gio.SimpleAction(name="text-larger")
action.connect('activate', self.on_larger_text_activate)
@@ -112,43 +98,25 @@ class TextSizeWindowActivatable(GObject.Object, Gedit.WindowActivatable):
self.window.lookup_action("text-smaller").set_enabled(self.window.get_active_document() != None)
self.window.lookup_action("text-normal").set_enabled(self.window.get_active_document() != None)
- def get_helper(self, view):
- if not hasattr(view, "textsize_document_helper"):
+ def get_view_activatable(self, view):
+ if not hasattr(view, "textsize_view_activatable"):
return None
- return view.textsize_document_helper
-
- def add_document_helper(self, view):
- if self.get_helper(view) != None:
- return
+ return view.textsize_view_activatable
- DocumentHelper(view)
-
- def remove_document_helper(self, view):
- helper = self.get_helper(view)
-
- if helper != None:
- helper.stop()
-
- def call_helper(self, cb):
+ def call_view_activatable(self, cb):
view = self.window.get_active_view()
if view:
- cb(self.get_helper(view))
+ cb(self.get_view_activatable(view))
# Menu activate handlers
def on_larger_text_activate(self, action, parameter, user_data=None):
- self.call_helper(lambda helper: helper.larger_text())
+ self.call_view_activatable(lambda va: va.larger_text())
def on_smaller_text_activate(self, action, parameter, user_data=None):
- self.call_helper(lambda helper: helper.smaller_text())
+ self.call_view_activatable(lambda va: va.smaller_text())
def on_normal_size_activate(self, action, parameter, user_data=None):
- self.call_helper(lambda helper: helper.normal_size())
-
- def on_tab_added(self, window, tab):
- self.add_document_helper(tab.get_view())
-
- def on_tab_removed(self, window, tab):
- self.remove_document_helper(tab.get_view())
+ self.call_view_activatable(lambda va: va.normal_size())
# ex:ts=4:et:
diff --git a/plugins/textsize/textsize/documenthelper.py b/plugins/textsize/textsize/viewactivatable.py
similarity index 82%
rename from plugins/textsize/textsize/documenthelper.py
rename to plugins/textsize/textsize/viewactivatable.py
index efb98df..73b9dad 100644
--- a/plugins/textsize/textsize/documenthelper.py
+++ b/plugins/textsize/textsize/viewactivatable.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
-# documenthelper.py - Document helper
+# viewactivatable.py - Gedit View Activatable Implementation
#
# Copyright (C) 2010 - Jesse van den Kieboom
#
@@ -20,34 +20,37 @@
# Boston, MA 02110-1301, USA.
from .signals import Signals
-from gi.repository import Gtk, Gdk, Pango
+from gi.repository import GObject, Gtk, Gdk, Pango, Gedit
-class DocumentHelper(Signals):
- def __init__(self, view):
- Signals.__init__(self)
+class TextSizeViewActivatable(GObject.Object, Gedit.ViewActivatable, Signals):
+
+ view = GObject.property(type=Gedit.View)
- self._view = view
+ def __init__(self):
+ GObject.Object.__init__(self)
+ Signals.__init__(self)
- self.connect_signal(self._view, 'scroll-event', self.on_scroll_event)
- self.connect_signal(self._view, 'button-press-event', self.on_button_press_event)
+ def do_activate(self):
+ self.connect_signal(self.view, 'scroll-event', self.on_scroll_event)
+ self.connect_signal(self.view, 'button-press-event', self.on_button_press_event)
- self._view.textsize_document_helper = self
+ self.view.textsize_view_activatable = self
self._default_font = None
self._last_font = None
self._font_tags = {}
- def stop(self):
+ def do_deactivate(self):
if self._default_font:
- self._view.override_font(self._default_font)
+ self.view.override_font(self._default_font)
self.remove_font_tags()
- self.disconnect_signals(self._view)
+ self.disconnect_signals(self.view)
- self._view.textsize_document_helper = None
+ delattr(self.view, "textsize_view_activatable")
def remove_font_tags(self):
- buf = self._view.get_buffer()
+ buf = self.view.get_buffer()
table = buf.get_tag_table()
# Remove all the font tags
@@ -58,7 +61,7 @@ class DocumentHelper(Signals):
self._font_tags = {}
def update_default_font(self):
- context = self._view.get_style_context()
+ context = self.view.get_style_context()
description = context.get_font(context.get_state()).copy()
if not self._last_font or description.hash() != self._last_font.hash():
@@ -84,17 +87,17 @@ class DocumentHelper(Signals):
def set_font_size(self, amount):
self.update_default_font()
- context = self._view.get_style_context()
+ context = self.view.get_style_context()
description = context.get_font(context.get_state()).copy()
- buf = self._view.get_buffer()
+ buf = self.view.get_buffer()
bounds = buf.get_selection_bounds()
size = description.get_size() / Pango.SCALE
if not bounds:
description.set_size(max(1, (size + amount)) * Pango.SCALE)
- self._view.override_font(description)
+ self.view.override_font(description)
self._last_font = description
else:
start = bounds[0]
@@ -143,13 +146,13 @@ class DocumentHelper(Signals):
def normal_size(self):
self.update_default_font()
- buf = self._view.get_buffer()
+ buf = self.view.get_buffer()
bounds = buf.get_selection_bounds()
if not bounds:
self.remove_font_tags()
- self._view.override_font(self._default_font)
+ self.view.override_font(self._default_font)
self._last_font = self._default_font
else:
tags = self.get_font_tags(bounds[0], bounds[1])
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]