31
39
#include "gimpprogressbar.h"
34
static void gimp_progress_bar_class_init (GimpProgressBarClass *klass);
35
static void gimp_progress_bar_init (GimpProgressBar *bar);
37
static void gimp_progress_bar_destroy (GtkObject *object);
39
static void gimp_progress_bar_start (const gchar *message,
42
static void gimp_progress_bar_end (gpointer user_data);
43
static void gimp_progress_bar_set_text (const gchar *message,
45
static void gimp_progress_bar_set_value (gdouble percentage,
49
static GtkProgressBarClass *parent_class = NULL;
53
gimp_progress_bar_get_type (void)
55
static GType bar_type = 0;
59
static const GTypeInfo bar_info =
61
sizeof (GimpProgressBarClass),
63
(GBaseFinalizeFunc) NULL,
64
(GClassInitFunc) gimp_progress_bar_class_init,
65
NULL, /* class_finalize */
66
NULL, /* class_data */
67
sizeof (GimpProgressBar),
69
(GInstanceInitFunc) gimp_progress_bar_init,
72
bar_type = g_type_register_static (GTK_TYPE_PROGRESS_BAR,
42
static void gimp_progress_bar_destroy (GtkObject *object);
44
static void gimp_progress_bar_start (const gchar *message,
47
static void gimp_progress_bar_end (gpointer user_data);
48
static void gimp_progress_bar_set_text (const gchar *message,
50
static void gimp_progress_bar_set_value (gdouble percentage,
52
static void gimp_progress_bar_pulse (gpointer user_data);
53
static guint32 gimp_progress_bar_get_window (gpointer user_data);
56
G_DEFINE_TYPE (GimpProgressBar, gimp_progress_bar, GTK_TYPE_PROGRESS_BAR)
58
#define parent_class gimp_progress_bar_parent_class
81
62
gimp_progress_bar_class_init (GimpProgressBarClass *klass)
83
64
GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
85
parent_class = g_type_class_peek_parent (klass);
87
66
object_class->destroy = gimp_progress_bar_destroy;
91
70
gimp_progress_bar_init (GimpProgressBar *bar)
72
GimpProgressVtable vtable = { 0, };
93
74
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (bar), " ");
95
bar->progress_callback = gimp_progress_install (gimp_progress_bar_start,
96
gimp_progress_bar_end,
97
gimp_progress_bar_set_text,
98
gimp_progress_bar_set_value,
75
gtk_progress_bar_set_ellipsize (GTK_PROGRESS_BAR (bar), PANGO_ELLIPSIZE_END);
77
vtable.start = gimp_progress_bar_start;
78
vtable.end = gimp_progress_bar_end;
79
vtable.set_text = gimp_progress_bar_set_text;
80
vtable.set_value = gimp_progress_bar_set_value;
81
vtable.pulse = gimp_progress_bar_pulse;
82
vtable.get_window = gimp_progress_bar_get_window;
84
bar->progress_callback = gimp_progress_install_vtable (&vtable, bar);
161
146
GimpProgressBar *bar = GIMP_PROGRESS_BAR (user_data);
163
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (bar), percentage);
165
if (GTK_WIDGET_DRAWABLE (bar))
166
while (g_main_context_pending (NULL))
167
g_main_context_iteration (NULL, TRUE);
148
if (percentage >= 0.0)
149
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (bar), percentage);
151
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (bar));
153
if (GTK_WIDGET_DRAWABLE (bar))
154
while (g_main_context_pending (NULL))
155
g_main_context_iteration (NULL, TRUE);
159
gimp_progress_bar_pulse (gpointer user_data)
161
GimpProgressBar *bar = GIMP_PROGRESS_BAR (user_data);
163
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (bar));
165
if (GTK_WIDGET_DRAWABLE (bar))
166
while (g_main_context_pending (NULL))
167
g_main_context_iteration (NULL, TRUE);
170
static GdkNativeWindow
171
gimp_window_get_native (GtkWindow *window)
173
g_return_val_if_fail (GTK_IS_WINDOW (window), 0);
175
#ifdef GDK_NATIVE_WINDOW_POINTER
177
#warning gimp_window_get_native() unimplementable for the target windowing system
181
#ifdef GDK_WINDOWING_WIN32
182
if (window && GTK_WIDGET_REALIZED (window))
183
return GDK_WINDOW_HWND (GTK_WIDGET (window)->window);
186
#ifdef GDK_WINDOWING_X11
187
if (window && GTK_WIDGET_REALIZED (window))
188
return GDK_WINDOW_XID (GTK_WIDGET (window)->window);
195
gimp_progress_bar_get_window (gpointer user_data)
197
GimpProgressBar *bar = GIMP_PROGRESS_BAR (user_data);
200
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (bar));
202
if (GTK_IS_WINDOW (toplevel))
203
return (guint32) gimp_window_get_native (GTK_WINDOW (toplevel));