[Xfce4-commits] <thunarx-python:master> Implemented the RenamerProvider interface and added an example. Also, added the preferences plugin for real this time

Adam Plumb noreply at xfce.org
Thu May 27 18:10:38 CEST 2010


Updating branch refs/heads/master
         to 1ec80888a75e3c10c568b71a687d7541b8cbbcb6 (commit)
       from 297af9135d1b74baf686e1995bc8c8a84760749a (commit)

commit 1ec80888a75e3c10c568b71a687d7541b8cbbcb6
Author: Adam Plumb <adamplumb at gmail.com>
Date:   Wed Dec 16 12:39:27 2009 -0500

    Implemented the RenamerProvider interface and added an example.  Also, added the preferences plugin for real this time

 examples/thunarx-preferences-provider.py |   22 +++++++++++++++
 examples/thunarx-renamer-plugin.py       |   11 +++++++
 src/thunarx-python-object.c              |   43 +++++++++++++++++++++++++----
 src/thunarx-python.c                     |    3 +-
 4 files changed, 72 insertions(+), 7 deletions(-)

diff --git a/examples/thunarx-preferences-provider.py b/examples/thunarx-preferences-provider.py
new file mode 100644
index 0000000..9c02aa4
--- /dev/null
+++ b/examples/thunarx-preferences-provider.py
@@ -0,0 +1,22 @@
+import thunarx
+import gtk
+
+class ThunarxPreferencesPlugin(thunarx.PreferencesProvider):
+  def __init__(self):
+    pass
+  
+  def get_preferences_actions(self, window):
+    action = gtk.Action("TPP:PrefItem", "My Example Preferences", None, None)
+    action.connect("activate", self.__open_preferences, window)
+    return action,
+  
+  def __open_preferences(self, action, window):
+    dialog = gtk.Dialog("My dialog",
+                     window,
+                     gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
+                     (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
+                      gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
+
+    dialog.show()
+    dialog.run()
+    dialog.destroy()
diff --git a/examples/thunarx-renamer-plugin.py b/examples/thunarx-renamer-plugin.py
new file mode 100644
index 0000000..6339f9d
--- /dev/null
+++ b/examples/thunarx-renamer-plugin.py
@@ -0,0 +1,11 @@
+import thunarx
+import gtk
+
+class ThunarxPreferencesPlugin(thunarx.RenamerProvider):
+  def __init__(self):
+    pass
+  
+  def get_renamers(self):
+    return []
+  
+  
diff --git a/src/thunarx-python-object.c b/src/thunarx-python-object.c
index f16e736..c8dba4b 100644
--- a/src/thunarx-python-object.c
+++ b/src/thunarx-python-object.c
@@ -63,6 +63,9 @@ static void   thunarx_python_object_preferences_provider_iface_init (ThunarxPref
 static GList *thunarx_python_object_get_preferences_actions     (ThunarxPreferencesProvider   *provider,
 										                                             GtkWidget                    *window);
 
+static void   thunarx_python_object_renamer_provider_iface_init (ThunarxRenamerProviderIface  *iface);
+static GList *thunarx_python_object_get_renamers                (ThunarxRenamerProvider       *provider);
+
 /* These macros assumes the following things:
  *   a METHOD_NAME is defined with is a string
  *   a goto label called beach
@@ -262,6 +265,34 @@ beach:
 
 
 
+#define METHOD_NAME "get_renamers"
+static GList *
+thunarx_python_object_get_renamers (ThunarxRenamerProvider *provider)
+{
+	ThunarxPythonObject *object = (ThunarxPythonObject*)provider;
+  PyObject *py_ret = NULL;
+  GList *ret = NULL;
+	PyGILState_STATE state = pyg_gil_state_ensure();
+	
+  debug_enter();
+
+	CHECK_METHOD_NAME(object->instance);
+
+  py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, "");
+
+	HANDLE_RETVAL(py_ret);
+
+	HANDLE_LIST(py_ret, ThunarxRenamer, "thunarx.Renamer");
+	
+beach:
+	Py_XDECREF(py_ret);
+	pyg_gil_state_release(state);
+  return ret;
+}
+#undef METHOD_NAME
+
+
+
 static void
 thunarx_python_object_property_page_provider_iface_init (ThunarxPropertyPageProviderIface *iface)
 {
@@ -271,13 +302,13 @@ thunarx_python_object_property_page_provider_iface_init (ThunarxPropertyPageProv
 
 
 
-/*
+
 static void
 thunarx_python_object_renamer_provider_iface_init (ThunarxRenamerProviderIface *iface)
 {
 	iface->get_renamers = thunarx_python_object_get_renamers;
 }
-*/
+
 
 
 
@@ -373,13 +404,13 @@ thunarx_python_object_get_type (ThunarxProviderPlugin *plugin, PyObject *type)
 		NULL,
 		NULL
 	};
-/*
+
 	static const GInterfaceInfo renamer_provider_iface_info = {
 		(GInterfaceInitFunc) thunarx_python_object_renamer_provider_iface_init,
 		NULL,
 		NULL
 	};
-*/
+
 	static const GInterfaceInfo preferences_provider_iface_info = {
 		(GInterfaceInitFunc) thunarx_python_object_preferences_provider_iface_init,
 		NULL,
@@ -416,13 +447,13 @@ thunarx_python_object_get_type (ThunarxProviderPlugin *plugin, PyObject *type)
 									 THUNARX_TYPE_MENU_PROVIDER,
 									 &menu_provider_iface_info);
 	}
-/*
+
 	if (PyObject_IsSubclass(type, (PyObject*)&PyThunarxRenamerProvider_Type)) {
 		thunarx_provider_plugin_add_interface (plugin, gtype, 
 									 THUNARX_TYPE_RENAMER_PROVIDER,
 									 &renamer_provider_iface_info);
 	}
-*/
+
 	if (PyObject_IsSubclass(type, (PyObject*)&PyThunarxPreferencesProvider_Type)) {
 		thunarx_provider_plugin_add_interface (plugin, gtype, 
 									 THUNARX_TYPE_PREFERENCES_PROVIDER,
diff --git a/src/thunarx-python.c b/src/thunarx-python.c
index a47a8a3..bf7df48 100644
--- a/src/thunarx-python.c
+++ b/src/thunarx-python.c
@@ -249,7 +249,8 @@ thunarx_python_load_file (ThunarxProviderPlugin *plugin, const gchar *filename)
       
 		if (PyObject_IsSubclass(value, (PyObject*)&PyThunarxMenuProvider_Type) ||
 		    PyObject_IsSubclass(value, (PyObject*)&PyThunarxPropertyPageProvider_Type) ||
-		    PyObject_IsSubclass(value, (PyObject*)&PyThunarxPreferencesProvider_Type)) {
+		    PyObject_IsSubclass(value, (PyObject*)&PyThunarxPreferencesProvider_Type) ||
+		    PyObject_IsSubclass(value, (PyObject*)&PyThunarxRenamerProvider_Type)) {
 			
 			new_type = thunarx_python_object_get_type(plugin, value);
 			g_array_append_val(all_types, new_type);



More information about the Xfce4-commits mailing list