This is an automated email from the git hooks/post-receive script. o m e g a p h i l p u s h e d a c o m m i t t o b r a n c h m a s t e r in repository panel-plugins/xfce4-hardware-monitor-plugin.
commit c2e9777a8e5265f06ed3423c3bfc669661fe91af Author: OmegaPhil <[email protected]> Date: Sat Dec 9 14:06:52 2017 +0000 Implement proper debug logging function when needed --- src/choose-monitor-window.cpp | 46 ++++++++------ src/choose-monitor-window.hpp | 4 +- src/monitor-impls.cpp | 142 +++++++++++++++++++++++++++++------------- src/monitor-impls.hpp | 25 ++++---- src/monitor.hpp | 16 +++-- src/plugin.cpp | 35 ++++++++++- src/plugin.hpp | 8 +++ src/preferences-window.cpp | 2 +- 8 files changed, 195 insertions(+), 83 deletions(-) diff --git a/src/choose-monitor-window.cpp b/src/choose-monitor-window.cpp index 57f9f52..42b7e4e 100644 --- a/src/choose-monitor-window.cpp +++ b/src/choose-monitor-window.cpp @@ -28,15 +28,15 @@ #include "choose-monitor-window.hpp" #include "gui-helpers.hpp" #include "monitor-impls.hpp" +#include "plugin.hpp" #include "ucompose.hpp" // Static intialisation ChooseMonitorWindow::NetworkInterfacesNamesCols ChooseMonitorWindow::nc; -ChooseMonitorWindow::ChooseMonitorWindow(XfcePanelPlugin* xfce_plugin, - Gtk::Window &parent) - : xfce_plugin(xfce_plugin) +ChooseMonitorWindow::ChooseMonitorWindow(Plugin& plugin, Gtk::Window &parent) + : plugin_priv(plugin) { // Now we are forced to use top-level widgets this is much more over the top... std::vector<Glib::ustring> objects(22); @@ -414,7 +414,7 @@ ChooseMonitorWindow::ChooseMonitorWindow(XfcePanelPlugin* xfce_plugin, (*iter)[nc.interface_type] = NetworkLoadMonitor:: interface_type_to_string(interface_type, false); (*iter)[nc.interface_name] = NetworkLoadMonitor:: - get_interface_name(interface_type, xfce_plugin); + get_interface_name(interface_type, plugin_priv.xfce_plugin); } // Setup network direction combobox @@ -539,7 +539,7 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) { // Set up monitor // Search for settings file - gchar* file = xfce_panel_plugin_lookup_rc_file(xfce_plugin); + gchar* file = xfce_panel_plugin_lookup_rc_file(plugin_priv.xfce_plugin); if (file) { // Loading settings @@ -666,6 +666,12 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) bool fixed_max = xfce_rc_read_bool_entry(settings_ro, "fixed_max", false); disk_stats_fixed_max_checkbutton->set_active(fixed_max); disk_stats_max_spinbutton->set_value(max); + + // Debug code + /*plugin_priv.debug_log( + String::ucompose("XFCE4 Hardware Monitor Plugin: " + "ChooseMonitorWindow::run, disk stats monitor max " + "value: %1", max));*/ } else if (type == "swap_usage") { @@ -789,6 +795,10 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) bool fixed_max = xfce_rc_read_bool_entry(settings_ro, "fixed_max", false); network_load_fixed_max_checkbutton->set_active(fixed_max); network_load_max_spinbutton->set_value(max); + + // Debug code + /*std::cerr << "XFCE4 Hardware Monitor Plugin: ChooseMonitorWindow::run, " + "network load monitor max value: " << max << "\n";*/ } else if (type == "temperature") { @@ -936,28 +946,28 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) int(cpu_usage_refresh_delay_spinbutton->get_value() * 1000), cpu_usage_incl_low_checkbutton->get_active(), cpu_usage_incl_iowait_checkbutton->get_active(), - cpu_tag->get_text()); + cpu_tag->get_text(), plugin_priv); else mon = new CpuUsageMonitor( cpu_usage_fixed_max_checkbutton->get_active(), int(cpu_usage_refresh_delay_spinbutton->get_value() * 1000), cpu_usage_incl_low_checkbutton->get_active(), cpu_usage_incl_iowait_checkbutton->get_active(), - cpu_tag->get_text()); + cpu_tag->get_text(), plugin_priv); } else if (memory_usage_radiobutton->get_active()) { mon = new MemoryUsageMonitor( int(memory_refresh_delay_spinbutton->get_value() * 1000), memory_fixed_max_checkbutton->get_active(), - memory_usage_tag->get_text()); + memory_usage_tag->get_text(), plugin_priv); } else if (swap_usage_radiobutton->get_active()) { mon = new SwapUsageMonitor( int(swap_refresh_delay_spinbutton->get_value() * 1000), swap_fixed_max_checkbutton->get_active(), - swap_usage_tag->get_text()); + swap_usage_tag->get_text(), plugin_priv); } else if (load_average_radiobutton->get_active()) { @@ -965,7 +975,7 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) int(load_average_refresh_delay_spinbutton->get_value() * 1000), load_average_fixed_max_checkbutton->get_active(), load_average_max_spinbutton->get_value(), - load_average_tag->get_text()); + load_average_tag->get_text(), plugin_priv); } else if (disk_usage_radiobutton->get_active()) { @@ -999,7 +1009,7 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) mon = new DiskUsageMonitor(mount_dir, show_free, int(disk_usage_refresh_delay_spinbutton->get_value() * 1000), disk_usage_fixed_max_checkbutton->get_active(), - disk_usage_tag->get_text()); + disk_usage_tag->get_text(), plugin_priv); } else if (disk_stats_radiobutton->get_active()) { @@ -1042,7 +1052,7 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) int(disk_stats_refresh_delay_spinbutton->get_value() * 1000), disk_stats_fixed_max_checkbutton->get_active(), disk_stats_max_spinbutton->get_value(), - disk_stats_tag->get_text()); + disk_stats_tag->get_text(), plugin_priv); } else if (network_load_radiobutton->get_active()) { @@ -1088,7 +1098,7 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) int(network_load_refresh_delay_spinbutton->get_value() * 1000), network_load_fixed_max_checkbutton->get_active(), network_load_max_spinbutton->get_value(), - network_load_tag->get_text(), xfce_plugin); + network_load_tag->get_text(), plugin_priv); } else if (temperature_radiobutton->get_active()) { @@ -1096,7 +1106,7 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) int(temperature_refresh_delay_spinbutton->get_value() * 1000), temperature_fixed_max_checkbutton->get_active(), temperature_max_spinbutton->get_value(), - temperature_tag->get_text()); + temperature_tag->get_text(), plugin_priv); } else if (fan_speed_radiobutton->get_active()) { @@ -1104,7 +1114,7 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) int(fan_speed_refresh_delay_spinbutton->get_value() * 1000), fan_fixed_max_checkbutton->get_active(), fan_max_spinbutton->get_value(), - fan_speed_tag->get_text()); + fan_speed_tag->get_text(), plugin_priv); } else if (generic_radiobutton->get_active()) { @@ -1242,7 +1252,7 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir) int(generic_refresh_delay_spinbutton->get_value() * 1000), generic_fixed_max_checkbutton->get_active(), generic_max_spinbutton->get_value(), - generic_tag->get_text()); + generic_tag->get_text(), plugin_priv); } return mon; @@ -1371,7 +1381,7 @@ void ChooseMonitorWindow::on_network_interface_name_edited( // Setting and saving the real value NetworkLoadMonitor::set_interface_name(inter_type, new_text); - gchar* file = xfce_panel_plugin_save_location(xfce_plugin, true); + gchar* file = xfce_panel_plugin_save_location(plugin_priv.xfce_plugin, true); if (file) { XfceRc* settings_w = xfce_rc_simple_open(file, false); @@ -1414,7 +1424,7 @@ void ChooseMonitorWindow::on_network_interfaces_restore_defaults_button_clicked( } // Updating storage vector and saving - gchar* file = xfce_panel_plugin_save_location(xfce_plugin, true); + gchar* file = xfce_panel_plugin_save_location(plugin_priv.xfce_plugin, true); if (file) { XfceRc* settings_w = xfce_rc_simple_open(file, false); diff --git a/src/choose-monitor-window.hpp b/src/choose-monitor-window.hpp index 2f0ab97..73f106f 100644 --- a/src/choose-monitor-window.hpp +++ b/src/choose-monitor-window.hpp @@ -52,7 +52,7 @@ public: /* xfce_plugin is required here as the user can edit NetworkLoadMonitor * interface names through a settings dialog, and this needs special saving */ - ChooseMonitorWindow(XfcePanelPlugin* xfce_plugin, Gtk::Window &parent); + ChooseMonitorWindow(Plugin& plugin, Gtk::Window &parent); ~ChooseMonitorWindow(); // given a monitor directory (may be ""), return a new monitor or 0 @@ -129,7 +129,7 @@ private: *generic_change_in_value_negative_radiobutton, *generic_change_in_value_both_radiobutton; - XfcePanelPlugin* xfce_plugin; + Plugin& plugin_priv; // For disk statistics device name combobox class DiskStatsDeviceNameCols: public Gtk::TreeModel::ColumnRecord diff --git a/src/monitor-impls.cpp b/src/monitor-impls.cpp index 49c6a9a..237204d 100644 --- a/src/monitor-impls.cpp +++ b/src/monitor-impls.cpp @@ -41,6 +41,7 @@ #include <sys/time.h> // For high-precision timing for network load and disk // read/write speed +#include "plugin.hpp" #include "monitor-impls.hpp" #include "ucompose.hpp" #include "i18n.hpp" @@ -56,7 +57,7 @@ double const max_decay = 0.999; // std::list<Monitor *> -load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) +load_monitors(XfceRc *settings_ro, Plugin& plugin) { std::list<Monitor *> monitors; @@ -87,7 +88,20 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) * unstringify the double */ double max; std::stringstream s(xfce_rc_read_entry(settings_ro, "max", "0")); - s >> max; + + // Debug code + /*plugin.debug_log( + String::ucompose("XFCE4 Hardware Monitor Plugin: " + "ChooseMonitorWindow::run, disk stats monitor max " + "value: %1", max));*/ + + if (!(s >> max)) + { + /*plugin.debug_log("XFCE4 Hardware Monitor Plugin: Max loading from" + " stringstream failed!");*/ + std::cerr << "XFCE4 Hardware Monitor Plugin: Max loading for monitor " + << settings_monitors[i] << " from stringstream failed!\n"; + } bool fixed_max = xfce_rc_read_bool_entry(settings_ro, "fixed_max", false); @@ -110,13 +124,13 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) { monitors.push_back(new CpuUsageMonitor(fixed_max, incl_low_prio, incl_iowait, update_interval, - tag)); + tag, plugin)); } else { monitors.push_back(new CpuUsageMonitor(cpu_no, fixed_max, incl_low_prio, incl_iowait, - update_interval, tag)); + update_interval, tag, plugin)); } } else if (type == "memory_usage") @@ -126,7 +140,7 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) update_interval = MemoryUsageMonitor::update_interval_default; monitors.push_back(new MemoryUsageMonitor(update_interval, fixed_max, - tag)); + tag, plugin)); } else if (type == "swap_usage") { @@ -134,7 +148,8 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) if (update_interval == -1) update_interval = SwapUsageMonitor::update_interval_default; - monitors.push_back(new SwapUsageMonitor(update_interval, fixed_max, tag)); + monitors.push_back(new SwapUsageMonitor(update_interval, fixed_max, + tag, plugin)); } else if (type == "load_average") { @@ -143,7 +158,7 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) update_interval = LoadAverageMonitor::update_interval_default; monitors.push_back(new LoadAverageMonitor(update_interval, fixed_max, - max, tag)); + max, tag, plugin)); } else if (type == "disk_usage") { @@ -161,7 +176,8 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) // Creating disk usage monitor monitors.push_back(new DiskUsageMonitor(mount_dir, show_free, - update_interval, fixed_max, tag)); + update_interval, fixed_max, + tag, plugin)); } else if (type == "disk_statistics") { @@ -180,7 +196,14 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) // Creating disk statistics monitor monitors.push_back(new DiskStatsMonitor(device_name, stat, update_interval, fixed_max, max, - tag)); + tag, plugin)); + + // Debug code + /* + plugin.debug_log( + String::ucompose("XFCE4 Hardware Monitor Plugin: " + "Disk stats monitor max value on load: %1", max)); + */ } else if (type == "network_load") { @@ -212,7 +235,7 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) 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); + gchar* file = xfce_panel_plugin_save_location(plugin.xfce_plugin, true); if (file) { XfceRc* settings_w = xfce_rc_simple_open(file, false); @@ -270,7 +293,14 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) // Creating network load monitor monitors.push_back(new NetworkLoadMonitor(inter_type, inter_direction, update_interval, fixed_max, - max, tag, panel_plugin)); + max, tag, plugin)); + + // Debug code + /* + plugin.debug_log( + String::ucompose("XFCE4 Hardware Monitor Plugin: " + "Network load monitor max value on load: %1", max)); + */ } else if (type == "temperature") { @@ -285,7 +315,7 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) // Creating temperature monitor monitors.push_back(new TemperatureMonitor(temperature_no, update_interval, fixed_max, - max, tag)); + max, tag, plugin)); } else if (type == "fan_speed") { @@ -298,7 +328,7 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) // Creating fan monitor monitors.push_back(new FanSpeedMonitor(fan_no, update_interval, - fixed_max, max, tag)); + fixed_max, max, tag, plugin)); } else if (type == "generic") @@ -345,7 +375,7 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) data_source_name_long, data_source_name_short, units_long, units_short, update_interval, - fixed_max, max, tag)); + fixed_max, max, tag, plugin)); } // Saving the monitor's settings root @@ -358,7 +388,7 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin) // Always start with a CpuUsageMonitor if (monitors.empty()) - monitors.push_back(new CpuUsageMonitor(true, false, false, 1000, "")); + monitors.push_back(new CpuUsageMonitor(true, false, false, 1000, "", plugin)); return monitors; } @@ -508,18 +538,20 @@ int const CpuUsageMonitor::update_interval_default = 1000; CpuUsageMonitor::CpuUsageMonitor(bool fixed_max, bool incl_low_prio, bool incl_iowait, int interval, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), cpu_no(all_cpus), fixed_max_priv(fixed_max), - incl_low_prio_priv(incl_low_prio), incl_iowait_priv(incl_iowait), - total_time(0), nice_time(0), idle_time(0), iowait_time(0) + const Glib::ustring &tag_string, Plugin& plugin) + : Monitor(tag_string, interval, plugin), cpu_no(all_cpus), + fixed_max_priv(fixed_max), incl_low_prio_priv(incl_low_prio), + incl_iowait_priv(incl_iowait), total_time(0), nice_time(0), idle_time(0), + iowait_time(0) {} CpuUsageMonitor::CpuUsageMonitor(int cpu, bool fixed_max, bool incl_low_prio, bool incl_iowait, int interval, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), cpu_no(cpu), fixed_max_priv(fixed_max), - incl_low_prio_priv(incl_low_prio), incl_iowait_priv(incl_iowait), - total_time(0), nice_time(0), idle_time(0), iowait_time(0) + const Glib::ustring &tag_string, Plugin& plugin) + : Monitor(tag_string, interval, plugin), cpu_no(cpu), + fixed_max_priv(fixed_max), incl_low_prio_priv(incl_low_prio), + incl_iowait_priv(incl_iowait), total_time(0), nice_time(0), idle_time(0), + iowait_time(0) { if (cpu_no < 0 || cpu_no >= max_no_cpus) cpu_no = all_cpus; @@ -646,8 +678,10 @@ int CpuUsageMonitor::update_interval() int const SwapUsageMonitor::update_interval_default = 10 * 1000; SwapUsageMonitor::SwapUsageMonitor(int interval, bool fixed_max, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), max_value(0), fixed_max_priv(fixed_max) + const Glib::ustring &tag_string, + Plugin& plugin) + : Monitor(tag_string, interval, plugin), max_value(0), + fixed_max_priv(fixed_max) { } @@ -732,8 +766,10 @@ int SwapUsageMonitor::update_interval() int const LoadAverageMonitor::update_interval_default = 30 * 1000; LoadAverageMonitor::LoadAverageMonitor(int interval, bool fixed_max, double max, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), max_value(max), fixed_max_priv(fixed_max) + const Glib::ustring &tag_string, + Plugin& plugin) + : Monitor(tag_string, interval, plugin), max_value(max), + fixed_max_priv(fixed_max) { } @@ -835,8 +871,9 @@ int LoadAverageMonitor::update_interval() int const MemoryUsageMonitor::update_interval_default = 10 * 1000; MemoryUsageMonitor::MemoryUsageMonitor(int interval, bool fixed_max, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), max_value(0), fixed_max_priv(fixed_max) + const Glib::ustring &tag_string, + Plugin& plugin) + : Monitor(tag_string, interval, plugin), max_value(0), fixed_max_priv(fixed_max) { } @@ -921,9 +958,10 @@ int const DiskUsageMonitor::update_interval_default = 60 * 1000; DiskUsageMonitor::DiskUsageMonitor(const std::string &dir, bool free, int interval, bool fixed_max, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), max_value(0), fixed_max_priv(fixed_max), - mount_dir(dir), show_free(free) + const Glib::ustring &tag_string, + Plugin& plugin) + : Monitor(tag_string, interval, plugin), max_value(0), + fixed_max_priv(fixed_max), mount_dir(dir), show_free(free) { } @@ -1042,8 +1080,9 @@ int const DiskStatsMonitor::update_interval_default = 1000; DiskStatsMonitor::DiskStatsMonitor(const Glib::ustring &device_name, const Stat &stat_to_monitor, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), device_name(device_name), + const Glib::ustring &tag_string, + Plugin& plugin) + : Monitor(tag_string, interval, plugin), device_name(device_name), stat_to_monitor(stat_to_monitor), previous_value(-1), max_value(max), fixed_max_priv(fixed_max), time_stamp_secs(0), time_stamp_usecs(0) { @@ -1331,6 +1370,11 @@ void DiskStatsMonitor::save(XfceRc *settings_w) xfce_rc_write_int_entry(settings_w, "max", int(max_value)); xfce_rc_write_int_entry(settings_w, "update_interval", update_interval()); xfce_rc_write_entry(settings_w, "tag", tag.c_str()); + + // Debug code + /*plugin_priv.debug_log( + String::ucompose("XFCE4 Hardware Monitor Plugin: DiskStatsMonitor::save " + "ran - current max value: %1", max_value));*/ } void DiskStatsMonitor::set_fixed_max(bool fixed_max) @@ -1458,10 +1502,10 @@ bool NetworkLoadMonitor::interface_names_configured = false; NetworkLoadMonitor::NetworkLoadMonitor(InterfaceType &inter_type, Direction dir, int interval, bool fixed_max, double max, const Glib::ustring &tag_string, - XfcePanelPlugin* xfce_plugin) - : Monitor(tag_string, interval), max_value(max), fixed_max_priv(fixed_max), - byte_count(0), time_stamp_secs(0), time_stamp_usecs(0), - interface_type(inter_type), direction(dir), xfce_plugin(xfce_plugin) + Plugin& plugin) + : Monitor(tag_string, interval, plugin), max_value(max), + fixed_max_priv(fixed_max), byte_count(0), time_stamp_secs(0), + time_stamp_usecs(0), interface_type(inter_type), direction(dir) { } @@ -1718,7 +1762,8 @@ double NetworkLoadMonitor::do_measure() /* Obtaining interface name - this can change after monitor is instantiated * hence fetching each time */ - Glib::ustring interface = get_interface_name(interface_type, xfce_plugin); + Glib::ustring interface = get_interface_name(interface_type, + plugin_priv.xfce_plugin); glibtop_get_netload(&netload, interface.c_str()); guint64 val, measured_bytes; @@ -1987,6 +2032,11 @@ void NetworkLoadMonitor::save(XfceRc *settings_w) xfce_rc_write_int_entry(settings_w, "max", int(max_value)); xfce_rc_write_int_entry(settings_w, "update_interval", update_interval()); xfce_rc_write_entry(settings_w, "tag", tag.c_str()); + + // Debug code + /*plugin_priv.debug_log( + String::ucompose("XFCE4 Hardware Monitor Plugin: NetworkLoadMonitor::save " + "ran - current max value: %1", max_value));*/ } void NetworkLoadMonitor::save_interfaces(XfceRc *settings_w) @@ -2178,8 +2228,9 @@ int const TemperatureMonitor::update_interval_default = 20 * 1000; TemperatureMonitor::TemperatureMonitor(int no, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), sensors_no(no), max_value(max), + const Glib::ustring &tag_string, + Plugin& plugin) + : Monitor(tag_string, interval, plugin), sensors_no(no), max_value(max), fixed_max_priv(fixed_max) { Sensors::FeatureInfo info @@ -2285,8 +2336,8 @@ int const FanSpeedMonitor::update_interval_default = 20 * 1000; FanSpeedMonitor::FanSpeedMonitor(int no, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), sensors_no(no), max_value(max), + const Glib::ustring &tag_string, Plugin& plugin) + : Monitor(tag_string, interval, plugin), sensors_no(no), max_value(max), fixed_max_priv(fixed_max) { Sensors::FeatureInfo info @@ -2398,8 +2449,9 @@ GenericMonitor::GenericMonitor(const Glib::ustring &file_path, const Glib::ustring &units_long, const Glib::ustring &units_short, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string) - : Monitor(tag_string, interval), max_value(max), fixed_max_priv(fixed_max), + const Glib::ustring &tag_string, Plugin& plugin) + : Monitor(tag_string, interval, plugin), max_value(max), + fixed_max_priv(fixed_max), previous_value(std::numeric_limits<double>::min()), file_path(file_path), value_from_contents(value_from_contents), follow_change(follow_change), dir(dir), diff --git a/src/monitor-impls.hpp b/src/monitor-impls.hpp index d43c9bd..7a39459 100644 --- a/src/monitor-impls.hpp +++ b/src/monitor-impls.hpp @@ -51,12 +51,12 @@ public: // Monitor all CPUs CpuUsageMonitor(bool fixed_max, bool incl_low_prio, bool incl_iowait, - int interval, const Glib::ustring &tag_string); + int interval, const Glib::ustring &tag_string, Plugin& plugin); // Monitor only CPU no. CpuUsageMonitor(int cpu_no, bool fixed_max, bool incl_low_prio, bool incl_iowait, int interval, - const Glib::ustring &tag_string); + const Glib::ustring &tag_string, Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact = false); @@ -96,7 +96,8 @@ private: class SwapUsageMonitor: public Monitor { public: - SwapUsageMonitor(int interval, bool fixed_max, const Glib::ustring &tag_string); + SwapUsageMonitor(int interval, bool fixed_max, const Glib::ustring &tag_string, + Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact = false); @@ -125,7 +126,7 @@ class LoadAverageMonitor: public Monitor { public: LoadAverageMonitor(int interval, bool fixed_max, double max, - const Glib::ustring &tag_string); + const Glib::ustring &tag_string, Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact = false); @@ -158,7 +159,7 @@ class MemoryUsageMonitor: public Monitor { public: MemoryUsageMonitor(int interval, bool fixed_max, - const Glib::ustring &tag_string); + const Glib::ustring &tag_string, Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact = false); @@ -187,7 +188,8 @@ class DiskUsageMonitor: public Monitor { public: DiskUsageMonitor(const std::string &mount_dir, bool show_free, int interval, - bool fixed_max, const Glib::ustring &tag_string); + bool fixed_max, const Glib::ustring &tag_string, + Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact= false); @@ -237,7 +239,7 @@ public: DiskStatsMonitor(const Glib::ustring &device_name, const Stat &stat_to_monitor, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string); + const Glib::ustring &tag_string, Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact=false); @@ -315,8 +317,7 @@ public: NetworkLoadMonitor(InterfaceType &interface_type, Direction dir, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string, - XfcePanelPlugin *xfce_plugin); + const Glib::ustring &tag_string, Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact = false); @@ -395,7 +396,7 @@ public: // no. in the temperature features TemperatureMonitor(int no, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string); + const Glib::ustring &tag_string, Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact = false); @@ -429,7 +430,7 @@ public: // no. in the fan features FanSpeedMonitor(int no, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string); + const Glib::ustring &tag_string, Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact = false); @@ -479,7 +480,7 @@ public: const Glib::ustring &units_long, const Glib::ustring &units_short, int interval, bool fixed_max, double max, - const Glib::ustring &tag_string); + const Glib::ustring &tag_string, Plugin& plugin); virtual bool fixed_max(); virtual Glib::ustring format_value(double val, bool compact=false); diff --git a/src/monitor.hpp b/src/monitor.hpp index b98d235..f7b1746 100644 --- a/src/monitor.hpp +++ b/src/monitor.hpp @@ -31,12 +31,16 @@ extern "C" #include "helpers.hpp" +/* No use including plugin.hpp here - plugin.hpp itself includes monitor.hpp + * before the Plugin class is declared */ +class Plugin; class Monitor: noncopyable { public: - Monitor(const Glib::ustring &tag_string, int interval) - : measured_value(0), tag(tag_string), update_interval_priv(interval) + Monitor(const Glib::ustring &tag_string, int interval, Plugin& plugin) + : measured_value(0), tag(tag_string), update_interval_priv(interval), + plugin_priv(plugin) { } @@ -114,6 +118,9 @@ protected: double measured_value; int update_interval_priv; + /* This is maintained in order for debug logging */ + Plugin& plugin_priv; + private: // Perform actual measurement, for derived classes @@ -133,8 +140,9 @@ typedef monitor_seq::iterator monitor_iter; /* 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 plugin.hpp then? */ -typedef struct _XfcePanelPlugin XfcePanelPlugin; +//typedef struct _XfcePanelPlugin XfcePanelPlugin; +class Plugin; -monitor_seq load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin); +monitor_seq load_monitors(XfceRc *settings_ro, Plugin& plugin); #endif diff --git a/src/plugin.cpp b/src/plugin.cpp index 54e78f2..deebbbf 100644 --- a/src/plugin.cpp +++ b/src/plugin.cpp @@ -237,7 +237,9 @@ Plugin::Plugin(XfcePanelPlugin *xfce_plugin) * seems that it needs to be done in or after the mainloop kicks off */ // Loading up monitors - monitor_seq mon = load_monitors(settings_ro, xfce_plugin); + /* Plugin& is initialised from non-transient address of this ('this' itself + * is an rvalue so not allowed for a reference) */ + monitor_seq mon = load_monitors(settings_ro, *this); for (monitor_iter i = mon.begin(), end = mon.end(); i != end; ++i) add_monitor(*i); @@ -292,6 +294,9 @@ Plugin::Plugin(XfcePanelPlugin *xfce_plugin) Plugin::~Plugin() { + // Debug code + //std::cerr << "XFCE4 Hardware Monitor Plugin: Plugin destructor running...\n"; + timer.disconnect(); // Make sure noone is trying to read the monitors before we kill them @@ -843,3 +848,31 @@ void Plugin::on_about_activated() about->raise(); } } + +void Plugin::debug_log(const Glib::ustring &msg) +{ + /* When Plugin stream reference goes out of scope, it will be automatically + * flushed and closed etc */ + if (!debug_log_stream) + { + /* Work out a suitable log path in the same directory as the writeable + * configuration path for this instance of the plugin - 'create_for_path' + * doesn't actually create anything, but just instantiates the virtual + * File object */ + gchar* file_path = xfce_panel_plugin_save_location(xfce_plugin, FALSE); + Glib::RefPtr<Gio::File> file = Gio::File::create_for_path(file_path) + ->get_parent() + ->get_child( + String::ucompose("%1-debug.log", + xfce_panel_plugin_get_unique_id(xfce_plugin))); + g_free(file_path); + debug_log_stream = file->append_to(); + + // Debug code + std::cerr << "XFCE4 Hardware Monitor Plugin: Debug log file created at " + << file->get_path() << "\n"; + } + + debug_log_stream->write(String::ucompose("%1\n", msg)); + std::cerr << msg << "\n"; +} diff --git a/src/plugin.hpp b/src/plugin.hpp index 445b64e..a437f50 100644 --- a/src/plugin.hpp +++ b/src/plugin.hpp @@ -27,6 +27,7 @@ #include <sigc++/connection.h> +#include <giomm/file.h> #include <gtkmm/eventbox.h> #include <gtkmm/window.h> #include <gtkmm/tooltips.h> @@ -101,6 +102,12 @@ public: void remove_monitor(Monitor *monitor); // get rid of the monitor void replace_monitor(Monitor *prev_monitor, Monitor *new_monitor); + /* Log a message to a debug log file and output to stderr. Have had many + * examples of stderr messages resulting in supposedly no output from the + * perspective of xfce4-panel's stderr - this should demonstrate that the + * events actually happen */ + void debug_log(const Glib::ustring &msg); + // For opening settings file associated with the plugin XfcePanelPlugin *xfce_plugin; @@ -138,6 +145,7 @@ private: std::auto_ptr<View> view; std::auto_ptr<PreferencesWindow> preferences_window; Gtk::Tooltips tooltips; + Glib::RefPtr<Gio::OutputStream> debug_log_stream; friend void display_preferences(Plugin *plugin); friend void display_about(Plugin *plugin); diff --git a/src/preferences-window.cpp b/src/preferences-window.cpp index fdb1022..cc90ff1 100644 --- a/src/preferences-window.cpp +++ b/src/preferences-window.cpp @@ -1062,7 +1062,7 @@ bool PreferencesWindow::on_closed(GdkEventAny *) Monitor *PreferencesWindow::run_choose_monitor_window(const Glib::ustring &str) { - ChooseMonitorWindow chooser(plugin.xfce_plugin, *window); + ChooseMonitorWindow chooser(plugin, *window); return chooser.run(str); } -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list [email protected] https://mail.xfce.org/mailman/listinfo/xfce4-commits
