summaryrefslogtreecommitdiff
path: root/plugin-loaders/python/bindings/plumacommands.override
diff options
context:
space:
mode:
Diffstat (limited to 'plugin-loaders/python/bindings/plumacommands.override')
-rwxr-xr-xplugin-loaders/python/bindings/plumacommands.override122
1 files changed, 122 insertions, 0 deletions
diff --git a/plugin-loaders/python/bindings/plumacommands.override b/plugin-loaders/python/bindings/plumacommands.override
new file mode 100755
index 00000000..9713b5e0
--- /dev/null
+++ b/plugin-loaders/python/bindings/plumacommands.override
@@ -0,0 +1,122 @@
+%%
+headers
+#define NO_IMPORT_PYGOBJECT
+#define NO_IMPORT_PYGTK
+#include <pygobject.h>
+#include <pygtk/pygtk.h>
+
+#include "pluma-commands.h"
+#include "pluma-window.h"
+
+void pyplumacommands_register_classes (PyObject *d);
+void pyplumacommands_add_constants (PyObject *module, const gchar *strip_prefix);
+
+%%
+modulename pluma.commands
+%%
+import pluma.Window as PyPlumaWindow_Type
+import pluma.Document as PyPlumaDocument_Type
+%%
+ignore-glob
+ _*
+%%
+override pluma_commands_load_uri kwargs
+static PyObject *
+_wrap_pluma_commands_load_uri (PyObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = { "window", "uri", "encoding", "line_pos", NULL };
+ PyGObject *window;
+ char *uri;
+ int line_pos = 0;
+ PyObject *py_encoding = NULL;
+ PlumaEncoding *encoding = NULL;
+
+ if (!PyArg_ParseTupleAndKeywords (args, kwargs, "O!s|Oi:load_uri",
+ kwlist, &PyPlumaWindow_Type,
+ &window, &uri, &py_encoding,
+ &line_pos))
+ return NULL;
+
+ if (py_encoding != NULL && py_encoding != Py_None)
+ {
+ if (pyg_boxed_check (py_encoding, PLUMA_TYPE_ENCODING))
+ encoding = pyg_boxed_get (py_encoding, PlumaEncoding);
+ else
+ {
+ PyErr_SetString (PyExc_TypeError,
+ "encoding should be a PlumaEncoding");
+ return NULL;
+ }
+ }
+
+ pluma_commands_load_uri (PLUMA_WINDOW (window->obj), uri, encoding,
+ line_pos);
+ Py_INCREF (Py_None);
+ return Py_None;
+}
+%%
+override pluma_commands_load_uris kwargs
+static PyObject *
+_wrap_pluma_commands_load_uris (PyObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = { "window", "uris", "encoding", "line_pos", NULL };
+ PyGObject *window;
+ GSList *uris = NULL;
+ int line_pos = 0;
+ PyObject *py_encoding = NULL;
+ PyObject *list;
+ PyObject *item;
+ PlumaEncoding *encoding = NULL;
+ int len;
+ int i;
+
+ if (!PyArg_ParseTupleAndKeywords (args, kwargs, "O!O|Oi:load_uri",
+ kwlist, &PyPlumaWindow_Type,
+ &window, &list, &py_encoding,
+ &line_pos))
+ return NULL;
+
+ if (py_encoding != NULL && py_encoding != Py_None)
+ {
+ if (pyg_boxed_check (py_encoding, PLUMA_TYPE_ENCODING))
+ encoding = pyg_boxed_get (py_encoding, PlumaEncoding);
+ else {
+ PyErr_SetString (PyExc_TypeError,
+ "encoding should be a PlumaEncoding");
+ return NULL;
+ }
+ }
+
+ if (!PySequence_Check (list))
+ {
+ PyErr_SetString (PyExc_TypeError,
+ "second argument must be a sequence");
+ return NULL;
+ }
+
+ len = PySequence_Length (list);
+
+ for (i = 0; i < len; i++)
+ {
+ item = PySequence_GetItem (list, i);
+ Py_DECREF (item);
+
+ if (!PyString_Check (item))
+ {
+ PyErr_SetString (PyExc_TypeError,
+ "sequence item not a string");
+ g_slist_free (uris);
+ return NULL;
+ }
+
+ uris = g_slist_prepend (uris, PyString_AsString (item));
+ }
+
+ uris = g_slist_reverse (uris);
+ pluma_commands_load_uris (PLUMA_WINDOW (window->obj), uris,
+ encoding, line_pos);
+ g_slist_free (uris);
+
+ Py_INCREF (Py_None);
+ return Py_None;
+}