diff --git a/lib/screenshooter-actions.c b/lib/screenshooter-actions.c index ad288fb..8cea9f3 100644 --- a/lib/screenshooter-actions.c +++ b/lib/screenshooter-actions.c @@ -80,7 +80,10 @@ gboolean screenshooter_action_idle (ScreenshotData *sd) } } - if (sd->action == SAVE) + if (sd->action & CLIPBOARD) + screenshooter_copy_to_clipboard (sd->screenshot); + + if (sd->action & SAVE) { const gchar *save_location; @@ -92,7 +95,7 @@ gboolean screenshooter_action_idle (ScreenshotData *sd) sd->title, sd->timestamp, TRUE, - sd->action_specified); + TRUE); if (save_location) { @@ -104,10 +107,6 @@ gboolean screenshooter_action_idle (ScreenshotData *sd) TRACE ("New save directory: %s", sd->screenshot_dir); } } - else if (sd->action == CLIPBOARD) - { - screenshooter_copy_to_clipboard (sd->screenshot); - } else { GFile *temp_dir = g_file_new_for_path (g_get_tmp_dir ()); @@ -122,13 +121,11 @@ gboolean screenshooter_action_idle (ScreenshotData *sd) if (screenshot_path != NULL) { - if (sd->action == OPEN) + if (sd->action & OPEN) screenshooter_open_screenshot (screenshot_path, sd->app, sd->app_info); - else if (sd->action == UPLOAD_IMGUR) { - screenshooter_upload_to_imgur (screenshot_path, - sd->title); - } - else + else if (sd->action & UPLOAD_IMGUR) + screenshooter_upload_to_imgur (screenshot_path, sd->title); + else if (sd->action & UPLOAD_ZIMAGEZ) { gchar *new_last_user = NULL; diff --git a/lib/screenshooter-dialogs.c b/lib/screenshooter-dialogs.c index e643fae..0ffd8f0 100644 --- a/lib/screenshooter-dialogs.c +++ b/lib/screenshooter-dialogs.c @@ -190,7 +190,7 @@ static void cb_clipboard_toggled (GtkToggleButton *tb, ScreenshotData *sd) static void cb_zimagez_toggled (GtkToggleButton *tb, ScreenshotData *sd) { if (gtk_toggle_button_get_active (tb)) - sd->action = UPLOAD; + sd->action = UPLOAD_ZIMAGEZ; } static void cb_imgur_toggled (GtkToggleButton *tb, ScreenshotData *sd) @@ -1006,7 +1006,7 @@ GtkWidget *screenshooter_actions_dialog_new (ScreenshotData *sd) /* Save option radio button */ save_radio_button = gtk_radio_button_new_with_mnemonic (NULL, _("Save")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (save_radio_button), - (sd->action == SAVE)); + (sd->action & SAVE)); g_signal_connect (G_OBJECT (save_radio_button), "toggled", G_CALLBACK (cb_save_toggled), sd); gtk_widget_set_tooltip_text (save_radio_button, _("Save the screenshot to a PNG file")); @@ -1023,7 +1023,7 @@ GtkWidget *screenshooter_actions_dialog_new (ScreenshotData *sd) _("Copy the screenshot to the clipboard so that it can be " "pasted later")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (clipboard_radio_button), - (sd->action == CLIPBOARD)); + (sd->action & CLIPBOARD)); g_signal_connect (G_OBJECT (clipboard_radio_button), "toggled", G_CALLBACK (cb_clipboard_toggled), sd); gtk_grid_attach (GTK_GRID (actions_grid), clipboard_radio_button, 0, 1, 1, 1); @@ -1034,7 +1034,7 @@ GtkWidget *screenshooter_actions_dialog_new (ScreenshotData *sd) gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (save_radio_button), _("Open with:")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (open_with_radio_button), - (sd->action == OPEN)); + (sd->action & OPEN)); g_signal_connect (G_OBJECT (open_with_radio_button), "toggled", G_CALLBACK (cb_open_toggled), sd); gtk_widget_set_tooltip_text (open_with_radio_button, @@ -1069,7 +1069,7 @@ GtkWidget *screenshooter_actions_dialog_new (ScreenshotData *sd) gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (save_radio_button), _("Host on ZimageZ")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (zimagez_radio_button), - (sd->action == UPLOAD)); + (sd->action & UPLOAD_ZIMAGEZ)); gtk_widget_set_tooltip_text (zimagez_radio_button, _("Host the screenshot on ZimageZ, a free online " "image hosting service")); @@ -1082,7 +1082,7 @@ GtkWidget *screenshooter_actions_dialog_new (ScreenshotData *sd) gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (save_radio_button), _("Host on Imgur")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (imgur_radio_button), - (sd->action == UPLOAD_IMGUR)); + (sd->action & UPLOAD_IMGUR)); gtk_widget_set_tooltip_text (imgur_radio_button, _("Host the screenshot on Imgur, a free online " "image hosting service")); diff --git a/lib/screenshooter-global.h b/lib/screenshooter-global.h index 3ffcf2c..ce62b47 100644 --- a/lib/screenshooter-global.h +++ b/lib/screenshooter-global.h @@ -29,12 +29,12 @@ /* Possible actions */ enum { - ACTION_0, - SAVE, - CLIPBOARD, - OPEN, - UPLOAD, - UPLOAD_IMGUR, + NONE = 0, + SAVE = 1, + CLIPBOARD = 2, + OPEN = 4, + UPLOAD_ZIMAGEZ = 8, + UPLOAD_IMGUR = 16, }; diff --git a/src/main.c b/src/main.c index f7a0568..0a0dd8a 100644 --- a/src/main.c +++ b/src/main.c @@ -151,6 +151,7 @@ int main (int argc, char **argv) ScreenshotData *sd = g_new0 (ScreenshotData, 1); sd->plugin = FALSE; sd->app_info = NULL; + sd->action = 0; xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); @@ -206,13 +207,6 @@ int main (int argc, char **argv) { g_printerr (conflict_error, "upload", "save"); - g_free (sd); - return EXIT_FAILURE; - } - else if (upload && clipboard) - { - g_printerr (conflict_error, "upload", "clipboard"); - g_free (sd); return EXIT_FAILURE; } @@ -220,20 +214,6 @@ int main (int argc, char **argv) { g_printerr (conflict_error, "open", "save"); - g_free (sd); - return EXIT_FAILURE; - } - else if ((application != NULL) && clipboard) - { - g_printerr (conflict_error, "open", "clipboard"); - - g_free (sd); - return EXIT_FAILURE; - } - else if ((screenshot_dir != NULL) && clipboard) - { - g_printerr (conflict_error, "save", "clipboard"); - g_free (sd); return EXIT_FAILURE; } @@ -322,29 +302,29 @@ int main (int argc, char **argv) } else if (upload) { - sd->app = g_strdup ("none"); - sd->action = UPLOAD; + sd->action = UPLOAD_ZIMAGEZ; sd->action_specified = TRUE; } - else if (clipboard) + else if (upload_imgur) { - sd->app = g_strdup ("none"); - sd->action = CLIPBOARD; + sd->action = UPLOAD_IMGUR; sd->action_specified = TRUE; } - else if (upload_imgur) + else if (screenshot_dir != NULL) { - sd->app = g_strdup ("none"); - sd->action = UPLOAD_IMGUR; + sd->action = SAVE; + sd->action_specified = TRUE; + } + + if (clipboard) + { + sd->action |= CLIPBOARD; sd->action_specified = TRUE; } if (!sd->app) sd->app = g_strdup ("none"); - if (!sd->action) - sd->action = SAVE; - /* If the user gave a directory name, check that it is valid */ if (screenshot_dir != NULL) {