diff options
author | Lennart Poettering <lennart@poettering.net> | 2006-04-10 17:14:45 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2006-04-10 17:14:45 +0000 |
commit | 9f205ae53d29127c54d416b5ca024fb625b1b950 (patch) | |
tree | 9abc0e2bd7917edf79670f230b6d4e477f09875c | |
parent | 2348be825542354e15a3dcc4f7f2581fa598c721 (diff) |
* add volume control for sources
* add channel map information to sinks/source/sink inputs/source outputs
git-svn-id: file:///home/lennart/svn/public/paman/trunk@54 cdefa82f-4ce1-0310-97f5-ab6066f37c3c
-rw-r--r-- | src/ServerInfoManager.cc | 27 | ||||
-rw-r--r-- | src/ServerInfoManager.hh | 8 | ||||
-rw-r--r-- | src/SinkInputWindow.cc | 10 | ||||
-rw-r--r-- | src/SinkInputWindow.hh | 1 | ||||
-rw-r--r-- | src/SinkWindow.cc | 35 | ||||
-rw-r--r-- | src/SinkWindow.hh | 4 | ||||
-rw-r--r-- | src/SourceOutputWindow.cc | 9 | ||||
-rw-r--r-- | src/SourceOutputWindow.hh | 1 | ||||
-rw-r--r-- | src/SourceWindow.cc | 62 | ||||
-rw-r--r-- | src/SourceWindow.hh | 17 | ||||
-rw-r--r-- | src/paman.glade | 1025 |
11 files changed, 832 insertions, 367 deletions
diff --git a/src/ServerInfoManager.cc b/src/ServerInfoManager.cc index a809de6..e1c978b 100644 --- a/src/ServerInfoManager.cc +++ b/src/ServerInfoManager.cc @@ -26,14 +26,16 @@ #include "ServerInfoManager.hh" #include "paman.hh" -SinkInfo::SinkInfo(const struct pa_sink_info &i) : +SinkInfo::SinkInfo(const pa_sink_info &i) : driver(i.driver), name(i.name), index(i.index), sample_spec(i.sample_spec), + channel_map(i.channel_map), monitor_source(i.monitor_source), owner_module(i.owner_module), volume(i.volume), + hw_volume_supported(!!(i.flags & PA_SINK_HW_VOLUME_CTRL)), latency(i.latency), monitor_source_name(i.monitor_source_name), window(NULL) { @@ -47,14 +49,16 @@ SinkInfo::~SinkInfo() { delete window; } -void SinkInfo::update(const struct pa_sink_info &i) { +void SinkInfo::update(const pa_sink_info &i) { driver = Glib::ustring(i.driver); name = Glib::ustring(i.name); index = i.index; sample_spec = i.sample_spec; + channel_map = i.channel_map; monitor_source = i.monitor_source; owner_module = i.owner_module; volume = i.volume; + hw_volume_supported = !!(i.flags & PA_SINK_HW_VOLUME_CTRL), latency = i.latency; monitor_source_name = i.monitor_source_name; @@ -76,13 +80,16 @@ void SinkInfo::showWindow() { } } -SourceInfo::SourceInfo(const struct pa_source_info &i) : +SourceInfo::SourceInfo(const pa_source_info &i) : driver(i.driver), name(i.name), index(i.index), sample_spec(i.sample_spec), + channel_map(i.channel_map), owner_module(i.owner_module), monitor_of_sink(i.monitor_of_sink), + volume(i.volume), + hw_volume_supported(!!(i.flags & PA_SINK_HW_VOLUME_CTRL)), latency(i.latency), window(NULL) { @@ -100,8 +107,11 @@ void SourceInfo::update(const struct pa_source_info &i) { name = i.name; index = i.index; sample_spec = i.sample_spec; + channel_map = i.channel_map; owner_module = i.owner_module; monitor_of_sink = i.monitor_of_sink; + volume = i.volume; + hw_volume_supported = !!(i.flags & PA_SOURCE_HW_VOLUME_CTRL), latency = i.latency; description = i.description ? i.description : ""; @@ -203,6 +213,7 @@ SinkInputInfo::SinkInputInfo(const struct pa_sink_input_info &i) : name(i.name), index(i.index), sample_spec(i.sample_spec), + channel_map(i.channel_map), sink(i.sink), client(i.client), owner_module(i.owner_module), @@ -223,6 +234,7 @@ void SinkInputInfo::update(const struct pa_sink_input_info &i) { name = i.name; index = i.index; sample_spec = i.sample_spec; + channel_map = i.channel_map; sink = i.sink; client = i.client; owner_module = i.owner_module; @@ -252,6 +264,7 @@ SourceOutputInfo::SourceOutputInfo(const struct pa_source_output_info &i) : name(i.name), index(i.index), sample_spec(i.sample_spec), + channel_map(i.channel_map), source(i.source), client(i.client), owner_module(i.owner_module), @@ -271,6 +284,7 @@ void SourceOutputInfo::update(const struct pa_source_output_info &i) { name = i.name; index = i.index; sample_spec = i.sample_spec; + channel_map = i.channel_map; source = i.source; client = i.client; owner_module = i.owner_module; @@ -734,6 +748,13 @@ void ServerInfoManager::setSinkVolume(uint32_t index, pa_volume_t volume) { } /* FIXME: Handle all channels separately. */ +void ServerInfoManager::setSourceVolume(uint32_t index, pa_volume_t volume) { + pa_cvolume cvol; + pa_cvolume_set(&cvol, sinks[index]->volume.channels, volume); + pa_operation_unref(pa_context_set_source_volume_by_index(&context, index, &cvol, NULL, NULL)); +} + +/* FIXME: Handle all channels separately. */ void ServerInfoManager::setSinkInputVolume(uint32_t index, pa_volume_t volume) { pa_cvolume cvol; pa_cvolume_set(&cvol, sinkInputs[index]->volume.channels, volume); diff --git a/src/ServerInfoManager.hh b/src/ServerInfoManager.hh index 1b37e66..6467c05 100644 --- a/src/ServerInfoManager.hh +++ b/src/ServerInfoManager.hh @@ -58,9 +58,11 @@ public: Glib::ustring driver, name, description; uint32_t index; struct pa_sample_spec sample_spec; + struct pa_channel_map channel_map; uint32_t monitor_source; uint32_t owner_module; pa_cvolume volume; + int hw_volume_supported; pa_usec_t latency; Glib::ustring monitor_source_name; @@ -80,8 +82,11 @@ public: Glib::ustring driver, name, description; uint32_t index; struct pa_sample_spec sample_spec; + struct pa_channel_map channel_map; uint32_t owner_module; uint32_t monitor_of_sink; + pa_cvolume volume; + int hw_volume_supported; pa_usec_t latency; Gtk::TreeRowReference treeRef; @@ -133,6 +138,7 @@ public: Glib::ustring driver, name; uint32_t index; struct pa_sample_spec sample_spec; + struct pa_channel_map channel_map; uint32_t sink; uint32_t client; uint32_t owner_module; @@ -157,6 +163,7 @@ public: Glib::ustring driver, name; uint32_t index; struct pa_sample_spec sample_spec; + struct pa_channel_map channel_map; uint32_t source; uint32_t client; uint32_t owner_module; @@ -228,6 +235,7 @@ public: void removeSampleInfo(uint32_t index); void setSinkVolume(uint32_t index, pa_volume_t volume); + void setSourceVolume(uint32_t index, pa_volume_t volume); void setSinkInputVolume(uint32_t index, pa_volume_t volume); void showStatWindow(); diff --git a/src/SinkInputWindow.cc b/src/SinkInputWindow.cc index 0b8cc67..320189b 100644 --- a/src/SinkInputWindow.cc +++ b/src/SinkInputWindow.cc @@ -31,6 +31,7 @@ SinkInputWindow::SinkInputWindow(BaseObjectType* cobject, const Glib::RefPtr<Gno nameLabel(NULL), indexLabel(NULL), sampleTypeLabel(NULL), + channelMapLabel(NULL), latencyLabel(NULL), sinkLabel(NULL), clientLabel(NULL), @@ -50,6 +51,7 @@ SinkInputWindow::SinkInputWindow(BaseObjectType* cobject, const Glib::RefPtr<Gno refGlade->get_widget("nameLabel", nameLabel); refGlade->get_widget("indexLabel", indexLabel); refGlade->get_widget("sampleTypeLabel", sampleTypeLabel); + refGlade->get_widget("channelMapLabel", channelMapLabel); refGlade->get_widget("latencyLabel", latencyLabel); refGlade->get_widget("sinkLabel", sinkLabel); refGlade->get_widget("clientLabel", clientLabel); @@ -83,14 +85,15 @@ SinkInputWindow* SinkInputWindow::create() { } void SinkInputWindow::updateInfo(const SinkInputInfo &i) { - char t[80], ss[PA_SAMPLE_SPEC_SNPRINT_MAX]; + char t[80], ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX]; double percent, db; nameLabel->set_text(i.name); snprintf(t, sizeof(t), "#%u", i.index); indexLabel->set_text(t); - pa_sample_spec_snprint(ss, sizeof(ss), &i.sample_spec); - sampleTypeLabel->set_text(ss); + + sampleTypeLabel->set_text(pa_sample_spec_snprint(ss, sizeof(ss), &i.sample_spec)); + channelMapLabel->set_text(pa_channel_map_snprint(cm, sizeof(cm), &i.channel_map)); if (i.owner_module == PA_INVALID_INDEX) ownerModuleLabel->set_markup("<i>n/a</i>"); @@ -113,6 +116,7 @@ void SinkInputWindow::updateInfo(const SinkInputInfo &i) { } percent = pa_sw_volume_to_linear(pa_cvolume_avg(&i.volume)) * 100; + /* FIXME: Hardware volume doesn't translate well to dB. */ db = pa_sw_volume_to_dB(pa_cvolume_avg(&i.volume)); scaleEnabled = false; diff --git a/src/SinkInputWindow.hh b/src/SinkInputWindow.hh index 29b4599..84a3ae4 100644 --- a/src/SinkInputWindow.hh +++ b/src/SinkInputWindow.hh @@ -37,6 +37,7 @@ public: Gtk::Label *nameLabel, *indexLabel, *sampleTypeLabel, + *channelMapLabel, *latencyLabel, *sinkLabel, *clientLabel, diff --git a/src/SinkWindow.cc b/src/SinkWindow.cc index 1999693..d6971dd 100644 --- a/src/SinkWindow.cc +++ b/src/SinkWindow.cc @@ -32,6 +32,7 @@ SinkWindow::SinkWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade: descriptionLabel(NULL), indexLabel(NULL), sampleTypeLabel(NULL), + channelMapLabel(NULL), latencyLabel(NULL), ownerModuleLabel(NULL), monitorSourceLabel(NULL), @@ -49,6 +50,7 @@ SinkWindow::SinkWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade: refGlade->get_widget("descriptionLabel", descriptionLabel); refGlade->get_widget("indexLabel", indexLabel); refGlade->get_widget("sampleTypeLabel", sampleTypeLabel); + refGlade->get_widget("channelMapLabel", channelMapLabel); refGlade->get_widget("latencyLabel", latencyLabel); refGlade->get_widget("ownerModuleLabel", ownerModuleLabel); refGlade->get_widget("monitorSourceLabel", monitorSourceLabel); @@ -78,15 +80,15 @@ SinkWindow* SinkWindow::create() { } void SinkWindow::updateInfo(const SinkInfo &i) { - char t[64], ss[PA_SAMPLE_SPEC_SNPRINT_MAX]; - double percent, db; + char t[64], ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX]; + double percent; nameLabel->set_text(i.name); descriptionLabel->set_text(i.description); snprintf(t, sizeof(t), "#%u", i.index); indexLabel->set_text(t); - pa_sample_spec_snprint(ss, sizeof(ss), &i.sample_spec); - sampleTypeLabel->set_text(ss); + sampleTypeLabel->set_text(pa_sample_spec_snprint(ss, sizeof(ss), &i.sample_spec)); + channelMapLabel->set_text(pa_channel_map_snprint(cm, sizeof(cm), &i.channel_map)); snprintf(t, sizeof(t), "#%u", i.owner_module); ownerModuleLabel->set_text(t); @@ -96,16 +98,23 @@ void SinkWindow::updateInfo(const SinkInfo &i) { SourceInfo *source = serverInfoManager->getSourceInfo(i.monitor_source); monitorSourceLabel->set_text(source->name); - percent = pa_sw_volume_to_linear(pa_cvolume_avg(&i.volume)) * 100; - /* FIXME: Hardware volume doesn't translate well to dB. */ - db = pa_sw_volume_to_dB(pa_cvolume_avg(&i.volume)); + percent = ((double) pa_cvolume_avg(&i.volume) * 100) / PA_VOLUME_NORM; scaleEnabled = false; volumeScale->set_value(percent); scaleEnabled = true; - if (db != PA_DECIBEL_MININFTY) - snprintf(t, sizeof(t), "%0.0f%% (%0.2fdB)", percent, db); - else - snprintf(t, sizeof(t), "%0.0f%% (-∞dB)", percent); + + if (i.hw_volume_supported) + snprintf(t, sizeof(t), "%0.0f%%", percent); + else { + double db; + + db = pa_sw_volume_to_dB(pa_cvolume_avg(&i.volume)); + + if (db != PA_DECIBEL_MININFTY) + snprintf(t, sizeof(t), "%0.0f%% (%0.2fdB)", percent, db); + else + snprintf(t, sizeof(t), "%0.0f%% (-∞dB)", percent); + } volumeLabel->set_markup(t); set_title("Sink: "+i.name); @@ -115,7 +124,7 @@ void SinkWindow::updateInfo(const SinkInfo &i) { index = i.index; monitor_source_name = i.monitor_source_name; - toOwnerModuleButton->set_sensitive(owner_module != (uint32_t) -1); + toOwnerModuleButton->set_sensitive(owner_module != PA_INVALID_INDEX); } void SinkWindow::onCloseButton() { @@ -133,7 +142,7 @@ void SinkWindow::onToOwnerModuleButton() { void SinkWindow::onVolumeScaleValueChanged() { if (scaleEnabled) - serverInfoManager->setSinkVolume(index, pa_sw_volume_from_linear(volumeScale->get_value()/100)); + serverInfoManager->setSinkVolume(index, (pa_volume_t) (((double) volumeScale->get_value()/100) * PA_VOLUME_NORM)); } void SinkWindow::onVolumeResetButton() { diff --git a/src/SinkWindow.hh b/src/SinkWindow.hh index b3c26a8..dcabb3b 100644 --- a/src/SinkWindow.hh +++ b/src/SinkWindow.hh @@ -38,6 +38,7 @@ public: *descriptionLabel, *indexLabel, *sampleTypeLabel, + *channelMapLabel, *latencyLabel, *ownerModuleLabel, *monitorSourceLabel, @@ -64,8 +65,9 @@ public: virtual void onVolumeScaleValueChanged(); virtual void onVolumeResetButton(); virtual void onVolumeMuteButton(); - virtual bool on_delete_event(GdkEventAny* e); virtual void onVolumeMeterButton(); + + virtual bool on_delete_event(GdkEventAny* e); }; #endif diff --git a/src/SourceOutputWindow.cc b/src/SourceOutputWindow.cc index 0ba686f..836dade 100644 --- a/src/SourceOutputWindow.cc +++ b/src/SourceOutputWindow.cc @@ -31,6 +31,7 @@ SourceOutputWindow::SourceOutputWindow(BaseObjectType* cobject, const Glib::RefP nameLabel(NULL), indexLabel(NULL), sampleTypeLabel(NULL), + channelMapLabel(NULL), sourceLabel(NULL), clientLabel(NULL), ownerModuleLabel(NULL), @@ -45,6 +46,7 @@ SourceOutputWindow::SourceOutputWindow(BaseObjectType* cobject, const Glib::RefP refGlade->get_widget("nameLabel", nameLabel); refGlade->get_widget("indexLabel", indexLabel); refGlade->get_widget("sampleTypeLabel", sampleTypeLabel); + refGlade->get_widget("channelMapLabel", channelMapLabel); refGlade->get_widget("sourceLabel", sourceLabel); refGlade->get_widget("clientLabel", clientLabel); refGlade->get_widget("ownerModuleLabel", ownerModuleLabel); @@ -71,13 +73,14 @@ SourceOutputWindow* SourceOutputWindow::create() { } void SourceOutputWindow::updateInfo(const SourceOutputInfo &i) { - char t[100], ss[PA_SAMPLE_SPEC_SNPRINT_MAX]; + char t[100], ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX]; nameLabel->set_text(i.name); snprintf(t, sizeof(t), "#%u", i.index); indexLabel->set_text(t); - pa_sample_spec_snprint(ss, sizeof(ss), &i.sample_spec); - sampleTypeLabel->set_text(ss); + + sampleTypeLabel->set_text(pa_sample_spec_snprint(ss, sizeof(ss), &i.sample_spec)); + channelMapLabel->set_text(pa_channel_map_snprint(cm, sizeof(cm), &i.channel_map)); if (i.owner_module == PA_INVALID_INDEX) ownerModuleLabel->set_markup("<i>n/a</i>"); diff --git a/src/SourceOutputWindow.hh b/src/SourceOutputWindow.hh index 71abe48..7ced848 100644 --- a/src/SourceOutputWindow.hh +++ b/src/SourceOutputWindow.hh @@ -37,6 +37,7 @@ public: Gtk::Label *nameLabel, *indexLabel, *sampleTypeLabel, + *channelMapLabel, *sourceLabel, *clientLabel, *ownerModuleLabel, diff --git a/src/SourceWindow.cc b/src/SourceWindow.cc index b79c9e5..d12802d 100644 --- a/src/SourceWindow.cc +++ b/src/SourceWindow.cc @@ -33,26 +33,38 @@ SourceWindow::SourceWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Gl ownerModuleLabel(NULL), monitorOfSinkLabel(NULL), latencyLabel(NULL), + volumeLabel(NULL), closeButton(NULL), toParentSinkButton(NULL), toOwnerModuleButton(NULL), - volumeMeterButton(NULL) { + volumeResetButton(NULL), + volumeMuteButton(NULL), + volumeMeterButton(NULL), + volumeScale(NULL) { refGlade->get_widget("nameLabel", nameLabel); refGlade->get_widget("descriptionLabel", descriptionLabel); refGlade->get_widget("indexLabel", indexLabel); refGlade->get_widget("sampleTypeLabel", sampleTypeLabel); + refGlade->get_widget("channelMapLabel", channelMapLabel); refGlade->get_widget("ownerModuleLabel", ownerModuleLabel); refGlade->get_widget("monitorOfSinkLabel", monitorOfSinkLabel); refGlade->get_widget("latencyLabel", latencyLabel); refGlade->get_widget("closeButton", closeButton); refGlade->get_widget("toParentSinkButton", toParentSinkButton); refGlade->get_widget("toOwnerModuleButton", toOwnerModuleButton); + refGlade->get_widget("volumeLabel", volumeLabel); + refGlade->get_widget("volumeScale", volumeScale); + refGlade->get_widget("volumeResetButton", volumeResetButton); + refGlade->get_widget("volumeMuteButton", volumeMuteButton); refGlade->get_widget("volumeMeterButton", volumeMeterButton); closeButton->signal_clicked().connect(sigc::mem_fun(*this, &SourceWindow::onCloseButton)); toParentSinkButton->signal_clicked().connect(sigc::mem_fun(*this, &SourceWindow::onParentSinkButton)); toOwnerModuleButton->signal_clicked().connect(sigc::mem_fun(*this, &SourceWindow::onToOwnerModuleButton)); + volumeScale->signal_value_changed().connect(sigc::mem_fun(*this, &SourceWindow::onVolumeScaleValueChanged)); + volumeResetButton->signal_clicked().connect(sigc::mem_fun(*this, &SourceWindow::onVolumeResetButton)); + volumeMuteButton->signal_clicked().connect(sigc::mem_fun(*this, &SourceWindow::onVolumeMuteButton)); volumeMeterButton->signal_clicked().connect(sigc::mem_fun(*this, &SourceWindow::onVolumeMeterButton)); } @@ -64,14 +76,17 @@ SourceWindow* SourceWindow::create() { } void SourceWindow::updateInfo(const SourceInfo &i) { - char t[20], ss[PA_SAMPLE_SPEC_SNPRINT_MAX]; + char t[20], ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX]; + double percent; nameLabel->set_text(i.name); descriptionLabel->set_text(i.description); snprintf(t, sizeof(t), "#%u", i.index); indexLabel->set_text(t); - pa_sample_spec_snprint(ss, sizeof(ss), &i.sample_spec); - sampleTypeLabel->set_text(ss); + + sampleTypeLabel->set_text(pa_sample_spec_snprint(ss, sizeof(ss), &i.sample_spec)); + channelMapLabel->set_text(pa_channel_map_snprint(cm, sizeof(cm), &i.channel_map)); + snprintf(t, sizeof(t), "#%u", i.owner_module); ownerModuleLabel->set_text(t); @@ -88,12 +103,32 @@ void SourceWindow::updateInfo(const SourceInfo &i) { } } - monitor_of_sink = i.monitor_of_sink; - source_name = i.name; - + percent = ((double) pa_cvolume_avg(&i.volume) * 100) / PA_VOLUME_NORM; + scaleEnabled = false; + volumeScale->set_value(percent); + scaleEnabled = true; + + if (i.hw_volume_supported) + snprintf(t, sizeof(t), "%0.0f%%", percent); + else { + double db; + + db = pa_sw_volume_to_dB(pa_cvolume_avg(&i.volume)); + + if (db != PA_DECIBEL_MININFTY) + snprintf(t, sizeof(t), "%0.0f%% (%0.2fdB)", percent, db); + else + snprintf(t, sizeof(t), "%0.0f%% (-∞dB)", percent); + } + volumeLabel->set_markup(t); + set_title("Source: "+i.name); + monitor_of_sink = i.monitor_of_sink; owner_module = i.owner_module; + index = i.index; + source_name = i.name; + toOwnerModuleButton->set_sensitive(owner_module != (uint32_t) -1); } @@ -111,6 +146,19 @@ void SourceWindow::onToOwnerModuleButton() { serverInfoManager->showModuleWindow(owner_module); } +void SourceWindow::onVolumeScaleValueChanged() { + if (scaleEnabled) + serverInfoManager->setSourceVolume(index, (pa_volume_t) (((double) volumeScale->get_value()/100) * PA_VOLUME_NORM)); +} + +void SourceWindow::onVolumeResetButton() { + serverInfoManager->setSourceVolume(index, PA_VOLUME_NORM); +} + +void SourceWindow::onVolumeMuteButton() { + serverInfoManager->setSourceVolume(index, PA_VOLUME_MUTED); +} + bool SourceWindow::on_delete_event(GdkEventAny*) { hide(); return false; diff --git a/src/SourceWindow.hh b/src/SourceWindow.hh index 7cddff3..05e5167 100644 --- a/src/SourceWindow.hh +++ b/src/SourceWindow.hh @@ -34,25 +34,36 @@ public: *descriptionLabel, *indexLabel, *sampleTypeLabel, + *channelMapLabel, *ownerModuleLabel, *monitorOfSinkLabel, - *latencyLabel; + *latencyLabel, + *volumeLabel; Gtk::Button *closeButton, *toParentSinkButton, *toOwnerModuleButton, + *volumeResetButton, + *volumeMuteButton, *volumeMeterButton; - uint32_t monitor_of_sink, owner_module; + Gtk::HScale *volumeScale; + + uint32_t index, monitor_of_sink, owner_module; Glib::ustring source_name; + bool scaleEnabled; void updateInfo(const SourceInfo &i); virtual void onCloseButton(); virtual void onParentSinkButton(); virtual void onToOwnerModuleButton(); - virtual bool on_delete_event(GdkEventAny* e); + virtual void onVolumeScaleValueChanged(); + virtual void onVolumeResetButton(); + virtual void onVolumeMuteButton(); virtual void onVolumeMeterButton(); + + virtual bool on_delete_event(GdkEventAny* e); }; #endif diff --git a/src/paman.glade b/src/paman.glade index 71913e9..288a23f 100644 --- a/src/paman.glade +++ b/src/paman.glade @@ -1909,7 +1909,7 @@ <child> <widget class="GtkTable" id="table1"> <property name="visible">True</property> - <property name="n_rows">8</property> + <property name="n_rows">9</property> <property name="n_columns">2</property> <property name="homogeneous">False</property> <property name="row_spacing">6</property> @@ -1972,90 +1972,6 @@ </child> <child> - <widget class="GtkLabel" id="label7"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Monitor Source:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">1</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label6"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Owner Module:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">1</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label5"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>Latency:</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">1</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - - <child> <widget class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="label" translatable="yes"><b>Sample Type:</b></property> @@ -2112,34 +2028,6 @@ </child> <child> - <widget class="GtkLabel" id="latencyLabel"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">foo</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="y_options"></property> - </packing> - </child> - - <child> <widget class="GtkLabel" id="sampleTypeLabel"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -2272,8 +2160,8 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> @@ -2368,9 +2256,38 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label7"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Monitor Source:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> <property name="top_attach">7</property> <property name="bottom_attach">8</property> - <property name="y_options">fill</property> + <property name="x_options">fill</property> + <property name="y_options"></property> </packing> </child> @@ -2396,8 +2313,37 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Owner Module:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> <property name="top_attach">6</property> <property name="bottom_attach">7</property> + <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> @@ -2424,8 +2370,123 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Latency:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="latencyLabel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">foo</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">5</property> <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label7676"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Channel Map:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="channelMapLabel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">foo</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> @@ -2608,7 +2669,7 @@ <widget class="GtkTable" id="table2"> <property name="border_width">5</property> <property name="visible">True</property> - <property name="n_rows">7</property> + <property name="n_rows">9</property> <property name="n_columns">2</property> <property name="homogeneous">False</property> <property name="row_spacing">6</property> @@ -2727,7 +2788,7 @@ </child> <child> - <widget class="GtkLabel" id="sampleTypeLabel"> + <widget class="GtkLabel" id="indexLabel"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="label" translatable="yes">foo</property> @@ -2748,14 +2809,14 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="indexLabel"> + <widget class="GtkLabel" id="descriptionLabel"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="label" translatable="yes">foo</property> @@ -2776,14 +2837,14 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="descriptionLabel"> + <widget class="GtkLabel" id="nameLabel"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="label" translatable="yes">foo</property> @@ -2804,23 +2865,117 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="nameLabel"> + <widget class="GtkHBox" id="hbox28"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">foo</property> + <property name="homogeneous">False</property> + <property name="spacing">5</property> + + <child> + <widget class="GtkLabel" id="volumeLabel"> + <property name="width_request">80</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">100%</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHScale" id="volumeScale"> + <property name="width_request">100</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="draw_value">False</property> + <property name="value_pos">GTK_POS_LEFT</property> + <property name="digits">0</property> + <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property> + <property name="inverted">False</property> + <property name="adjustment">147.692001343 0 500 10 100 20</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="volumeResetButton"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Reset to 100%, i.e. normal volume</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Reset</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NONE</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="volumeMuteButton"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Mute to 0%, i.e. turn this sink off</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Mute</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NONE</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> + <property name="x_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label4836"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Volume:</b></property> <property name="use_underline">False</property> - <property name="use_markup">False</property> + <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> + <property name="selectable">False</property> + <property name="xalign">1</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -2830,10 +2985,11 @@ <property name="angle">0</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">0</property> - <property name="bottom_attach">1</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> + <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> @@ -2859,8 +3015,37 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="monitorOfSinkLabel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">foo</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> @@ -2887,8 +3072,37 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="ownerModuleLabel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">foo</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> @@ -2915,15 +3129,15 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="monitorOfSinkLabel"> + <widget class="GtkLabel" id="latencyLabel"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="label" translatable="yes">foo</property> @@ -2944,15 +3158,43 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="ownerModuleLabel"> + <widget class="GtkLabel" id="label4838"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Channel Map:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="sampleTypeLabel"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="label" translatable="yes">foo</property> @@ -2973,14 +3215,15 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="latencyLabel"> + <widget class="GtkLabel" id="channelMapLabel"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="label" translatable="yes">foo</property> @@ -3026,7 +3269,7 @@ <property name="visible">True</property> <property name="can_default">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">To Owner Module</property> + <property name="label" translatable="yes">Go To Owner Module</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -3043,7 +3286,7 @@ <property name="visible">True</property> <property name="can_default">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">To Parent Sink</property> + <property name="label" translatable="yes">Go To Parent Sink</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -3820,7 +4063,7 @@ <property name="visible">True</property> <property name="can_default">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">To Owner Module</property> + <property name="label" translatable="yes">Go To Owner Module</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -3962,7 +4205,7 @@ <child> <widget class="GtkTable" id="table6"> <property name="visible">True</property> - <property name="n_rows">9</property> + <property name="n_rows">10</property> <property name="n_columns">2</property> <property name="homogeneous">False</property> <property name="row_spacing">6</property> @@ -4109,15 +4352,16 @@ </child> <child> - <widget class="GtkLabel" id="label4750"> + <widget class="GtkLabel" id="sampleTypeLabel"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Latency:</b></property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">label4755</property> <property name="use_underline">False</property> - <property name="use_markup">True</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">1</property> + <property name="selectable">True</property> + <property name="xalign">0</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -4127,19 +4371,19 @@ <property name="angle">0</property> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label4751"> + <widget class="GtkLabel" id="label4754"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Owner Module:</b></property> + <property name="label" translatable="yes"><b>Volume:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4157,17 +4401,113 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> + <property name="top_attach">9</property> + <property name="bottom_attach">10</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label4752"> + <widget class="GtkHBox" id="hbox10"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Connected to Sink:</b></property> + <property name="homogeneous">False</property> + <property name="spacing">5</property> + + <child> + <widget class="GtkLabel" id="volumeLabel"> + <property name="width_request">80</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">100%</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkHScale" id="volumeScale"> + <property name="width_request">100</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="draw_value">False</property> + <property name="value_pos">GTK_POS_LEFT</property> + <property name="digits">0</property> + <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property> + <property name="inverted">False</property> + <property name="adjustment">147.692 0 500 10 100 20</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="volumeResetButton"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Reset to 100%, i.e. normal volume</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Reset</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NONE</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="volumeMuteButton"> + <property name="visible">True</property> + <property name="tooltip" translatable="yes">Mute to 0%, i.e. turn this sink off</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Mute</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NONE</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">9</property> + <property name="bottom_attach">10</property> + <property name="x_options">fill</property> + <property name="y_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label4833"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Resample Method:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4185,17 +4525,17 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label4753"> + <widget class="GtkLabel" id="label4751"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Client:</b></property> + <property name="label" translatable="yes"><b>Owner Module:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4213,18 +4553,18 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="sampleTypeLabel"> + <widget class="GtkLabel" id="resampleMethodLabel"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">label4755</property> + <property name="label" translatable="yes">label4834</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4242,18 +4582,18 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="latencyLabel"> + <widget class="GtkLabel" id="ownerModuleLabel"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">label4756</property> + <property name="label" translatable="yes">label4759</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4271,18 +4611,18 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="sinkLabel"> + <widget class="GtkLabel" id="clientLabel"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">label4757</property> + <property name="label" translatable="yes">label4758</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4300,18 +4640,18 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="clientLabel"> + <widget class="GtkLabel" id="sinkLabel"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">label4758</property> + <property name="label" translatable="yes">label4757</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4337,16 +4677,15 @@ </child> <child> - <widget class="GtkLabel" id="ownerModuleLabel"> + <widget class="GtkLabel" id="label4753"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">label4759</property> + <property name="label" translatable="yes"><b>Client:</b></property> <property name="use_underline">False</property> - <property name="use_markup">False</property> + <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> + <property name="selectable">False</property> + <property name="xalign">1</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -4356,8 +4695,8 @@ <property name="angle">0</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> <property name="top_attach">6</property> <property name="bottom_attach">7</property> <property name="x_options">fill</property> @@ -4366,9 +4705,9 @@ </child> <child> - <widget class="GtkLabel" id="label4754"> + <widget class="GtkLabel" id="label4752"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Volume:</b></property> + <property name="label" translatable="yes"><b>Connected to Sink:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4386,113 +4725,74 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox10"> + <widget class="GtkLabel" id="label4750"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">5</property> - - <child> - <widget class="GtkLabel" id="volumeLabel"> - <property name="width_request">80</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">100%</property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHScale" id="volumeScale"> - <property name="width_request">100</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="draw_value">False</property> - <property name="value_pos">GTK_POS_LEFT</property> - <property name="digits">0</property> - <property name="update_policy">GTK_UPDATE_DISCONTINUOUS</property> - <property name="inverted">False</property> - <property name="adjustment">147.692 0 500 10 100 20</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkButton" id="volumeResetButton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Reset to 100%, i.e. normal volume</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Reset</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NONE</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="label" translatable="yes"><b>Latency:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> - <child> - <widget class="GtkButton" id="volumeMuteButton"> - <property name="visible">True</property> - <property name="tooltip" translatable="yes">Mute to 0%, i.e. turn this sink off</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Mute</property> - <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NONE</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkLabel" id="latencyLabel"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">label4756</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label4833"> + <widget class="GtkLabel" id="label4844"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Resample Method:</b></property> + <property name="label" translatable="yes"><b>Channel Map:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4510,18 +4810,18 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="resampleMethodLabel"> + <widget class="GtkLabel" id="channelMapLabel"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">label4834</property> + <property name="label" translatable="yes">label4755</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4539,8 +4839,8 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> @@ -4741,7 +5041,7 @@ <child> <widget class="GtkTable" id="table7"> <property name="visible">True</property> - <property name="n_rows">8</property> + <property name="n_rows">9</property> <property name="n_columns">2</property> <property name="homogeneous">False</property> <property name="row_spacing">6</property> @@ -4917,9 +5217,9 @@ </child> <child> - <widget class="GtkLabel" id="label4766"> + <widget class="GtkLabel" id="label4835"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Owner Module:</b></property> + <property name="label" translatable="yes"><b>Resample Method:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4937,23 +5237,24 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label4768"> + <widget class="GtkLabel" id="resampleMethodLabel"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Client:</b></property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">label4836</property> <property name="use_underline">False</property> - <property name="use_markup">True</property> + <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">1</property> + <property name="selectable">True</property> + <property name="xalign">0</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -4963,19 +5264,19 @@ <property name="angle">0</property> </widget> <packing> - <property name="left_attach">0</property> - <property name="right_attach">1</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label4767"> + <widget class="GtkLabel" id="label4766"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Connected to Source:</b></property> + <property name="label" translatable="yes"><b>Owner Module:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -4993,17 +5294,46 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label4832"> + <widget class="GtkLabel" id="ownerModuleLabel"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Latency:</b></property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">label4759</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label4768"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Client:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -5021,18 +5351,18 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="ownerModuleLabel"> + <widget class="GtkLabel" id="clientLabel"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">label4759</property> + <property name="label" translatable="yes">label4758</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -5058,16 +5388,15 @@ </child> <child> - <widget class="GtkLabel" id="clientLabel"> + <widget class="GtkLabel" id="label4767"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">label4758</property> + <property name="label" translatable="yes"><b>Connected to Source:</b></property> <property name="use_underline">False</property> - <property name="use_markup">False</property> + <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> - <property name="selectable">True</property> - <property name="xalign">0</property> + <property name="selectable">False</property> + <property name="xalign">1</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> @@ -5077,8 +5406,8 @@ <property name="angle">0</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="left_attach">0</property> + <property name="right_attach">1</property> <property name="top_attach">5</property> <property name="bottom_attach">6</property> <property name="x_options">fill</property> @@ -5108,6 +5437,34 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label4832"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Latency:</b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">1</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> <property name="top_attach">4</property> <property name="bottom_attach">5</property> <property name="x_options">fill</property> @@ -5137,17 +5494,17 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="label4835"> + <widget class="GtkLabel" id="label4842"> <property name="visible">True</property> - <property name="label" translatable="yes"><b>Resample Method:</b></property> + <property name="label" translatable="yes"><b>Channel Map:</b></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -5165,18 +5522,18 @@ <packing> <property name="left_attach">0</property> <property name="right_attach">1</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="resampleMethodLabel"> + <widget class="GtkLabel" id="channelMapLabel"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">label4836</property> + <property name="label" translatable="yes">label4755</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -5194,8 +5551,8 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">fill</property> <property name="y_options"></property> </packing> |