~ubuntu-branches/ubuntu/vivid/xfce4-netload-plugin/vivid

« back to all changes in this revision

Viewing changes to panel-plugin/netload.c

  • Committer: Bazaar Package Importer
  • Author(s): Lionel Le Folgoc, Lionel Le Folgoc, Yves-Alexis Perez
  • Date: 2011-04-19 23:12:43 UTC
  • mfrom: (1.1.4 upstream) (9.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20110419231243-tkce1b7gx8kjiu7h
Tags: 1.0.0-2
[ Lionel Le Folgoc ]
* Upload to unstable.
* debian/control:
  - add myself to Uploaders.
  - remove Simon and Emanuele from uploaders, thanks to them.

[ Yves-Alexis Perez ]
* debian/control:
  - update standards version to 3.9.2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Id: $Id: netload.c 772 2005-08-21 10:11:03Z bwalle $
 
2
 * Copyright 2003-2007 Bernhard Walle <bernhard@bwalle.de>
 
3
 * Copyright 2010 Florian Rivoal <frivoal@gmail.com>
3
4
 * -------------------------------------------------------------------------------------------------
4
5
 * 
5
 
 * This program is free software; you can redistribute it and/or modify it under the terms of the 
6
 
 * GNU General Public License as published by the Free Software Foundation; You may only use 
7
 
 * version 2 of the License, you have no option to use any other version.
8
 
 *
9
 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
10
 
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
11
 
 * the GNU General Public License for more details.
12
 
 *
13
 
 * You should have received a copy of the GNU General Public License along with this program; if 
14
 
 * not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
6
 *  This program is free software; you can redistribute it and/or modify it
 
7
 *  under the terms of the GNU General Public License as published by the Free
 
8
 *  Software Foundation; either version 2 of the License, or (at your option)
 
9
 *  any later version.
 
10
 *
 
11
 * This program is distributed in the hope that it will be useful, but WITHOUT
 
12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 
13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 
14
 * more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License along with
 
17
 * this program; if not, write to the Free Software Foundation, Inc., 675 Mass
 
18
 * Ave, Cambridge, MA 02139, USA.
15
19
 *
16
20
 * ------------------------------------------------------------------------------------------------- 
17
21
 */
30
34
#include <libxfce4panel/xfce-panel-plugin.h>
31
35
 
32
36
 
33
 
static GtkTooltips *tooltips = NULL;
34
 
 
35
37
#define BORDER 8
36
38
 
37
39
/* Defaults */
119
121
 
120
122
    GtkWidget         *ebox;
121
123
    GtkWidget         *box;
 
124
    GtkWidget         *tooltip_text;
122
125
    guint             timeout_id;
123
126
    t_monitor         *monitor;
124
127
 
138
141
    double temp;
139
142
    gint i, j;
140
143
 
 
144
    if (!get_interface_up(&(global->monitor->data)))
 
145
    {
 
146
        g_snprintf(caption, sizeof(caption), 
 
147
                _("<< %s >> (Interface down)"),
 
148
                    get_name(&(global->monitor->data)));
 
149
        gtk_label_set_text(GTK_LABEL(global->tooltip_text), caption);
 
150
 
 
151
        return TRUE;
 
152
    }
 
153
 
141
154
    get_current_netload( &(global->monitor->data), &(net[IN]), &(net[OUT]), &(net[TOT]) );
142
155
    
143
156
 
219
232
                    "Incoming: %s kByte/s\nOutgoing: %s kByte/s\nTotal: %s kByte/s"),
220
233
                    get_name(&(global->monitor->data)), ip ? ip : _("no IP address"),
221
234
                    HISTSIZE_CALCULATE, buffer[IN], buffer[OUT], buffer[TOT]);
222
 
        gtk_tooltips_set_tip(tooltips, GTK_WIDGET(global->ebox), caption, NULL);
 
235
        gtk_label_set_text(GTK_LABEL(global->tooltip_text), caption);
223
236
    }
224
237
 
225
238
    return TRUE;
247
260
static void monitor_set_orientation (XfcePanelPlugin *plugin, GtkOrientation orientation, 
248
261
                                     t_global_monitor *global)
249
262
{
250
 
    GtkRcStyle *rc;
251
263
    gint i;
252
264
 
253
265
    if (global->timeout_id)
301
313
                       GTK_WIDGET(global->monitor->label),
302
314
                       FALSE, FALSE, 0);
303
315
 
304
 
    gtk_container_set_border_width(GTK_CONTAINER(global->monitor->box), 4);
 
316
    gtk_container_set_border_width(GTK_CONTAINER(global->monitor->box), 2);
305
317
    gtk_widget_show(GTK_WIDGET(global->monitor->box));
306
318
 
307
319
    for (i = 0; i < SUM; i++)
308
320
    {
309
 
        rc = gtk_widget_get_modifier_style(GTK_WIDGET(global->monitor->status[i]));
310
 
        if (!rc) 
311
 
        {
312
 
            rc = gtk_rc_style_new();
313
 
        }
314
 
        else
315
 
        {
316
 
            rc->color_flags[GTK_STATE_PRELIGHT] |= GTK_RC_BG;
317
 
            rc->bg[GTK_STATE_PRELIGHT] =
318
 
                global->monitor->options.color[i];
319
 
        }
 
321
        gtk_widget_modify_bg(GTK_WIDGET(global->monitor->status[i]),
 
322
                             GTK_STATE_PRELIGHT,
 
323
                             &global->monitor->options.color[i]);
 
324
        gtk_widget_modify_bg(GTK_WIDGET(global->monitor->status[i]),
 
325
                             GTK_STATE_SELECTED,
 
326
                             &global->monitor->options.color[i]);
 
327
        gtk_widget_modify_base(GTK_WIDGET(global->monitor->status[i]),
 
328
                               GTK_STATE_SELECTED,
 
329
                               &global->monitor->options.color[i]);
320
330
 
321
 
        gtk_widget_modify_style(GTK_WIDGET(global->monitor->status[i]), rc);
322
331
        gtk_widget_show(GTK_WIDGET(global->monitor->status[i]));
323
332
 
324
333
        gtk_box_pack_start(GTK_BOX(global->monitor->box),
334
343
    run_update( global );
335
344
}
336
345
 
 
346
/* ---------------------------------------------------------------------------------------------- */
 
347
static gboolean tooltip_cb(GtkWidget *widget, gint x, gint y, gboolean keyboard, GtkTooltip *tooltip, t_global_monitor *global)
 
348
{
 
349
        gtk_tooltip_set_custom(tooltip, global->tooltip_text);
 
350
        return TRUE;
 
351
}
337
352
 
338
353
/* ---------------------------------------------------------------------------------------------- */
339
354
static void monitor_free(XfcePanelPlugin *plugin, t_global_monitor *global)
347
362
    {
348
363
        g_free(global->monitor->options.label_text);
349
364
    }
 
365
 
 
366
    gtk_widget_destroy(global->tooltip_text);
 
367
 
350
368
    g_free(global);
351
369
    
352
370
    close_netload( &(global->monitor->data) );
362
380
    global = g_new(t_global_monitor, 1);
363
381
    global->timeout_id = 0;
364
382
    global->ebox = gtk_event_box_new();
 
383
    gtk_widget_set_has_tooltip(global->ebox, TRUE);
 
384
    g_signal_connect(global->ebox, "query-tooltip", G_CALLBACK(tooltip_cb), global);
365
385
    gtk_widget_show(global->ebox);
366
386
    global->box = NULL;
367
387
 
 
388
    global->tooltip_text = gtk_label_new(NULL);
 
389
    g_object_ref(global->tooltip_text);
 
390
 
368
391
    global->plugin = plugin;
369
392
    xfce_panel_plugin_add_action_widget (plugin, global->ebox);
370
393
 
371
 
    if (!tooltips) 
372
 
    {
373
 
        tooltips = gtk_tooltips_new();
374
 
    }
375
 
 
376
394
    global->monitor = g_new(t_monitor, 1);
377
395
    global->monitor->options.label_text = g_strdup(DEFAULT_TEXT);
378
396
    global->monitor->options.network_device = g_strdup("");
403
421
/* ---------------------------------------------------------------------------------------------- */
404
422
static void setup_monitor(t_global_monitor *global, gboolean supress_warnings)
405
423
{
406
 
    GtkRcStyle *rc;
407
424
    gint i;
408
425
 
409
426
    gtk_widget_hide(GTK_WIDGET(global->monitor->box));
413
430
 
414
431
    for (i = 0; i < SUM; i++)
415
432
    {
416
 
        gtk_widget_hide(GTK_WIDGET(global->monitor->status[i]));
417
 
        rc = gtk_widget_get_modifier_style(GTK_WIDGET(global->monitor->status[i]));
418
 
        
419
 
        if (!rc) {
420
 
            rc = gtk_rc_style_new();
421
 
        } else {
422
 
            /* to free the style safely in any case */
423
 
            gtk_rc_style_ref(rc);
424
 
        }
425
 
                
426
 
        if (rc) {
427
 
            rc->color_flags[GTK_STATE_PRELIGHT] |= GTK_RC_BG;
428
 
            rc->color_flags[GTK_STATE_SELECTED] |= GTK_RC_BASE;
429
 
            rc->bg[GTK_STATE_PRELIGHT] = global->monitor->options.color[i];
430
 
            rc->base[GTK_STATE_SELECTED] = global->monitor->options.color[i];
431
 
            
432
 
            gtk_widget_modify_style(GTK_WIDGET(global->monitor->status[i]), rc);
433
 
            gtk_rc_style_unref(rc);
434
 
        }
435
 
        
436
 
        gtk_widget_show(GTK_WIDGET(global->monitor->status[i]));
 
433
        gtk_widget_modify_bg(GTK_WIDGET(global->monitor->status[i]),
 
434
                             GTK_STATE_PRELIGHT,
 
435
                             &global->monitor->options.color[i]);
 
436
        gtk_widget_modify_bg(GTK_WIDGET(global->monitor->status[i]),
 
437
                             GTK_STATE_SELECTED,
 
438
                             &global->monitor->options.color[i]);
 
439
        gtk_widget_modify_base(GTK_WIDGET(global->monitor->status[i]),
 
440
                               GTK_STATE_SELECTED,
 
441
                               &global->monitor->options.color[i]);
437
442
        
438
443
        /* Maximum */
439
444
        if( global->monitor->options.auto_max )
595
600
        if (xfce_panel_plugin_get_orientation (plugin) == GTK_ORIENTATION_HORIZONTAL)
596
601
        {
597
602
            gtk_widget_set_size_request(GTK_WIDGET(global->monitor->status[i]),
598
 
                    BORDER, size - 4);
 
603
                    BORDER, size - BORDER);
599
604
        }
600
605
        else
601
606
        {
602
607
            gtk_widget_set_size_request(GTK_WIDGET(global->monitor->status[i]),
603
 
                    size - 4, BORDER);
 
608
                    size - BORDER, BORDER);
604
609
        }
605
610
    }
606
611
    PRINT_DBG("monitor_set_size");
836
841
    
837
842
    xfce_panel_plugin_block_menu (plugin);
838
843
    
839
 
    dlg = gtk_dialog_new_with_buttons (_("Edit Properties"), 
840
 
                GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
841
 
                GTK_DIALOG_DESTROY_WITH_PARENT |
842
 
                GTK_DIALOG_NO_SEPARATOR,
843
 
                GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
844
 
                NULL);
 
844
    dlg = xfce_titled_dialog_new_with_buttons (_("Network Monitor"), NULL,
 
845
                                               GTK_DIALOG_NO_SEPARATOR,
 
846
                                               GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
 
847
                                               NULL);
845
848
    
 
849
    gtk_window_set_icon_name (GTK_WINDOW (dlg), "xfce4-settings");
846
850
    g_signal_connect (dlg, "response", G_CALLBACK (monitor_dialog_response),
847
851
                      global);
848
852
 
849
 
    gtk_container_set_border_width (GTK_CONTAINER (dlg), 2);
850
 
    
851
853
    global->opt_dialog = dlg;
852
854
    
853
 
    header = xfce_create_header (NULL, _("Network Monitor"));
854
 
    gtk_widget_set_size_request (GTK_BIN (header)->child, -1, 32);
855
 
    gtk_container_set_border_width (GTK_CONTAINER (header), BORDER - 2);
856
 
    gtk_widget_show (header);
857
 
    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), header, FALSE, TRUE, 0);
858
 
    
859
855
    global_vbox = GTK_BOX (gtk_vbox_new(FALSE, BORDER));
860
856
    gtk_container_set_border_width (GTK_CONTAINER (global_vbox), BORDER - 2);
861
857
    gtk_widget_show(GTK_WIDGET (global_vbox));