~v-geronimos/pama/0.2

« back to all changes in this revision

Viewing changes to src/pama-applet.c

  • Committer: Vassili Geronimos
  • Date: 2009-02-07 00:52:08 UTC
  • Revision ID: v.geronimos@gmail.com-20090207005208-b58rdfvmroozlk3j
* pama-applet.c: Disable the icons when the connection to the PulseAudio server is terminated, and re-enable them when a new connection is established

* pama-applet.c: Added missing code to close the source popup when the connection is closed

* pama-applet.c: Reworded the tooltips that show up when the applet has no information on the default sink or source

* pama-applet.c: Don't allow the sink or source popups to open when there is no active connection

* pama-sink-input-widget.c, pama-sink-widget.c, pama-source-output-widget.c, pama-source-widget.c:
  Added tooltips to the mute, set as default and move stream buttons

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
static void     pama_applet_dispose                   (GObject *gobject);
33
33
static void     pama_applet_change_orient             (PanelApplet *applet, PanelAppletOrient orient);
34
34
static void     pama_applet_pulse_context_disconnected(PamaPulseContext *context, gpointer data);
 
35
static void     pama_applet_pulse_context_connected   (PamaPulseContext *context, gpointer data);
35
36
static void     pama_applet_pulse_context_notify      (PamaPulseContext *context, GParamSpec *pspec, gpointer data);
36
37
static void     pama_applet_update_default_devices    (PamaApplet *applet);
37
38
static void     pama_applet_io_devs_changed           (gpointer, guint, gpointer data);
72
73
 
73
74
        self->sink_event_box   = gtk_event_box_new();
74
75
        self->source_event_box = gtk_event_box_new();
75
 
        gtk_event_box_set_visible_window(GTK_EVENT_BOX(self->sink_event_box), FALSE);
 
76
        gtk_event_box_set_visible_window(GTK_EVENT_BOX(self->sink_event_box),   FALSE);
76
77
        gtk_event_box_set_visible_window(GTK_EVENT_BOX(self->source_event_box), FALSE);
77
 
        gtk_box_pack_start(self->box, self->sink_event_box, FALSE, TRUE, 0);
 
78
        gtk_widget_set_tooltip_text(GTK_WIDGET(self->sink_event_box),   _("Not connected to PulseAudio server"));
 
79
        gtk_widget_set_tooltip_text(GTK_WIDGET(self->source_event_box), _("Not connected to PulseAudio server"));
 
80
        gtk_widget_set_sensitive(GTK_WIDGET(self->sink_event_box),   FALSE);
 
81
        gtk_widget_set_sensitive(GTK_WIDGET(self->source_event_box), FALSE);
 
82
        gtk_box_pack_start(self->box, self->sink_event_box,   FALSE, TRUE, 0);
78
83
        gtk_box_pack_start(self->box, self->source_event_box, FALSE, TRUE, 0);
79
84
 
80
 
        self->sink_icon   = gtk_image_new_from_icon_name("audio-volume-high",      GTK_ICON_SIZE_MENU);
81
 
        self->source_icon = gtk_image_new_from_icon_name("audio-input-microphone", GTK_ICON_SIZE_MENU);
 
85
        self->sink_icon   = gtk_image_new_from_icon_name("audio-volume-muted",           GTK_ICON_SIZE_MENU);
 
86
        self->source_icon = gtk_image_new_from_icon_name("audio-input-microphone-muted", GTK_ICON_SIZE_MENU);
82
87
        gtk_container_add(GTK_CONTAINER(self->sink_event_box),   self->sink_icon);
83
88
        gtk_container_add(GTK_CONTAINER(self->source_event_box), self->source_icon);
84
89
 
124
129
        self->context = pama_pulse_context_new(self->api);
125
130
        g_object_connect(self->context, 
126
131
                         "signal::disconnected",   pama_applet_pulse_context_disconnected, self,
 
132
                         "signal::connected",      pama_applet_pulse_context_connected,    self,
127
133
                                         "signal::notify",         pama_applet_pulse_context_notify,       self,
128
134
                                         "signal::sink-added",     pama_applet_io_devs_changed,            self,
129
135
                                         "signal::sink-removed",   pama_applet_io_devs_changed,            self,
134
140
        return FALSE;
135
141
}
136
142
 
 
143
static void pama_applet_pulse_context_connected(PamaPulseContext *context, gpointer data)
 
144
{
 
145
        PamaApplet *self = data;
 
146
 
 
147
        gtk_widget_set_sensitive(GTK_WIDGET(self->sink_event_box),   TRUE);
 
148
        gtk_widget_set_sensitive(GTK_WIDGET(self->source_event_box), TRUE);
 
149
        gtk_widget_set_tooltip_text(GTK_WIDGET(self->sink_event_box),   _("No information received yet"));
 
150
        gtk_widget_set_tooltip_text(GTK_WIDGET(self->source_event_box), _("No information received yet"));
 
151
}
 
152
 
137
153
static void pama_applet_pulse_context_disconnected(PamaPulseContext *context, gpointer data)
138
154
{
139
155
        PamaApplet *self = data;
146
162
        
147
163
        if (self->sink_popup)
148
164
                gtk_widget_destroy(GTK_WIDGET(self->sink_popup));
 
165
        if (self->source_popup)
 
166
                gtk_widget_destroy(GTK_WIDGET(self->source_popup));
 
167
 
 
168
        gtk_image_set_from_icon_name(GTK_IMAGE(self->sink_icon),   "audio-volume-muted",           GTK_ICON_SIZE_MENU);
 
169
        gtk_image_set_from_icon_name(GTK_IMAGE(self->source_icon), "audio-input-microphone-muted", GTK_ICON_SIZE_MENU);
 
170
        gtk_widget_set_tooltip_text(GTK_WIDGET(self->sink_event_box),   _("Not connected to PulseAudio server"));
 
171
        gtk_widget_set_tooltip_text(GTK_WIDGET(self->source_event_box), _("Not connected to PulseAudio server"));
 
172
        gtk_widget_set_sensitive(GTK_WIDGET(self->sink_event_box),   FALSE);
 
173
        gtk_widget_set_sensitive(GTK_WIDGET(self->source_event_box), FALSE);
149
174
 
150
175
        g_timeout_add_seconds(10, pama_applet_create_context, self);
151
176
}
290
315
        else
291
316
        {
292
317
                gtk_image_set_from_icon_name(GTK_IMAGE(self->sink_icon), "audio-volume-muted", GTK_ICON_SIZE_MENU);
293
 
                gtk_widget_set_tooltip_text(GTK_WIDGET(self->sink_event_box), _("Unable to find default output device"));
 
318
                gtk_widget_set_tooltip_text(GTK_WIDGET(self->sink_event_box), _("No information for the default output device is available"));
294
319
        }
295
320
 
296
321
        if (self->default_source)
318
343
        else
319
344
        {
320
345
                gtk_image_set_from_icon_name(GTK_IMAGE(self->sink_icon), "audio-input-microphone-muted", GTK_ICON_SIZE_MENU);
321
 
                gtk_widget_set_tooltip_text(GTK_WIDGET(self->sink_event_box), _("Unable to find default input device"));
 
346
                gtk_widget_set_tooltip_text(GTK_WIDGET(self->sink_event_box), _("No information for the default input device is available"));
322
347
        }
323
348
 
324
349
        gtk_widget_trigger_tooltip_query(GTK_WIDGET(self));
399
424
        {
400
425
                if (1 == event->button)
401
426
                {
 
427
                        if (! self->context)
 
428
                                return TRUE;
 
429
 
402
430
                        if (event_box == self->sink_event_box)
403
431
                        {
404
432
                                if (self->sink_popup)