diff --git a/ChangeLog b/ChangeLog index 0bf91136046e1d628c88b7d2412c08f062c7d183..02a859301bc324b9f201d3250d3392dfecf04947 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-05-16 jeromeg + + * src/screenshooter-utils.{c,h}: add (screenshooter_error) which shows + an error using a GtkMessageDialog. + * lib/*, panel-plugin/screenshooter-plugin.c, src/main.c: + - use (screenshooter_error) instead of (xfce_err). + - remove some trailing white spaces. + * lib/screenshooter-job.c (screenshooter_job_ask_info): add a missing return, + when the job has been cancelled. + * TODO: updated. + 2009-05-15 jeromeg * src/main.c: diff --git a/TODO b/TODO index 12c9d9f12f7e5fe66fbca0d058fba0a62d613231..35c9d4f3b19a1aa780e9f517c53442488c43b3b7 100644 --- a/TODO +++ b/TODO @@ -2,7 +2,6 @@ as in thunar and xfdesktop. * Check for leaks using valgrind. * Use Xshape to have a transparent background in the generated screenshots. -* Remove every call to xfce_err with a gtk_message_dialog. * the Zimagez code needs a lot of error checking. Low priority: diff --git a/lib/exo-job.c b/lib/exo-job.c index db6c128f6332da33ffeaab04094d6a71920062ab..10d44816fc69725dd28db9390e5b792d0aaec8f8 100644 --- a/lib/exo-job.c +++ b/lib/exo-job.c @@ -90,7 +90,7 @@ exo_job_get_type (void) if (G_UNLIKELY (type == G_TYPE_INVALID)) { - type = g_type_register_static_simple (G_TYPE_OBJECT, + type = g_type_register_static_simple (G_TYPE_OBJECT, "ExoJob", sizeof (ExoJobClass), (GClassInitFunc) exo_job_class_init, @@ -115,7 +115,7 @@ exo_job_class_init (ExoJobClass *klass) exo_job_parent_class = g_type_class_peek_parent (klass); gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = exo_job_finalize; + gobject_class->finalize = exo_job_finalize; klass->execute = NULL; klass->error = NULL; @@ -133,8 +133,8 @@ exo_job_class_init (ExoJobClass *klass) job_signals[ERROR] = g_signal_new ("error", G_TYPE_FROM_CLASS (klass), - G_SIGNAL_NO_HOOKS, - G_STRUCT_OFFSET (ExoJobClass, error), + G_SIGNAL_NO_HOOKS, + G_STRUCT_OFFSET (ExoJobClass, error), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); @@ -143,15 +143,15 @@ exo_job_class_init (ExoJobClass *klass) * ExoJob::finished: * @job : an #ExoJob. * - * This signal will be automatically emitted once the @job finishes - * its execution, no matter whether @job completed successfully or + * This signal will be automatically emitted once the @job finishes + * its execution, no matter whether @job completed successfully or * was cancelled by the user. **/ job_signals[FINISHED] = g_signal_new ("finished", G_TYPE_FROM_CLASS (klass), - G_SIGNAL_NO_HOOKS, - G_STRUCT_OFFSET (ExoJobClass, finished), + G_SIGNAL_NO_HOOKS, + G_STRUCT_OFFSET (ExoJobClass, finished), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -164,14 +164,14 @@ exo_job_class_init (ExoJobClass *klass) * This signal is emitted to display information about the * @job. * Examples of messages are "Preparing..." or "Cleaning up...". * - * The @message is garanteed to contain valid UTF-8, so it can be + * The @message is garanteed to contain valid UTF-8, so it can be * displayed by #GtkWidget<!---->s out of the box. **/ job_signals[INFO_MESSAGE] = g_signal_new ("info-message", G_TYPE_FROM_CLASS (klass), - G_SIGNAL_NO_HOOKS, - G_STRUCT_OFFSET (ExoJobClass, info_message), + G_SIGNAL_NO_HOOKS, + G_STRUCT_OFFSET (ExoJobClass, info_message), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); @@ -181,15 +181,15 @@ exo_job_class_init (ExoJobClass *klass) * @job : an #ExoJob. * @percent : the percentage of completeness. * - * This signal is emitted to present the state of the overall - * progress. The @percent value is garantied to be in the range 0.0 + * This signal is emitted to present the state of the overall + * progress. The @percent value is garantied to be in the range 0.0 * to 100.0. **/ job_signals[PERCENT] = g_signal_new ("percent", G_TYPE_FROM_CLASS (klass), - G_SIGNAL_NO_HOOKS, - G_STRUCT_OFFSET (ExoJobClass, percent), + G_SIGNAL_NO_HOOKS, + G_STRUCT_OFFSET (ExoJobClass, percent), NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE); @@ -252,7 +252,7 @@ exo_job_finish (ExoJob *job, * @object : an #ExoJob. * @result : the #GAsyncResult of the job. * - * This function is called by the #GIOScheduler at the end of the + * This function is called by the #GIOScheduler at the end of the * operation. It checks if there were errors during the operation * and emits "error" and "finished" signals. **/ @@ -289,7 +289,7 @@ exo_job_async_ready (GObject *object, * @user_data : a #GSimpleAsyncResult. * * This function is called by the #GIOScheduler to execute the - * operation associated with the job. It basically calls the + * operation associated with the job. It basically calls the * ExoJobClass#execute function. * * Return value: %FALSE, to stop the thread at the end of the @@ -311,7 +311,7 @@ exo_job_scheduler_job_func (GIOSchedulerJob *scheduler_job, success = (*EXO_JOB_GET_CLASS (job)->execute) (job, &error); /* TODO why was this necessary again? */ - g_io_scheduler_job_send_to_mainloop (scheduler_job, (GSourceFunc) gtk_false, + g_io_scheduler_job_send_to_mainloop (scheduler_job, (GSourceFunc) gtk_false, NULL, NULL); if (!success) @@ -342,7 +342,7 @@ exo_job_emit_valist_in_mainloop (gpointer user_data) { ExoJobSignalData *data = user_data; - g_signal_emit_valist (data->instance, data->signal_id, data->signal_detail, + g_signal_emit_valist (data->instance, data->signal_id, data->signal_detail, data->var_args); return FALSE; @@ -359,8 +359,8 @@ exo_job_emit_valist_in_mainloop (gpointer user_data) * return type of the signal is G_TYPE_NONE, the return * value location can be omitted. * - * Send a the signal with the given @signal_id and @signal_detail to the - * main loop of the application and waits for the listeners to handle + * Send a the signal with the given @signal_id and @signal_detail to the + * main loop of the application and waits for the listeners to handle * it. **/ static void @@ -377,7 +377,7 @@ exo_job_emit_valist (ExoJob *job, data.instance = job; data.signal_id = signal_id; data.signal_detail = signal_detail; - + /* copy the variable argument list */ G_VA_COPY (data.var_args, var_args); @@ -417,7 +417,7 @@ exo_job_error (ExoJob *job, * @job : an #ExoJob. * * Emits the "finished" signal to notify listeners of the end of the - * operation. + * operation. * * This function should never be called from outside the application's * main loop. @@ -474,9 +474,9 @@ exo_job_launch (ExoJob *job) * exo_job_cancel: * @job : a #ExoJob. * - * Attempts to cancel the operation currently performed by @job. Even + * Attempts to cancel the operation currently performed by @job. Even * after the cancellation of @job, it may still emit signals, so you - * must take care of disconnecting all handlers appropriately if you + * must take care of disconnecting all handlers appropriately if you * cannot handle signals after cancellation. **/ void @@ -530,7 +530,7 @@ exo_job_get_cancellable (const ExoJob *job) * @error : error to be set if the @job was cancelled. * * Sets the @error if the @job was cancelled. This is a convenience - * function that is equivalent to + * function that is equivalent to * <informalexample><programlisting> * GCancellable *cancellable; * cancellable = exo_job_get_cancllable (job); diff --git a/lib/exo-job.h b/lib/exo-job.h index 25cef932527fe195a37bc8bb3c773dc886d5b894..416237a6412910c8bb9760057cdc4ecef6801499 100644 --- a/lib/exo-job.h +++ b/lib/exo-job.h @@ -42,7 +42,7 @@ struct _ExoJobClass /* virtual methods */ gboolean (*execute) (ExoJob *job, - GError **error); + GError **error); /* signals */ void (*error) (ExoJob *job, diff --git a/lib/exo-simple-job.c b/lib/exo-simple-job.c index b1bcc123fc520e7f2cfc4b671b26a2826a080209..60b056bfc8cae9c650992dfa06e9d380742e5037 100644 --- a/lib/exo-simple-job.c +++ b/lib/exo-simple-job.c @@ -72,12 +72,12 @@ exo_simple_job_get_type (void) if (G_UNLIKELY (type == G_TYPE_INVALID)) { - type = g_type_register_static_simple (EXO_TYPE_JOB, + type = g_type_register_static_simple (EXO_TYPE_JOB, "ExoSimpleJob", sizeof (ExoSimpleJobClass), (GClassInitFunc) exo_simple_job_class_init, sizeof (ExoSimpleJob), - NULL, + NULL, 0); } @@ -135,7 +135,7 @@ exo_simple_job_execute (ExoJob *job, { g_assert (err != NULL || exo_job_is_cancelled (job)); - /* set error if the job was cancelled. otherwise just propagate + /* set error if the job was cancelled. otherwise just propagate * the results of the processing function */ if (exo_job_set_error_if_cancelled (job, error)) { @@ -162,8 +162,8 @@ exo_simple_job_execute (ExoJob *job, * @... : a list of #GType and parameter pairs (exactly * @n_param_values pairs) that are passed to @func. * - * Allocates a new #ExoJob which executes the specified @func with - * the specified parameters. + * Allocates a new #ExoJob which executes the specified @func with + * the specified parameters. * * An example could be: * diff --git a/lib/exo-simple-job.h b/lib/exo-simple-job.h index dc71336ce956c7b893fbf717ddb73ba29e80ae22..c27c5e6d0ec33a3e0a2ecac75c86964936cce6f3 100644 --- a/lib/exo-simple-job.h +++ b/lib/exo-simple-job.h @@ -28,7 +28,7 @@ G_BEGIN_DECLS /** * ExoSimpleJobFunc: * @job : an #ExoJob. - * @param_values : a #GValueArray of the #GValue<!---->s passed to + * @param_values : a #GValueArray of the #GValue<!---->s passed to * exo_simple_job_launch(). * @error : return location for errors. * diff --git a/lib/libscreenshooter.h b/lib/libscreenshooter.h index 78ff03c9ed97ecaf7b6338ca7ef3f24a400039f4..6e770472a3c1df0c7f88badd3302d89ee23b0fc5 100644 --- a/lib/libscreenshooter.h +++ b/lib/libscreenshooter.h @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - + #ifndef HAVE_SCREENSHOOTER_H #define HAVE_SCREENSHOOTER_H diff --git a/lib/screenshooter-actions.c b/lib/screenshooter-actions.c index a51ab223bfbaf65b3e9636f4a5d6caea873788d4..712749affa3d4b1dfee79b50f1a137f3bf402486 100644 --- a/lib/screenshooter-actions.c +++ b/lib/screenshooter-actions.c @@ -25,7 +25,7 @@ void screenshooter_take_and_output_screenshot (ScreenshotData *sd) screenshooter_take_screenshot (sd->region, sd->delay, sd->show_mouse); g_return_if_fail (screenshot != NULL); - + if (sd->action == SAVE) { if (sd->screenshot_dir == NULL) diff --git a/lib/screenshooter-capture.c b/lib/screenshooter-capture.c index 9d4fac0479685e768ea90b02420129c3ab2f416c..06941f86810fb23490f6dc7126834a9ed5417265 100644 --- a/lib/screenshooter-capture.c +++ b/lib/screenshooter-capture.c @@ -35,16 +35,16 @@ static GdkPixbuf *get_rectangle_screenshot (void); -static GdkWindow +static GdkWindow *get_active_window (GdkScreen *screen, gboolean *needs_unref) { GdkWindow *window, *window2; TRACE ("Get the active window"); - + window = gdk_screen_get_active_window (screen); - - /* If there is no active window, we fallback to the whole screen. */ + + /* If there is no active window, we fallback to the whole screen. */ if (G_UNLIKELY (window == NULL)) { TRACE ("No active window, fallback to the root window"); @@ -58,7 +58,7 @@ static GdkWindow TRACE ("The active window is the desktop, fallback to the root window"); g_object_unref (window); - + window = gdk_get_default_root_window (); *needs_unref = FALSE; } @@ -68,9 +68,9 @@ static GdkWindow TRACE ("Active window is a normal window, grab the toplevel window"); window2 = gdk_window_get_toplevel (window); - + g_object_unref (window); - + window = window2; } @@ -84,25 +84,25 @@ static GdkPixbuf { gint x_orig, y_orig; gint width, height; - + GdkPixbuf *screenshot; GdkWindow *root; - + GdkRectangle *rectangle = g_new0 (GdkRectangle, 1); - + /* Get the root window */ TRACE ("Get the root window"); - + root = gdk_get_default_root_window (); TRACE ("Get the frame extents"); - + gdk_window_get_frame_extents (window, rectangle); - + /* Don't grab thing offscreen. */ TRACE ("Make sure we don't grab things offscreen"); - + x_orig = rectangle->x; y_orig = rectangle->y; width = rectangle->width; @@ -125,14 +125,14 @@ static GdkPixbuf if (y_orig + height > gdk_screen_height ()) height = gdk_screen_height () - y_orig; - + g_free (rectangle); - + /* Take the screenshot from the root GdkWindow, to grab things such as * menus. */ TRACE ("Grab the screenshot"); - + screenshot = gdk_pixbuf_get_from_drawable (NULL, root, NULL, x_orig, y_orig, 0, 0, width, height); @@ -155,26 +155,26 @@ static GdkPixbuf gint cursorx, cursory, xhot, yhot; TRACE ("Get the coordinates of the cursor"); - + gdk_window_get_pointer (root, &cursorx, &cursory, NULL); TRACE ("Get the cursor hotspot"); sscanf (gdk_pixbuf_get_option (cursor_pixbuf, "x_hot"), "%d", &xhot); sscanf (gdk_pixbuf_get_option (cursor_pixbuf, "y_hot"), "%d", &yhot); - + /* rectangle_window stores the window coordinates */ rectangle_window.x = x_orig; rectangle_window.y = y_orig; rectangle_window.width = width; rectangle_window.height = height; - + /* rectangle_cursor stores the cursor coordinates */ rectangle_cursor.x = cursorx; rectangle_cursor.y = cursory; rectangle_cursor.width = gdk_pixbuf_get_width (cursor_pixbuf); rectangle_cursor.height = gdk_pixbuf_get_height (cursor_pixbuf); - + /* see if the pointer is inside the window */ if (gdk_rectangle_intersect (&rectangle_window, &rectangle_cursor, @@ -190,14 +190,14 @@ static GdkPixbuf GDK_INTERP_BILINEAR, 255); } - + g_object_unref (cursor_pixbuf); } gdk_cursor_unref (cursor); } - return screenshot; + return screenshot; } @@ -206,27 +206,27 @@ static GdkPixbuf *get_rectangle_screenshot (void) { GdkPixbuf *screenshot = NULL; - + /* Get root window */ TRACE ("Get the root window"); - + GdkWindow *root_window = gdk_get_default_root_window (); - + GdkGCValues gc_values; GdkGC *gc; GdkGrabStatus grabstatus_mouse, grabstatus_keyboard; - + GdkGCValuesMask values_mask = - GDK_GC_FUNCTION | GDK_GC_FILL | GDK_GC_CLIP_MASK | - GDK_GC_SUBWINDOW | GDK_GC_CLIP_X_ORIGIN | GDK_GC_CLIP_Y_ORIGIN | - GDK_GC_EXPOSURES | GDK_GC_LINE_WIDTH | GDK_GC_LINE_STYLE | + GDK_GC_FUNCTION | GDK_GC_FILL | GDK_GC_CLIP_MASK | + GDK_GC_SUBWINDOW | GDK_GC_CLIP_X_ORIGIN | GDK_GC_CLIP_Y_ORIGIN | + GDK_GC_EXPOSURES | GDK_GC_LINE_WIDTH | GDK_GC_LINE_STYLE | GDK_GC_CAP_STYLE | GDK_GC_JOIN_STYLE; - + GdkColor gc_white = {0, 65535, 65535, 65535}; GdkColor gc_black = {0, 0, 0, 0}; - - GdkEventMask mask = - GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | + + GdkEventMask mask = + GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK; GdkCursor *xhair_cursor = gdk_cursor_new (GDK_CROSSHAIR); @@ -234,11 +234,11 @@ static GdkPixbuf gboolean done = FALSE; gboolean cancelled = FALSE; gint x, y, w, h; - - /*Set up graphics context for a XOR rectangle that will be drawn as + + /*Set up graphics context for a XOR rectangle that will be drawn as * the user drags the mouse */ TRACE ("Initialize the graphics context"); - + gc_values.function = GDK_XOR; gc_values.line_width = 2; gc_values.line_style = GDK_LINE_ON_OFF_DASH; @@ -250,44 +250,44 @@ static GdkPixbuf gc_values.clip_y_origin = 0; gc_values.clip_mask = None; gc_values.subwindow_mode = GDK_INCLUDE_INFERIORS; - + gc = gdk_gc_new_with_values (root_window, &gc_values, values_mask); gdk_gc_set_rgb_fg_color (gc, &gc_white); gdk_gc_set_rgb_bg_color (gc, &gc_black); - + /* Change cursor to cross-hair */ TRACE ("Set the cursor"); - + grabstatus_mouse = gdk_pointer_grab (root_window, FALSE, mask, NULL, xhair_cursor, GDK_CURRENT_TIME); grabstatus_keyboard = gdk_keyboard_grab (root_window, FALSE, GDK_CURRENT_TIME); - + while (!done && grabstatus_mouse == GDK_GRAB_SUCCESS && grabstatus_keyboard == GDK_GRAB_SUCCESS) { gint x1, y1, x2, y2; GdkEvent *event; - + event = gdk_event_get (); - - if (event == NULL) + + if (event == NULL) continue; - + switch (event->type) { /* Start dragging the rectangle out */ - + case GDK_BUTTON_PRESS: TRACE ("Start dragging the rectangle"); - + x = x2 = x1 = event->button.x; y = y2 = y1 = event->button.y; w = 0; h = 0; pressed = TRUE; break; - + /* Finish dragging the rectangle out */ case GDK_BUTTON_RELEASE: if (pressed) @@ -297,24 +297,24 @@ static GdkPixbuf /* Remove the rectangle drawn previously */ TRACE ("Remove the rectangle drawn previously"); - - gdk_draw_rectangle (root_window, - gc, - FALSE, + + gdk_draw_rectangle (root_window, + gc, + FALSE, x, y, w, h); done = TRUE; - } - else + } + else { /* The user has not dragged the mouse, start again */ TRACE ("Mouse was not dragged, start again"); - + pressed = FALSE; } } break; - + /* The user is moving the mouse */ case GDK_MOTION_NOTIFY: if (pressed) @@ -326,10 +326,10 @@ static GdkPixbuf /* Remove the rectangle drawn previously */ TRACE ("Remove the rectangle drawn previously"); - - gdk_draw_rectangle (root_window, - gc, - FALSE, + + gdk_draw_rectangle (root_window, + gc, + FALSE, x, y, w, h); } @@ -344,13 +344,13 @@ static GdkPixbuf /* Draw the rectangle as the user drags the mouse */ TRACE ("Draw the new rectangle"); - + if (w > 0 && h > 0) - gdk_draw_rectangle (root_window, - gc, - FALSE, + gdk_draw_rectangle (root_window, + gc, + FALSE, x, y, w, h); - + } break; @@ -366,10 +366,10 @@ static GdkPixbuf /* Remove the rectangle drawn previously */ TRACE ("Remove the rectangle drawn previously"); - - gdk_draw_rectangle (root_window, - gc, - FALSE, + + gdk_draw_rectangle (root_window, + gc, + FALSE, x, y, w, h); } } @@ -378,16 +378,16 @@ static GdkPixbuf cancelled = TRUE; } - break; - - default: + break; + + default: break; } - + gdk_event_free (event); } - - if (grabstatus_mouse == GDK_GRAB_SUCCESS) + + if (grabstatus_mouse == GDK_GRAB_SUCCESS) { TRACE ("Ungrab the pointer"); @@ -400,22 +400,22 @@ static GdkPixbuf gdk_keyboard_ungrab (GDK_CURRENT_TIME); } - + /* Get the screenshot's pixbuf */ if (G_LIKELY (!cancelled)) { TRACE ("Get the pixbuf for the screenshot"); - + screenshot = gdk_pixbuf_get_from_drawable (NULL, root_window, NULL, x, y, 0, 0, w, h); } if (G_LIKELY (gc != NULL)) g_object_unref (gc); - + gdk_cursor_unref (xhair_cursor); - + return screenshot; } @@ -447,40 +447,40 @@ GdkPixbuf *screenshooter_take_screenshot (gint region, gint delay, gboolean show GdkPixbuf *screenshot = NULL; GdkWindow *window = NULL; GdkScreen *screen; - - /* gdk_get_default_root_window () does not need to be unrefed, - * needs_unref enables us to unref *window only if a non default + + /* gdk_get_default_root_window () does not need to be unrefed, + * needs_unref enables us to unref *window only if a non default * window has been grabbed. */ gboolean needs_unref = TRUE; - + /* Get the screen on which the screenshot should be taken */ screen = gdk_screen_get_default (); - - /* wait for n=delay seconds */ + + /* wait for n=delay seconds */ if (region != SELECT) sleep (delay); - - /* Get the window/desktop we want to screenshot*/ + + /* Get the window/desktop we want to screenshot*/ if (region == FULLSCREEN) { TRACE ("We grab the entire screen"); window = gdk_get_default_root_window (); needs_unref = FALSE; - } + } else if (region == ACTIVE_WINDOW) { TRACE ("We grab the active window"); - window = get_active_window (screen, &needs_unref); + window = get_active_window (screen, &needs_unref); } - + if (region == FULLSCREEN || region == ACTIVE_WINDOW) { TRACE ("Get the screenshot of the given window"); screenshot = get_window_screenshot (window, show_mouse); - + if (needs_unref) g_object_unref (window); } @@ -491,6 +491,6 @@ GdkPixbuf *screenshooter_take_screenshot (gint region, gint delay, gboolean show screenshot = get_rectangle_screenshot (); } - + return screenshot; } diff --git a/lib/screenshooter-dialogs.c b/lib/screenshooter-dialogs.c index aa7373956e2327f28f614d2ef53a917e89beb702..41b45819898a7c7eb2585126d9888057fed6abb1 100644 --- a/lib/screenshooter-dialogs.c +++ b/lib/screenshooter-dialogs.c @@ -21,59 +21,59 @@ #define ICON_SIZE 16 -/* Prototypes */ +/* Prototypes */ -static void +static void cb_fullscreen_screen_toggled (GtkToggleButton *tb, ScreenshotData *sd); -static void +static void cb_active_window_toggled (GtkToggleButton *tb, ScreenshotData *sd); -static void +static void cb_rectangle_toggled (GtkToggleButton *tb, ScreenshotData *sd); static void cb_show_mouse_toggled (GtkToggleButton *tb, - ScreenshotData *sd); -static void + ScreenshotData *sd); +static void cb_save_toggled (GtkToggleButton *tb, ScreenshotData *sd); -static void -cb_toggle_set_sensi (GtkToggleButton *tb, +static void +cb_toggle_set_sensi (GtkToggleButton *tb, GtkWidget *widget); -static void -cb_toggle_set_insensi (GtkToggleButton *tb, +static void +cb_toggle_set_insensi (GtkToggleButton *tb, GtkWidget *widget); -static void +static void cb_open_toggled (GtkToggleButton *tb, ScreenshotData *sd); -static void +static void cb_clipboard_toggled (GtkToggleButton *tb, ScreenshotData *sd); -static void +static void cb_show_save_dialog_toggled (GtkToggleButton *tb, ScreenshotData *sd); -static void +static void cb_close_toggled (GtkToggleButton *tb, - ScreenshotData *sd); -static void -cb_default_folder (GtkWidget *chooser, - ScreenshotData *sd); -static void -cb_delay_spinner_changed (GtkWidget *spinner, ScreenshotData *sd); -static gchar +static void +cb_default_folder (GtkWidget *chooser, + ScreenshotData *sd); +static void +cb_delay_spinner_changed (GtkWidget *spinner, + ScreenshotData *sd); +static gchar *generate_filename_for_uri (const gchar *uri); -static void -cb_combo_active_item_changed (GtkWidget *box, +static void +cb_combo_active_item_changed (GtkWidget *box, ScreenshotData *sd); -static void -add_item (GAppInfo *app_info, +static void +add_item (GAppInfo *app_info, GtkWidget *liststore); -static void +static void populate_liststore (GtkListStore *liststore); -static void -set_default_item (GtkWidget *combobox, +static void +set_default_item (GtkWidget *combobox, ScreenshotData *sd); static void cb_progress_upload (goffset current_num_bytes, @@ -95,7 +95,7 @@ save_screenshot_to_remote_location (GdkPixbuf *screenshot, GFile *save_file); static gchar *save_screenshot_to (GdkPixbuf *screenshot, - gchar *save_uri); + gchar *save_uri); @@ -163,7 +163,7 @@ static void cb_save_toggled (GtkToggleButton *tb, ScreenshotData *sd) /* Set the widget active if the toggle button is active */ -static void +static void cb_toggle_set_sensi (GtkToggleButton *tb, GtkWidget *widget) { gtk_widget_set_sensitive (widget, gtk_toggle_button_get_active (tb)); @@ -172,7 +172,7 @@ cb_toggle_set_sensi (GtkToggleButton *tb, GtkWidget *widget) /* Set the widget active if the toggle button is inactive */ -static void +static void cb_toggle_set_insensi (GtkToggleButton *tb, GtkWidget *widget) { gtk_widget_set_sensitive (widget, !gtk_toggle_button_get_active (tb)); @@ -192,7 +192,7 @@ static void cb_open_toggled (GtkToggleButton *tb, ScreenshotData *sd) /* Set the action when the button is toggled */ -static void cb_clipboard_toggled (GtkToggleButton *tb, +static void cb_clipboard_toggled (GtkToggleButton *tb, ScreenshotData *sd) { if (gtk_toggle_button_get_active (tb)) @@ -216,7 +216,7 @@ static void cb_close_toggled (GtkToggleButton *tb, ScreenshotData *sd) { gtk_toggle_button_get_active (tb) ? (sd->close = 1) : (sd->close = 0); -} +} @@ -224,11 +224,11 @@ static void cb_close_toggled (GtkToggleButton *tb, ScreenshotData *sd) static void cb_default_folder (GtkWidget *chooser, ScreenshotData *sd) { g_free (sd->screenshot_dir); - + sd->screenshot_dir = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (chooser)); } - + /* Set the delay according to the spinner */ static void cb_delay_spinner_changed (GtkWidget *spinner, ScreenshotData *sd) @@ -238,9 +238,9 @@ static void cb_delay_spinner_changed (GtkWidget *spinner, ScreenshotData *sd) -/* Generates filename Screenshot-n.png (where n is the first integer +/* Generates filename Screenshot-n.png (where n is the first integer * greater than 0) so that Screenshot-n.jpg does not exist in the folder - * whose URI is *uri. + * whose URI is *uri. * @uri: uri of the folder for which the filename should be generated. * returns: the filename or NULL if *uri == NULL. */ @@ -271,7 +271,7 @@ static gchar *generate_filename_for_uri (const gchar *uri) { g_object_unref (file); g_object_unref (directory); - + return basename; } @@ -283,7 +283,7 @@ static gchar *generate_filename_for_uri (const gchar *uri) basename = g_strdup_printf (_("Screenshot-%d.png"), i); file = g_file_get_child (directory, basename); - + if (!g_file_query_exists (file, NULL)) exists = FALSE; @@ -294,7 +294,7 @@ static gchar *generate_filename_for_uri (const gchar *uri) } g_object_unref (directory); - + return basename; } @@ -306,19 +306,19 @@ static void cb_combo_active_item_changed (GtkWidget *box, ScreenshotData *sd) GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (box)); GtkTreeIter iter; gchar *active_command = NULL; - + gtk_combo_box_get_active_iter (GTK_COMBO_BOX (box), &iter); - + gtk_tree_model_get (model, &iter, 2, &active_command, -1); - + g_free (sd->app); sd->app = active_command; } -/* Extract the informations from app_info and add them to the - * liststore. +/* Extract the informations from app_info and add them to the + * liststore. * */ static void add_item (GAppInfo *app_info, GtkWidget *liststore) { @@ -328,58 +328,58 @@ static void add_item (GAppInfo *app_info, GtkWidget *liststore) GIcon *icon = g_app_info_get_icon (app_info); GdkPixbuf *pixbuf = NULL; GtkIconTheme *icon_theme = gtk_icon_theme_get_default (); - + /* Get the icon */ if (G_IS_LOADABLE_ICON (icon)) { GFile *file = g_file_icon_get_file (G_FILE_ICON (icon)); gchar *path = g_file_get_path (file); - - pixbuf = - gdk_pixbuf_new_from_file_at_size (path, ICON_SIZE, + + pixbuf = + gdk_pixbuf_new_from_file_at_size (path, ICON_SIZE, ICON_SIZE, NULL); - + g_free (path); g_object_unref (file); } else { gchar **names = NULL; - + g_object_get (G_OBJECT (icon), "names", &names, NULL); - + if (G_LIKELY (names != NULL)) { if (names[0] != NULL) { - pixbuf = gtk_icon_theme_load_icon (icon_theme, - names[0], + pixbuf = gtk_icon_theme_load_icon (icon_theme, + names[0], ICON_SIZE, GTK_ICON_LOOKUP_GENERIC_FALLBACK, NULL); - } - - g_strfreev (names); + } + + g_strfreev (names); } } - + if (G_UNLIKELY (pixbuf == NULL)) { pixbuf = gtk_icon_theme_load_icon (icon_theme, "exec", ICON_SIZE, GTK_ICON_LOOKUP_GENERIC_FALLBACK, NULL); } - + /* Add to the liststore */ gtk_list_store_append (GTK_LIST_STORE (liststore), &iter); - + gtk_list_store_set (GTK_LIST_STORE (liststore), &iter, 0, pixbuf, 1, name, 2, command, -1); - - /* Free the stuff */ + + /* Free the stuff */ g_free (command); g_free (name); g_object_unref (pixbuf); @@ -393,17 +393,17 @@ static void populate_liststore (GtkListStore *liststore) { const gchar *content_type; GList *list_app; - + content_type = "image/png"; - + /* Get all applications for image/png.*/ list_app = g_app_info_get_all_for_type (content_type); - + /* Add them to the liststore */ if (G_LIKELY (list_app != NULL)) { g_list_foreach (list_app, (GFunc) add_item, liststore); - + g_list_free (list_app); } } @@ -414,12 +414,12 @@ static void populate_liststore (GtkListStore *liststore) static void set_default_item (GtkWidget *combobox, ScreenshotData *sd) { GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (combobox)); - - GtkTreeIter iter; - + + GtkTreeIter iter; + /* Get the first iter */ if (G_LIKELY (gtk_tree_model_get_iter_first (model , &iter))) - { + { gchar *command = NULL; gboolean found = FALSE; @@ -427,30 +427,30 @@ static void set_default_item (GtkWidget *combobox, ScreenshotData *sd) do { gtk_tree_model_get (model, &iter, 2, &command, -1); - + if (g_str_equal (command, sd->app)) { - gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), + gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter); - + found = TRUE; } - - g_free (command); + + g_free (command); } while (gtk_tree_model_iter_next (model, &iter)); - + /* If no suitable item was found, set the first item as active and * set sd->app accordingly. */ if (G_UNLIKELY (!found)) { gtk_tree_model_get_iter_first (model , &iter); gtk_tree_model_get (model, &iter, 2, &command, -1); - + gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter); - + g_free (sd->app); - + sd->app = command; } } @@ -500,7 +500,7 @@ cb_finished_upload (GObject *source_object, GAsyncResult *res, gpointer user_dat { TRACE ("An error occurred"); - xfce_err (error->message); + screenshooter_error ("%s", error->message); g_error_free (error); } @@ -522,7 +522,7 @@ cb_transfer_dialog_response (GtkWidget *dialog, int response, GCancellable *canc gtk_widget_destroy (dialog); } } - + static gchar @@ -533,11 +533,11 @@ static gchar if (G_UNLIKELY (!gdk_pixbuf_save (screenshot, save_path, "png", &error, NULL))) { - xfce_err ("%s", error->message); - + screenshooter_error ("%s", error->message); + g_error_free (error); g_free (save_path); - + return NULL; } else @@ -556,7 +556,7 @@ save_screenshot_to_remote_location (GdkPixbuf *screenshot, GFile *save_file) GFile *save_parent = g_file_get_parent (save_file); const gchar *parent_uri = g_file_get_uri (save_parent); GCancellable *cancellable = g_cancellable_new (); - + GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Transfer"), NULL, GTK_DIALOG_NO_SEPARATOR, @@ -573,7 +573,7 @@ save_screenshot_to_remote_location (GdkPixbuf *screenshot, GFile *save_file) gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_window_set_deletable (GTK_WINDOW (dialog), FALSE); - + gtk_container_set_border_width (GTK_CONTAINER (dialog), 20); gtk_window_set_icon_name (GTK_WINDOW (dialog), "document-save"); @@ -625,7 +625,7 @@ save_screenshot_to_remote_location (GdkPixbuf *screenshot, GFile *save_file) gtk_dialog_run (GTK_DIALOG (dialog)); g_file_delete (save_file_temp, NULL, NULL); - + g_object_unref (save_file_temp); g_object_unref (save_parent); g_object_unref (cancellable); @@ -638,7 +638,7 @@ static gchar { GFile *save_file = g_file_new_for_uri (save_uri); gchar *result = NULL; - + /* If the URI is a local one, we save directly */ if (!screenshooter_is_remote_uri (save_uri)) @@ -649,7 +649,7 @@ static gchar { save_screenshot_to_remote_location (screenshot, save_file); } - + g_object_unref (save_file); return result; @@ -669,46 +669,46 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) GtkWidget *dlg, *main_alignment; GtkWidget *vbox; - GtkWidget *capture_table, *actions_table; - + GtkWidget *capture_table, *actions_table; + GtkWidget *area_main_box, *area_box, *area_label, *area_alignment; - GtkWidget *active_window_button, + GtkWidget *active_window_button, *fullscreen_button, *rectangle_button; GtkWidget *show_mouse_checkbox; - + GtkWidget *delay_main_box, *delay_box, *delay_label, *delay_alignment; GtkWidget *delay_spinner_box, *delay_spinner, *seconds_label; GtkWidget *options_main_box, *options_label, *options_alignment, *options_box; GtkWidget *save_checkbox; - + GtkWidget *actions_main_box, *actions_label, *actions_alignment; - + GtkWidget *save_radio_button, *dir_chooser; - + GtkWidget *clipboard_radio_button; - + GtkWidget *open_with_radio_button; - + GtkListStore *liststore; GtkWidget *combobox; GtkCellRenderer *renderer, *renderer_pixbuf; - + /* Create the dialog */ if (!plugin) { - dlg = + dlg = xfce_titled_dialog_new_with_buttons (_("Screenshot"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT| GTK_DIALOG_NO_SEPARATOR, GTK_STOCK_HELP, GTK_RESPONSE_HELP, - GTK_STOCK_CANCEL, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, + GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); @@ -722,17 +722,17 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) GTK_DIALOG_DESTROY_WITH_PARENT|GTK_DIALOG_NO_SEPARATOR, GTK_STOCK_HELP, GTK_RESPONSE_HELP, - GTK_STOCK_CLOSE, + GTK_STOCK_CLOSE, GTK_RESPONSE_OK, NULL); - - xfce_titled_dialog_set_subtitle (XFCE_TITLED_DIALOG (dlg), + + xfce_titled_dialog_set_subtitle (XFCE_TITLED_DIALOG (dlg), _("Preferences")); - } + } gtk_window_set_position (GTK_WINDOW (dlg), GTK_WIN_POS_CENTER); gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE); - + gtk_container_set_border_width (GTK_CONTAINER (dlg), 0); gtk_window_set_icon_name (GTK_WINDOW (dlg), "applets-screenshooter"); @@ -744,16 +744,16 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), main_alignment, TRUE, TRUE, 0); gtk_widget_show (main_alignment); - + /* Create the main box for the dialog */ - + vbox = gtk_vbox_new (FALSE, 10); - + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); gtk_container_add (GTK_CONTAINER (main_alignment), vbox); gtk_widget_show (vbox); - + /* Create the table to align the differents parts of the top of the UI */ capture_table = gtk_table_new (2, 2, FALSE); @@ -764,112 +764,112 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_widget_show (capture_table); /* Create the main box for the regions */ - + area_main_box = gtk_vbox_new (FALSE, 6); gtk_widget_show (area_main_box); 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), _("<span weight=\"bold\" stretch=\"semiexpanded\">" "Region to capture</span>")); - + gtk_misc_set_alignment (GTK_MISC (area_label), 0, 0); gtk_widget_show (area_label); gtk_container_add (GTK_CONTAINER (area_main_box), area_label); - + /* Create area alignment */ - + area_alignment = gtk_alignment_new (0, 0, 1, 1); - + gtk_container_add (GTK_CONTAINER (area_main_box), area_alignment); - + gtk_alignment_set_padding (GTK_ALIGNMENT (area_alignment), 0, 6, 12, 0); - + gtk_widget_show (area_alignment); - - /* Create area box */ + + /* Create area box */ area_box = gtk_vbox_new (FALSE, 6); gtk_container_add (GTK_CONTAINER (area_alignment), area_box); gtk_container_set_border_width (GTK_CONTAINER (area_box), 0); gtk_widget_show (area_box); - + /* Create radio buttons for areas to screenshot */ - + /* Fullscreen */ - - fullscreen_button = - gtk_radio_button_new_with_mnemonic (NULL, + + fullscreen_button = + gtk_radio_button_new_with_mnemonic (NULL, _("Entire screen")); - - gtk_box_pack_start (GTK_BOX (area_box), - fullscreen_button, FALSE, + + gtk_box_pack_start (GTK_BOX (area_box), + fullscreen_button, FALSE, FALSE, 0); - + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fullscreen_button), (sd->region == FULLSCREEN)); - + gtk_widget_set_tooltip_text (fullscreen_button, _("Take a screenshot of the entire screen")); - - g_signal_connect (G_OBJECT (fullscreen_button), "toggled", + + g_signal_connect (G_OBJECT (fullscreen_button), "toggled", G_CALLBACK (cb_fullscreen_screen_toggled), sd); - + gtk_widget_show (fullscreen_button); - + /* Active window */ - + active_window_button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (fullscreen_button), _("Active window")); - - gtk_box_pack_start (GTK_BOX (area_box), - active_window_button, FALSE, + + gtk_box_pack_start (GTK_BOX (area_box), + active_window_button, FALSE, FALSE, 0); - + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (active_window_button), (sd->region == ACTIVE_WINDOW)); - + gtk_widget_set_tooltip_text (active_window_button, _("Take a screenshot of the active window")); - - g_signal_connect (G_OBJECT (active_window_button), "toggled", + + g_signal_connect (G_OBJECT (active_window_button), "toggled", G_CALLBACK (cb_active_window_toggled), sd); - + gtk_widget_show (active_window_button); - + /* Rectangle */ - - rectangle_button = + + rectangle_button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (fullscreen_button), _("Select a region")); - gtk_box_pack_start (GTK_BOX (area_box), - rectangle_button, FALSE, + gtk_box_pack_start (GTK_BOX (area_box), + rectangle_button, FALSE, FALSE, 0); - + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rectangle_button), (sd->region == SELECT)); - + gtk_widget_set_tooltip_text (rectangle_button, _("Select a region to be captured by clicking a point of " "the screen without releasing the mouse button, " "dragging your mouse to the other corner of the region, " "and releasing the mouse button.")); - + g_signal_connect (G_OBJECT (rectangle_button), "toggled", G_CALLBACK (cb_rectangle_toggled), sd); - + gtk_widget_show (rectangle_button); /* Create show mouse checkbox */ - show_mouse_checkbox = + show_mouse_checkbox = gtk_check_button_new_with_label (_("Capture the mouse pointer")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (show_mouse_checkbox), @@ -880,87 +880,87 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_widget_set_tooltip_text (show_mouse_checkbox, _("Display the mouse pointer on the screenshot")); - gtk_box_pack_start (GTK_BOX (area_box), - show_mouse_checkbox, FALSE, + gtk_box_pack_start (GTK_BOX (area_box), + show_mouse_checkbox, FALSE, FALSE, 5); gtk_widget_show (show_mouse_checkbox); - - g_signal_connect (G_OBJECT (show_mouse_checkbox), "toggled", + + g_signal_connect (G_OBJECT (show_mouse_checkbox), "toggled", G_CALLBACK (cb_show_mouse_toggled), sd); g_signal_connect (G_OBJECT (rectangle_button), "toggled", G_CALLBACK (cb_toggle_set_insensi), show_mouse_checkbox); /* Create the main box for the delay stuff */ - + delay_main_box = gtk_vbox_new (FALSE, 6); - + gtk_widget_show (delay_main_box); gtk_table_attach_defaults (GTK_TABLE (capture_table), delay_main_box, 1, 2, 0, 1); - + /* Create delay label */ - + delay_label = gtk_label_new (""); - + gtk_label_set_markup (GTK_LABEL(delay_label), _("<span weight=\"bold\" stretch=\"semiexpanded\">" "Delay before capturing</span>")); - + gtk_misc_set_alignment(GTK_MISC (delay_label), 0, 0); gtk_box_pack_start (GTK_BOX (delay_main_box), delay_label, FALSE, FALSE, 0); - + gtk_widget_show (delay_label); - + /* Create delay alignment */ - + delay_alignment = gtk_alignment_new (0, 0, 0, 0); gtk_box_pack_start (GTK_BOX (delay_main_box), delay_alignment, FALSE, FALSE, 0); - + gtk_alignment_set_padding (GTK_ALIGNMENT (delay_alignment), 0, 6, 12, 0); - + gtk_widget_show (delay_alignment); - + /* Create delay box */ - + delay_box = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (delay_alignment), delay_box); gtk_container_set_border_width (GTK_CONTAINER (delay_box), 0); gtk_widget_show (delay_box); - + /* Create delay spinner */ - + delay_spinner_box = gtk_hbox_new (FALSE, 4); gtk_widget_show (delay_spinner_box); - + gtk_box_pack_start (GTK_BOX (delay_box), delay_spinner_box, FALSE, FALSE, 0); delay_spinner = gtk_spin_button_new_with_range(0.0, 60.0, 1.0); - + gtk_spin_button_set_value (GTK_SPIN_BUTTON (delay_spinner), sd->delay); - + gtk_widget_set_tooltip_text (delay_spinner, - _("Delay in seconds before the screenshot is taken")); - + _("Delay in seconds before the screenshot is taken")); + gtk_widget_show (delay_spinner); - + gtk_box_pack_start (GTK_BOX (delay_spinner_box), delay_spinner, FALSE, FALSE, 0); seconds_label = gtk_label_new (_("seconds")); gtk_widget_show (seconds_label); - + gtk_box_pack_start (GTK_BOX (delay_spinner_box), seconds_label, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (delay_spinner), "value-changed", G_CALLBACK (cb_delay_spinner_changed), sd); - - /* Set the delay box as inactive when we capture rectangles */ + + /* Set the delay box as inactive when we capture rectangles */ g_signal_connect (G_OBJECT (rectangle_button), "toggled", G_CALLBACK (cb_toggle_set_insensi), delay_box); - + /* Set the default state */ cb_toggle_set_insensi (GTK_TOGGLE_BUTTON (rectangle_button), delay_box); @@ -979,19 +979,19 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_label_set_markup (GTK_LABEL(options_label), _("<span weight=\"bold\" stretch=\"semiexpanded\">After " "capturing</span>")); - - gtk_misc_set_alignment(GTK_MISC (options_label), 0, 0); + + gtk_misc_set_alignment(GTK_MISC (options_label), 0, 0); gtk_widget_show (options_label); gtk_box_pack_start (GTK_BOX (options_main_box), options_label, FALSE, FALSE, 0); /* Create options alignment */ - + options_alignment = gtk_alignment_new (0, 0, 1, 1); gtk_container_add (GTK_CONTAINER (options_main_box), options_alignment); gtk_alignment_set_padding (GTK_ALIGNMENT (options_alignment), 0, 6, 12, 0); - + gtk_widget_show (options_alignment); /* Create the options box to be stored in the options alignment*/ @@ -1001,8 +1001,8 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_container_set_border_width (GTK_CONTAINER (options_box), 0); gtk_widget_show (options_box); - /* Display the save dialog checkbox */ - + /* Display the save dialog checkbox */ + save_checkbox = gtk_check_button_new_with_label (_("Show the save dialog")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (save_checkbox), @@ -1013,16 +1013,16 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) "and the save location")); gtk_box_pack_start (GTK_BOX (options_box), save_checkbox, FALSE, FALSE, 0); - + gtk_widget_show (save_checkbox); - - g_signal_connect (G_OBJECT (save_checkbox), "toggled", + + g_signal_connect (G_OBJECT (save_checkbox), "toggled", G_CALLBACK (cb_show_save_dialog_toggled), sd); /* Create the 'close the user interface after taking the screenshot' checkbox */ if (!plugin) { - GtkWidget *close_checkbox = + GtkWidget *close_checkbox = gtk_check_button_new_with_label (_("Close the application")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (close_checkbox), @@ -1037,7 +1037,7 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_widget_show (close_checkbox); - g_signal_connect (G_OBJECT (close_checkbox), "toggled", + g_signal_connect (G_OBJECT (close_checkbox), "toggled", G_CALLBACK (cb_close_toggled), sd); } @@ -1049,13 +1049,13 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_widget_show (actions_main_box); /* Create actions label */ - + actions_label = gtk_label_new (""); - + gtk_label_set_markup (GTK_LABEL (actions_label), _("<span weight=\"bold\" stretch=\"semiexpanded\">Action" "</span>")); - + gtk_misc_set_alignment (GTK_MISC (actions_label), 0, 0); gtk_widget_show (actions_label); gtk_box_pack_start (GTK_BOX (actions_main_box), actions_label, FALSE, FALSE, 0); @@ -1078,19 +1078,19 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) gtk_container_add (GTK_CONTAINER (actions_alignment), actions_table); gtk_widget_show (actions_table); - + /* Save option radio button */ - + save_radio_button = gtk_radio_button_new_with_mnemonic (NULL, _("Save in:")); - + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (save_radio_button), (sd->action == SAVE)); - - g_signal_connect (G_OBJECT (save_radio_button), "toggled", + + 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")); - + gtk_widget_show (save_radio_button); gtk_table_attach_defaults (GTK_TABLE (actions_table), save_radio_button, 0, 1, 0, 1); @@ -1105,118 +1105,118 @@ GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, gboolean plugin) /* Directory chooser */ - dir_chooser = + dir_chooser = gtk_file_chooser_button_new (_("Default save location"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); - - gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dir_chooser), + + gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dir_chooser), sd->screenshot_dir); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dir_chooser), FALSE); - + gtk_widget_show (dir_chooser); - + gtk_widget_set_tooltip_text (dir_chooser, _("Set the default save location")); - g_signal_connect (G_OBJECT (dir_chooser), "selection-changed", + g_signal_connect (G_OBJECT (dir_chooser), "selection-changed", G_CALLBACK (cb_default_folder), sd); - + g_signal_connect (G_OBJECT (save_radio_button), "toggled", G_CALLBACK (cb_toggle_set_sensi), dir_chooser); gtk_table_attach_defaults (GTK_TABLE (actions_table), dir_chooser, 1, 2, 0, 1); /* Copy to clipboard radio button */ - - clipboard_radio_button = + + clipboard_radio_button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (save_radio_button), _("Copy to the clipboard")); - + gtk_widget_show (clipboard_radio_button); - + gtk_widget_set_tooltip_text (clipboard_radio_button, _("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)); - - g_signal_connect (G_OBJECT (clipboard_radio_button), "toggled", + + g_signal_connect (G_OBJECT (clipboard_radio_button), "toggled", G_CALLBACK (cb_clipboard_toggled), sd); gtk_table_attach_defaults (GTK_TABLE (actions_table), clipboard_radio_button, 0, 1, 1, 2); /* Open with radio button */ - - open_with_radio_button = + + open_with_radio_button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (save_radio_button), _("Open with:")); - + gtk_widget_show (open_with_radio_button); - + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (open_with_radio_button), (sd->action == OPEN)); - - g_signal_connect (G_OBJECT (open_with_radio_button), "toggled", + + 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, _("Open the screenshot with the chosen application")); gtk_table_attach_defaults (GTK_TABLE (actions_table), open_with_radio_button, 0, 1, 2, 3); - + /* Open with combobox */ - + liststore = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); - + combobox = gtk_combo_box_new_with_model (GTK_TREE_MODEL (liststore)); - + renderer = gtk_cell_renderer_text_new (); renderer_pixbuf = gtk_cell_renderer_pixbuf_new (); - + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer_pixbuf, FALSE); - + gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (combobox), renderer, TRUE); - + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 1, NULL); - + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer_pixbuf, - "pixbuf", 0, NULL); - + "pixbuf", 0, NULL); + populate_liststore (liststore); - + set_default_item (combobox, sd); - + gtk_table_attach_defaults (GTK_TABLE (actions_table), combobox, 1, 2, 2, 3); - - g_signal_connect (G_OBJECT (combobox), "changed", + + g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (cb_combo_active_item_changed), sd); - - gtk_widget_show_all (combobox); - + + gtk_widget_show_all (combobox); + gtk_widget_set_tooltip_text (combobox, _("Application to open the screenshot")); g_signal_connect (G_OBJECT (open_with_radio_button), "toggled", G_CALLBACK (cb_toggle_set_sensi), combobox); - + /* Run the callback functions to grey/ungrey the correct widgets */ - + cb_toggle_set_sensi (GTK_TOGGLE_BUTTON (open_with_radio_button), combobox); - - return dlg; + + return dlg; } -/* Saves the screenshot according to the options in sd. +/* Saves the screenshot according to the options in sd. * @screenshot: a GdkPixbuf containing our screenshot * show_save_dialog: whether the save dialog should be shown. * @default_dir: the default save location. */ -gchar -*screenshooter_save_screenshot (GdkPixbuf *screenshot, +gchar +*screenshooter_save_screenshot (GdkPixbuf *screenshot, gboolean show_save_dialog, const gchar *default_dir) { @@ -1232,26 +1232,26 @@ gchar gchar *save_uri = NULL; gint dialog_response; - /* If the user wants a save dialog, we run it, and grab the + /* If the user wants a save dialog, we run it, and grab the * filename the user has chosen. */ - + /* Create the dialog and set its default properties */ - chooser = + chooser = gtk_file_chooser_dialog_new (_("Save screenshot as..."), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); - + gtk_window_set_icon_name (GTK_WINDOW (chooser), "applets-screenshooter"); - + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (chooser), TRUE); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), FALSE); - + gtk_dialog_set_default_response (GTK_DIALOG (chooser), GTK_RESPONSE_ACCEPT); gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (chooser), default_dir); @@ -1259,29 +1259,29 @@ gchar gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (chooser), filename); /* Create the preview and the thumbnail */ - + preview = gtk_image_new (); - + gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (chooser), preview); - - thumbnail = - gdk_pixbuf_scale_simple (screenshot, - gdk_pixbuf_get_width(screenshot)/5, - gdk_pixbuf_get_height(screenshot)/5, + + thumbnail = + gdk_pixbuf_scale_simple (screenshot, + gdk_pixbuf_get_width(screenshot)/5, + gdk_pixbuf_get_height(screenshot)/5, GDK_INTERP_BILINEAR); - + gtk_image_set_from_pixbuf (GTK_IMAGE (preview), thumbnail); - + g_object_unref (thumbnail); - + dialog_response = gtk_dialog_run (GTK_DIALOG (chooser)); - + /* The user pressed the save button */ if (G_LIKELY (dialog_response == GTK_RESPONSE_ACCEPT)) { save_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (chooser)); } - + gtk_widget_destroy (chooser); if (G_LIKELY (save_uri != NULL)) @@ -1290,12 +1290,12 @@ gchar g_free (save_uri); } - } + } else - { + { /* Else, we just save the file in the default folder */ gchar *save_uri = g_build_filename (default_dir, filename, NULL); - + savename = save_screenshot_to (screenshot, save_uri); g_free (save_uri); @@ -1304,6 +1304,6 @@ gchar TRACE ("Free the gchars and unref the GFiles"); g_free (filename); - + return savename; } diff --git a/lib/screenshooter-dialogs.h b/lib/screenshooter-dialogs.h index 275258b529d3467b30e04e1626e9118cb631e1d9..42b4fb51c1de5eea65126b06b76ccebace22f4e7 100644 --- a/lib/screenshooter-dialogs.h +++ b/lib/screenshooter-dialogs.h @@ -19,7 +19,7 @@ #ifndef __HAVE_DIALOGS_H__ #define __HAVE_DIALOGS_H__ - + #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -37,11 +37,9 @@ -GtkWidget -*screenshooter_dialog_new (ScreenshotData *sd, - gboolean plugin); -gchar -*screenshooter_save_screenshot (GdkPixbuf *screenshot, - gboolean show_save_dialog, - const gchar *default_dir); -#endif +GtkWidget *screenshooter_dialog_new (ScreenshotData *sd, + gboolean plugin); +gchar *screenshooter_save_screenshot (GdkPixbuf *screenshot, + gboolean show_save_dialog, + const gchar *default_dir); +#endif diff --git a/lib/screenshooter-job.c b/lib/screenshooter-job.c index 8ebc27781bf1fe015ca401f9916f471562d4197e..3f0a308be243d9d31f2e0e1d9d64860afc515742 100644 --- a/lib/screenshooter-job.c +++ b/lib/screenshooter-job.c @@ -173,7 +173,8 @@ void screenshooter_job_ask_info (ScreenshooterJob *job, g_return_if_fail (format != NULL); if (G_UNLIKELY (exo_job_is_cancelled (EXO_JOB (job)))) - + return; + va_start (va_args, format); message = g_strdup_vprintf (format, va_args); va_end (va_args); diff --git a/lib/screenshooter-job.h b/lib/screenshooter-job.h index 88771e3d3023ea2d7de139207fe9968dcabcd7b2..8f69ddd4471b7e30cfd5bfee7dcbbb8aa613df64 100755 --- a/lib/screenshooter-job.h +++ b/lib/screenshooter-job.h @@ -66,7 +66,7 @@ void screenshooter_job_ask_info (ScreenshooterJob *job, GtkListStore *info, const gchar *format, ...); - + void screenshooter_job_image_uploaded (ScreenshooterJob *job, const gchar *file_name); diff --git a/lib/screenshooter-simple-job.c b/lib/screenshooter-simple-job.c index af24983d5e015e753be2de14bd0c044c735e7631..505cb5f1b6b591d116d84a7c70ee6ade895ba844 100644 --- a/lib/screenshooter-simple-job.c +++ b/lib/screenshooter-simple-job.c @@ -51,12 +51,12 @@ screenshooter_simple_job_get_type (void) if (G_UNLIKELY (type == G_TYPE_INVALID)) { - type = g_type_register_static_simple (SCREENSHOOTER_TYPE_JOB, + type = g_type_register_static_simple (SCREENSHOOTER_TYPE_JOB, "ScreenshooterSimpleJob", sizeof (ScreenshooterSimpleJobClass), (GClassInitFunc) screenshooter_simple_job_class_init, sizeof (ScreenshooterSimpleJob), - NULL, + NULL, 0); } @@ -114,7 +114,7 @@ screenshooter_simple_job_execute (ExoJob *job, { g_assert (err != NULL || exo_job_is_cancelled (job)); - /* set error if the job was cancelled. otherwise just propagate + /* set error if the job was cancelled. otherwise just propagate * the results of the processing function */ if (exo_job_set_error_if_cancelled (job, error)) { diff --git a/lib/screenshooter-simple-job.h b/lib/screenshooter-simple-job.h index f3f06e43a7574310346b505d966ac61bf6c4a32e..597409ff7453aad202ee7c966cef90986a7a9b8c 100644 --- a/lib/screenshooter-simple-job.h +++ b/lib/screenshooter-simple-job.h @@ -34,7 +34,7 @@ G_BEGIN_DECLS /** * ScreenshooterSimpleJobFunc: * @job : a #ScreenshooterJob. - * @param_values : a #GValueArray of the #GValue<!---->s passed to + * @param_values : a #GValueArray of the #GValue<!---->s passed to * screenshooter_simple_job_launch(). * @error : return location for errors. * diff --git a/lib/screenshooter-utils.c b/lib/screenshooter-utils.c index d376d596ef940edf57ae086f5f3fec0fea8a12ee..c24dae9b20254741d5daa951d4d499bdd72ddcb5 100644 --- a/lib/screenshooter-utils.c +++ b/lib/screenshooter-utils.c @@ -30,7 +30,7 @@ * @screenshot: the screenshot */ void -screenshooter_copy_to_clipboard (GdkPixbuf *screenshot) +screenshooter_copy_to_clipboard (GdkPixbuf *screenshot) { GtkClipboard *clipboard; @@ -65,7 +65,7 @@ screenshooter_read_rc_file (gchar *file, ScreenshotData *sd) gint close_app = 1; gchar *screenshot_dir = g_strdup (home_uri); gchar *app = g_strdup ("none"); - + if (G_LIKELY (file != NULL)) { TRACE ("Open the rc file"); @@ -82,23 +82,23 @@ screenshooter_read_rc_file (gchar *file, ScreenshotData *sd) show_save_dialog = xfce_rc_read_int_entry (rc, "show_save_dialog", 1); show_mouse = xfce_rc_read_int_entry (rc, "show_mouse", 1); close_app = xfce_rc_read_int_entry (rc, "close", 1); - + g_free (app); app = g_strdup (xfce_rc_read_entry (rc, "app", "none")); - + g_free (screenshot_dir); screenshot_dir = g_strdup (xfce_rc_read_entry (rc, "screenshot_dir", home_uri)); } TRACE ("Close the rc file"); - + xfce_rc_close (rc); } - + /* And set the sd values */ TRACE ("Set the values of the struct"); - + sd->delay = delay; sd->region = region; sd->action = action; @@ -119,17 +119,17 @@ void screenshooter_write_rc_file (gchar *file, ScreenshotData *sd) { XfceRc *rc; - + g_return_if_fail (file != NULL); TRACE ("Open the rc file"); rc = xfce_rc_simple_open (file, FALSE); - + g_return_if_fail (rc != NULL); TRACE ("Write the entries."); - + xfce_rc_write_int_entry (rc, "delay", sd->delay); xfce_rc_write_int_entry (rc, "region", sd->region); xfce_rc_write_int_entry (rc, "action", sd->action); @@ -142,7 +142,7 @@ screenshooter_write_rc_file (gchar *file, ScreenshotData *sd) TRACE ("Flush and close the rc file"); xfce_rc_flush (rc); - + xfce_rc_close (rc); } @@ -159,7 +159,7 @@ screenshooter_open_screenshot (const gchar *screenshot_path, const gchar *applic GError *error = NULL; g_return_if_fail (screenshot_path != NULL); - + TRACE ("Path was != NULL"); g_return_if_fail (!g_str_equal (application, "none")); @@ -169,17 +169,17 @@ screenshooter_open_screenshot (const gchar *screenshot_path, const gchar *applic command = g_strconcat (application, " ", screenshot_path, NULL); TRACE ("Launch the command"); - - /* Execute the command and show an error dialog if there was + + /* Execute the command and show an error dialog if there was * an error. */ if (!g_spawn_command_line_async (command, &error)) { TRACE ("An error occured"); - xfce_err (error->message); + screenshooter_error ("%s", error->message); g_error_free (error); } - + g_free (command); } @@ -217,7 +217,7 @@ gboolean screenshooter_is_remote_uri (const gchar *uri) gchar *rot13 (gchar *string) { gchar *result = string; - + for (; *string; string++) if (*string >= 'a' && *string <= 'z') *string = (*string - 'a' + 13) % 26 + 'a'; @@ -227,3 +227,35 @@ gchar *rot13 (gchar *string) return result; } + + +/** + * screenshooter_error: + * @format: printf()-style format string + * @...: arguments for @format + * + * Shows a modal error dialog with the given error text. Blocks until the user + * clicks the OK button. + **/ +void screenshooter_error (const gchar *format, ...) +{ + va_list va_args = NULL; + gchar *message = NULL; + GtkWidget *dialog; + + g_return_if_fail (format != NULL); + + va_start (va_args, format); + message = g_strdup_vprintf (format, va_args); + va_end (va_args); + + dialog = + gtk_message_dialog_new (NULL, GTK_DIALOG_NO_SEPARATOR, GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, "%s", message); + + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + + g_free (message); +} + diff --git a/lib/screenshooter-utils.h b/lib/screenshooter-utils.h index b06d93d9a504a8d9c1587bdfa09ede3dae3dcff4..184619e13e32654bebe9f4e8a850fbd619565c73 100644 --- a/lib/screenshooter-utils.h +++ b/lib/screenshooter-utils.h @@ -34,28 +34,17 @@ -void -screenshooter_copy_to_clipboard (GdkPixbuf *screenshot) ; +void screenshooter_copy_to_clipboard (GdkPixbuf *screenshot) ; +void screenshooter_read_rc_file (gchar *file, + ScreenshotData *sd); +void screenshooter_write_rc_file (gchar *file, + ScreenshotData *sd); +void screenshooter_open_screenshot (const gchar *screenshot_path, + const gchar *application); +gchar *screenshooter_get_home_uri (); +gboolean screenshooter_is_remote_uri (const gchar *uri); +gchar *rot13 (gchar *string); +void screenshooter_error (const gchar *format, + ...); -void -screenshooter_read_rc_file (gchar *file, - ScreenshotData *sd); - -void -screenshooter_write_rc_file (gchar *file, - ScreenshotData *sd); - -void -screenshooter_open_screenshot (const gchar *screenshot_path, - const gchar *application); - -gchar -*screenshooter_get_home_uri (); - -gboolean -screenshooter_is_remote_uri (const gchar *uri); - -gchar -*rot13 (gchar *string); - -#endif +#endif diff --git a/lib/screenshooter-zimagez.c b/lib/screenshooter-zimagez.c index 01749d16490fa52ae7e9c2ce552bdd67e7802c10..e449481bc18c9850adfc46e30147a7a0a1db7cc9 100644 --- a/lib/screenshooter-zimagez.c +++ b/lib/screenshooter-zimagez.c @@ -85,7 +85,7 @@ open_url_hook (GtkLinkButton *button, const gchar *link, gpointer user_data) { TRACE ("An error occured when opening the URL"); - xfce_err (error->message); + screenshooter_error ("%s", error->message); g_error_free (error); } } @@ -434,12 +434,12 @@ zimagez_upload_job (ScreenshooterJob *job, GValueArray *param_values, GError **e { gchar *field_name = NULL; gchar *field_value = NULL; - + gtk_tree_model_get (GTK_TREE_MODEL (liststore), &iter, 0, &field_name, 1, &field_value, -1); - + if (g_str_equal (field_name, "user")) { user = g_strdup (field_value); @@ -456,7 +456,7 @@ zimagez_upload_job (ScreenshooterJob *job, GValueArray *param_values, GError **e { comment = g_strdup (field_value); } - + g_free (field_name); g_free (field_value); } @@ -797,25 +797,25 @@ cb_ask_for_information (ScreenshooterJob *job, 0, 0, NULL, cb_image_uploaded, NULL); - + g_signal_handlers_disconnect_matched (job, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, cb_error, NULL); - + g_signal_handlers_disconnect_matched (job, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, cb_ask_for_information, NULL); - + g_signal_handlers_disconnect_matched (job, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, cb_update_info, NULL); - + g_signal_handlers_disconnect_matched (job, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, diff --git a/panel-plugin/screenshooter-plugin.c b/panel-plugin/screenshooter-plugin.c index d7fa24e5d7d4f49f1a9d5bc4ce21ff9b44e440c4..1540ebf5a3e34f0b7bc33f3e918049bf12dcc184 100644 --- a/panel-plugin/screenshooter-plugin.c +++ b/panel-plugin/screenshooter-plugin.c @@ -47,7 +47,7 @@ typedef struct GtkWidget *button; GtkWidget *image; - + int style_id; ScreenshotData *sd; } @@ -56,42 +56,42 @@ PluginData; /* Protoypes */ - -static void + +static void screenshooter_plugin_construct (XfcePanelPlugin *plugin); -static void -screenshooter_plugin_read_rc_file (XfcePanelPlugin *plugin, - PluginData *pd); - -static void -screenshooter_plugin_write_rc_file (XfcePanelPlugin *plugin, +static void +screenshooter_plugin_read_rc_file (XfcePanelPlugin *plugin, + PluginData *pd); + +static void +screenshooter_plugin_write_rc_file (XfcePanelPlugin *plugin, PluginData *pd); -static gboolean -cb_set_size (XfcePanelPlugin *plugin, - int size, +static gboolean +cb_set_size (XfcePanelPlugin *plugin, + int size, PluginData *pd); - -static void + +static void cb_properties_dialog (XfcePanelPlugin *plugin, PluginData *pd); - + static void -cb_dialog_response (GtkWidget *dlg, +cb_dialog_response (GtkWidget *dlg, int response, PluginData *pd); - -static void -cb_free_data (XfcePanelPlugin *plugin, + +static void +cb_free_data (XfcePanelPlugin *plugin, PluginData *pd); - -static void -cb_button_clicked (GtkWidget *button, + +static void +cb_button_clicked (GtkWidget *button, PluginData *pd); static void -cb_style_set (XfcePanelPlugin *plugin, +cb_style_set (XfcePanelPlugin *plugin, gpointer ignored, PluginData *pd); @@ -104,29 +104,29 @@ set_panel_button_tooltip (PluginData *pd); -/* Modify the size of the panel button -Returns TRUE if succesful. +/* Modify the size of the panel button +Returns TRUE if succesful. */ static gboolean cb_set_size (XfcePanelPlugin *plugin, int size, PluginData *pd) { GdkPixbuf *pb; - + int width = size - 2 - 2 * MAX (pd->button->style->xthickness, pd->button->style->ythickness); TRACE ("Get the icon from the theme"); - + pb = xfce_themed_icon_load (SCREENSHOT_ICON_NAME, width); TRACE ("Set the new icon"); - + gtk_image_set_from_pixbuf (GTK_IMAGE (pd->image), pb); - + g_object_unref (pb); TRACE ("Request size for the plugin"); - + gtk_widget_set_size_request (GTK_WIDGET (plugin), size, size); return TRUE; @@ -136,7 +136,7 @@ cb_set_size (XfcePanelPlugin *plugin, int size, PluginData *pd) /* Free the panel plugin data stored in pd plugin: a XfcePanelPlugin (a screenshooter one). -pd: the associated PluginData. +pd: the associated PluginData. */ static void cb_free_data (XfcePanelPlugin *plugin, PluginData *pd) @@ -160,14 +160,14 @@ pd: the PluginData storing the options for taking the screenshot. static void cb_button_clicked (GtkWidget *button, PluginData *pd) { - /* Make the button unclickable so that the user does not press it while + /* Make the button unclickable so that the user does not press it while another screenshot is in progress */ gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); TRACE ("Start taking the screenshot"); - + screenshooter_take_and_output_screenshot (pd->sd); - + /* Make the panel button clickable */ gtk_widget_set_sensitive (GTK_WIDGET (button), TRUE); } @@ -194,9 +194,9 @@ static void screenshooter_plugin_read_rc_file (XfcePanelPlugin *plugin, PluginData *pd) { gchar *rc_file = xfce_panel_plugin_lookup_rc_file (plugin); - + screenshooter_read_rc_file (rc_file, pd->sd); - + g_free (rc_file); } @@ -210,9 +210,9 @@ static void screenshooter_plugin_write_rc_file (XfcePanelPlugin *plugin, PluginData *pd) { gchar * rc_file = xfce_panel_plugin_save_location (plugin, TRUE); - - screenshooter_write_rc_file (rc_file, pd->sd); - + + screenshooter_write_rc_file (rc_file, pd->sd); + g_free (rc_file); } @@ -230,24 +230,24 @@ cb_dialog_response (GtkWidget *dlg, int response, PluginData *pd) g_object_set_data (G_OBJECT (pd->plugin), "dialog", NULL); gtk_widget_destroy (dlg); - + /* Update tooltips according to the chosen option */ set_panel_button_tooltip (pd); - + /* Unblock the menu and save options */ xfce_panel_plugin_unblock_menu (pd->plugin); screenshooter_plugin_write_rc_file (pd->plugin, pd); } - + if (response == GTK_RESPONSE_HELP) { GError *error_help = NULL; - - /* Execute the help and show an error dialog if there was + + /* Execute the help and show an error dialog if there was * an error. */ if (!g_spawn_command_line_async ("xfhelp4 xfce4-screenshooter.html", &error_help)) { - xfce_err (error_help->message); + screenshooter_error ("%s", error_help->message); g_error_free (error_help); } } @@ -262,20 +262,20 @@ cb_properties_dialog (XfcePanelPlugin *plugin, PluginData *pd) GtkWidget *dlg; TRACE ("Create the dialog"); - + dlg = screenshooter_dialog_new (pd->sd, TRUE); - + /* Block the menu to prevent the user from launching several dialogs at the same time */ TRACE ("Block the menu"); - + xfce_panel_plugin_block_menu (plugin); TRACE ("Run the dialog"); - + g_object_set_data (G_OBJECT (plugin), "dialog", dlg); - + g_signal_connect (dlg, "response", G_CALLBACK (cb_dialog_response), pd); gtk_widget_show (dlg); @@ -321,7 +321,7 @@ screenshooter_plugin_construct (XfcePanelPlugin *plugin) pd->sd = sd; TRACE ("Initialize the text domain"); - + xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); pd->plugin = plugin; @@ -330,33 +330,33 @@ screenshooter_plugin_construct (XfcePanelPlugin *plugin) TRACE ("Read the preferences file"); screenshooter_plugin_read_rc_file (plugin, pd); - + /* Create the panel button */ TRACE ("Create the panel button"); - + pd->button = xfce_create_panel_button (); pd->image = gtk_image_new (); gtk_container_add (GTK_CONTAINER (pd->button), GTK_WIDGET (pd->image)); - + /* Set the tooltips if available */ TRACE ("Set the default tooltip"); - + set_panel_button_tooltip (pd); TRACE ("Add the button to the panel"); - + gtk_widget_show_all (pd->button); - + gtk_container_add (GTK_CONTAINER (plugin), pd->button); xfce_panel_plugin_add_action_widget (plugin, pd->button); - + /* Set the callbacks */ TRACE ("Set the clicked callback"); - + g_signal_connect (pd->button, "clicked", G_CALLBACK (cb_button_clicked), pd); TRACE ("Set the free data callback"); @@ -374,7 +374,7 @@ screenshooter_plugin_construct (XfcePanelPlugin *plugin) TRACE ("Set the configuration menu"); xfce_panel_plugin_menu_show_configure (plugin); - + g_signal_connect (plugin, "configure-plugin", G_CALLBACK (cb_properties_dialog), pd); } XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL (screenshooter_plugin_construct); diff --git a/src/main.c b/src/main.c index 66797007b75e26ac82b125c817ab539e2e55c023..a499b73667978276d60a4228932cfc294e117479 100644 --- a/src/main.c +++ b/src/main.c @@ -122,7 +122,7 @@ cb_dialog_response (GtkWidget *dialog, int response, ScreenshotData *sd) /* Launch the help page and show an error dialog if there was an error. */ if (!g_spawn_command_line_async ("xfhelp4 xfce4-screenshooter.html", &error_help)) { - xfce_err (error_help->message); + screenshooter_error ("%s", error_help->message); g_error_free (error_help); } } @@ -310,8 +310,10 @@ int main (int argc, char **argv) } else { - xfce_err (_("%s is not a valid directory, the default" - " directory will be used."), screenshot_dir); + screenshooter_error ("%s", + _("%s is not a valid directory, the default" + " directory will be used."), + screenshot_dir); } g_object_unref (default_save_dir);