Top | ![]() |
![]() |
![]() |
![]() |
void | gwy_app_wait_start () |
void | gwy_app_wait_finish () |
gboolean | gwy_app_wait_set_fraction () |
gboolean | gwy_app_wait_set_message () |
gboolean | gwy_app_wait_set_message_prefix () |
void | gwy_app_wait_cursor_start () |
void | gwy_app_wait_cursor_finish () |
The waiting functions implement a simple single-thread approach to performing a long computation while keeping the GUI responsive.
The typical basic usage is as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
gboolean cancelled = FALSE; gwy_app_wait_start(window, _("Evaluating...")); for (i = 0; i < n_iters; i++) { do_one_calculation_iteration(); if (!gwy_app_wait_set_fraction((i + 1.0)/n_iters)) { cancelled = TRUE; break; } } gwy_app_wait_finish(); if (cancelled) handle_cancelled_computation(); else do_something_with_result(); |
void gwy_app_wait_start (GtkWindow *window
,const gchar *message
);
Starts waiting for a window window
, creating a dialog with a progress bar.
Waiting is global, there can be only one at a time.
Do not forget to call gwy_app_wait_finish()
when the computation is finished
(or cancelled). You should also call gwy_app_wait_set_fraction()
or
gwy_app_wait_set_message()
regularly to leave the GUI responsive.
void
gwy_app_wait_finish (void
);
Finishes waiting, closing the dialog.
No function like gwy_app_wait_set_message()
should be call after that.
This function must be called even if user cancelled the operation.
gboolean
gwy_app_wait_set_fraction (gdouble fraction
);
Sets the amount of progress the progress bar on the dialog displays.
This function may let the Gtk+ main loop to run. It used to let the main loop to run always. Since version 2.46 it performs automated rate-limiting and only does so if sufficient time has passed since the last main loop invocation. Therefore, you can call it 10000 times per second without fearing that the program will spend all time updating the GUI and no time in the calculation.
gboolean
gwy_app_wait_set_message (const gchar *message
);
Sets the message shown on the progress dialog.
See also gwy_app_wait_set_message_prefix()
which makes this function more
usable directly as a callback.
This function lets the Gtk+ main loop to run.
gboolean
gwy_app_wait_set_message_prefix (const gchar *prefix
);
Sets prefix for the messages shown in the progress dialog.
The prefix will take effect in the next gwy_app_wait_set_message()
call.
This function lets the Gtk+ main loop to run.
void
gwy_app_wait_cursor_start (GtkWindow *window
);
Changes the cursor for a window to indicate work.
This function lets the Gtk+ main loop to run.
Since: 2.3
void
gwy_app_wait_cursor_finish (GtkWindow *window
);
Resets the cursor for a window.
This function lets the Gtk+ main loop to run.
If the window cursor was non-default before gwy_app_wait_cursor_start()
,
it is not restored and has to be set manually. This limitation is due to
the nonexistence of a method to obtain the current cursor.
Since: 2.3