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
* -------------------------------------------------------------------------------------------------
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.
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.
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)
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
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.
16
20
* -------------------------------------------------------------------------------------------------
144
if (!get_interface_up(&(global->monitor->data)))
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);
141
154
get_current_netload( &(global->monitor->data), &(net[IN]), &(net[OUT]), &(net[TOT]) );
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);
301
313
GTK_WIDGET(global->monitor->label),
302
314
FALSE, FALSE, 0);
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));
307
319
for (i = 0; i < SUM; i++)
309
rc = gtk_widget_get_modifier_style(GTK_WIDGET(global->monitor->status[i]));
312
rc = gtk_rc_style_new();
316
rc->color_flags[GTK_STATE_PRELIGHT] |= GTK_RC_BG;
317
rc->bg[GTK_STATE_PRELIGHT] =
318
global->monitor->options.color[i];
321
gtk_widget_modify_bg(GTK_WIDGET(global->monitor->status[i]),
323
&global->monitor->options.color[i]);
324
gtk_widget_modify_bg(GTK_WIDGET(global->monitor->status[i]),
326
&global->monitor->options.color[i]);
327
gtk_widget_modify_base(GTK_WIDGET(global->monitor->status[i]),
329
&global->monitor->options.color[i]);
321
gtk_widget_modify_style(GTK_WIDGET(global->monitor->status[i]), rc);
322
331
gtk_widget_show(GTK_WIDGET(global->monitor->status[i]));
324
333
gtk_box_pack_start(GTK_BOX(global->monitor->box),
334
343
run_update( global );
346
/* ---------------------------------------------------------------------------------------------- */
347
static gboolean tooltip_cb(GtkWidget *widget, gint x, gint y, gboolean keyboard, GtkTooltip *tooltip, t_global_monitor *global)
349
gtk_tooltip_set_custom(tooltip, global->tooltip_text);
338
353
/* ---------------------------------------------------------------------------------------------- */
339
354
static void monitor_free(XfcePanelPlugin *plugin, t_global_monitor *global)
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;
388
global->tooltip_text = gtk_label_new(NULL);
389
g_object_ref(global->tooltip_text);
368
391
global->plugin = plugin;
369
392
xfce_panel_plugin_add_action_widget (plugin, global->ebox);
373
tooltips = gtk_tooltips_new();
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("");
414
431
for (i = 0; i < SUM; i++)
416
gtk_widget_hide(GTK_WIDGET(global->monitor->status[i]));
417
rc = gtk_widget_get_modifier_style(GTK_WIDGET(global->monitor->status[i]));
420
rc = gtk_rc_style_new();
422
/* to free the style safely in any case */
423
gtk_rc_style_ref(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];
432
gtk_widget_modify_style(GTK_WIDGET(global->monitor->status[i]), rc);
433
gtk_rc_style_unref(rc);
436
gtk_widget_show(GTK_WIDGET(global->monitor->status[i]));
433
gtk_widget_modify_bg(GTK_WIDGET(global->monitor->status[i]),
435
&global->monitor->options.color[i]);
436
gtk_widget_modify_bg(GTK_WIDGET(global->monitor->status[i]),
438
&global->monitor->options.color[i]);
439
gtk_widget_modify_base(GTK_WIDGET(global->monitor->status[i]),
441
&global->monitor->options.color[i]);
439
444
if( global->monitor->options.auto_max )
595
600
if (xfce_panel_plugin_get_orientation (plugin) == GTK_ORIENTATION_HORIZONTAL)
597
602
gtk_widget_set_size_request(GTK_WIDGET(global->monitor->status[i]),
603
BORDER, size - BORDER);
602
607
gtk_widget_set_size_request(GTK_WIDGET(global->monitor->status[i]),
608
size - BORDER, BORDER);
606
611
PRINT_DBG("monitor_set_size");
837
842
xfce_panel_plugin_block_menu (plugin);
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
dlg = xfce_titled_dialog_new_with_buttons (_("Network Monitor"), NULL,
845
GTK_DIALOG_NO_SEPARATOR,
846
GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
849
gtk_window_set_icon_name (GTK_WINDOW (dlg), "xfce4-settings");
846
850
g_signal_connect (dlg, "response", G_CALLBACK (monitor_dialog_response),
849
gtk_container_set_border_width (GTK_CONTAINER (dlg), 2);
851
853
global->opt_dialog = dlg;
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);
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));