[gnome-system-monitor/wip/newdesign: 9/9] Network color pickers ported to new design, without bits display yet



commit d79c590abaff5573ed050df9e6d631df65a82c0b
Author: Robert Roth <robert roth off gmail com>
Date:   Wed Aug 14 07:06:47 2013 +0300

    Network color pickers ported to new design, without bits display yet

 data/interface.ui      |   93 +++------------------------------------
 src/gsm_color_button.c |  112 +++++-------------------------------------------
 src/gsm_color_button.h |    3 +-
 src/interface.cpp      |   24 +++-------
 src/load-graph.cpp     |   28 +++++++++---
 src/load-graph.h       |    9 +++-
 src/util.cpp           |   27 ++++++------
 src/util.h             |   24 +++++++++-
 8 files changed, 91 insertions(+), 229 deletions(-)
---
diff --git a/data/interface.ui b/data/interface.ui
index 20996a8..998e3c3 100644
--- a/data/interface.ui
+++ b/data/interface.ui
@@ -428,6 +428,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="orientation">horizontal</property>
+                        <property name="margin_right">56</property>
                         <child>
                           <object class="GtkLabel" id="net_label">
                             <property name="visible">True</property>
@@ -448,117 +449,39 @@
                           <object class="GtkGrid" id="net_table">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="hexpand">True</property>
                             <property name="row_spacing">6</property>
                             <property name="column_spacing">6</property>
                             <property name="row_homogeneous">True</property>
+                            <property name="column_homogeneous">True</property>
                             <child>
                               <object class="GtkLabel" id="receiving_label">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="hexpand">True</property>
-                                <property name="xalign">0</property>
+                                <property name="xalign">1</property>
                                 <property name="label" translatable="yes">Receiving</property>
                               </object>
                               <packing>
-                                <property name="left_attach">1</property>
+                                <property name="left_attach">0</property>
                                 <property name="top_attach">0</property>
                                 <property name="width">1</property>
                                 <property name="height">1</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="total_received_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="hexpand">True</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Total Received</property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="top_attach">1</property>
-                                <property name="width">1</property>
-                                <property name="height">1</property>
-                              </packing>
-                            </child>
-                            <child>
                               <object class="GtkLabel" id="sending_label">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="hexpand">True</property>
-                                <property name="xalign">0</property>
+                                <property name="xalign">1</property>
                                 <property name="label" translatable="yes">Sending</property>
                               </object>
                               <packing>
-                                <property name="left_attach">5</property>
+                                <property name="left_attach">2</property>
                                 <property name="top_attach">0</property>
                                 <property name="width">1</property>
                                 <property name="height">1</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkLabel" id="total_sent_label">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="hexpand">True</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Total Sent</property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">5</property>
-                                <property name="top_attach">1</property>
-                                <property name="width">1</property>
-                                <property name="height">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="spacer">
-                                <property name="width_request">16</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label"></property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">3</property>
-                                <property name="top_attach">0</property>
-                                <property name="width">1</property>
-                                <property name="height">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkAlignment" id="receiving_picker_alignment">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="border_width">6</property>
-                                <child>
-                                  <placeholder/>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="left_attach">0</property>
-                                <property name="top_attach">0</property>
-                                <property name="width">1</property>
-                                <property name="height">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkAlignment" id="sending_picker_alignment">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="border_width">6</property>
-                                <child>
-                                  <placeholder/>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="left_attach">4</property>
-                                <property name="top_attach">0</property>
-                                <property name="width">1</property>
-                                <property name="height">2</property>
-                              </packing>
-                            </child>
-                            <child>
                               <placeholder/>
                             </child>
                             <child>
@@ -567,7 +490,7 @@
                           </object>
                           <packing>
                             <property name="expand">False</property>
-                            <property name="fill">True</property>
+                            <property name="fill">False</property>
                             <property name="pack_type">end</property>
                             <property name="position">0</property>
                           </packing>
@@ -630,7 +553,7 @@
   </object>
   <object class="GtkSizeGroup" id="explabels">
     <widgets>
-      <widget name="net_table"/>
+      <!--<widget name="net_table"/>-->
       <widget name="cpu_table"/>
       <widget name="mem_table"/>
     </widgets>
diff --git a/src/gsm_color_button.c b/src/gsm_color_button.c
index 7973d11..5c0a0ef 100644
--- a/src/gsm_color_button.c
+++ b/src/gsm_color_button.c
@@ -178,47 +178,12 @@ gsm_color_button_class_init (GsmColorButtonClass * klass)
 }
 
 
-static cairo_surface_t *
-fill_image_buffer_from_resource (cairo_t *cr, const char *path)
-{
-  GBytes *bytes;
-  const guint8 *data;
-  gsize len;
-  GError *error = NULL;
-  RsvgHandle *handle;
-  cairo_surface_t *tmp_surface;
-  cairo_t *tmp_cr;
-
-  bytes = g_resources_lookup_data (path, 0 , NULL);
-  data = g_bytes_get_data (bytes, &len);
-
-  handle = rsvg_handle_new_from_data (data, len, &error);
-
-  if (handle == NULL) {
-    g_warning("rsvg_handle_new_from_data(\"%s\") failed: %s",
-             path, (error ? error->message : "unknown error"));
-    if (error)
-      g_error_free(error);
-    return NULL;
-  }
-
-  tmp_surface = cairo_surface_create_similar (cairo_get_target (cr),
-                                             CAIRO_CONTENT_COLOR_ALPHA,
-                                             32, 32);
-  tmp_cr = cairo_create (tmp_surface);
-  rsvg_handle_render_cairo (handle, tmp_cr);
-  cairo_destroy (tmp_cr);
-  g_object_unref (handle);
-  return tmp_surface;
-}
-
 static gboolean
 gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
 {
   GsmColorButton *color_button = GSM_COLOR_BUTTON (widget);
   GsmColorButtonPrivate *priv = gsm_color_button_get_instance_private (color_button);
   GdkRGBA *color = gdk_rgba_copy(&priv->color);
-  cairo_path_t *path = NULL;
   gint width, height;
   gdouble radius, arc_start, arc_end;
   gdouble highlight_factor;
@@ -226,7 +191,7 @@ gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
   PangoLayout* layout;
   PangoFontDescription* font_desc;
   PangoRectangle extents;
-  gchar * caption;
+  gchar * caption = NULL;
   
   if (sensitive && priv->highlight > 0) {
     highlight_factor = 0.125 * priv->highlight;
@@ -248,6 +213,7 @@ gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
   
   switch (priv->type)
     {
+    case GSMCP_TYPE_NETWORK:
     case GSMCP_TYPE_CPU:
       // colored background
       cairo_paint (cr);
@@ -266,12 +232,18 @@ gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
       pango_layout_set_font_description (layout, font_desc);
       pango_font_description_free (font_desc);
       pango_layout_set_alignment (layout, PANGO_ALIGN_RIGHT);
-      caption = g_strdup_printf ("<span font-weight='ultrabold'>%.1f%%</span>", priv->fraction * 100.0f);
+      if (priv->type == GSMCP_TYPE_NETWORK) {
+        char* rate = g_format_size(priv->fraction);
+        caption = g_strdup_printf ("<span font-weight='ultrabold'>%s</span>", rate);
+        g_free (rate);
+      }  else if (priv->type == GSMCP_TYPE_CPU) {
+        caption = g_strdup_printf ("<span font-weight='ultrabold'>%.1f%%</span>", priv->fraction * 100.0f);
+      }
       pango_layout_set_markup (layout, caption, -1);
       g_free (caption);
       pango_layout_get_extents (layout, NULL, &extents);
       // draw label outline
-      cairo_move_to (cr, (width - 1.3 * extents.width / PANGO_SCALE)/2 + 5.1 ,
+      cairo_move_to (cr, (width - 1.3 * extents.width / PANGO_SCALE)/2 + 9.5 ,
                      (height - 1.3 * extents.height / PANGO_SCALE)/2 + 2);
       
       cairo_set_line_width (cr, 3);
@@ -279,7 +251,7 @@ gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
       pango_cairo_layout_path (cr, layout);
       cairo_stroke (cr);
       // draw label text
-      cairo_move_to (cr, (width - 1.3 * extents.width / PANGO_SCALE)/2 + 4.7,
+      cairo_move_to (cr, (width - 1.3 * extents.width / PANGO_SCALE)/2 + 9.1,
                      (height - 1.3 * extents.height / PANGO_SCALE)/2 + 2);
       cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 1.0);
       
@@ -348,68 +320,6 @@ gsm_color_button_draw (GtkWidget *widget, cairo_t * cr)
       cairo_stroke (cr);
 
       break;
-    case GSMCP_TYPE_NETWORK_IN:
-      if (priv->image_buffer == NULL)
-          priv->image_buffer =
-         fill_image_buffer_from_resource (cr, "/org/gnome/gnome-system-monitor/pixmaps/download.svg");
-      gtk_widget_set_size_request (widget, 32, 32);
-      cairo_move_to (cr, 8.5, 1.5);
-      cairo_line_to (cr, 23.5, 1.5);
-      cairo_line_to (cr, 23.5, 11.5);
-      cairo_line_to (cr, 29.5, 11.5);
-      cairo_line_to (cr, 16.5, 27.5);
-      cairo_line_to (cr, 15.5, 27.5);
-      cairo_line_to (cr, 2.5, 11.5);
-      cairo_line_to (cr, 8.5, 11.5);
-      cairo_line_to (cr, 8.5, 1.5);
-      cairo_close_path (cr);
-      path = cairo_copy_path (cr);
-      cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
-      cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER);
-      cairo_set_line_width (cr, 1);
-      cairo_fill_preserve (cr);
-      cairo_set_miter_limit (cr, 5.0);
-      cairo_stroke (cr);
-      cairo_set_source_rgba (cr, 0, 0, 0, 0.5);
-      cairo_append_path (cr, path);
-      cairo_path_destroy(path);
-      cairo_stroke (cr);
-      cairo_set_source_surface (cr, priv->image_buffer, 0.0,
-                               0.0);
-      cairo_paint (cr);
-
-      break;
-    case GSMCP_TYPE_NETWORK_OUT:
-      if (priv->image_buffer == NULL)
-          priv->image_buffer =
-         fill_image_buffer_from_resource (cr, "/org/gnome/gnome-system-monitor/pixmaps/upload.svg");
-      gtk_widget_set_size_request (widget, 32, 32);
-      cairo_move_to (cr, 16.5, 1.5);
-      cairo_line_to (cr, 29.5, 17.5);
-      cairo_line_to (cr, 23.5, 17.5);
-      cairo_line_to (cr, 23.5, 27.5);
-      cairo_line_to (cr, 8.5, 27.5);
-      cairo_line_to (cr, 8.5, 17.5);
-      cairo_line_to (cr, 2.5, 17.5);
-      cairo_line_to (cr, 15.5, 1.5);
-      cairo_line_to (cr, 16.5, 1.5);
-      cairo_close_path (cr);
-      path = cairo_copy_path (cr);
-      cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
-      cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER);
-      cairo_set_line_width (cr, 1);
-      cairo_fill_preserve (cr);
-      cairo_set_miter_limit (cr, 5.0);
-      cairo_stroke (cr);
-      cairo_set_source_rgba (cr, 0, 0, 0, 0.5);
-      cairo_append_path (cr, path);
-      cairo_path_destroy(path);
-      cairo_stroke (cr);
-      cairo_set_source_surface (cr, priv->image_buffer, 0.0,
-                               0.0);
-      cairo_paint (cr);
-
-      break;
     }
 
   return FALSE;
diff --git a/src/gsm_color_button.h b/src/gsm_color_button.h
index 3f2f37a..1b63e3b 100644
--- a/src/gsm_color_button.h
+++ b/src/gsm_color_button.h
@@ -52,8 +52,7 @@ enum
 {
     GSMCP_TYPE_CPU,
     GSMCP_TYPE_PIE,
-    GSMCP_TYPE_NETWORK_IN,
-    GSMCP_TYPE_NETWORK_OUT,
+    GSMCP_TYPE_NETWORK,
     GSMCP_TYPES
 };
 
diff --git a/src/interface.cpp b/src/interface.cpp
index c8fc5d0..53394bb 100644
--- a/src/interface.cpp
+++ b/src/interface.cpp
@@ -178,7 +178,6 @@ create_sys_view (GsmApplication *app, GtkBuilder * builder)
     GtkWidget *label;
     GtkWidget *table;
     GtkWidget *color_picker;
-    GtkWidget *picker_alignment;
     LoadGraph *cpu_graph, *mem_graph, *net_graph;
 
     gint i;
@@ -235,7 +234,7 @@ create_sys_view (GsmApplication *app, GtkBuilder * builder)
         g_signal_connect (G_OBJECT (color_picker), "color-set",
                           G_CALLBACK (cb_cpu_color_changed), GINT_TO_POINTER (i));
         gtk_box_pack_start (GTK_BOX (temp_hbox), color_picker, FALSE, TRUE, 0);
-        gtk_widget_set_size_request(GTK_WIDGET(color_picker), 80, 20);
+        gtk_widget_set_size_request(GTK_WIDGET(color_picker), 100, 24);
         
 
     }
@@ -294,36 +293,27 @@ create_sys_view (GsmApplication *app, GtkBuilder * builder)
 
     table = GTK_WIDGET (gtk_builder_get_object (builder, "net_table"));
 
-    color_picker = gsm_color_button_new (
-        &net_graph->colors.at(0), GSMCP_TYPE_NETWORK_IN);
+    color_picker = load_graph_get_net_in_color_picker (net_graph);
+    gtk_widget_set_size_request(GTK_WIDGET(color_picker), 100, 24);
     g_signal_connect (G_OBJECT (color_picker), "color-set",
                       G_CALLBACK (cb_net_in_color_changed), app);
     title_text = g_strdup_printf(title_template, _("Receiving"));
     gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text);
     g_free(title_text);
-    picker_alignment = GTK_WIDGET (gtk_builder_get_object (builder, "receiving_picker_alignment"));
-    gtk_container_add (GTK_CONTAINER (picker_alignment), color_picker);
 
     label = GTK_WIDGET (gtk_builder_get_object(builder, "receiving_label"));
-    gtk_grid_attach_next_to (GTK_GRID (table), load_graph_get_labels(net_graph)->net_in, label, 
GTK_POS_RIGHT, 1, 1);
-    label = GTK_WIDGET (gtk_builder_get_object(builder, "total_received_label"));
-    gtk_grid_attach_next_to (GTK_GRID (table), load_graph_get_labels(net_graph)->net_in_total, label, 
GTK_POS_RIGHT, 1, 1);
+    gtk_grid_attach_next_to (GTK_GRID (table), color_picker, label, GTK_POS_RIGHT, 1, 1);
 
-    color_picker = gsm_color_button_new (
-        &net_graph->colors.at(1), GSMCP_TYPE_NETWORK_OUT);
+    color_picker = load_graph_get_net_out_color_picker (net_graph);
+    gtk_widget_set_size_request(GTK_WIDGET(color_picker), 100, 24);
     g_signal_connect (G_OBJECT (color_picker), "color-set",
                       G_CALLBACK (cb_net_out_color_changed), app);
     title_text = g_strdup_printf(title_template, _("Sending"));
     gsm_color_button_set_title(GSM_COLOR_BUTTON(color_picker), title_text);
     g_free(title_text);
 
-    picker_alignment = GTK_WIDGET (gtk_builder_get_object (builder, "sending_picker_alignment"));
-    gtk_container_add (GTK_CONTAINER (picker_alignment), color_picker);
-
     label = GTK_WIDGET (gtk_builder_get_object(builder, "sending_label"));
-    gtk_grid_attach_next_to (GTK_GRID (table), load_graph_get_labels(net_graph)->net_out, label, 
GTK_POS_RIGHT, 1, 1);
-    label = GTK_WIDGET (gtk_builder_get_object(builder, "total_sent_label"));
-    gtk_grid_attach_next_to (GTK_GRID (table),  load_graph_get_labels(net_graph)->net_out_total, label, 
GTK_POS_RIGHT, 1, 1);
+    gtk_grid_attach_next_to (GTK_GRID (table), color_picker, label, GTK_POS_RIGHT, 1, 1);
 
     app->net_graph = net_graph;
     g_free (title_template);
diff --git a/src/load-graph.cpp b/src/load-graph.cpp
index d574108..5207ebb 100644
--- a/src/load-graph.cpp
+++ b/src/load-graph.cpp
@@ -608,11 +608,8 @@ get_net (LoadGraph *graph)
     if (!first)
         net_scale(graph, din, dout);
 
-    gtk_label_set_text (GTK_LABEL (graph->labels.net_in), procman::format_network_rate(din).c_str());
-    gtk_label_set_text (GTK_LABEL (graph->labels.net_in_total), procman::format_network(in).c_str());
-
-    gtk_label_set_text (GTK_LABEL (graph->labels.net_out), procman::format_network_rate(dout).c_str());
-    gtk_label_set_text (GTK_LABEL (graph->labels.net_out_total), procman::format_network(out).c_str());
+    gsm_color_button_set_fraction (GSM_COLOR_BUTTON (graph->net_in_color_picker), din);
+    gsm_color_button_set_fraction (GSM_COLOR_BUTTON (graph->net_out_color_picker), dout);
 }
 
 
@@ -700,7 +697,9 @@ LoadGraph::LoadGraph(guint type)
       draw(FALSE),
       mem_color_picker(NULL),
       swap_color_picker(NULL),
-      cpu_color_pickers(NULL)
+      cpu_color_pickers(NULL),
+      net_in_color_picker(NULL),
+      net_out_color_picker(NULL)
 {
     LoadGraph * const graph = this;
 
@@ -775,6 +774,10 @@ LoadGraph::LoadGraph(guint type)
         case LOAD_GRAPH_NET:
             colors[0] = GsmApplication::get()->config.net_in_color;
             colors[1] = GsmApplication::get()->config.net_out_color;
+            net_in_color_picker = gsm_color_button_new (&colors[0],
+                                                        GSMCP_TYPE_NETWORK);
+            net_out_color_picker = gsm_color_button_new (&colors[1],
+                                                        GSMCP_TYPE_NETWORK);
             break;
     }
 
@@ -882,3 +885,16 @@ load_graph_get_cpu_color_picker(LoadGraph *graph, guint nr)
 {
     return GTK_WIDGET (g_list_nth_data (graph->cpu_color_pickers, nr));
 }
+
+GtkWidget*
+load_graph_get_net_in_color_picker(LoadGraph *graph)
+{
+    return graph->net_in_color_picker;
+}
+
+GtkWidget*
+load_graph_get_net_out_color_picker(LoadGraph *graph)
+{
+    return graph->net_out_color_picker;
+}
+
diff --git a/src/load-graph.h b/src/load-graph.h
index dfe601a..c72f0d8 100644
--- a/src/load-graph.h
+++ b/src/load-graph.h
@@ -73,7 +73,8 @@ struct LoadGraph
     GtkWidget *mem_color_picker;
     GtkWidget *swap_color_picker;
     GList * cpu_color_pickers;
-
+    GtkWidget *net_in_color_picker;
+    GtkWidget *net_out_color_picker;
     /* union { */
     struct
     {
@@ -130,4 +131,10 @@ load_graph_get_swap_color_picker(LoadGraph *g) G_GNUC_CONST;
 GtkWidget*
 load_graph_get_cpu_color_picker(LoadGraph *g, guint nr) G_GNUC_CONST;
 
+GtkWidget*
+load_graph_get_net_out_color_picker(LoadGraph *g) G_GNUC_CONST;
+
+GtkWidget*
+load_graph_get_net_in_color_picker(LoadGraph *g) G_GNUC_CONST;
+
 #endif /* _GSM_LOAD_GRAPH_H_ */
diff --git a/src/util.cpp b/src/util.cpp
index d052a96..04f03cb 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -144,7 +144,7 @@ procman_make_label_for_mmaps_or_ofiles(const char *format,
  **/
 
 gchar*
-procman::format_size(guint64 size, guint64 max_size, bool want_bits)
+procman_format_size(guint64 size, guint64 max_size, bool want_bits)
 {
 
     enum {
@@ -207,6 +207,15 @@ procman::format_size(guint64 size, guint64 max_size, bool want_bits)
     }
 }
 
+gchar* procman_format_rate(guint64 rate, guint64 max_rate, bool want_bits)
+{
+    char* bytes = procman_format_size(rate, max_rate, want_bits);
+    // xgettext: rate, 10MiB/s or 10Mbit/s
+    gchar* formatted_rate = g_strdup_printf(_("%s/s"), bytes);
+    g_free(bytes);
+    return formatted_rate;
+}
+    
 gchar *
 procman::get_nice_level (gint nice)
 {
@@ -622,28 +631,18 @@ namespace procman
     }
 
 
-    std::string format_rate(guint64 rate, guint64 max_rate, bool want_bits)
-    {
-        char* bytes = procman::format_size(rate, max_rate, want_bits);
-        // xgettext: rate, 10MiB/s or 10Mbit/s
-        std::string formatted_rate(make_string(g_strdup_printf(_("%s/s"), bytes)));
-        g_free(bytes);
-        return formatted_rate;
-    }
-
 
     std::string format_network(guint64 rate, guint64 max_rate)
     {
-        char* bytes = procman::format_size(rate, max_rate, GsmApplication::get()->config.network_in_bits);
+        char* bytes = procman_format_size(rate, max_rate, GsmApplication::get()->config.network_in_bits);
         std::string formatted(bytes);
         g_free(bytes);
         return formatted;
     }
-
-
+    
     std::string format_network_rate(guint64 rate, guint64 max_rate)
     {
-        return procman::format_rate(rate, max_rate, GsmApplication::get()->config.network_in_bits);
+        return procman_format_rate (rate, max_rate, GsmApplication::get()->config.network_in_bits);
     }
 
 }
diff --git a/src/util.h b/src/util.h
index 6dda021..c3ac57f 100644
--- a/src/util.h
+++ b/src/util.h
@@ -4,10 +4,17 @@
 
 #include <glib.h>
 #include <gtk/gtk.h>
+
+#ifdef __cplusplus
+#define EXTERNC extern "C"
 #include <string>
 
 using std::string;
 
+#else
+#define EXTERNC
+#endif
+
 /* check if logind is running */
 #define LOGIND_RUNNING() (access("/run/systemd/seats/", F_OK) >= 0)
 
@@ -22,6 +29,19 @@ load_symbols(const char *module, ...) G_GNUC_NULL_TERMINATED;
 const char*
 format_process_state(guint state);
 
+
+EXTERNC 
+gchar* 
+procman_format_rate(guint64 size, guint64 max, gboolean want_bits);
+
+
+#ifdef __cplusplus
+
+gchar* 
+procman_format_size(guint64 size, guint64 max = 0, gboolean want_bits = false);
+gchar* 
+procman_format_rate(guint64 size, guint64 max = 0, gboolean want_bits = false);
+
 void
 procman_debug_real(const char *file, int line, const char *func,
                    const char *format, ...) G_GNUC_PRINTF(4, 5);
@@ -115,8 +135,6 @@ namespace procman
         tree_store_update<const char>(model, iter, column, new_value);
     }
 
-    gchar* format_size(guint64 size, guint64 max = 0, bool want_bits = false);
-
     gchar* get_nice_level (gint nice);
 
     gchar* get_nice_level_with_priority (gint nice);
@@ -126,5 +144,5 @@ namespace procman
     std::string format_network(guint64 rate, guint64 max_rate = 0);
     std::string format_network_rate(guint64 rate, guint64 max_rate = 0);
 }
-
+#endif /* __cpluspluc */
 #endif /* _GSM_UTIL_H_ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]