[Xfce4-commits] [panel-plugins/xfce4-sensors-plugin] 01/02: Added distinguishment for temperature vs. power/current/voltage vs. energy wrt. tacho coloring
noreply at xfce.org
noreply at xfce.org
Sun Oct 21 18:48:15 CEST 2018
This is an automated email from the git hooks/post-receive script.
t i m y s t e r y p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository panel-plugins/xfce4-sensors-plugin.
commit 01043f83028b9c677b23a8523fa3c5107c1711b3
Author: Fabian <timystery at arcor.de>
Date: Sun Oct 21 18:47:14 2018 +0200
Added distinguishment for temperature vs. power/current/voltage vs. energy wrt. tacho coloring
---
include/tacho.h | 18 +++++++++++++-
lib/tacho.c | 56 +++++++++++++++++++++++++++++++++++--------
panel-plugin/sensors-plugin.c | 23 +++++++++++++++++-
src/actions.c | 17 ++++++++++++-
4 files changed, 101 insertions(+), 13 deletions(-)
diff --git a/include/tacho.h b/include/tacho.h
index a4d917e..78d8c70 100644
--- a/include/tacho.h
+++ b/include/tacho.h
@@ -30,6 +30,18 @@ G_DECLARE_FINAL_TYPE (GtkSensorsTacho, gtk_sensorstacho, GTK, SENSORSTACHO, GtkD
typedef struct _GtkSensorsTacho GtkSensorsTacho;
/**
+ * Enumeration of possible style for sensors tacho.
+ */
+typedef enum _SensorsTachoStyle {
+ /** temperatures, ranging from green over yellow to red */
+ style_MinGYR = 0,
+ /** voltage and power, from yellow over green to blue */
+ style_MediumYGB = 1,
+ /** fill level, mostly used for energy from red ove ryellow to green */
+ style_MaxRYG = 2
+} SensorsTachoStyle;
+
+/**
* pseudo widget for drawing a tacho
*/
struct _GtkSensorsTacho {
@@ -48,6 +60,9 @@ struct _GtkSensorsTacho {
/** size of a side of the surrounding square area */
guint size;
+ /** color style of tacho */
+ SensorsTachoStyle style;
+
/** orientation, used for vertical bars */
GtkOrientation orientation;
};
@@ -63,9 +78,10 @@ void gtk_sensorstacho_set_value (GtkSensorsTacho *ptr_sensorstacho, gdouble valu
* create a new sensorstacho with orientation and initial size
* @param orientation: orientation of the tacho
* @param size: initial size of the tacho object
+ * @param style: gradient style of the tacho object
* @return allocated widget
*/
-GtkWidget * gtk_sensorstacho_new(GtkOrientation orientation, guint size);
+GtkWidget * gtk_sensorstacho_new(GtkOrientation orientation, guint size, SensorsTachoStyle style);
/**
* set the text to be drawn. if NULL, no text is drawn.
diff --git a/lib/tacho.c b/lib/tacho.c
index 70745cb..f69a8f3 100644
--- a/lib/tacho.c
+++ b/lib/tacho.c
@@ -97,13 +97,14 @@ gtk_sensorstacho_unset_text (GtkSensorsTacho *ptr_sensorstacho)
/* -------------------------------------------------------------------------- */
GtkWidget *
-gtk_sensorstacho_new(GtkOrientation orientation, guint size)
+gtk_sensorstacho_new(GtkOrientation orientation, guint size, SensorsTachoStyle style)
{
GtkSensorsTacho *ptr_sensorstacho = g_object_new(gtk_sensorstacho_get_type(), NULL);
TRACE("enter gtk_sensorstacho_new\n");
ptr_sensorstacho->orientation = orientation;
ptr_sensorstacho->size = size;
+ ptr_sensorstacho->style = style;
return GTK_WIDGET(ptr_sensorstacho);
}
@@ -286,6 +287,7 @@ gtk_sensorstacho_paint (GtkWidget *widget,
double degrees_45minusI;
GtkAllocation allocation;
GtkStyleContext *ptr_stylecontext = NULL;
+ GtkSensorsTacho *ptr_tacho = GTK_SENSORSTACHO(widget);
TRACE("enter gtk_sensorstacho_paint\n");
@@ -293,7 +295,7 @@ gtk_sensorstacho_paint (GtkWidget *widget,
gtk_widget_get_allocation(widget, &allocation);
- percent = GTK_SENSORSTACHO(widget)->sel;
+ percent = ptr_tacho->sel;
if (percent>1.0)
percent = 1.0;
@@ -308,16 +310,33 @@ gtk_sensorstacho_paint (GtkWidget *widget,
pos_ycenter = height / 2;
/* initialize color values appropriately */
- color.red = val_colorvalue;
+ color.red = (ptr_tacho->style != style_MediumYGB) ? val_colorvalue : 0;
color.green = val_colorvalue;
- color.blue = 0.0;
+ color.blue = 0;
color.alpha = val_alpha;
if (percent < 0.5)
- color.red = 2*val_colorvalue * percent;
+ {
+ if (ptr_tacho->style == style_MinGYR)
+ color.red = 2*val_colorvalue * percent;
+ else if (ptr_tacho->style == style_MaxRYG)
+ color.green = 2*val_colorvalue * percent;
+ else
+ color.red = 2*val_colorvalue * (0.5 - percent);
+ }
if (percent > 0.5)
- color.green = 2*val_colorvalue * (1 - percent);
+ {
+ if (ptr_tacho->style == style_MinGYR)
+ color.green = 2*val_colorvalue * (1 - percent);
+ else if (ptr_tacho->style == style_MaxRYG)
+ color.red = 2*val_colorvalue * (1 - percent);
+ else
+ {
+ color.green = 2*val_colorvalue * (1.0 - percent);
+ color.blue = 2*val_colorvalue * (percent - 0.5);
+ }
+ }
/* draw circular gradient */
for (i=(1-percent)*THREE_QUARTER_CIRCLE; i<THREE_QUARTER_CIRCLE; i++)
@@ -340,10 +359,27 @@ gtk_sensorstacho_paint (GtkWidget *widget,
cairo_fill (ptr_cairo);
if (i>(0.5*THREE_QUARTER_CIRCLE - 1))
- color.red -= 2*val_colorvalue * COLOR_STEP;
+ {
+ if (ptr_tacho->style == style_MinGYR)
+ color.red -= 2*val_colorvalue * COLOR_STEP;
+ else if (ptr_tacho->style == style_MaxRYG)
+ color.green -= 2*val_colorvalue * COLOR_STEP;
+ else {
+ color.red += 2*val_colorvalue * COLOR_STEP;
+ }
+ }
if (i<(0.5*THREE_QUARTER_CIRCLE - 1))
- color.green += 2*val_colorvalue * COLOR_STEP;
+ {
+ if (ptr_tacho->style == style_MinGYR)
+ color.green += 2*val_colorvalue * COLOR_STEP;
+ else if (ptr_tacho->style == style_MaxRYG)
+ color.red += 2*val_colorvalue * COLOR_STEP;
+ else {
+ color.green += 2*val_colorvalue * COLOR_STEP;
+ color.blue -= 2*val_colorvalue * COLOR_STEP;
+ }
+ }
}
/* white right part */
@@ -374,14 +410,14 @@ gtk_sensorstacho_paint (GtkWidget *widget,
cairo_stroke (ptr_cairo);
- if (GTK_SENSORSTACHO(widget)->text != NULL) {
+ if (ptr_tacho->text != NULL) {
PangoContext *ptr_style_context = gtk_widget_get_pango_context (widget);
PangoLayout *ptr_layout = pango_layout_new (ptr_style_context);
pango_layout_set_alignment(ptr_layout, PANGO_ALIGN_CENTER);
pango_layout_set_width (ptr_layout, width);
- ptr_text = g_strdup_printf("<span color=\"%s\">%s</span>", GTK_SENSORSTACHO(widget)->color, GTK_SENSORSTACHO(widget)->text);
+ ptr_text = g_strdup_printf("<span color=\"%s\">%s</span>", ptr_tacho->color, ptr_tacho->text);
pango_layout_set_markup (ptr_layout, ptr_text, -1); // with null-termination, no need to give length explicitly
g_free(ptr_text);
diff --git a/panel-plugin/sensors-plugin.c b/panel-plugin/sensors-plugin.c
index b9c7886..dd58d11 100644
--- a/panel-plugin/sensors-plugin.c
+++ b/panel-plugin/sensors-plugin.c
@@ -497,6 +497,7 @@ sensors_add_tacho_display (t_sensors *ptr_sensors)
gboolean has_tachos = FALSE;
GtkWidget *ptr_tacho;
gchar *str_panellabeltext;
+ SensorsTachoStyle tacho_style = style_MinGYR; /* default as has been for 10 years */
gint size_panel = ptr_sensors->panel_size;
@@ -524,7 +525,21 @@ sensors_add_tacho_display (t_sensors *ptr_sensors)
if (ptr_chipfeature->show == TRUE) {
has_tachos = TRUE;
- ptr_tacho = gtk_sensorstacho_new(ptr_sensors->orientation, size_panel);
+ switch (ptr_chipfeature->class) {
+ case VOLTAGE:
+ case POWER:
+ case CURRENT:
+ //case TEMPERATURE: // activate for devlopping only
+ tacho_style = style_MediumYGB;
+ break;
+ case ENERGY:
+ tacho_style = style_MaxRYG;
+ break;
+ default: // tacho_style = style_MinGYR; // already set per default
+ break;
+ }
+
+ ptr_tacho = gtk_sensorstacho_new(ptr_sensors->orientation, size_panel, tacho_style);
/* create the label stuff only if needed - saves some memory! */
if (ptr_sensors->show_labels == TRUE) {
@@ -2316,8 +2331,11 @@ add_tachos_appearance_boxes(GtkWidget * vbox, t_sensors_dialog * sd)
{
GtkWidget *widget_hscale;
GtkWidget *widget_label;
+ //GtkWidget *widget_groupbox;
TRACE ("enters add_tachos_appearance_boxes");
+//widget_groupbox = xfce_groub_box ...
+
sd->alpha_slider_box = gtk_hbox_new(FALSE, INNER_BORDER);
widget_label = gtk_label_new(_("Tacho color alpha value:"));
gtk_widget_show (widget_label);
@@ -2347,10 +2365,13 @@ add_tachos_appearance_boxes(GtkWidget * vbox, t_sensors_dialog * sd)
gtk_box_pack_start (GTK_BOX (vbox), sd->alpha_slider_box, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), sd->colorvalue_slider_box, FALSE, TRUE, 0);
+ //gtk_box_pack_start (GTK_BOX (vbox), widget_groupbox, FALSE, TRUE, 0);
+
if (sd->sensors->display_values_type!=DISPLAY_TACHO)
{
gtk_widget_hide(sd->alpha_slider_box);
gtk_widget_hide(sd->colorvalue_slider_box);
+ //gtk_widget_hide(widget_groupbox);
}
TRACE ("leaves add_tachos_appearance_boxes");
diff --git a/src/actions.c b/src/actions.c
index d7dfacb..bb63ee6 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -126,6 +126,7 @@ refresh_tacho_view (t_sensors_dialog *ptr_sensors_dialog_structure)
gdouble val_fill_degree;
gchar str_widget_tooltip_text[128];
gint num_max_cols, num_max_rows;
+ SensorsTachoStyle tacho_style = style_MinGYR; /* default as has been for 10 years */
TRACE ("enters refresh_tacho_view");
@@ -163,7 +164,21 @@ refresh_tacho_view (t_sensors_dialog *ptr_sensors_dialog_structure)
if (ptr_sensorstachowidget == NULL)
{
DBG("Newly adding selected widget from container.");
- ptr_sensors_structure->tachos[idx_chip][idx_feature] = ptr_sensorstachowidget = gtk_sensorstacho_new(ptr_sensors_structure->orientation, DEFAULT_SIZE_TACHOS);
+
+ switch (ptr_chipfeature_structure->class) {
+ case VOLTAGE:
+ case POWER:
+ case CURRENT:
+ tacho_style = style_MediumYGB;
+ break;
+ case ENERGY:
+ tacho_style = style_MaxRYG;
+ break;
+ default: // tacho_style = style_MinGYR; // already set per default
+ break;
+ }
+
+ ptr_sensors_structure->tachos[idx_chip][idx_feature] = ptr_sensorstachowidget = gtk_sensorstacho_new(ptr_sensors_structure->orientation, DEFAULT_SIZE_TACHOS, tacho_style);
ptr_sensorstacho = GTK_SENSORSTACHO(ptr_sensorstachowidget);
gtk_sensorstacho_set_text(ptr_sensorstacho, ptr_chipfeature_structure->name);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list