static inline gboolean gtk_arg_set_from_value (GtkArg *arg, GValue *value, gboolean copy_string) { switch (G_TYPE_FUNDAMENTAL (arg->type)) { case G_TYPE_CHAR: GTK_VALUE_CHAR (*arg) = g_value_get_char (value); break; case G_TYPE_UCHAR: GTK_VALUE_UCHAR (*arg) = g_value_get_uchar (value); break; case G_TYPE_BOOLEAN: GTK_VALUE_BOOL (*arg) = g_value_get_boolean (value); break; case G_TYPE_INT: GTK_VALUE_INT (*arg) = g_value_get_int (value); break; case G_TYPE_UINT: GTK_VALUE_UINT (*arg) = g_value_get_uint (value); break; case G_TYPE_LONG: GTK_VALUE_LONG (*arg) = g_value_get_long (value); break; case G_TYPE_ULONG: GTK_VALUE_ULONG (*arg) = g_value_get_ulong (value); break; case G_TYPE_ENUM: GTK_VALUE_ENUM (*arg) = g_value_get_enum (value); break; case G_TYPE_FLAGS: GTK_VALUE_FLAGS (*arg) = g_value_get_flags (value); break; case G_TYPE_FLOAT: GTK_VALUE_FLOAT (*arg) = g_value_get_float (value); break; case G_TYPE_DOUBLE: GTK_VALUE_DOUBLE (*arg) = g_value_get_double (value); break; case G_TYPE_BOXED: GTK_VALUE_BOXED (*arg) = g_value_get_boxed (value); break; case G_TYPE_POINTER: GTK_VALUE_POINTER (*arg) = g_value_get_pointer (value); break; case G_TYPE_OBJECT: GTK_VALUE_POINTER (*arg) = g_value_get_object (value); break; case G_TYPE_STRING: if (copy_string) GTK_VALUE_STRING (*arg) = g_value_dup_string (value); else GTK_VALUE_STRING (*arg) = (char *) g_value_get_string (value); break; default: return FALSE; } return TRUE; }
void c2_marshal_INT__POINTER_POINTER_POINTER (GtkObject *object, GtkSignalFunc func, gpointer func_data, GtkArg * args) { C2Signal_INT__POINTER_POINTER_POINTER rfunc; gint *return_val; return_val = GTK_RETLOC_INT (args[3]); rfunc = (C2Signal_INT__POINTER_POINTER_POINTER) func; *return_val = (*rfunc) (object, GTK_VALUE_POINTER (args[0]), GTK_VALUE_POINTER (args[1]), GTK_VALUE_POINTER (args[2]), func_data); }
void gtk_marshal_NONE__POINTER_INT_POINTER (GtkObject * object, GtkSignalFunc func, gpointer func_data, GtkArg * args) { GtkSignal_NONE__POINTER_INT_POINTER rfunc; rfunc = (GtkSignal_NONE__POINTER_INT_POINTER) func; (*rfunc) (object, GTK_VALUE_POINTER (args[0]), GTK_VALUE_INT (args[1]), GTK_VALUE_POINTER (args[2]), func_data); }
void gtk_marshal_BOOL__POINTER_POINTER_INT_INT (GtkObject * object, GtkSignalFunc func, gpointer func_data, GtkArg * args) { GtkSignal_BOOL__POINTER_POINTER_INT_INT rfunc; gboolean *return_val; return_val = GTK_RETLOC_BOOL (args[4]); rfunc = (GtkSignal_BOOL__POINTER_POINTER_INT_INT) func; *return_val = (*rfunc) (object, GTK_VALUE_POINTER (args[0]), GTK_VALUE_POINTER (args[1]), GTK_VALUE_INT (args[2]), GTK_VALUE_INT (args[3]), func_data); }
static GtkWidget *gnome_mdi_generic_child_set_label (GnomeMDIGenericChild *child, GtkWidget *old_label) { if(!child->set_label && !child->set_label_cbm) return parent_class->set_label(GNOME_MDI_CHILD(child), old_label, NULL); if(child->set_label_cbm) { GtkArg args[3]; GtkWidget *ret = NULL; args[0].name = NULL; args[0].type = GNOME_TYPE_MDI_CHILD; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(child); args[1].name = NULL; args[1].type = GTK_TYPE_WIDGET; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(old_label); args[2].name = NULL; args[2].type = GTK_TYPE_WIDGET; GTK_VALUE_POINTER(args[2]) = &ret; child->set_label_cbm(NULL, child->set_label_data, 2, args); return ret; } else return child->set_label(GNOME_MDI_CHILD(child), old_label, child->set_label_data); }
static GList *gnome_mdi_generic_child_create_menus(GnomeMDIGenericChild *child, GtkWidget *view) { if(!child->create_menus && !child->create_menus_cbm) return NULL; if (child->create_menus_cbm) { GtkArg args[3]; GList *ret = NULL; args[0].name = NULL; args[0].type = GNOME_TYPE_MDI_CHILD; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(child); args[1].name = NULL; args[1].type = GTK_TYPE_WIDGET; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(view); args[2].name = NULL; args[2].type = GTK_TYPE_POINTER; /* should we have a boxed type? */ GTK_VALUE_POINTER(args[2]) = &ret; child->create_menus_cbm(NULL, child->create_menus_data, 2, args); return ret; } else return child->create_menus(GNOME_MDI_CHILD(child), view, child->create_menus_data); }
static void gevasevh_set_arg(GtkObject * object, GtkArg * arg, guint arg_id) { GtkgEvasEvH *ev; g_return_if_fail(object != NULL); g_return_if_fail(GTK_IS_GEVASEVH(object)); ev = GTK_GEVASEVH(object); switch (arg_id) { case ARG_GEVAS_OBJ: ev->eobj = GTK_VALUE_POINTER(*arg); break; default: break; } }
static gchar *gnome_mdi_generic_child_get_config_string (GnomeMDIGenericChild *child) { if(!child->get_config_string && !child->get_config_string_cbm) return NULL; if(child->get_config_string_cbm) { GtkArg args[2]; gchar *ret = NULL; args[0].name = NULL; args[0].type = GNOME_TYPE_MDI_CHILD; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(child); args[1].name = NULL; args[1].type = GTK_TYPE_STRING; GTK_VALUE_POINTER(args[1]) = &ret; child->get_config_string_cbm(NULL, child->get_config_string_data, 1, args); return ret; } else return child->get_config_string(GNOME_MDI_CHILD(child), child->get_config_string_data); }
/*---------------------------------------------------------------------*/ obj_t bglk_gtk_container_children( GtkContainer *c ) { GList *lst = gtk_container_children( c ); obj_t res = BNIL; while( lst ) { GtkObject *data; GtkArg arg; obj_t obj; data = GTK_OBJECT( lst->data ); arg.name = "user_data"; gtk_object_arg_get( data, &arg, NULL ); obj = (( arg.type == GTK_TYPE_POINTER ) ? (obj_t)GTK_VALUE_POINTER( arg ) : BUNSPEC); if( obj ) res = MAKE_PAIR( obj, res ); lst = lst->next; } return res; }
static GtkWidget *gnome_mdi_generic_child_create_view (GnomeMDIGenericChild *child) { if(!child->create_view && !child->create_view_cbm) { g_error("GnomeMDIGenericChild: No method for creating views was provided!"); return NULL; } if(child->create_view_cbm) { GtkArg args[2]; GtkWidget *ret = NULL; args[0].name = NULL; args[0].type = GNOME_TYPE_MDI_CHILD; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(child); args[1].name = NULL; args[1].type = GTK_TYPE_WIDGET; GTK_VALUE_POINTER(args[1]) = &ret; child->create_view_cbm(NULL, child->create_view_data, 1, args); return ret; } else return child->create_view(GNOME_MDI_CHILD(child), child->create_view_data); }
/* Can't simply connect "frame_done" signal like the others. The handler is of type: gint func (GdkPixbufLoader *loader, GdkPixbufFrame *frame, gpointer data) If you simply connect it from python it will pass in 'frame' as a CObject, and since it wasn't created with a 'destroy' handler you can't manipulate 'frame' within python code (program will silently exit). We need to get a hold of 'frame' first, convert it to a GtkObject and then pass it on to the user function in python. */ static void marshal_frame_done_cb (GtkObject *loader_ptr, gpointer func_args_tuple_ptr, guint nargs, GtkArg *args) { /*FIXME I'm probably f*****g this up */ PyObject *loader_python, *func_args_tuple_orig, *frame_python, *func; PyObject *func_args_tuple; PyObject *new_args, *result; GdkPixbufFrame *frame; int check; PyGtk_BlockThreads (); dbg (); frame = (GdkPixbufFrame *) GTK_VALUE_POINTER(args[0]); func_args_tuple = (PyObject *) func_args_tuple_ptr; Py_XINCREF (func_args_tuple); //loader_python = PyGdkPixbuf_LoaderNew ((GdkPixbufLoader *) loader_ptr); loader_python = PyGtk_New (loader_ptr); if (loader_python == NULL) { dprint ("couldn't make loader_python\n"); goto error; } frame_python = PyGdkPixbuf_FrameNew (frame); if (frame_python == NULL) { dprint ("couldn't make frame_python\n"); goto error; } func = PyTuple_GetItem (func_args_tuple, 0); if (func == NULL) { dprint ("couldn't get func from tuple\n"); goto error; } check = PyTuple_SetItem (func_args_tuple, 1, loader_python); if (check != 0) { dprint ("func_args_tuple[1] = loader_python failed\n"); goto error; } check = PyTuple_SetItem (func_args_tuple, 2, frame_python); if (check != 0) { dprint ("func_args_tuple[2] = frame_python failed\n"); goto error; } /*FIXME are the tuple items "stolen" references??? */ new_args = PyTuple_GetSlice (func_args_tuple, 1, PyTuple_Size(func_args_tuple)); if (new_args == NULL) { dprint ("new_args = func_args_tuple[1:] failed\n"); goto error; } result = PyObject_CallObject (func, new_args); if (result == NULL) { Py_XDECREF (new_args); dprint ("func(new_args) returned NULL\n"); goto error; } GtkRet_FromPyObject (&args[nargs], result); Py_DECREF (result); PyGtk_UnblockThreads (); return; error: Py_XDECREF (func_args_tuple); if (PyGtk_FatalExceptions) gtk_main_quit (); else { PyErr_Print (); PyErr_Clear (); } PyGtk_UnblockThreads (); return; }
/* Routines for fetching args */ gpointer c_fetch_pointer (args_data *ap, int i) { /* Return i-th argument as a pointer */ gpointer result; result = GTK_VALUE_POINTER (ap->args[i]); return (result); }
void CloseAll(void) { struct MCMap *SelectGroup = NULL; GtkArg mapedarg; guchar i; errormsg(MAPDEBUG1,"CloseAll: Entered"); if (mMapPieces) gdk_pixbuf_unref(mMapPieces); //if (filereq) DisposeObject( filereq); for (i=0; i<3; i++) if (!TestMEdWindowObjs[WO_MPGRP1+i]) { mapedarg.type = MAPEDIT_Map; gtk_object_getv(GTK_OBJECT(TestMEdWindowObjs[WO_MPGRP1+i]), 1, &mapedarg); SelectGroup = (struct MCMap *) GTK_VALUE_POINTER(mapedarg); #if DEBUGLEV > 2 errormsg(MAPDEBUG3,"CloseAll: Map=%x, pt=%x, SelectGroup=%x", (struct MCMap *)TestMEdWindowObjs[WO_MPGRP1+i], mapedarg.d.pointer_data, SelectGroup); #endif if (SelectGroup) { do { struct MCMap *tmap=NULL; #if DEBUGLEV > 2 errormsg(MAPDEBUG3,"CloseAll: SelectGroup=%x, " "SelectGroup->mm_Columns=%x", SelectGroup, SelectGroup->mm_Columns); #endif if (SelectGroup->mm_Columns) { int i; for (i=0; i< SELYSIZE;i++) // All columns have to be freed { #if DEBUGLEV > 2 errormsg(MAPDEBUG3,"CloseAll: SelectGroup->mm_Columns" "[%d]=%x", i, SelectGroup->mm_Columns[i]); #endif if (SelectGroup->mm_Columns[i]) g_free((void *)SelectGroup->mm_Columns[i]); SelectGroup->mm_Columns[i]=0; } g_free(SelectGroup->mm_Columns); SelectGroup->mm_Columns=NULL; } #if DEBUGLEV > 2 errormsg(MAPDEBUG3,"CloseAll: SelectGroup->mm_NextLayer=%x", SelectGroup->mm_NextLayer); #endif tmap = SelectGroup->mm_NextLayer; // Get pointer to next layer SelectGroup->mm_NextLayer = NULL; // Do not reference it again! g_free(SelectGroup); // Free this layer SelectGroup=tmap; // Set new current layer } while (SelectGroup); } } errormsg(MAPDEBUG1,"CloseAll: Finished succesfully"); }
/* ** GUI Handler: Called when "custom" mapedit widget should be created */ GtkWidget *mapedit_create_new(gchar *widget_name, gchar *string1, gchar *string2, gint int1, gint int2) { struct MCMap *mapeditmap; GtkWidget *mapwidget=NULL; GtkArg mapedarg[11], *args = mapedarg; errormsg(MAPDEBUG1,"mapedit_create_new: Entered"); if (int1!=MPEDIT) { mapeditmap = g_malloc0(sizeof(struct MCMap)); if (!mapeditmap) { printf("Could not allocate memory for mapeditmap\n"); CloseAll(); exit(20); } } #if DEBUGLEV > 2 errormsg(MAPDEBUG3,"mapedit_create_new: widget_name=%s=%x, int1=%d, " "mapeditmap=%x ",widget_name, widget_name, int1, mapeditmap); #endif mapedarg[0].type = MAPEDIT_MapPieces; GTK_VALUE_POINTER(mapedarg[0]) = mMapPieces; mapedarg[1].type = MAPEDIT_PWidth; GTK_VALUE_UINT(mapedarg[1]) = 37; mapedarg[2].type = MAPEDIT_PLength; GTK_VALUE_UINT(mapedarg[2]) = 13; mapedarg[3].type = MAPEDIT_Default; GTK_VALUE_POINTER(mapedarg[3]) = &mDefault; mapedarg[4].type = MAPEDIT_MapWidth; GTK_VALUE_UINT(mapedarg[4]) = SELXSIZE; mapedarg[5].type = MAPEDIT_MapLength; GTK_VALUE_UINT(mapedarg[5]) = SELYSIZE; mapedarg[6].type = MAPEDIT_MapLayer; GTK_VALUE_UCHAR(mapedarg[6]) = 1; mapedarg[7].type = MAPEDIT_Map; GTK_VALUE_POINTER(mapedarg[7]) = mapeditmap; mapedarg[8].type = MAPEDIT_GetPieces; GTK_VALUE_BOOL(mapedarg[8]) = TRUE; mapedarg[9].type = MAPEDIT_Frame; GTK_VALUE_BOOL(mapedarg[9]) = TRUE; mapedarg[10].type = MAPEDIT_FrameSpace; GTK_VALUE_UCHAR(mapedarg[10]) = 4; errormsg(MAPDEBUG3,"mapedit_create_new: args=%x, args[0]=%x, args[1].type=%d",args,args[2].type,MAPEDIT_PWidth); switch(int1) { case MPGR1: InitSelectGroup(mapeditmap,0); TestMEdWindowObjs[WO_MPGRP1]=MapEditClassNew(args, 11); mapwidget=TestMEdWindowObjs[WO_MPGRP1]; break; case MPGR2: InitSelectGroup(mapeditmap,SELXSIZE*SELYSIZE); TestMEdWindowObjs[WO_MPGRP2]=MapEditClassNew(args, 11); mapwidget=TestMEdWindowObjs[WO_MPGRP2]; break; case MPGR3: InitSelectGroup(mapeditmap,SELXSIZE*SELYSIZE*2); TestMEdWindowObjs[WO_MPGRP3]=MapEditClassNew(args, 11); mapwidget=TestMEdWindowObjs[WO_MPGRP3]; break; case MPEDIT: mapedarg[4].type = MAPEDIT_MapWidth; GTK_VALUE_UINT(mapedarg[4]) = 40; mapedarg[5].type = MAPEDIT_MapLength; GTK_VALUE_UINT(mapedarg[5]) = 80; GTK_VALUE_UCHAR(mapedarg[6]) = 2; // 2 Layers! TestMEdWindowObjs[WO_EDIT]=MapEditClassNew(args, 7); mapwidget=TestMEdWindowObjs[WO_EDIT]; break; } errormsg(MAPDEBUG3,"mapedit_create_new: mapwidget=%x",mapwidget); errormsg(MAPDEBUG1,"mapedit_create_new: Finished succesfully"); return mapwidget; }