Exemplo n.º 1
0
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) );
}
Exemplo n.º 2
0
static void 
on_size_clicked(GtkWidget *widget, gpointer data )
{
	ASGtkGradient *ge = ASGTK_GRADIENT (data);	
	Bool active = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(widget));
	if( widget == ge->screen_width_check ) 
		gtk_widget_set_sensitive( ge->width_entry, !active ); 				
	else
		gtk_widget_set_sensitive( ge->height_entry, !active );
	refresh_gradient_preview(ge);
}
Exemplo n.º 3
0
void
on_gradient_clicked(GtkButton *button, gpointer user_data)
{
	ASGtkImageDir *id = ASGTK_IMAGE_DIR(user_data);
	GtkDialog *ge = GTK_DIALOG(asgtk_gradient_new());
	GtkWidget *name_edit = make_back_name_hbox(GTK_BOX (ge->vbox), 10);
	int response  = 0;
	const char *name = NULL ;
	Bool files_added = False ;

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

	gtk_window_set_title(GTK_WINDOW(ge), "Creating new gradient background ...   ");
	gtk_window_set_modal(GTK_WINDOW(ge), TRUE);
	do
	{	
		response = gtk_dialog_run( ge );
		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 *mini_xml = NULL ; 
		char *xml = asgtk_gradient_get_xml( ASGTK_GRADIENT(ge), &mini_xml );
		if( xml ) 
		{	
			if( make_xml_from_string( id, name, xml, False ) )
			{
				files_added = True ;	  
				if( mini_xml )
					make_xml_from_string( id, name, mini_xml, True );
			}	 
			free( xml );
			if( mini_xml ) 
				free( mini_xml );
		}	
	}
	gtk_widget_destroy( GTK_WIDGET(ge) );
	if( files_added ) 
	{
		asgtk_info2( WallpaperState.main_window, "New gradient background \"%s\" created.", name, NULL );	  
		asgtk_image_dir_refresh( id );
	}
}
Exemplo n.º 4
0
static void 
on_apply_point_clicked(GtkWidget *widget, gpointer data )
{
	ASGtkGradient *ge = ASGTK_GRADIENT (data);	
	if( ge->current_point  ) 
	{	
		query_point_values( ge, ge->current_point );   	   
		bubblesort_asbidirlist( ge->points, compare_asgrad_point );
		asgtk_gradient_update_color_list(ge);
		refresh_gradient_preview(ge);
	}
}		  
Exemplo n.º 5
0
static void 
on_delete_point_clicked(GtkWidget *widget, gpointer data )
{
	ASGtkGradient *ge = ASGTK_GRADIENT (data);	
	if( ge->current_point && ge->points->count > 0 ) 
	{	
		discard_bidirelem( ge->points, ge->current_point );
		ge->current_point = NULL ;
		asgtk_gradient_update_color_list(ge);
		refresh_gradient_preview(ge);
	}
}		  
Exemplo n.º 6
0
static void
asgtk_gradient_dispose (GObject *object)
{
  	ASGtkGradient *ge = ASGTK_GRADIENT (object);
	if( ge->points ) 
		destroy_asbidirlist( &(ge->points) );
	if( ge->point_list_model )
	{	
		g_object_unref (ge->point_list_model);
		ge->point_list_model = NULL ;
	}

  	G_OBJECT_CLASS (parent_class)->dispose (object);
}
Exemplo n.º 7
0
static void 
on_add_point_clicked(GtkWidget *widget, gpointer data )
{
	ASGtkGradient *ge = ASGTK_GRADIENT (data);	
	ASGradientPoint* point = create_asgrad_point();
	
	query_point_values( ge, point );   	   
	append_bidirelem( ge->points, point );
	bubblesort_asbidirlist( ge->points, compare_asgrad_point );
	ge->current_point = point ;
	asgtk_gradient_update_color_list(ge);
	refresh_gradient_preview(ge);

	gtk_widget_set_sensitive( ge->delete_btn, TRUE );
	gtk_widget_set_sensitive( ge->apply_btn, TRUE );
}		  
Exemplo n.º 8
0
static void 
on_direction_clicked(GtkWidget *widget, gpointer data )
{
	ASGtkGradient *ge = ASGTK_GRADIENT (data);	
	int new_type = 0 ;
	if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ge->tl2br_radio)) ) 
		new_type = GRADIENT_TopLeft2BottomRight ; 
	else if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ge->t2b_radio)) ) 
		new_type = GRADIENT_Top2Bottom ; 
	else if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ge->bl2tr_radio)) ) 
		new_type = GRADIENT_BottomLeft2TopRight ; 
		      
	if( ge->type != new_type ) 
	{
		ge->type = new_type ; 
		refresh_gradient_preview(ge);
	}	 
}
Exemplo n.º 9
0
static void
asgtk_gradient_color_select (GtkTreeSelection *selection, gpointer user_data)
{
  	ASGtkGradient *ge = ASGTK_GRADIENT (user_data);
	GtkTreeIter iter;
	GtkTreeModel *model;

  	if (gtk_tree_selection_get_selected (selection, &model, &iter)) 
	{
		gpointer p = NULL ;
	  	gtk_tree_model_get (model, &iter, 2, &p, -1);
		if( (ge->current_point = (ASGradientPoint*)p) != NULL  )
		{	
			gtk_entry_set_text( GTK_ENTRY(ge->color_entry), ge->current_point->color_str );
			update_color_preview( ge, ge->current_point->color_str ); 
			gtk_spin_button_set_value( GTK_SPIN_BUTTON(ge->offset_entry), ge->current_point->offset );
		}		
	}
}
Exemplo n.º 10
0
static void 
color_preview_size_alloc( GtkWidget *widget,
						  GtkAllocation *allocation,
						  gpointer user_data )
{
	ASGtkGradient *ge = ASGTK_GRADIENT (user_data);
	int w = allocation->width - 4 ;		   
	int h = allocation->height - 4 ;
	
#if 1 	                       /* if size changed - refresh */
	if( ge->color_preview_width != w || ge->color_preview_height != h ) 
	{
		const char *color ;
		ge->color_preview_width = w ;
		ge->color_preview_height = h ;
		color = gtk_entry_get_text(GTK_ENTRY(ge->color_entry) );
		update_color_preview(ge, color );
	}	 
#endif
}								 
Exemplo n.º 11
0
static void 
on_refresh_clicked(GtkWidget *widget, gpointer data )
{
	ASGtkGradient *ge = ASGTK_GRADIENT (data);	
	refresh_gradient_preview(ge);
}