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) ); }
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 ); } }