void 
on_color_clicked( GtkWidget *btn, gpointer data )
{
	ASGtkGradient *ge = ASGTK_GRADIENT (data);	 
	GtkDialog *cs = GTK_DIALOG(asgtk_color_selection_new());
	int response  = 0;
	const char *orig_color = gtk_entry_get_text(GTK_ENTRY(ge->color_entry));

	gtk_dialog_add_buttons( cs, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
							  	GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, 
								NULL );
	
	if( orig_color && orig_color[0] != '\0' )
		asgtk_color_selection_set_color_by_name( ASGTK_COLOR_SELECTION(cs), orig_color );
	else
		asgtk_color_selection_set_color_by_name( ASGTK_COLOR_SELECTION(cs), DEFAULT_COLOR_STR );
	gtk_window_set_title(GTK_WINDOW(cs), "Pick a color ...   ");
	gtk_window_set_modal(GTK_WINDOW(cs), TRUE);
	response = gtk_dialog_run( cs );
	
	if( response == GTK_RESPONSE_ACCEPT ) 
	{
		char *color = asgtk_color_selection_get_color_str(ASGTK_COLOR_SELECTION(cs));
		if( color ) 
		{	
			gtk_entry_set_text(GTK_ENTRY(ge->color_entry), color );
			update_color_preview(ge, color );
			free( color ); 
		}		   
	}
	gtk_widget_destroy( GTK_WIDGET(cs) );
}
Beispiel #2
0
void
on_solid_clicked(GtkButton *button, gpointer user_data)
{
	ASGtkImageDir *id = ASGTK_IMAGE_DIR(user_data);
	GtkDialog *cs = GTK_DIALOG(asgtk_color_selection_new());
	GtkWidget *name_edit = make_back_name_hbox(GTK_BOX (cs->vbox), 10);
	int response  = 0;
	const char *name = NULL ;
	Bool files_added = False ;

	gtk_dialog_add_buttons( cs, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
							  	GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, 
								NULL );

	gtk_window_set_title(GTK_WINDOW(cs), "Creating new solid color background ...   ");
	gtk_window_set_modal(GTK_WINDOW(cs), TRUE);
	do
	{	
		response = gtk_dialog_run( cs );
		if( response == GTK_RESPONSE_ACCEPT ) 
		{	
			name = gtk_entry_get_text( GTK_ENTRY(name_edit) );
			if( name == NULL || strlen(name) == 0 ) 
				asgtk_warning2( WallpaperState.main_window, "Empty name specified for a new background.", NULL, NULL ); 	   				   		   			   			
			else
				break;
		}
	}while( response == GTK_RESPONSE_ACCEPT ); 
	
	if( response == GTK_RESPONSE_ACCEPT && name != NULL ) 
	{
		char *color = asgtk_color_selection_get_color_str(ASGTK_COLOR_SELECTION(cs));
		if( color ) 
		{	
			char *buffer = safemalloc( 128 + strlen(color));
			sprintf( buffer, "<solid color=\"%s\" width=\"$xroot.width\" height=\"$xroot.height\"/>", color);
			if( make_xml_from_string( id, name, buffer, False ) )
			{
				files_added = True ;	  
				sprintf( buffer, "<solid color=\"%s\" width=\"$minipixmap.width\" height=\"$minipixmap.height\"/>", color);
				make_xml_from_string( id, name, buffer, True );
			}	 
			free( buffer );
			free( color );
		}		
	}
	gtk_widget_destroy( GTK_WIDGET(cs) );
	if( files_added ) 
	{
		asgtk_info2( WallpaperState.main_window, "New solid color background \"%s\" created.", name, NULL );	  
		asgtk_image_dir_refresh( id );
	}	
}