void gam_toggle_set_visible (GamToggle *gam_toggle, gboolean visible) { GamTogglePrivate *priv; gchar *key; g_return_if_fail (GAM_IS_TOGGLE (gam_toggle)); priv = GAM_TOGGLE_GET_PRIVATE (gam_toggle); key = g_strdup_printf ("/apps/gnome-alsamixer/display_toggles/%s-%s", gam_mixer_get_config_name (GAM_MIXER (priv->mixer)), gam_toggle_get_config_name (gam_toggle)); gconf_client_set_bool (gam_app_get_gconf_client (GAM_APP (priv->app)), key, visible, NULL); gconf_client_suggest_sync (gam_app_get_gconf_client (GAM_APP (priv->app)), NULL); if (visible) gtk_widget_show (GTK_WIDGET (gam_toggle)); else gtk_widget_hide (GTK_WIDGET (gam_toggle)); }
static void gam_app_destroy (GtkObject *object) { #ifdef DEBUG g_message ("%s - %d: gam_app_destroy", __FILE__, __LINE__); #endif GamApp *gam_app; GamAppPrivate *priv; g_return_if_fail (object != NULL); g_return_if_fail (GAM_IS_APP (object)); gam_app = GAM_APP (object); priv = GAM_APP_GET_PRIVATE (gam_app); gtk_main_quit (); priv->gconf_client = NULL; priv->status_bar = NULL; priv->notebook = NULL; gtk_container_foreach (GTK_CONTAINER (gam_app), (GtkCallback) gtk_widget_destroy, NULL); }
void gam_toggle_set_display_name (GamToggle *gam_toggle, const gchar *name) { GamTogglePrivate *priv; gchar *key; g_return_if_fail (GAM_IS_TOGGLE (gam_toggle)); priv = GAM_TOGGLE_GET_PRIVATE (gam_toggle); key = g_strdup_printf ("/apps/gnome-alsamixer/toggle_display_names/%s-%s", gam_mixer_get_config_name (GAM_MIXER (priv->mixer)), gam_toggle_get_config_name (gam_toggle)); gconf_client_set_string (gam_app_get_gconf_client (GAM_APP (priv->app)), key, name, NULL); gconf_client_suggest_sync (gam_app_get_gconf_client (GAM_APP (priv->app)), NULL); gtk_button_set_label (GTK_BUTTON (gam_toggle), name); }
gboolean gam_toggle_get_visible (GamToggle *gam_toggle) { GamTogglePrivate *priv; gchar *key; gboolean visible = TRUE; g_return_val_if_fail (GAM_IS_TOGGLE (gam_toggle), TRUE); priv = GAM_TOGGLE_GET_PRIVATE (gam_toggle); key = g_strdup_printf ("/apps/gnome-alsamixer/display_toggles/%s-%s", gam_mixer_get_config_name (GAM_MIXER (priv->mixer)), gam_toggle_get_config_name (gam_toggle)); if (gconf_client_dir_exists (gam_app_get_gconf_client (GAM_APP (priv->app)), key, NULL)) visible = gconf_client_get_bool (gam_app_get_gconf_client (GAM_APP (priv->app)), key, NULL); g_free (key); return visible; }
static gboolean gam_app_delete (GtkWidget *widget, gpointer user_data) { #ifdef DEBUG g_message ("%s - %d: gam_app_delete", __FILE__, __LINE__); #endif GamApp *gam_app; g_return_if_fail (widget != NULL); g_return_if_fail (GAM_IS_APP (widget)); gam_app = GAM_APP (widget); gam_app_save_prefs (gam_app); return FALSE; }
gchar * gam_toggle_get_display_name (GamToggle *gam_toggle) { GamTogglePrivate *priv; gchar *key, *name; g_return_val_if_fail (GAM_IS_TOGGLE (gam_toggle), NULL); priv = GAM_TOGGLE_GET_PRIVATE (gam_toggle); key = g_strdup_printf ("/apps/gnome-alsamixer/toggle_display_names/%s-%s", gam_mixer_get_config_name (GAM_MIXER (priv->mixer)), gam_toggle_get_config_name (gam_toggle)); name = gconf_client_get_string (gam_app_get_gconf_client (GAM_APP (priv->app)), key, NULL); g_free (key); return name == NULL ? g_strdup (gam_toggle_get_name (gam_toggle)) : name; }
static GObject * gam_app_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_params) { GObject *object; GamApp *gam_app; GamAppPrivate *priv; GtkWidget *main_box, *mixer, *label; GError *error; snd_ctl_t *ctl_handle; gint result, index = 0; gchar *card; object = (* G_OBJECT_CLASS (parent_class)->constructor) (type, n_construct_properties, construct_params); gam_app = GAM_APP (object); priv = GAM_APP_GET_PRIVATE (gam_app); g_signal_connect (G_OBJECT (gam_app), "delete_event", G_CALLBACK (gam_app_delete), NULL); gtk_window_set_icon_from_file (GTK_WINDOW (gam_app), PIXMAP_ICONDIR"/gnome-alsamixer-icon.png", NULL); // Build the main menu and toolbar gtk_action_group_add_actions (priv->main_action_group, action_entries, G_N_ELEMENTS (action_entries), gam_app); gtk_action_group_add_radio_actions (priv->main_action_group, radio_action_entries, G_N_ELEMENTS (radio_action_entries), VIEW_ALL, G_CALLBACK (gam_app_view_mixers_cb), gam_app); gtk_ui_manager_insert_action_group (priv->ui_manager, priv->main_action_group, 0); gtk_window_add_accel_group (GTK_WINDOW (gam_app), priv->ui_accel_group); error = NULL; if (!gtk_ui_manager_add_ui_from_string (priv->ui_manager, ui_description, -1, &error)) { g_message ("building ui failed: %s", error->message); g_error_free (error); exit (EXIT_FAILURE); } g_signal_connect (G_OBJECT (priv->ui_manager), "connect_proxy", G_CALLBACK (gam_app_ui_connect_proxy_cb), gam_app); g_signal_connect (G_OBJECT (priv->ui_manager), "disconnect_proxy", G_CALLBACK (gam_app_ui_disconnect_proxy_cb), gam_app); do { card = g_strdup_printf ("hw:%d", index++); result = snd_ctl_open (&ctl_handle, card, 0); if (result == 0) { snd_ctl_close(ctl_handle); mixer = gam_mixer_new (gam_app, card); if (gam_mixer_get_visible (GAM_MIXER (mixer))) gtk_widget_show (mixer); g_signal_connect (G_OBJECT (mixer), "display_name_changed", G_CALLBACK (gam_app_mixer_display_name_changed_cb), gam_app); g_signal_connect (G_OBJECT (mixer), "visibility_changed", G_CALLBACK (gam_app_mixer_visibility_changed_cb), gam_app); label = gtk_label_new (gam_mixer_get_display_name (GAM_MIXER (mixer))); gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), mixer, label); gam_mixer_update_visibility(mixer); } g_free (card); } while (result == 0); priv->num_cards = index - 1; // Pack widgets into window main_box = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (gam_app), main_box); gtk_box_pack_start (GTK_BOX (main_box), gtk_ui_manager_get_widget (priv->ui_manager, "/MainMenu"), FALSE, FALSE, 0); gtk_box_pack_end (GTK_BOX (main_box), priv->status_bar, FALSE, FALSE, 0); gtk_widget_show_all (GTK_WIDGET (main_box)); gtk_box_pack_start (GTK_BOX (main_box), priv->notebook, TRUE, TRUE, 0); g_signal_connect (G_OBJECT (priv->notebook), "switch-page", G_CALLBACK (gam_app_notebook_switch_page_cb), gam_app); gam_app_notebook_switch_page_cb(NULL, NULL, 0, gam_app); gtk_widget_show (priv->notebook); gam_app_load_prefs (gam_app); /*gconf_client_notify_add (priv->gconf_client, "/apps/gnomealsamixer/preferences/tab_position", (GConfClientNotifyFunc) pawed_app_gconf_notify_func, pawed_app, NULL, NULL);*/ return object; }