Ejemplo n.º 1
0
void
gtk_combo_set_item_string (GtkCombo * combo, GtkItem * item, const gchar * item_value)
{
  gchar *val;
  gint connected = 0;

  g_return_if_fail (combo != NULL);
  g_return_if_fail (GTK_IS_COMBO (combo));
  g_return_if_fail (item != NULL);

  val = gtk_object_get_data (GTK_OBJECT (item), gtk_combo_string_key);
  if (val) 
    {
      g_free (val);
      connected = 1;
    }
  if (item_value)
    {
      val = g_strdup(item_value);
      gtk_object_set_data (GTK_OBJECT (item), gtk_combo_string_key, val);
      if (!connected)
        gtk_signal_connect (GTK_OBJECT (item), "destroy",
			  (GtkSignalFunc) gtk_combo_item_destroy, val);
    }
  else 
    {
      gtk_object_set_data (GTK_OBJECT (item), gtk_combo_string_key, NULL);
      if (connected)
	gtk_signal_disconnect_by_data(GTK_OBJECT (item), val);
    }
}
Ejemplo n.º 2
0
static void
gv_tool_real_deactivate(GvTool *tool, GvViewArea *view)
{
    g_return_if_fail(tool->view == view);

    gtk_signal_disconnect_by_data(GTK_OBJECT(tool->view), (gpointer)tool);
    tool->view = NULL;
    gtk_object_unref(GTK_OBJECT(view));
}
Ejemplo n.º 3
0
void
gv_rotate_tool_set_layer(GvRotateTool *tool, GvShapeLayer *layer)
{
    if (GV_TOOL(tool)->view == NULL)
    {
	g_warning("gv_rotate_tool_set_layer(): inactive tool");
	return;
    }

    if( layer != NULL && gv_data_is_read_only( GV_DATA(layer) ) )
    {
        g_warning( "gv_rotate_tool_set_layer(): layer is read-only" );
        return;
    }

    gv_rotate_tool_terminate( tool );
    tool->shape_id = -1;

    /* Disconnect from the previous layer (for draw) */
    if (tool->layer)
    {
        tool->rrmode = RRMODE_DISPLAY;

        /** TODO: Not sure that we need to unselect ... try to remove later */

	gv_shape_layer_clear_selection(GV_SHAPE_LAYER(tool->layer));
	gtk_signal_disconnect_by_data(GTK_OBJECT(tool->layer), (gpointer)tool);
	gv_view_area_queue_draw(GV_TOOL(tool)->view);
    }
 
    if( layer == NULL )
        tool->layer = NULL;
    else
        tool->layer = GV_SHAPES_LAYER(layer);

    if (layer)
    {
	gv_view_area_set_active_layer(GV_TOOL(tool)->view, GTK_OBJECT(layer));
	
        /* Redraw when the layer draws */
	gtk_signal_connect_object_after(GTK_OBJECT(layer), "draw",
					GTK_SIGNAL_FUNC(gv_rotate_tool_draw),
					GTK_OBJECT(tool));
        /* Recover if layer destroyed */
        gtk_signal_connect(
            GTK_OBJECT(layer), "destroy", 
            GTK_SIGNAL_FUNC(gv_rotate_tool_layer_destroy),
            GTK_OBJECT(tool));
    }
}
Ejemplo n.º 4
0
void
gradient_select_free (GradientSelect *gsp)
{
  if (!gsp)
    return;

  /* remove from active list */
  gradient_active_dialogs = g_slist_remove (gradient_active_dialogs, gsp);

  gtk_signal_disconnect_by_data (GTK_OBJECT (gsp->context), gsp);

  if (gsp->callback_name)
    { 
      g_free (gsp->callback_name);
      gtk_object_unref (GTK_OBJECT (gsp->context));
    }
 
   g_free (gsp);
}
Ejemplo n.º 5
0
void
gv_point_tool_set_layer(GvPointTool *tool, GvShapeLayer *layer)
{
    if (GV_TOOL(tool)->view == NULL)
    {
	g_warning("gv_point_tool_set_layer(): inactive tool");
	return;
    }

    if( layer != NULL 
        && !GV_IS_POINT_LAYER(layer) && !GV_IS_SHAPES_LAYER(layer) )
    {
        g_warning( "gv_point_tool_set_layer(): not a point capable layer" );
        return;
    }

    if( layer != NULL && gv_data_is_read_only( GV_DATA(layer) ) )
    {
        g_warning( "gv_point_tool_set_layer(): layer is read-only" );
        return;
    }

    /* Disconnect from the previous layer */
    if (tool->layer)
    {
	gv_shape_layer_clear_selection(GV_SHAPE_LAYER(tool->layer));
	gv_view_area_queue_draw(GV_TOOL(tool)->view);
        gtk_signal_disconnect_by_data( GTK_OBJECT(tool->layer), 
                                       GTK_OBJECT(tool) );
    }
    
    tool->layer = layer;

    if (layer)
    {
	gv_view_area_set_active_layer(GV_TOOL(tool)->view, GTK_OBJECT(layer));
        gtk_signal_connect(
            GTK_OBJECT(layer), "destroy", 
            GTK_SIGNAL_FUNC(gv_point_tool_layer_destroy),
            GTK_OBJECT(tool));
    }
}
Ejemplo n.º 6
0
static void
tslider_destroy( GtkObject *object )
{
	Tslider *tslider;

	g_return_if_fail( object != NULL );
	g_return_if_fail( IS_TSLIDER( object ) );

	tslider = TSLIDER( object );

#ifdef DEBUG
	printf( "tslider_destroy: %p\n", tslider );
#endif /*DEBUG*/

	/* My instance destroy stuff.
	 */
	if( tslider->adj ) {
		gtk_signal_disconnect_by_data( GTK_OBJECT( tslider->adj ),
			(gpointer) tslider );
		tslider->adj = NULL;
	}

	GTK_OBJECT_CLASS( parent_class )->destroy( object );
}
Ejemplo n.º 7
0
static void
wins_link_cb (GtkWidget *button, xchatwin *xw)
{
	GtkWidget *new_win;
	GtkWidget *old_win;
	xchatwin *new_xw;
#ifdef USE_GNOME
	GtkWidget *wid;
#endif

	old_win = xw->child;

	/* make sure wins_destroy_cb isn't called */
	gtk_signal_disconnect_by_data (GTK_OBJECT (old_win), xw);

	/* do we need to create a main window? */
	if (main_window == NULL && xw->is_toplevel)
	{
		gui_make_tab_window (NULL, old_win);
		gtk_widget_show (main_window);
	}

	/* create a new tab/window */
	new_win = wins_new (xw->name, xw->title, xw->close_callback,
								xw->userdata, xw->link_callback,
								xw->link_userdata, xw->is_toplevel, xw->is_nonirc,
								xw->child_ret);
	new_xw = gtk_object_get_user_data (GTK_OBJECT (new_win));

	/* give the client the new window pointer */
	if (xw->child_ret != NULL)
		*xw->child_ret = new_win;

	/* use the old vbox instead */
	gtk_widget_destroy (new_xw->vbox);
	new_xw->vbox = xw->vbox;

#ifdef USE_GNOME
	if (xw->is_toplevel)
	{
		gtk_widget_reparent (xw->vbox, new_win);
	} else
	{
		wid = gtk_hbox_new (0, 0);
		gtk_widget_reparent (xw->vbox, wid);
		gnome_app_set_contents (GNOME_APP (new_win), wid);
	}
#else
	gtk_widget_reparent (xw->vbox, new_win);
#endif

	if (xw->button_box != NULL)
	{
		/* buttons need to be re-created so that the parameters to the
			callbacks are updated. */
		gtk_widget_destroy (xw->button_box);
		wins_create_linkbuttons (new_win, xw->button_box_box);
	}

	gtk_widget_destroy (old_win);
	gtk_widget_show (new_win);
	wins_free (xw);

	/* this will call link_cb() in maingui.c */
	if (new_xw->link_callback != NULL)
		new_xw->link_callback (new_win, new_xw->link_userdata);

	/* did we just remove the last page? if so, destroy the main window */
	if (gtk_notebook_get_nth_page (GTK_NOTEBOOK (main_book), 0) == NULL)
		gtk_widget_destroy (main_window);
}