1
/* Generated by GOB (v2.0.15) (do not edit directly) */
3
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
5
#define GOB_VERSION_MAJOR 2
6
#define GOB_VERSION_MINOR 0
7
#define GOB_VERSION_PATCHLEVEL 15
9
#define selfp (self->_priv)
11
#include <string.h> /* memset() */
13
#include "lm-bar-graph.h"
15
#include "lm-bar-graph-private.h"
18
#define ___GOB_LIKELY(expr) G_LIKELY(expr)
19
#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
20
#else /* ! G_LIKELY */
21
#define ___GOB_LIKELY(expr) (expr)
22
#define ___GOB_UNLIKELY(expr) (expr)
25
#line 33 "src/lm-bar-graph.gob"
28
#include "lm-applet.h"
29
#include "lm-host-frontend.h"
31
#define BAR_THICKNESS 6
35
#define LINE_WIDTH 1.0
39
#line 40 "lm-bar-graph.c"
40
/* self casting macros */
41
#define SELF(x) LM_BAR_GRAPH(x)
42
#define SELF_CONST(x) LM_BAR_GRAPH_CONST(x)
43
#define IS_SELF(x) LM_IS_BAR_GRAPH(x)
44
#define TYPE_SELF LM_TYPE_BAR_GRAPH
45
#define SELF_CLASS(x) LM_BAR_GRAPH_CLASS(x)
47
#define SELF_GET_CLASS(x) LM_BAR_GRAPH_GET_CLASS(x)
50
typedef LMBarGraph Self;
51
typedef LMBarGraphClass SelfClass;
53
/* here are local prototypes */
54
static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec);
55
static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
56
#line 0 "src/lm-bar-graph.gob"
57
static void lm_bar_graph_init (LMBarGraph * o);
58
#line 59 "lm-bar-graph.c"
59
#line 0 "src/lm-bar-graph.gob"
60
static void lm_bar_graph_class_init (LMBarGraphClass * c);
61
#line 62 "lm-bar-graph.c"
62
#line 60 "src/lm-bar-graph.gob"
63
static void lm_bar_graph_constructor (LMBarGraph * self);
64
#line 65 "lm-bar-graph.c"
65
#line 82 "src/lm-bar-graph.gob"
66
static void ___3_lm_bar_graph_size_request (GtkWidget * widget, GtkRequisition * requisition);
67
#line 68 "lm-bar-graph.c"
68
#line 113 "src/lm-bar-graph.gob"
69
static gboolean ___4_lm_bar_graph_expose_event (GtkWidget * widget, GdkEventExpose * event);
70
#line 71 "lm-bar-graph.c"
71
#line 210 "src/lm-bar-graph.gob"
72
static void lm_bar_graph_draw_bar (LMBarGraph * self, LMHostFrontend * host, cairo_t * cr, int bar_x, int bar_y, int graph_width, int graph_height);
73
#line 74 "lm-bar-graph.c"
81
/* pointer to the class of our parent */
82
static GtkWidgetClass *parent_class = NULL;
84
/* Short form macros */
85
#define self_set_orientation lm_bar_graph_set_orientation
86
#define self_draw_bar lm_bar_graph_draw_bar
87
#define self_new lm_bar_graph_new
89
lm_bar_graph_get_type (void)
91
static GType type = 0;
93
if ___GOB_UNLIKELY(type == 0) {
94
static const GTypeInfo info = {
95
sizeof (LMBarGraphClass),
97
(GBaseFinalizeFunc) NULL,
98
(GClassInitFunc) lm_bar_graph_class_init,
99
(GClassFinalizeFunc) NULL,
100
NULL /* class_data */,
103
(GInstanceInitFunc) lm_bar_graph_init,
107
type = g_type_register_static (GTK_TYPE_WIDGET, "LMBarGraph", &info, (GTypeFlags)0);
113
/* a macro for creating a new object of our type */
114
#define GET_NEW ((LMBarGraph *)g_object_new(lm_bar_graph_get_type(), NULL))
116
/* a function for creating a new object of our type */
118
static LMBarGraph * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
120
GET_NEW_VARG (const char *first, ...)
124
va_start (ap, first);
125
ret = (LMBarGraph *)g_object_new_valist (lm_bar_graph_get_type (), first, ap);
132
___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties)
134
#define __GOB_FUNCTION__ "LM:Bar:Graph::constructor"
137
obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties);
138
self = LM_BAR_GRAPH (obj_self);
139
#line 60 "src/lm-bar-graph.gob"
140
lm_bar_graph_constructor (self);
141
#line 142 "lm-bar-graph.c"
144
#undef __GOB_FUNCTION__
148
___finalize(GObject *obj_self)
150
#define __GOB_FUNCTION__ "LM:Bar:Graph::finalize"
151
LMBarGraph *self G_GNUC_UNUSED = LM_BAR_GRAPH (obj_self);
152
gpointer priv G_GNUC_UNUSED = self->_priv;
153
if(G_OBJECT_CLASS(parent_class)->finalize) \
154
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
156
#undef __GOB_FUNCTION__
159
lm_bar_graph_init (LMBarGraph * o G_GNUC_UNUSED)
161
#define __GOB_FUNCTION__ "LM:Bar:Graph::init"
162
o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,LM_TYPE_BAR_GRAPH,LMBarGraphPrivate);
164
#undef __GOB_FUNCTION__
166
lm_bar_graph_class_init (LMBarGraphClass * c G_GNUC_UNUSED)
168
#define __GOB_FUNCTION__ "LM:Bar:Graph::class_init"
169
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
170
GtkWidgetClass *gtk_widget_class = (GtkWidgetClass *)c;
172
g_type_class_add_private(c,sizeof(LMBarGraphPrivate));
174
parent_class = g_type_class_ref (GTK_TYPE_WIDGET);
176
#line 82 "src/lm-bar-graph.gob"
177
gtk_widget_class->size_request = ___3_lm_bar_graph_size_request;
178
#line 113 "src/lm-bar-graph.gob"
179
gtk_widget_class->expose_event = ___4_lm_bar_graph_expose_event;
180
#line 181 "lm-bar-graph.c"
181
g_object_class->constructor = ___constructor;
182
g_object_class->finalize = ___finalize;
183
g_object_class->get_property = ___object_get_property;
184
g_object_class->set_property = ___object_set_property;
186
GParamSpec *param_spec;
188
param_spec = g_param_spec_pointer
189
("applet" /* name */,
192
(GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
193
g_object_class_install_property (g_object_class,
196
param_spec = g_param_spec_int
197
("orientation" /* name */,
200
G_MININT /* minimum */,
201
G_MAXINT /* maximum */,
202
0 /* default_value */,
203
(GParamFlags)(G_PARAM_WRITABLE));
204
g_object_class_install_property (g_object_class,
209
#undef __GOB_FUNCTION__
212
___object_set_property (GObject *object,
214
const GValue *VAL G_GNUC_UNUSED,
215
GParamSpec *pspec G_GNUC_UNUSED)
216
#define __GOB_FUNCTION__ "LM:Bar:Graph::set_property"
218
LMBarGraph *self G_GNUC_UNUSED;
220
self = LM_BAR_GRAPH (object);
222
switch (property_id) {
225
#line 50 "src/lm-bar-graph.gob"
226
self->_priv->applet = g_value_get_pointer (VAL);
227
#line 228 "lm-bar-graph.c"
230
case PROP_ORIENTATION:
232
#line 55 "src/lm-bar-graph.gob"
234
selfp->orientation = g_value_get_int(VAL);
235
gtk_widget_queue_resize(GTK_WIDGET(self));
237
#line 238 "lm-bar-graph.c"
241
/* Apparently in g++ this is needed, glib is b0rk */
242
#ifndef __PRETTY_FUNCTION__
244
# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
246
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
250
#undef __GOB_FUNCTION__
253
___object_get_property (GObject *object,
255
GValue *VAL G_GNUC_UNUSED,
256
GParamSpec *pspec G_GNUC_UNUSED)
257
#define __GOB_FUNCTION__ "LM:Bar:Graph::get_property"
259
LMBarGraph *self G_GNUC_UNUSED;
261
self = LM_BAR_GRAPH (object);
263
switch (property_id) {
266
#line 50 "src/lm-bar-graph.gob"
267
g_value_set_pointer (VAL, self->_priv->applet);
268
#line 269 "lm-bar-graph.c"
272
/* Apparently in g++ this is needed, glib is b0rk */
273
#ifndef __PRETTY_FUNCTION__
275
# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
277
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
281
#undef __GOB_FUNCTION__
285
#line 55 "src/lm-bar-graph.gob"
287
lm_bar_graph_set_orientation (LMBarGraph * self, LMBarGraphOrientation val)
289
#line 290 "lm-bar-graph.c"
290
#define __GOB_FUNCTION__ "LM:Bar:Graph::set_orientation"
292
#line 53 "src/lm-bar-graph.gob"
293
g_object_set (G_OBJECT (self), "orientation", val, NULL);
295
#line 296 "lm-bar-graph.c"
296
#undef __GOB_FUNCTION__
298
#line 60 "src/lm-bar-graph.gob"
300
lm_bar_graph_constructor (LMBarGraph * self)
302
#line 303 "lm-bar-graph.c"
303
#define __GOB_FUNCTION__ "LM:Bar:Graph::constructor"
305
#line 61 "src/lm-bar-graph.gob"
309
GTK_WIDGET_SET_FLAGS(self, GTK_NO_WINDOW);
311
lm_g_object_connect(self, selfp->applet,
312
"swapped-signal::notify::scale", gtk_widget_queue_draw, self,
315
LM_ARRAY_FOREACH(i, selfp->applet->hosts)
317
LMHostFrontend *host = g_ptr_array_index(selfp->applet->hosts, i);
319
lm_g_object_connect(self, host,
320
"swapped-signal::notify::color", gtk_widget_queue_draw, self,
321
"swapped-signal::notify::alive", gtk_widget_queue_draw, self,
322
"swapped-signal::notify::roundtrip-time", gtk_widget_queue_draw, self,
326
#line 327 "lm-bar-graph.c"
327
#undef __GOB_FUNCTION__
329
#line 82 "src/lm-bar-graph.gob"
331
___3_lm_bar_graph_size_request (GtkWidget * widget G_GNUC_UNUSED, GtkRequisition * requisition)
332
#line 333 "lm-bar-graph.c"
333
#define PARENT_HANDLER(___widget,___requisition) \
334
{ if(GTK_WIDGET_CLASS(parent_class)->size_request) \
335
(* GTK_WIDGET_CLASS(parent_class)->size_request)(___widget,___requisition); }
337
#define __GOB_FUNCTION__ "LM:Bar:Graph::size_request"
339
#line 84 "src/lm-bar-graph.gob"
341
Self *self = SELF(widget);
345
num_bars = selfp->applet->hosts->len;
346
thickness = LM_BOX_BORDER_WIDTH * 2
348
+ num_bars * BAR_THICKNESS
349
+ (num_bars - 1) * BAR_PADDING;
351
switch (selfp->orientation)
353
case LM_BAR_GRAPH_ORIENTATION_HORIZONTAL:
354
requisition->width = 0;
355
requisition->height = thickness;
358
case LM_BAR_GRAPH_ORIENTATION_VERTICAL:
359
requisition->width = thickness;
360
requisition->height = 0;
364
g_assert_not_reached();
368
#line 369 "lm-bar-graph.c"
369
#undef __GOB_FUNCTION__
370
#undef PARENT_HANDLER
372
#line 113 "src/lm-bar-graph.gob"
374
___4_lm_bar_graph_expose_event (GtkWidget * widget G_GNUC_UNUSED, GdkEventExpose * event)
375
#line 376 "lm-bar-graph.c"
376
#define PARENT_HANDLER(___widget,___event) \
377
((GTK_WIDGET_CLASS(parent_class)->expose_event)? \
378
(* GTK_WIDGET_CLASS(parent_class)->expose_event)(___widget,___event): \
381
#define __GOB_FUNCTION__ "LM:Bar:Graph::expose_event"
383
#line 115 "src/lm-bar-graph.gob"
385
Self *self = SELF(widget);
386
GdkRectangle entire_rect;
387
GdkRectangle contents_rect;
395
if (! GTK_WIDGET_DRAWABLE(widget))
398
switch (selfp->orientation)
400
case LM_BAR_GRAPH_ORIENTATION_HORIZONTAL:
401
entire_rect.x = widget->allocation.x;
402
lm_widget_get_origin(widget, ALIGN, ALIGN, NULL, &entire_rect.y);
403
entire_rect.width = widget->allocation.width;
404
entire_rect.height = widget->requisition.height;
407
case LM_BAR_GRAPH_ORIENTATION_VERTICAL:
408
lm_widget_get_origin(widget, ALIGN, ALIGN, &entire_rect.x, NULL);
409
entire_rect.y = widget->allocation.y;
410
entire_rect.width = widget->requisition.width;
411
entire_rect.height = widget->allocation.height;
415
g_assert_not_reached();
419
contents_rect.x = entire_rect.x + LM_BOX_BORDER_WIDTH;
420
contents_rect.y = entire_rect.y + LM_BOX_BORDER_WIDTH;
421
contents_rect.width = entire_rect.width - LM_BOX_BORDER_WIDTH * 2;
422
contents_rect.height = entire_rect.height - LM_BOX_BORDER_WIDTH * 2;
424
bar_x = contents_rect.x + BAR_PADDING;
425
bar_y = contents_rect.y + BAR_PADDING;
426
graph_width = contents_rect.width - BAR_PADDING * 2;
427
graph_height = contents_rect.height - BAR_PADDING * 2;
429
lm_paint_box(widget->window,
430
GTK_WIDGET_STATE(widget),
434
widget->style->base_gc[GTK_WIDGET_STATE(widget)],
440
cr = gdk_cairo_create(widget->window);
442
cairo_set_line_width(cr, LINE_WIDTH);
443
cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
444
cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
446
LM_ARRAY_FOREACH(i, selfp->applet->hosts)
448
LMHostFrontend *host = g_ptr_array_index(selfp->applet->hosts, i);
458
switch (selfp->orientation)
460
case LM_BAR_GRAPH_ORIENTATION_HORIZONTAL:
461
bar_y += BAR_THICKNESS + BAR_PADDING;
464
case LM_BAR_GRAPH_ORIENTATION_VERTICAL:
465
bar_x += BAR_THICKNESS + BAR_PADDING;
469
g_assert_not_reached();
478
#line 479 "lm-bar-graph.c"
479
#undef __GOB_FUNCTION__
480
#undef PARENT_HANDLER
482
#line 210 "src/lm-bar-graph.gob"
484
lm_bar_graph_draw_bar (LMBarGraph * self, LMHostFrontend * host, cairo_t * cr, int bar_x, int bar_y, int graph_width, int graph_height)
486
#line 487 "lm-bar-graph.c"
487
#define __GOB_FUNCTION__ "LM:Bar:Graph::draw_bar"
488
#line 210 "src/lm-bar-graph.gob"
489
g_return_if_fail (self != NULL);
490
#line 210 "src/lm-bar-graph.gob"
491
g_return_if_fail (LM_IS_BAR_GRAPH (self));
492
#line 210 "src/lm-bar-graph.gob"
493
g_return_if_fail (host != NULL);
494
#line 210 "src/lm-bar-graph.gob"
495
g_return_if_fail (LM_IS_HOST_FRONTEND (host));
496
#line 210 "src/lm-bar-graph.gob"
497
g_return_if_fail (cr != NULL);
498
#line 499 "lm-bar-graph.c"
500
#line 218 "src/lm-bar-graph.gob"
502
LMHost *base_host = LM_HOST(host);
503
GdkRectangle bar_rect;
504
LMCairoColor fill_color;
505
LMCairoColor border_color;
508
if (base_host->alive)
510
fraction = ((double) base_host->roundtrip_time / 1000) / selfp->applet->scale;
511
fraction = CLAMP(fraction, 0.0, 1.0);
516
switch (selfp->orientation)
518
case LM_BAR_GRAPH_ORIENTATION_HORIZONTAL:
519
bar_rect.width = fraction * graph_width;
520
bar_rect.height = BAR_THICKNESS;
525
case LM_BAR_GRAPH_ORIENTATION_VERTICAL:
526
bar_rect.width = BAR_THICKNESS;
527
bar_rect.height = fraction * graph_height;
529
bar_rect.y = bar_y + graph_height - bar_rect.height;
533
g_assert_not_reached();
537
/* setup a clip rectangle for the bar */
540
cairo_rectangle(cr, bar_rect.x, bar_rect.y, bar_rect.width, bar_rect.height);
542
cairo_translate(cr, bar_rect.x, bar_rect.y);
544
lm_gdk_color_to_cairo_color(&host->color, &fill_color);
545
lm_cairo_color_shade(&fill_color, &border_color, 0.6);
547
/* draw the bar border */
548
lm_cairo_set_source_color(cr, &border_color);
552
bar_rect.width - LINE_WIDTH * 2,
553
bar_rect.height - LINE_WIDTH * 2);
554
cairo_stroke_preserve(cr);
556
/* if the host is alive, fill the bar */
557
if (base_host->alive)
559
lm_cairo_set_source_color(cr, &fill_color);
565
#line 566 "lm-bar-graph.c"
566
#undef __GOB_FUNCTION__
568
#line 283 "src/lm-bar-graph.gob"
570
lm_bar_graph_new (LMApplet * applet)
572
#line 573 "lm-bar-graph.c"
573
#define __GOB_FUNCTION__ "LM:Bar:Graph::new"
574
#line 283 "src/lm-bar-graph.gob"
575
g_return_val_if_fail (applet != NULL, (GtkWidget * )0);
576
#line 283 "src/lm-bar-graph.gob"
577
g_return_val_if_fail (LM_IS_APPLET (applet), (GtkWidget * )0);
578
#line 579 "lm-bar-graph.c"
580
#line 285 "src/lm-bar-graph.gob"
582
return GTK_WIDGET(GET_NEW_VARG(LM_BAR_GRAPH_PROP_APPLET(applet), NULL));
584
#line 585 "lm-bar-graph.c"
585
#undef __GOB_FUNCTION__