3 #define NO_IMPORT_PYGOBJECT
5 #include <pygtk/pygtk.h>
7 #include "override_common.h"
11 #include "rb-browser-source.h"
12 #include "rb-dialog.h"
13 #include "rb-entry-view.h"
14 #include "rb-library-browser.h"
15 #include "rb-plugin.h"
16 #include "rb-property-view.h"
17 #include "rb-removable-media-manager.h"
18 #include "rb-removable-media-source.h"
20 #include "rb-shell-player.h"
21 #include "rb-source.h"
22 #include "rb-sourcelist.h"
24 void pyrb_register_classes (PyObject *d);
25 void pyrb_add_constants (PyObject *module, const gchar *strip_prefix);
27 /* hacks to deal with the nonstandard class name RHYTHMDB */
28 #define RHYTHMDB_TYPE_RHYTHMDB RHYTHMDB_TYPE
29 #define RHYTHMDB_RHYTHMDB(o) RHYTHMDB(o)
34 import gobject.GObject as PyGObject_Type
35 import gtk.ActionGroup as PyGtkActionGroup_Type
36 import gtk.Dialog as PyGtkDialog_Type
37 import gtk.HBox as PyGtkHBox_Type
38 import gtk.ScrolledWindow as PyGtkScrolledWindow_Type
39 import gtk.TreeView as PyGtkTreeView_Type
40 import gtk.TreeViewColumn as PyGtkTreeViewColumn_Type
41 import gtk.UIManager as PyGtkUIManager_Type
42 import gtk.VBox as PyGtkVBox_Type
43 import gtk.Widget as PyGtkWidget_Type
44 import gtk.Window as PyGtkWindow_Type
45 import gtk.gdk.Pixbuf as PyGdkPixbuf_Type
47 import rhythmdb.Entry as PyRhythmDBEntry_Type
48 import rhythmdb.EntryType as PyRhythmDBEntryType_Type
49 import rhythmdb.PropertyModel as PyRhythmDBPropertyModel_Type
50 import rhythmdb.PropertyModelColumn as PyRhythmDBPropertyModelColumn_Type
51 import rhythmdb.PropType as PyRhythmDBPropType_Type
52 import rhythmdb.Query as PyRhythmDBQuery_Type
53 import rhythmdb.QueryModel as PyRhythmDBQueryModel_Type
54 import rhythmdb.QueryResults as PyRhythmDBQueryResults_Type
55 import rhythmdb.QueryType as PyRhythmDBQueryType_Type
56 import rhythmdb.RhythmDB as PyRhythmDB_Type
58 new-constructor RB_TYPE_BROWSER_SOURCE
59 new-constructor RB_TYPE_SOURCE
65 override rb_entry_view_get_selected_entries noargs
67 _wrap_rb_entry_view_get_selected_entries(PyGObject *self)
72 list = rb_entry_view_get_selected_entries (RB_ENTRY_VIEW(self->obj));
73 py_list = _helper_wrap_pointer_glist (list, RHYTHMDB_TYPE_ENTRY);
79 override rb_source_get_property_views noargs
81 _wrap_rb_source_get_property_views(PyGObject *self)
86 list = rb_source_get_property_views (RB_SOURCE(self->obj));
87 py_list = _helper_wrap_gobject_glist (list);
93 override rb_source_get_search_actions noargs
95 _wrap_rb_source_get_search_actions(PyGObject *self)
100 list = rb_source_get_search_actions (RB_SOURCE(self->obj));
101 py_list = _helper_wrap_string_glist (list);
107 override rb_source_get_ui_actions noargs
109 _wrap_rb_source_get_ui_actions(PyGObject *self)
114 list = rb_source_get_ui_actions (RB_SOURCE(self->obj));
115 py_list = _helper_wrap_string_glist (list);
121 override rb_source_cut noargs
123 _wrap_rb_source_cut(PyGObject *self)
128 list = rb_source_cut (RB_SOURCE(self->obj));
129 py_list = _helper_wrap_pointer_glist (list, RHYTHMDB_TYPE_ENTRY);
135 override rb_source_copy noargs
137 _wrap_rb_source_copy(PyGObject *self)
142 list = rb_source_copy (RB_SOURCE(self->obj));
143 py_list = _helper_wrap_pointer_glist (list, RHYTHMDB_TYPE_ENTRY);
149 override rb_source_paste kwargs
151 _wrap_rb_source_paste(PyGObject *self, PyObject *args, PyObject *kwargs)
153 static char *kwlist[] = { "entries", NULL };
154 PyObject *py_entries = NULL;
157 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:RBSource.copy", kwlist, &py_entries))
160 entries = _helper_unwrap_pointer_pylist (py_entries, RHYTHMDB_TYPE_ENTRY);
161 rb_source_paste (RB_SOURCE(self->obj), entries);
162 g_list_free (entries);
168 override rb_source_gather_selected_properties kwargs
170 _wrap_rb_source_gather_selected_properties(PyGObject *self, PyObject *args, PyObject *kwargs)
172 static char *kwlist[] = { "keys", NULL };
173 PyObject *py_propid, *py_list;
174 RhythmDBPropType propid;
177 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:RBSource.gather_selected_properties", kwlist, &py_propid))
179 if (pyg_enum_get_value(RHYTHMDB_TYPE_PROP_TYPE, py_propid, (gint *)&propid))
182 list = rb_source_gather_selected_properties (RB_SOURCE(self->obj), propid);
183 py_list = _helper_wrap_string_glist (list);
184 rb_list_deep_free (list);
189 override rb_property_view_set_selection kwargs
191 _wrap_rb_property_view_set_selection(PyGObject *self, PyObject *args, PyObject *kwargs)
193 static char *kwlist[] = { "strings", NULL };
194 PyObject *py_strings = NULL;
197 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:RBPropertyView.set_selection", kwlist, &py_strings))
200 strings = _helper_unwrap_string_pylist (py_strings);
201 rb_property_view_set_selection (RB_PROPERTY_VIEW(self->obj), strings);
202 rb_list_deep_free (strings);
208 override rb_shell_player_get_volume noargs
210 _wrap_rb_shell_player_get_volume(PyGObject *self)
213 GError *error = NULL;
215 rb_shell_player_get_volume(RB_SHELL_PLAYER(self->obj), &vol, &error);
217 if (pyg_error_check(&error))
220 return PyFloat_FromDouble(vol);
223 override rb_shell_player_get_mute noargs
225 _wrap_rb_shell_player_get_mute(PyGObject *self)
227 gboolean muted = FALSE;
228 GError *error = NULL;
230 rb_shell_player_get_mute(RB_SHELL_PLAYER(self->obj), &muted, &error);
232 if (pyg_error_check(&error))
235 return PyBool_FromLong((long) muted);
238 override rb_shell_player_get_playing noargs
240 _wrap_rb_shell_player_get_playing(PyGObject *self)
242 gboolean playing = FALSE;
243 GError *error = NULL;
245 rb_shell_player_get_playing(RB_SHELL_PLAYER(self->obj), &playing, &error);
247 if (pyg_error_check(&error))
250 return PyBool_FromLong((long) playing);
253 override rb_shell_player_get_playing_time noargs
255 _wrap_rb_shell_player_get_playing_time(PyGObject *self)
258 GError *error = NULL;
260 rb_shell_player_get_playing_time(RB_SHELL_PLAYER(self->obj), &time, &error);
262 if (pyg_error_check(&error))
265 return PyLong_FromLong((long) time);
268 override rb_shell_player_get_playing_path noargs
270 _wrap_rb_shell_player_get_playing_path(PyGObject *self)
272 const char *path = NULL;
273 GError *error = NULL;
275 rb_shell_player_get_playing_path(RB_SHELL_PLAYER(self->obj), &path, &error);
277 if (pyg_error_check(&error))
280 return PyString_FromString (path);
283 override RBSource__do_impl_cut
285 _wrap_RBSource__do_impl_cut(PyObject *cls, PyObject *args, PyObject *kwargs)
288 static char *kwlist[] = { "self", NULL };
292 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBSource.impl_cut", kwlist, &PyRBSource_Type, &self))
294 klass = g_type_class_ref(pyg_type_from_object(cls));
295 if (RB_SOURCE_CLASS(klass)->impl_cut)
296 ret = RB_SOURCE_CLASS(klass)->impl_cut(RB_SOURCE(self->obj));
298 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_cut not implemented");
299 g_type_class_unref(klass);
302 g_type_class_unref(klass);
303 return _helper_wrap_pointer_glist (ret, RHYTHMDB_TYPE_ENTRY);
306 override RBSource__proxy_do_impl_cut
308 _wrap_RBSource__proxy_do_impl_cut (RBSource *self)
310 PyGILState_STATE __py_state;
316 __py_state = pyg_gil_state_ensure();
317 py_self = pygobject_new((GObject *)self);
319 if (PyErr_Occurred())
321 pyg_gil_state_release(__py_state);
325 py_method = PyObject_GetAttrString(py_self, "do_impl_cut");
327 if (PyErr_Occurred())
330 pyg_gil_state_release(__py_state);
334 py_retval = PyObject_CallObject(py_method, NULL);
336 if (PyErr_Occurred())
338 Py_DECREF(py_method);
340 pyg_gil_state_release(__py_state);
344 ret = _helper_unwrap_pointer_pylist (py_retval, RHYTHMDB_TYPE_ENTRY);
346 Py_DECREF(py_retval);
347 Py_DECREF(py_method);
349 pyg_gil_state_release(__py_state);
354 override RBSource__do_impl_copy
356 _wrap_RBSource__do_impl_copy(PyObject *cls, PyObject *args, PyObject *kwargs)
359 static char *kwlist[] = { "self", NULL };
363 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBSource.impl_copy", kwlist, &PyRBSource_Type, &self))
365 klass = g_type_class_ref(pyg_type_from_object(cls));
366 if (RB_SOURCE_CLASS(klass)->impl_copy)
367 ret = RB_SOURCE_CLASS(klass)->impl_copy(RB_SOURCE(self->obj));
369 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_copy not implemented");
370 g_type_class_unref(klass);
373 g_type_class_unref(klass);
374 return _helper_wrap_pointer_glist (ret, RHYTHMDB_TYPE_ENTRY);
377 override RBSource__proxy_do_impl_copy
379 _wrap_RBSource__proxy_do_impl_copy (RBSource *self)
381 PyGILState_STATE __py_state;
387 __py_state = pyg_gil_state_ensure();
388 py_self = pygobject_new((GObject *)self);
390 if (PyErr_Occurred())
392 pyg_gil_state_release(__py_state);
396 py_method = PyObject_GetAttrString(py_self, "do_impl_copy");
398 if (PyErr_Occurred())
401 pyg_gil_state_release(__py_state);
405 py_retval = PyObject_CallObject(py_method, NULL);
407 if (PyErr_Occurred())
409 Py_DECREF(py_method);
411 pyg_gil_state_release(__py_state);
415 ret = _helper_unwrap_pointer_pylist (py_retval, RHYTHMDB_TYPE_ENTRY);
417 Py_DECREF(py_retval);
418 Py_DECREF(py_method);
420 pyg_gil_state_release(__py_state);
425 override RBSource__do_impl_get_property_views
427 _wrap_RBSource__do_impl_get_property_views(PyObject *cls, PyObject *args, PyObject *kwargs)
430 static char *kwlist[] = { "self", NULL };
434 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBSource.impl_get_property_views", kwlist, &PyRBSource_Type, &self))
436 klass = g_type_class_ref(pyg_type_from_object(cls));
437 if (RB_SOURCE_CLASS(klass)->impl_get_property_views)
438 ret = RB_SOURCE_CLASS(klass)->impl_get_property_views(RB_SOURCE(self->obj));
440 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_get_property_views not implemented");
441 g_type_class_unref(klass);
444 g_type_class_unref(klass);
445 return _helper_wrap_pointer_glist (ret, RHYTHMDB_TYPE_ENTRY);
448 override RBSource__proxy_do_impl_get_property_views
450 _wrap_RBSource__proxy_do_impl_get_property_views (RBSource *self)
452 PyGILState_STATE __py_state;
458 __py_state = pyg_gil_state_ensure();
459 py_self = pygobject_new((GObject *)self);
461 if (PyErr_Occurred())
463 pyg_gil_state_release(__py_state);
467 py_method = PyObject_GetAttrString(py_self, "do_impl_get_property_views");
469 if (PyErr_Occurred())
472 pyg_gil_state_release(__py_state);
476 py_retval = PyObject_CallObject(py_method, NULL);
478 if (PyErr_Occurred())
480 Py_DECREF(py_method);
482 pyg_gil_state_release(__py_state);
486 ret = _helper_unwrap_pointer_pylist (py_retval, RB_TYPE_PROPERTY_VIEW);
488 Py_DECREF(py_retval);
489 Py_DECREF(py_method);
491 pyg_gil_state_release(__py_state);
496 override RBSource__do_impl_get_ui_actions
498 _wrap_RBSource__do_impl_get_ui_actions(PyObject *cls, PyObject *args, PyObject *kwargs)
501 static char *kwlist[] = { "self", NULL };
505 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBSource.impl_get_ui_actions", kwlist, &PyRBSource_Type, &self))
507 klass = g_type_class_ref(pyg_type_from_object(cls));
508 if (RB_SOURCE_CLASS(klass)->impl_get_ui_actions)
509 ret = RB_SOURCE_CLASS(klass)->impl_get_ui_actions(RB_SOURCE(self->obj));
511 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_get_ui_actions not implemented");
512 g_type_class_unref(klass);
515 g_type_class_unref(klass);
516 return _helper_wrap_string_glist (ret);
519 override RBSource__proxy_do_impl_get_ui_actions
521 _wrap_RBSource__proxy_do_impl_get_ui_actions (RBSource *self)
523 PyGILState_STATE __py_state;
530 __py_state = pyg_gil_state_ensure();
531 py_self = pygobject_new((GObject *)self);
533 if (PyErr_Occurred())
535 pyg_gil_state_release(__py_state);
539 py_method = PyObject_GetAttrString(py_self, "do_impl_get_ui_actions");
541 if (PyErr_Occurred())
544 pyg_gil_state_release(__py_state);
548 py_retval = PyObject_CallObject(py_method, NULL);
550 if (PyErr_Occurred())
552 Py_DECREF(py_method);
554 pyg_gil_state_release(__py_state);
558 list = _helper_unwrap_string_pylist (py_retval);
560 Py_DECREF(py_retval);
561 Py_DECREF(py_method);
563 pyg_gil_state_release(__py_state);
565 ret = rb_string_list_copy (list);
570 override RBSource__do_impl_get_search_actions
572 _wrap_RBSource__do_impl_get_search_actions(PyObject *cls, PyObject *args, PyObject *kwargs)
575 static char *kwlist[] = { "self", NULL };
579 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBSource.impl_get_search_actions", kwlist, &PyRBSource_Type, &self))
581 klass = g_type_class_ref(pyg_type_from_object(cls));
582 if (RB_SOURCE_CLASS(klass)->impl_get_search_actions)
583 ret = RB_SOURCE_CLASS(klass)->impl_get_search_actions(RB_SOURCE(self->obj));
585 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_get_search_actions not implemented");
586 g_type_class_unref(klass);
589 g_type_class_unref(klass);
590 return _helper_wrap_string_glist (ret);
593 override RBSource__proxy_do_impl_get_search_actions
595 _wrap_RBSource__proxy_do_impl_get_search_actions (RBSource *self)
597 PyGILState_STATE __py_state;
603 __py_state = pyg_gil_state_ensure();
604 py_self = pygobject_new((GObject *)self);
606 if (PyErr_Occurred())
608 pyg_gil_state_release(__py_state);
612 py_method = PyObject_GetAttrString(py_self, "do_impl_get_search_actions");
614 if (PyErr_Occurred())
617 pyg_gil_state_release(__py_state);
621 py_retval = PyObject_CallObject(py_method, NULL);
623 if (PyErr_Occurred())
625 Py_DECREF(py_method);
627 pyg_gil_state_release(__py_state);
631 ret = _helper_unwrap_string_pylist (py_retval);
633 Py_DECREF(py_retval);
634 Py_DECREF(py_method);
636 pyg_gil_state_release(__py_state);
641 override rb_shell_player_get_playback_state noargs
643 _wrap_rb_shell_player_get_playback_state(PyGObject *self)
645 gboolean shuffle = FALSE;
646 gboolean repeat = FALSE;
648 if (!rb_shell_player_get_playback_state(RB_SHELL_PLAYER(self->obj), &shuffle, &repeat))
651 return Py_BuildValue ("bb", shuffle, repeat);
654 override rb_entry_view_get_sorting_order noargs
656 _wrap_rb_entry_view_get_sorting_order(PyGObject *self)
662 rb_entry_view_get_sorting_order(RB_ENTRY_VIEW(self->obj), &column, &order);
663 object = Py_BuildValue ("si", column, order);
669 override rb_entry_view_set_fixed_column_width kwargs
671 _wrap_rb_entry_view_set_fixed_column_width(PyGObject *self, PyObject *args, PyObject *kwargs)
673 static char *kwlist[] = { "column", "renderer", "strings", NULL };
674 PyGObject *py_column = NULL;
675 PyGObject *py_renderer = NULL;
676 PyObject *py_strings = NULL;
677 const char **strings;
680 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:RBEntryView.set_fixed_column_width", kwlist,
681 &py_column, &py_renderer, &py_strings))
684 /* build the string list */
685 length = PySequence_Length (py_strings);
688 strings = g_new0(const char*, length);
689 for (i = 0; i < length; i++) {
692 o = PySequence_GetItem (py_strings, i);
693 strings[i] = PyString_AsString (o);
697 rb_entry_view_set_fixed_column_width (RB_ENTRY_VIEW (self->obj),
698 GTK_TREE_VIEW_COLUMN (py_column->obj),
699 GTK_CELL_RENDERER (py_renderer->obj),
707 override RBSource__do_impl_paste
709 _wrap_RBSource__do_impl_paste(PyObject *cls, PyObject *args, PyObject *kwargs)
712 static char *kwlist[] = { "self", "entries",NULL };
714 PyObject *py_entries;
717 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O:RBSource.impl_paste", kwlist, &PyRBSource_Type, &self, &py_entries))
720 entries = _helper_unwrap_pointer_pylist (py_entries, RHYTHMDB_TYPE_ENTRY);
722 klass = g_type_class_ref(pyg_type_from_object(cls));
723 if (RB_SOURCE_CLASS(klass)->impl_paste)
724 RB_SOURCE_CLASS(klass)->impl_paste(RB_SOURCE(self->obj), entries);
726 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_paste not implemented");
727 g_type_class_unref(klass);
730 g_type_class_unref(klass);
732 g_list_free (entries);
738 override RBSource__proxy_do_impl_paste
740 _wrap_RBSource__proxy_do_impl_paste(RBSource *self, GList *entries)
742 PyGILState_STATE __py_state;
744 PyObject *py_entries;
749 __py_state = pyg_gil_state_ensure();
750 py_self = pygobject_new((GObject *) self);
752 if (PyErr_Occurred())
754 pyg_gil_state_release(__py_state);
757 py_entries = _helper_wrap_pointer_glist (entries, RHYTHMDB_TYPE_ENTRY);
759 py_args = PyTuple_New(1);
760 Py_INCREF(py_entries);
761 PyTuple_SET_ITEM(py_args, 0, py_entries);
763 py_method = PyObject_GetAttrString(py_self, "do_impl_paste");
765 if (PyErr_Occurred())
769 pyg_gil_state_release(__py_state);
772 py_retval = PyObject_CallObject(py_method, py_args);
774 if (PyErr_Occurred())
776 Py_DECREF(py_method);
779 pyg_gil_state_release(__py_state);
782 if (py_retval != Py_None) {
783 if (PyErr_Occurred())
785 PyErr_SetString(PyExc_TypeError, "retval should be None");
786 Py_DECREF(py_retval);
787 Py_DECREF(py_method);
790 pyg_gil_state_release(__py_state);
794 Py_DECREF(py_retval);
795 Py_DECREF(py_method);
798 pyg_gil_state_release(__py_state);
802 override rb_library_browser_get_property_views noargs
804 _wrap_rb_library_browser_get_property_views(PyGObject *self)
809 list = rb_library_browser_get_property_views (RB_LIBRARY_BROWSER(self->obj));
810 py_list = _helper_wrap_gobject_glist (list);
817 override rb_library_browser_set_selection kwargs
819 _wrap_rb_library_browser_set_selection(PyGObject *self, PyObject *args, PyObject *kwargs)
821 static char *kwlist[] = { "type", "keys", NULL };
822 PyObject *py_keys = NULL;
823 PyObject *py_propid = NULL;
824 RhythmDBPropType propid;
827 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:RBLibraryBrowser.set_selection", kwlist, &py_propid, &py_keys))
829 if (pyg_enum_get_value(RHYTHMDB_TYPE_PROP_TYPE, py_propid, (gint *)&propid))
832 keys = _helper_unwrap_string_pylist (py_keys);
833 rb_library_browser_set_selection (RB_LIBRARY_BROWSER(self->obj), propid, keys);
834 rb_list_deep_free (keys);
841 override rb_source_get_status noargs
843 _wrap_rb_source_get_status(PyGObject *self)
845 char *status_text = NULL;
846 char *progress_text = NULL;
847 float progress = 0.0f;
850 rb_source_get_status (RB_SOURCE (self->obj), &status_text, &progress_text, &progress);
851 tuple = Py_BuildValue ("ssf", status_text, progress_text, progress);
852 g_free (status_text);
853 g_free (progress_text);
858 override RBSource__proxy_do_impl_get_status
860 _wrap_RBSource__proxy_do_impl_get_status(RBSource *self, char **status_text, char **progress_text, float *progress)
862 PyGILState_STATE __py_state;
868 __py_state = pyg_gil_state_ensure();
869 py_self = pygobject_new((GObject *) self);
871 if (PyErr_Occurred())
873 pyg_gil_state_release(__py_state);
877 py_method = PyObject_GetAttrString(py_self, "do_impl_get_status");
879 if (PyErr_Occurred())
882 pyg_gil_state_release(__py_state);
885 py_retval = PyObject_CallObject(py_method, NULL);
887 if (PyErr_Occurred())
889 Py_DECREF(py_method);
891 pyg_gil_state_release(__py_state);
894 if (py_retval == Py_None) {
895 if (PyErr_Occurred())
897 PyErr_SetString(PyExc_TypeError, "retval was None");
898 Py_DECREF(py_retval);
899 Py_DECREF(py_method);
901 pyg_gil_state_release(__py_state);
905 PyArg_ParseTuple (py_retval, "zzf", &st, &pt, progress);
907 *status_text = g_strdup (st);
909 *progress_text = g_strdup (pt);
911 Py_DECREF(py_retval);
912 Py_DECREF(py_method);
914 pyg_gil_state_release(__py_state);
918 override RBSource__do_impl_get_status
920 _wrap_RBSource__do_impl_get_status(PyObject *cls, PyObject *args, PyObject *kwargs)
923 static char *kwlist[] = { "self", NULL };
926 char *status_text = NULL;
927 char *progress_text = NULL;
928 float progress = 0.0f;
930 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBSource.impl_get_status", kwlist, &PyRBSource_Type, &self))
933 klass = g_type_class_ref(pyg_type_from_object(cls));
934 if (RB_SOURCE_CLASS(klass)->impl_get_status) {
935 RB_SOURCE_CLASS(klass)->impl_get_status(RB_SOURCE(self->obj), &status_text, &progress_text, &progress);
937 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_get_status not implemented");
938 g_type_class_unref(klass);
941 g_type_class_unref(klass);
943 tuple = Py_BuildValue ("(ssf)", status_text, progress_text, progress);
944 g_free (status_text);
945 g_free (progress_text);
949 override rb_debug_real kwargs
952 _wrap_rb_debug_real(PyObject *self, PyObject *args, PyObject *kwargs)
954 static char *kwlist[] = { "function", "file", "line", "newline", "str", NULL };
955 char *function, *file, *str;
958 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ssiis:debug_real", kwlist, &function, &file, &line, &newline, &str))
960 rb_debug_real(function, file, line, (newline != 0), "%s", str);