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 ); } }
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 ); } }
static void query_point_values( ASGtkGradient *ge, ASGradientPoint* point ) { const char *color ; point->offset = gtk_spin_button_get_value( GTK_SPIN_BUTTON(ge->offset_entry) ); color = gtk_entry_get_text( GTK_ENTRY(ge->color_entry ) ); if( point->color_str ) free( point->color_str ); if( color == NULL || color[0] == '\0') { asgtk_warning2( GTK_WIDGET(ge), "Color value is not specifyed. Default color of black will be used.", NULL, NULL ); point->color_str = mystrdup(DEFAULT_COLOR_STR); point->color_argb = DEFAULT_COLOR; }else { if( parse_argb_color( color, &(point->color_argb) ) == color ) asgtk_warning2( GTK_WIDGET(ge), "Color \"%s\" cannot be translated. It is probably a mistyped color name.", color, NULL ); point->color_str = mystrdup(color); } }
void on_make_mini_clicked(GtkButton *clicked_button, gpointer user_data) { ASGtkImageDir *id = ASGTK_IMAGE_DIR(user_data); ASImageListEntry *entry = asgtk_image_dir_get_selection( id ); char *mini_fullfilename = NULL ; if( asgtk_image_dir_make_mini_names( id, entry->name, NULL, &mini_fullfilename ) ) { if( make_mini_for_image_entry(id, entry, mini_fullfilename) ) { gtk_button_set_label(GTK_BUTTON(WallpaperState.make_mini_button), "Update mini"); asgtk_info2( WallpaperState.main_window, "Minipixmap successfully updated for background \"%s\".", entry->name, NULL ); }else asgtk_warning2( WallpaperState.main_window, "Failed to updated minipixmap for background \"%s\".", entry->name, NULL ); free( mini_fullfilename ); } unref_asimage_list_entry( entry ); }
void on_make_xml_clicked(GtkButton *clicked_button, gpointer user_data) { ASGtkImageDir *id = ASGTK_IMAGE_DIR(user_data); ASGtkMakeXMLDlg *mx = safecalloc( 1, sizeof( ASGtkMakeXMLDlg ) ); GtkWidget *frame, *box, *box2 ; Bool files_added = False; int response ; const char *name ; mx->entry = asgtk_image_dir_get_selection( id ); if( mx->entry == NULL ) { free( mx ); return; } mx->dlg = gtk_dialog_new_with_buttons( "Making new XML based on selected image", GTK_WINDOW(WallpaperState.main_window), GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL ); // g_signal_connect_swapped ( GTK_OBJECT (mx->dlg), "response", // G_CALLBACK (gtk_widget_destroy), GTK_OBJECT (mx->dlg)); gtk_container_set_border_width (GTK_CONTAINER (mx->dlg), 5); //gtk_widget_set_size_request (mx->dlg, 400, 300); mx->scale_check_box = gtk_check_button_new_with_label( "Scale image to screen size" ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mx->scale_check_box), TRUE ); colorize_gtk_widget( mx->scale_check_box, get_colorschemed_style_normal() ); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), mx->scale_check_box, FALSE, FALSE, 0); mx->color_check_box = gtk_check_button_new_with_label( "Adjust image color based on selected Color Scheme." ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mx->color_check_box), TRUE ); //colorize_gtk_widget( mx->color_check_box, get_colorschemed_style_normal() ); //gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), mx->color_check_box, FALSE, FALSE, 0); g_signal_connect ((gpointer) mx->color_check_box, "clicked", G_CALLBACK (set_make_xml_widgets_sensitive), mx); frame = gtk_frame_new(NULL); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), frame, FALSE, FALSE, 5); gtk_frame_set_label_widget( GTK_FRAME(frame), mx->color_check_box ); box = gtk_vbox_new( TRUE, 5 ); gtk_container_add (GTK_CONTAINER (frame), box); gtk_container_set_border_width (GTK_CONTAINER (box), 5); mx->tint_radio = gtk_radio_button_new_with_label( NULL, "Use Tinting (suitable for mostly grayscale images)" ); gtk_box_pack_start (GTK_BOX (box), mx->tint_radio, FALSE, FALSE, 0); mx->hsv_radio = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(mx->tint_radio), "Use Hue rotation (suitable for colorfull images)" ); gtk_box_pack_start (GTK_BOX (box), mx->hsv_radio, FALSE, FALSE, 0); colorize_gtk_widget( frame, get_colorschemed_style_normal() ); gtk_widget_show_all (box); gtk_widget_show (box); mx->border_check_box = gtk_check_button_new_with_label( "Draw Border around the image" ); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mx->border_check_box), TRUE ); colorize_gtk_widget( mx->border_check_box, get_colorschemed_style_normal() ); g_signal_connect ((gpointer) mx->border_check_box, "clicked", G_CALLBACK (set_make_xml_widgets_sensitive), mx); frame = gtk_frame_new(NULL); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), frame, FALSE, FALSE, 5); gtk_frame_set_label_widget( GTK_FRAME(frame), mx->border_check_box ); box = gtk_vbox_new( TRUE, 5 ); gtk_container_set_border_width (GTK_CONTAINER (box), 5); gtk_container_add (GTK_CONTAINER (frame), box); mx->solid_check_box = gtk_check_button_new_with_label( "Draw solid bevel" ); gtk_box_pack_start (GTK_BOX (box), mx->solid_check_box, FALSE, FALSE, 0); box2 = gtk_hbox_new( FALSE, 5 ); gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0); mx->single_color_check_box = gtk_check_button_new_with_label( "Use single color" ); gtk_box_pack_start (GTK_BOX (box2), mx->single_color_check_box, FALSE, FALSE, 0); mx->outline_check_box = gtk_check_button_new_with_label( "Outline image" ); gtk_box_pack_start (GTK_BOX (box2), mx->outline_check_box, FALSE, FALSE, 0); ; gtk_widget_show_all (box2); box2 = gtk_hbox_new( FALSE, 5 ); gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (box2), gtk_label_new("Border width : "), FALSE, FALSE, 0); mx->border_width = gtk_spin_button_new_with_range( 1.0, Scr.MyDisplayWidth/2, 1.0 ); gtk_box_pack_start (GTK_BOX (box2), mx->border_width, FALSE, FALSE, 0); gtk_widget_show_all (box2); colorize_gtk_widget( frame, get_colorschemed_style_normal() ); gtk_widget_show_all (box); gtk_widget_show (box); box2 = gtk_hbox_new( FALSE, 5 ); gtk_container_set_border_width (GTK_CONTAINER (box2), 5); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(mx->dlg)->vbox), box2, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box2), gtk_label_new("New Background name : "), FALSE, FALSE, 0); mx->back_name = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (box2), mx->back_name, TRUE, TRUE, 0); gtk_widget_show_all (box2); gtk_widget_show_all (mx->dlg); do { response = gtk_dialog_run( GTK_DIALOG(mx->dlg) ); if( response == GTK_RESPONSE_ACCEPT ) { name = gtk_entry_get_text( GTK_ENTRY(mx->back_name) ); 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 ) { if( make_xml_from_image( mx, id ) ) { files_added = True ; make_minixml_from_image( mx, id ); } } if( files_added ) asgtk_info2( WallpaperState.main_window, "New background \"%s\" file created.", name, NULL ); make_xml_dlg_destroy( mx ); if( files_added ) asgtk_image_dir_refresh( id ); }