annotate src/gtkcellrendererprogress.c @ 9456:0577bb34622d

[gaim-migrate @ 10280] This fixes bug #964043 We were truncating the port to 4 ascii digits, because our buffer was too small. Oops. Let this be an example to you, not all users are on crack. This bug was somewhat confusing by the fact that the spin button to choose the port is only big enough to show 4 digits at a time. That's completely unrelated though, you can hit HOME and END and stuff to see all the digits and it saves file and all. committer: Tailor Script <tailor@pidgin.im>
author Tim Ringenbach <marv@pidgin.im>
date Tue, 06 Jul 2004 06:22:14 +0000
parents fa6395637e2c
children 8974a8544279
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /* gtkcellrendererprogress.c
8046
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7738
diff changeset
2 * Gaim is the legal property of its developers, whose names are too numerous
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7738
diff changeset
3 * to list here. Please refer to the COPYRIGHT file distributed with this
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7738
diff changeset
4 * source distribution.
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 *
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * (at your option) any later version.
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 *
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * GNU General Public License for more details.
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 *
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 *
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 /* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 * Jonathon Blandford <jrb@redhat.com> for RedHat, Inc.
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 #include "gtkcellrendererprogress.h"
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 static void gtk_cell_renderer_progress_get_property (GObject *object,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 guint param_id,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 GValue *value,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31 GParamSpec *pspec);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 static void gtk_cell_renderer_progress_set_property (GObject *object,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 guint param_id,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 const GValue *value,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 GParamSpec *pspec);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 static void gtk_cell_renderer_progress_init (GtkCellRendererProgress *cellprogress);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 static void gtk_cell_renderer_progress_class_init (GtkCellRendererProgressClass *class);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38 static void gtk_cell_renderer_progress_get_size (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 gint *x_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42 gint *y_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
43 gint *width,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 gint *height);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 static void gtk_cell_renderer_progress_render (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 GdkWindow *window,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 GdkRectangle *background_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 GdkRectangle *expose_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 guint flags);
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
52 #if 0
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 static gboolean gtk_cell_renderer_progress_activate (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 GdkEvent *event,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 const gchar *path,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 GdkRectangle *background_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 guint flags);
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
60 #endif
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 static void gtk_cell_renderer_progress_finalize (GObject *gobject);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 enum {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 LAST_SIGNAL
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 };
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67 enum {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 PROP_0,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70 PROP_PERCENTAGE,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 PROP_TEXT,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72 PROP_SHOW_TEXT
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 };
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75 static gpointer parent_class;
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
76 /* static guint progress_cell_renderer_signals [LAST_SIGNAL]; */
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78 GType gtk_cell_renderer_progress_get_type (void)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 static GType cell_progress_type = 0;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 if (!cell_progress_type)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84 static const GTypeInfo cell_progress_info =
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 sizeof (GtkCellRendererProgressClass),
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 NULL, /* base_init */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 NULL, /* base_finalize */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 (GClassInitFunc) gtk_cell_renderer_progress_class_init,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 NULL, /* class_finalize */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 NULL, /* class_data */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 sizeof (GtkCellRendererProgress),
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 0, /* n_preallocs */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 (GInstanceInitFunc) gtk_cell_renderer_progress_init,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 };
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 cell_progress_type =
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 g_type_register_static (GTK_TYPE_CELL_RENDERER, "GtkCellRendererProgress",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99 &cell_progress_info, 0);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102 return cell_progress_type;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 static void gtk_cell_renderer_progress_init (GtkCellRendererProgress *cellprogress)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 GTK_CELL_RENDERER(cellprogress)->mode = GTK_CELL_RENDERER_MODE_INERT;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 GTK_CELL_RENDERER(cellprogress)->xpad = 2;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 GTK_CELL_RENDERER(cellprogress)->ypad = 2;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 static void gtk_cell_renderer_progress_class_init (GtkCellRendererProgressClass *class)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115 GObjectClass *object_class = G_OBJECT_CLASS(class);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118 parent_class = g_type_class_peek_parent (class);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119 object_class->finalize = gtk_cell_renderer_progress_finalize;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121 object_class->get_property = gtk_cell_renderer_progress_get_property;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 object_class->set_property = gtk_cell_renderer_progress_set_property;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 cell_class->get_size = gtk_cell_renderer_progress_get_size;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125 cell_class->render = gtk_cell_renderer_progress_render;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127 g_object_class_install_property (object_class,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 PROP_PERCENTAGE,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 g_param_spec_double ("percentage",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 "Percentage",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 "The fractional progress to display",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132 0, 1, 0,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133 G_PARAM_READWRITE));
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 g_object_class_install_property (object_class,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 PROP_TEXT,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137 g_param_spec_string ("text",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138 "Text",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139 "Text to overlay over progress bar",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 NULL,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 G_PARAM_READWRITE));
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142 g_object_class_install_property(object_class,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 PROP_SHOW_TEXT,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 g_param_spec_string("text_set",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145 "Text set",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146 "Whether to overlay text on the progress bar",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 FALSE,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148 G_PARAM_READABLE | G_PARAM_WRITABLE));
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
149 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
153 static void gtk_cell_renderer_progress_finalize (GObject *object)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
154 {
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
155 /*
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
156 GtkCellRendererProgress *cellprogress = GTK_CELL_RENDERER_PROGRESS(object);
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
157 */
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159 (* G_OBJECT_CLASS (parent_class)->finalize) (object);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 static void gtk_cell_renderer_progress_get_property (GObject *object,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163 guint param_id,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 GValue *value,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165 GParamSpec *psec)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
167 GtkCellRendererProgress *cellprogress = GTK_CELL_RENDERER_PROGRESS(object);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169 switch (param_id)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
171 case PROP_PERCENTAGE:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 g_value_set_double(value, cellprogress->progress);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 case PROP_TEXT:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 g_value_set_string(value, cellprogress->text);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 case PROP_SHOW_TEXT:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 g_value_set_boolean(value, cellprogress->text_set);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 default:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, psec);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
183 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
184 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
185
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
186 static void gtk_cell_renderer_progress_set_property (GObject *object,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187 guint param_id,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 const GValue *value,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189 GParamSpec *pspec)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
190 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
191 GtkCellRendererProgress *cellprogress = GTK_CELL_RENDERER_PROGRESS (object);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
192
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
193 switch (param_id)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
194 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
195 case PROP_PERCENTAGE:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
196 cellprogress->progress = g_value_get_double(value);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198 case PROP_TEXT:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199 if (cellprogress->text)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
200 g_free(cellprogress->text);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
201 cellprogress->text = g_strdup(g_value_get_string(value));
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
202 g_object_notify(object, "text");
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
204 case PROP_SHOW_TEXT:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
205 cellprogress->text_set = g_value_get_boolean(value);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207 default:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, pspec);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
209 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213 GtkCellRenderer *gtk_cell_renderer_progress_new(void)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
215 return g_object_new(GTK_TYPE_CELL_RENDERER_PROGRESS, NULL);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
217
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 static void gtk_cell_renderer_progress_get_size (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
219 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
220 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221 gint *x_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222 gint *y_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
223 gint *width,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
224 gint *height)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
225 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226 gint calc_width;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
227 gint calc_height;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229 calc_width = (gint) cell->xpad * 2 + 50;
7705
401deb1e1085 [gaim-migrate @ 8350]
Sean Egan <seanegan@gmail.com>
parents: 4559
diff changeset
230 calc_height = (gint) cell->ypad * 2 + 12;
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232 if (width)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
233 *width = calc_width;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235 if (height)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
236 *height = calc_height;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
237
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
238 if (cell_area)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
239 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
240 if (x_offset)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
241 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
242 *x_offset = cell->xalign * (cell_area->width - calc_width);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243 *x_offset = MAX (*x_offset, 0);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
244 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245 if (y_offset)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247 *y_offset = cell->yalign * (cell_area->height - calc_height);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248 *y_offset = MAX (*y_offset, 0);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
249 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
250 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
253
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254 static void gtk_cell_renderer_progress_render (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
255 GdkWindow *window,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
256 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257 GdkRectangle *background_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 GdkRectangle *expose_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260 guint flags)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
262 GtkCellRendererProgress *cellprogress = (GtkCellRendererProgress *) cell;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
263
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
264 gint width, height;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
265 GtkStateType state;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
266
7738
b14442b31a9b [gaim-migrate @ 8383]
Sean Egan <seanegan@gmail.com>
parents: 7705
diff changeset
267 width = cell_area->width;
b14442b31a9b [gaim-migrate @ 8383]
Sean Egan <seanegan@gmail.com>
parents: 7705
diff changeset
268 height = cell_area->height;
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
270 if (GTK_WIDGET_HAS_FOCUS (widget))
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271 state = GTK_STATE_ACTIVE;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
272 else
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273 state = GTK_STATE_NORMAL;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
276
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
277 width -= cell->xpad*2;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
278 height -= cell->ypad*2;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280 gtk_paint_box (widget->style,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281 window,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 GTK_STATE_NORMAL, GTK_SHADOW_IN,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 NULL, widget, "trough",
7738
b14442b31a9b [gaim-migrate @ 8383]
Sean Egan <seanegan@gmail.com>
parents: 7705
diff changeset
284 cell_area->x + cell->xpad,
b14442b31a9b [gaim-migrate @ 8383]
Sean Egan <seanegan@gmail.com>
parents: 7705
diff changeset
285 cell_area->y + cell->ypad,
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286 width - 1, height - 1);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287 gtk_paint_box (widget->style,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288 window,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 state, GTK_SHADOW_OUT,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 NULL, widget, "bar",
7738
b14442b31a9b [gaim-migrate @ 8383]
Sean Egan <seanegan@gmail.com>
parents: 7705
diff changeset
291 cell_area->x + cell->xpad + 1,
b14442b31a9b [gaim-migrate @ 8383]
Sean Egan <seanegan@gmail.com>
parents: 7705
diff changeset
292 cell_area->y + cell->ypad + 1,
7705
401deb1e1085 [gaim-migrate @ 8350]
Sean Egan <seanegan@gmail.com>
parents: 4559
diff changeset
293 (width - 3) * cellprogress->progress,
401deb1e1085 [gaim-migrate @ 8350]
Sean Egan <seanegan@gmail.com>
parents: 4559
diff changeset
294 height - 3);
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295 }