annotate src/gtkcellrendererprogress.c @ 4514:7521e29658bc

[gaim-migrate @ 4792] Of course, file transfer wasn't really gone.. I'm trying my hardest to bring on the end of the world (see the roadmap at http://gaim.sf.net/roadmap.png). File transfer is being rewritten. This isn't the finished implementation, but it's enough to let us get the prpls working. There is now a file transfer dialog, which will appear when you get a new transfer request or when you go to Tools -> File Transfers. This is of course core/UI split. I'll also be working on documentation on how to write FT support in a prpl. Oh, and I'll get resumes and transfer batches done when school isn't breathing down my back. Only DCC receive in IRC currently works. Sorry. We'll get the other prpls working soon, as well as send. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Tue, 04 Feb 2003 06:57:35 +0000
parents 29664b8a1368
children 4db59242fb34
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
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2 * Copyright (C) 2002, Sean Egan <bj91704@binghamton.edu>
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 *
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 * 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
6 * the Free Software Foundation; either version 2 of the License, or
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 * (at your option) any later version.
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 *
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * This program is distributed in the hope that it will be useful,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * GNU General Public License for more details.
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 *
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * along with this program; if not, write to the Free Software
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 *
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 */
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 /* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 * Jonathon Blandford <jrb@redhat.com> for RedHat, Inc.
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 #include "gtkcellrendererprogress.h"
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 static void gtk_cell_renderer_progress_get_property (GObject *object,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 guint param_id,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 GValue *value,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 GParamSpec *pspec);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 static void gtk_cell_renderer_progress_set_property (GObject *object,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31 guint param_id,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 const GValue *value,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 GParamSpec *pspec);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 static void gtk_cell_renderer_progress_init (GtkCellRendererProgress *cellprogress);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 static void gtk_cell_renderer_progress_class_init (GtkCellRendererProgressClass *class);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 static void gtk_cell_renderer_progress_get_size (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 gint *x_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40 gint *y_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 gint *width,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42 gint *height);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
43 static void gtk_cell_renderer_progress_render (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 GdkWindow *window,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 GdkRectangle *background_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 GdkRectangle *expose_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 guint flags);
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
50 #if 0
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 static gboolean gtk_cell_renderer_progress_activate (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52 GdkEvent *event,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 const gchar *path,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55 GdkRectangle *background_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 guint flags);
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
58 #endif
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 static void gtk_cell_renderer_progress_finalize (GObject *gobject);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 enum {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 LAST_SIGNAL
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 };
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 enum {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 PROP_0,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 PROP_PERCENTAGE,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69 PROP_TEXT,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70 PROP_SHOW_TEXT
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 };
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 static gpointer parent_class;
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
74 /* static guint progress_cell_renderer_signals [LAST_SIGNAL]; */
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
76 GType gtk_cell_renderer_progress_get_type (void)
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 static GType cell_progress_type = 0;
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 if (!cell_progress_type)
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 static const GTypeInfo cell_progress_info =
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 sizeof (GtkCellRendererProgressClass),
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 NULL, /* base_init */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 NULL, /* base_finalize */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 (GClassInitFunc) gtk_cell_renderer_progress_class_init,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 NULL, /* class_finalize */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 NULL, /* class_data */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 sizeof (GtkCellRendererProgress),
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 0, /* n_preallocs */
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 (GInstanceInitFunc) gtk_cell_renderer_progress_init,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 };
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 cell_progress_type =
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96 g_type_register_static (GTK_TYPE_CELL_RENDERER, "GtkCellRendererProgress",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 &cell_progress_info, 0);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100 return cell_progress_type;
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
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 static void gtk_cell_renderer_progress_init (GtkCellRendererProgress *cellprogress)
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 GTK_CELL_RENDERER(cellprogress)->mode = GTK_CELL_RENDERER_MODE_INERT;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 GTK_CELL_RENDERER(cellprogress)->xpad = 2;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 GTK_CELL_RENDERER(cellprogress)->ypad = 2;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 static void gtk_cell_renderer_progress_class_init (GtkCellRendererProgressClass *class)
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 GObjectClass *object_class = G_OBJECT_CLASS(class);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114 GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 parent_class = g_type_class_peek_parent (class);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 object_class->finalize = gtk_cell_renderer_progress_finalize;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119 object_class->get_property = gtk_cell_renderer_progress_get_property;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120 object_class->set_property = gtk_cell_renderer_progress_set_property;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 cell_class->get_size = gtk_cell_renderer_progress_get_size;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 cell_class->render = gtk_cell_renderer_progress_render;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125 g_object_class_install_property (object_class,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 PROP_PERCENTAGE,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127 g_param_spec_double ("percentage",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 "Percentage",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 "The fractional progress to display",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 0, 1, 0,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 G_PARAM_READWRITE));
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133 g_object_class_install_property (object_class,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134 PROP_TEXT,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 g_param_spec_string ("text",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 "Text",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137 "Text to overlay over progress bar",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138 NULL,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139 G_PARAM_READWRITE));
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 g_object_class_install_property(object_class,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 PROP_SHOW_TEXT,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142 g_param_spec_string("text_set",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 "Text set",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 "Whether to overlay text on the progress bar",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145 FALSE,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146 G_PARAM_READABLE | G_PARAM_WRITABLE));
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148
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 static void gtk_cell_renderer_progress_finalize (GObject *object)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 {
4514
7521e29658bc [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 3832
diff changeset
153 /*
3832
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
154 GtkCellRendererProgress *cellprogress = GTK_CELL_RENDERER_PROGRESS(object);
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
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157 (* G_OBJECT_CLASS (parent_class)->finalize) (object);
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
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 static void gtk_cell_renderer_progress_get_property (GObject *object,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 guint param_id,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 GValue *value,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163 GParamSpec *psec)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165 GtkCellRendererProgress *cellprogress = GTK_CELL_RENDERER_PROGRESS(object);
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 switch (param_id)
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 case PROP_PERCENTAGE:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 g_value_set_double(value, cellprogress->progress);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
171 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 case PROP_TEXT:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 g_value_set_string(value, cellprogress->text);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 case PROP_SHOW_TEXT:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 g_value_set_boolean(value, cellprogress->text_set);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 default:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, psec);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182 }
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 static void gtk_cell_renderer_progress_set_property (GObject *object,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
185 guint param_id,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
186 const GValue *value,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187 GParamSpec *pspec)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189 GtkCellRendererProgress *cellprogress = GTK_CELL_RENDERER_PROGRESS (object);
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 switch (param_id)
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 case PROP_PERCENTAGE:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
194 cellprogress->progress = g_value_get_double(value);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
195 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
196 case PROP_TEXT:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197 if (cellprogress->text)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198 g_free(cellprogress->text);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199 cellprogress->text = g_strdup(g_value_get_string(value));
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
200 g_object_notify(object, "text");
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
201 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
202 case PROP_SHOW_TEXT:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203 cellprogress->text_set = g_value_get_boolean(value);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
204 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
205 default:
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, pspec);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207 break;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
209 }
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 GtkCellRenderer *gtk_cell_renderer_progress_new(void)
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 return g_object_new(GTK_TYPE_CELL_RENDERER_PROGRESS, NULL);
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
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216 static void gtk_cell_renderer_progress_get_size (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
217 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
219 gint *x_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
220 gint *y_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221 gint *width,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222 gint *height)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
223 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
224 gint calc_width;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
225 gint calc_height;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
227 calc_width = (gint) cell->xpad * 2 + 50;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228 calc_height = (gint) cell->ypad * 2 + 10;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 if (width)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231 *width = calc_width;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
233 if (height)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234 *height = calc_height;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
236 if (cell_area)
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 (x_offset)
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 *x_offset = cell->xalign * (cell_area->width - calc_width);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
241 *x_offset = MAX (*x_offset, 0);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
242 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243 if (y_offset)
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 *y_offset = cell->yalign * (cell_area->height - calc_height);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246 *y_offset = MAX (*y_offset, 0);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247 }
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248 }
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 static void gtk_cell_renderer_progress_render (GtkCellRenderer *cell,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
253 GdkWindow *window,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254 GtkWidget *widget,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
255 GdkRectangle *background_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
256 GdkRectangle *cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257 GdkRectangle *expose_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 guint flags)
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 {
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260 GtkCellRendererProgress *cellprogress = (GtkCellRendererProgress *) cell;
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 gint width, height;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
263 gint x_offset, y_offset;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
264 GtkStateType state;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
265
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
266 gtk_cell_renderer_progress_get_size (cell, widget, cell_area,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267 &x_offset, &y_offset,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
268 &width, &height);
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
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271 if (GTK_WIDGET_HAS_FOCUS (widget))
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
272 state = GTK_STATE_ACTIVE;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273 else
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 state = GTK_STATE_NORMAL;
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
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
278 width -= cell->xpad*2;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279 height -= cell->ypad*2;
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281 gtk_paint_box (widget->style,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 window,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 GTK_STATE_NORMAL, GTK_SHADOW_IN,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
284 NULL, widget, "trough",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285 cell_area->x + x_offset + cell->xpad,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286 cell_area->y + y_offset + cell->ypad,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287 width - 1, height - 1);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288 gtk_paint_box (widget->style,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 window,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 state, GTK_SHADOW_OUT,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 NULL, widget, "bar",
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292 cell_area->x + x_offset + cell->xpad + 1,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293 cell_area->y + y_offset + cell->ypad + 1,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
294 width * cellprogress->progress,
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295 height - 2);
29664b8a1368 [gaim-migrate @ 3981]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
296 }