diff options
author | David Robillard <d@drobilla.net> | 2009-05-12 04:34:08 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-05-12 04:34:08 +0000 |
commit | 0fd55176b99cd6bd3230afdf350687a04702bd92 (patch) | |
tree | 07f8fd4244c415bac532981c6800e0ea9beb0982 /src | |
parent | effacccee852f5070c29f214cd2d15ce9aa2e91b (diff) | |
download | ingen-0fd55176b99cd6bd3230afdf350687a04702bd92.tar.gz ingen-0fd55176b99cd6bd3230afdf350687a04702bd92.tar.bz2 ingen-0fd55176b99cd6bd3230afdf350687a04702bd92.zip |
Detach/Reattach from/to Jack from UI (ticket #180).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1985 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/Driver.hpp | 3 | ||||
-rw-r--r-- | src/engine/Engine.cpp | 68 | ||||
-rw-r--r-- | src/engine/EventSource.hpp | 4 | ||||
-rw-r--r-- | src/engine/HTTPEngineReceiver.cpp | 8 | ||||
-rw-r--r-- | src/engine/HTTPEngineReceiver.hpp | 4 | ||||
-rw-r--r-- | src/engine/JackAudioDriver.cpp | 119 | ||||
-rw-r--r-- | src/engine/JackAudioDriver.hpp | 21 | ||||
-rw-r--r-- | src/engine/JackMidiDriver.cpp | 45 | ||||
-rw-r--r-- | src/engine/JackMidiDriver.hpp | 7 | ||||
-rw-r--r-- | src/engine/MidiDriver.hpp | 3 | ||||
-rw-r--r-- | src/engine/OSCEngineReceiver.cpp | 8 | ||||
-rw-r--r-- | src/engine/OSCEngineReceiver.hpp | 4 | ||||
-rw-r--r-- | src/engine/PostProcessor.cpp | 16 | ||||
-rw-r--r-- | src/engine/QueuedEngineInterface.cpp | 14 | ||||
-rw-r--r-- | src/engine/QueuedEventSource.hpp | 4 | ||||
-rw-r--r-- | src/engine/events/ClearPatchEvent.cpp | 2 | ||||
-rw-r--r-- | src/engine/events/DeactivateEvent.cpp | 54 | ||||
-rw-r--r-- | src/engine/events/DeactivateEvent.hpp | 12 | ||||
-rw-r--r-- | src/engine/events/DestroyEvent.cpp | 2 | ||||
-rw-r--r-- | src/engine/wscript | 1 | ||||
-rw-r--r-- | src/gui/ConnectWindow.cpp | 24 | ||||
-rw-r--r-- | src/gui/ConnectWindow.hpp | 4 | ||||
-rw-r--r-- | src/gui/ingen_gui.glade | 844 |
23 files changed, 681 insertions, 590 deletions
diff --git a/src/engine/Driver.hpp b/src/engine/Driver.hpp index a2ca6b15..e03c316d 100644 --- a/src/engine/Driver.hpp +++ b/src/engine/Driver.hpp @@ -46,7 +46,8 @@ public: /** Set the name of the system port */ virtual void set_name(const std::string& name) = 0; - virtual void unregister() = 0; + virtual void create() = 0; + virtual void destroy() = 0; bool is_input() const { return _patch_port->is_input(); } DuplexPort* patch_port() const { return _patch_port; } diff --git a/src/engine/Engine.cpp b/src/engine/Engine.cpp index 41004b97..4d984916 100644 --- a/src/engine/Engine.cpp +++ b/src/engine/Engine.cpp @@ -22,26 +22,26 @@ #include "raul/Deletable.hpp" #include "raul/Maid.hpp" #include "raul/SharedPtr.hpp" -#include "Engine.hpp" -#include "tuning.hpp" -#include "Event.hpp" -#include "common/interface/EventType.hpp" -#include "shared/Store.hpp" -#include "NodeFactory.hpp" +#include "AudioDriver.hpp" #include "ClientBroadcaster.hpp" -#include "PatchImpl.hpp" +#include "Engine.hpp" #include "EngineStore.hpp" +#include "Event.hpp" +#include "MessageContext.hpp" #include "MidiDriver.hpp" +#include "NodeFactory.hpp" #include "OSCDriver.hpp" -#include "QueuedEventSource.hpp" +#include "PatchImpl.hpp" #include "PostProcessor.hpp" -#include "events/CreatePatchEvent.hpp" #include "PostProcessor.hpp" -#include "AudioDriver.hpp" -#include "ProcessSlave.hpp" #include "ProcessContext.hpp" -#include "MessageContext.hpp" +#include "ProcessSlave.hpp" +#include "QueuedEventSource.hpp" #include "ThreadManager.hpp" +#include "common/interface/EventType.hpp" +#include "events/CreatePatchEvent.hpp" +#include "shared/Store.hpp" +#include "tuning.hpp" using namespace std; namespace Ingen { @@ -182,20 +182,21 @@ Engine::activate(size_t parallelism) _midi_driver = new DummyMidiDriver(); for (EventSources::iterator i = _event_sources.begin(); i != _event_sources.end(); ++i) - (*i)->activate(); + (*i)->activate_source(); // Create root patch - - PatchImpl* root_patch = new PatchImpl(*this, "", 1, NULL, - _audio_driver->sample_rate(), _audio_driver->buffer_size(), 1); - root_patch->activate(); - _world->store->add(root_patch); - root_patch->compiled_patch(root_patch->compile()); - - assert(_audio_driver->root_patch() == NULL); - _audio_driver->set_root_patch(root_patch); + PatchImpl* root_patch = _audio_driver->root_patch(); + if (!root_patch) { + root_patch = new PatchImpl(*this, "", 1, NULL, + _audio_driver->sample_rate(), _audio_driver->buffer_size(), 1); + root_patch->activate(); + _world->store->add(root_patch); + root_patch->compiled_patch(root_patch->compile()); + _audio_driver->set_root_patch(root_patch); + } _audio_driver->activate(); + _midi_driver->attach(*_audio_driver.get()); _process_slaves.clear(); _process_slaves.reserve(parallelism); @@ -219,34 +220,31 @@ Engine::deactivate() return; for (EventSources::iterator i = _event_sources.begin(); i != _event_sources.end(); ++i) - (*i)->deactivate(); + (*i)->deactivate_source(); /*for (Tree<GraphObject*>::iterator i = _engine_store->objects().begin(); i != _engine_store->objects().end(); ++i) if ((*i)->as_node() != NULL && (*i)->as_node()->parent() == NULL) (*i)->as_node()->deactivate();*/ - _audio_driver->deactivate(); - - if (_midi_driver != NULL) { + if (_midi_driver) _midi_driver->deactivate(); - delete _midi_driver; - _midi_driver = NULL; - } + + _audio_driver->deactivate(); _audio_driver->root_patch()->deactivate(); - for (size_t i=0; i < _process_slaves.size(); ++i) { + /*for (size_t i=0; i < _process_slaves.size(); ++i) { delete _process_slaves[i]; - } + }*/ - _process_slaves.clear(); + //_process_slaves.clear(); // Finalize any lingering events (unlikely) - _post_processor->process(); + //_post_processor->process(); - _audio_driver.reset(); - _event_sources.clear(); + //_audio_driver.reset(); + //_event_sources.clear(); _activated = false; } diff --git a/src/engine/EventSource.hpp b/src/engine/EventSource.hpp index f3377393..1e36c2da 100644 --- a/src/engine/EventSource.hpp +++ b/src/engine/EventSource.hpp @@ -43,8 +43,8 @@ class EventSource public: virtual ~EventSource() {} - virtual void activate() = 0; - virtual void deactivate() = 0; + virtual void activate_source() = 0; + virtual void deactivate_source() = 0; virtual void process(PostProcessor& dest, ProcessContext& context) = 0; }; diff --git a/src/engine/HTTPEngineReceiver.cpp b/src/engine/HTTPEngineReceiver.cpp index 98008a16..4e279455 100644 --- a/src/engine/HTTPEngineReceiver.cpp +++ b/src/engine/HTTPEngineReceiver.cpp @@ -86,20 +86,20 @@ HTTPEngineReceiver::~HTTPEngineReceiver() void -HTTPEngineReceiver::activate() +HTTPEngineReceiver::activate_source() { - QueuedEventSource::activate(); + QueuedEventSource::activate_source(); _receive_thread->set_name("HTTP Receiver"); _receive_thread->start(); } void -HTTPEngineReceiver::deactivate() +HTTPEngineReceiver::deactivate_source() { cout << "[HTTPEngineReceiver] Stopped HTTP listening thread" << endl; _receive_thread->stop(); - QueuedEventSource::deactivate(); + QueuedEventSource::deactivate_source(); } diff --git a/src/engine/HTTPEngineReceiver.hpp b/src/engine/HTTPEngineReceiver.hpp index d47e9747..88f71aaf 100644 --- a/src/engine/HTTPEngineReceiver.hpp +++ b/src/engine/HTTPEngineReceiver.hpp @@ -31,8 +31,8 @@ public: HTTPEngineReceiver(Engine& engine, uint16_t port); ~HTTPEngineReceiver(); - void activate(); - void deactivate(); + void activate_source(); + void deactivate_source(); private: struct ReceiveThread : public Raul::Thread { diff --git a/src/engine/JackAudioDriver.cpp b/src/engine/JackAudioDriver.cpp index d7cfece2..f1f814c9 100644 --- a/src/engine/JackAudioDriver.cpp +++ b/src/engine/JackAudioDriver.cpp @@ -53,15 +53,7 @@ JackAudioPort::JackAudioPort(JackAudioDriver* driver, DuplexPort* patch_port) { assert(patch_port->poly() == 1); - _jack_port = jack_port_register(_driver->jack_client(), - patch_port->path().c_str(), JACK_DEFAULT_AUDIO_TYPE, - (patch_port->is_input()) ? JackPortIsInput : JackPortIsOutput, - 0); - - if (_jack_port == NULL) { - cerr << "[JackAudioPort] ERROR: Failed to register port " << patch_port->path() << endl; - throw JackAudioDriver::PortRegistrationFailedException(); - } + create(); patch_port->buffer(0)->clear(); patch_port->fixed_buffers(true); @@ -75,7 +67,22 @@ JackAudioPort::~JackAudioPort() void -JackAudioPort::unregister() +JackAudioPort::create() +{ + _jack_port = jack_port_register(_driver->jack_client(), + _patch_port->path().c_str(), JACK_DEFAULT_AUDIO_TYPE, + (_patch_port->is_input()) ? JackPortIsInput : JackPortIsOutput, + 0); + + if (_jack_port == NULL) { + cerr << "[JackAudioPort] ERROR: Failed to register port " << _patch_port->path() << endl; + throw JackAudioDriver::PortRegistrationFailedException(); + } +} + + +void +JackAudioPort::destroy() { assert(_jack_port); if (jack_port_unregister(_driver->jack_client(), _jack_port)) @@ -103,24 +110,42 @@ JackAudioPort::prepare_buffer(jack_nframes_t nframes) //// JackAudioDriver //// -JackAudioDriver::JackAudioDriver(Engine& engine, - std::string server_name, - std::string client_name, - jack_client_t* jack_client) +JackAudioDriver::JackAudioDriver(Engine& engine) : _engine(engine) , _jack_thread(NULL) - , _client(jack_client) - , _buffer_size(jack_client ? jack_get_buffer_size(jack_client) : 0) - , _sample_rate(jack_client ? jack_get_sample_rate(jack_client) : 0) + , _sem(0) + , _flag(0) + , _client(NULL) + , _buffer_size(0) + , _sample_rate(0) , _is_activated(false) - , _local_client(true) // FIXME + , _local_client(true) , _process_context(engine) , _root_patch(NULL) { - if (!_client) { +} + + +JackAudioDriver::~JackAudioDriver() +{ + deactivate(); + + if (_local_client) + jack_client_close(_client); +} + + +bool +JackAudioDriver::attach(const std::string& server_name, + const std::string& client_name, + void* jack_client) +{ + assert(!_client); + if (!jack_client) { // Try supplied server name if (server_name != "") { - _client = jack_client_open(client_name.c_str(), JackServerName, NULL, server_name.c_str()); + _client = jack_client_open(client_name.c_str(), + JackServerName, NULL, server_name.c_str()); if (_client) cerr << "[JackAudioDriver] Connected to JACK server '" << server_name << "'" << endl; @@ -138,27 +163,27 @@ JackAudioDriver::JackAudioDriver(Engine& engine, // Still failed if (!_client) { cerr << "[JackAudioDriver] Unable to connect to Jack. Exiting." << endl; - exit(EXIT_FAILURE); + return false; } - - _buffer_size = jack_get_buffer_size(_client); - _sample_rate = jack_get_sample_rate(_client); + } else { + _client = (jack_client_t*)jack_client; } + _local_client = (jack_client == NULL); + + _buffer_size = jack_get_buffer_size(_client); + _sample_rate = jack_get_sample_rate(_client); + jack_on_shutdown(_client, shutdown_cb, this); jack_set_thread_init_callback(_client, thread_init_cb, this); jack_set_sample_rate_callback(_client, sample_rate_cb, this); jack_set_buffer_size_callback(_client, buffer_size_cb, this); -} - - -JackAudioDriver::~JackAudioDriver() -{ - deactivate(); - if (_local_client) - jack_client_close(_client); + for (Raul::List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i) + (*i)->create(); + + return true; } @@ -170,6 +195,9 @@ JackAudioDriver::activate() return; } + if (!_client) + attach("", "ingen", NULL); + jack_set_process_callback(_client, process_cb, this); _is_activated = true; @@ -181,8 +209,11 @@ JackAudioDriver::activate() cout << "[JackAudioDriver] Activated Jack client." << endl; } - if (!_engine.midi_driver() || dynamic_cast<DummyMidiDriver*>(_engine.midi_driver())) - _engine.set_midi_driver(new JackMidiDriver(_engine, _client)); + if (!_engine.midi_driver() || dynamic_cast<DummyMidiDriver*>(_engine.midi_driver())) { + JackMidiDriver* midi_driver = new JackMidiDriver(_engine); + midi_driver->attach(*this); + _engine.set_midi_driver(midi_driver); + } } @@ -190,12 +221,17 @@ void JackAudioDriver::deactivate() { if (_is_activated) { - for (Raul::List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i) - (*i)->unregister(); + _flag = 1; _is_activated = false; + _sem.wait(); + for (Raul::List<JackAudioPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i) + (*i)->destroy(); jack_deactivate(_client); + if (_local_client) { + jack_client_close(_client); + _client = NULL; + } _jack_thread->stop(); - _ports.clear(); cout << "[JackAudioDriver] Deactivated Jack client." << endl; } } @@ -288,8 +324,11 @@ JackAudioDriver::driver_port(const Path& path) int JackAudioDriver::_process_cb(jack_nframes_t nframes) { - if (nframes == 0 || ! _is_activated) + if (nframes == 0 || ! _is_activated) { + if (_flag == 1) + _sem.post(); return 0; + } // FIXME: all of this time stuff is screwy @@ -396,7 +435,9 @@ new_jack_audio_driver( const std::string client_name, void* jack_client) { - return new Ingen::JackAudioDriver(engine, server_name, client_name, (jack_client_t*)jack_client); + Ingen::JackAudioDriver* driver = new Ingen::JackAudioDriver(engine); + driver->attach(server_name, client_name, jack_client); + return driver; } } diff --git a/src/engine/JackAudioDriver.hpp b/src/engine/JackAudioDriver.hpp index a7f4c2ff..aa952197 100644 --- a/src/engine/JackAudioDriver.hpp +++ b/src/engine/JackAudioDriver.hpp @@ -20,8 +20,10 @@ #include <jack/jack.h> #include <jack/transport.h> -#include "raul/Thread.hpp" +#include "raul/AtomicInt.hpp" #include "raul/List.hpp" +#include "raul/Semaphore.hpp" +#include "raul/Thread.hpp" #include "AudioDriver.hpp" #include "Buffer.hpp" #include "ProcessContext.hpp" @@ -48,7 +50,8 @@ public: JackAudioPort(JackAudioDriver* driver, DuplexPort* patch_port); ~JackAudioPort(); - void unregister(); + void create(); + void destroy(); void set_name(const std::string& name) { jack_port_set_name(_jack_port, name.c_str()); }; @@ -75,13 +78,13 @@ private: class JackAudioDriver : public AudioDriver { public: - JackAudioDriver(Engine& engine, - std::string server_name = "default", - std::string client_name = "ingen", - jack_client_t* jack_client = 0); - + JackAudioDriver(Engine& engine); ~JackAudioDriver(); + bool attach(const std::string& server_name, + const std::string& client_name, + void* jack_client); + void activate(); void deactivate(); void enable(); @@ -112,7 +115,7 @@ public: SampleCount sample_rate() const { return _sample_rate; } bool is_activated() const { return _is_activated; } - inline SampleCount frame_time() const { return jack_frame_time(_client); } + inline SampleCount frame_time() const { return _client ? jack_frame_time(_client) : 0; } class PortRegistrationFailedException : public std::exception {}; @@ -136,6 +139,8 @@ private: Engine& _engine; Raul::Thread* _jack_thread; + Raul::Semaphore _sem; + Raul::AtomicInt _flag; jack_client_t* _client; jack_nframes_t _buffer_size; jack_nframes_t _sample_rate; diff --git a/src/engine/JackMidiDriver.cpp b/src/engine/JackMidiDriver.cpp index 9551b6be..ec94f962 100644 --- a/src/engine/JackMidiDriver.cpp +++ b/src/engine/JackMidiDriver.cpp @@ -47,15 +47,7 @@ JackMidiPort::JackMidiPort(JackMidiDriver* driver, DuplexPort* patch_port) { assert(patch_port->poly() == 1); - _jack_port = jack_port_register(_driver->jack_client(), - patch_port->path().c_str(), JACK_DEFAULT_MIDI_TYPE, - (patch_port->is_input()) ? JackPortIsInput : JackPortIsOutput, - 0); - - if (_jack_port == NULL) { - cerr << "[JackMidiPort] ERROR: Failed to register port " << patch_port->path() << endl; - throw JackAudioDriver::PortRegistrationFailedException(); - } + create(); patch_port->buffer(0)->clear(); } @@ -68,7 +60,22 @@ JackMidiPort::~JackMidiPort() void -JackMidiPort::unregister() +JackMidiPort::create() +{ + _jack_port = jack_port_register(_driver->jack_client(), + _patch_port->path().c_str(), JACK_DEFAULT_MIDI_TYPE, + (_patch_port->is_input()) ? JackPortIsInput : JackPortIsOutput, + 0); + + if (_jack_port == NULL) { + cerr << "[JackMidiPort] ERROR: Failed to register port " << _patch_port->path() << endl; + throw JackAudioDriver::PortRegistrationFailedException(); + } +} + + +void +JackMidiPort::destroy() { assert(_jack_port); if (jack_port_unregister(_driver->jack_client(), _jack_port)) @@ -157,9 +164,9 @@ JackMidiPort::post_process(ProcessContext& context) bool JackMidiDriver::_midi_thread_exit_flag = true; -JackMidiDriver::JackMidiDriver(Engine& engine, jack_client_t* client) +JackMidiDriver::JackMidiDriver(Engine& engine) : _engine(engine) - , _client(client) + , _client(NULL) , _is_activated(false) , _is_enabled(false) { @@ -175,6 +182,17 @@ JackMidiDriver::~JackMidiDriver() } +void +JackMidiDriver::attach(AudioDriver& driver) +{ + JackAudioDriver* jad = dynamic_cast<JackAudioDriver*>(&driver); + assert(jad); + _client = jad->jack_client(); + for (Raul::List<JackMidiPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i) + (*i)->create(); +} + + /** Launch and start the MIDI thread. */ void @@ -190,9 +208,8 @@ void JackMidiDriver::deactivate() { for (Raul::List<JackMidiPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i) - (*i)->unregister(); + (*i)->destroy(); _is_activated = false; - _ports.clear(); } diff --git a/src/engine/JackMidiDriver.hpp b/src/engine/JackMidiDriver.hpp index af885766..d0e81396 100644 --- a/src/engine/JackMidiDriver.hpp +++ b/src/engine/JackMidiDriver.hpp @@ -41,7 +41,8 @@ public: JackMidiPort(JackMidiDriver* driver, DuplexPort* port); virtual ~JackMidiPort(); - void unregister(); + void create(); + void destroy(); void pre_process(ProcessContext& context); void post_process(ProcessContext& context); @@ -64,9 +65,11 @@ private: class JackMidiDriver : public MidiDriver { public: - JackMidiDriver(Engine& engine, jack_client_t* client); + JackMidiDriver(Engine& engine); ~JackMidiDriver(); + void attach(AudioDriver& driver); + void activate(); void deactivate(); void enable() { _is_enabled = true; } diff --git a/src/engine/MidiDriver.hpp b/src/engine/MidiDriver.hpp index 75da9db5..da465293 100644 --- a/src/engine/MidiDriver.hpp +++ b/src/engine/MidiDriver.hpp @@ -26,6 +26,7 @@ namespace Ingen { class ProcessContext; +class AudioDriver; /** Midi driver abstract base class. @@ -37,6 +38,8 @@ class MidiDriver : public Driver public: MidiDriver() : Driver(DataType::EVENT) {} + virtual void attach(AudioDriver& master) {} + /** Prepare input for the specified (upcoming) cycle. * * Realtime safe, run in audio thread before executing the graph for a cycle. diff --git a/src/engine/OSCEngineReceiver.cpp b/src/engine/OSCEngineReceiver.cpp index b5505f86..26b8aeeb 100644 --- a/src/engine/OSCEngineReceiver.cpp +++ b/src/engine/OSCEngineReceiver.cpp @@ -143,9 +143,9 @@ OSCEngineReceiver::~OSCEngineReceiver() void -OSCEngineReceiver::activate() +OSCEngineReceiver::activate_source() { - QueuedEventSource::activate(); + QueuedEventSource::activate_source(); _receive_thread->set_name("OSC Receiver"); _receive_thread->start(); _receive_thread->set_scheduling(SCHED_FIFO, 5); // Jack default appears to be 10 @@ -153,11 +153,11 @@ OSCEngineReceiver::activate() void -OSCEngineReceiver::deactivate() +OSCEngineReceiver::deactivate_source() { cout << "[OSCEngineReceiver] Stopped OSC listening thread" << endl; _receive_thread->stop(); - QueuedEventSource::deactivate(); + QueuedEventSource::deactivate_source(); } diff --git a/src/engine/OSCEngineReceiver.hpp b/src/engine/OSCEngineReceiver.hpp index 75094f55..6ab017d0 100644 --- a/src/engine/OSCEngineReceiver.hpp +++ b/src/engine/OSCEngineReceiver.hpp @@ -63,8 +63,8 @@ public: OSCEngineReceiver(Engine& engine, size_t queue_size, uint16_t port); ~OSCEngineReceiver(); - void activate(); - void deactivate(); + void activate_source(); + void deactivate_source(); private: struct ReceiveThread : public Raul::Thread { diff --git a/src/engine/PostProcessor.cpp b/src/engine/PostProcessor.cpp index b90f7ddc..1595ac38 100644 --- a/src/engine/PostProcessor.cpp +++ b/src/engine/PostProcessor.cpp @@ -55,14 +55,18 @@ PostProcessor::process() /* FIXME: process events from all threads if parallel */ /* Process audio thread generated events */ - while (_engine.audio_driver()->context().event_sink().read( - _event_buffer_size, _event_buffer)) { - if (((Event*)_event_buffer)->time() > end_time) { - cerr << "WARNING: Lost event with time " - << ((Event*)_event_buffer)->time() << " > " << end_time << endl; + while (true) { + AudioDriver* driver = _engine.audio_driver(); + if (driver && driver->context().event_sink().read(_event_buffer_size, _event_buffer)) { + if (((Event*)_event_buffer)->time() > end_time) { + cerr << "WARNING: Lost event with time " + << ((Event*)_event_buffer)->time() << " > " << end_time << endl; + break; + } + ((Event*)_event_buffer)->post_process(); + } else { break; } - ((Event*)_event_buffer)->post_process(); } /* Process normal events */ diff --git a/src/engine/QueuedEngineInterface.cpp b/src/engine/QueuedEngineInterface.cpp index 6a322e16..9a2cea1b 100644 --- a/src/engine/QueuedEngineInterface.cpp +++ b/src/engine/QueuedEngineInterface.cpp @@ -39,8 +39,10 @@ QueuedEngineInterface::now() const { // Exactly one cycle latency (some could run ASAP if we get lucky, but not always, and a slight // constant latency is far better than jittery lower (average) latency - assert(_engine.audio_driver()); - return _engine.audio_driver()->frame_time() + _engine.audio_driver()->buffer_size(); + if (_engine.audio_driver()) + return _engine.audio_driver()->frame_time() + _engine.audio_driver()->buffer_size(); + else + return 0; } @@ -99,8 +101,14 @@ QueuedEngineInterface::load_plugins() void QueuedEngineInterface::activate() { - QueuedEventSource::activate(); + static bool in_activate = false; + if (!in_activate) { + in_activate = true; + _engine.activate(1); + } + QueuedEventSource::activate_source(); push_queued(new PingQueuedEvent(_engine, _responder, now())); + in_activate = false; } diff --git a/src/engine/QueuedEventSource.hpp b/src/engine/QueuedEventSource.hpp index f8ff2783..3054d910 100644 --- a/src/engine/QueuedEventSource.hpp +++ b/src/engine/QueuedEventSource.hpp @@ -48,8 +48,8 @@ public: QueuedEventSource(size_t queue_size); ~QueuedEventSource(); - void activate() { Slave::start(); } - void deactivate() { Slave::stop(); } + void activate_source() { Slave::start(); } + void deactivate_source() { Slave::stop(); } void process(PostProcessor& dest, ProcessContext& context); diff --git a/src/engine/events/ClearPatchEvent.cpp b/src/engine/events/ClearPatchEvent.cpp index c37d1910..9122281b 100644 --- a/src/engine/events/ClearPatchEvent.cpp +++ b/src/engine/events/ClearPatchEvent.cpp @@ -143,7 +143,7 @@ ClearPatchEvent::post_process() for (size_t i = 0; i < _driver_ports->size(); ++i) { Raul::List<DriverPort*>::Node* ln = _driver_ports->at(i); if (ln) { - ln->elem()->unregister(); + ln->elem()->destroy(); _engine.maid()->push(ln); } } diff --git a/src/engine/events/DeactivateEvent.cpp b/src/engine/events/DeactivateEvent.cpp deleted file mode 100644 index a68419f0..00000000 --- a/src/engine/events/DeactivateEvent.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* This file is part of Ingen. - * Copyright (C) 2007 Dave Robillard <http://drobilla.net> - * - * Ingen is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "DeactivateEvent.hpp" -#include "Responder.hpp" -#include "Engine.hpp" - -namespace Ingen { - - -DeactivateEvent::DeactivateEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp) -: QueuedEvent(engine, responder, timestamp) -{ -} - - -void -DeactivateEvent::pre_process() -{ - QueuedEvent::pre_process(); -} - - -void -DeactivateEvent::execute(ProcessContext& context) -{ - QueuedEvent::execute(context); -} - - -void -DeactivateEvent::post_process() -{ - _responder->respond_ok(); - _engine.deactivate(); -} - - -} // namespace Ingen - diff --git a/src/engine/events/DeactivateEvent.hpp b/src/engine/events/DeactivateEvent.hpp index 5a6750ba..eaa7e9cb 100644 --- a/src/engine/events/DeactivateEvent.hpp +++ b/src/engine/events/DeactivateEvent.hpp @@ -19,6 +19,7 @@ #define DEACTIVATEEVENT_H #include "QueuedEvent.hpp" +#include "Engine.hpp" namespace Ingen { @@ -30,11 +31,14 @@ namespace Ingen { class DeactivateEvent : public QueuedEvent { public: - DeactivateEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp); + DeactivateEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp) + : QueuedEvent(engine, responder, timestamp) + {} - void pre_process(); - void execute(ProcessContext& context); - void post_process(); + void post_process() { + _responder->respond_ok(); + _engine.deactivate(); + } }; diff --git a/src/engine/events/DestroyEvent.cpp b/src/engine/events/DestroyEvent.cpp index 52c19945..a9597638 100644 --- a/src/engine/events/DestroyEvent.cpp +++ b/src/engine/events/DestroyEvent.cpp @@ -200,7 +200,7 @@ DestroyEvent::post_process() } if (_driver_port) { - _driver_port->elem()->unregister(); + _driver_port->elem()->destroy(); _engine.maid()->push(_driver_port); } } diff --git a/src/engine/wscript b/src/engine/wscript index e6f38c0c..66d6f29e 100644 --- a/src/engine/wscript +++ b/src/engine/wscript @@ -63,7 +63,6 @@ def build(bld): events/CreateNodeEvent.cpp events/CreatePatchEvent.cpp events/CreatePortEvent.cpp - events/DeactivateEvent.cpp events/DestroyEvent.cpp events/DisconnectAllEvent.cpp events/DisconnectionEvent.cpp diff --git a/src/gui/ConnectWindow.cpp b/src/gui/ConnectWindow.cpp index da801075..028ce1df 100644 --- a/src/gui/ConnectWindow.cpp +++ b/src/gui/ConnectWindow.cpp @@ -269,16 +269,30 @@ ConnectWindow::disconnect() if (!_widgets_loaded) return; + _activate_button->set_sensitive(false); + _deactivate_button->set_sensitive(false); + _progress_bar->set_fraction(0.0); - _connect_button->set_sensitive(false); - _disconnect_button->set_sensitive(false); - _connect_button->set_sensitive(true); _disconnect_button->set_sensitive(false); } void +ConnectWindow::activate() +{ + App::instance().engine()->activate(); +} + + +void +ConnectWindow::deactivate() +{ + App::instance().engine()->deactivate(); +} + + +void ConnectWindow::on_show() { if (!_widgets_loaded) { @@ -302,6 +316,8 @@ ConnectWindow::load_widgets() _xml->get_widget("connect_launch_radiobutton", _launch_radio); _xml->get_widget("connect_port_spinbutton", _port_spinbutton); _xml->get_widget("connect_internal_radiobutton", _internal_radio); + _xml->get_widget("connect_activate_button", _activate_button); + _xml->get_widget("connect_deactivate_button", _deactivate_button); _xml->get_widget("connect_disconnect_button", _disconnect_button); _xml->get_widget("connect_connect_button", _connect_button); _xml->get_widget("connect_quit_button", _quit_button); @@ -309,6 +325,8 @@ ConnectWindow::load_widgets() _server_radio->signal_toggled().connect(sigc::mem_fun(this, &ConnectWindow::server_toggled)); _launch_radio->signal_toggled().connect(sigc::mem_fun(this, &ConnectWindow::launch_toggled)); _internal_radio->signal_clicked().connect(sigc::mem_fun(this, &ConnectWindow::internal_toggled)); + _activate_button->signal_clicked().connect(sigc::mem_fun(this, &ConnectWindow::activate)); + _deactivate_button->signal_clicked().connect(sigc::mem_fun(this, &ConnectWindow::deactivate)); _disconnect_button->signal_clicked().connect(sigc::mem_fun(this, &ConnectWindow::disconnect)); _connect_button->signal_clicked().connect(sigc::bind( sigc::mem_fun(this, &ConnectWindow::connect), false)); diff --git a/src/gui/ConnectWindow.hpp b/src/gui/ConnectWindow.hpp index 0a34d8df..a435e900 100644 --- a/src/gui/ConnectWindow.hpp +++ b/src/gui/ConnectWindow.hpp @@ -66,6 +66,8 @@ private: void disconnect(); void connect(bool existing); + void activate(); + void deactivate(); void quit(); void on_show(); void on_hide(); @@ -96,6 +98,8 @@ private: Gtk::SpinButton* _port_spinbutton; Gtk::RadioButton* _launch_radio; Gtk::RadioButton* _internal_radio; + Gtk::Button* _activate_button; + Gtk::Button* _deactivate_button; Gtk::Button* _disconnect_button; Gtk::Button* _connect_button; Gtk::Button* _quit_button; diff --git a/src/gui/ingen_gui.glade b/src/gui/ingen_gui.glade index c5f03375..c5a2fb6e 100644 --- a/src/gui/ingen_gui.glade +++ b/src/gui/ingen_gui.glade @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> -<!--*- mode: xml -*--> +<?xml version="1.0"?> <glade-interface> + <!-- interface-requires gtk+ 2.16 --> + <!-- interface-naming-policy toplevel-contextual --> <widget class="GtkWindow" id="patch_win"> <property name="title" translatable="yes">Ingen</property> <property name="default_width">640</property> @@ -21,36 +21,24 @@ <widget class="GtkMenu" id="patch_file_menu_menu"> <child> <widget class="GtkImageMenuItem" id="patch_import_menuitem"> + <property name="label">_Import...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Load a patch into the current patch (merge with existing contents).</property> - <property name="label" translatable="yes">_Import...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_import_menuitem_activate"/> - <accelerator key="I" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2123"> - <property name="visible">True</property> - <property name="stock">gtk-open</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="I" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> <widget class="GtkImageMenuItem" id="patch_import_location_menuitem"> + <property name="label">Import _Location...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Import a patch from a URI</property> - <property name="label" translatable="yes">Import _Location...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_import_location1_activate"/> - <accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2124"> - <property name="visible">True</property> - <property name="stock">gtk-open</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="L" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> @@ -60,9 +48,9 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_save_menuitem"> + <property name="label">gtk-save</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Save this patch</property> - <property name="label">gtk-save</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_file_save_patch_menuitem_activate"/> @@ -70,51 +58,33 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_save_as_menuitem"> + <property name="label">Save _As...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Save this patch to a specific file name</property> - <property name="label" translatable="yes">Save _As...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_save_as_menuitem_activate"/> - <accelerator key="S" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2125"> - <property name="visible">True</property> - <property name="stock">gtk-save-as</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="S" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/> </widget> </child> <child> <widget class="GtkImageMenuItem" id="patch_upload_menuitem"> + <property name="label">_Upload...</property> <property name="visible">True</property> - <property name="label" translatable="yes">_Upload...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_upload_menuitem_activate"/> - <accelerator key="U" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2126"> - <property name="visible">True</property> - <property name="stock">gtk-network</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="U" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> <widget class="GtkImageMenuItem" id="patch_draw_menuitem"> + <property name="label">_Draw...</property> <property name="visible">True</property> - <property name="label" translatable="yes">_Draw...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_draw_menuitem_activate"/> - <accelerator key="P" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2127"> - <property name="visible">True</property> - <property name="stock">gtk-print</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="P" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> @@ -124,9 +94,9 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_close_menuitem"> + <property name="label">gtk-close</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Close this window (patch will not be destroyed)</property> - <property name="label">gtk-close</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_patch_file_close_menuitem_activate"/> @@ -139,9 +109,9 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_quit_menuitem"> + <property name="label">gtk-quit</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Quit GUI (engine may continue running)</property> - <property name="label">gtk-quit</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_patch_file_quit_nokill_menuitem_activate"/> @@ -165,7 +135,7 @@ <property name="label" translatable="yes">_Edit connections</property> <property name="use_underline">True</property> <property name="active">True</property> - <accelerator key="e" modifiers="" signal="activate"/> + <accelerator key="e" signal="activate"/> </widget> </child> <child> @@ -175,9 +145,9 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_cut_menuitem"> + <property name="label">gtk-cut</property> <property name="visible">True</property> <property name="sensitive">False</property> - <property name="label">gtk-cut</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_patch_cut_menuitem_activate"/> @@ -185,8 +155,8 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_copy_menuitem"> - <property name="visible">True</property> <property name="label">gtk-copy</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_patch_copy_menuitem_activate"/> @@ -194,9 +164,9 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_paste_menuitem"> + <property name="label">gtk-paste</property> <property name="visible">True</property> <property name="sensitive">False</property> - <property name="label">gtk-paste</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_patch_paste_menuitem_activate"/> @@ -204,24 +174,24 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_delete_menuitem"> + <property name="label">gtk-delete</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Delete the selected object(s)</property> - <property name="label">gtk-delete</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_patch_delete_menuitem_activate"/> - <accelerator key="Delete" modifiers="" signal="activate"/> + <accelerator key="Delete" signal="activate"/> </widget> </child> <child> <widget class="GtkImageMenuItem" id="patch_select_all_menuitem"> + <property name="label">gtk-select-all</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Select all objects in a patch</property> - <property name="label">gtk-select-all</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_patch_select_all_menuitem_activate"/> - <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/> + <accelerator key="A" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> @@ -231,25 +201,19 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_arrange_menuitem"> + <property name="label">Arrange</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Automatically arrange canvas</property> - <property name="label" translatable="yes">Arrange</property> <property name="use_underline">True</property> - <accelerator key="G" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2128"> - <property name="visible">True</property> - <property name="stock">gtk-sort-ascending</property> - <property name="icon_size">1</property> - </widget> - </child> + <property name="use_stock">True</property> + <accelerator key="G" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> <widget class="GtkImageMenuItem" id="patch_clear_menuitem"> + <property name="label">gtk-clear</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Remove all objects from patch</property> - <property name="label">gtk-clear</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_patch_clear_menuitem_activate"/> @@ -262,36 +226,24 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_view_control_window_menuitem"> + <property name="label">C_ontrols...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">View/Edit controls for this patch</property> - <property name="label" translatable="yes">C_ontrols...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_view_control_window_menuitem_activate"/> - <accelerator key="O" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2129"> - <property name="visible">True</property> - <property name="stock">gtk-preferences</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="O" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> <widget class="GtkImageMenuItem" id="patch_properties_menuitem"> + <property name="label">P_roperties...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">View/Edit properties for this patch</property> - <property name="label" translatable="yes">P_roperties...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_properties_menuitem_activate"/> - <accelerator key="P" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2130"> - <property name="visible">True</property> - <property name="stock">gtk-properties</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="P" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> </widget> @@ -307,12 +259,12 @@ <widget class="GtkMenu" id="patch_patch_menu_menu"> <child> <widget class="GtkImageMenuItem" id="patch_fullscreen_menuitem"> - <property name="visible">True</property> <property name="label">gtk-fullscreen</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="patch_fullscreen_menuitem"/> - <accelerator key="F11" modifiers="" signal="activate"/> + <accelerator key="F11" signal="activate"/> </widget> </child> <child> @@ -322,7 +274,7 @@ <property name="label" translatable="yes">_Human names</property> <property name="use_underline">True</property> <property name="active">True</property> - <accelerator key="H" modifiers="GDK_CONTROL_MASK" signal="activate"/> + <accelerator key="H" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> @@ -332,7 +284,7 @@ <property name="label" translatable="yes">Port _Names</property> <property name="use_underline">True</property> <property name="active">True</property> - <accelerator key="n" modifiers="GDK_CONTROL_MASK" signal="activate"/> + <accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> @@ -341,7 +293,7 @@ <property name="label" translatable="yes">_Status Bar</property> <property name="use_underline">True</property> <property name="active">True</property> - <accelerator key="b" modifiers="GDK_CONTROL_MASK" signal="activate"/> + <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> </widget> @@ -358,53 +310,35 @@ <widget class="GtkMenu" id="view1_menu"> <child> <widget class="GtkImageMenuItem" id="patch_view_engine_window_menuitem"> + <property name="label">_Engine...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Connect to, Disconnect from, or Launch Engine</property> - <property name="label" translatable="yes">_Engine...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_view_engine_window_menuitem_activate"/> - <accelerator key="E" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2132"> - <property name="visible">True</property> - <property name="stock">gtk-execute</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="E" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> <widget class="GtkImageMenuItem" id="patch_view_patch_tree_window_menuitem"> + <property name="label">_Patch Tree...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">View all patches in the engine as a heirarchial list</property> - <property name="label" translatable="yes">_Patch Tree...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_view_tree_window_menuitem_activate"/> - <accelerator key="T" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2133"> - <property name="visible">True</property> - <property name="stock">gtk-index</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="T" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> <widget class="GtkImageMenuItem" id="patch_view_messages_window_menuitem"> + <property name="label">_Messages...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">View error messages from the engine</property> - <property name="label" translatable="yes">_Messages...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_patch_view_messages_window_menuitem_activate"/> - <accelerator key="M" modifiers="GDK_CONTROL_MASK" signal="activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2134"> - <property name="visible">True</property> - <property name="stock">gtk-info</property> - <property name="icon_size">1</property> - </widget> - </child> + <accelerator key="M" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> </widget> @@ -421,30 +355,18 @@ <widget class="GtkMenu" id="help_menu_menu"> <child> <widget class="GtkImageMenuItem" id="right-click_the_canvas_to_add_objects1"> + <property name="label">Right-click the canvas to add objects</property> <property name="visible">True</property> - <property name="label" translatable="yes">Right-click the canvas to add objects</property> <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="image2135"> - <property name="visible">True</property> - <property name="stock">gtk-info</property> - <property name="icon_size">1</property> - </widget> - </child> + <property name="use_stock">True</property> </widget> </child> <child> <widget class="GtkImageMenuItem" id="help_e_to_edit_menu_item"> + <property name="label">Press 'e' to toggle edit mode</property> <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="image1"> - <property name="visible">True</property> - <property name="stock">gtk-info</property> - <property name="icon_size">1</property> - </widget> - </child> + <property name="use_stock">True</property> </widget> </child> <child> @@ -454,8 +376,8 @@ </child> <child> <widget class="GtkImageMenuItem" id="patch_help_about_menuitem"> - <property name="visible">True</property> <property name="label">gtk-about</property> + <property name="visible">True</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_about1_activate"/> @@ -469,18 +391,19 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> <widget class="GtkScrolledWindow" id="patch_win_scrolledwin"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> <child> <widget class="GtkViewport" id="patch_win_viewport"> <property name="visible">True</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="shadow_type">none</property> <child> <placeholder/> </child> @@ -507,7 +430,7 @@ <widget class="GtkWindow" id="load_plugin_win"> <property name="border_width">8</property> <property name="title" translatable="yes">Load Plugin</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="window_position">center-on-parent</property> <property name="default_width">640</property> <property name="default_height">480</property> <child> @@ -519,8 +442,8 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="border_width">2</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> <child> <widget class="GtkTreeView" id="load_plugin_plugins_treeview"> <property name="visible">True</property> @@ -531,6 +454,9 @@ </widget> </child> </widget> + <packing> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkTable" id="table16"> @@ -596,16 +522,18 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="tooltip" translatable="yes">Name of new Module</property> - <property name="invisible_char">*</property> </widget> + <packing> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkCheckButton" id="load_plugin_polyphonic_checkbutton"> + <property name="label" translatable="yes">Polyphonic</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Polyphonic</property> + <property name="receives_default">False</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> @@ -629,13 +557,13 @@ </child> <child> <widget class="GtkButton" id="load_plugin_add_button"> + <property name="label">gtk-add</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> + <property name="receives_default">False</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> @@ -652,7 +580,6 @@ <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> @@ -672,12 +599,12 @@ </child> <child> <widget class="GtkButton" id="load_plugin_clear_button"> + <property name="label">gtk-clear</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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="left_attach">2</property> @@ -701,8 +628,8 @@ <property name="border_width">8</property> <property name="title" translatable="yes">Create Subpatch</property> <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="window_position">center-on-parent</property> + <property name="type_hint">dialog</property> <child> <widget class="GtkVBox" id="vbox4"> <property name="visible">True</property> @@ -759,7 +686,6 @@ <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> </widget> <packing> @@ -770,6 +696,9 @@ </packing> </child> </widget> + <packing> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkLabel" id="new_subpatch_message_label"> @@ -786,15 +715,20 @@ <widget class="GtkHButtonBox" id="hbuttonbox5"> <property name="visible">True</property> <property name="spacing">4</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="new_subpatch_cancel_button"> + <property name="label">gtk-cancel</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="new_subpatch_ok_button"> @@ -802,7 +736,7 @@ <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="response_id">0</property> + <property name="receives_default">False</property> <child> <widget class="GtkAlignment" id="alignment2"> <property name="visible">True</property> @@ -820,6 +754,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -840,6 +775,8 @@ </child> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> @@ -853,8 +790,8 @@ </widget> <widget class="GtkFileChooserDialog" id="load_subpatch_win"> <property name="title" translatable="yes">Load Subpatch</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="window_position">center-on-parent</property> + <property name="type_hint">dialog</property> <child internal-child="vbox"> <widget class="GtkVBox" id="dialog-vbox1"> <property name="visible">True</property> @@ -894,12 +831,12 @@ </child> <child> <widget class="GtkRadioButton" id="load_subpatch_name_from_file_radio"> + <property name="label" translatable="yes">Load from file</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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> @@ -912,12 +849,12 @@ </child> <child> <widget class="GtkRadioButton" id="load_subpatch_poly_from_file_radio"> + <property name="label" translatable="yes">Load from file</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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> @@ -935,18 +872,19 @@ <property name="visible">True</property> <child> <widget class="GtkRadioButton" id="load_subpatch_poly_from_user_radio"> + <property name="label" translatable="yes">Specify: </property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</property> <property name="tooltip" translatable="yes">Specify a custom polyphony value for 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_poly_from_file_radio</property> </widget> <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -975,12 +913,12 @@ </child> <child> <widget class="GtkRadioButton" id="load_subpatch_poly_from_parent_radio"> + <property name="label" translatable="yes">Same as parent (?)</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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="draw_indicator">True</property> <property name="group">load_subpatch_poly_from_file_radio</property> </widget> @@ -1010,18 +948,19 @@ <property name="visible">True</property> <child> <widget class="GtkRadioButton" id="load_subpatch_name_from_user_radio"> + <property name="label" translatable="yes">Specify: </property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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> + <property name="position">0</property> </packing> </child> <child> @@ -1030,7 +969,6 @@ <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> @@ -1054,35 +992,45 @@ <child internal-child="action_area"> <widget class="GtkHButtonBox" id="dialog-action_area1"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="load_subpatch_cancel_button"> + <property name="label">gtk-cancel</property> + <property name="response_id">-6</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-6</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="load_subpatch_ok_button"> + <property name="label">gtk-open</property> + <property name="response_id">-5</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="label">gtk-open</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-5</property> </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="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> </widget> @@ -1090,15 +1038,14 @@ </widget> <widget class="GtkFileChooserDialog" id="load_patch_win"> <property name="title" translatable="yes">Load Patch</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="window_position">center-on-parent</property> + <property name="type_hint">dialog</property> <child internal-child="vbox"> <widget class="GtkVBox" id="vbox11"> <property name="spacing">24</property> <child> <widget class="GtkTable" id="table14"> <property name="visible">True</property> - <property name="n_rows">1</property> <property name="n_columns">4</property> <property name="column_spacing">12</property> <property name="row_spacing">4</property> @@ -1116,12 +1063,12 @@ </child> <child> <widget class="GtkRadioButton" id="load_patch_poly_from_current_radio"> + <property name="label" translatable="yes">Keep current</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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> @@ -1134,12 +1081,12 @@ </child> <child> <widget class="GtkRadioButton" id="load_patch_poly_from_file_radio"> + <property name="label" translatable="yes">Load from file</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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> @@ -1155,17 +1102,18 @@ <property name="visible">True</property> <child> <widget class="GtkRadioButton" id="load_patch_poly_from_user_radio"> + <property name="label" translatable="yes">Specify:</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Specify:</property> + <property name="receives_default">False</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="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -1199,35 +1147,45 @@ <child internal-child="action_area"> <widget class="GtkHButtonBox" id="hbuttonbox1"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="load_patch_cancel_button"> + <property name="label">gtk-cancel</property> + <property name="response_id">-6</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-6</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="load_patch_ok_button"> + <property name="label">gtk-open</property> + <property name="response_id">-5</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="label">gtk-open</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-5</property> </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="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> </widget> @@ -1241,21 +1199,6 @@ <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> - <placeholder/> - </child> - <child> <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> @@ -1276,6 +1219,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -1300,7 +1244,7 @@ <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="receives_default">False</property> <property name="draw_indicator">True</property> </widget> <packing> @@ -1312,6 +1256,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> </widget> @@ -1332,12 +1277,12 @@ <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> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">automatic</property> <child> <widget class="GtkViewport" id="viewport1"> <property name="visible">True</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="shadow_type">none</property> <child> <widget class="GtkVBox" id="control_panel_controls_box"> <property name="visible">True</property> @@ -1349,6 +1294,9 @@ </widget> </child> </widget> + <packing> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkHBox" id="control_panel_voice_controls_box"> @@ -1356,17 +1304,18 @@ <property name="homogeneous">True</property> <child> <widget class="GtkRadioButton" id="control_panel_all_voices_radio"> + <property name="label" translatable="yes">All Voices</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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> + <property name="position">0</property> </packing> </child> <child> @@ -1375,18 +1324,19 @@ <property name="spacing">5</property> <child> <widget class="GtkRadioButton" id="control_panel_specific_voice_radio"> + <property name="label" translatable="yes">Specific Voice:</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</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> + <property name="position">0</property> </packing> </child> <child> @@ -1428,7 +1378,7 @@ <child> <widget class="GtkToolbar" id="toolbar6"> <property name="visible">True</property> - <property name="toolbar_style">GTK_TOOLBAR_ICONS</property> + <property name="toolbar_style">icons</property> <child> <widget class="GtkToolItem" id="patch_view_breadcrumb_container"> <property name="visible">True</property> @@ -1438,15 +1388,17 @@ </widget> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> </widget> + <packing> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkToolbar" id="patch_view_toolbar"> <property name="visible">True</property> - <property name="toolbar_style">GTK_TOOLBAR_ICONS</property> + <property name="toolbar_style">icons</property> <property name="show_arrow">False</property> <child> <widget class="GtkToggleToolButton" id="patch_view_process_but"> @@ -1458,6 +1410,7 @@ </widget> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -1473,7 +1426,6 @@ </widget> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> @@ -1493,7 +1445,6 @@ </widget> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> @@ -1502,7 +1453,6 @@ </widget> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> @@ -1513,6 +1463,7 @@ </widget> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -1524,6 +1475,7 @@ </widget> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -1532,7 +1484,6 @@ </widget> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> @@ -1543,6 +1494,7 @@ </widget> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -1554,6 +1506,7 @@ </widget> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -1565,6 +1518,7 @@ </widget> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -1574,7 +1528,6 @@ </widget> <packing> <property name="expand">False</property> - <property name="homogeneous">False</property> </packing> </child> <child> @@ -1588,6 +1541,7 @@ </widget> <packing> <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> </widget> @@ -1600,6 +1554,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -1612,7 +1567,7 @@ <property name="has_default">True</property> <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK | GDK_PROXIMITY_IN_MASK | GDK_PROXIMITY_OUT_MASK | GDK_SUBSTRUCTURE_MASK | GDK_SCROLL_MASK</property> <property name="border_width">1</property> - <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="shadow_type">in</property> <child> <placeholder/> </child> @@ -1659,6 +1614,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -1698,6 +1654,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -1721,6 +1678,21 @@ <property name="y_padding">8</property> </packing> </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> </widget> </child> </widget> @@ -1737,9 +1709,9 @@ <widget class="GtkScrolledWindow" id="scrolledwindow2"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> <child> <widget class="GtkTextView" id="messages_textview"> <property name="visible">True</property> @@ -1748,7 +1720,7 @@ <property name="pixels_above_lines">5</property> <property name="pixels_below_lines">5</property> <property name="editable">False</property> - <property name="wrap_mode">GTK_WRAP_WORD</property> + <property name="wrap_mode">word</property> <property name="left_margin">5</property> <property name="right_margin">5</property> <property name="cursor_visible">False</property> @@ -1756,32 +1728,42 @@ </widget> </child> </widget> + <packing> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkHButtonBox" id="hbuttonbox8"> <property name="visible">True</property> <property name="spacing">6</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="messages_clear_button"> + <property name="label">gtk-clear</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-clear</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="messages_close_button"> + <property name="label">gtk-close</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label">gtk-close</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> @@ -1821,7 +1803,6 @@ <widget class="GtkEntry" id="config_path_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> </widget> <packing> <property name="left_attach">1</property> @@ -1859,45 +1840,55 @@ </widget> <packing> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> <widget class="GtkHButtonBox" id="hbuttonbox2"> <property name="visible">True</property> <property name="spacing">6</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="config_save_button"> + <property name="label">gtk-save</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</property> <property name="tooltip" translatable="yes">Save these settings for future sessions</property> - <property name="label">gtk-save</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="config_cancel_button"> + <property name="label">gtk-cancel</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> <child> <widget class="GtkButton" id="config_ok_button"> + <property name="label">gtk-ok</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">False</property> <property name="tooltip" translatable="yes">Apply these settings to this session only</property> - <property name="label">gtk-ok</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">2</property> </packing> </child> @@ -1915,7 +1906,7 @@ <property name="height_request">200</property> <property name="border_width">8</property> <property name="title" translatable="yes">Patch Description</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="window_position">center-on-parent</property> <child> <widget class="GtkVBox" id="vbox14"> <property name="visible">True</property> @@ -1940,7 +1931,6 @@ <widget class="GtkEntry" id="properties_name_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> </widget> <packing> <property name="left_attach">1</property> @@ -1951,7 +1941,6 @@ <widget class="GtkEntry" id="properties_author_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> </widget> <packing> <property name="left_attach">1</property> @@ -1974,21 +1963,22 @@ </widget> <packing> <property name="expand">False</property> + <property name="position">0</property> </packing> </child> <child> <widget class="GtkScrolledWindow" id="scrolledwindow9"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> <child> <widget class="GtkTextView" id="properties_description_textview"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="tooltip" translatable="yes">A short description of the patch to be included in the patch file</property> - <property name="wrap_mode">GTK_WRAP_WORD</property> + <property name="wrap_mode">word</property> </widget> </child> </widget> @@ -2000,28 +1990,35 @@ <widget class="GtkHButtonBox" id="hbuttonbox3"> <property name="visible">True</property> <property name="spacing">5</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="properties_cancel_button"> + <property name="label">gtk-cancel</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="properties_ok_button"> + <property name="label">gtk-ok</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> + <property name="receives_default">False</property> <property name="tooltip" translatable="yes">Apply these changes to be saved the next time the patch is saved</property> - <property name="label">gtk-ok</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> @@ -2038,7 +2035,7 @@ <widget class="GtkWindow" id="rename_win"> <property name="width_request">250</property> <property name="title" translatable="yes">Rename</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="window_position">center-on-parent</property> <child> <widget class="GtkVBox" id="vbox15"> <property name="visible">True</property> @@ -2054,13 +2051,13 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> <widget class="GtkEntry" id="rename_name_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> <property name="activates_default">True</property> </widget> <packing> @@ -2068,6 +2065,9 @@ </packing> </child> </widget> + <packing> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkLabel" id="rename_message_label"> @@ -2084,16 +2084,21 @@ <widget class="GtkHButtonBox" id="hbuttonbox4"> <property name="visible">True</property> <property name="spacing">5</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="rename_cancel_button"> + <property name="label">gtk-cancel</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="rename_ok_button"> @@ -2101,7 +2106,7 @@ <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="response_id">0</property> + <property name="receives_default">False</property> <child> <widget class="GtkAlignment" id="alignment1"> <property name="visible">True</property> @@ -2119,6 +2124,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -2139,6 +2145,8 @@ </child> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> @@ -2154,7 +2162,7 @@ <widget class="GtkWindow" id="node_properties_win"> <property name="border_width">8</property> <property name="title" translatable="yes">Node Properties - Ingen</property> - <property name="window_position">GTK_WIN_POS_MOUSE</property> + <property name="window_position">mouse</property> <child> <widget class="GtkVBox" id="vbox17"> <property name="visible">True</property> @@ -2168,6 +2176,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -2187,6 +2196,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -2204,16 +2214,17 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> <widget class="GtkCheckButton" id="node_properties_polyphonic_checkbutton"> + <property name="label" translatable="yes">Polyphonic</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Polyphonic</property> + <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="response_id">0</property> <property name="draw_indicator">True</property> </widget> <packing> @@ -2340,7 +2351,7 @@ </widget> <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="type_hint">normal</property> <property name="copyright" translatable="yes">Copyright (C) 2005-2008 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. @@ -2361,11 +2372,11 @@ Contributors: <child internal-child="vbox"> <widget class="GtkVBox" id="dialog-vbox3"> <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area3"> - </widget> + <widget class="GtkHButtonBox" id="dialog-action_area3"/> <packing> <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> </widget> @@ -2381,9 +2392,9 @@ Contributors: <property name="visible">True</property> <property name="can_focus">True</property> <property name="border_width">3</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> <child> <widget class="GtkTreeView" id="patches_treeview"> <property name="visible">True</property> @@ -2399,7 +2410,7 @@ Contributors: <property name="border_width">6</property> <property name="title" translatable="yes">Engine - Ingen</property> <property name="resizable">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="type_hint">dialog</property> <child internal-child="vbox"> <widget class="GtkVBox" id="dialog-vbox4"> <property name="visible">True</property> @@ -2415,10 +2426,11 @@ Contributors: <property name="visible">True</property> <property name="xpad">12</property> <property name="stock">gtk-disconnect</property> - <property name="icon_size">3</property> + <property name="icon-size">3</property> </widget> <packing> <property name="expand">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -2430,11 +2442,11 @@ Contributors: <widget class="GtkProgressBar" id="connect_progress_bar"> <property name="visible">True</property> <property name="pulse_step">0.10000000149</property> - <property name="text" translatable="yes"></property> </widget> <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -2456,6 +2468,7 @@ Contributors: </widget> <packing> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -2489,6 +2502,7 @@ Contributors: <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> </widget> @@ -2508,11 +2522,13 @@ Contributors: <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> + <packing> + <property name="position">0</property> + </packing> </child> </widget> <packing> @@ -2525,11 +2541,11 @@ Contributors: </child> <child> <widget class="GtkRadioButton" id="connect_server_radiobutton"> + <property name="label" translatable="yes">Connect to running server at: </property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Connect to running server at: </property> + <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="response_id">0</property> <property name="draw_indicator">True</property> </widget> <packing> @@ -2539,11 +2555,11 @@ Contributors: </child> <child> <widget class="GtkRadioButton" id="connect_launch_radiobutton"> + <property name="label" translatable="yes">Launch and connect to server on port: </property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Launch and connect to server on port: </property> + <property name="receives_default">False</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> @@ -2556,12 +2572,12 @@ Contributors: </child> <child> <widget class="GtkRadioButton" id="connect_internal_radiobutton"> + <property name="label" translatable="yes">Use internal engine</property> <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="receives_default">False</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> @@ -2591,6 +2607,52 @@ Contributors: <property name="position">2</property> </packing> </child> + <child> + <widget class="GtkHSeparator" id="hseparator1"> + <property name="visible">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + <child> + <widget class="GtkHButtonBox" id="hbuttonbox1"> + <property name="visible">True</property> + <property name="spacing">6</property> + <property name="layout_style">start</property> + <child> + <widget class="GtkButton" id="connect_deactivate_button"> + <property name="label" translatable="yes">Deactivate</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="connect_activate_button"> + <property name="label" translatable="yes">Activate</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">6</property> + <property name="position">4</property> + </packing> + </child> </widget> <packing> <property name="position">2</property> @@ -2599,42 +2661,53 @@ Contributors: <child internal-child="action_area"> <widget class="GtkHButtonBox" id="dialog-action_area4"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="connect_quit_button"> + <property name="label">gtk-quit</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-quit</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">0</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="connect_disconnect_button"> + <property name="label">gtk-disconnect</property> + <property name="response_id">-6</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-disconnect</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-6</property> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> <child> <widget class="GtkButton" id="connect_connect_button"> + <property name="label">gtk-connect</property> + <property name="response_id">-6</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="label">gtk-connect</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-6</property> </widget> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">2</property> </packing> </child> @@ -2642,7 +2715,8 @@ Contributors: <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> </widget> @@ -2652,9 +2726,10 @@ Contributors: <property name="visible">True</property> <child> <widget class="GtkImageMenuItem" id="input1"> + <property name="label">_Input</property> <property name="visible">True</property> - <property name="label" translatable="yes">_Input</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <child> <widget class="GtkMenu" id="input1_menu"> <child> @@ -2686,20 +2761,14 @@ Contributors: </child> </widget> </child> - <child internal-child="image"> - <widget class="GtkImage" id="image1886"> - <property name="visible">True</property> - <property name="stock">gtk-connect</property> - <property name="icon_size">1</property> - </widget> - </child> </widget> </child> <child> <widget class="GtkImageMenuItem" id="output1"> + <property name="label">_Output</property> <property name="visible">True</property> - <property name="label" translatable="yes">_Output</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <child> <widget class="GtkMenu" id="output1_menu"> <child> @@ -2731,68 +2800,43 @@ Contributors: </child> </widget> </child> - <child internal-child="image"> - <widget class="GtkImage" id="image1887"> - <property name="visible">True</property> - <property name="stock">gtk-connect</property> - <property name="icon_size">1</property> - </widget> - </child> </widget> </child> <child> <widget class="GtkImageMenuItem" id="canvas_menu_load_plugin"> + <property name="label">_Find Plugin...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Load a plugin as a child of this patch</property> - <property name="label" translatable="yes">_Find Plugin...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_canvas_menu_add_plugin_activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image1888"> - <property name="visible">True</property> - <property name="stock">gtk-execute</property> - <property name="icon_size">1</property> - </widget> - </child> </widget> </child> <child> <widget class="GtkImageMenuItem" id="canvas_menu_load_patch"> + <property name="label">_Load Patch...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Load a patch as a child of this patch</property> - <property name="label" translatable="yes">_Load Patch...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_canvas_menu_load_patch_activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image1889"> - <property name="visible">True</property> - <property name="stock">gtk-open</property> - <property name="icon_size">1</property> - </widget> - </child> </widget> </child> <child> <widget class="GtkImageMenuItem" id="canvas_menu_new_patch"> + <property name="label">_New Patch...</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Create a new (empty) patch as a child of this patch</property> - <property name="label" translatable="yes">_New Patch...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_canvas_menu_new_patch_activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image1890"> - <property name="visible">True</property> - <property name="stock">gtk-new</property> - <property name="icon_size">1</property> - </widget> - </child> </widget> </child> </widget> <widget class="GtkDialog" id="load_remote_patch_win"> <property name="border_width">8</property> <property name="title" translatable="yes">Load Remote Patch</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="type_hint">dialog</property> <child internal-child="vbox"> <widget class="GtkVBox" id="dialog-vbox5"> <property name="visible">True</property> @@ -2806,9 +2850,9 @@ Contributors: <property name="visible">True</property> <property name="can_focus">True</property> <property name="has_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> <child> <widget class="GtkTreeView" id="load_remote_patch_treeview"> <property name="visible">True</property> @@ -2816,6 +2860,9 @@ Contributors: </widget> </child> </widget> + <packing> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkHBox" id="hbox71"> @@ -2828,13 +2875,13 @@ Contributors: <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> <widget class="GtkEntry" id="load_remote_patch_uri_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> <property name="width_chars">78</property> </widget> <packing> @@ -2855,36 +2902,46 @@ Contributors: <child internal-child="action_area"> <widget class="GtkHButtonBox" id="dialog-action_area5"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="load_remote_patch_cancel_button"> + <property name="label">gtk-cancel</property> + <property name="response_id">-6</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-6</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="load_remote_patch_open_button"> + <property name="label">gtk-open</property> + <property name="response_id">-5</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="label">gtk-open</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-5</property> </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="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> </widget> @@ -2894,7 +2951,7 @@ Contributors: <property name="border_width">8</property> <property name="title" translatable="yes">Upload Patch</property> <property name="resizable">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="type_hint">dialog</property> <child internal-child="vbox"> <widget class="GtkVBox" id="dialog-vbox6"> <property name="visible">True</property> @@ -2913,7 +2970,6 @@ Contributors: 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> @@ -2927,7 +2983,6 @@ The first character must be one of _, a-z or A-Z and subsequenct characters can <property name="visible">True</property> <property name="can_focus">True</property> <property name="tooltip" translatable="yes">Enter a short name for this patch, e.g. "Mega Synth"</property> - <property name="invisible_char">*</property> <property name="activates_default">True</property> </widget> <packing> @@ -2999,25 +3054,32 @@ Thank you for contributing.</property> <child internal-child="action_area"> <widget class="GtkHButtonBox" id="dialog-action_area6"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="upload_patch_cancel_button"> + <property name="label">gtk-close</property> + <property name="response_id">-7</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-close</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-7</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="upload_patch_upload_button"> + <property name="response_id">-5</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="response_id">-5</property> + <property name="receives_default">False</property> <child> <widget class="GtkAlignment" id="alignment5"> <property name="visible">True</property> @@ -3035,6 +3097,7 @@ Thank you for contributing.</property> <packing> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> @@ -3055,13 +3118,16 @@ Thank you for contributing.</property> </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="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> </widget> @@ -3070,17 +3136,11 @@ Thank you for contributing.</property> <widget class="GtkMenu" id="port_control_menu"> <child> <widget class="GtkImageMenuItem" id="port_control_menu_properties"> + <property name="label">_Properties...</property> <property name="visible">True</property> - <property name="label" translatable="yes">_Properties...</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> <signal name="activate" handler="on_port_control_menu_properties_activate"/> - <child internal-child="image"> - <widget class="GtkImage" id="image2137"> - <property name="visible">True</property> - <property name="stock">gtk-properties</property> - <property name="icon_size">1</property> - </widget> - </child> </widget> </child> </widget> @@ -3088,7 +3148,7 @@ Thank you for contributing.</property> <property name="border_width">8</property> <property name="title" translatable="yes">Port Properties - Ingen</property> <property name="resizable">False</property> - <property name="window_position">GTK_WIN_POS_MOUSE</property> + <property name="window_position">mouse</property> <child> <widget class="GtkVBox" id="dialog-vbox7"> <property name="visible">True</property> @@ -3164,35 +3224,43 @@ Thank you for contributing.</property> <child> <widget class="GtkHButtonBox" id="dialog-action_area7"> <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> + <property name="layout_style">end</property> <child> <widget class="GtkButton" id="port_properties_cancel_button"> + <property name="label">gtk-cancel</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> - <property name="label">gtk-cancel</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-6</property> </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> <child> <widget class="GtkButton" id="port_properties_ok_button"> + <property name="label">gtk-ok</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="has_default">True</property> - <property name="label">gtk-ok</property> + <property name="receives_default">False</property> <property name="use_stock">True</property> - <property name="response_id">-5</property> </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="pack_type">GTK_PACK_END</property> + <property name="pack_type">end</property> + <property name="position">0</property> </packing> </child> </widget> @@ -3212,40 +3280,30 @@ Thank you for contributing.</property> </child> <child> <widget class="GtkImageMenuItem" id="object_disconnect_menuitem"> + <property name="label">Dis_connect</property> <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="tooltip" translatable="yes">Disconnect all connections</property> - <property name="label" translatable="yes">Dis_connect</property> <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="menu-item-image24"> - <property name="stock">gtk-disconnect</property> - </widget> - </child> + <property name="use_stock">True</property> </widget> </child> <child> <widget class="GtkImageMenuItem" id="object_rename_menuitem"> + <property name="label">_Rename...</property> <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="tooltip" translatable="yes">Rename this object</property> - <property name="label" translatable="yes">_Rename...</property> <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="menu-item-image20"> - <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="stock">gtk-find-and-replace</property> - </widget> - </child> + <property name="use_stock">True</property> </widget> </child> <child> <widget class="GtkImageMenuItem" id="object_destroy_menuitem"> + <property name="label">gtk-delete</property> <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="tooltip" translatable="yes">Destroy this object</property> - <property name="label" translatable="yes">gtk-delete</property> <property name="use_underline">True</property> <property name="use_stock">True</property> </widget> @@ -3257,10 +3315,10 @@ Thank you for contributing.</property> </child> <child> <widget class="GtkImageMenuItem" id="object_properties_menuitem"> + <property name="label">gtk-properties</property> <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="tooltip" translatable="yes">View and edit properties</property> - <property name="label" translatable="yes">gtk-properties</property> <property name="use_underline">True</property> <property name="use_stock">True</property> </widget> @@ -3271,46 +3329,32 @@ Thank you for contributing.</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="GtkImageMenuItem" id="node_learn_menuitem"> + <property name="label">_Learn</property> <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="tooltip" translatable="yes">Learn from the next received event</property> - <property name="label" translatable="yes">_Learn</property> <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="menu-item-image25"> - <property name="stock">gtk-media-record</property> - </widget> - </child> + <property name="use_stock">True</property> </widget> </child> <child> <widget class="GtkImageMenuItem" id="node_controls_menuitem"> + <property name="label">Con_trols...</property> <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="tooltip" translatable="yes">Manipulate controls in a separate window</property> - <property name="label" translatable="yes">Con_trols...</property> <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="menu-item-image21"> - <property name="stock">gtk-edit</property> - </widget> - </child> + <property name="use_stock">True</property> </widget> </child> <child> <widget class="GtkImageMenuItem" id="node_popup_gui_menuitem"> + <property name="label">_GUI...</property> <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="tooltip" translatable="yes">Show this node's custom graphical interface in a separate window</property> - <property name="label" translatable="yes">_GUI...</property> <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="menu-item-image22"> - <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="stock">gtk-edit</property> - </widget> - </child> + <property name="use_stock">True</property> </widget> </child> <child> @@ -3324,15 +3368,11 @@ Thank you for contributing.</property> </child> <child> <widget class="GtkImageMenuItem" id="node_randomize_menuitem"> + <property name="label">R_andomize</property> <property name="visible">True</property> <property name="tooltip" translatable="yes">Set all controls on this node to random values</property> - <property name="label" translatable="yes">R_andomize</property> <property name="use_underline">True</property> - <child internal-child="image"> - <widget class="GtkImage" id="menu-item-image23"> - <property name="stock">gtk-dialog-warning</property> - </widget> - </child> + <property name="use_stock">True</property> </widget> </child> </widget> |