Example #1
0
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));
}
Example #2
0
static GamMixer *
gam_app_get_current_mixer (GamApp *gam_app)
{
    GamAppPrivate *priv;
    GtkWidget *mixer;

    g_return_if_fail (GAM_IS_APP (gam_app));

    priv = GAM_APP_GET_PRIVATE (gam_app);

    mixer = gtk_notebook_get_nth_page (GTK_NOTEBOOK (priv->notebook),
              gtk_notebook_get_current_page (GTK_NOTEBOOK (priv->notebook)));

    return (GAM_MIXER (mixer));
}
Example #3
0
GamMixer *
gam_app_get_mixer (GamApp *gam_app, gint index)
{
    GamAppPrivate *priv;
    GtkWidget *mixer;

    g_return_val_if_fail (GAM_IS_APP (gam_app), NULL);

    priv = GAM_APP_GET_PRIVATE (gam_app);

    g_return_val_if_fail ((index >= 0) && (index <= priv->num_cards), NULL);

    mixer = gtk_notebook_get_nth_page (GTK_NOTEBOOK (priv->notebook), index);

    return GAM_MIXER (mixer);
}
Example #4
0
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;
}
Example #5
0
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);
}
Example #6
0
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;
}
Example #7
0
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;
}