예제 #1
0
void
bst_canvas_link_set_icsource (BstCanvasLink   *clink,
			      BstCanvasSource *icsource,
			      guint            ichannel)
{
  g_return_if_fail (BST_IS_CANVAS_LINK (clink));
  if (icsource)
    g_return_if_fail (BST_CANVAS_SOURCE (icsource));
  
  if (clink->icsource)
    {
      if (clink->icsource->source) /* source may be destroyed already */
	bse_proxy_disconnect (clink->icsource->source,
			      "any_signal", clink_view_check_update, clink,
			      NULL);
      if (g_signal_handler_is_connected (clink->icsource, clink->ic_handler))
        gtk_signal_disconnect (GTK_OBJECT (clink->icsource), clink->ic_handler);
      gtk_object_unref (GTK_OBJECT (clink->icsource));
    }
  clink->icsource = icsource;
  clink->ichannel = ichannel;
  if (clink->icsource)
    {
      gtk_object_ref (GTK_OBJECT (clink->icsource));
      clink->ic_handler = gtk_signal_connect_object (GTK_OBJECT (clink->icsource),
						     "notify",
						     G_CALLBACK (bst_canvas_link_update),
						     GTK_OBJECT (clink));
      bse_proxy_connect (clink->icsource->source,
			 "swapped_signal::property-notify::uname", clink_view_check_update, clink,
			 NULL);
      bst_canvas_link_update (clink);
    }
}
예제 #2
0
static
void ghack_quit_game(GtkWidget *widget, int button)
{
    gtk_widget_hide(widget);
    if (button == 0) {
        gnome_exit_nhwindows(0);
        gtk_object_unref(GTK_OBJECT(session_id));
    }
}
예제 #3
0
파일: gvtool.c 프로젝트: Onjrew/OpenEV
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));
}
예제 #4
0
파일: ml_gtk.c 프로젝트: CRogers/obc
static gboolean window_unref (gpointer w)
{
    /* If the window exists, has no parent, is still not visible,
       and has only two references (mine and toplevel_list),
       then destroy it. */
    if (GTK_WINDOW(w)->has_user_ref_count && !GTK_WIDGET_VISIBLE(w)
        && G_OBJECT(w)->ref_count == 2)
        gtk_object_destroy ((GtkObject*)w);
    gtk_object_unref((GtkObject*)w);
    return 0;
}
예제 #5
0
/**
 * c2_filter_match_mailbox_full
 * @mailbox: Mailbox where to work.
 * @func: Callback function (might be %NULL).
 * @...: List of rules to apply ending with a %NULL.
 *
 * Return Value:
 * The list of mails that apply to the rule(s) in Virtual DB.
 **/
C2VDb *
c2_filter_match_mailbox_full (C2Mailbox *mailbox, C2FilterCallback func, ...)
{
	va_list args;
	GSList *list = NULL;
	C2Db *head = NULL, *l;

	/* Create the list of rules */
	va_start (args, func);
	for (;;)
	{
		C2FilterRule *rule = va_arg (args, C2FilterRule*);
		if (!rule)
			break;

		list = g_slist_append (list, rule);
	}
	va_end (args);

	if (mailbox->db)
	{
		l = mailbox->db;
		
		do
		{
			C2Message *message;
			C2VDb *vdb;
			gboolean retval;
			
			if (c2_db_load_message (l) < 0)
				continue;

			message = l->message;

			gtk_object_ref (GTK_OBJECT (message));
			retval = match_message_full (message, list);
			gtk_object_unref (GTK_OBJECT (message));
			
			if (retval)
			{
				vdb = c2_vdb_new (l);
				c2_vdb_append (head, vdb);
			}
		} while (c2_db_lineal_next (l));
	}

	g_slist_free (list);

	return head;
}
예제 #6
0
GtkWidget *
sp_widget_new_global (Inkscape::Application *inkscape)
{
	SPWidget *spw;

	spw = (SPWidget*)gtk_type_new (SP_TYPE_WIDGET);

	if (!sp_widget_construct_global (spw, inkscape)) {
		gtk_object_unref (GTK_OBJECT (spw));
		return NULL;
	}

	return (GtkWidget *) spw;
}
예제 #7
0
/*
** Load and set up GUI with libglade
*/
GtkWidget *InitTestMEdWindow( void )
{
    GtkWidget *win=NULL, *frame=NULL;
    GladeXML *xml=NULL;
    char *rootnode=NULL; // This is probably never needed

    errormsg(MAPDEBUG1,"InitTestMEdWindow: Entered");

    glade_init();
    errormsg(MAPDEBUG4,"InitTestMEdWindow: glade_init done");
    xml = glade_xml_new(TESTMAPEDITFILE, rootnode);

    errormsg(MAPDEBUG4,"InitTestMEdWindow: glade_xml_new done");

    if (!xml) {
        g_warning("something bad happened while creating the interface");
	CloseAll();
	exit(20);
    }

    if (rootnode) // Probably never needed
    {
	GtkWidget *wid = glade_xml_get_widget(xml, rootnode);
	if (!GTK_IS_WINDOW(wid))
	{
	    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	    errormsg(MAPDEBUG3,"InitTestMEdWindow: win=%x",win);
	    gtk_signal_connect(GTK_OBJECT(win), "destroy",
			       GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
	    gtk_container_set_border_width(GTK_CONTAINER(win), 5);
	    frame = gtk_frame_new(NULL);
	    gtk_container_set_border_width(GTK_CONTAINER(frame), 5);
	    gtk_container_add(GTK_CONTAINER(win), frame);
	    gtk_widget_show(frame);
	    gtk_container_add(GTK_CONTAINER(frame), wid);
	    gtk_widget_show(win);
	}
	else win=wid;
    }

    // Connect signals
    errormsg(MAPDEBUG3,"InitTestMEdWindow: win=%x",win);
    glade_xml_signal_autoconnect(xml);
    gtk_object_unref(GTK_OBJECT(xml));
    errormsg(MAPDEBUG3,"InitTestMEdWindow: win=%x now!",win);

    errormsg(MAPDEBUG1,"InitTestMEdWindow: Finished succesfully");
    return win; // Problem: We never get a window pointer ?
}
예제 #8
0
static void
destroy (GtkObject *object)
{
	C2Dialog *dialog;

	dialog = C2_DIALOG (object);

	c2_application_window_remove (dialog->application, GTK_WINDOW (dialog));

	if (dialog->xml)
		gtk_object_unref (GTK_OBJECT (dialog->xml));

	g_free (gtk_object_get_data (object, "type"));
	g_free (gtk_object_get_data (object, "icon"));
}
예제 #9
0
GtkWidget *
sp_widget_new_repr (SPRepr *repr)
{
	SPWidget *spw;

	g_return_val_if_fail (repr != NULL, NULL);

	spw = (SPWidget*)gtk_type_new (SP_TYPE_WIDGET);

	if (!sp_widget_construct_repr (spw, repr)) {
		gtk_object_unref (GTK_OBJECT (spw));
		return NULL;
	}

	return (GtkWidget *) spw;
}
예제 #10
0
static void
gtk_juno_slider_destroy( GtkObject *object )
{
    GtkJunoSlider *juno_slider;
    
    g_return_if_fail( object != NULL );
    g_return_if_fail( GTK_IS_JUNO_SLIDER( object ) );
    
    juno_slider = GTK_JUNO_SLIDER( object );
    
    if ( juno_slider->adjustment )
	gtk_object_unref( GTK_OBJECT( juno_slider->adjustment ) );
    
    if ( GTK_OBJECT_CLASS (parent_class)->destroy )
	(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
예제 #11
0
static int 
ui_gtk_query_filechooser(const char *header, const char *title, const char *dir, ship_list_t *filetypes, char **filename)
{
	GtkDialog *diag = NULL;
	int ret =  -1;
	GtkFileFilter *filter = NULL;


		

	gdk_threads_enter();
	ASSERT_TRUE(diag = (GtkDialog*)gtk_file_chooser_dialog_new(header, NULL, 
								   GTK_FILE_CHOOSER_ACTION_OPEN,
								   GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
								   GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
								   NULL), err);

	if (filetypes && ship_list_length(filetypes)) {
		void *ptr = NULL;
		char *t = NULL;
		
		ASSERT_TRUE(filter = gtk_file_filter_new(), err);
		while ((t = ship_list_next(filetypes, &ptr))) {
			gtk_file_filter_add_pattern(filter, t);
		}
		gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(diag), filter);
	}
		
	gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(diag), dir);
	if ((ret = gtk_dialog_run(diag)) == GTK_RESPONSE_ACCEPT) {
		*filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(diag));
		ret = 0;
	}

 err:
	if (filter)
		gtk_object_unref(GTK_OBJECT(filter));
	if (diag)
		gtk_widget_destroy((GtkWidget*)diag);

	gdk_threads_leave();
	return ret;
}
예제 #12
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);
}
예제 #13
0
PRIVATE void kill_popup(GtkWidget *popup, GtkItemFactory *ifact) {
  gtk_object_unref(GTK_OBJECT(ifact));
}
예제 #14
0
gint
c2_smtp_send_message (C2SMTP *smtp, C2Message *message, const gint id) 
{
	C2NetObjectByte *byte = NULL;
	gchar *buffer;

	gtk_object_ref (GTK_OBJECT (message));

	smtp->uses++;
	if(!smtp->in_use.lock) c2_mutex_lock(&smtp->in_use);
	
	if(smtp->type == C2_SMTP_REMOTE) 
	{
		c2_mutex_lock(&smtp->lock);
		if(smtp->flags & C2_SMTP_DO_PERSIST)
			byte = smtp->persistent;
		if(!byte)
		{
			if(c2_smtp_connect(smtp, &byte) < 0)
			{
				smtp->uses--;
				if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
				gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
				return -1;
			}
		}
		if(smtp->flags & C2_SMTP_DO_PERSIST)
			smtp->persistent = byte;
		else
			smtp->persistent = NULL;
		if(smtp->flags & C2_SMTP_DO_NOT_PERSIST) c2_mutex_unlock(&smtp->lock);
		if(c2_smtp_send_headers(smtp, byte, message) < 0)
		{	
			smtp->uses--;
			if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
			gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
			return -1;
		}
		if(c2_smtp_send_message_contents(smtp, byte, message, id) < 0)
		{
			smtp->uses--;
			if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
			gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
			return -1;
		}
		if(c2_net_object_send(C2_NET_OBJECT(smtp), byte, "\r\n.\r\n") < 0)
		{
			c2_smtp_set_error(smtp, SOCK_WRITE_FAILED);
			smtp_disconnect(smtp, byte);
			smtp->uses--;
			if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
			gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
			return -1;
		}
		if(c2_net_object_read(C2_NET_OBJECT(smtp), &buffer, byte) < 0)
		{
			c2_smtp_set_error(smtp, SOCK_READ_FAILED);
			smtp_disconnect(smtp, byte);
			smtp->uses--;
			if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
			gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
			return -1;
		}
		if(!c2_strneq(buffer, "250", 3))
		{
			c2_smtp_set_error(smtp, _("SMTP server did not respond to our sent message in a friendly way"));
			g_free(buffer);
			smtp_disconnect(smtp, byte);
			smtp->uses--;
			if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
			gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
			return -1;
		}
		if(smtp->flags & C2_SMTP_DO_NOT_PERSIST)
			smtp_disconnect(smtp, byte);
		else
			c2_mutex_unlock(&smtp->lock);
		g_free(buffer);
	}
	else if(smtp->type == C2_SMTP_LOCAL) 
	{
		gchar *file_name, *from, *to, *temp, *cmd;
		
		smtp->uses++;
		if(!smtp->in_use.lock) c2_mutex_lock(&smtp->in_use);
		file_name = c2_get_tmp_file (NULL);
		if(c2_smtp_local_write_msg(message, file_name) < 0) 
		{
			g_free(file_name);
			c2_smtp_set_error(smtp, _("System Error: Unable to write message to disk for local SMTP command"));
			smtp->uses--;
			if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
			gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
			return -1;
		}
		
		/* get the proper to and from headers */
		if(!(from = c2_message_get_header_field(message, "From: ")) || 
			!(to = c2_smtp_local_get_recepients(message)))
		{
			c2_smtp_set_error(smtp, _("Internal C2 Error: Unable to fetch headers in email message"));
			unlink(file_name);
			if(from) g_free(from);
			g_free(file_name);
			smtp->uses--;
			if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
			gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
			return -1;
		}
				
		cmd = g_strdup(smtp->smtp_local_cmd);
		temp = cmd;
		cmd = c2_str_replace_all(cmd, "%m", file_name);
		g_free(temp);
		temp = cmd;
		cmd = c2_str_replace_all(cmd, "%f", from);
		g_free(temp);
		temp = cmd;
		cmd = c2_str_replace_all(cmd, "%t", to);
		g_free(temp);
		g_free(to); 
		g_free(from);
		
		/* FINALLY execute the command :-) */
		if(system(cmd) < 0)
		{
			c2_smtp_set_error(smtp, _("Problem running local SMTP command to send messages -- Check SMTP settings"));
			unlink(file_name);
			g_free(file_name);
			g_free(cmd);
			smtp->uses--;
			if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
			gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, -1);
			return -1;
		}
		gtk_signal_emit(GTK_OBJECT(smtp), signals[SMTP_UPDATE], id, 1, 1);
		g_free(file_name);
		g_free(cmd);
		unlink(file_name);
	}

	gtk_object_unref (GTK_OBJECT (message));
	
	smtp->uses--;
	if(!smtp->uses) c2_mutex_unlock(&smtp->in_use);
	gtk_signal_emit(GTK_OBJECT(smtp), signals[FINISHED], id, 1);
	return 0;
}
예제 #15
0
파일: ui-utils.c 프로젝트: aosm/gutenprint
/**
 * stpui_help_free:
 *
 * This function frees the memory used by the #GtkTooltips created by
 * stpui_help_init().
 **/
void
stpui_help_free (void)
{
  gtk_object_destroy (GTK_OBJECT (tool_tips));
  gtk_object_unref   (GTK_OBJECT (tool_tips));
}