diff options
author | David Robillard <d@drobilla.net> | 2008-08-14 21:36:53 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-08-14 21:36:53 +0000 |
commit | 45689d6eab8d2a6bcdbe8b45d7de2d4ef806de0c (patch) | |
tree | e59acc02541c17cf6bf039fe91a5559dbc3478e4 /src | |
parent | 406d7376bf8faf0965fb87feaf6401962d357962 (diff) | |
download | ingen-45689d6eab8d2a6bcdbe8b45d7de2d4ef806de0c.tar.gz ingen-45689d6eab8d2a6bcdbe8b45d7de2d4ef806de0c.tar.bz2 ingen-45689d6eab8d2a6bcdbe8b45d7de2d4ef806de0c.zip |
Support for toggle ports in control window (shown as a checkbox).
Rename "ControlGroups" "Controls" (each is only for one port...).
git-svn-id: http://svn.drobilla.net/lad/ingen@1379 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/gui/ControlPanel.cpp | 71 | ||||
-rw-r--r-- | src/libs/gui/ControlPanel.hpp | 30 | ||||
-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.am | 4 | ||||
-rw-r--r-- | src/libs/gui/NodeControlWindow.cpp | 2 | ||||
-rw-r--r-- | src/libs/gui/PortPropertiesWindow.cpp | 2 | ||||
-rw-r--r-- | src/libs/gui/ingen_gui.glade | 1019 |
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"><b>Name: </b></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"><b>Polyphony: </b></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"><b>Polyphony: </b></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"><b>Name: </b></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"><b>Polyphony: </b></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"><b>Polyphony: </b></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"><b>Name</b></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"><b>Name</b></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"><b>Patch Search Path: </b></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"><i>Example: /foo/bar:/home/john/patches:/usr/share/om/patches</i></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"><i>Example: /foo/bar:/home/john/patches:/usr/share/om/patches</i></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"><b>Patch Search Path: </b></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 <http://drobilla.net></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> |