[Xfce4-commits] [panel-plugins/xfce4-hardware-monitor-plugin] 01/03: Allow users to configure interface names for the different types
noreply at xfce.org
noreply at xfce.org
Sun Jun 21 18:33:41 CEST 2015
This is an automated email from the git hooks/post-receive script.
omegaphil pushed a commit to branch omegaphil/configurable-interface-names
in repository panel-plugins/xfce4-hardware-monitor-plugin.
commit a641c442d15a069790226933c620616e69f18483
Author: OmegaPhil <OmegaPhil at startmail.com>
Date: Sun Jun 21 14:35:46 2015 +0100
Allow users to configure interface names for the different types
This is a large commit which:
o Reworks settings usage to make it obvious when read or read/write
settings files are used.
o Creates user-configurable mappings of interface types to interface
names to allow for distro differences in naming, fixes 'Wireless
interface name hardcoded, Arch interface names different (connman?)' /
https://bugzilla.xfce.org/show_bug.cgi?id=11881
---
src/applet.cpp | 84 +-
src/applet.hpp | 1 -
src/bar-view.cpp | 18 +-
src/choose-monitor-window.cpp | 336 +++-
src/choose-monitor-window.hpp | 40 +-
src/column-view.cpp | 18 +-
src/curve-view.cpp | 18 +-
src/flame-view.cpp | 18 +-
src/helpers.cpp | 19 +-
src/helpers.hpp | 15 +-
src/monitor-impls.cpp | 683 +++++--
src/monitor-impls.hpp | 89 +-
src/monitor.hpp | 16 +-
src/preferences-window.cpp | 94 +-
src/ui.glade | 4226 ++++++++++++++++++-----------------------
15 files changed, 2977 insertions(+), 2698 deletions(-)
diff --git a/src/applet.cpp b/src/applet.cpp
index 19eac7c..255db7e 100644
--- a/src/applet.cpp
+++ b/src/applet.cpp
@@ -122,16 +122,16 @@ void save_monitors(Applet *applet)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Looping for all monitors and calling save on each
for (monitor_iter i = applet->monitors.begin(),
end = applet->monitors.end(); i != end; ++i)
- (*i)->save(settings);
+ (*i)->save(settings_w);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -167,30 +167,30 @@ Applet::Applet(XfcePanelPlugin *plugin)
next_color(0)
{
// Search for settings file
- XfceRc* settings = NULL;
+ XfceRc* settings_ro = NULL;
gchar* file = xfce_panel_plugin_lookup_rc_file(panel_applet);
if (file)
{
- // One exists - loading readonly settings
- settings = xfce_rc_simple_open(file, true);
+ // One exists - loading settings
+ settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_ro, "[NULL]");
- icon_path = xfce_rc_read_entry(settings, "icon-path", icon_path.c_str());
- viewer_type = xfce_rc_read_entry(settings, "viewer_type",
+ icon_path = xfce_rc_read_entry(settings_ro, "icon-path", icon_path.c_str());
+ viewer_type = xfce_rc_read_entry(settings_ro, "viewer_type",
viewer_type.c_str());
- viewer_size = xfce_rc_read_int_entry(settings, "viewer_size",
+ viewer_size = xfce_rc_read_int_entry(settings_ro, "viewer_size",
viewer_size);
- viewer_font = xfce_rc_read_entry(settings, "viewer_font",
+ viewer_font = xfce_rc_read_entry(settings_ro, "viewer_font",
viewer_font.c_str());
- background_color = xfce_rc_read_int_entry(settings, "background_color",
+ background_color = xfce_rc_read_int_entry(settings_ro, "background_color",
background_color);
- use_background_color = xfce_rc_read_bool_entry(settings,
+ use_background_color = xfce_rc_read_bool_entry(settings_ro,
"use_background_color", use_background_color);
- next_color = xfce_rc_read_int_entry(settings, "next_color",
+ next_color = xfce_rc_read_int_entry(settings_ro, "next_color",
next_color);
}
@@ -216,13 +216,13 @@ Applet::Applet(XfcePanelPlugin *plugin)
* seems that it needs to be done in or after the mainloop kicks off */
// Loading up monitors
- monitor_seq mon = load_monitors(settings);
+ monitor_seq mon = load_monitors(settings_ro, plugin);
for (monitor_iter i = mon.begin(), end = mon.end(); i != end; ++i)
add_monitor(*i);
// All settings loaded
- if (settings)
- xfce_rc_close(settings);
+ if (settings_ro)
+ xfce_rc_close(settings_ro);
/* Connect plugin signals to functions - since I'm not really interested
* in the plugin but the applet pointer, swapped results in the signal
@@ -427,17 +427,17 @@ unsigned int Applet::get_fg_color()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Saving next_color
- xfce_rc_write_int_entry(settings, "next_color", next_color);
+ xfce_rc_write_int_entry(settings_w, "next_color", next_color);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -539,8 +539,8 @@ void Applet::add_monitor(Monitor *monitor)
add_sync_for(monitor);
monitors.push_back(monitor);
- /* Read and write config locations and the open call are be different
- * in XFCE4 - hence the duplication here */
+ /* Read and write config locations and the open call are different in XFCE4 -
+ * hence the duplication here */
/* Checking if monitor has a defined settings directory and therefore
* settings to load */
@@ -555,14 +555,14 @@ void Applet::add_monitor(Monitor *monitor)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Saving monitor
- monitor->save(settings);
+ monitor->save(settings_w);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -581,14 +581,14 @@ void Applet::add_monitor(Monitor *monitor)
if (file)
{
// One exists - loading readonly settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
// Load settings for monitor
- monitor->load(settings);
+ monitor->load(settings_ro);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_ro);
}
else
{
@@ -615,16 +615,16 @@ void Applet::remove_monitor(Monitor *monitor)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Removing settings group associated with the monitor if it exists
- if (xfce_rc_has_group(settings, monitor->get_settings_dir().c_str()))
- xfce_rc_delete_group(settings, monitor->get_settings_dir().c_str(),
+ if (xfce_rc_has_group(settings_w, monitor->get_settings_dir().c_str()))
+ xfce_rc_delete_group(settings_w, monitor->get_settings_dir().c_str(),
FALSE);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -660,14 +660,14 @@ void Applet::replace_monitor(Monitor *prev_mon, Monitor *new_mon)
if (file)
{
// One exists - loading readonly settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
// Load settings
- new_mon->load(settings);
+ new_mon->load(settings_ro);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_ro);
}
else
{
@@ -682,14 +682,14 @@ void Applet::replace_monitor(Monitor *prev_mon, Monitor *new_mon)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Saving settings
- new_mon->save(settings);
+ new_mon->save(settings_w);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -732,15 +732,15 @@ Glib::ustring Applet::find_empty_monitor_dir()
if (file)
{
// One exists - loading readonly settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
do {
mon_dir = String::ucompose("%1", c++);
- } while (xfce_rc_has_group(settings, mon_dir.c_str()));
+ } while (xfce_rc_has_group(settings_ro, mon_dir.c_str()));
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_ro);
}
else
{
diff --git a/src/applet.hpp b/src/applet.hpp
index 7eb976d..9b2901b 100644
--- a/src/applet.hpp
+++ b/src/applet.hpp
@@ -39,7 +39,6 @@ extern "C"
#include <libxfce4panel/libxfce4panel.h>
}
-
#include "monitor.hpp"
class PreferencesWindow;
diff --git a/src/bar-view.cpp b/src/bar-view.cpp
index 9394582..3903de3 100644
--- a/src/bar-view.cpp
+++ b/src/bar-view.cpp
@@ -230,20 +230,20 @@ void BarView::do_attach(Monitor *monitor)
if (file)
{
// One exists - loading readonly settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
// Loading color
- xfce_rc_set_group(settings, dir.c_str());
- if (xfce_rc_has_entry(settings, "fill_color"))
+ xfce_rc_set_group(settings_ro, dir.c_str());
+ if (xfce_rc_has_entry(settings_ro, "fill_color"))
{
- fill_color = xfce_rc_read_int_entry(settings, "fill_color",
+ fill_color = xfce_rc_read_int_entry(settings_ro, "fill_color",
applet->get_fg_color());
color_missing = false;
}
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_ro);
}
/* Saving color if it was not recorded. XFCE4 configuration is done in
@@ -259,15 +259,15 @@ void BarView::do_attach(Monitor *monitor)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Saving color
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_int_entry(settings, "fill_color", int(fill_color));
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_int_entry(settings_w, "fill_color", int(fill_color));
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
diff --git a/src/choose-monitor-window.cpp b/src/choose-monitor-window.cpp
index 3da0328..63d8cb0 100644
--- a/src/choose-monitor-window.cpp
+++ b/src/choose-monitor-window.cpp
@@ -21,6 +21,11 @@
#include <config.h>
+#include <sstream>
+
+#include <gtkmm/messagedialog.h>
+#include <gtkmm/stock.h> // For creating a button image from stock
+
#include "choose-monitor-window.hpp"
#include "gui-helpers.hpp"
#include "monitor-impls.hpp"
@@ -28,14 +33,18 @@
#include "ucompose.hpp"
-ChooseMonitorWindow::ChooseMonitorWindow(Glib::RefPtr<Gdk::Pixbuf> icon,
+// Static intialisation
+ChooseMonitorWindow::NetworkInterfacesNamesCols ChooseMonitorWindow::nc;
+
+ChooseMonitorWindow::ChooseMonitorWindow(XfcePanelPlugin* panel_applet_local,
Gtk::Window &parent)
+ : panel_applet(panel_applet_local)
{
ui = get_glade_xml("choose_monitor_window");
ui->get_widget("choose_monitor_window", window);
window->set_type_hint(Gdk::WINDOW_TYPE_HINT_DIALOG);
- window->set_icon(icon);
+ window->set_icon(parent.get_icon());
window->set_transient_for(parent);
ui->get_widget("device_notebook", device_notebook);
@@ -62,6 +71,17 @@ ChooseMonitorWindow::ChooseMonitorWindow(Glib::RefPtr<Gdk::Pixbuf> icon,
ui->get_widget("network_type_optionmenu", network_type_optionmenu);
ui->get_widget("network_direction_optionmenu", network_direction_optionmenu);
+ ui->get_widget("network_interfaces_treeview", network_interfaces_treeview);
+
+ /* Need special code here to set the desired stock icon as glade doesn't support
+ * setting a stock icon but custom text, and as soon as you change the label
+ * on a stock button the icon is removed! */
+ ui->get_widget("network_interfaces_restore_defaults_button",
+ network_interfaces_restore_defaults_button);
+ Gtk::Image *stock_image = Gtk::manage(new Gtk::Image(
+ Gtk::Stock::REVERT_TO_SAVED,
+ Gtk::ICON_SIZE_BUTTON));
+ network_interfaces_restore_defaults_button->set_image(*stock_image);
ui->get_widget("temperature_box", temperature_box);
ui->get_widget("temperature_options", temperature_options);
@@ -83,6 +103,10 @@ ChooseMonitorWindow::ChooseMonitorWindow(Glib::RefPtr<Gdk::Pixbuf> icon,
.connect(sigc::mem_fun(*this, &ChooseMonitorWindow::
on_network_load_radiobutton_toggled));
+ network_interfaces_restore_defaults_button->signal_clicked()
+ .connect(sigc::mem_fun(*this, &ChooseMonitorWindow::
+ on_network_interfaces_restore_defaults_button_clicked));
+
temperature_radiobutton->signal_toggled()
.connect(sigc::mem_fun(*this, &ChooseMonitorWindow::
on_temperature_radiobutton_toggled));
@@ -146,7 +170,7 @@ ChooseMonitorWindow::ChooseMonitorWindow(Glib::RefPtr<Gdk::Pixbuf> icon,
fan_speed_optionmenu->set_menu(*menu);
menu->show_all();
}
-
+
// connect close operations
Gtk::Button *help_button;
ui->get_widget("help_button", help_button);
@@ -160,26 +184,26 @@ ChooseMonitorWindow::ChooseMonitorWindow(Glib::RefPtr<Gdk::Pixbuf> icon,
ChooseMonitorWindow::~ChooseMonitorWindow()
{
- window->hide();
+ window->hide();
}
-Monitor *ChooseMonitorWindow::run(XfcePanelPlugin* panel_applet,
- const Glib::ustring &mon_dir)
+Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir)
{
- // setup dialog
- if (!mon_dir.empty())
+ // Set up monitor
+ // Search for settings file
+ gchar* file = xfce_panel_plugin_lookup_rc_file(panel_applet);
+ if (file)
{
- // Search for settings file
- gchar* file = xfce_panel_plugin_lookup_rc_file(panel_applet);
-
- if (file)
+ // Loading settings
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
+ g_free(file);
+
+ // Loading existing monitor settings if this is a change operation
+ if (!mon_dir.empty())
{
- // Loading settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
- g_free(file);
- xfce_rc_set_group(settings, mon_dir.c_str());
- Glib::ustring type = xfce_rc_read_entry(settings, "type", "");
+ xfce_rc_set_group(settings_ro, mon_dir.c_str());
+ Glib::ustring type = xfce_rc_read_entry(settings_ro, "type", "");
if (type == "memory_usage")
{
@@ -219,9 +243,9 @@ Monitor *ChooseMonitorWindow::run(XfcePanelPlugin* panel_applet,
}
// Fill in cpu info
- if (xfce_rc_has_entry(settings, "cpu_no"))
+ if (xfce_rc_has_entry(settings_ro, "cpu_no"))
{
- int no = xfce_rc_read_int_entry(settings, "cpu_no", -1);
+ int no = xfce_rc_read_int_entry(settings_ro, "cpu_no", -1);
if (no >= 0 && no < CpuUsageMonitor::max_no_cpus) {
one_cpu_radiobutton->set_active();
cpu_no_spinbutton->set_value(no + 1);
@@ -232,47 +256,67 @@ Monitor *ChooseMonitorWindow::run(XfcePanelPlugin* panel_applet,
}
// Fill in disk usage info
- if (xfce_rc_has_entry(settings, "mount_dir"))
+ if (xfce_rc_has_entry(settings_ro, "mount_dir"))
{
- Glib::ustring mount_dir = xfce_rc_read_entry(settings,
+ Glib::ustring mount_dir = xfce_rc_read_entry(settings_ro,
"mount_dir", "");
mount_dir_entry->set_text(mount_dir);
}
- if (xfce_rc_has_entry(settings, "show_free"))
+ if (xfce_rc_has_entry(settings_ro, "show_free"))
{
- bool show_free = xfce_rc_read_bool_entry(settings,
+ bool show_free = xfce_rc_read_bool_entry(settings_ro,
"show_free", false);
show_free_checkbutton->set_active(show_free);
}
// Fill in network load info
- if (xfce_rc_has_entry(settings, "interface"))
+ if (xfce_rc_has_entry(settings_ro, "interface_type"))
{
- Glib::ustring interface = xfce_rc_read_entry(settings,
- "interface", "eth");
-
- int interface_no = xfce_rc_read_int_entry(settings,
- "interface_no", 0);
-
- if (interface == "eth" && interface_no == 0)
- network_type_optionmenu->set_history(0);
- else if (interface == "eth" && interface_no == 1)
- network_type_optionmenu->set_history(1);
- else if (interface == "eth" && interface_no == 2)
- network_type_optionmenu->set_history(2);
- else if (interface == "ppp")
- network_type_optionmenu->set_history(3);
- else if (interface == "slip")
- network_type_optionmenu->set_history(4);
- else if (interface == "wlan")
- network_type_optionmenu->set_history(5);
- else
- network_type_optionmenu->set_history(0);
- }
+ /* By the time this code is reached, deprecated configuration will be
+ * updated so no need to convert stuff etc */
+ NetworkLoadMonitor::InterfaceType interface_type = static_cast<NetworkLoadMonitor::InterfaceType>(xfce_rc_read_int_entry(
+ settings_ro, "interface_type",
+ NetworkLoadMonitor::ethernet_first));
+ switch (interface_type)
+ {
+ case NetworkLoadMonitor::ethernet_first:
+ network_type_optionmenu->set_history(0);
+ break;
+
+ case NetworkLoadMonitor::ethernet_second:
+ network_type_optionmenu->set_history(1);
+ break;
+
+ case NetworkLoadMonitor::ethernet_third:
+ network_type_optionmenu->set_history(2);
+ break;
+
+ case NetworkLoadMonitor::modem:
+ network_type_optionmenu->set_history(3);
+ break;
+
+ case NetworkLoadMonitor::serial_link:
+ network_type_optionmenu->set_history(4);
+ break;
+
+ case NetworkLoadMonitor::wireless_first:
+ network_type_optionmenu->set_history(5);
+ break;
+
+ case NetworkLoadMonitor::wireless_second:
+ network_type_optionmenu->set_history(6);
+ break;
+
+ case NetworkLoadMonitor::wireless_third:
+ network_type_optionmenu->set_history(7);
+ break;
+
+ default:
+ network_type_optionmenu->set_history(0);
+ break;
+ }
- if (xfce_rc_has_entry(settings, "interface_direction"))
- {
- int direction = xfce_rc_read_int_entry(settings,
+ int direction = xfce_rc_read_int_entry(settings_ro,
"interface_direction", NetworkLoadMonitor::all_data);
if (direction == NetworkLoadMonitor::incoming_data)
@@ -283,24 +327,58 @@ Monitor *ChooseMonitorWindow::run(XfcePanelPlugin* panel_applet,
network_direction_optionmenu->set_history(0);
}
- int temperature_no = xfce_rc_read_int_entry(settings,
+ int temperature_no = xfce_rc_read_int_entry(settings_ro,
"temperature_no", 0);
temperature_optionmenu->set_history(temperature_no);
+
+ xfce_rc_close(settings_ro);
}
else
{
- // No configuration file present - default setting?
+ // No monitor present so an addition - defaults
device_notebook->set_current_page(0);
// FIXME: use schema?
cpu_usage_radiobutton->set_active();
}
+
+ /* Populate interface type interface names advanced settings - interface
+ * name column needs to be editable + trigger validation on entry - note
+ * that append_column returns the number of columns present rather than
+ * the genuine ordinal to the last column, hence -1
+ * This is here as it is independent of monitors but dependent on a settings
+ * file being available, and needs to run both when a monitor does and doesn't
+ * exist */
+ network_interfaces_names_store = Gtk::ListStore::create(nc);
+ network_interfaces_treeview->set_model(network_interfaces_names_store);
+ network_interfaces_treeview->append_column(_("Interface Type"),
+ nc.interface_type);
+ int column_num = network_interfaces_treeview
+ ->append_column(_("Interface Name"), nc.interface_name) - 1;
+
+ // Documentation asks for dynamic_cast here
+ Gtk::CellRendererText *cell_renderer = dynamic_cast<Gtk::CellRendererText*>(network_interfaces_treeview
+ ->get_column_cell_renderer(column_num));
+ cell_renderer->property_editable() = true;
+ cell_renderer->signal_edited().connect(
+ sigc::mem_fun(*this, &ChooseMonitorWindow::
+ on_network_interface_name_edited));
+
+ for (int i = 0; i < NetworkLoadMonitor::NUM_INTERFACE_TYPES; ++i)
+ {
+ NetworkLoadMonitor::InterfaceType interface_type =
+ static_cast<NetworkLoadMonitor::InterfaceType>(i);
+ store_iter iter = network_interfaces_names_store->append();
+ (*iter)[nc.interface_type] = NetworkLoadMonitor::
+ interface_type_to_string(interface_type, false);
+ (*iter)[nc.interface_name] = NetworkLoadMonitor::
+ get_interface_name(interface_type, panel_applet);
+ }
}
if (cpu_usage_radiobutton->get_active())
cpu_usage_radiobutton->toggled(); // send a signal
-
// then ask the user
int response;
@@ -327,41 +405,10 @@ Monitor *ChooseMonitorWindow::run(XfcePanelPlugin* panel_applet,
// FIXME: check that mount_dir is valid
mon = new DiskUsageMonitor(mount_dir, show_free);
}
- else if (network_load_radiobutton->get_active()) {
- Glib::ustring interface;
- int interface_no;
-
- switch (network_type_optionmenu->get_history()) {
- case 1:
- interface = "eth";
- interface_no = 1;
- break;
-
- case 2:
- interface = "eth";
- interface_no = 2;
- break;
-
- case 3:
- interface = "ppp";
- interface_no = 0;
- break;
-
- case 4:
- interface = "slip";
- interface_no = 0;
- break;
-
- case 5:
- interface = "wlan";
- interface_no = 0;
- break;
-
- default:
- interface = "eth";
- interface_no = 0;
- break;
- }
+ else if (network_load_radiobutton->get_active())
+ {
+ int selected_type = network_type_optionmenu->get_history();
+ NetworkLoadMonitor::InterfaceType interface_type = static_cast<NetworkLoadMonitor::InterfaceType>(selected_type);
NetworkLoadMonitor::Direction dir;
switch (network_direction_optionmenu->get_history()) {
@@ -378,7 +425,7 @@ Monitor *ChooseMonitorWindow::run(XfcePanelPlugin* panel_applet,
break;
}
- mon = new NetworkLoadMonitor(interface, interface_no, dir);
+ mon = new NetworkLoadMonitor(interface_type, dir, panel_applet);
}
else if (temperature_radiobutton->get_active())
mon = new TemperatureMonitor(temperature_optionmenu->get_history());
@@ -408,6 +455,115 @@ void ChooseMonitorWindow::on_disk_usage_radiobutton_toggled()
= disk_usage_radiobutton->get_active();
}
+void ChooseMonitorWindow::on_fan_speed_radiobutton_toggled()
+{
+ fan_speed_options->property_sensitive()
+ = fan_speed_radiobutton->get_active();
+}
+
+/* Triggered when user edits a network interface name after revealing the
+ * advanced widgets */
+void ChooseMonitorWindow::on_network_interface_name_edited(
+ const Glib::ustring& path, const Glib::ustring& new_text)
+{
+ // Debug code
+ /*std::cout << "Network interface name edit detected: path: " << path <<
+ ", new_text: " << new_text << "\n";*/
+
+ // Obtaining interface type from path
+ int inter_type_num = 0;
+ std::stringstream convert(path);
+ convert >> inter_type_num;
+ NetworkLoadMonitor::InterfaceType inter_type(
+ static_cast<NetworkLoadMonitor::InterfaceType>(inter_type_num));
+
+ /* Making sure the user is OK with specifying an invalid network interface (
+ * i.e. it may appear later) */
+ if (!NetworkLoadMonitor::interface_exists(new_text))
+ {
+ Glib::ustring interface_name = NetworkLoadMonitor::
+ interface_type_to_string(inter_type, false),
+ msg = String
+ ::ucompose(_("Specified interface '%1' of type '%2' does not currently "
+ "exist - do you still want to proceed?"),
+ new_text, interface_name);
+
+ /* See helpers.hpp - tried to host a generic warning dialog implementation
+ * there but got endless include bullshit */
+ Gtk::MessageDialog d(msg, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_YES_NO);
+ d.set_modal();
+ d.set_title(_("Change Interface Name"));
+ d.set_icon(window->get_icon());
+ if (d.run() != Gtk::RESPONSE_YES)
+ return;
+ }
+
+ // Fetching pointer to row and setting column value
+ store_iter iter = network_interfaces_names_store->get_iter(path);
+ (*iter)[nc.interface_name] = new_text;
+
+ // Setting and saving the real value
+ NetworkLoadMonitor::set_interface_name(inter_type, new_text);
+ gchar* file = xfce_panel_plugin_save_location(panel_applet, true);
+ if (file)
+ {
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
+ g_free(file);
+ NetworkLoadMonitor::save_interfaces(settings_w);
+ xfce_rc_close(settings_w);
+ }
+ else
+ {
+ // Unable to obtain writeable config file - informing user
+ std::cerr << _("Unable to obtain writeable config file path in order to"
+ "save interface names via ChooseMonitorWindow::"
+ "on_network_interface_name_edited!\n");
+ }
+}
+
+void ChooseMonitorWindow::on_network_interfaces_restore_defaults_button_clicked()
+{
+ // Making sure user wants to restore defaults
+ Glib::ustring msg(_("Are you sure you want to overwrite the current network "
+ "interface names with defaults?"));
+
+ /* See helpers.hpp - tried to host a generic warning dialog implementation
+ * there but got endless include bullshit */
+ Gtk::MessageDialog d(msg, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_YES_NO);
+ d.set_modal();
+ d.set_title(_("Restore Default Interface Names"));
+ d.set_icon(window->get_icon());
+ if (d.run() != Gtk::RESPONSE_YES)
+ return;
+
+ // Restoring defaults to model
+ store_iter iter = network_interfaces_names_store->get_iter("0");
+ NetworkLoadMonitor::InterfaceType interface_type;
+ for (int i = 0; i < NetworkLoadMonitor::NUM_INTERFACE_TYPES; ++i, ++iter)
+ {
+ interface_type = static_cast<NetworkLoadMonitor::InterfaceType>(i);
+ (*iter)[nc.interface_name] = NetworkLoadMonitor::
+ get_default_interface_name(interface_type);
+ }
+
+ // Updating storage vector and saving
+ gchar* file = xfce_panel_plugin_save_location(panel_applet, true);
+ if (file)
+ {
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
+ g_free(file);
+ NetworkLoadMonitor::restore_default_interface_names(settings_w);
+ xfce_rc_close(settings_w);
+ }
+ else
+ {
+ // Unable to obtain writeable config file - informing user
+ std::cerr << _("Unable to obtain writeable config file path in order to"
+ "save default interface names via ChooseMonitorWindow::"
+ "on_network_interfaces_restore_defaults_button_clicked!\n");
+ }
+}
+
void ChooseMonitorWindow::on_network_load_radiobutton_toggled()
{
network_load_options->property_sensitive()
@@ -420,12 +576,6 @@ void ChooseMonitorWindow::on_temperature_radiobutton_toggled()
= temperature_radiobutton->get_active();
}
-void ChooseMonitorWindow::on_fan_speed_radiobutton_toggled()
-{
- fan_speed_options->property_sensitive()
- = fan_speed_radiobutton->get_active();
-}
-
void ChooseMonitorWindow::on_help_button_clicked()
{
// FIXME: do something
diff --git a/src/choose-monitor-window.hpp b/src/choose-monitor-window.hpp
index 8555d54..416ee31 100644
--- a/src/choose-monitor-window.hpp
+++ b/src/choose-monitor-window.hpp
@@ -32,10 +32,12 @@
#include <gtkmm/checkbutton.h>
#include <gtkmm/dialog.h>
#include <gtkmm/entry.h>
+#include <gtkmm/liststore.h>
#include <gtkmm/notebook.h>
#include <gtkmm/optionmenu.h>
#include <gtkmm/radiobutton.h>
#include <gtkmm/spinbutton.h>
+#include <gtkmm/treeview.h>
#include <glibmm/ustring.h>
extern "C"
@@ -49,12 +51,14 @@ class Monitor;
class ChooseMonitorWindow: public sigc::trackable
{
public:
- ChooseMonitorWindow(Glib::RefPtr<Gdk::Pixbuf> icon, Gtk::Window &parent);
+
+ /* panel_applet is required here as the user can edit NetworkLoadMonitor
+ * interface names through a settings dialog, and this needs special saving */
+ ChooseMonitorWindow(XfcePanelPlugin* panel_applet_local, Gtk::Window &parent);
~ChooseMonitorWindow();
// given a monitor directory (may be ""), return a new monitor or 0
- Monitor *run(XfcePanelPlugin* panel_applet,
- const Glib::ustring &mon_dir);
+ Monitor *run(const Glib::ustring &mon_dir);
private:
Glib::RefPtr<Gnome::Glade::Xml> ui;
@@ -83,19 +87,43 @@ private:
Gtk::Box *network_load_options;
Gtk::OptionMenu *network_type_optionmenu;
Gtk::OptionMenu *network_direction_optionmenu;
+ Gtk::TreeView *network_interfaces_treeview;
+ Gtk::Button *network_interfaces_restore_defaults_button;
Gtk::Box *temperature_box, *temperature_options;
Gtk::OptionMenu *temperature_optionmenu;
Gtk::Box *fan_speed_box, *fan_speed_options;
Gtk::OptionMenu *fan_speed_optionmenu;
-
+
+ XfcePanelPlugin* panel_applet;
+
+ // For the advanced settings network interface name treeview
+ class NetworkInterfacesNamesCols: public Gtk::TreeModel::ColumnRecord
+ {
+ public:
+ Gtk::TreeModelColumn<Glib::ustring> interface_type;
+ Gtk::TreeModelColumn<Glib::ustring> interface_name;
+
+ NetworkInterfacesNamesCols() { add(interface_type); add(interface_name); }
+ };
+
+ /* Note that the example MonitorColumns implementation in preferences-window.hpp
+ * seems to maintain multiple static instances of the columns class, don't
+ * know why it isn't just a single static member like below */
+ static NetworkInterfacesNamesCols nc;
+
+ Glib::RefPtr<Gtk::ListStore> network_interfaces_names_store;
+ typedef Gtk::ListStore::iterator store_iter;
+
// GUI
void on_cpu_usage_radiobutton_toggled();
void on_disk_usage_radiobutton_toggled();
+ void on_fan_speed_radiobutton_toggled();
void on_network_load_radiobutton_toggled();
+ void on_network_interfaces_restore_defaults_button_clicked();
void on_temperature_radiobutton_toggled();
- void on_fan_speed_radiobutton_toggled();
-
+ void on_network_interface_name_edited(const Glib::ustring& path,
+ const Glib::ustring& new_text);
void on_help_button_clicked();
bool on_closed(GdkEventAny *);
};
diff --git a/src/column-view.cpp b/src/column-view.cpp
index a1c4e08..8e6116a 100644
--- a/src/column-view.cpp
+++ b/src/column-view.cpp
@@ -190,20 +190,20 @@ void ColumnView::do_attach(Monitor *monitor)
if (file)
{
// One exists - loading readonly settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
// Loading color
- xfce_rc_set_group(settings, dir.c_str());
- if (xfce_rc_has_entry(settings, "color"))
+ xfce_rc_set_group(settings_ro, dir.c_str());
+ if (xfce_rc_has_entry(settings_ro, "color"))
{
- color = xfce_rc_read_int_entry(settings, "color",
+ color = xfce_rc_read_int_entry(settings_ro, "color",
applet->get_fg_color());
color_missing = false;
}
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_ro);
}
/* Saving color if it was not recorded. XFCE4 configuration is done in
@@ -219,15 +219,15 @@ void ColumnView::do_attach(Monitor *monitor)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Saving color
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_int_entry(settings, "color", int(color));
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_int_entry(settings_w, "color", int(color));
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
diff --git a/src/curve-view.cpp b/src/curve-view.cpp
index e55873f..90d4670 100644
--- a/src/curve-view.cpp
+++ b/src/curve-view.cpp
@@ -176,20 +176,20 @@ void CurveView::do_attach(Monitor *monitor)
if (file)
{
// One exists - loading readonly settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
// Loading color
- xfce_rc_set_group(settings, dir.c_str());
- if (xfce_rc_has_entry(settings, "color"))
+ xfce_rc_set_group(settings_ro, dir.c_str());
+ if (xfce_rc_has_entry(settings_ro, "color"))
{
- color = xfce_rc_read_int_entry(settings, "color",
+ color = xfce_rc_read_int_entry(settings_ro, "color",
applet->get_fg_color());
color_missing = false;
}
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_ro);
}
/* Saving color if it was not recorded. XFCE4 configuration is done in
@@ -205,15 +205,15 @@ void CurveView::do_attach(Monitor *monitor)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Saving color
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_int_entry(settings, "color", int(color));
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_int_entry(settings_w, "color", int(color));
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
diff --git a/src/flame-view.cpp b/src/flame-view.cpp
index 1d4d058..29e5199 100644
--- a/src/flame-view.cpp
+++ b/src/flame-view.cpp
@@ -276,20 +276,20 @@ void FlameView::do_attach(Monitor *monitor)
if (file)
{
// One exists - loading readonly settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
// Loading color
- xfce_rc_set_group(settings, dir.c_str());
- if (xfce_rc_has_entry(settings, "color"))
+ xfce_rc_set_group(settings_ro, dir.c_str());
+ if (xfce_rc_has_entry(settings_ro, "color"))
{
- color = xfce_rc_read_int_entry(settings, "color",
+ color = xfce_rc_read_int_entry(settings_ro, "color",
applet->get_fg_color());
color_missing = false;
}
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_ro);
}
/* Saving color if it was not recorded. XFCE4 configuration is done in
@@ -305,15 +305,15 @@ void FlameView::do_attach(Monitor *monitor)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Saving color
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_int_entry(settings, "color", int(color));
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_int_entry(settings_w, "color", int(color));
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
diff --git a/src/helpers.cpp b/src/helpers.cpp
index 8d13102..4b9b7ac 100644
--- a/src/helpers.cpp
+++ b/src/helpers.cpp
@@ -1,7 +1,7 @@
/* Helper functions.
*
* Copyright (c) 2003 Ole Laursen.
- * Copyright (c) 2013 OmegaPhil (OmegaPhil at startmail.com)
+ * Copyright (c) 2013, 2015 OmegaPhil (OmegaPhil at startmail.com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -39,6 +39,23 @@ void fatal_error(const Glib::ustring &msg)
exit(1);
}
+// See header note for why buttons isn't a Gtk type
+/*
+int warning_dialog(const Glib::ustring &msg, const Glib::ustring &title,
+ Glib::RefPtr<Gdk::Pixbuf> icon, const int buttons)
+{
+ Gtk::ButtonsType buttons_type = static_cast<Gtk::ButtonsType>(buttons);
+
+ Gtk::MessageDialog d(msg, false, Gtk::MESSAGE_WARNING, buttons_type);
+
+ d.set_modal();
+ d.set_title(title);
+ d.set_icon(icon);
+
+ return d.run();
+}
+*/
+
Glib::ustring truncate_string(Glib::ustring s, unsigned int n)
{
// for when a string needs to be truncated
diff --git a/src/helpers.hpp b/src/helpers.hpp
index c49b974..329708c 100644
--- a/src/helpers.hpp
+++ b/src/helpers.hpp
@@ -1,7 +1,7 @@
/* Helper functions.
*
* Copyright (c) 2003 Ole Laursen.
- * Copyright (c) 2013 OmegaPhil (OmegaPhil at startmail.com)
+ * Copyright (c) 2013, 2015 OmegaPhil (OmegaPhil at startmail.com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -22,8 +22,13 @@
#ifndef HELPERS_HPP
#define HELPERS_HPP
+//#include <gdkmm/pixbuf.h> // For icon in warning_dialog
#include <glibmm/ustring.h>
+/* Can't include gtkmm/messagedialog.h here as it causes X11 header to be
+ * included before gtkmm?? */
+//#define LOCAL_GTK_BUTTONS_OK 1
+
// from www.boost.org - derivation from this class makes the derived class
// noncopyable
class noncopyable
@@ -38,4 +43,12 @@ private:
void fatal_error(const Glib::ustring &msg);
+/* Attempting to host the warning_dialog code here has failed completely -
+ * constant bullshit include errors either not allowing namespace items to be
+ * defined, or some X11/gtkmm clash again - this is all needed to allow for
+ * the parameters passed here */
+/*int warning_dialog(const Glib::ustring &msg, const Glib::ustring &title,
+ Glib::RefPtr<Gdk::Pixbuf> icon,
+ const int buttons = LOCAL_GTK_BUTTONS_OK);*/
+
#endif
diff --git a/src/monitor-impls.cpp b/src/monitor-impls.cpp
index 272c722..69ecf83 100644
--- a/src/monitor-impls.cpp
+++ b/src/monitor-impls.cpp
@@ -37,13 +37,12 @@
#include <glibtop/loadavg.h>
#include <glibtop/fsusage.h>
#include <glibtop/netload.h>
-
+#include <glibtop/netlist.h>
#include "monitor-impls.hpp"
#include "ucompose.hpp"
#include "i18n.hpp"
-
/* Decay factor for maximum values (log_0.999(0.9) = 105 iterations
* before reduced 10%). This is now no longer used for CurveView - the
* actual max value across the ValueHistories is used */
@@ -55,15 +54,15 @@ double const max_decay = 0.999;
//
std::list<Monitor *>
-load_monitors(XfceRc* settings)
+load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin)
{
std::list<Monitor *> monitors;
// Checking if settings currently exist
- if (settings)
+ if (settings_ro)
{
// They do - fetching list of monitors
- gchar** settings_monitors = xfce_rc_get_groups(settings);
+ gchar** settings_monitors = xfce_rc_get_groups(settings_ro);
// They do - looping for all monitors
for (int i = 0; settings_monitors[i] != NULL; ++i)
@@ -73,15 +72,15 @@ load_monitors(XfceRc* settings)
continue;
// Setting the correct group prior to loading settings
- xfce_rc_set_group(settings, settings_monitors[i]);
+ xfce_rc_set_group(settings_ro, settings_monitors[i]);
// Obtaining monitor type
- Glib::ustring type = xfce_rc_read_entry(settings, "type", "");
+ Glib::ustring type = xfce_rc_read_entry(settings_ro, "type", "");
if (type == "cpu_usage")
{
// Obtaining cpu_no
- int cpu_no = xfce_rc_read_int_entry(settings, "cpu_no", -1);
+ int cpu_no = xfce_rc_read_int_entry(settings_ro, "cpu_no", -1);
// Creating CPU usage monitor with provided number if valid
if (cpu_no == -1)
@@ -98,11 +97,11 @@ load_monitors(XfceRc* settings)
else if (type == "disk_usage")
{
// Obtaining volume mount directory
- Glib::ustring mount_dir = xfce_rc_read_entry(settings,
+ Glib::ustring mount_dir = xfce_rc_read_entry(settings_ro,
"mount_dir", "/");
// Obtaining whether to show free space or not
- bool show_free = xfce_rc_read_bool_entry(settings, "show_free",
+ bool show_free = xfce_rc_read_bool_entry(settings_ro, "show_free",
false);
// Creating disk usage monitor
@@ -110,16 +109,72 @@ load_monitors(XfceRc* settings)
}
else if (type == "network_load")
{
- // Fetching interface type
- Glib::ustring inter = xfce_rc_read_entry(settings, "interface",
- "eth");
-
- // Fetching interface number
- int inter_no = xfce_rc_read_int_entry(settings, "interface_no",
- 0);
+ NetworkLoadMonitor::InterfaceType inter_type(NetworkLoadMonitor::ethernet_first);
+
+ // Debug code
+ std::cout << "HARDWARE MONITOR PLUGIN: Before interface_no detection\n";
+
+ /* Deprecated config check (<=v1.4.6) - is the interface defined by a
+ * count? */
+ if (xfce_rc_has_entry(settings_ro, "interface_no"))
+ {
+ // Debug code
+ std::cout << "HARDWARE MONITOR PLUGIN: interface_no detected!\n";
+
+ // It is - fetching interface number
+ int inter_no = xfce_rc_read_int_entry(settings_ro, "interface_no", 0);
+
+ // Determining interface type
+ Glib::ustring inter = xfce_rc_read_entry(settings_ro, "interface",
+ "eth0");
+ if (inter == "eth" && inter_no == 0)
+ inter_type = NetworkLoadMonitor::ethernet_first;
+ else if (inter == "eth" && inter_no == 1)
+ inter_type = NetworkLoadMonitor::ethernet_second;
+ else if (inter == "eth" && inter_no == 2)
+ inter_type = NetworkLoadMonitor::ethernet_third;
+ else if (inter == "ppp")
+ inter_type = NetworkLoadMonitor::modem;
+ else if (inter == "slip")
+ inter_type = NetworkLoadMonitor::serial_link;
+
+ // In the original form, only one wireless interface was available
+ else if (inter == "wlan")
+ inter_type = NetworkLoadMonitor::wireless_first;
+
+ // Search for a writeable settings file, create one if it doesnt exist
+ gchar* file = xfce_panel_plugin_save_location(panel_plugin, true);
+ if (file)
+ {
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
+ g_free(file);
+
+ // Removing deprecated interface settings
+ xfce_rc_set_group(settings_w, settings_monitors[i]);
+ xfce_rc_delete_entry(settings_w, "interface_no", FALSE);
+ xfce_rc_delete_entry(settings_w, "interface", FALSE);
+ xfce_rc_write_int_entry(settings_w, "interface_type", int(inter_type));
+
+ // Close settings file
+ xfce_rc_close(settings_w);
+ }
+ else
+ {
+ // Unable to obtain writeable config file - informing user
+ std::cerr << _("Unable to obtain writeable config file path in order"
+ " to remove deprecated configuration in "
+ "load_monitors!\n");
+ }
+ }
+ else
+ {
+ // Up to date configuration - interface_type will be available
+ inter_type = static_cast<NetworkLoadMonitor::InterfaceType>(xfce_rc_read_int_entry(settings_ro, "interface_type",
+ NetworkLoadMonitor::ethernet_first));
+ }
// Fetching interface 'direction' setting
- int inter_direction = xfce_rc_read_int_entry(settings,
+ int inter_direction = xfce_rc_read_int_entry(settings_ro,
"interface_direction", NetworkLoadMonitor::all_data);
// Converting direction setting into dedicated type
@@ -133,12 +188,12 @@ load_monitors(XfceRc* settings)
dir = NetworkLoadMonitor::all_data;
// Creating network load monitor
- monitors.push_back(new NetworkLoadMonitor(inter, inter_no, dir));
+ monitors.push_back(new NetworkLoadMonitor(inter_type, dir, panel_plugin));
}
else if (type == "temperature")
{
// Fetching temperature number
- int temperature_no = xfce_rc_read_int_entry(settings,
+ int temperature_no = xfce_rc_read_int_entry(settings_ro,
"temperature_no", 0);
// Creating temperature monitor
@@ -147,7 +202,7 @@ load_monitors(XfceRc* settings)
else if (type == "fan_speed")
{
// Fetching fan number
- int fan_no = xfce_rc_read_int_entry(settings, "fan_no", 0);
+ int fan_no = xfce_rc_read_int_entry(settings_ro, "fan_no", 0);
// Creating fan monitor
monitors.push_back(new FanSpeedMonitor(fan_no));
@@ -316,15 +371,15 @@ int CpuUsageMonitor::update_interval()
return 1000;
}
-void CpuUsageMonitor::save(XfceRc *settings)
+void CpuUsageMonitor::save(XfceRc *settings_w)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Saving settings
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_entry(settings, "type", "cpu_usage");
- xfce_rc_write_int_entry(settings, "cpu_no", cpu_no);
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_entry(settings_w, "type", "cpu_usage");
+ xfce_rc_write_int_entry(settings_w, "cpu_no", cpu_no);
}
@@ -384,14 +439,14 @@ int SwapUsageMonitor::update_interval()
return 10 * 1000;
}
-void SwapUsageMonitor::save(XfceRc *settings)
+void SwapUsageMonitor::save(XfceRc *settings_w)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Saving settings
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_entry(settings, "type", "swap_usage");
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_entry(settings_w, "type", "swap_usage");
}
@@ -458,30 +513,30 @@ int LoadAverageMonitor::update_interval()
return 30 * 1000;
}
-void LoadAverageMonitor::save(XfceRc *settings)
+void LoadAverageMonitor::save(XfceRc *settings_w)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Saving settings
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_entry(settings, "type", "load_average");
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_entry(settings_w, "type", "load_average");
// No support for floats - stringifying
Glib::ustring setting = String::ucompose("%1", max_value);
- xfce_rc_write_entry(settings, "max", setting.c_str());
+ xfce_rc_write_entry(settings_w, "max", setting.c_str());
}
-void LoadAverageMonitor::load(XfceRc *settings)
+void LoadAverageMonitor::load(XfceRc *settings_ro)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Loading settings - no support for floats, unstringifying
- xfce_rc_set_group(settings, dir.c_str());
- Glib::ustring type = xfce_rc_read_entry(settings, "type", "");
+ xfce_rc_set_group(settings_ro, dir.c_str());
+ Glib::ustring type = xfce_rc_read_entry(settings_ro, "type", "");
if (type == "load_average")
- max_value = atof(xfce_rc_read_entry(settings, "max", "5"));
+ max_value = atof(xfce_rc_read_entry(settings_ro, "max", "5"));
}
@@ -541,14 +596,14 @@ int MemoryUsageMonitor::update_interval()
return 10 * 1000;
}
-void MemoryUsageMonitor::save(XfceRc *settings)
+void MemoryUsageMonitor::save(XfceRc *settings_w)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Saving settings
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_entry(settings, "type", "memory_usage");
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_entry(settings_w, "type", "memory_usage");
}
@@ -627,16 +682,16 @@ int DiskUsageMonitor::update_interval()
return 60 * 1000;
}
-void DiskUsageMonitor::save(XfceRc *settings)
+void DiskUsageMonitor::save(XfceRc *settings_w)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Saving settings
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_entry(settings, "type", "disk_usage");
- xfce_rc_write_entry(settings, "mount_dir", mount_dir.c_str());
- xfce_rc_write_bool_entry(settings, "show_free", show_free);
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_entry(settings_w, "type", "disk_usage");
+ xfce_rc_write_entry(settings_w, "mount_dir", mount_dir.c_str());
+ xfce_rc_write_bool_entry(settings_w, "show_free", show_free);
}
@@ -644,10 +699,19 @@ void DiskUsageMonitor::save(XfceRc *settings)
// class NetworkLoadMonitor
//
-NetworkLoadMonitor::NetworkLoadMonitor(const Glib::ustring &inter, int inter_no,
- Direction dir)
+/* Static intialisation - can't initialise in class declaration?? Can't have
+ * non-declaration statements here either, so can't directly populate the
+ * defaults vector... the main type names vector isn't initialised here as the
+ * associated function loads and saves settings */
+std::vector<Glib::ustring> NetworkLoadMonitor::interface_type_names = std::vector<Glib::ustring>(NUM_INTERFACE_TYPES);
+std::vector<Glib::ustring> NetworkLoadMonitor::interface_type_names_default = initialise_default_interface_names();
+
+bool NetworkLoadMonitor::interface_names_configured = false;
+
+NetworkLoadMonitor::NetworkLoadMonitor(InterfaceType &inter_type, Direction dir,
+ XfcePanelPlugin* panel_applet)
: max_value(1), byte_count(0), time_stamp_secs(0), time_stamp_usecs(0),
- interface(inter), interface_no(inter_no), direction(dir)
+ interface_type(inter_type), direction(dir), pnl_applet(panel_applet)
{
}
@@ -655,8 +719,11 @@ double NetworkLoadMonitor::do_measure()
{
glibtop_netload netload;
- glibtop_get_netload(&netload,
- String::ucompose("%1%2", interface, interface_no).c_str());
+ /* Obtaining interface name - this can change after monitor is instantiated
+ * hence fetching each time */
+ Glib::ustring interface = get_interface_name(interface_type, pnl_applet);
+
+ glibtop_get_netload(&netload, interface.c_str());
guint64 val, measured_bytes;
if (direction == all_data)
@@ -745,23 +812,7 @@ Glib::ustring NetworkLoadMonitor::format_value(double val)
Glib::ustring NetworkLoadMonitor::get_name()
{
- Glib::ustring str;
-
- if (interface == "eth" && interface_no == 0)
- str = _("Ethernet (first)");
- else if (interface == "eth" && interface_no == 1)
- str = _("Ethernet (second)");
- else if (interface == "eth" && interface_no == 2)
- str = _("Ethernet (third)");
- else if (interface == "ppp" && interface_no == 0)
- str = _("Modem");
- else if (interface == "slip" && interface_no == 0)
- str = _("Serial link");
- else if (interface == "wlan" && interface_no == 0)
- str = _("Wireless");
- else
- // unknown, someone must have been fiddling with the config file
- str = String::ucompose("%1%2", interface, interface_no);
+ Glib::ustring str = interface_type_to_string(interface_type, false);
if (direction == incoming_data)
// %1 is the network connection, e.g. "Ethernet (first)", in signifies
@@ -777,23 +828,8 @@ Glib::ustring NetworkLoadMonitor::get_name()
Glib::ustring NetworkLoadMonitor::get_short_name()
{
- Glib::ustring str;
-
- if (interface == "eth")
- // short for an ethernet card
- str = String::ucompose(_("Eth. %1"), interface_no + 1);
- else if (interface == "ppp" && interface_no == 0)
- // short for modem
- str = _("Mod.");
- else if (interface == "slip" && interface_no == 0)
- // short for serial link
- str = _("Ser.");
- else if (interface == "wlan" && interface_no == 0)
- // short for wireless
- str = _("W.less.");
- else
- // unknown, someone must have been fiddling with the config file
- str = String::ucompose("%1%2", interface, interface_no);
+ // Have not merged this with get_name in order to keep the interface the same
+ Glib::ustring str = interface_type_to_string(interface_type, true);
if (direction == incoming_data)
str = String::ucompose(_("%1, in"), str);
@@ -808,45 +844,41 @@ int NetworkLoadMonitor::update_interval()
return 1000;
}
-void NetworkLoadMonitor::save(XfceRc *settings)
+void NetworkLoadMonitor::save(XfceRc *settings_w)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Saving settings
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_entry(settings, "type", "network_load");
- xfce_rc_write_entry(settings, "interface", interface.c_str());
- xfce_rc_write_int_entry(settings, "interface_no", interface_no);
- xfce_rc_write_int_entry(settings, "interface_direction",
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_entry(settings_w, "type", "network_load");
+ xfce_rc_write_int_entry(settings_w, "interface_type", int(interface_type));
+ xfce_rc_write_int_entry(settings_w, "interface_direction",
int(direction));
- xfce_rc_write_int_entry(settings, "max", int(max_value));
+ xfce_rc_write_int_entry(settings_w, "max", int(max_value));
}
-void NetworkLoadMonitor::load(XfceRc *settings)
+void NetworkLoadMonitor::load(XfceRc *settings_ro)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
/* Loading settings - ensuring the settings are for the particular
* network monitor?? */
- xfce_rc_set_group(settings, dir.c_str());
- Glib::ustring type = xfce_rc_read_entry(settings, "type", ""),
- setting_interface = xfce_rc_read_entry(settings, "interface", "");
- if (type == "network_load" && setting_interface == interface
- && xfce_rc_read_int_entry(settings, "interface_no", 0) == interface_no
- && xfce_rc_read_int_entry(settings, "interface_direction",
- int(incoming_data)) == int(direction))
- {
- max_value = xfce_rc_read_int_entry(settings, "max", 0);
- }
+ xfce_rc_set_group(settings_ro, dir.c_str());
+ Glib::ustring type = xfce_rc_read_entry(settings_ro, "type", "");
+ InterfaceType inter_type = static_cast<InterfaceType>(xfce_rc_read_int_entry(settings_ro, "interface_type", int(ethernet_first)));
+ Direction inter_direction = static_cast<Direction>(xfce_rc_read_int_entry(settings_ro, "interface_direction" ,int(incoming_data)));
+
+ if (type == "network_load" && inter_type == interface_type
+ && inter_direction == direction)
+ max_value = xfce_rc_read_int_entry(settings_ro, "max", 0);
}
void NetworkLoadMonitor::possibly_add_sync_with(Monitor *other)
{
if (NetworkLoadMonitor *o = dynamic_cast<NetworkLoadMonitor *>(other))
- if (interface == o->interface && interface_no == o->interface_no
- && direction != o->direction)
+ if (interface_type == o->interface_type && direction != o->direction)
sync_monitors.push_back(o);
}
@@ -859,6 +891,409 @@ void NetworkLoadMonitor::remove_sync_with(Monitor *other)
sync_monitors.erase(i);
}
+void NetworkLoadMonitor::configure_interface_names(XfcePanelPlugin *panel_applet)
+{
+ if (interface_names_configured)
+ return;
+
+ bool write_settings_ethernet_first = false, write_settings_ethernet_second = false,
+ write_settings_ethernet_third = false, write_settings_modem = false,
+ write_settings_serial_link = false, write_settings_wireless_first = false,
+ write_settings_wireless_second = false, write_settings_wireless_third = false;
+
+ gchar* file = xfce_panel_plugin_lookup_rc_file(panel_applet);
+ if (file)
+ {
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
+ g_free(file);
+
+ // Ensuring default group is in focus
+ xfce_rc_set_group(settings_ro, "[NULL]");
+
+ Glib::ustring setting_name = String::ucompose(
+ "network_type_%1_interface_name",
+ int(ethernet_first));
+ if (xfce_rc_has_entry(settings_ro, setting_name.c_str()))
+ interface_type_names[ethernet_first] = xfce_rc_read_entry(
+ settings_ro, setting_name.c_str(),
+ get_default_interface_name(ethernet_first).c_str());
+ else
+ {
+ interface_type_names[ethernet_first] =
+ get_default_interface_name(ethernet_first);
+ write_settings_ethernet_first = true;
+ }
+
+ setting_name = String::ucompose(
+ "network_type_%1_interface_name",
+ int(ethernet_second));
+ if (xfce_rc_has_entry(settings_ro, setting_name.c_str()))
+ interface_type_names[ethernet_second] = xfce_rc_read_entry(
+ settings_ro, setting_name.c_str(),
+ get_default_interface_name(ethernet_second).c_str());
+ else
+ {
+ interface_type_names[ethernet_second] =
+ get_default_interface_name(ethernet_second);
+ write_settings_ethernet_second = true;
+ }
+
+ setting_name = String::ucompose(
+ "network_type_%1_interface_name",
+ int(ethernet_third));
+ if (xfce_rc_has_entry(settings_ro, setting_name.c_str()))
+ interface_type_names[ethernet_third] = xfce_rc_read_entry(
+ settings_ro, setting_name.c_str(),
+ get_default_interface_name(ethernet_third).c_str());
+ else
+ {
+ interface_type_names[ethernet_third] =
+ get_default_interface_name(ethernet_third);
+ write_settings_ethernet_third = true;
+ }
+
+ setting_name = String::ucompose(
+ "network_type_%1_interface_name", int(modem));
+ if (xfce_rc_has_entry(settings_ro, setting_name.c_str()))
+ interface_type_names[modem] = xfce_rc_read_entry(
+ settings_ro, setting_name.c_str(),
+ get_default_interface_name(modem).c_str());
+ else
+ {
+ interface_type_names[modem] = get_default_interface_name(modem);
+ write_settings_modem = true;
+ }
+
+ setting_name = String::ucompose(
+ "network_type_%1_interface_name", int(serial_link));
+ if (xfce_rc_has_entry(settings_ro, setting_name.c_str()))
+ interface_type_names[serial_link] = xfce_rc_read_entry(
+ settings_ro, setting_name.c_str(),
+ get_default_interface_name(serial_link).c_str());
+ else
+ {
+ interface_type_names[serial_link] =
+ get_default_interface_name(serial_link);
+ write_settings_serial_link = true;
+ }
+
+ setting_name = String::ucompose(
+ "network_type_%1_interface_name", int(wireless_first));
+ if (xfce_rc_has_entry(settings_ro, setting_name.c_str()))
+ interface_type_names[wireless_first] = xfce_rc_read_entry(
+ settings_ro, setting_name.c_str(),
+ get_default_interface_name(wireless_first).c_str());
+ else
+ {
+ interface_type_names[wireless_first] =
+ get_default_interface_name(wireless_first);
+ write_settings_wireless_first = true;
+ }
+
+ setting_name = String::ucompose(
+ "network_type_%1_interface_name", int(wireless_second));
+ if (xfce_rc_has_entry(settings_ro, setting_name.c_str()))
+ interface_type_names[wireless_second] = xfce_rc_read_entry(
+ settings_ro, setting_name.c_str(),
+ get_default_interface_name(wireless_first).c_str());
+ else
+ {
+ interface_type_names[wireless_second] =
+ get_default_interface_name(wireless_second);
+ write_settings_wireless_second = true;
+ }
+
+ setting_name = String::ucompose(
+ "network_type_%1_interface_name", int(wireless_third));
+ if (xfce_rc_has_entry(settings_ro, setting_name.c_str()))
+ interface_type_names[wireless_third] = xfce_rc_read_entry(
+ settings_ro, setting_name.c_str(),
+ get_default_interface_name(wireless_third).c_str());
+ else
+ {
+ interface_type_names[wireless_third] =
+ get_default_interface_name(wireless_third);
+ write_settings_wireless_third = true;
+ }
+
+ /* Writing out settings if any interface name didn't previously exist -
+ * this is only going to happen once as configurations essentially get
+ * upgraded */
+ if (write_settings_ethernet_first || write_settings_ethernet_second
+ || write_settings_ethernet_third || write_settings_modem
+ || write_settings_serial_link || write_settings_wireless_first
+ || write_settings_wireless_second || write_settings_wireless_third)
+ {
+ // Search for a writeable settings file, create one if it doesnt exist
+ gchar* file = xfce_panel_plugin_save_location(panel_applet, true);
+
+ if (file)
+ {
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
+ g_free(file);
+
+ // Saving all interface names that have been set
+ if (write_settings_ethernet_first)
+ {
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(ethernet_first));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[ethernet_first].c_str());
+ }
+ if (write_settings_ethernet_second)
+ {
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(ethernet_second));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[ethernet_second].c_str());
+ }
+ if (write_settings_ethernet_third)
+ {
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(ethernet_third));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[ethernet_third].c_str());
+ }
+ if (write_settings_modem)
+ {
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(modem));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[modem].c_str());
+ }
+ if (write_settings_serial_link)
+ {
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(serial_link));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[serial_link].c_str());
+ }
+ if (write_settings_wireless_first)
+ {
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(wireless_first));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[wireless_first].c_str());
+ }
+ if (write_settings_wireless_second)
+ {
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(wireless_second));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[wireless_second].c_str());
+ }
+ if (write_settings_wireless_third)
+ {
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(wireless_third));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[wireless_third].c_str());
+ }
+
+ xfce_rc_close(settings_w);
+ }
+ else
+ {
+ // Unable to obtain writeable config file - informing user
+ std::cerr << _("Unable to obtain writeable config file path in order to"
+ " save interface names in NetworkLoadMonitor::"
+ "get_interface_name!\n");
+ return;
+ }
+ }
+
+ xfce_rc_close(settings_ro);
+ }
+ else
+ {
+ // Unable to obtain read-only config file - informing user
+ std::cerr << _("Unable to obtain read-only config file path in order to "
+ "configure interface names in NetworkLoadMonitor::"
+ "configure_interface_names!");
+ return;
+ }
+
+ interface_names_configured = true;
+}
+
+Glib::ustring NetworkLoadMonitor::get_interface_name(InterfaceType type,
+ XfcePanelPlugin *panel_applet)
+{
+ // Load saved interface names if not done yet and enforcing defaults
+ configure_interface_names(panel_applet);
+
+ // Debug code
+ /* std::cout << "get_interface_name called for " << interface_type_to_string(type,
+ false)
+ << ", returning " << interface_type_names[type] << "\n";*/
+
+ // Returning requested interface name
+ return interface_type_names[type];
+}
+
+Glib::ustring NetworkLoadMonitor::get_default_interface_name(InterfaceType type)
+{
+ return interface_type_names_default[type];
+}
+
+void NetworkLoadMonitor::set_interface_name(InterfaceType type, const Glib::ustring interface_name)
+{
+ interface_type_names[type] = interface_name;
+}
+
+std::vector<Glib::ustring> NetworkLoadMonitor::initialise_default_interface_names()
+{
+ std::vector<Glib::ustring> inter_type_names_default = std::
+ vector<Glib::ustring>(NUM_INTERFACE_TYPES);
+ inter_type_names_default[ethernet_first] = "eth0";
+ inter_type_names_default[ethernet_second] = "eth1";
+ inter_type_names_default[ethernet_third] = "eth2";
+ inter_type_names_default[modem] = "ppp";
+ inter_type_names_default[serial_link] = "slip";
+ inter_type_names_default[wireless_first] = "wlan0";
+ inter_type_names_default[wireless_second] = "wlan1";
+ inter_type_names_default[wireless_third] = "wlan2";
+ return inter_type_names_default;
+}
+
+void NetworkLoadMonitor::restore_default_interface_names(XfceRc *settings_w)
+{
+ interface_type_names = initialise_default_interface_names();
+ NetworkLoadMonitor::save_interfaces(settings_w);
+}
+
+const Glib::ustring NetworkLoadMonitor::interface_type_to_string(const InterfaceType type, const bool short_ver)
+{
+ Glib::ustring interface_type_str;
+
+ switch(type)
+ {
+ case ethernet_first:
+ if (short_ver)
+ interface_type_str = _("Eth. 1");
+ else
+ interface_type_str = _("Ethernet (first)");
+ break;
+
+ case ethernet_second:
+ if (short_ver)
+ interface_type_str = _("Eth. 2");
+ else
+ interface_type_str = _("Ethernet (second)");
+ break;
+
+ case ethernet_third:
+ if (short_ver)
+ interface_type_str = _("Eth. 3");
+ else
+ interface_type_str = _("Ethernet (third)");
+ break;
+
+ case modem:
+ if (short_ver)
+ interface_type_str = _("Mod.");
+ else
+ interface_type_str = _("Modem");
+ break;
+
+ case serial_link:
+ if (short_ver)
+ interface_type_str = _("Ser.");
+ else
+ interface_type_str = _("Serial link");
+ break;
+
+ case wireless_first:
+ if (short_ver)
+ interface_type_str = _("W.less. 1");
+ else
+ interface_type_str = _("Wireless (first)");
+ break;
+
+ case wireless_second:
+ if (short_ver)
+ interface_type_str = _("W.less. 2");
+ else
+ interface_type_str = _("Wireless (second)");
+ break;
+
+ case wireless_third:
+ if (short_ver)
+ interface_type_str = _("W.less. 3");
+ else
+ interface_type_str = _("Wireless (third)");
+ break;
+ }
+
+ return interface_type_str;
+
+}
+
+bool NetworkLoadMonitor::interface_exists(const Glib::ustring &interface_name)
+{
+ glibtop_netlist buf;
+ char **devices;
+ int i;
+ bool found_device = false;
+
+ // Attempting to locate specified network interface
+ devices = glibtop_get_netlist(&buf);
+ for(i = 0; i < buf.number; ++i)
+ {
+ // Debug code
+ /*std::cout << "Device to search for: " << interface_name << ", device "
+ "compared with: " << devices[i] << "\n";*/
+
+ if (interface_name == devices[i])
+ {
+ found_device = true;
+ break;
+ }
+ }
+ g_strfreev(devices);
+
+ return found_device;
+}
+
+void NetworkLoadMonitor::save_interfaces(XfceRc *settings_w)
+{
+ // Ensuring default group is in focus
+ xfce_rc_set_group(settings_w, "[NULL]");
+
+ // Saving interface names
+ Glib::ustring setting_name = String::ucompose("network_type_%1_interface_name",
+ int(ethernet_first));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[ethernet_first].c_str());
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(ethernet_second));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[ethernet_second].c_str());
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(ethernet_third));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[ethernet_third].c_str());
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(modem));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[modem].c_str());
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(serial_link));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[serial_link].c_str());
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(wireless_first));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[wireless_first].c_str());
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(wireless_second));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[wireless_second].c_str());
+ setting_name = String::ucompose("network_type_%1_interface_name",
+ int(wireless_third));
+ xfce_rc_write_entry(settings_w, setting_name.c_str(),
+ interface_type_names[wireless_third].c_str());
+}
//
// implementation of sensors wrapper
@@ -1043,33 +1478,33 @@ int TemperatureMonitor::update_interval()
return 20 * 1000;
}
-void TemperatureMonitor::save(XfceRc *settings)
+void TemperatureMonitor::save(XfceRc *settings_w)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Saving settings
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_entry(settings, "type", "temperature");
- xfce_rc_write_int_entry(settings, "temperature_no", sensors_no);
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_entry(settings_w, "type", "temperature");
+ xfce_rc_write_int_entry(settings_w, "temperature_no", sensors_no);
// No support for floats - stringifying
Glib::ustring setting = String::ucompose("%1", max_value);
- xfce_rc_write_entry(settings, "max", setting.c_str());
+ xfce_rc_write_entry(settings_w, "max", setting.c_str());
}
-void TemperatureMonitor::load(XfceRc *settings)
+void TemperatureMonitor::load(XfceRc *settings_ro)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
/* Loading settings, making sure the right sensor is loaded. No support
* for floats, unstringifying */
- xfce_rc_set_group(settings, dir.c_str());
- Glib::ustring type = xfce_rc_read_entry(settings, "type", "");
- if (type == "temperature" && xfce_rc_read_int_entry(settings,
+ xfce_rc_set_group(settings_ro, dir.c_str());
+ Glib::ustring type = xfce_rc_read_entry(settings_ro, "type", "");
+ if (type == "temperature" && xfce_rc_read_int_entry(settings_ro,
"temperature_no", 0) == sensors_no)
- max_value = atof(xfce_rc_read_entry(settings, "max", "40"));
+ max_value = atof(xfce_rc_read_entry(settings_ro, "max", "40"));
}
@@ -1139,31 +1574,31 @@ int FanSpeedMonitor::update_interval()
return 20 * 1000;
}
-void FanSpeedMonitor::save(XfceRc *settings)
+void FanSpeedMonitor::save(XfceRc *settings_w)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
// Saving settings
- xfce_rc_set_group(settings, dir.c_str());
- xfce_rc_write_entry(settings, "type", "fan_speed");
- xfce_rc_write_int_entry(settings, "fan_no", sensors_no);
+ xfce_rc_set_group(settings_w, dir.c_str());
+ xfce_rc_write_entry(settings_w, "type", "fan_speed");
+ xfce_rc_write_int_entry(settings_w, "fan_no", sensors_no);
// No support for floats - stringifying
Glib::ustring setting = String::ucompose("%1", max_value);
- xfce_rc_write_entry(settings, "max", setting.c_str());
+ xfce_rc_write_entry(settings_w, "max", setting.c_str());
}
-void FanSpeedMonitor::load(XfceRc *settings)
+void FanSpeedMonitor::load(XfceRc *settings_ro)
{
// Fetching assigned settings group
Glib::ustring dir = get_settings_dir();
/* Loading settings, making sure the right fan is loaded. No support
* for floats, unstringifying */
- xfce_rc_set_group(settings, dir.c_str());
- Glib::ustring type = xfce_rc_read_entry(settings, "type", "");
- if (type == "fan_speed" && xfce_rc_read_int_entry(settings, "fan_no",
- 0) == sensors_no)
- max_value = atof(xfce_rc_read_entry(settings, "max", "1"));
+ xfce_rc_set_group(settings_ro, dir.c_str());
+ Glib::ustring type = xfce_rc_read_entry(settings_ro, "type", "");
+ int fan_no = xfce_rc_read_int_entry(settings_ro, "fan_no", 0);
+ if (type == "fan_speed" && fan_no == sensors_no)
+ max_value = atof(xfce_rc_read_entry(settings_ro, "max", "1"));
}
diff --git a/src/monitor-impls.hpp b/src/monitor-impls.hpp
index 32edc5b..5a4dbb9 100644
--- a/src/monitor-impls.hpp
+++ b/src/monitor-impls.hpp
@@ -25,12 +25,20 @@
#include <config.h>
#include <string>
+#include <vector>
+
#include <glib/gtypes.h>
#if HAVE_LIBSENSORS
#include <sensors/sensors.h>
#endif
+// For XfcePanelPlugin
+extern "C"
+{
+#include <libxfce4panel/libxfce4panel.h>
+}
+
#include "monitor.hpp"
//
@@ -49,7 +57,7 @@ public:
virtual Glib::ustring get_name();
virtual Glib::ustring get_short_name();
virtual int update_interval();
- virtual void save(XfceRc *settings);
+ virtual void save(XfceRc *settings_w);
static int const max_no_cpus;
@@ -76,7 +84,7 @@ public:
virtual Glib::ustring get_name();
virtual Glib::ustring get_short_name();
virtual int update_interval();
- virtual void save(XfceRc *settings);
+ virtual void save(XfceRc *settings_w);
private:
virtual double do_measure();
@@ -96,8 +104,8 @@ public:
virtual Glib::ustring get_name();
virtual Glib::ustring get_short_name();
virtual int update_interval();
- virtual void save(XfceRc *settings);
- virtual void load(XfceRc *settings);
+ virtual void save(XfceRc *settings_w);
+ virtual void load(XfceRc *settings_ro);
private:
virtual double do_measure();
@@ -117,7 +125,7 @@ public:
virtual Glib::ustring get_name();
virtual Glib::ustring get_short_name();
virtual int update_interval();
- virtual void save(XfceRc *settings);
+ virtual void save(XfceRc *settings_w);
private:
virtual double do_measure();
@@ -137,7 +145,7 @@ public:
virtual Glib::ustring get_name();
virtual Glib::ustring get_short_name();
virtual int update_interval();
- virtual void save(XfceRc *settings);
+ virtual void save(XfceRc *settings_w);
private:
virtual double do_measure();
@@ -155,8 +163,25 @@ public:
all_data, incoming_data, outgoing_data
};
- NetworkLoadMonitor(const Glib::ustring &interface, int interface_no,
- Direction direction);
+ /* There haven't been many different interfaces commonly used on machines,
+ * so a simple enum should be good enough to maintain them now this information
+ * is separate from the interface name and is required in the configuration,
+ * also can't really tie to a string due to translation
+ * See also default interface name configuration in interface_type_names */
+ enum InterfaceType {
+ ethernet_first,
+ ethernet_second,
+ ethernet_third,
+ modem,
+ serial_link,
+ wireless_first,
+ wireless_second,
+ wireless_third,
+ NUM_INTERFACE_TYPES
+ };
+
+ NetworkLoadMonitor(InterfaceType &interface_type,
+ Direction direction, XfcePanelPlugin *panel_applet);
virtual double max();
virtual bool fixed_max();
@@ -164,26 +189,58 @@ public:
virtual Glib::ustring get_name();
virtual Glib::ustring get_short_name();
virtual int update_interval();
- virtual void save(XfceRc *settings);
- virtual void load(XfceRc *settings);
+ virtual void save(XfceRc *settings_w);
+ virtual void load(XfceRc *settings_ro);
virtual void possibly_add_sync_with(Monitor *other);
virtual void remove_sync_with(Monitor *other);
+ /* Allow to maintain list of interface names separate to individual monitor
+ * objects
+ * configure_interface_names needs to read and possibly write the configuration
+ * file hence takes an applet pointer */
+ static Glib::ustring get_interface_name(InterfaceType type,
+ XfcePanelPlugin *panel_applet);
+ static Glib::ustring get_default_interface_name(InterfaceType type);
+ static void set_interface_name(InterfaceType type,
+ const Glib::ustring interface_name);
+ static const Glib::ustring interface_type_to_string(const InterfaceType type,
+ bool short_ver);
+ static bool interface_exists(const Glib::ustring& interface_name);
+
+ /* Function dedicated to saving interface names the standard interface types
+ * are mapped to */
+ static void save_interfaces(XfceRc *settings_w);
+
+ static void restore_default_interface_names(XfceRc *settings_w);
+
private:
virtual double do_measure();
+ // Can't initialise a static vector properly so trying this
+ static std::vector<Glib::ustring> initialise_default_interface_names();
+ static void configure_interface_names(XfcePanelPlugin *panel_applet);
+
+ XfcePanelPlugin *pnl_applet; // Needed to allow do_measure to call
+ // get_interface_name(*panel_applet)
+
guint64 max_value; // maximum measured capacity of line
long int time_difference; // no. of msecs. between the last two calls
guint64 byte_count; // number of bytes at last call
long int time_stamp_secs, time_stamp_usecs; // time stamp for last call
- Glib::ustring interface; // e.g. "eth"
- int interface_no; // e.g. 0
+ InterfaceType interface_type; // Interface name is now fetched from the type
+ // when needed
Direction direction;
typedef std::list<NetworkLoadMonitor *> nlm_seq;
nlm_seq sync_monitors;
+
+ /* Storage for default or customised interface names for all types - can't
+ * initialise vector here?? */
+ static std::vector<Glib::ustring> interface_type_names;
+ static std::vector<Glib::ustring> interface_type_names_default;
+ static bool interface_names_configured;
};
@@ -198,8 +255,8 @@ public:
virtual Glib::ustring get_name();
virtual Glib::ustring get_short_name();
virtual int update_interval();
- virtual void save(XfceRc *settings);
- virtual void load(XfceRc *settings);
+ virtual void save(XfceRc *settings_w);
+ virtual void load(XfceRc *settings_ro);
private:
virtual double do_measure();
@@ -221,8 +278,8 @@ public:
virtual Glib::ustring get_name();
virtual Glib::ustring get_short_name();
virtual int update_interval();
- virtual void save(XfceRc *settings);
- virtual void load(XfceRc *settings);
+ virtual void save(XfceRc *settings_w);
+ virtual void load(XfceRc *settings_ro);
private:
virtual double do_measure();
diff --git a/src/monitor.hpp b/src/monitor.hpp
index ebb17ff..5d74d8b 100644
--- a/src/monitor.hpp
+++ b/src/monitor.hpp
@@ -33,6 +33,7 @@ extern "C"
#include "helpers.hpp"
+
class Monitor: noncopyable
{
public:
@@ -88,10 +89,10 @@ public:
virtual int update_interval() = 0;
// Save information about the monitor
- virtual void save(XfceRc *settings) = 0;
+ virtual void save(XfceRc *settings_w) = 0;
// Load any internal monitor state
- virtual void load(XfceRc *settings)
+ virtual void load(XfceRc *settings_ro)
{
}
@@ -105,10 +106,10 @@ public:
virtual void remove_sync_with(Monitor *other)
{
}
-
+
protected:
double measured_value;
-
+
private:
// Perform actual measurement, for derived classes
@@ -125,6 +126,11 @@ private:
typedef std::list<Monitor *> monitor_seq;
typedef monitor_seq::iterator monitor_iter;
-monitor_seq load_monitors(XfceRc* settings);
+/* Forward declaration for load_monitors - including the panel header at the top
+ * causes glibmm/object.h to complain that X11/Xlib.h has been included ahead
+ * of it?? Why is the include tolerated in applet.hpp then? */
+typedef struct _XfcePanelPlugin XfcePanelPlugin;
+
+monitor_seq load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin);
#endif
diff --git a/src/preferences-window.cpp b/src/preferences-window.cpp
index 8824327..ba14dc7 100644
--- a/src/preferences-window.cpp
+++ b/src/preferences-window.cpp
@@ -1,7 +1,7 @@
/* Implementation of the PreferencesWindow class.
*
* Copyright (c) 2003, 04 Ole Laursen.
- * Copyright (c) 2013-2014 OmegaPhil (OmegaPhil at startmail.com)
+ * Copyright (c) 2013-2015 OmegaPhil (OmegaPhil at startmail.com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -393,19 +393,19 @@ void PreferencesWindow::sync_conf_with_colorbutton(Glib::ustring settings_dir,
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Focussing settings group if requested
if (!settings_dir.empty())
- xfce_rc_set_group(settings, settings_dir.c_str());
+ xfce_rc_set_group(settings_w, settings_dir.c_str());
// Updating configuration
- xfce_rc_write_int_entry(settings, setting_name.c_str(),
+ xfce_rc_write_int_entry(settings_w, setting_name.c_str(),
get_colorbutton_int(button));
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -441,17 +441,17 @@ void PreferencesWindow::on_background_color_radiobutton_toggled()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_bool_entry(settings, "use_background_color", on);
+ xfce_rc_write_bool_entry(settings_w, "use_background_color", on);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -474,17 +474,17 @@ void PreferencesWindow::on_curve_radiobutton_toggled()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_entry(settings, "viewer_type", "curve");
+ xfce_rc_write_entry(settings_w, "viewer_type", "curve");
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -514,17 +514,17 @@ void PreferencesWindow::on_bar_radiobutton_toggled()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_entry(settings, "viewer_type", "bar");
+ xfce_rc_write_entry(settings_w, "viewer_type", "bar");
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -554,17 +554,17 @@ void PreferencesWindow::on_vbar_radiobutton_toggled()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_entry(settings, "viewer_type", "vbar");
+ xfce_rc_write_entry(settings_w, "viewer_type", "vbar");
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -594,17 +594,17 @@ void PreferencesWindow::on_column_radiobutton_toggled()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_entry(settings, "viewer_type", "column");
+ xfce_rc_write_entry(settings_w, "viewer_type", "column");
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -634,17 +634,17 @@ void PreferencesWindow::on_text_radiobutton_toggled()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_entry(settings, "viewer_type", "text");
+ xfce_rc_write_entry(settings_w, "viewer_type", "text");
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -673,17 +673,17 @@ void PreferencesWindow::on_flame_radiobutton_toggled()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_entry(settings, "viewer_type", "flame");
+ xfce_rc_write_entry(settings_w, "viewer_type", "flame");
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -717,18 +717,18 @@ void PreferencesWindow::on_size_scale_changed()
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_int_entry(settings, "viewer_size",
+ xfce_rc_write_int_entry(settings_w, "viewer_size",
size_scale_to_pixels(i));
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
@@ -839,15 +839,15 @@ void PreferencesWindow::on_selection_changed()
if (file)
{
// One exists - loading readonly settings
- XfceRc* settings = xfce_rc_simple_open(file, true);
+ XfceRc* settings_ro = xfce_rc_simple_open(file, true);
g_free(file);
// Loading color
- xfce_rc_set_group(settings, mon_dir.c_str());
- color = xfce_rc_read_int_entry(settings, "color", 0);
+ xfce_rc_set_group(settings_ro, mon_dir.c_str());
+ color = xfce_rc_read_int_entry(settings_ro, "color", 0);
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_ro);
}
// Applying colour
@@ -887,9 +887,9 @@ bool PreferencesWindow::on_closed(GdkEventAny *)
Monitor *PreferencesWindow::run_choose_monitor_window(const Glib::ustring &str)
{
- ChooseMonitorWindow chooser(applet.get_icon(), *window);
+ ChooseMonitorWindow chooser(applet.panel_applet, *window);
- return chooser.run(applet.panel_applet, str);
+ return chooser.run(str);
}
void PreferencesWindow::add_to_monitors_list(Monitor *mon)
@@ -942,17 +942,17 @@ void PreferencesWindow::save_font_details(Glib::ustring font_details)
if (file)
{
// Opening setting file
- XfceRc* settings = xfce_rc_simple_open(file, false);
+ XfceRc* settings_w = xfce_rc_simple_open(file, false);
g_free(file);
// Ensuring default group is in focus
- xfce_rc_set_group(settings, "[NULL]");
+ xfce_rc_set_group(settings_w, "[NULL]");
// Updating configuration
- xfce_rc_write_entry(settings, "viewer_font", font_details.c_str());
+ xfce_rc_write_entry(settings_w, "viewer_font", font_details.c_str());
// Close settings file
- xfce_rc_close(settings);
+ xfce_rc_close(settings_w);
}
else
{
diff --git a/src/ui.glade b/src/ui.glade
index f13b4e6..0eafc28 100644
--- a/src/ui.glade
+++ b/src/ui.glade
@@ -1,2328 +1,1902 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
+<?xml version="1.0" encoding="UTF-8"?>
<glade-interface>
-<requires lib="gnome"/>
-
-<widget class="GtkWindow" id="preferences_window">
- <property name="border_width">12</property>
- <property name="title" translatable="yes">Hardware Monitor Preferences</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">False</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
- <property name="focus_on_map">True</property>
- <property name="urgency_hint">False</property>
-
- <child>
- <widget class="GtkVBox" id="outer_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkNotebook" id="notebook">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="show_tabs">True</property>
- <property name="show_border">True</property>
- <property name="tab_pos">GTK_POS_TOP</property>
- <property name="scrollable">False</property>
- <property name="enable_popup">False</property>
-
- <child>
- <widget class="GtkVBox" id="devices_outer_vbox">
- <property name="border_width">12</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="devices_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Devices</b></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="monitors_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkVBox" id="monitors_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkLabel" id="monitors_header">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Monitored devices:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">monitor_treeview</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkTable" id="monitors_table">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">18</property>
-
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow">
- <property name="width_request">250</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
- <child>
- <widget class="GtkTreeView" id="monitor_treeview">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="headers_visible">False</property>
- <property name="rules_hint">False</property>
- <property name="reorderable">False</property>
- <property name="enable_search">True</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVButtonBox" id="monitor_buttonbox">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_START</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkButton" id="add_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
-
- <child>
- <widget class="GtkHBox" id="add_dummy">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="add_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Add</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">12</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="remove_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
-
- <child>
- <widget class="GtkHBox" id="remove_dummy">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="remove_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Remove</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">12</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="change_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
-
- <child>
- <widget class="GtkHBox" id="change_dummy">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="change_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">C_hange</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">12</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">shrink</property>
- <property name="y_options">shrink</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="monitor_options">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkVBox" id="monitor_curve_options">
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkHBox" id="line_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">18</property>
-
- <child>
- <widget class="GtkHBox" id="line_color_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="line_color_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">C_olor:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">line_colorbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkColorButton" id="line_colorbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="use_alpha">True</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="monitor_bar_options">
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkHBox" id="bar_color_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="bar_color_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">C_olor:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">bar_colorbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkColorButton" id="bar_colorbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="use_alpha">True</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="monitor_column_options">
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkHBox" id="column_color_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="column_color_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">C_olor:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">column_colorbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkColorButton" id="column_colorbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="use_alpha">True</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="monitor_flame_options">
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkHBox" id="flame_color_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="flame_color_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">C_olor:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">flame_colorbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkColorButton" id="flame_colorbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="use_alpha">True</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="monitor_vbar_options">
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkHBox" id="vbar_color_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="vbar_color_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">C_olor:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">bar_colorbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkColorButton" id="vbar_colorbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="use_alpha">True</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">expand|shrink|fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">12</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="devices_tab_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Devices</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="viewer_vbox">
- <property name="border_width">12</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">18</property>
-
- <child>
- <widget class="GtkVBox" id="viewer_outer_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="viewer_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Viewer</b></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="viewer_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkTable" id="radio_table">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">3</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">12</property>
- <property name="column_spacing">12</property>
-
- <child>
- <widget class="GtkRadioButton" id="curve_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Monitor devices using line graphs</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">C_urves</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">True</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="bar_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Monitor devices using horizontal bars</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Horizontal bars</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">curve_radiobutton</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="flame_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Monitor devices using fluctuating flames</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Flames</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">curve_radiobutton</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="column_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Monitor devices using solid columns</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">C_olumns</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">curve_radiobutton</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="text_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Monitor devices using text descriptions</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Text</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">curve_radiobutton</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="vbar_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Monitor devices using vertical bars</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Vertical bars</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">curve_radiobutton</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">12</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="size_outer_vbox">
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="size_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Size</b></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="size_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkHBox" id="size_scale_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="size_small_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><i>Small</i></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_RIGHT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHScale" id="size_scale">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="draw_value">False</property>
- <property name="value_pos">GTK_POS_TOP</property>
- <property name="digits">0</property>
- <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property>
- <property name="inverted">False</property>
- <property name="adjustment">0 0 9 1 1 0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="size_large_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><i>Large</i></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">12</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="font_outer_vbox">
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="font_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Font</b></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="font_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkHBox" id="font_picker_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkCheckButton" id="font_checkbutton">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Use this f_ont:</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkFontButton" id="fontbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="title" translatable="yes">Choose a Font</property>
- <property name="show_style">True</property>
- <property name="show_size">True</property>
- <property name="use_font">False</property>
- <property name="use_size">False</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">12</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="viewer_tab_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Viewer</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="background_outer_vbox">
- <property name="border_width">12</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="background_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><b>Background</b></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="background_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkVBox" id="background_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkRadioButton" id="panel_background_radiobutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Use _panel background</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="background_color_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkRadioButton" id="background_color_radiobutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Use _this color:</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">panel_background_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkColorButton" id="background_colorbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="use_alpha">False</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">12</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="background_tab_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Background</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHButtonBox" id="action_buttonbox">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkButton" id="close_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-close</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
-</widget>
-
-<widget class="GtkDialog" id="choose_monitor_window">
- <property name="border_width">12</property>
- <property name="title" translatable="yes">Choose a Device</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">True</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
- <property name="focus_on_map">True</property>
- <property name="urgency_hint">False</property>
- <property name="has_separator">False</property>
-
- <child internal-child="vbox">
- <widget class="GtkVBox" id="outer_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="action_area">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
-
- <child>
- <widget class="GtkButton" id="help_button">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-help</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="response_id">-11</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="cancel_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="response_id">-6</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="ok_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="response_id">-5</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkNotebook" id="device_notebook">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="show_tabs">True</property>
- <property name="show_border">True</property>
- <property name="tab_pos">GTK_POS_TOP</property>
- <property name="scrollable">False</property>
- <property name="enable_popup">False</property>
-
- <child>
- <widget class="GtkVBox" id="system_vbox">
- <property name="border_width">12</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkVBox" id="cpu_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkRadioButton" id="cpu_usage_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">The percentage of time that is spent running foreground processes</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">C_PU usage</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">True</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="cpu_usage_options">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkVBox" id="cpu_choose_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkRadioButton" id="all_cpus_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Monitor all CPUs</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">All CPUs</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="cpu_no_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkRadioButton" id="one_cpu_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Monitor only a single CPU</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Only CPU:</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">all_cpus_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkSpinButton" id="cpu_no_spinbutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Which CPU no. to monitor</property>
- <property name="can_focus">True</property>
- <property name="climb_rate">1</property>
- <property name="digits">0</property>
- <property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_IF_VALID</property>
- <property name="snap_to_ticks">False</property>
- <property name="wrap">False</property>
- <property name="adjustment">1 1 33 1 10 10</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">18</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="load_average_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">A running average of the number of simultanous processes</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Load average</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">cpu_usage_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="system_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">System</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="storage_vbox">
- <property name="border_width">12</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkVBox" id="disk_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkRadioButton" id="disk_usage_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">The amount of disk space used</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Disk usage</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">cpu_usage_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="disk_usage_options">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkVBox" id="disk_usage_options_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkHBox" id="mount_dir_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkLabel" id="mount_dir_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Folder:</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkEntry" id="mount_dir_entry">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Enter a folder residing on the disk to monitor</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes">/</property>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkCheckButton" id="show_free_checkbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Show _free space instead of used</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">18</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="memory_usage_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">The amount of memory used</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Memory usage</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">cpu_usage_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkRadioButton" id="swap_usage_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">The amount of disk-based memory used</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Swap usage</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">cpu_usage_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="storage_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Storage</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="network_vbox">
- <property name="border_width">12</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkVBox" id="network_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkRadioButton" id="network_load_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">The amount of data sent through a network connection</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Network throughput</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">cpu_usage_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="network_load_options">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkTable" id="network_load_options_table">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">12</property>
-
- <child>
- <widget class="GtkOptionMenu" id="network_type_optionmenu">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Type of connection - Ethernet is the most common local area network adapter type</property>
- <property name="can_focus">True</property>
- <property name="history">0</property>
-
- <child>
- <widget class="GtkMenu" id="menu1">
-
- <child>
- <widget class="GtkMenuItem" id="ethernet1_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Ethernet (first)</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="ethernet2_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Ethernet (second)</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="ethernet3_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Ethernet (third)</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="modem_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Modem</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="serial_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Serial link</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="wireless_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Wireless</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="direction_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Direction:</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkOptionMenu" id="network_direction_optionmenu">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Select whether to monitor incoming or outgoing data or both</property>
- <property name="can_focus">True</property>
- <property name="history">0</property>
-
- <child>
- <widget class="GtkMenu" id="menu2">
-
- <child>
- <widget class="GtkMenuItem" id="all_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">All data</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="in_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Incoming data</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkMenuItem" id="out_item">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Outgoing data</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="network_type_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Connection:</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">network_type_optionmenu</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"></property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">18</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="network_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Network</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="temperature_vbox">
- <property name="border_width">12</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkVBox" id="temperature_box">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkRadioButton" id="temperature_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">The temperature of the inside of the system</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Temperature</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">cpu_usage_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="temperature_options">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkOptionMenu" id="temperature_optionmenu">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Select the sensor to monitor</property>
- <property name="can_focus">True</property>
- <property name="history">0</property>
-
- <child>
- <widget class="GtkMenu" id="menu3">
-
- <child>
- <widget class="GtkMenuItem" id="no_sensors">
- <property name="visible">True</property>
- <property name="label" translatable="yes">No sensors detected</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">18</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="fan_speed_box">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkRadioButton" id="fan_speed_radiobutton">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">The speed of the fans</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Fan speed</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">cpu_usage_radiobutton</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="fan_speed_options">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="homogeneous">False</property>
- <property name="spacing">12</property>
-
- <child>
- <widget class="GtkOptionMenu" id="fan_speed_optionmenu">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Select the sensor to monitor</property>
- <property name="can_focus">True</property>
- <property name="history">0</property>
-
- <child>
- <widget class="GtkMenu" id="menu4">
-
- <child>
- <widget class="GtkMenuItem" id="no_sensors">
- <property name="visible">True</property>
- <property name="label" translatable="yes">No sensors detected</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">18</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="temperature_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Temperature</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- </child>
-</widget>
-
+ <!-- interface-requires gtk+ 2.16 -->
+ <!-- interface-naming-policy toplevel-contextual -->
+ <widget class="GtkDialog" id="choose_monitor_window">
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="title" translatable="yes">Choose a Device</property>
+ <property name="modal">True</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="outer_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="action_area">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <widget class="GtkButton" id="help_button">
+ <property name="label">gtk-help</property>
+ <property name="response_id">-11</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="cancel_button">
+ <property name="label">gtk-cancel</property>
+ <property name="response_id">-6</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="ok_button">
+ <property name="label">gtk-ok</property>
+ <property name="response_id">-5</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkNotebook" id="device_notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <widget class="GtkVBox" id="system_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkVBox" id="cpu_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkRadioButton" id="cpu_usage_radiobutton">
+ <property name="label" translatable="yes">C_PU usage</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">The percentage of time that is spent running foreground processes</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="cpu_usage_options">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkVBox" id="cpu_choose_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkRadioButton" id="all_cpus_radiobutton">
+ <property name="label" translatable="yes">All CPUs</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Monitor all CPUs</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="cpu_no_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkRadioButton" id="one_cpu_radiobutton">
+ <property name="label" translatable="yes">Only CPU:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Monitor only a single CPU</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">all_cpus_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="cpu_no_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Which CPU no. to monitor</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">1 1 33 1 10 0</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">if-valid</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">18</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="load_average_radiobutton">
+ <property name="label" translatable="yes">_Load average</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">A running average of the number of simultanous processes</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">cpu_usage_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="system_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">System</property>
+ </widget>
+ <packing>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="storage_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkVBox" id="disk_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkRadioButton" id="disk_usage_radiobutton">
+ <property name="label" translatable="yes">_Disk usage</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">The amount of disk space used</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">cpu_usage_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="disk_usage_options">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkVBox" id="disk_usage_options_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkHBox" id="mount_dir_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="mount_dir_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Folder:</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="mount_dir_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Enter a folder residing on the disk to monitor</property>
+ <property name="text" translatable="yes">/</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="primary_icon_sensitive">True</property>
+ <property name="secondary_icon_sensitive">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="show_free_checkbutton">
+ <property name="label" translatable="yes">Show _free space instead of used</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">18</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="memory_usage_radiobutton">
+ <property name="label" translatable="yes">_Memory usage</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">The amount of memory used</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">cpu_usage_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="swap_usage_radiobutton">
+ <property name="label" translatable="yes">_Swap usage</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">The amount of disk-based memory used</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">cpu_usage_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="storage_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Storage</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="network_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkVBox" id="network_vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkRadioButton" id="network_load_radiobutton">
+ <property name="label" translatable="yes">_Network throughput</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">The amount of data sent through a network connection</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">cpu_usage_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="network_load_options">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkTable" id="network_load_options_table">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <widget class="GtkOptionMenu" id="network_type_optionmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Type of connection - Ethernet is the most common local area network adapter type</property>
+ <child>
+ <widget class="GtkMenu" id="menu1">
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkMenuItem" id="ethernet1_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Ethernet (first)</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="ethernet2_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Ethernet (second)</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="ethernet3_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Ethernet (third)</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="modem_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Modem</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="serial_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Serial link</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="wireless1_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Wireless (first)</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="wireless2_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Wireless (second)</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="wireless3_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Wireless (third)</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="direction_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Direction:</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkOptionMenu" id="network_direction_optionmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Select whether to monitor incoming or outgoing data or both</property>
+ <child>
+ <widget class="GtkMenu" id="menu2">
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkMenuItem" id="all_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">All data</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="in_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Incoming data</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="out_item">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Outgoing data</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="network_type_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Connection:</property>
+ <property name="mnemonic_widget">network_type_optionmenu</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">18</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <widget class="GtkVBox" id="network_vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkTreeView" id="network_interfaces_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <widget class="GtkVButtonBox" id="vbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkButton" id="network_interfaces_restore_defaults_button">
+ <property name="label" translatable="yes">Restore Defaults</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Advanced</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="network_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Network</property>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="temperature_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkVBox" id="temperature_box">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkRadioButton" id="temperature_radiobutton">
+ <property name="label" translatable="yes">_Temperature</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">The temperature of the inside of the system</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">cpu_usage_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="temperature_options">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkOptionMenu" id="temperature_optionmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Select the sensor to monitor</property>
+ <child>
+ <widget class="GtkMenu" id="menu3">
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkMenuItem" id="no_sensors">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">No sensors detected</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">18</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="fan_speed_box">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkRadioButton" id="fan_speed_radiobutton">
+ <property name="label" translatable="yes">_Fan speed</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">The speed of the fans</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">cpu_usage_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="fan_speed_options">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkOptionMenu" id="fan_speed_optionmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Select the sensor to monitor</property>
+ <child>
+ <widget class="GtkMenu" id="menu4">
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkMenuItem" id="no_sensors1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">No sensors detected</property>
+ <property name="use_underline">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">18</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="temperature_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Temperature</property>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="GtkWindow" id="preferences_window">
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="title" translatable="yes">Hardware Monitor Preferences</property>
+ <child>
+ <widget class="GtkVBox" id="outer_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <widget class="GtkVBox" id="devices_outer_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="devices_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Devices</b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="monitors_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkVBox" id="monitors_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkLabel" id="monitors_header">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Monitored devices:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">monitor_treeview</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkTable" id="monitors_table">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">18</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow">
+ <property name="width_request">250</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <widget class="GtkTreeView" id="monitor_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVButtonBox" id="monitor_buttonbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">start</property>
+ <child>
+ <widget class="GtkButton" id="add_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <child>
+ <widget class="GtkHBox" id="add_dummy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="add_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="xpad">12</property>
+ <property name="label" translatable="yes">_Add</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="remove_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <child>
+ <widget class="GtkHBox" id="remove_dummy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="remove_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="xpad">12</property>
+ <property name="label" translatable="yes">_Remove</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="change_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <child>
+ <widget class="GtkHBox" id="change_dummy">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel" id="change_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="xpad">12</property>
+ <property name="label" translatable="yes">C_hange</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_SHRINK</property>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="monitor_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkVBox" id="monitor_curve_options">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkHBox" id="line_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">18</property>
+ <child>
+ <widget class="GtkHBox" id="line_color_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="line_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">C_olor:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">line_colorbutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkColorButton" id="line_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_alpha">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="monitor_bar_options">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkHBox" id="bar_color_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="bar_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">C_olor:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">bar_colorbutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkColorButton" id="bar_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_alpha">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="monitor_column_options">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkHBox" id="column_color_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="column_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">C_olor:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">column_colorbutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkColorButton" id="column_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_alpha">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="monitor_flame_options">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkHBox" id="flame_color_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="flame_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">C_olor:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">flame_colorbutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkColorButton" id="flame_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_alpha">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="monitor_vbar_options">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkHBox" id="vbar_color_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="vbar_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">C_olor:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">bar_colorbutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkColorButton" id="vbar_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_alpha">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">12</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="devices_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Devices</property>
+ </widget>
+ <packing>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="viewer_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">18</property>
+ <child>
+ <widget class="GtkVBox" id="viewer_outer_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="viewer_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Viewer</b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="viewer_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkTable" id="radio_table">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">12</property>
+ <child>
+ <widget class="GtkRadioButton" id="curve_radiobutton">
+ <property name="label" translatable="yes">C_urves</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Monitor devices using line graphs</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="bar_radiobutton">
+ <property name="label" translatable="yes">_Horizontal bars</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Monitor devices using horizontal bars</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">curve_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="flame_radiobutton">
+ <property name="label" translatable="yes">_Flames</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Monitor devices using fluctuating flames</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">curve_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="column_radiobutton">
+ <property name="label" translatable="yes">C_olumns</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Monitor devices using solid columns</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">curve_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="text_radiobutton">
+ <property name="label" translatable="yes">_Text</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Monitor devices using text descriptions</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">curve_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="vbar_radiobutton">
+ <property name="label" translatable="yes">_Vertical bars</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip" translatable="yes">Monitor devices using vertical bars</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">curve_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">12</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="size_outer_vbox">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Size</b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="size_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHBox" id="size_scale_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="size_small_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes"><i>Small</i></property>
+ <property name="use_markup">True</property>
+ <property name="justify">right</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="size_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="update_policy">discontinuous</property>
+ <property name="adjustment">0 0 9 1 1 0</property>
+ <property name="digits">0</property>
+ <property name="draw_value">False</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="size_large_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes"><i>Large</i></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">12</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="font_outer_vbox">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="font_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Font</b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="font_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkHBox" id="font_picker_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkCheckButton" id="font_checkbutton">
+ <property name="label" translatable="yes">Use this f_ont:</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFontButton" id="fontbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="title" translatable="yes">Choose a Font</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">12</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="viewer_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Viewer</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="background_outer_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="background_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Background</b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="background_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkVBox" id="background_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkRadioButton" id="panel_background_radiobutton">
+ <property name="label" translatable="yes">Use _panel background</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="background_color_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkRadioButton" id="background_color_radiobutton">
+ <property name="label" translatable="yes">Use _this color:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">panel_background_radiobutton</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkColorButton" id="background_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">12</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="background_tab_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Background</property>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHButtonBox" id="action_buttonbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <property name="layout_style">end</property>
+ <child>
+ <widget class="GtkButton" id="close_button">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
</glade-interface>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list