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) ); }
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); }
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 ); } }
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); } }
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); } }
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); }
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 ); }
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); } }
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 ); } } }
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 }
static void on_refresh_clicked(GtkWidget *widget, gpointer data ) { ASGtkGradient *ge = ASGTK_GRADIENT (data); refresh_gradient_preview(ge); }