File gnome-power-manager-info.patch of Package gnome-power-manager
--- data/gpm-info.glade
+++ data/gpm-info.glade
@@ -480,327 +480,6 @@
<property name="type">tab</property>
</packing>
</child>
-
- <child>
- <widget class="GtkVBox" id="vbox2">
- <property name="border_width">6</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="Custom" id="graph_percentage">
- <property name="visible">True</property>
- <property name="creation_function">gpm_simple_graph_new</property>
- <property name="int1">0</property>
- <property name="int2">0</property>
- <property name="last_modification_time">Mon, 06 Mar 2006 23:59:21 GMT</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="stock">gtk-dialog-info</property>
- <property name="icon_size">6</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label21">
- <property name="visible">True</property>
- <property name="label" translatable="yes">This shows how the battery percentage charge varies over time.</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Charge History</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="vbox10">
- <property name="border_width">6</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="Custom" id="graph_rate">
- <property name="visible">True</property>
- <property name="creation_function">gpm_simple_graph_new</property>
- <property name="int1">0</property>
- <property name="int2">0</property>
- <property name="last_modification_time">Mon, 06 Mar 2006 23:59:21 GMT</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="hbox11">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkImage" id="image11">
- <property name="visible">True</property>
- <property name="stock">gtk-dialog-info</property>
- <property name="icon_size">6</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label24">
- <property name="visible">True</property>
- <property name="label" translatable="yes">This shows how the battery charge and discharge rate varies over time.</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label23">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Rate History</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="vbox11">
- <property name="border_width">6</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="Custom" id="graph_time">
- <property name="visible">True</property>
- <property name="creation_function">gpm_simple_graph_new</property>
- <property name="int1">0</property>
- <property name="int2">0</property>
- <property name="last_modification_time">Mon, 06 Mar 2006 23:59:21 GMT</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="hbox12">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkImage" id="image12">
- <property name="visible">True</property>
- <property name="stock">gtk-dialog-info</property>
- <property name="icon_size">6</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label26">
- <property name="visible">True</property>
- <property name="label" translatable="yes">This shows how the remaining time until charged or discharged varies over time.</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label25">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Estimated Time History</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="type">tab</property>
- </packing>
- </child>
</widget>
<packing>
<property name="padding">0</property>
--- src/gpm-info.c
+++ src/gpm-info.c
@@ -92,53 +92,6 @@
return NULL;
}
-/** add an x-y point to a list */
-static void
-gpm_info_data_point_add (GList **list, int x, int y)
-{
- g_return_if_fail (list);
- GpmSimpleDataPoint *data_point;
- data_point = g_new (GpmSimpleDataPoint, 1);
- data_point->x = x;
- data_point->y = y;
- *list = g_list_append (*list, (gpointer) data_point);
-}
-
-/** normalise both axes to 0..100 */
-static void
-gpm_stat_calculate_percentage (GList *source, GList **destination, int num_points)
-{
- g_return_if_fail (source);
- g_return_if_fail (destination);
- int count = 0; /* what number of max_count we are at */
- int max_count; /* how many data values do we want */
- int this_count = 0; /* what data point we are working on */
- int average_add = 0;
- int value_y, value_x;
- int a;
- int *point;
- float percentage_step = 100.0f / (float) num_points;
- max_count = g_list_length (source) / num_points;
-
- for (a=0; a < g_list_length (source) - 1; a++) {
- point = (int*) g_list_nth_data (source, a);
- average_add += *point;
- if (count == max_count) {
- value_y = (float) average_add / (float) (max_count + 1);
- value_x = (int) (percentage_step * (float) this_count);
-// gpm_debug ("(%i) value = (%i, %i)", this_count, value_x, value_y);
- gpm_info_data_point_add (destination, value_x, value_y);
- count = 0;
- average_add = 0;
- this_count++;
- } else {
- count++;
- }
- }
- /* we do not calculate the average on the remainder as the sample size would
- not be equal, and thus not representative of the final value */
-}
-
/** help callback */
static void
gpm_info_help_cb (GtkWidget *widget,
@@ -154,31 +107,26 @@
}
/* close callback */
-static void
-gpm_info_close_cb (GtkWidget *widget,
- GpmInfo *info)
+static gboolean
+gpm_info_delete_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ GpmInfo *info)
{
gtk_widget_destroy (info->priv->main_window);
info->priv->main_window = NULL;
+ return TRUE; // don't signal a destroy
}
-/** free a list of x-y points */
+/* close callback */
static void
-gpm_info_data_point_free (GList *list)
+gpm_info_close_cb (GtkWidget *widget,
+ GpmInfo *info)
{
- g_return_if_fail (list);
-
- int a;
- GpmSimpleDataPoint *d_point;
-
- /* free elements */
- for (a=0; a<g_list_length (list); a++) {
- d_point = (GpmSimpleDataPoint*) g_list_nth_data (list, a);
- g_free (d_point);
- }
- g_list_free (list);
+ gtk_widget_destroy (info->priv->main_window);
+ info->priv->main_window = NULL;
}
+
#if 0
/** print a list of x-y points */
static void
@@ -196,81 +144,6 @@
}
#endif
-/** find the largest and smallest integer values in a list */
-static void
-gpm_info_log_find_range (GList *list, int *smallest, int *biggest)
-{
- g_return_if_fail (list);
- int *data;
- int a;
- *smallest = 100000;
- *biggest = 0;
- for (a=0; a < g_list_length (list) - 1; a++) {
- data = (int*) g_list_nth_data (list, a);
- if (*data > *biggest) {
- *biggest = *data;
- }
- if (*data < *smallest) {
- *smallest = *data;
- }
- }
-}
-
-/** free a scalar log */
-static void
-gpm_info_log_free (GList *list)
-{
- g_return_if_fail (list);
- int *data;
- int a;
- for (a=0; a<g_list_length (list); a++) {
- data = (int*) g_list_nth_data (list, a);
- g_free (data);
- }
- g_list_free (list);
-}
-
-/** update this graph */
-static void
-gpm_info_graph_update (GpmInfoGraphData *graph_data)
-{
- int max_time;
- int smallest = 0;
- int biggest = 0;
-
- /* free existing data if exists */
- if (graph_data->graph_data) {
- gpm_info_data_point_free (graph_data->graph_data);
- graph_data->graph_data = NULL;
- }
-
- if (graph_data->log_data) {
- gpm_stat_calculate_percentage (graph_data->log_data,
- &(graph_data->graph_data),
- GPM_INFO_DATA_RES_X + 1);
- gpm_simple_graph_set_data (GPM_SIMPLE_GRAPH (graph_data->widget), graph_data->graph_data);
-
- /* set the x-axis to the time that we have been sampling for */
- max_time = (GPM_INFO_HARDWARE_POLL * g_list_length (graph_data->log_data)) / 60;
- if (max_time < 10) {
- max_time = 10;
- }
- gpm_simple_graph_set_stop_x (GPM_SIMPLE_GRAPH (graph_data->widget), max_time);
-
- /* get the biggest and smallest value of the data */
- gpm_info_log_find_range (graph_data->log_data, &smallest, &biggest);
- if (biggest < 10) {
- biggest = 10;
- }
- gpm_simple_graph_set_stop_y (GPM_SIMPLE_GRAPH (graph_data->widget), biggest);
- } else {
- gpm_debug ("no log data");
- }
-
- /* FIXME: There's got to be a better way than this */
- gtk_widget_hide (graph_data->widget);
- gtk_widget_show (graph_data->widget);
-}
/** update the tree widget with new data */
static void
@@ -396,7 +269,7 @@
GPM_DATA "gnome-power-manager.png", NULL);
g_signal_connect (info->priv->main_window, "delete_event",
- G_CALLBACK (gpm_info_close_cb), info);
+ G_CALLBACK (gpm_info_delete_event_cb), info);
widget = glade_xml_get_widget (glade_xml, "button_close");
g_signal_connect (widget, "clicked",
@@ -406,7 +279,7 @@
g_signal_connect (widget, "clicked",
G_CALLBACK (gpm_info_help_cb), info);
- widget = glade_xml_get_widget (glade_xml, "graph_percentage");
+/* widget = glade_xml_get_widget (glade_xml, "graph_percentage");
gtk_widget_set_size_request (widget, 600, 300);
info->priv->percentage->widget = widget;
gpm_simple_graph_set_axis_y (GPM_SIMPLE_GRAPH (widget), GPM_GRAPH_TYPE_PERCENTAGE);
@@ -420,7 +293,7 @@
gtk_widget_set_size_request (widget, 600, 300);
info->priv->time->widget = widget;
gpm_simple_graph_set_axis_y (GPM_SIMPLE_GRAPH (widget), GPM_GRAPH_TYPE_TIME);
-
+*/
widget = glade_xml_get_widget (info->priv->glade_xml, "treeview_primary0");
create_tree_widget (widget);
widget = glade_xml_get_widget (info->priv->glade_xml, "treeview_primary1");
@@ -432,41 +305,9 @@
populate_device_information (info);
- gpm_info_graph_update (info->priv->rate);
- gpm_info_graph_update (info->priv->percentage);
- gpm_info_graph_update (info->priv->time);
-
gtk_widget_show (info->priv->main_window);
}
-/** add a scalar point to the graph log */
-static void
-gpm_info_graph_add (GpmInfoGraphData *graph_data, int value)
-{
- int *point;
- point = g_new (int, 1);
- *point = value;
-#ifdef DO_TESTING
- static int auto_inc_val = 0;
- auto_inc_val++;
- if (auto_inc_val == 100) {
- auto_inc_val = 0;
- }
- *point += auto_inc_val;
-#endif
- graph_data->log_data = g_list_append (graph_data->log_data,
- (gpointer) point);
-}
-
-/** init log and graph data elements */
-static void
-gpm_info_graph_init (GpmInfoGraphData *graph_data)
-{
- graph_data->log_data = NULL;
- graph_data->graph_data = NULL;
- graph_data->widget = NULL;
-}
-
/** callback to get the log data every minute */
static gboolean
log_do_poll (gpointer data)
@@ -477,16 +318,7 @@
gpm_power_get_battery_status (info->priv->power,
GPM_POWER_BATTERY_KIND_PRIMARY,
&battery_status);
-
- gpm_info_graph_add (info->priv->rate, battery_status.percentage_charge);
- gpm_info_graph_add (info->priv->percentage, battery_status.charge_rate / 1000);
- gpm_info_graph_add (info->priv->time, battery_status.remaining_time);
-
if (info->priv->main_window) {
- gpm_info_graph_update (info->priv->rate);
- gpm_info_graph_update (info->priv->percentage);
- gpm_info_graph_update (info->priv->time);
- //gpm_info_data_point_print (info->priv->rate.graph_data);
/* also update the first tab */
populate_device_information (info);
}
@@ -523,22 +355,10 @@
info->priv->percentage = g_new (GpmInfoGraphData, 1);
info->priv->time = g_new (GpmInfoGraphData, 1);
- gpm_info_graph_init (info->priv->rate);
- gpm_info_graph_init (info->priv->percentage);
- gpm_info_graph_init (info->priv->time);
-
/* set up the timer callback so we can log data every minute */
g_timeout_add (GPM_INFO_HARDWARE_POLL * 1000, log_do_poll, info);
}
-/* free the scalar and x-y elements of a graph */
-static void
-gpm_info_graph_free (GpmInfoGraphData *graph_data)
-{
- gpm_info_log_free (graph_data->log_data);
- gpm_info_data_point_free (graph_data->graph_data);
- g_free (graph_data);
-}
/** finalise the object */
static void
@@ -551,9 +371,6 @@
info = GPM_INFO (object);
info->priv = GPM_INFO_GET_PRIVATE (info);
- gpm_info_graph_free (info->priv->rate);
- gpm_info_graph_free (info->priv->percentage);
- gpm_info_graph_free (info->priv->time);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
--- src/gpm-power.c
+++ src/gpm-power.c
@@ -645,23 +645,23 @@
suffix = get_power_unit_suffix (device->unit);
if (status->current_charge > 0) {
di.title = g_strdup (_("Current charge:"));
- di.value = g_strdup_printf ("%i%s", status->current_charge, suffix);
+ di.value = g_strdup_printf ("%i %s", status->current_charge, suffix);
g_array_append_vals (array, &di, 1);
}
if (status->last_full_charge > 0 &&
status->design_charge != status->last_full_charge) {
di.title = g_strdup (_("Last full charge:"));
- di.value = g_strdup_printf ("%i%s", status->last_full_charge, suffix);
+ di.value = g_strdup_printf ("%i %s", status->last_full_charge, suffix);
g_array_append_vals (array, &di, 1);
}
if (status->design_charge > 0) {
di.title = g_strdup (_("Design charge:"));
- di.value = g_strdup_printf ("%i%s", status->design_charge, suffix);
+ di.value = g_strdup_printf ("%i %s", status->design_charge, suffix);
g_array_append_vals (array, &di, 1);
}
if (status->charge_rate > 0) {
di.title = g_strdup (_("Charge rate:"));
- di.value = g_strdup_printf ("%imWh", status->charge_rate);
+ di.value = g_strdup_printf ("%i mW", status->charge_rate);
g_array_append_vals (array, &di, 1);
}
}