Author: post
Date: 2010-05-27 21:50:14 +0200 (Thu, 27 May 2010)
New Revision: 3387

Modified:
   trunk/src/rs-actions.c
Log:
Show copy mask selection on COPY instead of on Paste. This allows to apply same 
settings to multiple images with fewer clicks.

Modified: trunk/src/rs-actions.c
===================================================================
--- trunk/src/rs-actions.c      2010-05-27 19:20:32 UTC (rev 3386)
+++ trunk/src/rs-actions.c      2010-05-27 19:50:14 UTC (rev 3387)
@@ -336,127 +336,133 @@
 
 ACTION(copy_settings)
 {
+       gint mask = 0xffffff; /* Should be RSSettingsMask, is gint to satisfy 
rs_conf_get_integer() */
+       GtkWidget *dialog, *cb_box;
+       GtkWidget *cb_profile, *cb_exposure, *cb_saturation, *cb_hue, 
*cb_contrast, *cb_whitebalance, *cb_curve, *cb_sharpen, *cb_denoise_luma, 
*cb_denoise_chroma, *cb_channelmixer, *cb_tca, *cb_vignetting;
+
        if (!rs->settings_buffer)
                rs->settings_buffer = rs_settings_new();
-       if (rs->photo)
+       if (!rs->photo)
+               return;
+
+       rs_conf_get_integer(CONF_PASTE_MASK, &mask);
+
+       /* Build GUI */
+       cb_profile = gtk_check_button_new_with_label (_("Profile"));
+       cb_exposure = gtk_check_button_new_with_label (_("Exposure"));
+       cb_saturation = gtk_check_button_new_with_label (_("Saturation"));
+       cb_hue = gtk_check_button_new_with_label (_("Hue"));
+       cb_contrast = gtk_check_button_new_with_label (_("Contrast"));
+       cb_whitebalance = gtk_check_button_new_with_label (_("White balance"));
+       cb_sharpen = gtk_check_button_new_with_label (_("Sharpen"));
+       cb_denoise_luma = gtk_check_button_new_with_label (_("Denoise"));
+       cb_denoise_chroma = gtk_check_button_new_with_label (_("Color 
denoise"));
+       cb_channelmixer = gtk_check_button_new_with_label (_("Channel mixer"));
+       cb_tca = gtk_check_button_new_with_label (_("TCA"));
+       cb_vignetting = gtk_check_button_new_with_label (_("Vignetting"));
+       cb_curve = gtk_check_button_new_with_label (_("Curve"));
+
+       if (mask & MASK_PROFILE)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_profile), 
TRUE);
+       if (mask & MASK_EXPOSURE)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_exposure), 
TRUE);
+       if (mask & MASK_SATURATION)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_saturation), 
TRUE);
+       if (mask & MASK_HUE)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_hue), TRUE);
+       if (mask & MASK_CONTRAST)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_contrast), 
TRUE);
+       if (mask & MASK_WARMTH && mask & MASK_TINT)
+               
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_whitebalance), TRUE);
+       if (mask & MASK_SHARPEN)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_sharpen), 
TRUE);
+       if (mask & MASK_DENOISE_LUMA)
+               
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_denoise_luma), TRUE);
+       if (mask & MASK_DENOISE_CHROMA)
+               
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_denoise_chroma), TRUE);
+       if (mask & MASK_CHANNELMIXER)
+               
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_channelmixer), TRUE);
+       if (mask & MASK_TCA)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_tca), TRUE);
+       if (mask & MASK_VIGNETTING)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_vignetting), 
TRUE);
+       if (mask & MASK_CURVE)
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_curve), TRUE);
+
+       cb_box = gtk_vbox_new(FALSE, 0);
+
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_profile, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_exposure, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_saturation, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_hue, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_contrast, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_whitebalance, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_sharpen, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_denoise_luma, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_denoise_chroma, FALSE, TRUE, 
0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_channelmixer, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_tca, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_vignetting, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (cb_box), cb_curve, FALSE, TRUE, 0);
+
+       dialog = gui_dialog_make_from_widget(GTK_STOCK_DIALOG_QUESTION, 
_("Select settings to copy"), cb_box);
+
+       gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, 
GTK_RESPONSE_CANCEL, GTK_STOCK_APPLY, GTK_RESPONSE_APPLY, NULL);
+       gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_APPLY);
+
+       gtk_widget_show_all(dialog);
+
+       mask=0;
+
+       if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_APPLY)
        {
+               if (GTK_TOGGLE_BUTTON(cb_profile)->active)
+                       mask |= MASK_PROFILE;
+               if (GTK_TOGGLE_BUTTON(cb_exposure)->active)
+                       mask |= MASK_EXPOSURE;
+               if (GTK_TOGGLE_BUTTON(cb_saturation)->active)
+                       mask |= MASK_SATURATION;
+               if (GTK_TOGGLE_BUTTON(cb_hue)->active)
+                       mask |= MASK_HUE;
+               if (GTK_TOGGLE_BUTTON(cb_contrast)->active)
+                       mask |= MASK_CONTRAST;
+               if (GTK_TOGGLE_BUTTON(cb_whitebalance)->active)
+                       mask |= MASK_WB;
+               if (GTK_TOGGLE_BUTTON(cb_sharpen)->active)
+                       mask |= MASK_SHARPEN;
+               if (GTK_TOGGLE_BUTTON(cb_denoise_luma)->active)
+                       mask |= MASK_DENOISE_LUMA;
+               if (GTK_TOGGLE_BUTTON(cb_denoise_chroma)->active)
+                       mask |= MASK_DENOISE_CHROMA;
+               if (GTK_TOGGLE_BUTTON(cb_channelmixer)->active)
+                       mask |= MASK_CHANNELMIXER;
+               if (GTK_TOGGLE_BUTTON(cb_tca)->active)
+                       mask |= MASK_TCA;
+               if (GTK_TOGGLE_BUTTON(cb_vignetting)->active)
+                       mask |= MASK_VIGNETTING;
+               if (GTK_TOGGLE_BUTTON(cb_curve)->active)
+                       mask |= MASK_CURVE;
+               rs_conf_set_integer(CONF_PASTE_MASK, mask);
+
                rs_settings_copy(rs->photo->settings[rs->current_setting], 
MASK_ALL, rs->settings_buffer);
                rs->dcp_buffer = rs_photo_get_dcp_profile(rs->photo);
                rs->icc_buffer = rs_photo_get_icc_profile(rs->photo);
                gui_status_notify(_("Copied settings"));
        }
+       gtk_widget_destroy (dialog);
+
+
 }
 
 ACTION(paste_settings)
 {
        gint mask = 0xffffff; /* Should be RSSettingsMask, is gint to satisfy 
rs_conf_get_integer() */
 
-       GtkWidget *dialog, *cb_box;
-       GtkWidget *cb_profile, *cb_exposure, *cb_saturation, *cb_hue, 
*cb_contrast, *cb_whitebalance, *cb_curve, *cb_sharpen, *cb_denoise_luma, 
*cb_denoise_chroma, *cb_channelmixer, *cb_tca, *cb_vignetting;
-
+       gui_set_busy(TRUE);
+       GTK_CATCHUP();
        if (rs->settings_buffer)
        {
-               /* Build GUI */
-               cb_profile = gtk_check_button_new_with_label (_("Profile"));
-               cb_exposure = gtk_check_button_new_with_label (_("Exposure"));
-               cb_saturation = gtk_check_button_new_with_label 
(_("Saturation"));
-               cb_hue = gtk_check_button_new_with_label (_("Hue"));
-               cb_contrast = gtk_check_button_new_with_label (_("Contrast"));
-               cb_whitebalance = gtk_check_button_new_with_label (_("White 
balance"));
-               cb_sharpen = gtk_check_button_new_with_label (_("Sharpen"));
-               cb_denoise_luma = gtk_check_button_new_with_label 
(_("Denoise"));
-               cb_denoise_chroma = gtk_check_button_new_with_label (_("Color 
denoise"));
-               cb_channelmixer = gtk_check_button_new_with_label (_("Channel 
mixer"));
-               cb_tca = gtk_check_button_new_with_label (_("TCA"));
-               cb_vignetting = gtk_check_button_new_with_label 
(_("Vignetting"));
-               cb_curve = gtk_check_button_new_with_label (_("Curve"));
-
                rs_conf_get_integer(CONF_PASTE_MASK, &mask);
-
-               if (mask & MASK_PROFILE)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_profile), TRUE);
-               if (mask & MASK_EXPOSURE)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_exposure), TRUE);
-               if (mask & MASK_SATURATION)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_saturation), TRUE);
-               if (mask & MASK_HUE)
-                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_hue), 
TRUE);
-               if (mask & MASK_CONTRAST)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_contrast), TRUE);
-               if (mask & MASK_WARMTH && mask & MASK_TINT)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_whitebalance), TRUE);
-               if (mask & MASK_SHARPEN)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_sharpen), TRUE);
-               if (mask & MASK_DENOISE_LUMA)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_denoise_luma), TRUE);
-               if (mask & MASK_DENOISE_CHROMA)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_denoise_chroma), TRUE);
-               if (mask & MASK_CHANNELMIXER)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_channelmixer), TRUE);
-               if (mask & MASK_TCA)
-                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_tca), 
TRUE);
-               if (mask & MASK_VIGNETTING)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_vignetting), TRUE);
-               if (mask & MASK_CURVE)
-                       
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cb_curve), TRUE);
-
-               cb_box = gtk_vbox_new(FALSE, 0);
-
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_profile, FALSE, TRUE, 
0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_exposure, FALSE, TRUE, 
0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_saturation, FALSE, 
TRUE, 0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_hue, FALSE, TRUE, 0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_contrast, FALSE, TRUE, 
0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_whitebalance, FALSE, 
TRUE, 0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_sharpen, FALSE, TRUE, 
0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_denoise_luma, FALSE, 
TRUE, 0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_denoise_chroma, FALSE, 
TRUE, 0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_channelmixer, FALSE, 
TRUE, 0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_tca, FALSE, TRUE, 0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_vignetting, FALSE, 
TRUE, 0);
-               gtk_box_pack_start (GTK_BOX (cb_box), cb_curve, FALSE, TRUE, 0);
-
-               dialog = gui_dialog_make_from_widget(GTK_STOCK_DIALOG_QUESTION, 
_("Select settings to paste"), cb_box);
-
-               gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, 
GTK_RESPONSE_CANCEL, GTK_STOCK_APPLY, GTK_RESPONSE_APPLY, NULL);
-               gtk_dialog_set_default_response(GTK_DIALOG(dialog), 
GTK_RESPONSE_APPLY);
-
-               gtk_widget_show_all(dialog);
-
-               mask=0;
-
-               if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_APPLY)
-               {
-                       if (GTK_TOGGLE_BUTTON(cb_profile)->active)
-                               mask |= MASK_PROFILE;
-                       if (GTK_TOGGLE_BUTTON(cb_exposure)->active)
-                               mask |= MASK_EXPOSURE;
-                       if (GTK_TOGGLE_BUTTON(cb_saturation)->active)
-                               mask |= MASK_SATURATION;
-                       if (GTK_TOGGLE_BUTTON(cb_hue)->active)
-                               mask |= MASK_HUE;
-                       if (GTK_TOGGLE_BUTTON(cb_contrast)->active)
-                               mask |= MASK_CONTRAST;
-                       if (GTK_TOGGLE_BUTTON(cb_whitebalance)->active)
-                               mask |= MASK_WB;
-                       if (GTK_TOGGLE_BUTTON(cb_sharpen)->active)
-                               mask |= MASK_SHARPEN;
-                       if (GTK_TOGGLE_BUTTON(cb_denoise_luma)->active)
-                               mask |= MASK_DENOISE_LUMA;
-                       if (GTK_TOGGLE_BUTTON(cb_denoise_chroma)->active)
-                               mask |= MASK_DENOISE_CHROMA;
-                       if (GTK_TOGGLE_BUTTON(cb_channelmixer)->active)
-                               mask |= MASK_CHANNELMIXER;
-                       if (GTK_TOGGLE_BUTTON(cb_tca)->active)
-                               mask |= MASK_TCA;
-                       if (GTK_TOGGLE_BUTTON(cb_vignetting)->active)
-                               mask |= MASK_VIGNETTING;
-                       if (GTK_TOGGLE_BUTTON(cb_curve)->active)
-                               mask |= MASK_CURVE;
-                       rs_conf_set_integer(CONF_PASTE_MASK, mask);
-               }
-               gtk_widget_destroy (dialog);
-
                if(mask > 0)
                {
                        RSMetadata *metadata;
@@ -529,6 +535,8 @@
        }
        else 
                gui_status_notify(_("Buffer empty"));
+       gui_set_busy(FALSE);
+       GTK_CATCHUP();
 }
 
 ACTION(reset_settings)


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to