diff --git a/ChangeLog b/ChangeLog index 3bc896e28998223d78c108c390172b02ad98ad05..6104ba5bb6b81796b37ab4005952c345e9cd7d8d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-05-18 jeromeg + + * Improve the status dialog of the upload to ZimageZ. + * Remember the last ZimageZ user name and put it in the user field + when displaying the dialog for the first time. + 2009-05-18 jeromeg * lib/screenshooter-dialogs.c: diff --git a/lib/screenshooter-actions.c b/lib/screenshooter-actions.c index d3d3378a84413ffacb5daec92e5557db26f02ab8..4f4bf5666151c6e25f8e2078edb4cb83df772bf8 100644 --- a/lib/screenshooter-actions.c +++ b/lib/screenshooter-actions.c @@ -117,7 +117,7 @@ gboolean screenshooter_take_and_output_screenshot (ScreenshotData *sd) } else { - screenshooter_upload_to_zimagez (screenshot_path); + screenshooter_upload_to_zimagez (screenshot_path, sd->last_user); } } diff --git a/lib/screenshooter-dialogs.c b/lib/screenshooter-dialogs.c index 8e88f7cf56bf91811cbf7bb9f047fd4de4530117..bc42cbf6168ff8e836b3e771bbef6b890dad8632 100644 --- a/lib/screenshooter-dialogs.c +++ b/lib/screenshooter-dialogs.c @@ -773,7 +773,6 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_table_attach_defaults (GTK_TABLE (capture_table), area_main_box, 0, 1, 0, 2); /* Create area label */ - area_label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (area_label), diff --git a/lib/screenshooter-global.h b/lib/screenshooter-global.h index 4df10596464b842a6c7191cfa03129da8c722d22..0fd793c1b65bb2b84a0e6194df11a3499a894865 100644 --- a/lib/screenshooter-global.h +++ b/lib/screenshooter-global.h @@ -48,6 +48,7 @@ typedef struct gint close; gchar *screenshot_dir; gchar *app; + gchar *last_user; gboolean cli; } ScreenshotData; diff --git a/lib/screenshooter-utils.c b/lib/screenshooter-utils.c index 2ba37ffd72c6bada04f3d3673f869d6e46457844..6a2dd0e61dd3a599794821879f23ff74c3af2a69 100644 --- a/lib/screenshooter-utils.c +++ b/lib/screenshooter-utils.c @@ -65,6 +65,7 @@ screenshooter_read_rc_file (const gchar *file, ScreenshotData *sd) gint close_app = 1; gchar *screenshot_dir = g_strdup (home_uri); gchar *app = g_strdup ("none"); + gchar *last_user = g_strdup (""); if (G_LIKELY (file != NULL)) { @@ -86,6 +87,9 @@ screenshooter_read_rc_file (const gchar *file, ScreenshotData *sd) g_free (app); app = g_strdup (xfce_rc_read_entry (rc, "app", "none")); + g_free (last_user); + last_user = g_strdup (xfce_rc_read_entry (rc, "last_user", "")); + g_free (screenshot_dir); screenshot_dir = g_strdup (xfce_rc_read_entry (rc, "screenshot_dir", home_uri)); @@ -107,6 +111,7 @@ screenshooter_read_rc_file (const gchar *file, ScreenshotData *sd) sd->close = close_app; sd->screenshot_dir = screenshot_dir; sd->app = app; + sd->last_user = last_user; } @@ -138,6 +143,7 @@ screenshooter_write_rc_file (const gchar *file, ScreenshotData *sd) xfce_rc_write_int_entry (rc, "close", sd->close); xfce_rc_write_entry (rc, "screenshot_dir", sd->screenshot_dir); xfce_rc_write_entry (rc, "app", sd->app); + xfce_rc_write_entry (rc, "last_user", sd->last_user); TRACE ("Flush and close the rc file"); diff --git a/lib/screenshooter-zimagez.c b/lib/screenshooter-zimagez.c index 0cff51f94e0431b6d1aa3e0d76ab8b5020f3dbef..d578653091bb96068c2dcc381d136abd585665f1 100644 --- a/lib/screenshooter-zimagez.c +++ b/lib/screenshooter-zimagez.c @@ -49,7 +49,8 @@ static void open_url_hook (GtkLinkButton *button, const gchar *link, gpointer user_data); static void open_zimagez_link (gpointer unused); -static ScreenshooterJob *zimagez_upload_to_zimagez (const gchar *file_name); +static ScreenshooterJob *zimagez_upload_to_zimagez (const gchar *file_name, + gchar *last_user); static gboolean zimagez_upload_job (ScreenshooterJob *job, GValueArray *param_values, GError **error); @@ -112,7 +113,8 @@ zimagez_upload_job (ScreenshooterJob *job, GValueArray *param_values, GError **e gchar *online_file_name = NULL; gchar *password = g_strdup (""); gchar *title = g_strdup (""); - gchar *user = g_strdup (""); + gchar *user; + gchar **last_user; gsize data_length; @@ -130,13 +132,18 @@ zimagez_upload_job (ScreenshooterJob *job, GValueArray *param_values, GError **e g_return_val_if_fail (SCREENSHOOTER_IS_JOB (job), FALSE); g_return_val_if_fail (param_values != NULL, FALSE); - g_return_val_if_fail (param_values->n_values == 1, FALSE); + g_return_val_if_fail (param_values->n_values == 2, FALSE); g_return_val_if_fail (G_VALUE_HOLDS_STRING (¶m_values->values[0]), FALSE); + g_return_val_if_fail (G_VALUE_HOLDS_POINTER (¶m_values->values[1]), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); if (exo_job_set_error_if_cancelled (EXO_JOB (job), error)) return FALSE; + /* Get the last user */ + last_user = g_value_get_pointer (g_value_array_get_nth (param_values, 1)); + user = g_strdup (*last_user); + /* Get the path of the image that is to be uploaded */ image_path = g_value_get_string (g_value_array_get_nth (param_values, 0)); @@ -456,6 +463,9 @@ zimagez_upload_job (ScreenshooterJob *job, GValueArray *param_values, GError **e xmlrpc_DECREF (resultP); + g_free (*last_user); + *last_user = g_strdup (user); + g_free (user); g_free (password); g_free (encoded_password); @@ -580,12 +590,13 @@ zimagez_upload_job (ScreenshooterJob *job, GValueArray *param_values, GError **e static ScreenshooterJob -*zimagez_upload_to_zimagez (const gchar *file_path) +*zimagez_upload_to_zimagez (const gchar *file_path, gchar *last_user) { g_return_val_if_fail (file_path != NULL, NULL); - return screenshooter_simple_job_launch (zimagez_upload_job, 1, - G_TYPE_STRING, file_path); + return screenshooter_simple_job_launch (zimagez_upload_job, 2, + G_TYPE_STRING, file_path, + G_TYPE_POINTER, &last_user); } @@ -977,6 +988,7 @@ static void cb_update_info (ExoJob *job, gchar *message, GtkWidget *label) * screenshooter_upload_to_zimagez: * @image_path: the local path of the image that should be uploaded to * ZimageZ.com. + * @last_user: the last user name used, to pre-fill the user field. * * Uploads the image whose path is @image_path: a dialog asks for the user * login, password, a title for the image and a comment; then the image is @@ -985,11 +997,12 @@ static void cb_update_info (ExoJob *job, gchar *message, GtkWidget *label) * **/ -void screenshooter_upload_to_zimagez (const gchar *image_path) +void screenshooter_upload_to_zimagez (const gchar *image_path, gchar *last_user) { ScreenshooterJob *job; - GtkWidget *dialog = NULL; - GtkWidget *label; + GtkWidget *dialog; + GtkWidget *label, *status_label; + GtkWidget *main_box, *main_alignment; g_return_if_fail (image_path != NULL); @@ -1000,16 +1013,39 @@ void screenshooter_upload_to_zimagez (const gchar *image_path) NULL); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), 20); gtk_box_set_spacing (GTK_BOX (GTK_DIALOG(dialog)->vbox), 12); gtk_window_set_deletable (GTK_WINDOW (dialog), FALSE); gtk_window_set_icon_name (GTK_WINDOW (dialog), "gtk-info"); + /* Create the main alignment for the dialog */ + main_alignment = gtk_alignment_new (0, 0, 1, 1); + + gtk_alignment_set_padding (GTK_ALIGNMENT (main_alignment), 6, 0, 6, 6); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), main_alignment, TRUE, TRUE, 0); + + /* Create the main box for the dialog */ + main_box = gtk_vbox_new (FALSE, 10); + + gtk_container_set_border_width (GTK_CONTAINER (main_box), 12); + gtk_container_add (GTK_CONTAINER (main_alignment), main_box); + + /* Status label*/ + status_label = gtk_label_new (""); + + gtk_label_set_markup (GTK_LABEL (status_label), + _("<span weight=\"bold\" stretch=\"semiexpanded\">" + "Status</span>")); + + gtk_misc_set_alignment (GTK_MISC (status_label), 0, 0); + gtk_container_add (GTK_CONTAINER (main_box), status_label); + + /* Information label */ label = gtk_label_new (""); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); - gtk_widget_show (label); + gtk_container_add (GTK_CONTAINER (main_box), label); + + gtk_widget_show_all (GTK_DIALOG(dialog)->vbox); - job = zimagez_upload_to_zimagez (image_path); + job = zimagez_upload_to_zimagez (image_path, last_user); g_signal_connect (job, "ask", (GCallback) cb_ask_for_information, NULL); g_signal_connect (job, "image-uploaded", (GCallback) cb_image_uploaded, NULL); diff --git a/lib/screenshooter-zimagez.h b/lib/screenshooter-zimagez.h index f3ab8eece63bd7cc8bed3d3c12b0a1fa4052001c..9df035c43b4e2336863ab8405b93499cb28af459 100644 --- a/lib/screenshooter-zimagez.h +++ b/lib/screenshooter-zimagez.h @@ -35,7 +35,8 @@ #include "sexy-url-label.h" -void screenshooter_upload_to_zimagez (const gchar *image_path); +void screenshooter_upload_to_zimagez (const gchar *image_path, + gchar *last_user); #endif