summaryrefslogtreecommitdiffstats
path: root/src/libs/gui/PortPropertiesWindow.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-10-06 23:12:15 +0000
committerDavid Robillard <d@drobilla.net>2007-10-06 23:12:15 +0000
commitf2d5d172ff5f0ff02e6dfe0d0bd472b068192244 (patch)
treef6a03e0fdec83af952fb51112d3ecbaea210f2bf /src/libs/gui/PortPropertiesWindow.cpp
parent25fd375c074c45929f71d6b9ca4841882c832b05 (diff)
downloadingen-f2d5d172ff5f0ff02e6dfe0d0bd472b068192244.tar.gz
ingen-f2d5d172ff5f0ff02e6dfe0d0bd472b068192244.tar.bz2
ingen-f2d5d172ff5f0ff02e6dfe0d0bd472b068192244.zip
Access to object properties window via context menu (most importantly the port one, for control ranges).
git-svn-id: http://svn.drobilla.net/lad/ingen@833 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/gui/PortPropertiesWindow.cpp')
-rw-r--r--src/libs/gui/PortPropertiesWindow.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/libs/gui/PortPropertiesWindow.cpp b/src/libs/gui/PortPropertiesWindow.cpp
index cf8dbd98..a715a114 100644
--- a/src/libs/gui/PortPropertiesWindow.cpp
+++ b/src/libs/gui/PortPropertiesWindow.cpp
@@ -31,9 +31,8 @@ namespace GUI {
PortPropertiesWindow::PortPropertiesWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
- : Gtk::Dialog(cobject)
+ : Gtk::Window(cobject)
, _enable_signal(false)
- , _control(NULL)
{
xml->get_widget("port_properties_min_spinner", _min_spinner);
xml->get_widget("port_properties_max_spinner", _max_spinner);
@@ -52,13 +51,16 @@ PortPropertiesWindow::PortPropertiesWindow(BaseObjectType* cobject, const Glib::
* This function MUST be called before using this object in any way.
*/
void
-PortPropertiesWindow::init(ControlGroup* control, SharedPtr<PortModel> pm)
+PortPropertiesWindow::present(SharedPtr<PortModel> pm)
{
assert(pm);
- assert(control);
+ for (list<sigc::connection>::iterator i = _connections.begin(); i != _connections.end(); ++i)
+ (*i).disconnect();
+
+ _connections.clear();
+
_port_model = pm;
- _control = control;
set_title(pm->path() + " Properties");
@@ -71,13 +73,19 @@ PortPropertiesWindow::init(ControlGroup* control, SharedPtr<PortModel> pm)
_initial_max = max;
_min_spinner->set_value(min);
- _min_spinner->signal_value_changed().connect(sigc::mem_fun(*this, &PortPropertiesWindow::min_changed));
+ _connections.push_back(_min_spinner->signal_value_changed().connect(
+ sigc::mem_fun(*this, &PortPropertiesWindow::min_changed)));
+
_max_spinner->set_value(max);
- _max_spinner->signal_value_changed().connect(sigc::mem_fun(*this, &PortPropertiesWindow::max_changed));
+ _connections.push_back(_max_spinner->signal_value_changed().connect(
+ sigc::mem_fun(*this, &PortPropertiesWindow::max_changed)));
- pm->signal_metadata.connect(sigc::mem_fun(this, &PortPropertiesWindow::metadata_update));
+ _connections.push_back(pm->signal_metadata.connect(
+ sigc::mem_fun(this, &PortPropertiesWindow::metadata_update)));
_enable_signal = true;
+
+ Gtk::Window::present();
}
@@ -106,8 +114,6 @@ PortPropertiesWindow::min_changed()
_max_spinner->set_value(max);
}
- _control->set_range(min, max);
-
if (_enable_signal)
App::instance().engine()->set_metadata(_port_model->path(), "ingen:minimum", min);
}
@@ -124,8 +130,6 @@ PortPropertiesWindow::max_changed()
_min_spinner->set_value(min);
}
- _control->set_range(min, max);
-
if (_enable_signal)
App::instance().engine()->set_metadata(_port_model->path(), "ingen:maximum", max);
}
@@ -136,14 +140,14 @@ PortPropertiesWindow::cancel()
{
App::instance().engine()->set_metadata(_port_model->path(), "ingen:minimum", _initial_min);
App::instance().engine()->set_metadata(_port_model->path(), "ingen:maximum", _initial_max);
- delete this;
+ hide();
}
void
PortPropertiesWindow::ok()
{
- delete this;
+ hide();
}