[kupfer: 7/31] plugin.*: Adapt sources to Source.initialize
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [kupfer: 7/31] plugin.*: Adapt sources to Source.initialize
- Date: Thu, 31 Dec 2009 12:55:02 +0000 (UTC)
commit f76a3df9081c909a338dfcccd4d23e25761d5c88
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Wed Dec 30 05:40:15 2009 +0100
plugin.*: Adapt sources to Source.initialize
contrib/runningapplications.py | 3 +++
kupfer/plugin/applications.py | 7 +++----
kupfer/plugin/clipboard.py | 10 +++-------
kupfer/plugin/core/selection.py | 8 +++-----
kupfer/plugin/documents.py | 7 +++----
kupfer/plugin/gajim.py | 6 ++----
kupfer/plugin/nautilusselection.py | 10 ++++++----
kupfer/plugin/notes.py | 6 ++----
kupfer/plugin/pidgin.py | 4 +++-
kupfer/plugin/screen.py | 9 ++++-----
kupfer/plugin/services.py | 7 +++----
kupfer/plugin/templates.py | 20 +++++++++++---------
kupfer/plugin/top.py | 5 ++---
kupfer/plugin/tsclient.py | 7 ++-----
14 files changed, 50 insertions(+), 59 deletions(-)
---
diff --git a/contrib/runningapplications.py b/contrib/runningapplications.py
index df595b9..a62c48a 100644
--- a/contrib/runningapplications.py
+++ b/contrib/runningapplications.py
@@ -18,6 +18,9 @@ class RunningApplicationsSource (Source):
"""List currently running applications """
def __init__(self):
Source.__init__(self, _("Running Applications"))
+ self.all_apps = []
+
+ def initialize(self):
self.all_apps = gio.app_info_get_all()
def is_dynamic(self):
diff --git a/kupfer/plugin/applications.py b/kupfer/plugin/applications.py
index d6a037b..16b94e2 100644
--- a/kupfer/plugin/applications.py
+++ b/kupfer/plugin/applications.py
@@ -3,7 +3,7 @@ from gio import app_info_get_all
from gio.unix import desktop_app_info_set_desktop_env
from kupfer.objects import (Source, AppLeaf, Action, FileLeaf,
- PicklingHelperMixin, FilesystemWatchMixin, )
+ FilesystemWatchMixin, )
from kupfer import config, utils, plugin_support
__kupfer_name__ = _("Applications")
@@ -26,7 +26,7 @@ __kupfer_settings__ = plugin_support.PluginSettings(
},
)
-class AppSource (Source, PicklingHelperMixin, FilesystemWatchMixin):
+class AppSource (Source, FilesystemWatchMixin):
"""
Applications source
@@ -35,9 +35,8 @@ class AppSource (Source, PicklingHelperMixin, FilesystemWatchMixin):
"""
def __init__(self):
super(AppSource, self).__init__(_("Applications"))
- self.unpickle_finish()
- def unpickle_finish(self):
+ def initialize(self):
application_dirs = config.get_data_dirs("", "applications")
self.monitor_token = self.monitor_directories(*application_dirs)
diff --git a/kupfer/plugin/clipboard.py b/kupfer/plugin/clipboard.py
index 9752f2b..6be6b72 100644
--- a/kupfer/plugin/clipboard.py
+++ b/kupfer/plugin/clipboard.py
@@ -2,7 +2,7 @@ from collections import deque
import gtk
-from kupfer.objects import Source, Action, TextLeaf, Leaf, PicklingHelperMixin
+from kupfer.objects import Source, Action, TextLeaf, Leaf
from kupfer import utils, plugin_support
from kupfer.helplib import gobject_connect_weakly
@@ -31,16 +31,12 @@ class ClipboardText (TextLeaf):
'Clipboard with %(num)d lines "%(desc)s"',
numlines) % {"num": numlines, "desc": desc }
-class ClipboardSource (Source, PicklingHelperMixin):
- """
- """
+class ClipboardSource (Source):
def __init__(self):
Source.__init__(self, _("Clipboards"))
self.clipboards = deque()
- self.unpickle_finish()
- def unpickle_finish(self):
- """Setup change callback on unpickling"""
+ def initialize(self):
clip = gtk.clipboard_get(gtk.gdk.SELECTION_CLIPBOARD)
gobject_connect_weakly(clip, "owner-change", self._clipboard_changed)
diff --git a/kupfer/plugin/core/selection.py b/kupfer/plugin/core/selection.py
index 28ffa04..1fd4eb3 100644
--- a/kupfer/plugin/core/selection.py
+++ b/kupfer/plugin/core/selection.py
@@ -2,7 +2,6 @@ import gtk
from kupfer.objects import Source, Leaf
from kupfer.objects import TextLeaf, SourceLeaf
-from kupfer.helplib import DbusWeakCallback, PicklingHelperMixin
from kupfer.helplib import gobject_connect_weakly
from kupfer import kupferstring
@@ -32,15 +31,14 @@ class InvisibleSourceLeaf (SourceLeaf):
def is_valid(self):
return False
-class SelectionSource (Source, PicklingHelperMixin):
+class SelectionSource (Source):
def __init__(self):
Source.__init__(self, _("Selected Text"))
- self.unpickle_finish()
- def unpickle_finish(self):
+ def initialize(self):
+ self._text = None
clip = gtk.clipboard_get(gtk.gdk.SELECTION_PRIMARY)
gobject_connect_weakly(clip, "owner-change", self._clipboard_changed)
- self._text = None
def _clipboard_changed(self, clipboard, event):
self._text = clipboard.wait_for_text()
diff --git a/kupfer/plugin/documents.py b/kupfer/plugin/documents.py
index 910ebd6..f990d2e 100644
--- a/kupfer/plugin/documents.py
+++ b/kupfer/plugin/documents.py
@@ -4,7 +4,7 @@ import gio
from gtk import recent_manager_get_default
from kupfer.objects import (Leaf, Action, Source,
- AppLeaf, FileLeaf, UrlLeaf, PicklingHelperMixin )
+ AppLeaf, FileLeaf, UrlLeaf, )
from kupfer import objects, plugin_support
from kupfer import launch, icons
from kupfer.helplib import gobject_connect_weakly
@@ -26,14 +26,13 @@ __kupfer_settings__ = plugin_support.PluginSettings(
)
-class RecentsSource (Source, PicklingHelperMixin):
+class RecentsSource (Source):
def __init__(self, name=None):
if not name:
name = _("Recent Items")
super(RecentsSource, self).__init__(name)
- self.unpickle_finish()
- def unpickle_finish(self):
+ def initialize(self):
"""Set up change callback"""
manager = recent_manager_get_default()
gobject_connect_weakly(manager, "changed", self._recent_changed)
diff --git a/kupfer/plugin/gajim.py b/kupfer/plugin/gajim.py
index 16fa803..d8791da 100644
--- a/kupfer/plugin/gajim.py
+++ b/kupfer/plugin/gajim.py
@@ -156,6 +156,7 @@ class ContactsSource(AppLeafContentMixin, Source, PicklingHelperMixin):
self.mark_for_update()
self._contacts = []
+ def initialize(self):
# listen to d-bus signals for updates
signals = [
"ContactAbsence",
@@ -166,10 +167,7 @@ class ContactsSource(AppLeafContentMixin, Source, PicklingHelperMixin):
"RosterInfo",
]
- try:
- session_bus = dbus.Bus()
- except dbus.DBusException:
- return
+ session_bus = dbus.Bus()
for signal in signals:
dbus_signal_connect_weakly(session_bus, signal,
diff --git a/kupfer/plugin/nautilusselection.py b/kupfer/plugin/nautilusselection.py
index 7f4521b..9131005 100644
--- a/kupfer/plugin/nautilusselection.py
+++ b/kupfer/plugin/nautilusselection.py
@@ -6,6 +6,7 @@ import gobject
from kupfer.objects import Source, Leaf, FileLeaf, SourceLeaf, PicklingHelperMixin
from kupfer import objects
from kupfer.helplib import DbusWeakCallback
+from kupfer import plugin_support
__kupfer_name__ = _("Selected File")
__kupfer_sources__ = ("SelectionSource", )
@@ -13,6 +14,8 @@ __description__ = _("Provides current nautilus selection, using Kupfer's Nautilu
__version__ = ""
__author__ = "Ulrik Sverdrup <ulrik sverdrup gmail com>"
+plugin_support.check_dbus_connection()
+
class SelectedFile (FileLeaf):
qf_id = "selectedfile"
def __init__(self, filepath):
@@ -36,10 +39,9 @@ class SelectionSource (Source, PicklingHelperMixin):
def unpickle_finish(self):
self._selection = []
- try:
- session_bus = dbus.Bus()
- except dbus.DBusException:
- return
+
+ def initialize(self):
+ session_bus = dbus.Bus()
callback = DbusWeakCallback(self._selected_signal)
callback.token = session_bus.add_signal_receiver(
callback,
diff --git a/kupfer/plugin/notes.py b/kupfer/plugin/notes.py
index cd785b4..b4d76be 100644
--- a/kupfer/plugin/notes.py
+++ b/kupfer/plugin/notes.py
@@ -190,14 +190,12 @@ class ClassProperty (property):
def __get__(self, cls, owner):
return self.fget.__get__(None, owner)()
-class NotesSource (AppLeafContentMixin, Source, PicklingHelperMixin,
- FilesystemWatchMixin):
+class NotesSource (AppLeafContentMixin, Source, FilesystemWatchMixin):
def __init__(self):
Source.__init__(self, _("Notes"))
self._notes = []
- self.unpickle_finish()
- def unpickle_finish(self):
+ def initialize(self):
"""Set up filesystem monitors to catch changes"""
# We monitor all directories that exist of a couple of candidates
dirs = []
diff --git a/kupfer/plugin/pidgin.py b/kupfer/plugin/pidgin.py
index a5611cf..413a3ea 100644
--- a/kupfer/plugin/pidgin.py
+++ b/kupfer/plugin/pidgin.py
@@ -139,7 +139,9 @@ class ContactsSource(AppLeafContentMixin, Source, PicklingHelperMixin):
def unpickle_finish(self):
self.mark_for_update()
- self.all_buddies = {}
+ self.pickle_prepare()
+
+ def initialize(self):
self._install_dbus_signal()
self._buddy_update_timer = scheduler.Timer()
self._buddy_update_queue = set()
diff --git a/kupfer/plugin/screen.py b/kupfer/plugin/screen.py
index a082df7..ab05780 100644
--- a/kupfer/plugin/screen.py
+++ b/kupfer/plugin/screen.py
@@ -1,6 +1,7 @@
import os
-from kupfer.objects import Leaf, Action, Source, PicklingHelperMixin, FilesystemWatchMixin
+from kupfer.objects import Leaf, Action, Source
+from kupfer.helplib import FilesystemWatchMixin
from kupfer import utils, objects
__kupfer_name__ = _("GNU Screen")
@@ -55,14 +56,12 @@ class ScreenSession (Leaf):
def get_icon_name(self):
return "gnome-window-manager"
-class ScreenSessionsSource (Source, PicklingHelperMixin, FilesystemWatchMixin):
+class ScreenSessionsSource (Source, FilesystemWatchMixin):
"""Source for GNU Screen sessions"""
def __init__(self):
super(ScreenSessionsSource, self).__init__(_("Screen Sessions"))
- self.unpickle_finish()
- def unpickle_finish(self):
- """Set up a directory watch on Screen's socket dir"""
+ def initialize(self):
self.screen_dir = (os.getenv("SCREENDIR") or
"/var/run/screen/S-%s" % get_username())
if not os.path.exists(self.screen_dir):
diff --git a/kupfer/plugin/services.py b/kupfer/plugin/services.py
index 46ad0bc..daddd4c 100644
--- a/kupfer/plugin/services.py
+++ b/kupfer/plugin/services.py
@@ -3,7 +3,7 @@ import os
from kupfer import plugin_support
from kupfer.objects import Leaf, Action, Source
-from kupfer.helplib import FilesystemWatchMixin, PicklingHelperMixin
+from kupfer.helplib import FilesystemWatchMixin
from kupfer import utils
__kupfer_name__ = _("System Services")
@@ -86,15 +86,14 @@ class StopService(_ServiceAction):
_ServiceAction.__init__(self, _('Stop Service'), 'stop', 'stop')
-class SystemServicesSource(Source, FilesystemWatchMixin, PicklingHelperMixin):
+class SystemServicesSource(Source, FilesystemWatchMixin):
''' Index system services from /etc/*/init.d/ '''
def __init__(self, name=_("System Services")):
Source.__init__(self, name)
self._initd_path = None
- self.unpickle_finish()
- def unpickle_finish(self):
+ def initialize(self):
# path to file with list notebooks
for initd_path in ('/etc/init.d/', '/etc/rc.d/init.d', '/etc/rc.d'):
if os.path.exists(initd_path) and os.path.isdir(initd_path):
diff --git a/kupfer/plugin/templates.py b/kupfer/plugin/templates.py
index 6da5835..737e737 100644
--- a/kupfer/plugin/templates.py
+++ b/kupfer/plugin/templates.py
@@ -6,7 +6,7 @@ import glib
from kupfer.objects import Leaf, Action, Source, FileLeaf
from kupfer import icons, utils
from kupfer import helplib
-from kupfer.helplib import FilesystemWatchMixin, PicklingHelperMixin
+from kupfer.helplib import FilesystemWatchMixin
from kupfer import plugin_support
__kupfer_name__ = _("Document Templates")
@@ -82,24 +82,26 @@ class CreateNewDocument (Action):
CreateDocumentIn = helplib.reverse_action(CreateNewDocument, rank=10)
-class TemplatesSource (Source, PicklingHelperMixin, FilesystemWatchMixin):
+class TemplatesSource (Source, FilesystemWatchMixin):
def __init__(self):
Source.__init__(self, _("Document Templates"))
- self.unpickle_finish()
- def unpickle_finish(self):
- # Set up change callback
+ @classmethod
+ def _get_tmpl_dir(self):
tmpl_dir = glib.get_user_special_dir(glib.USER_DIRECTORY_TEMPLATES)
if not tmpl_dir:
tmpl_dir = os.path.expanduser(DEFAULT_TMPL_DIR)
- self.tmpl_dir = tmpl_dir
- self.monitor_token = self.monitor_directories(self.tmpl_dir)
+ return tmpl_dir
+
+ def initialize(self):
+ self.monitor_token = self.monitor_directories(self._get_tmpl_dir())
def get_items(self):
+ tmpl_dir = self._get_tmpl_dir()
yield EmptyFile()
try:
- for fname in os.listdir(self.tmpl_dir):
- yield Template(os.path.join(self.tmpl_dir, fname))
+ for fname in os.listdir(tmpl_dir):
+ yield Template(os.path.join(tmpl_dir, fname))
except EnvironmentError, exc:
self.output_error(exc)
diff --git a/kupfer/plugin/top.py b/kupfer/plugin/top.py
index ac000dd..b5cd1ac 100644
--- a/kupfer/plugin/top.py
+++ b/kupfer/plugin/top.py
@@ -7,8 +7,8 @@ import signal
import operator
from kupfer.objects import Action, Source, Leaf
-from kupfer import scheduler
from kupfer.helplib import PicklingHelperMixin
+from kupfer import scheduler
from kupfer import plugin_support
__kupfer_name__ = _("Top")
@@ -88,14 +88,13 @@ class _SignalsSource(Source):
class TaskSource(Source, PicklingHelperMixin):
def __init__(self, name=_("Running Tasks")):
Source.__init__(self, name)
- self.unpickle_finish()
def pickle_prepare(self):
# clear saved processes
self.mark_for_update()
self._timer = None
- def unpickle_finish(self):
+ def initialize(self):
self._timer = scheduler.Timer()
def get_items(self):
diff --git a/kupfer/plugin/tsclient.py b/kupfer/plugin/tsclient.py
index f61802d..6474e67 100644
--- a/kupfer/plugin/tsclient.py
+++ b/kupfer/plugin/tsclient.py
@@ -44,8 +44,7 @@ class TsclientOpenSession(Action):
return 'tsclient'
-class TsclientSessionSource(AppLeafContentMixin, Source, PicklingHelperMixin,
- FilesystemWatchMixin):
+class TsclientSessionSource(AppLeafContentMixin, Source, FilesystemWatchMixin):
''' indexes session saved in tsclient '''
appleaf_content_id = 'tsclient'
@@ -53,12 +52,10 @@ class TsclientSessionSource(AppLeafContentMixin, Source, PicklingHelperMixin,
def __init__(self, name=_("TSClient sessions")):
Source.__init__(self, name)
self._sessions_dir = os.path.expanduser('~/.tsclient')
- self.unpickle_finish()
- def unpickle_finish(self):
+ def initialize(self):
if not os.path.isdir(self._sessions_dir):
return
-
self.monitor_token = self.monitor_directories(self._sessions_dir)
def monitor_include_file(self, gfile):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]