summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-03-21 03:49:19 +0100
committerLennart Poettering <lennart@poettering.net>2009-03-21 03:49:19 +0100
commitfeff1f6f0592c1f085241bb9d3794b723d524f2e (patch)
treefa8ad8558c29e85d7d0b340ba1234ddf9743c3fc /src
parent711636950370a035eb6364f24020e07f78a1eccf (diff)
configure steps for scales
Diffstat (limited to 'src')
-rw-r--r--src/channelwidget.cc14
-rw-r--r--src/channelwidget.h1
-rw-r--r--src/mainwindow.cc2
-rw-r--r--src/streamwidget.cc6
-rw-r--r--src/streamwidget.h1
5 files changed, 19 insertions, 5 deletions
diff --git a/src/channelwidget.cc b/src/channelwidget.cc
index 5b04012..eac41ad 100644
--- a/src/channelwidget.cc
+++ b/src/channelwidget.cc
@@ -39,7 +39,8 @@ ChannelWidget::ChannelWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::
x->get_widget("volumeLabel", volumeLabel);
x->get_widget("volumeScale", volumeScale);
- volumeScale->set_value(100);
+ volumeScale->set_value(100.0);
+ volumeScale->set_increments(100.0/PA_VOLUME_NORM, 100.0/PA_VOLUME_NORM);
volumeScale->signal_value_changed().connect(sigc::mem_fun(*this, &ChannelWidget::onVolumeScaleValueChanged));
}
@@ -116,13 +117,16 @@ void ChannelWidget::set_sensitive(bool enabled) {
void ChannelWidget::setBaseVolume(pa_volume_t v) {
- volumeScale->clear_marks();
+ gtk_scale_add_mark(GTK_SCALE(volumeScale->gobj()), 0.0, (GtkPositionType) GTK_POS_BOTTOM, _("<small>Silence</small>"));
+ gtk_scale_add_mark(GTK_SCALE(volumeScale->gobj()), 100.0, (GtkPositionType) GTK_POS_BOTTOM, _("<small>Max</small>"));
if (v > PA_VOLUME_MUTED && v < PA_VOLUME_NORM) {
double p = ((double) v * 100) / PA_VOLUME_NORM;
- gtk_scale_add_mark(GTK_SCALE(volumeScale->gobj()), p, (GtkPositionType) GTK_POS_BOTTOM, NULL);
+ gtk_scale_add_mark(GTK_SCALE(volumeScale->gobj()), p, (GtkPositionType) GTK_POS_BOTTOM, _("<small><i>Base</i></small>"));
}
- gtk_scale_add_mark(GTK_SCALE(volumeScale->gobj()), 0.0, (GtkPositionType) GTK_POS_BOTTOM, NULL);
- gtk_scale_add_mark(GTK_SCALE(volumeScale->gobj()), 100.0, (GtkPositionType) GTK_POS_BOTTOM, NULL);
+}
+
+void ChannelWidget::setSteps(unsigned n) {
+ volumeScale->set_increments(100.0/(n-1), 100.0/(n-1));
}
diff --git a/src/channelwidget.h b/src/channelwidget.h
index 0413416..1de22d0 100644
--- a/src/channelwidget.h
+++ b/src/channelwidget.h
@@ -50,6 +50,7 @@ public:
virtual void set_sensitive(bool enabled);
virtual void setBaseVolume(pa_volume_t);
+ virtual void setSteps(unsigned n);
};
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index 1365f7e..0277bb0 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -169,6 +169,7 @@ void MainWindow::updateSink(const pa_sink_info &info) {
is_new = true;
w->setBaseVolume(info.base_volume);
+ w->setSteps(info.n_volume_steps);
}
w->updating = true;
@@ -315,6 +316,7 @@ void MainWindow::updateSource(const pa_source_info &info) {
is_new = true;
w->setBaseVolume(info.base_volume);
+ w->setSteps(info.n_volume_steps);
if (pa_context_get_server_protocol_version(get_context()) >= 13)
createMonitorStreamForSource(info.index);
diff --git a/src/streamwidget.cc b/src/streamwidget.cc
index ecea771..fae605f 100644
--- a/src/streamwidget.cc
+++ b/src/streamwidget.cc
@@ -107,3 +107,9 @@ void StreamWidget::setBaseVolume(pa_volume_t v) {
if (channelMap.channels > 0)
channelWidgets[channelMap.channels-1]->setBaseVolume(v);
}
+
+void StreamWidget::setSteps(unsigned n) {
+
+ for (int i = 0; i < channelMap.channels; i++)
+ channelWidgets[channelMap.channels-1]->setSteps(n);
+}
diff --git a/src/streamwidget.h b/src/streamwidget.h
index 8000ef4..af5f0b9 100644
--- a/src/streamwidget.h
+++ b/src/streamwidget.h
@@ -50,6 +50,7 @@ public:
virtual void executeVolumeUpdate();
virtual void setBaseVolume(pa_volume_t v);
+ virtual void setSteps(unsigned n);
};
#endif