[Xfce4-commits] [panel-plugins/xfce4-battery-plugin] 06/15: Use GtkColorButton instead of GtkButton + GtkColorSelectionDialog
noreply at xfce.org
noreply at xfce.org
Sun May 29 08:36:51 CEST 2016
This is an automated email from the git hooks/post-receive script.
andrzejr pushed a commit to branch master
in repository panel-plugins/xfce4-battery-plugin.
commit b2985f36af2d8f62f0d6585c8917f8e920ccddc9
Author: Andre Miranda <andre42m at gmail.com>
Date: Sat May 28 14:12:39 2016 -0300
Use GtkColorButton instead of GtkButton + GtkColorSelectionDialog
---
panel-plugin/battery.c | 142 ++++++++++++++++++-------------------------------
1 file changed, 53 insertions(+), 89 deletions(-)
diff --git a/panel-plugin/battery.c b/panel-plugin/battery.c
index 99e3174..79954de 100644
--- a/panel-plugin/battery.c
+++ b/panel-plugin/battery.c
@@ -109,7 +109,6 @@ typedef struct
GtkLabel *acfan;
GtkLabel *temp;
GtkWidget *image;
- GtkRcStyle *battstatus_style;
} t_battmon;
typedef struct
@@ -133,10 +132,6 @@ typedef struct
GtkWidget *high_color_button;
GtkWidget *low_color_button;
GtkWidget *critical_color_button;
- GtkWidget *ac_color_background;
- GtkWidget *high_color_background;
- GtkWidget *low_color_background;
- GtkWidget *critical_color_background;
t_battmon *battmon;
} t_battmon_dialog;
@@ -590,28 +585,38 @@ battmon.c:241: for each function it appears in.)
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(battmon->battstatus), NULL);
/* bar colors and state flags */
+ GdkRGBA *color;
if (acline) {
battmon->low = battmon->critical = FALSE;
- battmon->battstatus_style->bg[GTK_STATE_PRELIGHT] = (battmon->options.colorA);
- battmon->battstatus_style->bg[GTK_STATE_SELECTED] = (battmon->options.colorA);
+ color = &battmon->options.colorA;
}
else {
if(charge <= battmon->options.critical_percentage) {
- battmon->battstatus_style->bg[GTK_STATE_PRELIGHT] = (battmon->options.colorC);
- battmon->battstatus_style->bg[GTK_STATE_SELECTED] = (battmon->options.colorC);
+ color = &battmon->options.colorC;
}
else if(charge <= battmon->options.low_percentage) {
- battmon->battstatus_style->bg[GTK_STATE_PRELIGHT] = (battmon->options.colorL);
- battmon->battstatus_style->bg[GTK_STATE_SELECTED] = (battmon->options.colorL);
battmon->critical = FALSE;
+ color = &battmon->options.colorL;
}
else {
- battmon->low = battmon->critical = FALSE;
- battmon->battstatus_style->bg[GTK_STATE_PRELIGHT] = (battmon->options.colorH);
- battmon->battstatus_style->bg[GTK_STATE_SELECTED] = (battmon->options.colorH);
+ battmon->low = battmon->critical = FALSE;
+ color = &battmon->options.colorH;
}
}
- gtk_widget_modify_style(GTK_WIDGET(battmon->battstatus),battmon->battstatus_style);
+
+#if GTK_CHECK_VERSION (3, 16, 0)
+ gchar *css = g_strdup_printf("progressbar progress { background-color: %s; background-image: none; }",
+ gdk_rgba_to_string(color));
+ GtkCssProvider *css_provider = gtk_css_provider_new ();
+ gtk_css_provider_load_from_data (css_provider, css, strlen(css), NULL);
+ gtk_style_context_add_provider (
+ GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (battmon->battstatus))),
+ GTK_STYLE_PROVIDER (css_provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ g_free(css);
+#else
+ gtk_widget_override_background_color (widget, GTK_STATE_FLAG_NORMAL, color);
+#endif
/* alarms */
if (!acline && charge <= battmon->options.low_percentage){
@@ -736,17 +741,6 @@ static void setup_battmon(t_battmon *battmon)
}
gtk_widget_show(battmon->ebox);
- battmon->battstatus_style = gtk_widget_get_modifier_style(battmon->battstatus);
- if (!battmon->battstatus_style) {
- battmon->battstatus_style = gtk_rc_style_new();
- } else {
- /* to free the style safely in any case */
- gtk_rc_style_ref(battmon->battstatus_style);
- }
-
- battmon->battstatus_style->color_flags[GTK_STATE_PRELIGHT] |= GTK_RC_BG;
- battmon->battstatus_style->color_flags[GTK_STATE_SELECTED] |= GTK_RC_BG;
-
gtk_widget_set_size_request(battmon->ebox, -1, -1);
}
@@ -841,8 +835,6 @@ battmon_free(XfcePanelPlugin *plugin, t_battmon *battmon)
g_free (battmon->options.command_on_low);
g_free (battmon->options.command_on_critical);
- gtk_rc_style_unref(battmon->battstatus_style);
-
g_free(battmon);
}
@@ -1012,10 +1004,11 @@ static void refresh_dialog(t_battmon_dialog *dialog)
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->sb_low_percentage), battmon->options.low_percentage);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->sb_critical_percentage), battmon->options.critical_percentage);
- gtk_widget_modify_bg(GTK_WIDGET(dialog->ac_color_background), GTK_STATE_NORMAL, &battmon->options.colorA);
- gtk_widget_modify_bg(GTK_WIDGET(dialog->high_color_background), GTK_STATE_NORMAL, &battmon->options.colorH);
- gtk_widget_modify_bg(GTK_WIDGET(dialog->low_color_background), GTK_STATE_NORMAL, &battmon->options.colorL);
- gtk_widget_modify_bg(GTK_WIDGET(dialog->critical_color_background), GTK_STATE_NORMAL, &battmon->options.colorC);
+ gtk_color_button_new_with_rgba(&battmon->options.colorA);
+ gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(dialog->ac_color_button), &battmon->options.colorA);
+ gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(dialog->high_color_button), &battmon->options.colorH);
+ gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(dialog->low_color_button), &battmon->options.colorL);
+ gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(dialog->critical_color_button), &battmon->options.colorC);
gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->co_action_low), battmon->options.action_on_low);
if(battmon->options.command_on_low)
gtk_entry_set_text(GTK_ENTRY(dialog->en_command_low), battmon->options.command_on_low);
@@ -1242,42 +1235,29 @@ command_browse_cb (GtkWidget *b, GtkEntry *entry)
}
}
-
-static void change_color(GtkWidget *button, t_battmon_dialog *dialog, GdkColor *color)
-{
- GtkWidget *color_dialog;
- GtkColorSelection *colorsel;
- gint response;
-
- color_dialog = gtk_color_selection_dialog_new(_("Select color"));
- gtk_window_set_transient_for(GTK_WINDOW(color_dialog), GTK_WINDOW(gtk_widget_get_toplevel(button)));
- colorsel = GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(color_dialog)->colorsel);
- gtk_color_selection_set_previous_color(colorsel, color);
- gtk_color_selection_set_current_color(colorsel, color);
- gtk_color_selection_set_has_palette(colorsel, TRUE);
-
- response = gtk_dialog_run(GTK_DIALOG(color_dialog));
- if (response == GTK_RESPONSE_OK) {
- gtk_color_selection_get_current_color(colorsel, color);
- refresh_dialog(dialog);
- update_apm_status(dialog->battmon);
- }
-
- DBG("change_color");
- gtk_widget_destroy(GTK_WIDGET(color_dialog));
-}
-
static void change_color_ac(GtkWidget *button, t_battmon_dialog *dialog) {
- change_color(button,dialog,&dialog->battmon->options.colorA);
+ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER (button),
+ &dialog->battmon->options.colorA);
+ refresh_dialog(dialog);
+ update_apm_status(dialog->battmon);
}
static void change_color_high(GtkWidget *button, t_battmon_dialog *dialog) {
- change_color(button,dialog,&dialog->battmon->options.colorH);
+ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER (button),
+ &dialog->battmon->options.colorH);
+ refresh_dialog(dialog);
+ update_apm_status(dialog->battmon);
}
static void change_color_low(GtkWidget *button, t_battmon_dialog *dialog){
- change_color(button,dialog,&dialog->battmon->options.colorL);
+ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER (button),
+ &dialog->battmon->options.colorL);
+ refresh_dialog(dialog);
+ update_apm_status(dialog->battmon);
}
static void change_color_critical(GtkWidget *button, t_battmon_dialog *dialog){
- change_color(button,dialog,&dialog->battmon->options.colorC);
+ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER (button),
+ &dialog->battmon->options.colorC);
+ refresh_dialog(dialog);
+ update_apm_status(dialog->battmon);
}
static void
@@ -1354,13 +1334,9 @@ battmon_create_options(XfcePanelPlugin *plugin, t_battmon *battmon)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);
- dialog->ac_color_button = gtk_button_new();
- dialog->ac_color_background = gtk_drawing_area_new();
- gtk_widget_modify_bg(dialog->ac_color_background, GTK_STATE_NORMAL, &battmon->options.colorA);
- gtk_widget_set_size_request(dialog->ac_color_background, 64, 12);
- gtk_container_add(GTK_CONTAINER(dialog->ac_color_button), dialog->ac_color_background);
+ dialog->ac_color_button = gtk_color_button_new_with_rgba(&battmon->options.colorA);
+ gtk_widget_set_size_request(dialog->ac_color_button, 64, 12);
gtk_widget_show(GTK_WIDGET(dialog->ac_color_button));
- gtk_widget_show(GTK_WIDGET(dialog->ac_color_background));
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(dialog->ac_color_button), FALSE, FALSE, 0);
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -1371,13 +1347,9 @@ battmon_create_options(XfcePanelPlugin *plugin, t_battmon *battmon)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);
- dialog->high_color_button = gtk_button_new();
- dialog->high_color_background = gtk_drawing_area_new();
- gtk_widget_modify_bg(dialog->high_color_background, GTK_STATE_NORMAL, &battmon->options.colorH);
- gtk_widget_set_size_request(dialog->high_color_background, 64, 12);
- gtk_container_add(GTK_CONTAINER(dialog->high_color_button), dialog->high_color_background);
+ dialog->high_color_button = gtk_color_button_new_with_rgba(&battmon->options.colorH);
+ gtk_widget_set_size_request(dialog->high_color_button, 64, 12);
gtk_widget_show(GTK_WIDGET(dialog->high_color_button));
- gtk_widget_show(GTK_WIDGET(dialog->high_color_background));
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(dialog->high_color_button), FALSE, FALSE, 0);
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -1388,13 +1360,9 @@ battmon_create_options(XfcePanelPlugin *plugin, t_battmon *battmon)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);
- dialog->low_color_button = gtk_button_new();
- dialog->low_color_background = gtk_drawing_area_new();
- gtk_widget_modify_bg(dialog->low_color_background, GTK_STATE_NORMAL, &battmon->options.colorL);
- gtk_widget_set_size_request(dialog->low_color_background, 64, 12);
- gtk_container_add(GTK_CONTAINER(dialog->low_color_button), dialog->low_color_background);
+ dialog->low_color_button = gtk_color_button_new_with_rgba(&battmon->options.colorL);
+ gtk_widget_set_size_request(dialog->low_color_button, 64, 12);
gtk_widget_show(GTK_WIDGET(dialog->low_color_button));
- gtk_widget_show(GTK_WIDGET(dialog->low_color_background));
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(dialog->low_color_button), FALSE, FALSE, 0);
hbox = gtk_hbox_new(FALSE, BORDER);
@@ -1405,13 +1373,9 @@ battmon_create_options(XfcePanelPlugin *plugin, t_battmon *battmon)
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);
- dialog->critical_color_button = gtk_button_new();
- dialog->critical_color_background = gtk_drawing_area_new();
- gtk_widget_modify_bg(dialog->critical_color_background, GTK_STATE_NORMAL, &battmon->options.colorC);
- gtk_widget_set_size_request(dialog->critical_color_background, 64, 12);
- gtk_container_add(GTK_CONTAINER(dialog->critical_color_button), dialog->critical_color_background);
+ dialog->critical_color_button = gtk_color_button_new_with_rgba(&battmon->options.colorC);
+ gtk_widget_set_size_request(dialog->critical_color_button, 64, 12);
gtk_widget_show(GTK_WIDGET(dialog->critical_color_button));
- gtk_widget_show(GTK_WIDGET(dialog->critical_color_background));
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(dialog->critical_color_button), FALSE, FALSE, 0);
label = gtk_label_new_with_mnemonic (_("Bar _colors"));
@@ -1560,10 +1524,10 @@ battmon_create_options(XfcePanelPlugin *plugin, t_battmon *battmon)
/* Signal connections should be set after setting tate of toggle buttons...*/
refresh_dialog(dialog);
- g_signal_connect(dialog->ac_color_button, "clicked", G_CALLBACK(change_color_ac), dialog);
- g_signal_connect(dialog->high_color_button, "clicked", G_CALLBACK(change_color_high), dialog);
- g_signal_connect(dialog->low_color_button, "clicked", G_CALLBACK(change_color_low), dialog);
- g_signal_connect(dialog->critical_color_button, "clicked", G_CALLBACK(change_color_critical), dialog);
+ g_signal_connect(dialog->ac_color_button, "color-set", G_CALLBACK(change_color_ac), dialog);
+ g_signal_connect(dialog->high_color_button, "color-set", G_CALLBACK(change_color_high), dialog);
+ g_signal_connect(dialog->low_color_button, "color-set", G_CALLBACK(change_color_low), dialog);
+ g_signal_connect(dialog->critical_color_button, "color-set", G_CALLBACK(change_color_critical), dialog);
g_signal_connect(button, "clicked", G_CALLBACK(command_browse_cb), dialog->en_command_low);
g_signal_connect(button2, "clicked", G_CALLBACK(command_browse_cb), dialog->en_command_critical);
g_signal_connect(dialog->cb_disp_percentage, "toggled", G_CALLBACK(set_disp_percentage), dialog);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list