summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-08-31 01:24:57 +0000
committerDavid Robillard <d@drobilla.net>2014-08-31 01:24:57 +0000
commita2792bd09212eed55bba1aa30dc09043a6955486 (patch)
treed4262f760d4522bc6f1c99778987aada332b9e7e /src/gui
parente3ecb2b439bd03d27b5e11efe430c24f0ebe6283 (diff)
downloadingen-a2792bd09212eed55bba1aa30dc09043a6955486.tar.gz
ingen-a2792bd09212eed55bba1aa30dc09043a6955486.tar.bz2
ingen-a2792bd09212eed55bba1aa30dc09043a6955486.zip
Use float sequences for sample-accurate control ports.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5462 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/NodeModule.cpp3
-rw-r--r--src/gui/Port.cpp3
-rw-r--r--src/gui/Style.cpp11
-rw-r--r--src/gui/Style.hpp1
4 files changed, 16 insertions, 2 deletions
diff --git a/src/gui/NodeModule.cpp b/src/gui/NodeModule.cpp
index b9798339..0bacb70b 100644
--- a/src/gui/NodeModule.cpp
+++ b/src/gui/NodeModule.cpp
@@ -186,7 +186,8 @@ NodeModule::port_value_changed(uint32_t index, const Atom& value)
return;
}
- if (value.type() == uris.atom_Float) {
+ if (value.type() == uris.atom_Float &&
+ _block->get_port(index)->is_numeric()) {
_plugin_ui->port_event(index, sizeof(float), 0, value.ptr<float>());
} else {
_plugin_ui->port_event(index,
diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp
index b04e93b5..e123a571 100644
--- a/src/gui/Port.cpp
+++ b/src/gui/Port.cpp
@@ -83,6 +83,7 @@ Port::Port(App& app,
assert(pm);
set_border_width(1.0);
+ set_dash_length(app.style()->get_port_dash_length(pm.get()));
if (app.can_control(pm.get())) {
show_control();
@@ -367,6 +368,8 @@ Port::activity(const Atom& value)
{
if (model()->is_a(_app.uris().lv2_AudioPort)) {
set_fill_color(peak_color(value.get<float>()));
+ } else if (_app.can_control(model().get()) && value.type() == _app.uris().atom_Float) {
+ Ganv::Port::set_control_value(value.get<float>());
} else {
_app.port_activity(this);
}
diff --git a/src/gui/Style.cpp b/src/gui/Style.cpp
index 1c61d995..287a1496 100644
--- a/src/gui/Style.cpp
+++ b/src/gui/Style.cpp
@@ -82,7 +82,6 @@ Style::apply_settings()
uint32_t
Style::get_port_color(const Client::PortModel* p)
{
- assert(p != NULL);
const URIs& uris = _app.uris();
if (p->is_a(uris.lv2_AudioPort)) {
return _audio_port_color;
@@ -102,5 +101,15 @@ Style::get_port_color(const Client::PortModel* p)
return 0x666666FF;
}
+uint32_t
+Style::get_port_dash_length(const Client::PortModel* p)
+{
+ const URIs& uris = _app.uris();
+ if (p->is_a(uris.atom_AtomPort)) {
+ return 4.0;
+ }
+ return 0.0;
+}
+
} // namespace GUI
} // namespace Ingen
diff --git a/src/gui/Style.hpp b/src/gui/Style.hpp
index 13fa0546..a52a3d01 100644
--- a/src/gui/Style.hpp
+++ b/src/gui/Style.hpp
@@ -41,6 +41,7 @@ public:
void apply_settings();
uint32_t get_port_color(const Client::PortModel* p);
+ uint32_t get_port_dash_length(const Client::PortModel* p);
private:
App& _app;