From 825c1dd01981c159368a1a7a99931146fbbe60f1 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Thu, 20 Dec 2012 00:41:24 -0600 Subject: Port examples to g-i and gsettings --- examples/background-image.py | 22 +++++++++------------- examples/block-size-column.py | 12 ++++++------ examples/location-widget-provider.py | 7 +++---- examples/md5sum-property-page.py | 31 ++++++++++++++++++------------- examples/open-terminal.py | 25 ++++++++++++------------- examples/submenu.py | 33 +++++++++++++++++++++------------ examples/update-file-info-async.py | 9 ++++----- 7 files changed, 73 insertions(+), 66 deletions(-) diff --git a/examples/background-image.py b/examples/background-image.py index 0f5bea6..426dc4f 100644 --- a/examples/background-image.py +++ b/examples/background-image.py @@ -1,22 +1,18 @@ -import urllib - -import mateconf -import caja +from gi.repository import Caja, GObject, Gio SUPPORTED_FORMATS = 'image/jpeg', 'image/png' -BACKGROUND_KEY = '/desktop/mate/background/picture_filename' +BACKGROUND_SCHEMA = 'org.mate.desktop.background' +BACKGROUND_KEY = 'picture-uri' -class BackgroundImageExtension(caja.MenuProvider): +class BackgroundImageExtension(GObject.GObject, Caja.MenuProvider): def __init__(self): - self.mateconf = mateconf.client_get_default() + self.bgsettings = Gio.Settings.new(BACKGROUND_SCHEMA) def menu_activate_cb(self, menu, file): if file.is_gone(): return - # Strip leading file:// - filename = urllib.unquote(file.get_uri()[7:]) - self.mateconf.set_string(BACKGROUND_KEY, filename) + self.bgsettings[BACKGROUND_KEY] = file.get_uri() def get_file_items(self, window, files): if len(files) != 1: @@ -33,8 +29,8 @@ class BackgroundImageExtension(caja.MenuProvider): if file.get_uri_scheme() != 'file': return - item = caja.MenuItem('Caja::set_background_image', - 'Use as background image', - 'Set the current image as a background image') + item = Caja.MenuItem(name='Caja::set_background_image', + label='Use as background image', + tip='Set the current image as a background image') item.connect('activate', self.menu_activate_cb, file) return item, diff --git a/examples/block-size-column.py b/examples/block-size-column.py index 6f94158..3fd64ce 100644 --- a/examples/block-size-column.py +++ b/examples/block-size-column.py @@ -1,17 +1,17 @@ import os import urllib -import caja +from gi.repository import GObject, Caja -class ColumnExtension(caja.ColumnProvider, caja.InfoProvider): +class ColumnExtension(GObject.GObject, Caja.ColumnProvider, Caja.InfoProvider): def __init__(self): pass def get_columns(self): - return caja.Column("CajaPython::block_size_column", - "block_size", - "Block size", - "Get the block size"), + return Caja.Column(name="CajaPython::block_size_column", + attribute="block_size", + label="Block size", + description="Get the block size"), def update_file_info(self, file): if file.get_uri_scheme() != 'file': diff --git a/examples/location-widget-provider.py b/examples/location-widget-provider.py index 0e7504c..c12301c 100644 --- a/examples/location-widget-provider.py +++ b/examples/location-widget-provider.py @@ -1,12 +1,11 @@ -import caja -import gtk +from gi.repository import Caja, Gtk, GObject -class LocationProviderExample(caja.LocationWidgetProvider): +class LocationProviderExample(GObject.GObject, Caja.LocationWidgetProvider): def __init__(self): pass def get_widget(self, uri, window): - entry = gtk.Entry() + entry = Gtk.Entry() entry.set_text(uri) entry.show() return entry diff --git a/examples/md5sum-property-page.py b/examples/md5sum-property-page.py index 13c59e7..dd2a7ee 100644 --- a/examples/md5sum-property-page.py +++ b/examples/md5sum-property-page.py @@ -1,10 +1,9 @@ import hashlib import urllib -import gtk -import caja +from gi.repository import Caja, Gtk, GObject -class MD5SumPropertyPage(caja.PropertyPageProvider): +class MD5SumPropertyPage(GObject.GObject, Caja.PropertyPageProvider): def __init__(self): pass @@ -21,22 +20,28 @@ class MD5SumPropertyPage(caja.PropertyPageProvider): filename = urllib.unquote(file.get_uri()[7:]) - self.property_label = gtk.Label('MD5Sum') + self.property_label = Gtk.Label('MD5Sum') self.property_label.show() - self.hbox = gtk.HBox(0, False) + self.hbox = Gtk.HBox(homogeneous=False, spacing=0) self.hbox.show() - label = gtk.Label('MD5Sum:') + label = Gtk.Label('MD5Sum:') label.show() - self.hbox.pack_start(label) + self.hbox.pack_start(label, False, False, 0) - self.value_label = gtk.Label() - self.hbox.pack_start(self.value_label) + self.value_label = Gtk.Label() + self.hbox.pack_start(self.value_label, False, False, 0) - md5sum = hashlib.md5(filename).hexdigest() - self.value_label.set_text(md5sum) + md5sum = hashlib.md5() + with open(filename,'rb') as f: + for chunk in iter(lambda: f.read(8192), ''): + md5sum.update(chunk) + f.close() + + self.value_label.set_text(md5sum.hexdigest()) self.value_label.show() - return caja.PropertyPage("CajaPython::md5_sum", - self.property_label, self.hbox), + return Caja.PropertyPage(name="CajaPython::md5_sum", + label=self.property_label, + page=self.hbox), diff --git a/examples/open-terminal.py b/examples/open-terminal.py index 8e22ccf..1d0e5aa 100644 --- a/examples/open-terminal.py +++ b/examples/open-terminal.py @@ -2,19 +2,18 @@ import os import urllib -import gtk -import caja -import mateconf +from gi.repository import Caja, GObject, Gio -TERMINAL_KEY = '/desktop/mate/applications/terminal/exec' +TERMINAL_SCHEMA = 'org.mate.applications-terminal' +TERMINAL_KEY = 'exec' -class OpenTerminalExtension(caja.MenuProvider): +class OpenTerminalExtension(Caja.MenuProvider, GObject.GObject): def __init__(self): - self.client = mateconf.client_get_default() + self.gsettings = Gio.Settings.new(TERMINAL_SCHEMA) def _open_terminal(self, file): filename = urllib.unquote(file.get_uri()[7:]) - terminal = self.client.get_string(TERMINAL_KEY) + terminal = self.gsettings[TERMINAL_KEY] os.chdir(filename) os.system('%s &' % terminal) @@ -33,15 +32,15 @@ class OpenTerminalExtension(caja.MenuProvider): if not file.is_directory() or file.get_uri_scheme() != 'file': return - item = caja.MenuItem('CajaPython::openterminal_file_item', - 'Open Terminal' , - 'Open Terminal In %s' % file.get_name()) + item = Caja.MenuItem(name='CajaPython::openterminal_file_item', + label='Open Terminal' , + tip='Open Terminal In %s' % file.get_name()) item.connect('activate', self.menu_activate_cb, file) return item, def get_background_items(self, window, file): - item = caja.MenuItem('CajaPython::openterminal_item', - 'Open Terminal Here', - 'Open Terminal In This Directory') + item = Caja.MenuItem(name='CajaPython::openterminal_item', + label='Open Terminal Here', + tip='Open Terminal In This Directory') item.connect('activate', self.menu_background_activate_cb, file) return item, diff --git a/examples/submenu.py b/examples/submenu.py index 7b91459..9d149f5 100644 --- a/examples/submenu.py +++ b/examples/submenu.py @@ -1,28 +1,37 @@ -import caja +from gi.repository import Caja, GObject -class ExampleMenuProvider(caja.MenuProvider): - - # Caja crashes if a plugin doesn't implement the __init__ method. - # See Bug #374958 +class ExampleMenuProvider(GObject.GObject, Caja.MenuProvider): def __init__(self): pass def get_file_items(self, window, files): - top_menuitem = caja.MenuItem('ExampleMenuProvider::Foo', 'Foo', '') + top_menuitem = Caja.MenuItem(name='ExampleMenuProvider::Foo', + label='Foo', + tip='', + icon='') - submenu = caja.Menu() + submenu = Caja.Menu() top_menuitem.set_submenu(submenu) - sub_menuitem = caja.MenuItem('ExampleMenuProvider::Bar', 'Bar', '') + sub_menuitem = Caja.MenuItem(name='ExampleMenuProvider::Bar', + label='Bar', + tip='', + icon='') submenu.append_item(sub_menuitem) return top_menuitem, def get_background_items(self, window, file): - submenu = caja.Menu() - submenu.append_item(caja.MenuItem('ExampleMenuProvider::Bar', 'Bar', '')) - - menuitem = caja.MenuItem('ExampleMenuProvider::Foo', 'Foo', '') + submenu = Caja.Menu() + submenu.append_item(Caja.MenuItem(name='ExampleMenuProvider::Bar2', + label='Bar2', + tip='', + icon='')) + + menuitem = Caja.MenuItem(name='ExampleMenuProvider::Foo2', + label='Foo2', + tip='', + icon='') menuitem.set_submenu(submenu) return menuitem, diff --git a/examples/update-file-info-async.py b/examples/update-file-info-async.py index 349b169..e4f90c7 100644 --- a/examples/update-file-info-async.py +++ b/examples/update-file-info-async.py @@ -1,15 +1,14 @@ -import caja -import gobject +from gi.repository import Caja, GObject -class UpdateFileInfoAsync(caja.InfoProvider): +class UpdateFileInfoAsync(GObject.GObject, Caja.InfoProvider): def __init__(self): pass def update_file_info_full(self, provider, handle, closure, file): print "update_file_info_full" gobject.timeout_add_seconds(3, self.update_cb, provider, handle, closure) - return caja.OPERATION_IN_PROGRESS + return Caja.OperationResult.IN_PROGRESS def update_cb(self, provider, handle, closure): print "update_cb" - self.update_complete_invoke(provider, handle, closure, result=caja.OPERATION_FAILED) + Caja.info_provider_update_complete_invoke(closure, provider, handle, Caja.OperationResult.FAILED) -- cgit v1.2.1