summaryrefslogtreecommitdiff
path: root/multiload/properties.c
diff options
context:
space:
mode:
authorMarian Gasparovic <[email protected]>2018-02-04 18:36:36 +0100
committerraveit65 <[email protected]>2018-02-04 19:15:28 +0100
commite6d55cba85fc49b3dfac8150c397540bda369847 (patch)
treede6d8272b079641679b718258d4be7d9adc1594d /multiload/properties.c
parent560c27fb0638d41fe39ad0e0719dd6153b17eea0 (diff)
downloadmate-applets-e6d55cba85fc49b3dfac8150c397540bda369847.tar.bz2
mate-applets-e6d55cba85fc49b3dfac8150c397540bda369847.tar.xz
Scaling network graph using thresholds defined by user
Diffstat (limited to 'multiload/properties.c')
-rw-r--r--multiload/properties.c240
1 files changed, 201 insertions, 39 deletions
diff --git a/multiload/properties.c b/multiload/properties.c
index 017f88da..9eb8683c 100644
--- a/multiload/properties.c
+++ b/multiload/properties.c
@@ -30,6 +30,9 @@
#define PROP_SPEED 6
#define PROP_SIZE 7
+#define PROP_NET_THRESHOLD1 8
+#define PROP_NET_THRESHOLD2 9
+#define PROP_NET_THRESHOLD3 10
#define HIG_IDENTATION " "
#define NEVER_SENSITIVE "never_sensitive"
@@ -83,17 +86,10 @@ properties_close_cb (GtkWidget *widget, gint arg, MultiloadApplet *ma)
{
case GTK_RESPONSE_HELP:
-#if GTK_CHECK_VERSION (3, 22, 0)
gtk_show_uri_on_window (NULL,
"help:mate-multiload/multiload-prefs",
gtk_get_current_event_time (),
&error);
-#else
- gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (ma->applet)),
- "help:mate-multiload/multiload-prefs",
- gtk_get_current_event_time (),
- &error);
-#endif
if (error) { /* FIXME: the user needs to see this */
g_warning ("help error: %s\n", error->message);
@@ -147,15 +143,16 @@ static void
spin_button_changed_cb(GtkWidget *widget, gpointer name)
{
MultiloadApplet *ma;
- gint value, prop_type, i;
+ gint value;
+ gint prop_type, i;
ma = g_object_get_data(G_OBJECT(widget), "MultiloadApplet");
prop_type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "prop_type"));
value = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
/* FIXME: the first toggle button to be checked/dechecked does not work, but after that everything is cool. what gives? */
- g_settings_set_int (ma->settings, (gchar *)name, value);
- g_settings_set_int (ma->settings, (gchar *)name, value);
+ g_settings_set_uint (ma->settings, (gchar *)name, value);
+ g_settings_set_uint (ma->settings, (gchar *)name, value);
switch(prop_type)
{
@@ -190,6 +187,51 @@ spin_button_changed_cb(GtkWidget *widget, gpointer name)
}
break;
+ case PROP_NET_THRESHOLD1:
+ {
+ if (value >= ma->graphs[2]->net_threshold2)
+ {
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),
+ (gdouble)g_settings_get_uint (ma->settings, "netthreshold2") - 1);
+ ma->graphs[2]->net_threshold1 = g_settings_get_uint (ma->settings, "netthreshold2") - 1;
+ }
+ else
+ ma->graphs[2]->net_threshold1 = value;
+
+ break;
+ }
+ case PROP_NET_THRESHOLD2:
+ {
+ if (value >= ma->graphs[2]->net_threshold3)
+ {
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),
+ (gdouble)g_settings_get_uint (ma->settings, "netthreshold3") - 1);
+ ma->graphs[2]->net_threshold2 = g_settings_get_uint (ma->settings, "netthreshold3") - 1;
+ }
+ else if (value <= ma->graphs[2]->net_threshold1)
+ {
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),
+ (gdouble)g_settings_get_uint (ma->settings, "netthreshold1") + 1);
+ ma->graphs[2]->net_threshold2 = g_settings_get_uint (ma->settings, "netthreshold1") + 1;
+ }
+ else
+ ma->graphs[2]->net_threshold2 = value;
+
+ break;
+ }
+ case PROP_NET_THRESHOLD3:
+ {
+ if (value <= ma->graphs[2]->net_threshold2)
+ {
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),
+ (gdouble)g_settings_get_uint (ma->settings, "netthreshold2") + 1);
+ ma->graphs[2]->net_threshold3 = g_settings_get_uint (ma->settings, "netthreshold2") + 1;
+ }
+ else
+ ma->graphs[2]->net_threshold3 = value;
+ break;
+ }
+
}
default:
g_assert_not_reached();
@@ -329,11 +371,7 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
label = gtk_label_new_with_mnemonic (_(title));
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
-#if GTK_CHECK_VERSION (3, 16, 0)
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
-#else
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-#endif
gtk_box_pack_start (GTK_BOX (category_vbox), label, FALSE, FALSE, 0);
g_free (title);
@@ -438,11 +476,7 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
label = gtk_label_new (title);
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
-#if GTK_CHECK_VERSION (3, 16, 0)
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
-#else
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-#endif
gtk_box_pack_start (GTK_BOX (category_vbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
g_free (title);
@@ -473,11 +507,7 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
label_text = g_strdup(_("System m_onitor height: "));
label = gtk_label_new_with_mnemonic(label_text);
-#if GTK_CHECK_VERSION (3, 16, 0)
gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
-#else
- gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-#endif
gtk_size_group_add_widget (label_size, label);
gtk_box_pack_start (GTK_BOX (control_hbox), label, FALSE, FALSE, 0);
@@ -506,11 +536,7 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
gtk_box_pack_start (GTK_BOX (hbox), spin_button, FALSE, FALSE, 0);
label = gtk_label_new (_("pixels"));
-#if GTK_CHECK_VERSION (3, 16, 0)
gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
-#else
- gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-#endif
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
control_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
@@ -518,11 +544,7 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
gtk_widget_show (control_hbox);
label = gtk_label_new_with_mnemonic(_("Sys_tem monitor update interval: "));
-#if GTK_CHECK_VERSION (3, 16, 0)
gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
-#else
- gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-#endif
gtk_size_group_add_widget (label_size, label);
gtk_box_pack_start (GTK_BOX (control_hbox), label, FALSE, FALSE, 0);
@@ -548,11 +570,7 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
}
label = gtk_label_new(_("milliseconds"));
-#if GTK_CHECK_VERSION (3, 16, 0)
gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
-#else
- gtk_misc_set_alignment (GTK_MISC (label), 0.0f, 0.5f);
-#endif
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
g_free(label_text);
@@ -566,11 +584,7 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
label = gtk_label_new (title);
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
-#if GTK_CHECK_VERSION (3, 16, 0)
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
-#else
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
-#endif
gtk_box_pack_start (GTK_BOX (category_vbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
g_free (title);
@@ -613,6 +627,8 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
add_color_selector(page, _("_Out"), "netload2-color1", ma);
add_color_selector (page, _("_Local"), "netload2-color2", ma);
add_color_selector(page, _("_Background"), "netload2-color3", ma);
+ add_color_selector(page, _("_Gridline"), "netload2-color4", ma);
+ add_color_selector(page, _("_Indicator"), "netload2-color5", ma);
page = add_page(ma->notebook, _("Swap Space"));
gtk_container_set_border_width (GTK_CONTAINER (page), 12);
@@ -623,7 +639,7 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
gtk_container_set_border_width (GTK_CONTAINER (page), 12);
add_color_selector(page, _("_Average"), "loadavg-color0", ma);
add_color_selector(page, _("_Background"), "loadavg-color1", ma);
- add_color_selector(page, _("_Gridline"), "loadavg-color2", ma);
+ add_color_selector(page, _("_Gridline"), "loadavg-color2", ma);
page = add_page (ma->notebook, _("Harddisk"));
gtk_container_set_border_width (GTK_CONTAINER (page), 12);
@@ -631,6 +647,152 @@ fill_properties(GtkWidget *dialog, MultiloadApplet *ma)
add_color_selector (page, _("_Write"), "diskload-color1", ma);
add_color_selector (page, _("_Background"), "diskload-color2", ma);
+ title = g_strconcat ("<span weight=\"bold\">", _("Network speed thresholds"), "</span>", NULL);
+ label = gtk_label_new (title);
+ gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+ gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
+ gtk_label_set_xalign (GTK_LABEL (label), 0.0);
+ gtk_box_pack_start (GTK_BOX (category_vbox), label, FALSE, FALSE, 0);
+ gtk_widget_show (label);
+ g_free (title);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ gtk_box_pack_start (GTK_BOX (category_vbox), hbox, TRUE, TRUE, 0);
+ gtk_widget_show (hbox);
+
+ indent = gtk_label_new (HIG_IDENTATION);
+ gtk_label_set_justify (GTK_LABEL (indent), GTK_JUSTIFY_LEFT);
+ gtk_box_pack_start (GTK_BOX (hbox), indent, FALSE, FALSE, 0);
+ gtk_widget_show (indent);
+
+ control_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+ gtk_box_pack_start (GTK_BOX (hbox), control_vbox, TRUE, TRUE, 0);
+ gtk_widget_show (control_vbox);
+
+ control_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_box_pack_start (GTK_BOX (control_vbox), control_hbox, TRUE, TRUE, 0);
+ gtk_widget_show (control_hbox);
+
+ label_size = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+ orient = mate_panel_applet_get_orient(ma->applet);
+ label_text = g_strdup(_("Threshold 1: "));
+ label = gtk_label_new_with_mnemonic(label_text);
+ gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
+ gtk_size_group_add_widget (label_size, label);
+ gtk_box_pack_start (GTK_BOX (control_hbox), label, FALSE, FALSE, 0);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_box_pack_start (GTK_BOX (control_hbox), hbox, TRUE, TRUE, 0);
+ gtk_widget_show (hbox);
+
+ spin_size = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+ spin_button = gtk_spin_button_new_with_range(10, 1000000000, 5);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button);
+ g_object_set_data(G_OBJECT(spin_button), "MultiloadApplet", ma);
+ g_object_set_data(G_OBJECT(spin_button), "prop_type",
+ GUINT_TO_POINTER(PROP_NET_THRESHOLD1));
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_button),
+ (gdouble)g_settings_get_uint(ma->settings, "netthreshold1"));
+ g_signal_connect(G_OBJECT(spin_button), "value_changed",
+ G_CALLBACK(spin_button_changed_cb), "netthreshold1");
+
+ if ( ! g_settings_is_writable (ma->settings, "netthreshold1"))
+ {
+ hard_set_sensitive (label, FALSE);
+ hard_set_sensitive (hbox, FALSE);
+ }
+
+ gtk_size_group_add_widget (spin_size, spin_button);
+ gtk_box_pack_start (GTK_BOX (hbox), spin_button, FALSE, FALSE, 0);
+
+ label = gtk_label_new (_("bytes"));
+ gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+ control_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_box_pack_start (GTK_BOX (control_vbox), control_hbox, TRUE, TRUE, 0);
+ gtk_widget_show (control_hbox);
+
+ label = gtk_label_new_with_mnemonic(_("Threshold 2: "));
+ gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
+ gtk_size_group_add_widget (label_size, label);
+ gtk_box_pack_start (GTK_BOX (control_hbox), label, FALSE, FALSE, 0);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_box_pack_start (GTK_BOX (control_hbox), hbox, TRUE, TRUE, 0);
+ gtk_widget_show (hbox);
+
+ spin_button = gtk_spin_button_new_with_range(10, 1000000000, 5);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button);
+ g_object_set_data(G_OBJECT(spin_button), "MultiloadApplet", ma);
+ g_object_set_data(G_OBJECT(spin_button), "prop_type",
+ GINT_TO_POINTER(PROP_NET_THRESHOLD2));
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_button),
+ (gdouble)g_settings_get_uint (ma->settings, "netthreshold2"));
+ g_signal_connect(G_OBJECT(spin_button), "value_changed",
+ G_CALLBACK(spin_button_changed_cb), "netthreshold2");
+ gtk_size_group_add_widget (spin_size, spin_button);
+ gtk_box_pack_start (GTK_BOX (hbox), spin_button, FALSE, FALSE, 0);
+
+ if ( ! g_settings_is_writable (ma->settings, "netthreshold2"))
+ {
+ hard_set_sensitive (label, FALSE);
+ hard_set_sensitive (hbox, FALSE);
+ }
+
+ label = gtk_label_new(_("bytes"));
+ gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+ control_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_box_pack_start (GTK_BOX (control_vbox), control_hbox, TRUE, TRUE, 0);
+ gtk_widget_show (control_hbox);
+
+ label = gtk_label_new_with_mnemonic(_("Threshold 3: "));
+ gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
+ gtk_size_group_add_widget (label_size, label);
+ gtk_box_pack_start (GTK_BOX (control_hbox), label, FALSE, FALSE, 0);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_box_pack_start (GTK_BOX (control_hbox), hbox, TRUE, TRUE, 0);
+ gtk_widget_show (hbox);
+
+ spin_button = gtk_spin_button_new_with_range(10, 1000000000, 5);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button);
+ g_object_set_data(G_OBJECT(spin_button), "MultiloadApplet", ma);
+ g_object_set_data(G_OBJECT(spin_button), "prop_type",
+ GINT_TO_POINTER(PROP_NET_THRESHOLD3));
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_button),
+ (gdouble)g_settings_get_uint (ma->settings, "netthreshold3"));
+ g_signal_connect(G_OBJECT(spin_button), "value_changed",
+ G_CALLBACK(spin_button_changed_cb), "netthreshold3");
+ gtk_size_group_add_widget (spin_size, spin_button);
+ gtk_box_pack_start (GTK_BOX (hbox), spin_button, FALSE, FALSE, 0);
+
+ if ( ! g_settings_is_writable (ma->settings, "netthreshold3"))
+ {
+ hard_set_sensitive (label, FALSE);
+ hard_set_sensitive (hbox, FALSE);
+ }
+
+ label = gtk_label_new(_("bytes"));
+ gtk_label_set_xalign (GTK_LABEL (label), 0.0f);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+ g_free(label_text);
+
+ category_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+ gtk_box_pack_start (GTK_BOX (categories_vbox), category_vbox, TRUE, TRUE, 0);
+
+ control_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_box_pack_start (GTK_BOX (control_vbox), control_hbox, TRUE, TRUE, 0);
+ gtk_widget_show (control_hbox);
+
+ gtk_widget_show (category_vbox);
+
+
return;
}