Reduce code duplication in menu.c
This commit is contained in:
committed by
Geoffrey D. Bennett
parent
2936f110be
commit
c49a788ecd
48
src/menu.c
48
src/menu.c
@@ -6,17 +6,25 @@
|
|||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "window-hardware.h"
|
#include "window-hardware.h"
|
||||||
|
|
||||||
|
// helper for common code of activate_*() functions
|
||||||
|
static void update_visibility(
|
||||||
|
GSimpleAction *action,
|
||||||
|
GtkWidget *widget
|
||||||
|
) {
|
||||||
|
GVariant *state = g_action_get_state(G_ACTION(action));
|
||||||
|
gboolean new_state = !g_variant_get_boolean(state);
|
||||||
|
|
||||||
|
g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state));
|
||||||
|
gtk_widget_set_visible(widget, new_state);
|
||||||
|
}
|
||||||
|
|
||||||
static void activate_hardware(
|
static void activate_hardware(
|
||||||
GSimpleAction *action,
|
GSimpleAction *action,
|
||||||
GVariant *parameter,
|
GVariant *parameter,
|
||||||
gpointer data
|
gpointer data
|
||||||
) {
|
) {
|
||||||
GVariant *state = g_action_get_state(G_ACTION(action));
|
(void) data;
|
||||||
|
update_visibility(action, window_hardware);
|
||||||
gboolean new_state = !g_variant_get_boolean(state);
|
|
||||||
g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state));
|
|
||||||
|
|
||||||
gtk_widget_set_visible(window_hardware, new_state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void activate_quit(
|
static void activate_quit(
|
||||||
@@ -34,12 +42,7 @@ static void activate_routing(
|
|||||||
) {
|
) {
|
||||||
struct alsa_card *card = data;
|
struct alsa_card *card = data;
|
||||||
|
|
||||||
GVariant *state = g_action_get_state(G_ACTION(action));
|
update_visibility(action, card->window_routing);
|
||||||
|
|
||||||
gboolean new_state = !g_variant_get_boolean(state);
|
|
||||||
g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state));
|
|
||||||
|
|
||||||
gtk_widget_set_visible(card->window_routing, new_state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void activate_mixer(
|
static void activate_mixer(
|
||||||
@@ -49,12 +52,7 @@ static void activate_mixer(
|
|||||||
) {
|
) {
|
||||||
struct alsa_card *card = data;
|
struct alsa_card *card = data;
|
||||||
|
|
||||||
GVariant *state = g_action_get_state(G_ACTION(action));
|
update_visibility(action, card->window_mixer);
|
||||||
|
|
||||||
gboolean new_state = !g_variant_get_boolean(state);
|
|
||||||
g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state));
|
|
||||||
|
|
||||||
gtk_widget_set_visible(card->window_mixer, new_state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void activate_levels(
|
static void activate_levels(
|
||||||
@@ -64,12 +62,7 @@ static void activate_levels(
|
|||||||
) {
|
) {
|
||||||
struct alsa_card *card = data;
|
struct alsa_card *card = data;
|
||||||
|
|
||||||
GVariant *state = g_action_get_state(G_ACTION(action));
|
update_visibility(action, card->window_levels);
|
||||||
|
|
||||||
gboolean new_state = !g_variant_get_boolean(state);
|
|
||||||
g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state));
|
|
||||||
|
|
||||||
gtk_widget_set_visible(card->window_levels, new_state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void activate_startup(
|
static void activate_startup(
|
||||||
@@ -79,12 +72,7 @@ static void activate_startup(
|
|||||||
) {
|
) {
|
||||||
struct alsa_card *card = data;
|
struct alsa_card *card = data;
|
||||||
|
|
||||||
GVariant *state = g_action_get_state(G_ACTION(action));
|
update_visibility(action, card->window_startup);
|
||||||
|
|
||||||
gboolean new_state = !g_variant_get_boolean(state);
|
|
||||||
g_action_change_state(G_ACTION(action), g_variant_new_boolean(new_state));
|
|
||||||
|
|
||||||
gtk_widget_set_visible(card->window_startup, new_state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const GActionEntry app_entries[] = {
|
static const GActionEntry app_entries[] = {
|
||||||
|
|||||||
Reference in New Issue
Block a user