summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/gui/ControlPanel.cpp71
-rw-r--r--src/libs/gui/ControlPanel.hpp30
-rw-r--r--src/libs/gui/Controls.cpp (renamed from src/libs/gui/ControlGroups.cpp)179
-rw-r--r--src/libs/gui/Controls.hpp (renamed from src/libs/gui/ControlGroups.hpp)54
-rw-r--r--src/libs/gui/Makefile.am4
-rw-r--r--src/libs/gui/NodeControlWindow.cpp2
-rw-r--r--src/libs/gui/PortPropertiesWindow.cpp2
-rw-r--r--src/libs/gui/ingen_gui.glade1019
8 files changed, 719 insertions, 642 deletions
diff --git a/src/libs/gui/ControlPanel.cpp b/src/libs/gui/ControlPanel.cpp
index 3bd7cb2d..9be36b65 100644
--- a/src/libs/gui/ControlPanel.cpp
+++ b/src/libs/gui/ControlPanel.cpp
@@ -22,7 +22,7 @@
#include "client/PluginModel.hpp"
#include "App.hpp"
#include "ControlPanel.hpp"
-#include "ControlGroups.hpp"
+#include "Controls.hpp"
#include "GladeFactory.hpp"
namespace Ingen {
@@ -30,8 +30,8 @@ namespace GUI {
ControlPanel::ControlPanel(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
-: Gtk::HBox(cobject),
- _callback_enabled(true)
+ : Gtk::HBox(cobject)
+ , _callback_enabled(true)
{
xml->get_widget("control_panel_controls_box", _control_box);
xml->get_widget("control_panel_voice_controls_box", _voice_control_box);
@@ -51,7 +51,7 @@ ControlPanel::ControlPanel(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Gl
ControlPanel::~ControlPanel()
{
- for (vector<ControlGroup*>::iterator i = _controls.begin(); i != _controls.end(); ++i)
+ for (vector<Control*>::iterator i = _controls.begin(); i != _controls.end(); ++i)
delete (*i);
}
@@ -62,15 +62,10 @@ ControlPanel::init(SharedPtr<NodeModel> node, uint32_t poly)
assert(node != NULL);
assert(poly > 0);
- cout << "CONTROL PANEL " << poly << endl;
-
if (node->polyphonic()) {
- cout << "POLY" << endl;
_voice_spinbutton->set_range(0, poly - 1);
_voice_control_box->show();
} else {
- cout << "NO POLY" << endl;
- //remove(*_voice_control_box);
_voice_control_box->hide();
}
@@ -92,10 +87,10 @@ ControlPanel::init(SharedPtr<NodeModel> node, uint32_t poly)
}
-ControlGroup*
+Control*
ControlPanel::find_port(const Path& path) const
{
- for (vector<ControlGroup*>::const_iterator cg = _controls.begin(); cg != _controls.end(); ++cg)
+ for (vector<Control*>::const_iterator cg = _controls.begin(); cg != _controls.end(); ++cg)
if ((*cg)->port_model()->path() == path)
return (*cg);
@@ -116,40 +111,30 @@ ControlPanel::add_port(SharedPtr<PortModel> pm)
// Add port
if (pm->type().is_control() && pm->is_input()) {
- SliderControlGroup* cg = NULL;
-#if 0
- if (pm->is_integer())
- cerr << "FIXME: integer\n";
- //cg = new IntegerControlGroup(this, pm);
- else if (pm->is_toggle())
- cerr << "FIXME: toggle\n";
- //cg = new ToggleControlGroup(this, pm);
- else {
-#endif
+ Control* control = NULL;
+
+ if (pm->is_toggle()) {
+ ToggleControl* tc;
+ Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference("toggle_control");
+ xml->get_widget_derived("toggle_control", tc);
+ control = tc;
+ } else {
+ SliderControl* sc;
Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference("control_strip");
- xml->get_widget_derived("control_strip", cg);
- cg->init(this, pm);
-#if 0
+ xml->get_widget_derived("control_strip", sc);
+ control = sc;
}
-#endif
+
+ control->init(this, pm);
if (_controls.size() > 0)
_control_box->pack_start(*Gtk::manage(new Gtk::HSeparator()), false, false, 4);
- _controls.push_back(cg);
- _control_box->pack_start(*cg, false, false, 0);
-
- cg->enable();
- /*if (pm->connected())
- cg->disable();
- else
- cg->enable();*/
-
- cg->show();
+ _controls.push_back(control);
+ _control_box->pack_start(*control, false, false, 0);
- cerr << "FIXME: control panel connected port tracking\n";
- // pm->connection_sig.connect(bind(sigc::mem_fun(this, &ControlPanel::connection), pm))
- // pm->disconnection_sig.connect(bind(sigc::mem_fun(this, &ControlPanel::disconnection), pm))
+ control->enable();
+ control->show();
}
Gtk::Requisition controls_size;
@@ -173,7 +158,7 @@ void
ControlPanel::remove_port(const Path& path)
{
bool was_first = false;
- for (vector<ControlGroup*>::iterator cg = _controls.begin(); cg != _controls.end(); ++cg) {
+ for (vector<Control*>::iterator cg = _controls.begin(); cg != _controls.end(); ++cg) {
if ((*cg)->port_model()->path() == path) {
_control_box->remove(**cg);
if (cg == _controls.begin())
@@ -191,7 +176,7 @@ ControlPanel::remove_port(const Path& path)
void
ControlPanel::rename_port(const Path& old_path, const Path& new_path)
{
- for (vector<ControlGroup*>::iterator cg = _controls.begin(); cg != _controls.end(); ++cg) {
+ for (vector<Control*>::iterator cg = _controls.begin(); cg != _controls.end(); ++cg) {
if ((*cg)->port_model()->path() == old_path) {
(*cg)->set_name(new_path.name());
return;
@@ -208,7 +193,7 @@ ControlPanel::rename_port(const Path& old_path, const Path& new_path)
void
ControlPanel::enable_port(const Path& path)
{
- for (vector<ControlGroup*>::iterator i = _controls.begin(); i != _controls.end(); ++i) {
+ for (vector<Control*>::iterator i = _controls.begin(); i != _controls.end(); ++i) {
if ((*i)->port_model()->path() == path) {
(*i)->enable();
return;
@@ -224,7 +209,7 @@ ControlPanel::enable_port(const Path& path)
void
ControlPanel::disable_port(const Path& path)
{
- for (vector<ControlGroup*>::iterator i = _controls.begin(); i != _controls.end(); ++i) {
+ for (vector<Control*>::iterator i = _controls.begin(); i != _controls.end(); ++i) {
if ((*i)->port_model()->path() == path) {
(*i)->disable();
return;
@@ -233,7 +218,7 @@ ControlPanel::disable_port(const Path& path)
}
#endif
-/** Callback for ControlGroups to notify this of a change.
+/** Callback for Controls to notify this of a change.
*/
void
ControlPanel::value_changed(SharedPtr<PortModel> port, float val)
diff --git a/src/libs/gui/ControlPanel.hpp b/src/libs/gui/ControlPanel.hpp
index b7a1c4b2..9dded79b 100644
--- a/src/libs/gui/ControlPanel.hpp
+++ b/src/libs/gui/ControlPanel.hpp
@@ -27,11 +27,7 @@
#include <libglademm/xml.h>
#include <libglademm.h>
#include <raul/Path.hpp>
-#include "ControlGroups.hpp"
-
-
-using std::vector; using std::string; using std::pair;
-using std::cerr; using std::cout; using std::endl;
+#include "Controls.hpp"
namespace Ingen { namespace Client {
class PortModel;
@@ -56,7 +52,7 @@ public:
void init(SharedPtr<NodeModel> node, uint32_t poly);
- ControlGroup* find_port(const Path& path) const;
+ Control* find_port(const Path& path) const;
void add_port(SharedPtr<PortModel> port);
void remove_port(const Path& path);
@@ -64,10 +60,10 @@ public:
void enable_port(const Path& path);
void disable_port(const Path& path);
- size_t num_controls() const { return _controls.size(); }
- pair<int,int> ideal_size() const { return _ideal_size; }
+ size_t num_controls() const { return _controls.size(); }
+ std::pair<int,int> ideal_size() const { return _ideal_size; }
- // Callback for ControlGroup
+ // Callback for Control
void value_changed(SharedPtr<PortModel> port_path, float val);
private:
@@ -78,14 +74,14 @@ private:
bool _callback_enabled;
- pair<int,int> _ideal_size;
-
- vector<ControlGroup*> _controls;
- Gtk::VBox* _control_box;
- Gtk::Box* _voice_control_box;
- Gtk::RadioButton* _all_voices_radio;
- Gtk::RadioButton* _specific_voice_radio;
- Gtk::SpinButton* _voice_spinbutton;
+ std::pair<int,int> _ideal_size;
+
+ std::vector<Control*> _controls;
+ Gtk::VBox* _control_box;
+ Gtk::Box* _voice_control_box;
+ Gtk::RadioButton* _all_voices_radio;
+ Gtk::RadioButton* _specific_voice_radio;
+ Gtk::SpinButton* _voice_spinbutton;
};
diff --git a/src/libs/gui/ControlGroups.cpp b/src/libs/gui/Controls.cpp
index 0803b5ba..cc5383a8 100644
--- a/src/libs/gui/ControlGroups.cpp
+++ b/src/libs/gui/Controls.cpp
@@ -24,7 +24,7 @@
#include "client/PluginModel.hpp"
#include "client/NodeModel.hpp"
#include "client/PortModel.hpp"
-#include "ControlGroups.hpp"
+#include "Controls.hpp"
#include "ControlPanel.hpp"
#include "PortPropertiesWindow.hpp"
#include "GladeFactory.hpp"
@@ -37,17 +37,23 @@ namespace Ingen {
namespace GUI {
-// ////////////////////// ControlGroup ///////////////////////////////// //
+// ////////////////////// Control ///////////////////////////////// //
-ControlGroup::ControlGroup(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml)
+Control::Control(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml)
: Gtk::VBox(cobject)
, _control_panel(NULL)
, _enable_signal(false)
{
+ Glib::RefPtr<Gnome::Glade::Xml> menu_xml = GladeFactory::new_glade_reference("port_control_menu");
+ menu_xml->get_widget("port_control_menu", _menu);
+ menu_xml->get_widget("port_control_menu_properties", _menu_properties);
+
+ _menu_properties->signal_activate().connect(
+ sigc::mem_fun(this, &SliderControl::menu_properties));
}
-ControlGroup::~ControlGroup()
+Control::~Control()
{
_enable_signal = false;
_control_connection.disconnect();
@@ -56,7 +62,7 @@ ControlGroup::~ControlGroup()
void
-ControlGroup::init(ControlPanel* panel, SharedPtr<PortModel> pm)
+Control::init(ControlPanel* panel, SharedPtr<PortModel> pm)
{
_control_panel = panel;
_port_model = pm,
@@ -64,37 +70,41 @@ ControlGroup::init(ControlPanel* panel, SharedPtr<PortModel> pm)
assert(_port_model);
assert(panel);
- _control_connection = pm->signal_value_changed.connect(sigc::mem_fun(this, &ControlGroup::set_value));
+ _control_connection = pm->signal_value_changed.connect(sigc::mem_fun(this, &Control::set_value));
}
+
+void
+Control::menu_properties()
+{
+ Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
+
+ PortPropertiesWindow* window;
+ xml->get_widget_derived("port_properties_win", window);
+ window->present(_port_model);
+}
-// ////////////////// SliderControlGroup ////////////////////// //
+// ////////////////// SliderControl ////////////////////// //
-SliderControlGroup::SliderControlGroup(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
- : ControlGroup(cobject, xml)
+
+SliderControl::SliderControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+ : Control(cobject, xml)
, _enabled(true)
{
xml->get_widget("control_strip_name_label", _name_label);
xml->get_widget("control_strip_slider", _slider);
xml->get_widget("control_strip_spinner", _value_spinner);
-
- Glib::RefPtr<Gnome::Glade::Xml> menu_xml = GladeFactory::new_glade_reference("port_control_menu");
- menu_xml->get_widget("port_control_menu", _menu);
- menu_xml->get_widget("port_control_menu_properties", _menu_properties);
-
- _menu_properties->signal_activate().connect(
- sigc::mem_fun(this, &SliderControlGroup::menu_properties));
}
void
-SliderControlGroup::init(ControlPanel* panel, SharedPtr<PortModel> pm)
+SliderControl::init(ControlPanel* panel, SharedPtr<PortModel> pm)
{
_enable_signal = false;
_enabled = true;
- ControlGroup::init(panel, pm);
+ Control::init(panel, pm);
assert(_name_label);
assert(_slider);
@@ -103,17 +113,17 @@ SliderControlGroup::init(ControlPanel* panel, SharedPtr<PortModel> pm)
_slider->set_draw_value(false);
- signal_button_press_event().connect(sigc::mem_fun(*this, &SliderControlGroup::clicked));
- _slider->signal_button_press_event().connect(sigc::mem_fun(*this, &SliderControlGroup::clicked));
+ signal_button_press_event().connect(sigc::mem_fun(*this, &SliderControl::clicked));
+ _slider->signal_button_press_event().connect(sigc::mem_fun(*this, &SliderControl::clicked));
_slider->signal_event().connect(
- sigc::mem_fun(*this, &SliderControlGroup::slider_pressed));
+ sigc::mem_fun(*this, &SliderControl::slider_pressed));
_slider->signal_value_changed().connect(
- sigc::mem_fun(*this, &SliderControlGroup::update_value_from_slider));
+ sigc::mem_fun(*this, &SliderControl::update_value_from_slider));
_value_spinner->signal_value_changed().connect(
- sigc::mem_fun(*this, &SliderControlGroup::update_value_from_spinner));
+ sigc::mem_fun(*this, &SliderControl::update_value_from_spinner));
float min = 0.0f, max = 1.0f;
@@ -128,7 +138,7 @@ SliderControlGroup::init(ControlPanel* panel, SharedPtr<PortModel> pm)
_slider->set_increments(0, 0);
}
- pm->signal_variable.connect(sigc::mem_fun(this, &SliderControlGroup::port_variable_change));
+ pm->signal_variable.connect(sigc::mem_fun(this, &SliderControl::port_variable_change));
_slider->set_range(std::min(min, pm->value().get_float()), std::max(max, pm->value().get_float()));
//_value_spinner->set_range(min, max);
@@ -142,7 +152,7 @@ SliderControlGroup::init(ControlPanel* panel, SharedPtr<PortModel> pm)
bool
-SliderControlGroup::clicked(GdkEventButton* ev)
+SliderControl::clicked(GdkEventButton* ev)
{
if (ev->button == 3) {
_menu->popup(ev->button, ev->time);
@@ -154,18 +164,7 @@ SliderControlGroup::clicked(GdkEventButton* ev)
void
-SliderControlGroup::menu_properties()
-{
- Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
-
- PortPropertiesWindow* window;
- xml->get_widget_derived("port_properties_win", window);
- window->present(_port_model);
-}
-
-
-void
-SliderControlGroup::set_value(const Atom& atom)
+SliderControl::set_value(const Atom& atom)
{
float val = atom.get_float();
@@ -190,7 +189,7 @@ SliderControlGroup::set_value(const Atom& atom)
void
-SliderControlGroup::port_variable_change(const string& key, const Atom& value)
+SliderControl::port_variable_change(const string& key, const Atom& value)
{
if ( (key == "ingen:minimum") && value.type() == Atom::FLOAT)
set_range(value.get_float(), _slider->get_adjustment()->get_upper());
@@ -200,7 +199,7 @@ SliderControlGroup::port_variable_change(const string& key, const Atom& value)
void
-SliderControlGroup::set_range(float min, float max)
+SliderControl::set_range(float min, float max)
{
_slider->set_range(min, max);
//_value_spinner->set_range(min, max);
@@ -208,7 +207,7 @@ SliderControlGroup::set_range(float min, float max)
void
-SliderControlGroup::set_name(const string& name)
+SliderControl::set_name(const string& name)
{
string name_label = "<span weight=\"bold\">";
name_label += name + "</span>";
@@ -217,7 +216,7 @@ SliderControlGroup::set_name(const string& name)
void
-SliderControlGroup::enable()
+SliderControl::enable()
{
_slider->property_sensitive() = true;
//_min_spinner->property_sensitive() = true;
@@ -228,7 +227,7 @@ SliderControlGroup::enable()
void
-SliderControlGroup::disable()
+SliderControl::disable()
{
_slider->property_sensitive() = false;
//_min_spinner->property_sensitive() = false;
@@ -239,7 +238,7 @@ SliderControlGroup::disable()
void
-SliderControlGroup::update_value_from_slider()
+SliderControl::update_value_from_slider()
{
if (_enable_signal) {
float value = _slider->get_value();
@@ -264,7 +263,7 @@ SliderControlGroup::update_value_from_slider()
void
-SliderControlGroup::update_value_from_spinner()
+SliderControl::update_value_from_spinner()
{
if (_enable_signal) {
_enable_signal = false;
@@ -284,7 +283,7 @@ SliderControlGroup::update_value_from_spinner()
* events for this port (and avoid nasty feedback issues).
*/
bool
-SliderControlGroup::slider_pressed(GdkEvent* ev)
+SliderControl::slider_pressed(GdkEvent* ev)
{
//cerr << "Pressed: " << ev->type << endl;
if (ev->type == GDK_BUTTON_PRESS) {
@@ -299,11 +298,11 @@ SliderControlGroup::slider_pressed(GdkEvent* ev)
}
-// ///////////// IntegerControlGroup ////////////// //
+// ///////////// IntegerControl ////////////// //
#if 0
-IntegerControlGroup::IntegerControlGroup(ControlPanel* panel, SharedPtr<PortModel> pm)
-: ControlGroup(panel, pm),
+IntegerControl::IntegerControl(ControlPanel* panel, SharedPtr<PortModel> pm)
+: Control(panel, pm),
_enable_signal(false),
_alignment(0.5, 0.5, 0.0, 0.0),
_name_label(pm->path().name()),
@@ -314,7 +313,7 @@ IntegerControlGroup::IntegerControlGroup(ControlPanel* panel, SharedPtr<PortMode
_spinner.set_range(-99999, 99999);
_spinner.set_value(_port_model->value());
_spinner.signal_value_changed().connect(
- sigc::mem_fun(*this, &IntegerControlGroup::update_value));
+ sigc::mem_fun(*this, &IntegerControl::update_value));
_spinner.set_increments(1, 10);
_alignment.add(_spinner);
@@ -328,7 +327,7 @@ IntegerControlGroup::IntegerControlGroup(ControlPanel* panel, SharedPtr<PortMode
void
-IntegerControlGroup::set_name(const string& name)
+IntegerControl::set_name(const string& name)
{
string name_label = "<span weight=\"bold\">";
name_label += name + "</span>";
@@ -337,9 +336,9 @@ IntegerControlGroup::set_name(const string& name)
void
-IntegerControlGroup::set_value(float val)
+IntegerControl::set_value(float val)
{
- //cerr << "[IntegerControlGroup] Setting value to " << val << endl;
+ //cerr << "[IntegerControl] Setting value to " << val << endl;
_enable_signal = false;
_spinner.set_value(val);
_enable_signal = true;
@@ -347,7 +346,7 @@ IntegerControlGroup::set_value(float val)
void
-IntegerControlGroup::enable()
+IntegerControl::enable()
{
_spinner.property_sensitive() = true;
_name_label->property_sensitive() = true;
@@ -355,7 +354,7 @@ IntegerControlGroup::enable()
void
-IntegerControlGroup::disable()
+IntegerControl::disable()
{
_spinner.property_sensitive() = false;
_name_label->property_sensitive() = false;
@@ -363,7 +362,7 @@ IntegerControlGroup::disable()
void
-IntegerControlGroup::update_value()
+IntegerControl::update_value()
{
if (_enable_signal) {
float value = _spinner.get_value();
@@ -371,35 +370,42 @@ IntegerControlGroup::update_value()
//m_port_model->value(value);
}
}
+#endif
-// ///////////// ToggleControlGroup ////////////// //
+// ///////////// ToggleControl ////////////// //
-ToggleControlGroup::ToggleControlGroup(ControlPanel* panel, SharedPtr<PortModel> pm)
-: ControlGroup(panel, pm),
- _enable_signal(false),
- _alignment(0.5, 0.5, 0.0, 0.0),
- _name_label(pm->path().name())
+ToggleControl::ToggleControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+ : Control(cobject, xml)
{
- set_name(pm->path().name());
+ xml->get_widget("toggle_control_name_label", _name_label);
+ xml->get_widget("toggle_control_check", _checkbutton);
+}
- set_value(_port_model->value());
- _checkbutton.signal_toggled().connect(
- sigc::mem_fun(*this, &ToggleControlGroup::update_value));
- _alignment.add(_checkbutton);
- pack_start(_name_label);
- pack_start(_alignment);
+void
+ToggleControl::init(ControlPanel* panel, SharedPtr<PortModel> pm)
+{
+ _enable_signal = false;
- _enable_signal = true;
+ Control::init(panel, pm);
+
+ assert(_name_label);
+ assert(_checkbutton);
+ set_name(pm->path().name());
+
+ _checkbutton->signal_toggled().connect(sigc::mem_fun(*this, &ToggleControl::toggled));
+ set_value(pm->value());
+
+ _enable_signal = true;
show_all();
}
void
-ToggleControlGroup::set_name(const string& name)
+ToggleControl::set_name(const string& name)
{
string name_label = "<span weight=\"bold\">";
name_label += name + "</span>";
@@ -408,41 +414,54 @@ ToggleControlGroup::set_name(const string& name)
void
-ToggleControlGroup::set_value(float val)
+ToggleControl::set_value(const Atom& val)
{
- //cerr << "[ToggleControlGroup] Setting value to " << val << endl;
+ bool enable = false;
+ switch (val.type()) {
+ case Atom::FLOAT:
+ enable = (val.get_float() != 0.0f);
+ break;
+ case Atom::INT:
+ enable = (val.get_int32() != 0);
+ break;
+ case Atom::BOOL:
+ enable = (val.get_bool());
+ default:
+ cerr << "Unsupported value type for toggle control" << endl;
+ }
+
_enable_signal = false;
- _checkbutton.set_active( (val > 0.0f) );
+ _checkbutton->set_active(enable);
_enable_signal = true;
}
void
-ToggleControlGroup::enable()
+ToggleControl::enable()
{
- _checkbutton.property_sensitive() = true;
+ _checkbutton->property_sensitive() = true;
_name_label->property_sensitive() = true;
}
void
-ToggleControlGroup::disable()
+ToggleControl::disable()
{
- _checkbutton.property_sensitive() = false;
+ _checkbutton->property_sensitive() = false;
_name_label->property_sensitive() = false;
}
void
-ToggleControlGroup::update_value()
+ToggleControl::toggled()
{
if (_enable_signal) {
- float value = _checkbutton.get_active() ? 1.0f : 0.0f;
+ float value = _checkbutton->get_active() ? 1.0f : 0.0f;
_control_panel->value_changed(_port_model, value);
//m_port_model->value(value);
}
}
-#endif
+
} // namespace GUI
} // namespace Ingen
diff --git a/src/libs/gui/ControlGroups.hpp b/src/libs/gui/Controls.hpp
index da604f72..8a9c4064 100644
--- a/src/libs/gui/ControlGroups.hpp
+++ b/src/libs/gui/Controls.hpp
@@ -34,28 +34,36 @@ namespace GUI {
class ControlPanel;
-/** A group of controls (for a single Port) in a NodeControlWindow.
+/** A group of controls (for a single Port) in a ControlPanel.
*
* \ingroup GUI
*/
-class ControlGroup : public Gtk::VBox
+class Control : public Gtk::VBox
{
public:
- ControlGroup(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
- virtual ~ControlGroup();
+ Control(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
+ virtual ~Control();
- void init(ControlPanel* panel, SharedPtr<PortModel> pm);
+ virtual void init(ControlPanel* panel, SharedPtr<PortModel> pm);
+
+ virtual void enable() = 0;
+ virtual void disable() = 0;
inline const SharedPtr<PortModel> port_model() const { return _port_model; }
protected:
virtual void set_value(const Atom& value) = 0;
virtual void set_range(float min, float max) {}
+
+ void menu_properties();
ControlPanel* _control_panel;
SharedPtr<PortModel> _port_model;
sigc::connection _control_connection;
bool _enable_signal;
+
+ Gtk::Menu* _menu;
+ Gtk::MenuItem* _menu_properties;
};
@@ -63,10 +71,10 @@ protected:
*
* \ingroup GUI
*/
-class SliderControlGroup : public ControlGroup
+class SliderControl : public Control
{
public:
- SliderControlGroup(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
+ SliderControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
void init(ControlPanel* panel, SharedPtr<PortModel> pm);
void enable();
@@ -77,9 +85,6 @@ public:
private:
void set_name(const string& name);
-
- bool clicked(GdkEventButton* ev);
-
void set_value(const Atom& value);
void set_range(float min, float max);
@@ -88,19 +93,15 @@ private:
void update_range();
void update_value_from_slider();
void update_value_from_spinner();
-
- void menu_properties();
bool slider_pressed(GdkEvent* ev);
+ bool clicked(GdkEventButton* ev);
bool _enabled;
Gtk::Label* _name_label;
Gtk::SpinButton* _value_spinner;
Gtk::HScale* _slider;
-
- Gtk::Menu* _menu;
- Gtk::MenuItem* _menu_properties;
};
@@ -110,10 +111,10 @@ private:
*
* \ingroup GUI
*/
-class IntegerControlGroup : public ControlGroup
+class IntegerControl : public Control
{
public:
- IntegerControlGroup(ControlPanel* panel, SharedPtr<PortModel> pm);
+ IntegerControl(ControlPanel* panel, SharedPtr<PortModel> pm);
void enable();
void disable();
@@ -129,32 +130,33 @@ private:
Gtk::Label _name_label;
Gtk::SpinButton _spinner;
};
+#endif
/** A radio button for toggle controls.
*
* \ingroup GUI
*/
-class ToggleControlGroup : public ControlGroup
+class ToggleControl : public Control
{
public:
- ToggleControlGroup(ControlPanel* panel, SharedPtr<PortModel> pm);
+ ToggleControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+
+ void init(ControlPanel* panel, SharedPtr<PortModel> pm);
void enable();
void disable();
private:
void set_name(const string& name);
- void set_value(float val);
+ void set_value(const Atom& value);
- void update_value();
+ void toggled();
- bool _enable_signal;
- Gtk::Alignment _alignment;
- Gtk::Label _name_label;
- Gtk::CheckButton _checkbutton;
+ Gtk::Label* _name_label;
+ Gtk::CheckButton* _checkbutton;
};
-#endif
+
} // namespace GUI
} // namespace Ingen
diff --git a/src/libs/gui/Makefile.am b/src/libs/gui/Makefile.am
index 9e55afab..17672a29 100644
--- a/src/libs/gui/Makefile.am
+++ b/src/libs/gui/Makefile.am
@@ -54,10 +54,10 @@ libingen_gui_la_SOURCES = \
ConnectWindow.cpp \
ConnectWindow.hpp \
Connection.hpp \
- ControlGroups.cpp \
- ControlGroups.hpp \
ControlPanel.cpp \
ControlPanel.hpp \
+ Controls.cpp \
+ Controls.hpp \
GladeFactory.cpp \
GladeFactory.hpp \
LoadPatchWindow.cpp \
diff --git a/src/libs/gui/NodeControlWindow.cpp b/src/libs/gui/NodeControlWindow.cpp
index c0698230..95a07b2b 100644
--- a/src/libs/gui/NodeControlWindow.cpp
+++ b/src/libs/gui/NodeControlWindow.cpp
@@ -22,7 +22,7 @@
#include "App.hpp"
#include "NodeControlWindow.hpp"
#include "GladeFactory.hpp"
-#include "ControlGroups.hpp"
+#include "Controls.hpp"
#include "ControlPanel.hpp"
#include "PatchWindow.hpp"
diff --git a/src/libs/gui/PortPropertiesWindow.cpp b/src/libs/gui/PortPropertiesWindow.cpp
index 707c8d76..0129993b 100644
--- a/src/libs/gui/PortPropertiesWindow.cpp
+++ b/src/libs/gui/PortPropertiesWindow.cpp
@@ -21,7 +21,7 @@
#include "client/NodeModel.hpp"
#include "client/PluginModel.hpp"
#include "App.hpp"
-#include "ControlGroups.hpp"
+#include "Controls.hpp"
#include "PortPropertiesWindow.hpp"
using std::string;
diff --git a/src/libs/gui/ingen_gui.glade b/src/libs/gui/ingen_gui.glade
index d8ab7bb5..d885914e 100644
--- a/src/libs/gui/ingen_gui.glade
+++ b/src/libs/gui/ingen_gui.glade
@@ -376,12 +376,12 @@
</widget>
</child>
<child>
- <widget class="GtkImageMenuItem" id="help_e_to_edit_menu_item">
+ <widget class="GtkImageMenuItem" id="help_e_to_edit_menu_item">
<property name="visible">True</property>
<property name="label" translatable="yes">Press 'e' to toggle edit mode</property>
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image2135">
+ <widget class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="stock">gtk-info</property>
<property name="icon_size">1</property>
@@ -473,62 +473,53 @@
<property name="n_columns">3</property>
<property name="row_spacing">12</property>
<child>
- <widget class="GtkButton" id="load_plugin_clear_button">
+ <widget class="GtkLabel" id="label66">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Clear filter text (show all plugins)</property>
- <property name="label">gtk-clear</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Node Name:</property>
+ <property name="use_markup">True</property>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="load_plugin_filter_combo">
+ <widget class="GtkHSeparator" id="hseparator1">
<property name="visible">True</property>
- <property name="items" translatable="yes">Name contains: </property>
</widget>
<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="x_options">GTK_FILL</property>
- <property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="load_plugin_search_entry">
+ <widget class="GtkHSeparator" id="hseparator2">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="tooltip" translatable="yes">Search string to filter plugin list</property>
- <property name="invisible_char">*</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_padding">6</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkButton" id="load_plugin_add_button">
+ <widget class="GtkHSeparator" id="hseparator3">
<property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Add selected plugin to patch</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="response_id">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</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="x_options">GTK_FILL</property>
- <property name="y_options"></property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
@@ -571,51 +562,60 @@
</packing>
</child>
<child>
- <widget class="GtkHSeparator" id="hseparator3">
+ <widget class="GtkButton" id="load_plugin_add_button">
<property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Add selected plugin to patch</property>
+ <property name="label">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkHSeparator" id="hseparator2">
+ <widget class="GtkEntry" id="load_plugin_search_entry">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="tooltip" translatable="yes">Search string to filter plugin list</property>
+ <property name="invisible_char">*</property>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_padding">6</property>
</packing>
</child>
<child>
- <widget class="GtkHSeparator" id="hseparator1">
+ <widget class="GtkComboBox" id="load_plugin_filter_combo">
<property name="visible">True</property>
+ <property name="items" translatable="yes">Name contains: </property>
</widget>
<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="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label66">
+ <widget class="GtkButton" id="load_plugin_clear_button">
<property name="visible">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Node Name:</property>
- <property name="use_markup">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Clear filter text (show all plugins)</property>
+ <property name="label">gtk-clear</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -646,61 +646,61 @@
<property name="n_rows">2</property>
<property name="n_columns">2</property>
<child>
- <widget class="GtkEntry" id="new_subpatch_name_entry">
+ <widget class="GtkLabel" id="label8">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Name: </property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options"></property>
- <property name="y_padding">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_EXPAND</property>
+ <property name="x_padding">5</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="new_subpatch_polyphony_spinbutton">
+ <widget class="GtkLabel" id="label9">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">1 0 100 1 10 10</property>
- <property name="climb_rate">1</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Polyphony: </property>
</widget>
<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="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- <property name="y_padding">4</property>
+ <property name="y_options">GTK_EXPAND</property>
+ <property name="x_padding">5</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label9">
+ <widget class="GtkSpinButton" id="new_subpatch_polyphony_spinbutton">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Polyphony: </property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">1 0 100 1 10 10</property>
+ <property name="climb_rate">1</property>
</widget>
<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="x_options">GTK_FILL</property>
- <property name="y_options">GTK_EXPAND</property>
- <property name="x_padding">5</property>
+ <property name="y_options"></property>
+ <property name="y_padding">4</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label8">
+ <widget class="GtkEntry" id="new_subpatch_name_entry">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Name: </property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">True</property>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_EXPAND</property>
- <property name="x_padding">5</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
+ <property name="y_padding">4</property>
</packing>
</child>
</widget>
@@ -802,71 +802,63 @@
<property name="column_spacing">12</property>
<property name="row_spacing">4</property>
<child>
- <widget class="GtkHBox" id="hbox45">
+ <widget class="GtkLabel" id="label79">
<property name="visible">True</property>
- <child>
- <widget class="GtkRadioButton" id="load_subpatch_name_from_user_radio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Specify the name for the new patch</property>
- <property name="label" translatable="yes">Specify: </property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <property name="group">load_subpatch_name_from_file_radio</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkEntry" id="load_subpatch_name_entry">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Specify the name for the new patch</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Name: &lt;/b&gt;</property>
+ <property name="use_markup">True</property>
</widget>
<packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label104">
+ <widget class="GtkLabel" id="label80">
<property name="visible">True</property>
<property name="xalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Polyphony: &lt;/b&gt;</property>
+ <property name="use_markup">True</property>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkRadioButton" id="load_subpatch_poly_from_parent_radio">
+ <widget class="GtkRadioButton" id="load_subpatch_name_from_file_radio">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Set polyphony to the same value as the parent (containing) patch</property>
- <property name="label" translatable="yes">Same as parent (?)</property>
+ <property name="tooltip" translatable="yes">Use the name stored in the patch file</property>
+ <property name="label" translatable="yes">Load from file</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
+ <property name="active">True</property>
<property name="draw_indicator">True</property>
- <property name="group">load_subpatch_poly_from_file_radio</property>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="load_subpatch_poly_from_file_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Use the polyphony value stored in the patch file</property>
+ <property name="label" translatable="yes">Load from file</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <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="x_options">GTK_FILL</property>
@@ -917,19 +909,19 @@
</packing>
</child>
<child>
- <widget class="GtkRadioButton" id="load_subpatch_poly_from_file_radio">
+ <widget class="GtkRadioButton" id="load_subpatch_poly_from_parent_radio">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Use the polyphony value stored in the patch file</property>
- <property name="label" translatable="yes">Load from file</property>
+ <property name="tooltip" translatable="yes">Set polyphony to the same value as the parent (containing) patch</property>
+ <property name="label" translatable="yes">Same as parent (?)</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
- <property name="active">True</property>
<property name="draw_indicator">True</property>
+ <property name="group">load_subpatch_poly_from_file_radio</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
@@ -937,47 +929,55 @@
</packing>
</child>
<child>
- <widget class="GtkRadioButton" id="load_subpatch_name_from_file_radio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Use the name stored in the patch file</property>
- <property name="label" translatable="yes">Load from file</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label80">
+ <widget class="GtkLabel" id="label104">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Polyphony: &lt;/b&gt;</property>
- <property name="use_markup">True</property>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label79">
+ <widget class="GtkHBox" id="hbox45">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Name: &lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <child>
+ <widget class="GtkRadioButton" id="load_subpatch_name_from_user_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Specify the name for the new patch</property>
+ <property name="label" translatable="yes">Specify: </property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">load_subpatch_name_from_file_radio</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="load_subpatch_name_entry">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Specify the name for the new patch</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
</widget>
@@ -1039,6 +1039,54 @@
<property name="column_spacing">12</property>
<property name="row_spacing">4</property>
<child>
+ <widget class="GtkLabel" id="label123">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Polyphony: &lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="load_patch_poly_from_current_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Use the same polyphony as the current patch</property>
+ <property name="label" translatable="yes">Keep current</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="load_patch_poly_from_file_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Use the polyphony value stored in the patch file</property>
+ <property name="label" translatable="yes">Load from file</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">load_patch_poly_from_current_radio</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
<widget class="GtkHBox" id="hbox58">
<property name="visible">True</property>
<child>
@@ -1078,54 +1126,6 @@
<property name="y_options">GTK_FILL</property>
</packing>
</child>
- <child>
- <widget class="GtkRadioButton" id="load_patch_poly_from_file_radio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Use the polyphony value stored in the patch file</property>
- <property name="label" translatable="yes">Load from file</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <property name="group">load_patch_poly_from_current_radio</property>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkRadioButton" id="load_patch_poly_from_current_radio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Use the same polyphony as the current patch</property>
- <property name="label" translatable="yes">Keep current</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label123">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Polyphony: &lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
</widget>
<packing>
<property name="expand">False</property>
@@ -1174,34 +1174,22 @@
<child>
<widget class="GtkTable" id="table8">
<property name="visible">True</property>
- <property name="n_rows">4</property>
+ <property name="n_rows">5</property>
<property name="n_columns">2</property>
<child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <widget class="GtkVBox" id="control_strip">
+ <widget class="GtkVBox" id="toggle_control">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
- <widget class="GtkHBox" id="hbox1">
+ <widget class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
- <widget class="GtkLabel" id="control_strip_name_label">
+ <widget class="GtkLabel" id="toggle_control_name_label">
<property name="visible">True</property>
<property name="xalign">0</property>
+ <property name="yalign">1</property>
<property name="xpad">4</property>
- <property name="ypad">4</property>
<property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
<property name="use_markup">True</property>
<property name="single_line_mode">True</property>
@@ -1212,25 +1200,16 @@
</packing>
</child>
<child>
- <widget class="GtkAlignment" id="alignment3">
+ <widget class="GtkAlignment" id="alignment7">
<property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="xalign">1</property>
<property name="yalign">1</property>
- <property name="xscale">0</property>
<property name="yscale">0</property>
- <property name="top_padding">2</property>
- <property name="left_padding">2</property>
- <property name="right_padding">2</property>
+ <property name="bottom_padding">1</property>
+ <property name="left_padding">1</property>
+ <property name="right_padding">4</property>
<child>
- <widget class="GtkSpinButton" id="control_strip_spinner">
+ <widget class="GtkHSeparator" id="hseparator7">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="width_chars">12</property>
- <property name="adjustment">0 -9.9999999999999999e+45 1.0000000000000001e+63 1 10 10</property>
- <property name="digits">4</property>
- <property name="numeric">True</property>
</widget>
</child>
</widget>
@@ -1238,41 +1217,143 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <widget class="GtkCheckButton" id="toggle_control_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
+ </widget>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="y_padding">8</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="control_panel_vbox">
+ <property name="visible">True</property>
<child>
- <widget class="GtkHScale" id="control_strip_slider">
+ <widget class="GtkAlignment" id="alignment6">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="adjustment">0 -1e+113 1e+137 0 0 0</property>
- <property name="digits">63</property>
- <property name="draw_value">False</property>
+ <property name="yalign">0</property>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwin1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <child>
+ <widget class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkVBox" id="control_panel_controls_box">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="control_panel_voice_controls_box">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <widget class="GtkRadioButton" id="control_panel_all_voices_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Apply changed controls to all voices</property>
+ <property name="label" translatable="yes">All Voices</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox32">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <widget class="GtkRadioButton" id="control_panel_specific_voice_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Apply changed controls to one voice only</property>
+ <property name="label" translatable="yes">Specific Voice:</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">control_panel_all_voices_radio</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="control_panel_voice_spinbutton">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Voice control changes are applied to</property>
+ <property name="adjustment">1 1 100 1 10 10</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="expand">False</property>
+ <property name="padding">5</property>
<property name="position">1</property>
</packing>
</child>
</widget>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHSeparator" id="hseparator5">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
</child>
<child>
<widget class="GtkVBox" id="patch_view_box">
@@ -1535,47 +1616,32 @@
</packing>
</child>
<child>
- <widget class="GtkVBox" id="control_panel_vbox">
+ <widget class="GtkHSeparator" id="hseparator5">
<property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="control_strip">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
- <widget class="GtkAlignment" id="alignment6">
- <property name="visible">True</property>
- <property name="yalign">0</property>
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwin1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <child>
- <widget class="GtkViewport" id="viewport1">
- <property name="visible">True</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <widget class="GtkVBox" id="control_panel_controls_box">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="GtkHBox" id="control_panel_voice_controls_box">
+ <widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
- <property name="homogeneous">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
- <widget class="GtkRadioButton" id="control_panel_all_voices_radio">
+ <widget class="GtkLabel" id="control_strip_name_label">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Apply changed controls to all voices</property>
- <property name="label" translatable="yes">All Voices</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">1</property>
+ <property name="xpad">4</property>
+ <property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="single_line_mode">True</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -1583,54 +1649,64 @@
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox32">
+ <widget class="GtkAlignment" id="alignment3">
<property name="visible">True</property>
- <property name="spacing">5</property>
- <child>
- <widget class="GtkRadioButton" id="control_panel_specific_voice_radio">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Apply changed controls to one voice only</property>
- <property name="label" translatable="yes">Specific Voice:</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- <property name="group">control_panel_all_voices_radio</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
+ <property name="yalign">1</property>
+ <property name="yscale">0</property>
+ <property name="bottom_padding">1</property>
+ <property name="left_padding">1</property>
+ <property name="right_padding">4</property>
<child>
- <widget class="GtkSpinButton" id="control_panel_voice_spinbutton">
+ <widget class="GtkHSeparator" id="hseparator6">
<property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Voice control changes are applied to</property>
- <property name="adjustment">1 1 100 1 10 10</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
</widget>
- <packing>
- <property name="position">1</property>
- </packing>
</child>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <widget class="GtkSpinButton" id="control_strip_spinner">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="width_chars">12</property>
+ <property name="adjustment">0 -9.9999999999999999e+45 1.0000000000000001e+63 1 10 10</property>
+ <property name="digits">4</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHScale" id="control_strip_slider">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="adjustment">9.0923076923076922e+136 -1e+113 1e+137 0 0 0</property>
+ <property name="digits">63</property>
+ <property name="draw_value">False</property>
</widget>
<packing>
<property name="expand">False</property>
- <property name="padding">5</property>
<property name="position">1</property>
</packing>
</child>
</widget>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_padding">8</property>
+ </packing>
</child>
</widget>
</child>
@@ -1720,51 +1796,51 @@
<property name="n_rows">2</property>
<property name="n_columns">2</property>
<child>
- <widget class="GtkLabel" id="label103">
+ <widget class="GtkLabel" id="label90">
<property name="visible">True</property>
- <property name="xalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Patch Search Path: &lt;/b&gt;</property>
+ <property name="use_markup">True</property>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label91">
+ <widget class="GtkEntry" id="config_path_entry">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;i&gt;Example: /foo/bar:/home/john/patches:/usr/share/om/patches&lt;/i&gt;</property>
- <property name="use_markup">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
</widget>
<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="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="config_path_entry">
+ <widget class="GtkLabel" id="label91">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">*</property>
+ <property name="label" translatable="yes">&lt;i&gt;Example: /foo/bar:/home/john/patches:/usr/share/om/patches&lt;/i&gt;</property>
+ <property name="use_markup">True</property>
</widget>
<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="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label90">
+ <widget class="GtkLabel" id="label103">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Patch Search Path: &lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="xalign">0</property>
</widget>
<packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -2043,8 +2119,8 @@
<widget class="GtkWindow" id="node_properties_win">
<property name="border_width">8</property>
<property name="title" translatable="yes">Node Properties - Ingen</property>
- <property name="icon">ingen.svg</property>
<property name="window_position">GTK_WIN_POS_MOUSE</property>
+ <property name="icon">ingen.svg</property>
<child>
<widget class="GtkVBox" id="vbox17">
<property name="visible">True</property>
@@ -2141,7 +2217,7 @@
<property name="column_spacing">10</property>
<property name="row_spacing">6</property>
<child>
- <widget class="GtkLabel" id="node_properties_plugin_name_label">
+ <widget class="GtkLabel" id="node_properties_plugin_type_label">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">-</property>
@@ -2149,34 +2225,28 @@
<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="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label116">
+ <widget class="GtkLabel" id="label114">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Name: </property>
+ <property name="label" translatable="yes">Type: </property>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="node_properties_plugin_uri_label">
+ <widget class="GtkLabel" id="label120">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">-</property>
+ <property name="label" translatable="yes">URI: </property>
</widget>
<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="x_options">GTK_FILL</property>
@@ -2184,12 +2254,14 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label120">
+ <widget class="GtkLabel" id="node_properties_plugin_uri_label">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">URI: </property>
+ <property name="label" translatable="yes">-</property>
</widget>
<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="x_options">GTK_FILL</property>
@@ -2197,18 +2269,20 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label114">
+ <widget class="GtkLabel" id="label116">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Type: </property>
+ <property name="label" translatable="yes">Name: </property>
</widget>
<packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="node_properties_plugin_type_label">
+ <widget class="GtkLabel" id="node_properties_plugin_name_label">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">-</property>
@@ -2216,6 +2290,8 @@
<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="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -2231,7 +2307,6 @@
<widget class="GtkAboutDialog" id="about_win">
<property name="destroy_with_parent">True</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
- <property name="name">Ingen</property>
<property name="copyright" translatable="yes">Copyright (C) 2005-2007 Dave Robillard &lt;http://drobilla.net&gt;</property>
<property name="website">http://drobilla.net/software/ingen</property>
<property name="license" translatable="yes">Licensed under the GNU GPL, Version 2.
@@ -2295,7 +2370,7 @@ Contributors:
<property name="icon">ingen.svg</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox3">
+ <widget class="GtkVBox" id="dialog-vbox4">
<property name="visible">True</property>
<property name="spacing">6</property>
<child>
@@ -2369,33 +2444,64 @@ Contributors:
<property name="n_columns">2</property>
<property name="row_spacing">8</property>
<child>
- <widget class="GtkLabel" id="label131">
+ <widget class="GtkHBox" id="hbox64">
<property name="visible">True</property>
- <property name="xalign">0</property>
+ <child>
+ <widget class="GtkSpinButton" id="connect_port_spinbutton">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">16180 1 65535 1 10 10</property>
+ <property name="climb_rate">1</property>
+ <property name="numeric">True</property>
+ </widget>
+ <packing>
+ <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">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ <property name="x_padding">8</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox67">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkEntry" id="connect_url_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">True</property>
+ <property name="width_chars">28</property>
+ <property name="text" translatable="yes">osc.udp://localhost:16180</property>
+ </widget>
+ </child>
</widget>
<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="x_options">GTK_FILL</property>
- <property name="y_options"></property>
+ <property name="y_options">GTK_FILL</property>
+ <property name="x_padding">8</property>
</packing>
</child>
<child>
- <widget class="GtkRadioButton" id="connect_internal_radiobutton">
+ <widget class="GtkRadioButton" id="connect_server_radiobutton">
<property name="visible">True</property>
- <property name="sensitive">False</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Use internal engine</property>
+ <property name="label" translatable="yes">Connect to running server at: </property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
- <property name="group">connect_server_radiobutton</property>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -2418,66 +2524,35 @@ Contributors:
</packing>
</child>
<child>
- <widget class="GtkRadioButton" id="connect_server_radiobutton">
+ <widget class="GtkRadioButton" id="connect_internal_radiobutton">
<property name="visible">True</property>
+ <property name="sensitive">False</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Connect to running server at: </property>
+ <property name="label" translatable="yes">Use internal engine</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
+ <property name="group">connect_server_radiobutton</property>
</widget>
<packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox67">
+ <widget class="GtkLabel" id="label131">
<property name="visible">True</property>
- <child>
- <widget class="GtkEntry" id="connect_url_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">True</property>
- <property name="width_chars">28</property>
- <property name="text" translatable="yes">osc.udp://localhost:16180</property>
- </widget>
- </child>
+ <property name="xalign">0</property>
</widget>
<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="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- <property name="x_padding">8</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHBox" id="hbox64">
- <property name="visible">True</property>
- <child>
- <widget class="GtkSpinButton" id="connect_port_spinbutton">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property name="adjustment">16180 1 65535 1 10 10</property>
- <property name="climb_rate">1</property>
- <property name="numeric">True</property>
- </widget>
- <packing>
- <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">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- <property name="x_padding">8</property>
+ <property name="y_options"></property>
</packing>
</child>
</widget>
@@ -2491,7 +2566,7 @@ Contributors:
</packing>
</child>
<child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area3">
+ <widget class="GtkHButtonBox" id="dialog-action_area4">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
@@ -2724,7 +2799,7 @@ Contributors:
<property name="title" translatable="yes">Load Remote Patch</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox4">
+ <widget class="GtkVBox" id="dialog-vbox5">
<property name="visible">True</property>
<property name="spacing">8</property>
<child>
@@ -2783,7 +2858,7 @@ Contributors:
</packing>
</child>
<child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area4">
+ <widget class="GtkHButtonBox" id="dialog-action_area5">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
@@ -2826,7 +2901,7 @@ Contributors:
<property name="resizable">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox5">
+ <widget class="GtkVBox" id="dialog-vbox6">
<property name="visible">True</property>
<property name="spacing">9</property>
<child>
@@ -2836,26 +2911,19 @@ Contributors:
<property name="n_columns">2</property>
<property name="row_spacing">8</property>
<child>
- <widget class="GtkLabel" id="label136">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Short Name: </property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label135">
+ <widget class="GtkEntry" id="upload_patch_symbol_entry">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Symbol: </property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Enter a short name suitable for use as an identifier or filename.
+
+The first character must be one of _, a-z or A-Z and subsequenct characters can be from _, a-z, A-Z or 0-9.
+</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">True</property>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
@@ -2876,19 +2944,26 @@ Contributors:
</packing>
</child>
<child>
- <widget class="GtkEntry" id="upload_patch_symbol_entry">
+ <widget class="GtkLabel" id="label135">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Enter a short name suitable for use as an identifier or filename.
-
-The first character must be one of _, a-z or A-Z and subsequenct characters can be from _, a-z, A-Z or 0-9.
-</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Symbol: </property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label136">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Short Name: </property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
@@ -2927,7 +3002,7 @@ Thank you for contributing.</property>
</packing>
</child>
<child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area5">
+ <widget class="GtkHButtonBox" id="dialog-action_area6">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
@@ -3020,7 +3095,7 @@ Thank you for contributing.</property>
<property name="resizable">False</property>
<property name="window_position">GTK_WIN_POS_MOUSE</property>
<child>
- <widget class="GtkVBox" id="dialog-vbox6">
+ <widget class="GtkVBox" id="dialog-vbox7">
<property name="visible">True</property>
<property name="spacing">8</property>
<child>
@@ -3031,26 +3106,17 @@ Thank you for contributing.</property>
<property name="column_spacing">2</property>
<property name="row_spacing">4</property>
<child>
- <widget class="GtkLabel" id="label139">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Maximum Value: </property>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label138">
+ <widget class="GtkSpinButton" id="port_properties_min_spinner">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Minimum Value: </property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">0 -100000000 100000000 1 10 10</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">5</property>
+ <property name="numeric">True</property>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
@@ -3072,17 +3138,26 @@ Thank you for contributing.</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="port_properties_min_spinner">
+ <widget class="GtkLabel" id="label138">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">0 -100000000 100000000 1 10 10</property>
- <property name="climb_rate">1</property>
- <property name="digits">5</property>
- <property name="numeric">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Minimum Value: </property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label139">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Maximum Value: </property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
@@ -3092,7 +3167,7 @@ Thank you for contributing.</property>
</packing>
</child>
<child>
- <widget class="GtkHButtonBox" id="dialog-action_area6">
+ <widget class="GtkHButtonBox" id="dialog-action_area7">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
@@ -3177,10 +3252,10 @@ Thank you for contributing.</property>
</widget>
</child>
<child>
- <widget class="GtkSeparatorMenuItem" id="separator9">
+ <widget class="GtkSeparatorMenuItem" id="separator1">
<property name="visible">True</property>
</widget>
- </child>
+ </child>
<child>
<widget class="GtkImageMenuItem" id="object_properties_menuitem">
<property name="visible">True</property>