Exemple #1
0
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;
}
Exemple #2
0
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);
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #7
0
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;
}
Exemple #12
0
/* 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;
}