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;
529 __py_state = pyg_gil_state_ensure();
530 py_self = pygobject_new((GObject *)self);
532 if (PyErr_Occurred())
534 pyg_gil_state_release(__py_state);
538 py_method = PyObject_GetAttrString(py_self, "do_impl_get_ui_actions");
540 if (PyErr_Occurred())
543 pyg_gil_state_release(__py_state);
547 py_retval = PyObject_CallObject(py_method, NULL);
549 if (PyErr_Occurred())
551 Py_DECREF(py_method);
553 pyg_gil_state_release(__py_state);
557 ret = _helper_unwrap_string_pylist (py_retval);
559 Py_DECREF(py_retval);
560 Py_DECREF(py_method);
562 pyg_gil_state_release(__py_state);
567 override RBSource__do_impl_get_search_actions
569 _wrap_RBSource__do_impl_get_search_actions(PyObject *cls, PyObject *args, PyObject *kwargs)
572 static char *kwlist[] = { "self", NULL };
576 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBSource.impl_get_search_actions", kwlist, &PyRBSource_Type, &self))
578 klass = g_type_class_ref(pyg_type_from_object(cls));
579 if (RB_SOURCE_CLASS(klass)->impl_get_search_actions)
580 ret = RB_SOURCE_CLASS(klass)->impl_get_search_actions(RB_SOURCE(self->obj));
582 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_get_search_actions not implemented");
583 g_type_class_unref(klass);
586 g_type_class_unref(klass);
587 return _helper_wrap_string_glist (ret);
590 override RBSource__proxy_do_impl_get_search_actions
592 _wrap_RBSource__proxy_do_impl_get_search_actions (RBSource *self)
594 PyGILState_STATE __py_state;
600 __py_state = pyg_gil_state_ensure();
601 py_self = pygobject_new((GObject *)self);
603 if (PyErr_Occurred())
605 pyg_gil_state_release(__py_state);
609 py_method = PyObject_GetAttrString(py_self, "do_impl_get_search_actions");
611 if (PyErr_Occurred())
614 pyg_gil_state_release(__py_state);
618 py_retval = PyObject_CallObject(py_method, NULL);
620 if (PyErr_Occurred())
622 Py_DECREF(py_method);
624 pyg_gil_state_release(__py_state);
628 ret = _helper_unwrap_string_pylist (py_retval);
630 Py_DECREF(py_retval);
631 Py_DECREF(py_method);
633 pyg_gil_state_release(__py_state);
638 override rb_shell_player_get_playback_state noargs
640 _wrap_rb_shell_player_get_playback_state(PyGObject *self)
642 gboolean shuffle = FALSE;
643 gboolean repeat = FALSE;
645 if (!rb_shell_player_get_playback_state(RB_SHELL_PLAYER(self->obj), &shuffle, &repeat))
648 return Py_BuildValue ("bb", shuffle, repeat);
651 override rb_entry_view_get_sorting_order noargs
653 _wrap_rb_entry_view_get_sorting_order(PyGObject *self)
659 rb_entry_view_get_sorting_order(RB_ENTRY_VIEW(self->obj), &column, &order);
660 object = Py_BuildValue ("si", column, order);
666 override rb_entry_view_set_fixed_column_width kwargs
668 _wrap_rb_entry_view_set_fixed_column_width(PyGObject *self, PyObject *args, PyObject *kwargs)
670 static char *kwlist[] = { "column", "renderer", "strings", NULL };
671 PyGObject *py_column = NULL;
672 PyGObject *py_renderer = NULL;
673 PyObject *py_strings = NULL;
674 const char **strings;
677 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:RBEntryView.set_fixed_column_width", kwlist,
678 &py_column, &py_renderer, &py_strings))
681 /* build the string list */
682 length = PySequence_Length (py_strings);
685 strings = g_new0(const char*, length);
686 for (i = 0; i < length; i++) {
689 o = PySequence_GetItem (py_strings, i);
690 strings[i] = PyString_AsString (o);
694 rb_entry_view_set_fixed_column_width (RB_ENTRY_VIEW (self->obj),
695 GTK_TREE_VIEW_COLUMN (py_column->obj),
696 GTK_CELL_RENDERER (py_renderer->obj),
704 override RBSource__do_impl_paste
706 _wrap_RBSource__do_impl_paste(PyObject *cls, PyObject *args, PyObject *kwargs)
709 static char *kwlist[] = { "self", "entries",NULL };
711 PyObject *py_entries;
714 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O:RBSource.impl_paste", kwlist, &PyRBSource_Type, &self, &py_entries))
717 entries = _helper_unwrap_pointer_pylist (py_entries, RHYTHMDB_TYPE_ENTRY);
719 klass = g_type_class_ref(pyg_type_from_object(cls));
720 if (RB_SOURCE_CLASS(klass)->impl_paste)
721 RB_SOURCE_CLASS(klass)->impl_paste(RB_SOURCE(self->obj), entries);
723 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_paste not implemented");
724 g_type_class_unref(klass);
727 g_type_class_unref(klass);
729 g_list_free (entries);
735 override RBSource__proxy_do_impl_paste
737 _wrap_RBSource__proxy_do_impl_paste(RBSource *self, GList *entries)
739 PyGILState_STATE __py_state;
741 PyObject *py_entries;
746 __py_state = pyg_gil_state_ensure();
747 py_self = pygobject_new((GObject *) self);
749 if (PyErr_Occurred())
751 pyg_gil_state_release(__py_state);
754 py_entries = _helper_wrap_pointer_glist (entries, RHYTHMDB_TYPE_ENTRY);
756 py_args = PyTuple_New(1);
757 Py_INCREF(py_entries);
758 PyTuple_SET_ITEM(py_args, 0, py_entries);
760 py_method = PyObject_GetAttrString(py_self, "do_impl_paste");
762 if (PyErr_Occurred())
766 pyg_gil_state_release(__py_state);
769 py_retval = PyObject_CallObject(py_method, py_args);
771 if (PyErr_Occurred())
773 Py_DECREF(py_method);
776 pyg_gil_state_release(__py_state);
779 if (py_retval != Py_None) {
780 if (PyErr_Occurred())
782 PyErr_SetString(PyExc_TypeError, "retval should be None");
783 Py_DECREF(py_retval);
784 Py_DECREF(py_method);
787 pyg_gil_state_release(__py_state);
791 Py_DECREF(py_retval);
792 Py_DECREF(py_method);
795 pyg_gil_state_release(__py_state);
799 override rb_library_browser_get_property_views noargs
801 _wrap_rb_library_browser_get_property_views(PyGObject *self)
806 list = rb_library_browser_get_property_views (RB_LIBRARY_BROWSER(self->obj));
807 py_list = _helper_wrap_gobject_glist (list);
814 override rb_library_browser_set_selection kwargs
816 _wrap_rb_library_browser_set_selection(PyGObject *self, PyObject *args, PyObject *kwargs)
818 static char *kwlist[] = { "type", "keys", NULL };
819 PyObject *py_keys = NULL;
820 PyObject *py_propid = NULL;
821 RhythmDBPropType propid;
824 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:RBLibraryBrowser.set_selection", kwlist, &py_propid, &py_keys))
826 if (pyg_enum_get_value(RHYTHMDB_TYPE_PROP_TYPE, py_propid, (gint *)&propid))
829 keys = _helper_unwrap_string_pylist (py_keys);
830 rb_library_browser_set_selection (RB_LIBRARY_BROWSER(self->obj), propid, keys);
831 rb_list_deep_free (keys);
838 override rb_source_get_status noargs
840 _wrap_rb_source_get_status(PyGObject *self)
842 char *status_text = NULL;
843 char *progress_text = NULL;
844 float progress = 0.0f;
847 rb_source_get_status (RB_SOURCE (self->obj), &status_text, &progress_text, &progress);
848 tuple = Py_BuildValue ("ssf", status_text, progress_text, progress);
849 g_free (status_text);
850 g_free (progress_text);
855 override RBSource__proxy_do_impl_get_status
857 _wrap_RBSource__proxy_do_impl_get_status(RBSource *self, char **status_text, char **progress_text, float *progress)
859 PyGILState_STATE __py_state;
865 __py_state = pyg_gil_state_ensure();
866 py_self = pygobject_new((GObject *) self);
868 if (PyErr_Occurred())
870 pyg_gil_state_release(__py_state);
874 py_method = PyObject_GetAttrString(py_self, "do_impl_get_status");
876 if (PyErr_Occurred())
879 pyg_gil_state_release(__py_state);
882 py_retval = PyObject_CallObject(py_method, NULL);
884 if (PyErr_Occurred())
886 Py_DECREF(py_method);
888 pyg_gil_state_release(__py_state);
891 if (py_retval == Py_None) {
892 if (PyErr_Occurred())
894 PyErr_SetString(PyExc_TypeError, "retval was None");
895 Py_DECREF(py_retval);
896 Py_DECREF(py_method);
898 pyg_gil_state_release(__py_state);
902 PyArg_ParseTuple (py_retval, "zzf", &st, &pt, progress);
904 *status_text = g_strdup (st);
906 *progress_text = g_strdup (pt);
908 Py_DECREF(py_retval);
909 Py_DECREF(py_method);
911 pyg_gil_state_release(__py_state);
915 override RBSource__do_impl_get_status
917 _wrap_RBSource__do_impl_get_status(PyObject *cls, PyObject *args, PyObject *kwargs)
920 static char *kwlist[] = { "self", NULL };
923 char *status_text = NULL;
924 char *progress_text = NULL;
925 float progress = 0.0f;
927 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:RBSource.impl_get_status", kwlist, &PyRBSource_Type, &self))
930 klass = g_type_class_ref(pyg_type_from_object(cls));
931 if (RB_SOURCE_CLASS(klass)->impl_get_status) {
932 RB_SOURCE_CLASS(klass)->impl_get_status(RB_SOURCE(self->obj), &status_text, &progress_text, &progress);
934 PyErr_SetString(PyExc_NotImplementedError, "virtual method RBSource.impl_get_status not implemented");
935 g_type_class_unref(klass);
938 g_type_class_unref(klass);
940 tuple = Py_BuildValue ("(ssf)", status_text, progress_text, progress);
941 g_free (status_text);
942 g_free (progress_text);
946 override rb_debug_real kwargs
949 _wrap_rb_debug_real(PyObject *self, PyObject *args, PyObject *kwargs)
951 static char *kwlist[] = { "function", "file", "line", "newline", "str", NULL };
952 char *function, *file, *str;
955 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ssiis:debug_real", kwlist, &function, &file, &line, &newline, &str))
957 rb_debug_real(function, file, line, (newline != 0), "%s", str);