diff options
| author | rbuj <[email protected]> | 2020-12-17 19:52:59 +0100 | 
|---|---|---|
| committer | Luke from DC <[email protected]> | 2020-12-25 00:22:04 +0000 | 
| commit | eddd0898e16124081e226b07fd0901ff0eae2871 (patch) | |
| tree | 55d6e197c089ffd32a30d054ea4a0efd9ec83a9d | |
| parent | dddc1ac496a3f94e2c2b780d8d89465459c8bd67 (diff) | |
| download | mate-applets-eddd0898e16124081e226b07fd0901ff0eae2871.tar.bz2 mate-applets-eddd0898e16124081e226b07fd0901ff0eae2871.tar.xz  | |
multiload: Add properties.ui
| -rw-r--r-- | multiload/data/Makefile.am | 3 | ||||
| -rw-r--r-- | multiload/data/multiload-resources.gresource.xml | 1 | ||||
| -rw-r--r-- | multiload/data/properties.ui | 1457 | ||||
| -rw-r--r-- | multiload/src/global.h | 70 | ||||
| -rw-r--r-- | multiload/src/properties.c | 1033 | ||||
| -rw-r--r-- | po/POTFILES.in | 1 | 
6 files changed, 1952 insertions, 613 deletions
diff --git a/multiload/data/Makefile.am b/multiload/data/Makefile.am index 9c7357f2..0f1f9723 100644 --- a/multiload/data/Makefile.am +++ b/multiload/data/Makefile.am @@ -37,6 +37,7 @@ EXTRA_DIST = \  	$(service_in_files) \  	$(multiload_gschema_in_files) \  	multiload-applet-menu.xml \ -	multiload-resources.gresource.xml +	multiload-resources.gresource.xml \ +	properties.ui  -include $(top_srcdir)/git.mk diff --git a/multiload/data/multiload-resources.gresource.xml b/multiload/data/multiload-resources.gresource.xml index 490e97c2..aaf04b33 100644 --- a/multiload/data/multiload-resources.gresource.xml +++ b/multiload/data/multiload-resources.gresource.xml @@ -2,5 +2,6 @@  <gresources>      <gresource prefix="/org/mate/mate-applets/multiload">          <file compressed="true">multiload-applet-menu.xml</file> +        <file compressed="true">properties.ui</file>      </gresource>  </gresources> diff --git a/multiload/data/properties.ui b/multiload/data/properties.ui new file mode 100644 index 00000000..0e26c49a --- /dev/null +++ b/multiload/data/properties.ui @@ -0,0 +1,1457 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.38.2 --> +<interface> +  <requires lib="gtk+" version="3.22"/> +  <object class="GtkImage" id="close_button_img"> +    <property name="visible">True</property> +    <property name="can-focus">False</property> +    <property name="icon-name">window-close</property> +  </object> +  <object class="GtkAdjustment" id="graph_size_spin_button_adj"> +    <property name="lower">10</property> +    <property name="upper">1000</property> +    <property name="value">40</property> +    <property name="step-increment">1</property> +    <property name="page-increment">5</property> +  </object> +  <object class="GtkImage" id="help_button_img"> +    <property name="visible">True</property> +    <property name="can-focus">False</property> +    <property name="icon-name">help-browser</property> +  </object> +  <object class="GtkAdjustment" id="net_threshold1_spin_button_adj"> +    <property name="lower">10</property> +    <property name="upper">999999998</property> +    <property name="value">1000000</property> +    <property name="step-increment">500</property> +    <property name="page-increment">1000</property> +  </object> +  <object class="GtkAdjustment" id="net_threshold2_spin_button_adj"> +    <property name="lower">11</property> +    <property name="upper">999999999</property> +    <property name="step-increment">500</property> +    <property name="page-increment">1000</property> +  </object> +  <object class="GtkAdjustment" id="net_threshold3_spin_button_adj"> +    <property name="lower">12</property> +    <property name="upper">1000000000</property> +    <property name="step-increment">500</property> +    <property name="page-increment">1000</property> +  </object> +  <object class="GtkAdjustment" id="speed_spin_button_adj"> +    <property name="lower">50</property> +    <property name="upper">60000</property> +    <property name="value">500</property> +    <property name="step-increment">10</property> +    <property name="page-increment">100</property> +  </object> +  <object class="GtkDialog" id="properties_dialog"> +    <property name="can-focus">False</property> +    <property name="border-width">12</property> +    <property name="title" translatable="yes">System Monitor Preferences</property> +    <property name="resizable">False</property> +    <property name="icon-name">utilities-system-monitor</property> +    <property name="type-hint">dialog</property> +    <signal name="response" handler="on_properties_dialog_response" swapped="no"/> +    <child internal-child="vbox"> +      <object class="GtkBox"> +        <property name="can-focus">False</property> +        <property name="orientation">vertical</property> +        <property name="spacing">2</property> +        <child internal-child="action_area"> +          <object class="GtkButtonBox"> +            <property name="can-focus">False</property> +            <property name="layout-style">end</property> +            <child> +              <object class="GtkButton" id="help_button"> +                <property name="label" translatable="yes">_Help</property> +                <property name="visible">True</property> +                <property name="can-focus">True</property> +                <property name="receives-default">True</property> +                <property name="image">help_button_img</property> +                <property name="use-underline">True</property> +                <property name="always-show-image">True</property> +              </object> +              <packing> +                <property name="expand">True</property> +                <property name="fill">True</property> +                <property name="position">0</property> +              </packing> +            </child> +            <child> +              <object class="GtkButton" id="close_button"> +                <property name="label" translatable="yes">_Close</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">True</property> +                <property name="image">close_button_img</property> +                <property name="use-underline">True</property> +                <property name="always-show-image">True</property> +              </object> +              <packing> +                <property name="expand">True</property> +                <property name="fill">True</property> +                <property name="position">1</property> +              </packing> +            </child> +          </object> +          <packing> +            <property name="expand">False</property> +            <property name="fill">False</property> +            <property name="position">0</property> +          </packing> +        </child> +        <child> +          <object class="GtkBox"> +            <property name="visible">True</property> +            <property name="can-focus">False</property> +            <property name="orientation">vertical</property> +            <property name="spacing">12</property> +            <child> +              <object class="GtkFrame"> +                <property name="visible">True</property> +                <property name="can-focus">False</property> +                <property name="label-xalign">0</property> +                <property name="shadow-type">none</property> +                <child> +                  <object class="GtkAlignment"> +                    <property name="visible">True</property> +                    <property name="can-focus">False</property> +                    <property name="left-padding">12</property> +                    <child> +                      <object class="GtkBox"> +                        <property name="visible">True</property> +                        <property name="can-focus">False</property> +                        <property name="margin-top">6</property> +                        <property name="spacing">6</property> +                        <child> +                          <object class="GtkCheckButton" id="graph_cpuload_checkbox"> +                            <property name="label" translatable="yes">_Processor</property> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="receives-default">False</property> +                            <property name="halign">start</property> +                            <property name="use-underline">True</property> +                            <property name="draw-indicator">True</property> +                            <signal name="toggled" handler="on_graph_cpuload_checkbox_toggled" swapped="no"/> +                          </object> +                          <packing> +                            <property name="expand">False</property> +                            <property name="fill">True</property> +                            <property name="position">0</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkCheckButton" id="graph_memload_checkbox"> +                            <property name="label" translatable="yes">_Memory</property> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="receives-default">False</property> +                            <property name="halign">start</property> +                            <property name="use-underline">True</property> +                            <property name="draw-indicator">True</property> +                            <signal name="toggled" handler="on_graph_memload_checkbox_toggled" swapped="no"/> +                          </object> +                          <packing> +                            <property name="expand">False</property> +                            <property name="fill">True</property> +                            <property name="position">1</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkCheckButton" id="graph_netload2_checkbox"> +                            <property name="label" translatable="yes">_Network</property> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="receives-default">False</property> +                            <property name="halign">start</property> +                            <property name="use-underline">True</property> +                            <property name="draw-indicator">True</property> +                            <signal name="toggled" handler="on_graph_netload2_checkbox_toggled" swapped="no"/> +                          </object> +                          <packing> +                            <property name="expand">False</property> +                            <property name="fill">True</property> +                            <property name="position">2</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkCheckButton" id="graph_swapload_checkbox"> +                            <property name="label" translatable="yes">S_wap Space</property> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="receives-default">False</property> +                            <property name="halign">start</property> +                            <property name="use-underline">True</property> +                            <property name="draw-indicator">True</property> +                            <signal name="toggled" handler="on_graph_swapload_checkbox_toggled" swapped="no"/> +                          </object> +                          <packing> +                            <property name="expand">False</property> +                            <property name="fill">True</property> +                            <property name="position">3</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkCheckButton" id="graph_loadavg_checkbox"> +                            <property name="label" translatable="yes">_Load</property> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="receives-default">False</property> +                            <property name="halign">start</property> +                            <property name="use-underline">True</property> +                            <property name="draw-indicator">True</property> +                            <signal name="toggled" handler="on_graph_loadavg_checkbox_toggled" swapped="no"/> +                          </object> +                          <packing> +                            <property name="expand">False</property> +                            <property name="fill">True</property> +                            <property name="position">4</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkCheckButton" id="graph_diskload_checkbox"> +                            <property name="label" translatable="yes">_Harddisk</property> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="receives-default">False</property> +                            <property name="halign">start</property> +                            <property name="use-underline">True</property> +                            <property name="draw-indicator">True</property> +                            <signal name="toggled" handler="on_graph_diskload_checkbox_toggled" swapped="no"/> +                          </object> +                          <packing> +                            <property name="expand">False</property> +                            <property name="fill">True</property> +                            <property name="position">5</property> +                          </packing> +                        </child> +                      </object> +                    </child> +                  </object> +                </child> +                <child type="label"> +                  <object class="GtkLabel"> +                    <property name="visible">True</property> +                    <property name="can-focus">False</property> +                    <property name="label" translatable="yes">Monitored Resources</property> +                    <attributes> +                      <attribute name="weight" value="bold"/> +                    </attributes> +                  </object> +                </child> +              </object> +              <packing> +                <property name="expand">False</property> +                <property name="fill">True</property> +                <property name="position">0</property> +              </packing> +            </child> +            <child> +              <object class="GtkFrame"> +                <property name="visible">True</property> +                <property name="can-focus">False</property> +                <property name="label-xalign">0</property> +                <property name="shadow-type">none</property> +                <child> +                  <object class="GtkAlignment"> +                    <property name="visible">True</property> +                    <property name="can-focus">False</property> +                    <property name="left-padding">12</property> +                    <child> +                      <!-- n-columns=3 n-rows=2 --> +                      <object class="GtkGrid"> +                        <property name="visible">True</property> +                        <property name="can-focus">False</property> +                        <property name="margin-top">6</property> +                        <property name="row-spacing">6</property> +                        <property name="column-spacing">12</property> +                        <child> +                          <object class="GtkLabel" id="graph_size_spin_button_label"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">System m_onitor width:</property> +                            <property name="use-underline">True</property> +                            <property name="mnemonic-widget">graph_size_spin_button</property> +                          </object> +                          <packing> +                            <property name="left-attach">0</property> +                            <property name="top-attach">0</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkSpinButton" id="graph_size_spin_button"> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="halign">start</property> +                            <property name="width-chars">5</property> +                            <property name="adjustment">graph_size_spin_button_adj</property> +                            <signal name="value-changed" handler="on_graph_size_spin_button_value_changed" swapped="no"/> +                          </object> +                          <packing> +                            <property name="left-attach">1</property> +                            <property name="top-attach">0</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">pixels</property> +                          </object> +                          <packing> +                            <property name="left-attach">2</property> +                            <property name="top-attach">0</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">Sys_tem monitor update interval:</property> +                            <property name="use-underline">True</property> +                            <property name="mnemonic-widget">speed_spin_button</property> +                          </object> +                          <packing> +                            <property name="left-attach">0</property> +                            <property name="top-attach">1</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkSpinButton" id="speed_spin_button"> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="halign">start</property> +                            <property name="width-chars">5</property> +                            <property name="adjustment">speed_spin_button_adj</property> +                            <signal name="value-changed" handler="on_speed_spin_button_value_changed" swapped="no"/> +                          </object> +                          <packing> +                            <property name="left-attach">1</property> +                            <property name="top-attach">1</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">milliseconds</property> +                          </object> +                          <packing> +                            <property name="left-attach">2</property> +                            <property name="top-attach">1</property> +                          </packing> +                        </child> +                      </object> +                    </child> +                  </object> +                </child> +                <child type="label"> +                  <object class="GtkLabel"> +                    <property name="visible">True</property> +                    <property name="can-focus">False</property> +                    <property name="label" translatable="yes">Options</property> +                    <attributes> +                      <attribute name="weight" value="bold"/> +                    </attributes> +                  </object> +                </child> +              </object> +              <packing> +                <property name="expand">False</property> +                <property name="fill">True</property> +                <property name="position">1</property> +              </packing> +            </child> +            <child> +              <object class="GtkFrame"> +                <property name="visible">True</property> +                <property name="can-focus">False</property> +                <property name="label-xalign">0</property> +                <property name="shadow-type">none</property> +                <child> +                  <object class="GtkAlignment"> +                    <property name="visible">True</property> +                    <property name="can-focus">False</property> +                    <property name="left-padding">12</property> +                    <child> +                      <object class="GtkNotebook" id="notebook"> +                        <property name="visible">True</property> +                        <property name="can-focus">True</property> +                        <property name="margin-top">6</property> +                        <child> +                          <!-- n-columns=5 n-rows=2 --> +                          <object class="GtkGrid"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="border-width">12</property> +                            <property name="row-spacing">6</property> +                            <property name="column-spacing">12</property> +                            <property name="column-homogeneous">True</property> +                            <child> +                              <object class="GtkColorButton" id="cpuload_usr_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_cpuload_usr_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="cpuload_usr_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="cpuload_sys_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_cpuload_sys_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="cpuload_sys_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="cpuload_nice_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_cpuload_nice_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="cpuload_nice_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">2</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="cpuload_iowait_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_cpuload_iowait_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="cpuload_iowait_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">3</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="cpuload_free_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_cpuload_free_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="cpuload_free_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">4</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="cpuload_usr_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_User</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">cpuload_usr_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="cpuload_sys_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">S_ystem</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">cpuload_sys_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="cpuload_nice_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">N_ice</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">cpuload_nice_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">2</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="cpuload_iowait_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">I_OWait</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">cpuload_iowait_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">3</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="cpuload_free_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">I_dle</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">cpuload_free_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">4</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                          </object> +                        </child> +                        <child type="tab"> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="label" translatable="yes">Processor</property> +                          </object> +                          <packing> +                            <property name="tab-fill">False</property> +                          </packing> +                        </child> +                        <child> +                          <!-- n-columns=5 n-rows=2 --> +                          <object class="GtkGrid"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="border-width">12</property> +                            <property name="row-spacing">6</property> +                            <property name="column-spacing">12</property> +                            <property name="column-homogeneous">True</property> +                            <child> +                              <object class="GtkColorButton" id="memload_user_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_memload_user_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="memload_user_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="memload_user_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_User</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">memload_user_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="memload_shared_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_memload_shared_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="memload_shared_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="memload_shared_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">Sh_ared</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">memload_shared_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="memload_buffer_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_memload_buffer_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="memload_buffer_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">2</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="memload_buffer_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Buffers</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">memload_buffer_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">2</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="memload_cached_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_memload_cached_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="memload_cached_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">3</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="memload_cached_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">Cach_ed</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">memload_cached_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">3</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="memload_free_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_memload_free_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="memload_free_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">4</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="memload_free_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">F_ree</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">memload_free_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">4</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                          </object> +                          <packing> +                            <property name="position">1</property> +                          </packing> +                        </child> +                        <child type="tab"> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="label" translatable="yes">Memory</property> +                          </object> +                          <packing> +                            <property name="position">1</property> +                            <property name="tab-fill">False</property> +                          </packing> +                        </child> +                        <child> +                          <!-- n-columns=6 n-rows=2 --> +                          <object class="GtkGrid"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="border-width">12</property> +                            <property name="row-spacing">6</property> +                            <property name="column-spacing">12</property> +                            <property name="column-homogeneous">True</property> +                            <child> +                              <object class="GtkColorButton" id="netload2_in_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_netload2_in_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="netload2_in_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="netload2_in_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_In</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">netload2_in_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="netload2_out_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_netload2_out_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="netload2_out_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="netload2_out_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Out</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">netload2_out_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="netload2_loopback_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_netload2_loopback_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="netload2_loopback_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">2</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="netload2_loopback_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Local</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">netload2_loopback_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">2</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="netload2_background_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_netload2_background_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="netload2_background_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">3</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="netload2_background_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Background</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">netload2_background_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">3</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="netload2_gridline_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_netload2_gridline_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="netload2_gridline_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">4</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="netload2_gridline_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Gridline</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">netload2_gridline_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">4</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="netload2_indicator_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_netload2_indicator_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="netload2_indicator_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">5</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="netload2_indicator_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Indicator</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">netload2_indicator_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">5</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                          </object> +                          <packing> +                            <property name="position">2</property> +                          </packing> +                        </child> +                        <child type="tab"> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="label" translatable="yes">Network</property> +                          </object> +                          <packing> +                            <property name="position">2</property> +                            <property name="tab-fill">False</property> +                          </packing> +                        </child> +                        <child> +                          <!-- n-columns=2 n-rows=2 --> +                          <object class="GtkGrid"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="border-width">12</property> +                            <property name="row-spacing">6</property> +                            <property name="column-spacing">12</property> +                            <property name="column-homogeneous">True</property> +                            <child> +                              <object class="GtkColorButton" id="swapload_used_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_swapload_used_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="swapload_used_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="swapload_used_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Used</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">swapload_used_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="swapload_free_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_swapload_free_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="swapload_free_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="swapload_free_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Free</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">swapload_free_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                          </object> +                          <packing> +                            <property name="position">3</property> +                          </packing> +                        </child> +                        <child type="tab"> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="label" translatable="yes">Swap Space</property> +                          </object> +                          <packing> +                            <property name="position">3</property> +                            <property name="tab-fill">False</property> +                          </packing> +                        </child> +                        <child> +                          <!-- n-columns=3 n-rows=2 --> +                          <object class="GtkGrid"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="border-width">12</property> +                            <property name="row-spacing">6</property> +                            <property name="column-spacing">12</property> +                            <property name="column-homogeneous">True</property> +                            <child> +                              <object class="GtkColorButton" id="loadavg_average_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_loadavg_average_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="loadavg_average_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="loadavg_average_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Average</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">loadavg_average_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">0</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="loadavg_background_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_loadavg_background_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="loadavg_background_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="loadavg_background_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Background</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">loadavg_background_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">1</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkColorButton" id="loadavg_gridline_color_button"> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">True</property> +                                <property name="halign">center</property> +                                <signal name="color-set" handler="on_loadavg_gridline_color_button_color_set" swapped="no"/> +                                <accessibility> +                                  <relation type="labelled-by" target="loadavg_gridline_color_button_label"/> +                                </accessibility> +                              </object> +                              <packing> +                                <property name="left-attach">2</property> +                                <property name="top-attach">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkLabel" id="loadavg_gridline_color_button_label"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="label" translatable="yes">_Gridline</property> +                                <property name="use-underline">True</property> +                                <property name="mnemonic-widget">loadavg_gridline_color_button</property> +                              </object> +                              <packing> +                                <property name="left-attach">2</property> +                                <property name="top-attach">1</property> +                              </packing> +                            </child> +                          </object> +                          <packing> +                            <property name="position">4</property> +                          </packing> +                        </child> +                        <child type="tab"> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="label" translatable="yes">Load</property> +                          </object> +                          <packing> +                            <property name="position">4</property> +                            <property name="tab-fill">False</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkBox"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="border-width">12</property> +                            <property name="orientation">vertical</property> +                            <property name="spacing">12</property> +                            <child> +                              <!-- n-columns=3 n-rows=2 --> +                              <object class="GtkGrid"> +                                <property name="visible">True</property> +                                <property name="can-focus">False</property> +                                <property name="row-spacing">6</property> +                                <property name="column-spacing">12</property> +                                <property name="column-homogeneous">True</property> +                                <child> +                                  <object class="GtkColorButton" id="diskload_read_color_button"> +                                    <property name="visible">True</property> +                                    <property name="can-focus">True</property> +                                    <property name="receives-default">True</property> +                                    <property name="halign">center</property> +                                    <signal name="color-set" handler="on_diskload_read_color_button_color_set" swapped="no"/> +                                    <accessibility> +                                      <relation type="labelled-by" target="diskload_read_color_button_label"/> +                                    </accessibility> +                                  </object> +                                  <packing> +                                    <property name="left-attach">0</property> +                                    <property name="top-attach">0</property> +                                  </packing> +                                </child> +                                <child> +                                  <object class="GtkLabel" id="diskload_read_color_button_label"> +                                    <property name="visible">True</property> +                                    <property name="can-focus">False</property> +                                    <property name="label" translatable="yes">_Read</property> +                                    <property name="use-underline">True</property> +                                    <property name="mnemonic-widget">diskload_read_color_button</property> +                                  </object> +                                  <packing> +                                    <property name="left-attach">0</property> +                                    <property name="top-attach">1</property> +                                  </packing> +                                </child> +                                <child> +                                  <object class="GtkColorButton" id="diskload_write_color_button"> +                                    <property name="visible">True</property> +                                    <property name="can-focus">True</property> +                                    <property name="receives-default">True</property> +                                    <property name="halign">center</property> +                                    <signal name="color-set" handler="on_diskload_write_color_button_color_set" swapped="no"/> +                                    <accessibility> +                                      <relation type="labelled-by" target="diskload_write_color_button_label"/> +                                    </accessibility> +                                  </object> +                                  <packing> +                                    <property name="left-attach">1</property> +                                    <property name="top-attach">0</property> +                                  </packing> +                                </child> +                                <child> +                                  <object class="GtkLabel" id="diskload_write_color_button_label"> +                                    <property name="visible">True</property> +                                    <property name="can-focus">False</property> +                                    <property name="label" translatable="yes">_Write</property> +                                    <property name="use-underline">True</property> +                                    <property name="mnemonic-widget">diskload_write_color_button</property> +                                  </object> +                                  <packing> +                                    <property name="left-attach">1</property> +                                    <property name="top-attach">1</property> +                                  </packing> +                                </child> +                                <child> +                                  <object class="GtkColorButton" id="diskload_free_color_button"> +                                    <property name="visible">True</property> +                                    <property name="can-focus">True</property> +                                    <property name="receives-default">True</property> +                                    <property name="halign">center</property> +                                    <signal name="color-set" handler="on_diskload_free_color_button_color_set" swapped="no"/> +                                    <accessibility> +                                      <relation type="labelled-by" target="diskload_free_color_button_label"/> +                                    </accessibility> +                                  </object> +                                  <packing> +                                    <property name="left-attach">2</property> +                                    <property name="top-attach">0</property> +                                  </packing> +                                </child> +                                <child> +                                  <object class="GtkLabel" id="diskload_free_color_button_label"> +                                    <property name="visible">True</property> +                                    <property name="can-focus">False</property> +                                    <property name="label" translatable="yes">_Background</property> +                                    <property name="use-underline">True</property> +                                    <property name="mnemonic-widget">diskload_free_color_button</property> +                                  </object> +                                  <packing> +                                    <property name="left-attach">2</property> +                                    <property name="top-attach">1</property> +                                  </packing> +                                </child> +                              </object> +                              <packing> +                                <property name="expand">False</property> +                                <property name="fill">True</property> +                                <property name="position">0</property> +                              </packing> +                            </child> +                            <child> +                              <object class="GtkCheckButton" id="nvme_checkbox"> +                                <property name="label" translatable="yes">Use diskstats for _NVMe</property> +                                <property name="visible">True</property> +                                <property name="can-focus">True</property> +                                <property name="receives-default">False</property> +                                <property name="halign">start</property> +                                <property name="use-underline">True</property> +                                <property name="draw-indicator">True</property> +                                <signal name="toggled" handler="on_nvme_checkbox_toggled" swapped="no"/> +                              </object> +                              <packing> +                                <property name="expand">False</property> +                                <property name="fill">True</property> +                                <property name="position">1</property> +                              </packing> +                            </child> +                          </object> +                          <packing> +                            <property name="position">5</property> +                          </packing> +                        </child> +                        <child type="tab"> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="label" translatable="yes">Harddisk</property> +                          </object> +                          <packing> +                            <property name="position">5</property> +                            <property name="tab-fill">False</property> +                          </packing> +                        </child> +                      </object> +                    </child> +                  </object> +                </child> +                <child type="label"> +                  <object class="GtkLabel"> +                    <property name="visible">True</property> +                    <property name="can-focus">False</property> +                    <property name="label" translatable="yes">Colors</property> +                    <attributes> +                      <attribute name="weight" value="bold"/> +                    </attributes> +                  </object> +                </child> +              </object> +              <packing> +                <property name="expand">False</property> +                <property name="fill">True</property> +                <property name="position">2</property> +              </packing> +            </child> +            <child> +              <object class="GtkFrame"> +                <property name="visible">True</property> +                <property name="can-focus">False</property> +                <property name="label-xalign">0</property> +                <property name="shadow-type">none</property> +                <child> +                  <object class="GtkAlignment"> +                    <property name="visible">True</property> +                    <property name="can-focus">False</property> +                    <property name="left-padding">12</property> +                    <child> +                      <!-- n-columns=3 n-rows=3 --> +                      <object class="GtkGrid"> +                        <property name="visible">True</property> +                        <property name="can-focus">False</property> +                        <property name="margin-top">6</property> +                        <property name="row-spacing">6</property> +                        <property name="column-spacing">12</property> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">Threshold _1:</property> +                            <property name="use-underline">True</property> +                          </object> +                          <packing> +                            <property name="left-attach">0</property> +                            <property name="top-attach">0</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkSpinButton" id="net_threshold1_spin_button"> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="halign">start</property> +                            <property name="width-chars">10</property> +                            <property name="adjustment">net_threshold1_spin_button_adj</property> +                            <property name="numeric">True</property> +                            <property name="value">1000000</property> +                            <signal name="value-changed" handler="on_net_threshold1_spin_button_value_changed" swapped="no"/> +                          </object> +                          <packing> +                            <property name="left-attach">1</property> +                            <property name="top-attach">0</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">bytes</property> +                          </object> +                          <packing> +                            <property name="left-attach">2</property> +                            <property name="top-attach">0</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">Threshold _2:</property> +                            <property name="use-underline">True</property> +                          </object> +                          <packing> +                            <property name="left-attach">0</property> +                            <property name="top-attach">1</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkSpinButton" id="net_threshold2_spin_button"> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="halign">start</property> +                            <property name="width-chars">10</property> +                            <property name="adjustment">net_threshold2_spin_button_adj</property> +                            <property name="numeric">True</property> +                            <property name="value">10000000</property> +                            <signal name="value-changed" handler="on_net_threshold2_spin_button_value_changed" swapped="no"/> +                          </object> +                          <packing> +                            <property name="left-attach">1</property> +                            <property name="top-attach">1</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">bytes</property> +                          </object> +                          <packing> +                            <property name="left-attach">2</property> +                            <property name="top-attach">1</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">Threshold _3:</property> +                            <property name="use-underline">True</property> +                          </object> +                          <packing> +                            <property name="left-attach">0</property> +                            <property name="top-attach">2</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkSpinButton" id="net_threshold3_spin_button"> +                            <property name="visible">True</property> +                            <property name="can-focus">True</property> +                            <property name="halign">start</property> +                            <property name="width-chars">10</property> +                            <property name="adjustment">net_threshold3_spin_button_adj</property> +                            <property name="numeric">True</property> +                            <signal name="value-changed" handler="on_net_threshold3_spin_button_value_changed" swapped="no"/> +                          </object> +                          <packing> +                            <property name="left-attach">1</property> +                            <property name="top-attach">2</property> +                          </packing> +                        </child> +                        <child> +                          <object class="GtkLabel"> +                            <property name="visible">True</property> +                            <property name="can-focus">False</property> +                            <property name="halign">start</property> +                            <property name="label" translatable="yes">bytes</property> +                          </object> +                          <packing> +                            <property name="left-attach">2</property> +                            <property name="top-attach">2</property> +                          </packing> +                        </child> +                      </object> +                    </child> +                  </object> +                </child> +                <child type="label"> +                  <object class="GtkLabel"> +                    <property name="visible">True</property> +                    <property name="can-focus">False</property> +                    <property name="label" translatable="yes">Network speed thresholds</property> +                    <attributes> +                      <attribute name="weight" value="bold"/> +                    </attributes> +                  </object> +                </child> +              </object> +              <packing> +                <property name="expand">False</property> +                <property name="fill">True</property> +                <property name="position">3</property> +              </packing> +            </child> +          </object> +          <packing> +            <property name="expand">False</property> +            <property name="fill">True</property> +            <property name="position">1</property> +          </packing> +        </child> +      </object> +    </child> +    <action-widgets> +      <action-widget response="-11">help_button</action-widget> +      <action-widget response="-7">close_button</action-widget> +    </action-widgets> +  </object> +</interface> diff --git a/multiload/src/global.h b/multiload/src/global.h index 7b5db895..f40f194a 100644 --- a/multiload/src/global.h +++ b/multiload/src/global.h @@ -10,6 +10,31 @@  G_BEGIN_DECLS +#define KEY_CPULOAD_USR_COLOR         "cpuload-color0" +#define KEY_CPULOAD_SYS_COLOR         "cpuload-color1" +#define KEY_CPULOAD_NICE_COLOR        "cpuload-color2" +#define KEY_CPULOAD_IOWAIT_COLOR      "cpuload-color3" +#define KEY_CPULOAD_IDLE_COLOR        "cpuload-color4" +#define KEY_MEMLOAD_USER_COLOR        "memload-color0" +#define KEY_MEMLOAD_SHARED_COLOR      "memload-color1" +#define KEY_MEMLOAD_BUFFER_COLOR      "memload-color2" +#define KEY_MEMLOAD_CACHED_COLOR      "memload-color3" +#define KEY_MEMLOAD_FREE_COLOR        "memload-color4" +#define KEY_NETLOAD2_IN_COLOR         "netload2-color0" +#define KEY_NETLOAD2_OUT_COLOR        "netload2-color1" +#define KEY_NETLOAD2_LOOPBACK_COLOR   "netload2-color2" +#define KEY_NETLOAD2_BACKGROUND_COLOR "netload2-color3" +#define KEY_NETLOAD2_GRIDLINE_COLOR   "netload2-color4" +#define KEY_NETLOAD2_INDICATOR_COLOR  "netload2-color5" +#define KEY_SWAPLOAD_USED_COLOR       "swapload-color0" +#define KEY_SWAPLOAD_FREE_COLOR       "swapload-color1" +#define KEY_LOADAVG_AVERAGE_COLOR     "loadavg-color0" +#define KEY_LOADAVG_BACKGROUND_COLOR  "loadavg-color1" +#define KEY_LOADAVG_GRIDLINE_COLOR    "loadavg-color2" +#define KEY_DISKLOAD_READ_COLOR       "diskload-color0" +#define KEY_DISKLOAD_WRITE_COLOR      "diskload-color1" +#define KEY_DISKLOAD_FREE_COLOR       "diskload-color2" +  #define KEY_NET_THRESHOLD1 "netthreshold1"  #define KEY_NET_THRESHOLD2 "netthreshold2"  #define KEY_NET_THRESHOLD3 "netthreshold3" @@ -27,6 +52,8 @@ G_BEGIN_DECLS  #define VIEW_LOADAVG_KEY   "view-loadavg"  #define VIEW_DISKLOAD_KEY  "view-diskload" +#define DISKLOAD_NVME_KEY  "diskload-nvme-diskstats" +  #define REFRESH_RATE_KEY   "speed"  #define REFRESH_RATE_MIN   50  #define REFRESH_RATE_MAX   60000 @@ -52,6 +79,15 @@ typedef enum {  } E_graph;  typedef enum { +    cpuload_usr = 0, +    cpuload_sys, +    cpuload_nice, +    cpuload_iowait, +    cpuload_free, +    cpuload_n +} E_cpuload; + +typedef enum {      memload_user = 0,      memload_shared,      memload_buffer, @@ -61,13 +97,27 @@ typedef enum {  } E_memload;  typedef enum { -    cpuload_usr = 0, -    cpuload_sys, -    cpuload_nice, -    cpuload_iowait, -    cpuload_free, -    cpuload_n -} E_cpuload; +    netload2_in = 0, +    netload2_out, +    netload2_loopback, +    netload2_background, +    netload2_gridline, +    netload2_indicator, +    netload2_n +} E_netload2; + +typedef enum { +    swapload_used = 0, +    swapload_free, +    swapload_n +} E_swapload; + +typedef enum { +    loadavg_average = 0, +    loadavg_background, +    loadavg_gridline, +    loadavg_n +} E_loadavg;  typedef enum {      diskload_read = 0, @@ -76,12 +126,6 @@ typedef enum {      diskload_n  } E_diskload; -typedef enum { -    swapload_used = 0, -    swapload_free, -    swapload_n -} E_swapload; -  struct _LoadGraph {      MultiloadApplet *multiload; diff --git a/multiload/src/properties.c b/multiload/src/properties.c index ffe1b88c..37cc8bf2 100644 --- a/multiload/src/properties.c +++ b/multiload/src/properties.c @@ -21,14 +21,6 @@  #include "global.h" -#define PROP_CPU              0 -#define PROP_MEM              1 -#define PROP_NET              2 -#define PROP_SWAP             3 -#define PROP_AVG              4 -#define PROP_DISK             5 - -#define HIG_IDENTATION        "    "  #define NEVER_SENSITIVE       "never_sensitive"  /* set sensitive and setup NEVER_SENSITIVE appropriately */ @@ -66,18 +58,17 @@ properties_set_insensitive(MultiloadApplet *ma)          }      if (total_graphs < 2) -        soft_set_sensitive(ma->check_boxes[last_graph], FALSE); - -    return; +        soft_set_sensitive (ma->check_boxes[last_graph], FALSE);  }  static void -properties_close_cb (GtkWidget *widget, gint arg, MultiloadApplet *ma) +on_properties_dialog_response (GtkWidget       *widget, +                               gint             arg, +                               MultiloadApplet *ma)  {      GError *error = NULL; -    switch (arg) -    { +    switch (arg) {          case GTK_RESPONSE_HELP:              gtk_show_uri_on_window (NULL, @@ -88,7 +79,6 @@ properties_close_cb (GtkWidget *widget, gint arg, MultiloadApplet *ma)              if (error) { /* FIXME: the user needs to see this */                  g_warning ("help error: %s\n", error->message);                  g_error_free (error); -                error = NULL;              }              break; @@ -100,43 +90,6 @@ properties_close_cb (GtkWidget *widget, gint arg, MultiloadApplet *ma)  }  static void -property_toggled_cb(GtkWidget *widget, gpointer name) -{ -    MultiloadApplet *ma; -    gint prop_type; -    gboolean active; - -    active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)); -    ma = g_object_get_data(G_OBJECT(widget), "MultiloadApplet"); -    prop_type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "prop_type")); - -    /* FIXME: the first toggle button to be checked/dechecked does not work, but after that everything is cool.  what gives? */ -    /* FIXME: check if this is still valid for gsettings */ -    g_settings_set_boolean (ma->settings, (gchar *)name, active); -    g_settings_set_boolean (ma->settings, (gchar *)name, active); - -    if (active) -    { -        guint i; - -        for (i = 0; i < graph_n; i++) -            soft_set_sensitive(ma->check_boxes[i], TRUE); -        gtk_widget_show_all (ma->graphs[prop_type]->main_widget); -        ma->graphs[prop_type]->visible = TRUE; -        load_graph_start(ma->graphs[prop_type]); -    } -    else -    { -        load_graph_stop(ma->graphs[prop_type]); -        gtk_widget_hide (ma->graphs[prop_type]->main_widget); -        ma->graphs[prop_type]->visible = FALSE; -        properties_set_insensitive(ma); -    } - -    return; -} - -static void  on_speed_spin_button_value_changed (GtkSpinButton *spin_button,                                      gpointer       user_data)  { @@ -231,579 +184,358 @@ on_net_threshold3_spin_button_value_changed (GtkSpinButton *spin_button,      g_settings_set_uint64 (ma->settings, KEY_NET_THRESHOLD3, ma->net_threshold3);  } -/* create a new page in the notebook widget, add it, and return a pointer to it */ -static GtkWidget * -add_page(GtkWidget *notebook, gchar *label) +static void +color_button_set (GtkColorChooser *button, +                  GSettings       *settings, +                  const char      *key, +                  GdkRGBA         *color)  { -    GtkWidget *page; -    GtkWidget *page_label; +    gchar   *color_string; -    page = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); -    gtk_box_set_homogeneous (GTK_BOX (page), TRUE); -    page_label = gtk_label_new(label); -    gtk_container_set_border_width(GTK_CONTAINER(page), 6); +    gtk_color_chooser_get_rgba (button, color); +    color_string = gdk_rgba_to_string (color); +    g_settings_set_string (settings, key, color_string); +    g_free (color_string); +} -    gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, page_label); +static void +on_cpuload_usr_color_button_color_set (GtkColorButton  *button, +                                       MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_CPULOAD_USR_COLOR, +                      &(ma->graphs[graph_cpuload]->colors[cpuload_usr])); +} -    return page; +static void +on_cpuload_sys_color_button_color_set (GtkColorButton  *button, +                                       MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_CPULOAD_SYS_COLOR, +                      &(ma->graphs[graph_cpuload]->colors[cpuload_sys]));  } -/* save the selected color to gsettings and apply it on the applet */  static void -color_picker_set_cb(GtkColorChooser *color_picker, gchar *key) +on_cpuload_nice_color_button_color_set (GtkColorButton  *button, +                                        MultiloadApplet *ma)  { -    gchar *color_string; -    guint8 prop_type; -    GdkRGBA color; -    MultiloadApplet *ma; - -    ma = g_object_get_data (G_OBJECT (color_picker), "MultiloadApplet"); - -    if (strstr(key, "cpuload")) -        prop_type = PROP_CPU; -    else if (strstr(key, "memload")) -        prop_type = PROP_MEM; -    else if (strstr(key, "netload2")) -        prop_type = PROP_NET; -    else if (strstr(key, "swapload")) -        prop_type = PROP_SWAP; -    else if (strstr(key, "loadavg")) -        prop_type = PROP_AVG; -    else if (strstr(key, "diskload")) -        prop_type = PROP_DISK; -    else -        g_assert_not_reached(); +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_CPULOAD_NICE_COLOR, +                      &(ma->graphs[graph_cpuload]->colors[cpuload_nice])); +} -    gtk_color_chooser_get_rgba(color_picker, &color); +static void +on_cpuload_iowait_color_button_color_set (GtkColorButton  *button, +                                          MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_CPULOAD_IOWAIT_COLOR, +                      &(ma->graphs[graph_cpuload]->colors[cpuload_iowait])); +} -    color_string = gdk_rgba_to_string (&color); -    g_settings_set_string(ma->settings, key, color_string); +static void +on_cpuload_free_color_button_color_set (GtkColorButton *button, +                                        MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_CPULOAD_IDLE_COLOR, +                      &(ma->graphs[graph_cpuload]->colors[cpuload_free])); +} -    gdk_rgba_parse(&(ma->graphs[prop_type]->colors[g_ascii_digit_value(key[strlen(key) - 1]) ]), -                   color_string); +static void +on_memload_user_color_button_color_set (GtkColorButton  *button, +                                        MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_MEMLOAD_USER_COLOR, +                      &(ma->graphs[graph_memload]->colors[memload_user])); +} -    return; +static void +on_memload_shared_color_button_color_set (GtkColorButton  *button, +                                          MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_MEMLOAD_SHARED_COLOR, +                      &(ma->graphs[graph_memload]->colors[memload_shared]));  } -/* create a color selector */  static void -add_color_selector(GtkWidget *page, gchar *name, gchar *key, MultiloadApplet *ma) +on_memload_buffer_color_button_color_set (GtkColorButton  *button, +                                          MultiloadApplet *ma)  { -    GtkWidget *vbox; -    GtkWidget *label; -    GtkWidget *color_picker; -    GdkRGBA color; -    gchar *color_string; +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_MEMLOAD_BUFFER_COLOR, +                      &(ma->graphs[graph_memload]->colors[memload_buffer])); +} -    color_string = g_settings_get_string (ma->settings, key); -    if (!color_string) -        color_string = g_strdup ("#000000"); -    gdk_rgba_parse (&color, color_string); -    g_free (color_string); +static void +on_memload_cached_color_button_color_set (GtkColorButton  *button, +                                          MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_MEMLOAD_CACHED_COLOR, +                      &(ma->graphs[graph_memload]->colors[memload_cached])); +} -    vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); -    label = gtk_label_new_with_mnemonic(name); -    color_picker = gtk_color_button_new(); -    gtk_label_set_mnemonic_widget (GTK_LABEL (label), color_picker); +static void +on_memload_free_color_button_color_set (GtkColorButton  *button, +                                        MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_MEMLOAD_FREE_COLOR, +                      &(ma->graphs[graph_memload]->colors[memload_free])); +} -    gtk_box_pack_start(GTK_BOX(vbox), color_picker, FALSE, FALSE, 0); -    gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); +static void +on_netload2_in_color_button_color_set (GtkColorButton  *button, +                                       MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_NETLOAD2_IN_COLOR, +                      &(ma->graphs[graph_netload2]->colors[netload2_in])); +} -    gtk_box_pack_start(GTK_BOX(page), vbox, FALSE, FALSE, 0); +static void +on_netload2_out_color_button_color_set (GtkColorButton  *button, +                                        MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_NETLOAD2_OUT_COLOR, +                      &(ma->graphs[graph_netload2]->colors[netload2_out])); +} -    g_object_set_data (G_OBJECT (color_picker), "MultiloadApplet", ma); +static void +on_netload2_loopback_color_button_color_set (GtkColorButton  *button, +                                             MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_NETLOAD2_LOOPBACK_COLOR, +                      &(ma->graphs[graph_netload2]->colors[netload2_loopback])); +} -    gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(color_picker), &color); +static void +on_netload2_background_color_button_color_set (GtkColorButton  *button, +                                               MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_NETLOAD2_BACKGROUND_COLOR, +                      &(ma->graphs[graph_netload2]->colors[netload2_background])); +} -    g_signal_connect(G_OBJECT(color_picker), "color_set", G_CALLBACK(color_picker_set_cb), key); +static void +on_netload2_gridline_color_button_color_set (GtkColorButton  *button, +                                             MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_NETLOAD2_GRIDLINE_COLOR, +                      &(ma->graphs[graph_netload2]->colors[netload2_gridline])); +} -    if ( ! g_settings_is_writable (ma->settings, key)) -        hard_set_sensitive (vbox, FALSE); +static void +on_netload2_indicator_color_button_color_set (GtkColorButton  *button, +                                              MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_NETLOAD2_INDICATOR_COLOR, +                      &(ma->graphs[graph_netload2]->colors[netload2_indicator])); +} -    return; +static void +on_swapload_used_color_button_color_set (GtkColorButton  *button, +                                         MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_SWAPLOAD_USED_COLOR, +                      &(ma->graphs[graph_swapload]->colors[swapload_used]));  } -/* save the checkbox option to gsettings and apply it on the applet */  static void -nvme_checkbox_toggled_cb (GtkCheckButton  *checkbox, -                          MultiloadApplet *ma) +on_swapload_free_color_button_color_set (GtkColorButton  *button, +                                         MultiloadApplet *ma)  { -    gboolean option; +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_SWAPLOAD_FREE_COLOR, +                      &(ma->graphs[graph_swapload]->colors[swapload_free])); +} -    option = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)); -    ma->nvme_diskstats = option; -    g_settings_set_boolean (ma->settings, "diskload-nvme-diskstats", option); +static void +on_loadavg_average_color_button_color_set (GtkColorButton  *button, +                                           MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_LOADAVG_AVERAGE_COLOR, +                      &(ma->graphs[graph_loadavg]->colors[loadavg_average])); +} -    return; +static void +on_loadavg_background_color_button_color_set (GtkColorButton  *button, +                                              MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_LOADAVG_BACKGROUND_COLOR, +                      &(ma->graphs[graph_loadavg]->colors[loadavg_background]));  } -/* creates the properties dialog using up-to-the-minute info from gsettings */  static void -fill_properties(GtkWidget *dialog, MultiloadApplet *ma) +on_loadavg_gridline_color_button_color_set (GtkColorButton  *button, +                                            MultiloadApplet *ma)  { -    GtkWidget *page; -    GtkWidget *hbox, *vbox; -    GtkWidget *categories_vbox; -    GtkWidget *category_vbox; -    GtkWidget *control_vbox; -    GtkWidget *control_hbox; -    GtkWidget *check_box; -    GtkWidget *indent; -    GtkWidget *spin_button; -    GtkWidget *label; -    MatePanelAppletOrient orient; -    GtkSizeGroup *label_size; -    GtkSizeGroup *spin_size; -    gchar *label_text; -    gchar *title; -    guint  spin_value_uint; -    guint64 spin_value_uint64; - -    vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); -    gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); -    gtk_widget_show (vbox); - -    gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), -                        vbox, TRUE, TRUE, 0); - -    categories_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 18); -    gtk_box_pack_start (GTK_BOX (vbox), categories_vbox, TRUE, TRUE, 0); -    gtk_widget_show (categories_vbox); - -    category_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); -    gtk_box_pack_start (GTK_BOX (categories_vbox), category_vbox, TRUE, TRUE, 0); -    gtk_widget_show (category_vbox); - -    title = g_strconcat ("<span weight=\"bold\">", _("Monitored Resources"), "</span>", NULL); -    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); -    gtk_label_set_xalign (GTK_LABEL (label), 0.0); -    gtk_box_pack_start (GTK_BOX (category_vbox), label, FALSE, FALSE, 0); -    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); - -    check_box = gtk_check_button_new_with_mnemonic(_("_Processor")); -    ma->check_boxes[0] = check_box; -    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_box), -                                 g_settings_get_boolean (ma->settings, -                                 VIEW_CPULOAD_KEY)); -    g_object_set_data(G_OBJECT(check_box), "MultiloadApplet", ma); -    g_object_set_data(G_OBJECT(check_box), "prop_type", GINT_TO_POINTER(PROP_CPU)); -    g_signal_connect(G_OBJECT(check_box), "toggled", -                     G_CALLBACK(property_toggled_cb), VIEW_CPULOAD_KEY); -    gtk_box_pack_start (GTK_BOX (control_hbox), check_box, FALSE, FALSE, 0); - -    if ( ! g_settings_is_writable (ma->settings, VIEW_CPULOAD_KEY)) -        hard_set_sensitive (check_box, FALSE); - -    check_box = gtk_check_button_new_with_mnemonic(_("_Memory")); -    ma->check_boxes[1] = check_box; -    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_box), -                                 g_settings_get_boolean (ma->settings, VIEW_MEMLOAD_KEY)); -    g_object_set_data(G_OBJECT(check_box), "MultiloadApplet", ma); -    g_object_set_data(G_OBJECT(check_box), "prop_type", GINT_TO_POINTER(PROP_MEM)); -    g_signal_connect(G_OBJECT(check_box), "toggled", -                     G_CALLBACK(property_toggled_cb), VIEW_MEMLOAD_KEY); -    gtk_box_pack_start (GTK_BOX (control_hbox), check_box, FALSE, FALSE, 0); - -    if ( ! g_settings_is_writable (ma->settings, VIEW_MEMLOAD_KEY)) -        hard_set_sensitive (check_box, FALSE); - -    check_box = gtk_check_button_new_with_mnemonic(_("_Network")); -    ma->check_boxes[2] = check_box; -    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_box), -                                 g_settings_get_boolean (ma->settings, VIEW_NETLOAD_KEY)); -    g_object_set_data(G_OBJECT(check_box), "MultiloadApplet", ma); -    g_object_set_data(G_OBJECT(check_box), "prop_type", GINT_TO_POINTER(PROP_NET)); -    g_signal_connect(G_OBJECT(check_box), "toggled", -                     G_CALLBACK(property_toggled_cb), VIEW_NETLOAD_KEY); -    gtk_box_pack_start (GTK_BOX (control_hbox), check_box, FALSE, FALSE, 0); - -    if ( ! g_settings_is_writable (ma->settings, VIEW_NETLOAD_KEY)) -        hard_set_sensitive (check_box, FALSE); - -    check_box = gtk_check_button_new_with_mnemonic (_("S_wap Space")); -    ma->check_boxes[3] = check_box; -    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_box), -                                 g_settings_get_boolean (ma->settings, VIEW_SWAPLOAD_KEY)); -    g_object_set_data(G_OBJECT(check_box), "MultiloadApplet", ma); -    g_object_set_data(G_OBJECT(check_box), "prop_type", GINT_TO_POINTER(PROP_SWAP)); -    g_signal_connect(G_OBJECT(check_box), "toggled", -                     G_CALLBACK(property_toggled_cb), VIEW_SWAPLOAD_KEY); -    gtk_box_pack_start (GTK_BOX (control_hbox), check_box, FALSE, FALSE, 0); - -    if ( ! g_settings_is_writable (ma->settings, VIEW_SWAPLOAD_KEY)) -        hard_set_sensitive (check_box, FALSE); - -    check_box = gtk_check_button_new_with_mnemonic(_("_Load")); -    ma->check_boxes[4] = check_box; -    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_box), -                                 g_settings_get_boolean (ma->settings, VIEW_LOADAVG_KEY)); -    g_object_set_data(G_OBJECT(check_box), "MultiloadApplet", ma); -    g_object_set_data(G_OBJECT(check_box), "prop_type", GINT_TO_POINTER(PROP_AVG)); -    g_signal_connect(G_OBJECT(check_box), "toggled", -                     G_CALLBACK(property_toggled_cb), VIEW_LOADAVG_KEY); -    gtk_box_pack_start(GTK_BOX(control_hbox), check_box, FALSE, FALSE, 0); - -    if ( ! g_settings_is_writable (ma->settings, VIEW_LOADAVG_KEY)) -        hard_set_sensitive (check_box, FALSE); - -    check_box = gtk_check_button_new_with_mnemonic(_("_Harddisk")); -    ma->check_boxes[5] = check_box; -    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_box), -                                  g_settings_get_boolean (ma->settings, VIEW_DISKLOAD_KEY)); -    g_object_set_data (G_OBJECT (check_box), "MultiloadApplet", ma); -    g_object_set_data (G_OBJECT (check_box), "prop_type", -                       GINT_TO_POINTER (PROP_DISK)); -    g_signal_connect (G_OBJECT (check_box), "toggled", -                      G_CALLBACK (property_toggled_cb), VIEW_DISKLOAD_KEY); -    gtk_box_pack_start (GTK_BOX (control_hbox), check_box, FALSE, FALSE, 0); - -    if ( ! g_settings_is_writable (ma->settings, VIEW_DISKLOAD_KEY)) -        hard_set_sensitive (check_box, FALSE); - -    category_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); -    gtk_box_pack_start (GTK_BOX (categories_vbox), category_vbox, TRUE, TRUE, 0); -    gtk_widget_show (category_vbox); - -    title = g_strconcat ("<span weight=\"bold\">", _("Options"), "</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); +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_LOADAVG_GRIDLINE_COLOR, +                      &(ma->graphs[graph_loadavg]->colors[loadavg_gridline])); +} -    orient = mate_panel_applet_get_orient(ma->applet); -    if ( (orient == MATE_PANEL_APPLET_ORIENT_UP) || (orient == MATE_PANEL_APPLET_ORIENT_DOWN) ) -        label_text = g_strdup(_("System m_onitor width: ")); -    else -        label_text = g_strdup(_("System m_onitor height: ")); - -    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 (GRAPH_SIZE_MIN, GRAPH_SIZE_MAX, 5); -    gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button); -    spin_value_uint = CLAMP (g_settings_get_uint (ma->settings, GRAPH_SIZE_KEY), -                             GRAPH_SIZE_MIN, -                             GRAPH_SIZE_MAX); -    gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), (gdouble) spin_value_uint); -    g_signal_connect (GTK_SPIN_BUTTON (spin_button), "value-changed", -                      G_CALLBACK (on_graph_size_spin_button_value_changed), ma); - -    if ( ! g_settings_is_writable (ma->settings, GRAPH_SIZE_KEY)) { -        hard_set_sensitive (label, FALSE); -        hard_set_sensitive (hbox, FALSE); -    } +static void +on_diskload_read_color_button_color_set (GtkColorButton  *button, +                                         MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_DISKLOAD_READ_COLOR, +                      &(ma->graphs[graph_diskload]->colors[diskload_read])); +} -    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 (_("pixels")); -    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(_("Sys_tem monitor update interval: ")); -    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 (REFRESH_RATE_MIN, -                                                  REFRESH_RATE_MAX, -                                                  50); -    gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button); -    spin_value_uint = CLAMP (g_settings_get_uint (ma->settings, REFRESH_RATE_KEY), -                             REFRESH_RATE_MIN, -                             REFRESH_RATE_MAX); -    gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), -                              (gdouble) spin_value_uint); -    g_signal_connect (GTK_SPIN_BUTTON (spin_button), "value-changed", -                      G_CALLBACK (on_speed_spin_button_value_changed), ma); -    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, REFRESH_RATE_KEY)) { -        hard_set_sensitive (label, FALSE); -        hard_set_sensitive (hbox, FALSE); -    } +static void +on_diskload_write_color_button_color_set (GtkColorButton  *button, +                                          MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_DISKLOAD_WRITE_COLOR, +                      &(ma->graphs[graph_diskload]->colors[diskload_write])); +} -    label = gtk_label_new(_("milliseconds")); -    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); -    gtk_widget_show (category_vbox); - -    title = g_strconcat ("<span weight=\"bold\">", _("Colors"), "</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); - -    ma->notebook = gtk_notebook_new(); -    gtk_container_add (GTK_CONTAINER (control_vbox), ma->notebook); - -    page = add_page(ma->notebook,  _("Processor")); -    gtk_container_set_border_width (GTK_CONTAINER (page), 12); -    add_color_selector(page, _("_User"), "cpuload-color0", ma); -    add_color_selector(page, _("S_ystem"), "cpuload-color1", ma); -    add_color_selector(page, _("N_ice"), "cpuload-color2", ma); -    add_color_selector(page, _("I_OWait"), "cpuload-color3", ma); -    add_color_selector(page, _("I_dle"), "cpuload-color4", ma); - -    page = add_page(ma->notebook,  _("Memory")); -    gtk_container_set_border_width (GTK_CONTAINER (page), 12); -    add_color_selector(page, _("_User"), "memload-color0", ma); -    add_color_selector(page, _("Sh_ared"), "memload-color1", ma); -    add_color_selector(page, _("_Buffers"), "memload-color2", ma); -    add_color_selector (page, _("Cach_ed"), "memload-color3", ma); -    add_color_selector(page, _("F_ree"), "memload-color4", ma); - -    page = add_page(ma->notebook,  _("Network")); -    gtk_container_set_border_width (GTK_CONTAINER (page), 12); -    add_color_selector (page, _("_In"), "netload2-color0", 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); -    add_color_selector(page, _("_Used"), "swapload-color0", ma); -    add_color_selector(page, _("_Free"), "swapload-color1", ma); - -    page = add_page(ma->notebook,  _("Load")); -    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); - -    page = add_page (ma->notebook, _("Harddisk")); -    gtk_container_set_border_width (GTK_CONTAINER (page), 12); -    add_color_selector (page, _("_Read"), "diskload-color0", ma); -    add_color_selector (page, _("_Write"), "diskload-color1", ma); -    add_color_selector (page, _("_Background"), "diskload-color2", ma); -    GtkWidget *nvme_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); -    GtkWidget *nvme_checkbox = gtk_check_button_new_with_mnemonic (_("Use diskstats for NVMe")); -    ma->nvme_diskstats = g_settings_get_boolean (ma->settings, "diskload-nvme-diskstats"); -    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (nvme_checkbox), -                                  ma->nvme_diskstats); -    g_signal_connect (G_OBJECT (nvme_checkbox), "toggled", -                      G_CALLBACK (nvme_checkbox_toggled_cb), ma); -    gtk_box_pack_start (GTK_BOX(nvme_box), nvme_checkbox, FALSE, FALSE, 0); -    gtk_box_pack_start (GTK_BOX(page), nvme_box, FALSE, FALSE, 0); -    gtk_widget_show (nvme_box); - -    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); - -    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 (MIN_NET_THRESHOLD1, MAX_NET_THRESHOLD1, 5); -    gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button); -    spin_value_uint64 = g_settings_get_uint64 (ma->settings, KEY_NET_THRESHOLD1); -    gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), (gdouble) spin_value_uint64); -    g_signal_connect (GTK_SPIN_BUTTON (spin_button), "value-changed", -                      G_CALLBACK (on_net_threshold1_spin_button_value_changed), ma); - -    if ( ! g_settings_is_writable (ma->settings, KEY_NET_THRESHOLD1)) -    { -        hard_set_sensitive (label, FALSE); -        hard_set_sensitive (hbox, FALSE); -    } +static void +on_diskload_free_color_button_color_set (GtkColorButton  *button, +                                         MultiloadApplet *ma) +{ +    color_button_set (GTK_COLOR_CHOOSER (button), +                      ma->settings, KEY_DISKLOAD_FREE_COLOR, +                      &(ma->graphs[graph_diskload]->colors[diskload_free])); +} -    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 (MIN_NET_THRESHOLD2, MAX_NET_THRESHOLD2, 5); -    gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button); -    spin_value_uint64 = g_settings_get_uint64 (ma->settings, KEY_NET_THRESHOLD2); -    gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), (gdouble) spin_value_uint64); -    g_signal_connect (GTK_SPIN_BUTTON (spin_button), "value-changed", -                      G_CALLBACK (on_net_threshold2_spin_button_value_changed), ma); -    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, KEY_NET_THRESHOLD2)) -    { -        hard_set_sensitive (label, FALSE); -        hard_set_sensitive (hbox, FALSE); -    } +static void +graph_set_active (MultiloadApplet *ma, +                  LoadGraph       *graph, +                  gboolean         active) +{ +    graph->visible = active; +    if (active) { +        guint i; -    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 (MIN_NET_THRESHOLD3, MAX_NET_THRESHOLD3, 5); -    gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin_button); -    spin_value_uint64 = g_settings_get_uint64 (ma->settings, KEY_NET_THRESHOLD3); -    gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), (gdouble) spin_value_uint64); -    g_signal_connect (GTK_SPIN_BUTTON (spin_button), "value-changed", -                      G_CALLBACK (on_net_threshold3_spin_button_value_changed), ma); -    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, KEY_NET_THRESHOLD3)) -    { -        hard_set_sensitive (label, FALSE); -        hard_set_sensitive (hbox, FALSE); +        for (i = 0; i < graph_n; i++) +            soft_set_sensitive(ma->check_boxes[i], TRUE); +        gtk_widget_show_all (graph->main_widget); +        load_graph_start (graph); +    } else { +	load_graph_stop (graph); +        gtk_widget_hide (graph->main_widget); +        properties_set_insensitive (ma);      } +} + +#define GRAPH_ACTIVE_SET(x) graph_set_active (ma, ma->graphs[(x)], \ +    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox))) + +static void +on_graph_cpuload_checkbox_toggled (GtkCheckButton  *checkbox, +                                   MultiloadApplet *ma) +{ +    GRAPH_ACTIVE_SET (graph_cpuload); +} + +static void +on_graph_memload_checkbox_toggled (GtkCheckButton  *checkbox, +                                   MultiloadApplet *ma) +{ +    GRAPH_ACTIVE_SET (graph_memload); +} + +static void +on_graph_netload2_checkbox_toggled (GtkCheckButton  *checkbox, +                                    MultiloadApplet *ma) +{ +    GRAPH_ACTIVE_SET (graph_netload2); +} + +static void +on_graph_swapload_checkbox_toggled (GtkCheckButton  *checkbox, +                                    MultiloadApplet *ma) +{ +    GRAPH_ACTIVE_SET (graph_swapload); +} + +static void +on_graph_loadavg_checkbox_toggled (GtkCheckButton  *checkbox, +                                   MultiloadApplet *ma) +{ +    GRAPH_ACTIVE_SET (graph_loadavg); +} + +static void +on_graph_diskload_checkbox_toggled (GtkCheckButton  *checkbox, +                                    MultiloadApplet *ma) +{ +    GRAPH_ACTIVE_SET (graph_diskload); +} + +/* save the checkbox option to gsettings and apply it on the applet */ +static void +on_nvme_checkbox_toggled (GtkCheckButton  *checkbox, +                          MultiloadApplet *ma) +{ +    ma->nvme_diskstats = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)); +} + +static void +read_spin_uint_button (GtkWidget    *widget, +                       GSettings    *settings, +                       const char   *key, +                       guint         min, +                       guint         max) +{ +    guint value; -    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); +    value = CLAMP (g_settings_get_uint (settings, key), min, max); +    gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), (gdouble) value); +    if (!g_settings_is_writable (settings, key)) +        hard_set_sensitive (widget, FALSE); +} -    g_free(label_text); +static void +read_spin_uint64_button (GtkWidget    *widget, +                         GSettings    *settings, +                         const char   *key, +                         guint         min, +                         guint         max) +{ +    guint64 value; -    category_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); -    gtk_box_pack_start (GTK_BOX (categories_vbox), category_vbox, TRUE, TRUE, 0); +    value = CLAMP (g_settings_get_uint64 (settings, key), min, max); +    gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), (gdouble) value); + +    if (!g_settings_is_writable (settings, key)) +        hard_set_sensitive (widget, FALSE); +} -    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); +static void +read_color_button (GtkWidget    *widget, +                   GSettings    *settings, +                   const char   *key) +{ +    GdkRGBA color; +    gchar *color_string; -    gtk_widget_show (category_vbox); +    if ((color_string = g_settings_get_string (settings, key)) != NULL) { +        gdk_rgba_parse (&color, color_string); +        g_free (color_string); +    } else { +        gdk_rgba_parse (&color, "#000000"); +    } +    gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (widget), &color); -    return; +    if (!g_settings_is_writable (settings, key)) +        hard_set_sensitive (widget, FALSE);  }  /* show properties dialog */ @@ -811,7 +543,11 @@ void  multiload_properties_cb (GtkAction       *action,                           MultiloadApplet *ma)  { -    GtkWidget *dialog = NULL; +    GtkBuilder *builder; +    GtkWidget  *dialog = NULL; +    GtkWidget  *graph_size_spin_button_label; +    const char *graph_size_spin_button_label_txt; +    MatePanelAppletOrient orient;      if (ma->prop_dialog) {          dialog = ma->prop_dialog; @@ -825,28 +561,127 @@ multiload_properties_cb (GtkAction       *action,          return;      } -    dialog = gtk_dialog_new_with_buttons (_("System Monitor Preferences"), -                                          NULL, 0, -                                          "gtk-help", GTK_RESPONSE_HELP, -                                          "gtk-close", GTK_RESPONSE_CLOSE, -                                          NULL); -    gtk_window_set_screen (GTK_WINDOW (dialog), +    builder = gtk_builder_new_from_resource (MULTILOAD_RESOURCE_PATH "properties.ui"); +    gtk_builder_set_translation_domain (builder, GETTEXT_PACKAGE); + +    #define GET_WIDGET(x) (GTK_WIDGET (gtk_builder_get_object (builder, (x)))) + +    ma->prop_dialog = GET_WIDGET ("properties_dialog"); + +    read_color_button (GET_WIDGET ("cpuload_free_color_button"), ma->settings, KEY_CPULOAD_IDLE_COLOR); +    read_color_button (GET_WIDGET ("cpuload_iowait_color_button"), ma->settings, KEY_CPULOAD_IOWAIT_COLOR); +    read_color_button (GET_WIDGET ("cpuload_nice_color_button"), ma->settings, KEY_CPULOAD_NICE_COLOR); +    read_color_button (GET_WIDGET ("cpuload_sys_color_button"), ma->settings, KEY_CPULOAD_SYS_COLOR); +    read_color_button (GET_WIDGET ("cpuload_usr_color_button"), ma->settings, KEY_CPULOAD_USR_COLOR); +    read_color_button (GET_WIDGET ("diskload_free_color_button"), ma->settings, KEY_DISKLOAD_FREE_COLOR); +    read_color_button (GET_WIDGET ("diskload_read_color_button"), ma->settings, KEY_DISKLOAD_READ_COLOR); +    read_color_button (GET_WIDGET ("diskload_write_color_button"), ma->settings, KEY_DISKLOAD_WRITE_COLOR); +    read_color_button (GET_WIDGET ("loadavg_average_color_button"), ma->settings, KEY_LOADAVG_AVERAGE_COLOR); +    read_color_button (GET_WIDGET ("loadavg_background_color_button"), ma->settings, KEY_LOADAVG_BACKGROUND_COLOR); +    read_color_button (GET_WIDGET ("loadavg_gridline_color_button"), ma->settings, KEY_LOADAVG_GRIDLINE_COLOR); +    read_color_button (GET_WIDGET ("memload_buffer_color_button"), ma->settings, KEY_MEMLOAD_BUFFER_COLOR); +    read_color_button (GET_WIDGET ("memload_cached_color_button"), ma->settings, KEY_MEMLOAD_CACHED_COLOR); +    read_color_button (GET_WIDGET ("memload_free_color_button"), ma->settings, KEY_MEMLOAD_FREE_COLOR); +    read_color_button (GET_WIDGET ("memload_shared_color_button"), ma->settings, KEY_MEMLOAD_SHARED_COLOR); +    read_color_button (GET_WIDGET ("memload_user_color_button"), ma->settings, KEY_MEMLOAD_USER_COLOR); +    read_color_button (GET_WIDGET ("netload2_background_color_button"), ma->settings, KEY_NETLOAD2_BACKGROUND_COLOR); +    read_color_button (GET_WIDGET ("netload2_gridline_color_button"), ma->settings, KEY_NETLOAD2_GRIDLINE_COLOR); +    read_color_button (GET_WIDGET ("netload2_in_color_button"), ma->settings, KEY_NETLOAD2_IN_COLOR); +    read_color_button (GET_WIDGET ("netload2_indicator_color_button"), ma->settings, KEY_NETLOAD2_INDICATOR_COLOR); +    read_color_button (GET_WIDGET ("netload2_loopback_color_button"), ma->settings, KEY_NETLOAD2_LOOPBACK_COLOR); +    read_color_button (GET_WIDGET ("netload2_out_color_button"), ma->settings, KEY_NETLOAD2_OUT_COLOR); +    read_color_button (GET_WIDGET ("swapload_free_color_button"), ma->settings, KEY_SWAPLOAD_FREE_COLOR); +    read_color_button (GET_WIDGET ("swapload_used_color_button"), ma->settings, KEY_SWAPLOAD_USED_COLOR); + +    graph_size_spin_button_label = GET_WIDGET ("graph_size_spin_button_label"); +    orient = mate_panel_applet_get_orient(ma->applet); +    switch (orient) { +        case MATE_PANEL_APPLET_ORIENT_UP: +        case MATE_PANEL_APPLET_ORIENT_DOWN: +            graph_size_spin_button_label_txt = _("System m_onitor width:"); +            break; +        default: +            graph_size_spin_button_label_txt = _("System m_onitor height:"); +    } +    gtk_label_set_text_with_mnemonic (GTK_LABEL (graph_size_spin_button_label), graph_size_spin_button_label_txt); + +    read_spin_uint_button (GET_WIDGET ("graph_size_spin_button"), ma->settings, GRAPH_SIZE_KEY, GRAPH_SIZE_MIN, GRAPH_SIZE_MAX); +    read_spin_uint_button (GET_WIDGET ("speed_spin_button"), ma->settings, REFRESH_RATE_KEY, REFRESH_RATE_MIN, REFRESH_RATE_MAX); + +    read_spin_uint64_button (GET_WIDGET ("net_threshold1_spin_button"), ma->settings, KEY_NET_THRESHOLD1, MIN_NET_THRESHOLD1, MAX_NET_THRESHOLD1); +    read_spin_uint64_button (GET_WIDGET ("net_threshold2_spin_button"), ma->settings, KEY_NET_THRESHOLD2, MIN_NET_THRESHOLD2, MAX_NET_THRESHOLD2); +    read_spin_uint64_button (GET_WIDGET ("net_threshold3_spin_button"), ma->settings, KEY_NET_THRESHOLD3, MIN_NET_THRESHOLD3, MAX_NET_THRESHOLD3); + +    ma->notebook = GET_WIDGET ("notebook"); + +    ma->check_boxes[graph_cpuload]  = GET_WIDGET ("graph_cpuload_checkbox"); +    ma->check_boxes[graph_memload]  = GET_WIDGET ("graph_memload_checkbox"); +    ma->check_boxes[graph_netload2] = GET_WIDGET ("graph_netload2_checkbox"); +    ma->check_boxes[graph_swapload] = GET_WIDGET ("graph_swapload_checkbox"); +    ma->check_boxes[graph_loadavg]  = GET_WIDGET ("graph_loadavg_checkbox"); +    ma->check_boxes[graph_diskload] = GET_WIDGET ("graph_diskload_checkbox"); + +    g_settings_bind (ma->settings, VIEW_CPULOAD_KEY,  ma->check_boxes[graph_cpuload],  "active", G_SETTINGS_BIND_DEFAULT); +    g_settings_bind (ma->settings, VIEW_MEMLOAD_KEY,  ma->check_boxes[graph_memload],  "active", G_SETTINGS_BIND_DEFAULT); +    g_settings_bind (ma->settings, VIEW_NETLOAD_KEY,  ma->check_boxes[graph_netload2], "active", G_SETTINGS_BIND_DEFAULT); +    g_settings_bind (ma->settings, VIEW_SWAPLOAD_KEY, ma->check_boxes[graph_swapload], "active", G_SETTINGS_BIND_DEFAULT); +    g_settings_bind (ma->settings, VIEW_LOADAVG_KEY,  ma->check_boxes[graph_loadavg],  "active", G_SETTINGS_BIND_DEFAULT); +    g_settings_bind (ma->settings, VIEW_DISKLOAD_KEY, ma->check_boxes[graph_diskload], "active", G_SETTINGS_BIND_DEFAULT); + +    g_settings_bind (ma->settings, DISKLOAD_NVME_KEY, GET_WIDGET ("nvme_checkbox"), "active", G_SETTINGS_BIND_DEFAULT); + +    #undef GET_WIDGET + +    properties_set_insensitive (ma); + +    gtk_builder_add_callback_symbols (builder, +                                      "on_cpuload_usr_color_button_color_set",         G_CALLBACK (on_cpuload_usr_color_button_color_set), +                                      "on_cpuload_sys_color_button_color_set",         G_CALLBACK (on_cpuload_sys_color_button_color_set), +                                      "on_cpuload_nice_color_button_color_set",        G_CALLBACK (on_cpuload_nice_color_button_color_set), +                                      "on_cpuload_iowait_color_button_color_set",      G_CALLBACK (on_cpuload_iowait_color_button_color_set), +                                      "on_cpuload_free_color_button_color_set",        G_CALLBACK (on_cpuload_free_color_button_color_set), +                                      "on_memload_user_color_button_color_set",        G_CALLBACK (on_memload_user_color_button_color_set), +                                      "on_memload_shared_color_button_color_set",      G_CALLBACK (on_memload_shared_color_button_color_set), +                                      "on_memload_buffer_color_button_color_set",      G_CALLBACK (on_memload_buffer_color_button_color_set), +                                      "on_memload_cached_color_button_color_set",      G_CALLBACK (on_memload_cached_color_button_color_set), +                                      "on_memload_free_color_button_color_set",        G_CALLBACK (on_memload_free_color_button_color_set), +                                      "on_netload2_in_color_button_color_set",         G_CALLBACK (on_netload2_in_color_button_color_set), +                                      "on_netload2_out_color_button_color_set",        G_CALLBACK (on_netload2_out_color_button_color_set), +                                      "on_netload2_loopback_color_button_color_set",   G_CALLBACK (on_netload2_loopback_color_button_color_set), +                                      "on_netload2_background_color_button_color_set", G_CALLBACK (on_netload2_background_color_button_color_set), +                                      "on_netload2_gridline_color_button_color_set",   G_CALLBACK (on_netload2_gridline_color_button_color_set), +                                      "on_netload2_indicator_color_button_color_set",  G_CALLBACK (on_netload2_indicator_color_button_color_set), +                                      "on_swapload_used_color_button_color_set",       G_CALLBACK (on_swapload_used_color_button_color_set), +                                      "on_swapload_free_color_button_color_set",       G_CALLBACK (on_swapload_free_color_button_color_set), +                                      "on_loadavg_average_color_button_color_set",     G_CALLBACK (on_loadavg_average_color_button_color_set), +                                      "on_loadavg_background_color_button_color_set",  G_CALLBACK (on_loadavg_background_color_button_color_set), +                                      "on_loadavg_gridline_color_button_color_set",    G_CALLBACK (on_loadavg_gridline_color_button_color_set), +                                      "on_diskload_read_color_button_color_set",       G_CALLBACK (on_diskload_read_color_button_color_set), +                                      "on_diskload_write_color_button_color_set",      G_CALLBACK (on_diskload_write_color_button_color_set), +                                      "on_diskload_free_color_button_color_set",       G_CALLBACK (on_diskload_free_color_button_color_set), +                                      "on_properties_dialog_response",                 G_CALLBACK (on_properties_dialog_response), +                                      "on_graph_cpuload_checkbox_toggled",             G_CALLBACK (on_graph_cpuload_checkbox_toggled), +                                      "on_graph_memload_checkbox_toggled",             G_CALLBACK (on_graph_memload_checkbox_toggled), +                                      "on_graph_netload2_checkbox_toggled",            G_CALLBACK (on_graph_netload2_checkbox_toggled), +                                      "on_graph_swapload_checkbox_toggled",            G_CALLBACK (on_graph_swapload_checkbox_toggled), +                                      "on_graph_loadavg_checkbox_toggled",             G_CALLBACK (on_graph_loadavg_checkbox_toggled), +                                      "on_graph_diskload_checkbox_toggled",            G_CALLBACK (on_graph_diskload_checkbox_toggled), +                                      "on_nvme_checkbox_toggled",                      G_CALLBACK (on_nvme_checkbox_toggled), +                                      "on_graph_size_spin_button_value_changed",       G_CALLBACK (on_graph_size_spin_button_value_changed), +                                      "on_speed_spin_button_value_changed",            G_CALLBACK (on_speed_spin_button_value_changed), +                                      "on_net_threshold1_spin_button_value_changed",   G_CALLBACK (on_net_threshold1_spin_button_value_changed), +                                      "on_net_threshold2_spin_button_value_changed",   G_CALLBACK (on_net_threshold2_spin_button_value_changed), +                                      "on_net_threshold3_spin_button_value_changed",   G_CALLBACK (on_net_threshold3_spin_button_value_changed), +                                      NULL); + +    gtk_builder_connect_signals (builder, ma); + +    g_object_unref (builder); + +    gtk_window_set_screen (GTK_WINDOW (ma->prop_dialog),                             gtk_widget_get_screen (GTK_WIDGET (ma->applet))); -    gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE); -    gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); -    gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); -    gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), 2); - -    fill_properties(dialog, ma); - -    properties_set_insensitive(ma); - -    g_signal_connect(G_OBJECT(dialog), "response", -                     G_CALLBACK(properties_close_cb), ma); - -    ma->prop_dialog = dialog; -    gtk_widget_show_all(dialog); +    gtk_widget_show_all (ma->prop_dialog);      gtk_notebook_set_current_page (GTK_NOTEBOOK (ma->notebook),                                     ma->last_clicked); diff --git a/po/POTFILES.in b/po/POTFILES.in index 3ab8cee2..621aebc8 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -44,6 +44,7 @@ mateweather/src/main.c  # NB. these are actually separate files  multiload/data/org.mate.applets.MultiLoadApplet.mate-panel-applet.desktop.in.in  multiload/data/org.mate.panel.applet.multiload.gschema.xml.in +multiload/data/properties.ui  multiload/src/linux-proc.c  multiload/src/load-graph.c  multiload/src/main.c  | 
