Remove bool_text from struct alsa_elem
Store the text in the boolean/dual widget private data.
This commit is contained in:
@@ -140,10 +140,6 @@ struct alsa_elem {
|
|||||||
// the callback functions for this ALSA control element
|
// the callback functions for this ALSA control element
|
||||||
GList *callbacks;
|
GList *callbacks;
|
||||||
|
|
||||||
// for boolean buttons, the two possible texts
|
|
||||||
// for dual buttons, the four possible texts
|
|
||||||
const char *bool_text[4];
|
|
||||||
|
|
||||||
// for simulated elements, the current state
|
// for simulated elements, the current state
|
||||||
int writable;
|
int writable;
|
||||||
long value;
|
long value;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
struct boolean {
|
struct boolean {
|
||||||
struct alsa_elem *elem;
|
struct alsa_elem *elem;
|
||||||
GtkWidget *button;
|
GtkWidget *button;
|
||||||
|
const char *text[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
static void button_clicked(GtkWidget *widget, struct alsa_elem *elem) {
|
static void button_clicked(GtkWidget *widget, struct alsa_elem *elem) {
|
||||||
@@ -38,7 +39,7 @@ static void toggle_button_updated(
|
|||||||
int value = !!alsa_get_elem_value(elem);
|
int value = !!alsa_get_elem_value(elem);
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->button), value);
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->button), value);
|
||||||
|
|
||||||
toggle_button_set_text(data->button, elem->bool_text[value]);
|
toggle_button_set_text(data->button, data->text[value]);
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *make_boolean_alsa_elem(
|
GtkWidget *make_boolean_alsa_elem(
|
||||||
@@ -54,13 +55,13 @@ GtkWidget *make_boolean_alsa_elem(
|
|||||||
data->button, "clicked", G_CALLBACK(button_clicked), elem
|
data->button, "clicked", G_CALLBACK(button_clicked), elem
|
||||||
);
|
);
|
||||||
alsa_elem_add_callback(elem, toggle_button_updated, data);
|
alsa_elem_add_callback(elem, toggle_button_updated, data);
|
||||||
elem->bool_text[0] = disabled_text;
|
data->text[0] = disabled_text;
|
||||||
elem->bool_text[1] = enabled_text;
|
data->text[1] = enabled_text;
|
||||||
|
|
||||||
// find the maximum width and height of both possible labels
|
// find the maximum width and height of both possible labels
|
||||||
int max_width = 0, max_height = 0;
|
int max_width = 0, max_height = 0;
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
toggle_button_set_text(data->button, elem->bool_text[i]);
|
toggle_button_set_text(data->button, data->text[i]);
|
||||||
|
|
||||||
GtkRequisition *size = gtk_requisition_new();
|
GtkRequisition *size = gtk_requisition_new();
|
||||||
gtk_widget_get_preferred_size(data->button, size, NULL);
|
gtk_widget_get_preferred_size(data->button, size, NULL);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ struct dual_button {
|
|||||||
struct alsa_elem *elem;
|
struct alsa_elem *elem;
|
||||||
GtkWidget *button1;
|
GtkWidget *button1;
|
||||||
GtkWidget *button2;
|
GtkWidget *button2;
|
||||||
|
const char *text[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
static void dual_button_clicked(GtkWidget *widget, struct dual_button *data) {
|
static void dual_button_clicked(GtkWidget *widget, struct dual_button *data) {
|
||||||
@@ -33,13 +34,13 @@ static void dual_button_updated(
|
|||||||
int value1 = !!value;
|
int value1 = !!value;
|
||||||
|
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->button1), value1);
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->button1), value1);
|
||||||
gtk_button_set_label(GTK_BUTTON(data->button1), elem->bool_text[value1]);
|
gtk_button_set_label(GTK_BUTTON(data->button1), data->text[value1]);
|
||||||
gtk_widget_set_sensitive(data->button2, value1);
|
gtk_widget_set_sensitive(data->button2, value1);
|
||||||
if (value1) {
|
if (value1) {
|
||||||
int value2 = value - 1;
|
int value2 = value - 1;
|
||||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->button2), value2);
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->button2), value2);
|
||||||
gtk_button_set_label(
|
gtk_button_set_label(
|
||||||
GTK_BUTTON(data->button2), elem->bool_text[value2 + 2]
|
GTK_BUTTON(data->button2), data->text[value2 + 2]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,10 +69,10 @@ GtkWidget *make_dual_boolean_alsa_elems(
|
|||||||
data->button2, "clicked", G_CALLBACK(dual_button_clicked), data
|
data->button2, "clicked", G_CALLBACK(dual_button_clicked), data
|
||||||
);
|
);
|
||||||
alsa_elem_add_callback(elem, dual_button_updated, data);
|
alsa_elem_add_callback(elem, dual_button_updated, data);
|
||||||
elem->bool_text[0] = disabled_text_1;
|
data->text[0] = disabled_text_1;
|
||||||
elem->bool_text[1] = enabled_text_1;
|
data->text[1] = enabled_text_1;
|
||||||
elem->bool_text[2] = disabled_text_2;
|
data->text[2] = disabled_text_2;
|
||||||
elem->bool_text[3] = enabled_text_2;
|
data->text[3] = enabled_text_2;
|
||||||
|
|
||||||
gtk_button_set_label(GTK_BUTTON(data->button2), disabled_text_2);
|
gtk_button_set_label(GTK_BUTTON(data->button2), disabled_text_2);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user