diff options
author | David Robillard <d@drobilla.net> | 2013-02-02 02:16:23 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2013-02-02 02:16:23 +0000 |
commit | d049b582e1db60ee0f6fd02a40202145488c7288 (patch) | |
tree | 4b30ba2522a14863ce76f672f537dcca0c14c34e | |
parent | 73a01c1bd8d6cf92522a433cd2b0bd491f2af99a (diff) | |
download | ingen-d049b582e1db60ee0f6fd02a40202145488c7288.tar.gz ingen-d049b582e1db60ee0f6fd02a40202145488c7288.tar.bz2 ingen-d049b582e1db60ee0f6fd02a40202145488c7288.zip |
Add option to enable/disable canvas animation (fix/avoid #879).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5016 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r-- | src/Configuration.cpp | 6 | ||||
-rw-r--r-- | src/World.cpp | 5 | ||||
-rw-r--r-- | src/client/ClientStore.cpp | 5 | ||||
-rw-r--r-- | src/gui/GraphBox.cpp | 12 | ||||
-rw-r--r-- | src/gui/GraphBox.hpp | 2 | ||||
-rw-r--r-- | src/gui/PropertiesWindow.cpp | 3 | ||||
-rw-r--r-- | src/gui/ingen_gui.ui | 1346 | ||||
-rw-r--r-- | src/server/Broadcaster.cpp | 18 | ||||
-rw-r--r-- | src/server/Broadcaster.hpp | 21 | ||||
-rw-r--r-- | src/server/Context.cpp | 6 | ||||
-rw-r--r-- | src/server/Context.hpp | 8 | ||||
-rw-r--r-- | src/server/DuplexPort.cpp | 5 | ||||
-rw-r--r-- | src/server/InputPort.cpp | 12 | ||||
-rw-r--r-- | src/server/OutputPort.cpp | 5 | ||||
-rw-r--r-- | src/server/PortImpl.cpp | 37 | ||||
-rw-r--r-- | src/server/PortImpl.hpp | 18 | ||||
-rw-r--r-- | src/server/events/Delta.cpp | 12 | ||||
-rw-r--r-- | src/server/internals/Controller.cpp | 2 | ||||
-rw-r--r-- | src/server/internals/Trigger.cpp | 2 |
19 files changed, 852 insertions, 673 deletions
diff --git a/src/Configuration.cpp b/src/Configuration.cpp index 2776d560..25f3355c 100644 --- a/src/Configuration.cpp +++ b/src/Configuration.cpp @@ -38,9 +38,9 @@ Configuration::Configuration(Forge& forge) , _desc( "Ingen is a flexible modular system that be used in various ways.\n" "The engine can run as a stand-alone server controlled via network protocol,\n" -"or internal to another process (e.g. the GUI). The GUI, or other\n" -"clients, can communicate with the engine via any supported protocol, or host the\n" -"engine in the same process. Many clients can connect to an engine at once.\n\n" +"or internal to another process (e.g. the GUI). The GUI, or other clients,\n" +"can communicate with the engine via any supported protocol, or run in the\n" +"same process. Many clients can connect to an engine at once.\n\n" "Examples:\n" " ingen -e # Run an engine, listen for connections\n" " ingen -g # Run a GUI, connect to running engine\n" diff --git a/src/World.cpp b/src/World.cpp index 218da83c..27e056b6 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -40,7 +40,10 @@ class EngineBase; class Interface; class Store; -namespace Serialisation { class Parser; class Serialiser; } +namespace Serialisation { +class Parser; +class Serialiser; +} /** Load a dynamic module from the default path. * diff --git a/src/client/ClientStore.cpp b/src/client/ClientStore.cpp index 8c48ab72..4e4dd7d8 100644 --- a/src/client/ClientStore.cpp +++ b/src/client/ClientStore.cpp @@ -323,6 +323,11 @@ ClientStore::delta(const Raul::URI& uri, std::cerr << "}" << endl; #endif + if (uri == Raul::URI("ingen:/clients/this")) { + // Client property, which we don't store (yet?) + return; + } + if (!Node::uri_is_path(uri)) { _log.error(Raul::fmt("Delta for unknown subject <%1%>\n") % uri.c_str()); diff --git a/src/gui/GraphBox.cpp b/src/gui/GraphBox.cpp index 84116196..c280ba64 100644 --- a/src/gui/GraphBox.cpp +++ b/src/gui/GraphBox.cpp @@ -87,6 +87,7 @@ GraphBox::GraphBox(BaseObjectType* cobject, xml->get_widget("graph_view_engine_window_menuitem", _menu_view_engine_window); xml->get_widget("graph_properties_menuitem", _menu_view_graph_properties); xml->get_widget("graph_fullscreen_menuitem", _menu_fullscreen); + xml->get_widget("graph_animate_canvas_menuitem", _menu_animate_canvas); xml->get_widget("graph_human_names_menuitem", _menu_human_names); xml->get_widget("graph_show_port_names_menuitem", _menu_show_port_names); xml->get_widget("graph_zoom_in_menuitem", _menu_zoom_in); @@ -124,6 +125,8 @@ GraphBox::GraphBox(BaseObjectType* cobject, sigc::mem_fun(this, &GraphBox::event_quit)); _menu_fullscreen->signal_activate().connect( sigc::mem_fun(this, &GraphBox::event_fullscreen_toggled)); + _menu_animate_canvas->signal_activate().connect( + sigc::mem_fun(this, &GraphBox::event_animate_canvas_toggled)); _menu_human_names->signal_activate().connect( sigc::mem_fun(this, &GraphBox::event_human_names_toggled)); _menu_show_doc_pane->signal_activate().connect( @@ -693,6 +696,15 @@ GraphBox::event_status_bar_toggled() } void +GraphBox::event_animate_canvas_toggled() +{ + _app->interface()->set_property( + Raul::URI("ingen:/clients/this"), + _app->uris().ingen_broadcast, + _app->forge().make((bool)_menu_animate_canvas->get_active())); +} + +void GraphBox::event_human_names_toggled() { _view->canvas()->show_human_names(_menu_human_names->get_active()); diff --git a/src/gui/GraphBox.hpp b/src/gui/GraphBox.hpp index 663a3c14..0b44ba99 100644 --- a/src/gui/GraphBox.hpp +++ b/src/gui/GraphBox.hpp @@ -114,6 +114,7 @@ private: void event_fullscreen_toggled(); void event_doc_pane_toggled(); void event_status_bar_toggled(); + void event_animate_canvas_toggled(); void event_human_names_toggled(); void event_port_names_toggled(); void event_zoom_in(); @@ -144,6 +145,7 @@ private: Gtk::MenuItem* _menu_select_all; Gtk::MenuItem* _menu_close; Gtk::MenuItem* _menu_quit; + Gtk::CheckMenuItem* _menu_animate_canvas; Gtk::CheckMenuItem* _menu_human_names; Gtk::CheckMenuItem* _menu_show_port_names; Gtk::CheckMenuItem* _menu_show_doc_pane; diff --git a/src/gui/PropertiesWindow.cpp b/src/gui/PropertiesWindow.cpp index 0f21a4fb..50fb0903 100644 --- a/src/gui/PropertiesWindow.cpp +++ b/src/gui/PropertiesWindow.cpp @@ -301,7 +301,8 @@ PropertiesWindow::on_show() } void -PropertiesWindow::property_changed(const Raul::URI& predicate, const Raul::Atom& value) +PropertiesWindow::property_changed(const Raul::URI& predicate, + const Raul::Atom& value) { Records::iterator r = _records.find(predicate); if (r == _records.end()) { diff --git a/src/gui/ingen_gui.ui b/src/gui/ingen_gui.ui index 8d999d57..5fb523bf 100644 --- a/src/gui/ingen_gui.ui +++ b/src/gui/ingen_gui.ui @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <interface> <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy toplevel-contextual --> <object class="GtkAboutDialog" id="about_win"> <property name="can_focus">False</property> <property name="destroy_with_parent">True</property> @@ -25,10 +26,10 @@ Contributors: Thorsten Wilms</property> <property name="wrap_license">True</property> <child internal-child="vbox"> - <object class="GtkBox" id="dialog-vbox3"> + <object class="GtkVBox" id="dialog-vbox3"> <property name="can_focus">False</property> <child internal-child="action_area"> - <object class="GtkButtonBox" id="dialog-action_area3"> + <object class="GtkHButtonBox" id="dialog-action_area3"> <property name="can_focus">False</property> </object> <packing> @@ -46,9 +47,9 @@ Contributors: <property name="can_focus">False</property> <child> <object class="GtkCheckMenuItem" id="canvas_menu_edit"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Edit</property> <property name="use_underline">True</property> <property name="active">True</property> @@ -63,9 +64,9 @@ Contributors: <child> <object class="GtkImageMenuItem" id="input1"> <property name="label">_Input</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">False</property> <child type="submenu"> @@ -73,9 +74,9 @@ Contributors: <property name="can_focus">False</property> <child> <object class="GtkMenuItem" id="canvas_menu_add_audio_input"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Audio</property> <property name="use_underline">True</property> <signal name="activate" handler="on_canvas_menu_add_audio_input_activate" swapped="no"/> @@ -83,9 +84,9 @@ Contributors: </child> <child> <object class="GtkMenuItem" id="canvas_menu_add_cv_input"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">C_V</property> <property name="use_underline">True</property> <signal name="activate" handler="on_canvas_menu_add_cv_input_activate" swapped="no"/> @@ -93,9 +94,9 @@ Contributors: </child> <child> <object class="GtkMenuItem" id="canvas_menu_add_control_input"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Control</property> <property name="use_underline">True</property> <signal name="activate" handler="on_canvas_menu_add_control_input_activate" swapped="no"/> @@ -103,9 +104,9 @@ Contributors: </child> <child> <object class="GtkMenuItem" id="canvas_menu_add_event_input"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Event</property> <property name="use_underline">True</property> <signal name="activate" handler="on_canvas_menu_add_event_input_activate" swapped="no"/> @@ -118,9 +119,9 @@ Contributors: <child> <object class="GtkImageMenuItem" id="output1"> <property name="label">_Output</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">False</property> <child type="submenu"> @@ -128,9 +129,9 @@ Contributors: <property name="can_focus">False</property> <child> <object class="GtkMenuItem" id="canvas_menu_add_audio_output"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Audio</property> <property name="use_underline">True</property> <signal name="activate" handler="on_canvas_menu_add_audio_output_activate" swapped="no"/> @@ -138,9 +139,9 @@ Contributors: </child> <child> <object class="GtkMenuItem" id="canvas_menu_add_cv_output"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">C_V</property> <property name="use_underline">True</property> <signal name="activate" handler="on_canvas_menu_add_cv_output_activate" swapped="no"/> @@ -148,9 +149,9 @@ Contributors: </child> <child> <object class="GtkMenuItem" id="canvas_menu_add_control_output"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Control</property> <property name="use_underline">True</property> <signal name="activate" handler="on_canvas_menu_add_control_output_activate" swapped="no"/> @@ -158,9 +159,9 @@ Contributors: </child> <child> <object class="GtkMenuItem" id="canvas_menu_add_event_output"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Event</property> <property name="use_underline">True</property> <signal name="activate" handler="on_canvas_menu_add_event_output_activate" swapped="no"/> @@ -173,9 +174,9 @@ Contributors: <child> <object class="GtkImageMenuItem" id="canvas_menu_load_plugin"> <property name="label">_Find Plugin...</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">False</property> <signal name="activate" handler="on_canvas_menu_add_plugin_activate" swapped="no"/> @@ -184,9 +185,9 @@ Contributors: <child> <object class="GtkImageMenuItem" id="canvas_menu_load_graph"> <property name="label">_Load Graph...</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">False</property> <signal name="activate" handler="on_canvas_menu_load_graph_activate" swapped="no"/> @@ -195,9 +196,9 @@ Contributors: <child> <object class="GtkImageMenuItem" id="canvas_menu_new_graph"> <property name="label">_New Graph...</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">False</property> <signal name="activate" handler="on_canvas_menu_new_graph_activate" swapped="no"/> @@ -212,9 +213,9 @@ Contributors: <child> <object class="GtkImageMenuItem" id="canvas_menu_properties"> <property name="label">P_roperties...</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">False</property> <signal name="activate" handler="on_canvas_menu_properties_activate" swapped="no"/> @@ -245,18 +246,22 @@ Contributors: </object> <packing> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> <object class="GtkEntry" id="config_path_entry"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -272,7 +277,7 @@ Contributors: <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -285,7 +290,7 @@ Contributors: <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> </object> @@ -304,10 +309,10 @@ Contributors: <child> <object class="GtkButton" id="config_save_button"> <property name="label">gtk-save</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -319,10 +324,10 @@ Contributors: <child> <object class="GtkButton" id="config_cancel_button"> <property name="label">gtk-cancel</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -334,10 +339,10 @@ Contributors: <child> <object class="GtkButton" id="config_ok_button"> <property name="label">gtk-ok</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -363,23 +368,23 @@ Contributors: <property name="resizable">False</property> <property name="type_hint">dialog</property> <child internal-child="vbox"> - <object class="GtkBox" id="dialog-vbox4"> + <object class="GtkVBox" id="dialog-vbox4"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">6</property> <child internal-child="action_area"> - <object class="GtkButtonBox" id="dialog-action_area4"> + <object class="GtkHButtonBox" id="dialog-action_area4"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="layout_style">end</property> <child> <object class="GtkButton" id="connect_quit_button"> <property name="label">gtk-quit</property> + <property name="use_action_appearance">False</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="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -391,12 +396,12 @@ Contributors: <child> <object class="GtkButton" id="connect_disconnect_button"> <property name="label">gtk-disconnect</property> + <property name="use_action_appearance">False</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="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -408,12 +413,12 @@ Contributors: <child> <object class="GtkButton" id="connect_connect_button"> <property name="label">gtk-connect</property> + <property name="use_action_appearance">False</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="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -525,6 +530,10 @@ Contributors: <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> <property name="climb_rate">1</property> <property name="numeric">True</property> </object> @@ -555,6 +564,10 @@ Contributors: <property name="activates_default">True</property> <property name="width_chars">28</property> <property name="text" translatable="yes">unix:///tmp/ingen.sock</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="expand">True</property> @@ -574,25 +587,25 @@ Contributors: <child> <object class="GtkRadioButton" id="connect_server_radiobutton"> <property name="label" translatable="yes">_Connect to running server at: </property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> </object> <packing> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> <object class="GtkRadioButton" id="connect_launch_radiobutton"> <property name="label" translatable="yes">_Launch and connect to server on port: </property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> <property name="group">connect_server_radiobutton</property> @@ -601,17 +614,17 @@ Contributors: <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> <object class="GtkRadioButton" id="connect_internal_radiobutton"> <property name="label" translatable="yes">Use _internal engine</property> + <property name="use_action_appearance">False</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="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> <property name="group">connect_server_radiobutton</property> @@ -620,7 +633,7 @@ Contributors: <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -635,7 +648,7 @@ Contributors: <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> </object> @@ -665,10 +678,10 @@ Contributors: <child> <object class="GtkButton" id="connect_deactivate_button"> <property name="label" translatable="yes">D_eactivate</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> </object> <packing> @@ -680,10 +693,10 @@ Contributors: <child> <object class="GtkButton" id="connect_activate_button"> <property name="label" translatable="yes">_Activate</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> </object> <packing> @@ -715,28 +728,577 @@ Contributors: <action-widget response="-6">connect_connect_button</action-widget> </action-widgets> </object> + <object class="GtkWindow" id="graph_tree_win"> + <property name="width_request">320</property> + <property name="height_request">340</property> + <property name="can_focus">False</property> + <property name="border_width">8</property> + <property name="title" translatable="yes">Graphs - Ingen</property> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow8"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">3</property> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="graphs_treeview"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="rules_hint">True</property> + </object> + </child> + </object> + </child> + </object> + <object class="GtkWindow" id="graph_win"> + <property name="can_focus">False</property> + <property name="title" translatable="yes">Ingen</property> + <property name="default_width">776</property> + <property name="default_height">480</property> + <child> + <object class="GtkVBox" id="graph_win_vbox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkMenuBar" id="menubar"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkMenuItem" id="graph_file_menu"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_File</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="graph_file_menu_menu"> + <property name="can_focus">False</property> + <child> + <object class="GtkImageMenuItem" id="graph_import_menuitem"> + <property name="label">_Import...</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + <accelerator key="I" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_import_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separator9"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_save_menuitem"> + <property name="label">gtk-save</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="S" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_file_save_graph_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_save_as_menuitem"> + <property name="label">Save _As...</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + <accelerator key="S" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_save_as_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_draw_menuitem"> + <property name="label">_Draw...</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + <accelerator key="R" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_draw_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separator11"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_close_menuitem"> + <property name="label">gtk-close</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <signal name="activate" handler="on_graph_file_close_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separator6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_quit_menuitem"> + <property name="label">gtk-quit</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <signal name="activate" handler="on_graph_file_quit_nokill_menuitem_activate" swapped="no"/> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkMenuItem" id="edit2"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Edit</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="edit2_menu"> + <property name="can_focus">False</property> + <child> + <object class="GtkSeparatorMenuItem" id="menuitem4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_cut_menuitem"> + <property name="label">gtk-cut</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <signal name="activate" handler="on_graph_cut_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_copy_menuitem"> + <property name="label">gtk-copy</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="C" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_copy_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_paste_menuitem"> + <property name="label">gtk-paste</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="V" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_paste_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_delete_menuitem"> + <property name="label">gtk-delete</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="Delete" signal="activate"/> + <signal name="activate" handler="on_graph_delete_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_select_all_menuitem"> + <property name="label">gtk-select-all</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="A" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_select_all_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="menuitem1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_arrange_menuitem"> + <property name="label">Arrange</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + <accelerator key="G" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="menuitem2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_view_control_window_menuitem"> + <property name="label">C_ontrols...</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + <accelerator key="O" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_view_control_window_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_properties_menuitem"> + <property name="label">gtk-properties</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="P" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_properties_menuitem_activate" swapped="no"/> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkMenuItem" id="graph_graph_menu"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_View</property> + <property name="use_underline">True</property> + <child type="submenu"> + <object class="GtkMenu" id="graph_graph_menu_menu"> + <property name="can_focus">False</property> + <child> + <object class="GtkCheckMenuItem" id="graph_animate_canvas_menuitem"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Update control ports as values change.</property> + <property name="label" translatable="yes">_Animate Canvas</property> + <property name="use_underline">True</property> + <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="menuitem5"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkCheckMenuItem" id="graph_human_names_menuitem"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Human names</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <accelerator key="H" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkCheckMenuItem" id="graph_show_port_names_menuitem"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Port _Names</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkCheckMenuItem" id="graph_doc_pane_menuitem"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Documentation Pane</property> + <property name="use_underline">True</property> + <accelerator key="D" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkCheckMenuItem" id="graph_status_bar_menuitem"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Status Bar</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="<separator>"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_zoom_in_menuitem"> + <property name="label">gtk-zoom-in</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="equal" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_zoom_out_menuitem"> + <property name="label">gtk-zoom-out</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="minus" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_zoom_normal_menuitem"> + <property name="label">gtk-zoom-100</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="0" signal="activate" modifiers="GDK_CONTROL_MASK"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="menuitem3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_fullscreen_menuitem"> + <property name="label">gtk-fullscreen</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <accelerator key="F11" signal="activate"/> + <signal name="activate" handler="graph_fullscreen_menuitem" swapped="no"/> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkMenuItem" id="view1"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Windows</property> + <property name="use_underline">True</property> + <signal name="activate" handler="on_view1_activate" swapped="no"/> + <child type="submenu"> + <object class="GtkMenu" id="view1_menu"> + <property name="can_focus">False</property> + <child> + <object class="GtkImageMenuItem" id="graph_view_engine_window_menuitem"> + <property name="label">_Engine</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + <accelerator key="E" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_view_engine_window_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_view_graph_tree_window_menuitem"> + <property name="label">_Graph Tree</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + <accelerator key="T" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_view_tree_window_menuitem_activate" swapped="no"/> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_view_messages_window_menuitem"> + <property name="label">_Messages</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + <accelerator key="M" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <signal name="activate" handler="on_graph_view_messages_window_menuitem_activate" swapped="no"/> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GtkMenuItem" id="help_menu"> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Help</property> + <property name="use_underline">True</property> + <signal name="activate" handler="on_help_menu_activate" swapped="no"/> + <child type="submenu"> + <object class="GtkMenu" id="help_menu_menu"> + <property name="can_focus">False</property> + <child> + <object class="GtkImageMenuItem" id="right-click_the_canvas_to_add_objects1"> + <property name="label">Right-click the canvas to add objects</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separator13"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="graph_help_about_menuitem"> + <property name="label">gtk-about</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="use_stock">True</property> + <signal name="activate" handler="on_about1_activate" swapped="no"/> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHPaned" id="graph_documentation_paned"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkAlignment" id="graph_win_alignment"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="resize">True</property> + <property name="shrink">False</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="graph_documentation_scrolledwindow"> + <property name="can_focus">False</property> + <property name="shadow_type">in</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="resize">False</property> + <property name="shrink">True</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkStatusbar" id="graph_win_status_bar"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">2</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + </child> + </object> <object class="GtkFileChooserDialog" id="load_graph_win"> <property name="can_focus">False</property> <property name="title" translatable="yes">Load Graph - Ingen</property> <property name="window_position">center-on-parent</property> <property name="type_hint">dialog</property> <child internal-child="vbox"> - <object class="GtkBox" id="vbox11"> + <object class="GtkVBox" id="vbox11"> <property name="can_focus">False</property> <property name="spacing">24</property> <child internal-child="action_area"> - <object class="GtkButtonBox" id="hbuttonbox3"> + <object class="GtkHButtonBox" id="hbuttonbox3"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="layout_style">end</property> <child> <object class="GtkButton" id="load_graph_cancel_button"> <property name="label">gtk-cancel</property> + <property name="use_action_appearance">False</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="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -748,12 +1310,12 @@ Contributors: <child> <object class="GtkButton" id="load_graph_ok_button"> <property name="label">gtk-open</property> + <property name="use_action_appearance">False</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="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -796,17 +1358,17 @@ Contributors: <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> <object class="GtkRadioButton" id="load_graph_poly_from_file_radio"> <property name="label" translatable="yes">Load from _File</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="has_tooltip">True</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> <property name="group">load_graph_poly_voices_radio</property> @@ -817,7 +1379,7 @@ Contributors: <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -837,11 +1399,11 @@ Contributors: <child> <object class="GtkRadioButton" id="load_graph_insert_ports_radio"> <property name="label" translatable="yes">_Insert new ports</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="has_tooltip">True</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> <property name="group">load_graph_merge_ports_radio</property> @@ -857,11 +1419,11 @@ Contributors: <child> <object class="GtkRadioButton" id="load_graph_merge_ports_radio"> <property name="label" translatable="yes">_Merge with existing ports</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="has_tooltip">True</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="active">True</property> <property name="draw_indicator">True</property> @@ -882,11 +1444,11 @@ Contributors: <child> <object class="GtkRadioButton" id="load_graph_poly_voices_radio"> <property name="label" translatable="yes">_Voices:</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="has_tooltip">True</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="active">True</property> <property name="draw_indicator">True</property> @@ -902,6 +1464,10 @@ Contributors: <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">●</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> <property name="climb_rate">1</property> </object> <packing> @@ -932,7 +1498,7 @@ Contributors: </object> <packing> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -941,6 +1507,10 @@ Contributors: <property name="can_focus">True</property> <property name="invisible_char">●</property> <property name="activates_default">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="left_attach">1</property> @@ -1018,7 +1588,7 @@ Contributors: <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -1069,6 +1639,10 @@ Contributors: <object class="GtkEntry" id="load_plugin_name_entry"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="expand">True</property> @@ -1079,10 +1653,10 @@ Contributors: <child> <object class="GtkCheckButton" id="load_plugin_polyphonic_checkbutton"> <property name="label" translatable="yes">_Polyphonic</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="active">True</property> <property name="draw_indicator">True</property> @@ -1110,6 +1684,10 @@ Contributors: <property name="can_focus">True</property> <property name="has_focus">True</property> <property name="secondary_icon_stock">gtk-clear</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="left_attach">1</property> @@ -1124,7 +1702,7 @@ Contributors: </object> <packing> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -1135,10 +1713,10 @@ Contributors: <child> <object class="GtkButton" id="load_plugin_close_button"> <property name="label">gtk-close</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -1150,10 +1728,10 @@ Contributors: <child> <object class="GtkButton" id="load_plugin_add_button"> <property name="label">gtk-add</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -1228,12 +1806,12 @@ Contributors: <child> <object class="GtkButton" id="messages_clear_button"> <property name="label">gtk-clear</property> + <property name="use_action_appearance">False</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="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -1245,10 +1823,10 @@ Contributors: <child> <object class="GtkButton" id="messages_close_button"> <property name="label">gtk-close</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -1323,6 +1901,10 @@ Contributors: <property name="can_focus">True</property> <property name="invisible_char">●</property> <property name="activates_default">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> <property name="climb_rate">1</property> </object> <packing> @@ -1331,7 +1913,7 @@ Contributors: <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> <property name="y_padding">4</property> </packing> </child> @@ -1341,11 +1923,15 @@ Contributors: <property name="can_focus">True</property> <property name="invisible_char">●</property> <property name="activates_default">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="y_options"></property> + <property name="y_options"/> <property name="y_padding">4</property> </packing> </child> @@ -1377,10 +1963,10 @@ Contributors: <child> <object class="GtkButton" id="new_subgraph_cancel_button"> <property name="label">gtk-cancel</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -1392,12 +1978,12 @@ Contributors: <child> <object class="GtkButton" id="new_subgraph_ok_button"> <property name="label">gtk-ok</property> + <property name="use_action_appearance">False</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="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -1422,28 +2008,28 @@ Contributors: <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <child> <object class="GtkCheckMenuItem" id="object_polyphonic_menuitem"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">P_olyphonic</property> <property name="use_underline">True</property> </object> </child> <child> <object class="GtkMenuItem" id="object_learn_menuitem"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Learn</property> <property name="use_underline">True</property> </object> </child> <child> <object class="GtkMenuItem" id="object_unlearn_menuitem"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">_Unlearn</property> <property name="use_underline">True</property> </object> @@ -1451,10 +2037,10 @@ Contributors: <child> <object class="GtkImageMenuItem" id="object_disconnect_menuitem"> <property name="label">Dis_connect</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">False</property> </object> @@ -1462,10 +2048,10 @@ Contributors: <child> <object class="GtkImageMenuItem" id="object_rename_menuitem"> <property name="label">_Rename...</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">False</property> </object> @@ -1473,10 +2059,10 @@ Contributors: <child> <object class="GtkImageMenuItem" id="object_destroy_menuitem"> <property name="label">gtk-delete</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> </object> @@ -1484,10 +2070,10 @@ Contributors: <child> <object class="GtkImageMenuItem" id="object_properties_menuitem"> <property name="label">gtk-properties</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> </object> @@ -1495,598 +2081,66 @@ Contributors: <child> <object class="GtkImageMenuItem" id="node_popup_gui_menuitem"> <property name="label" translatable="yes">Show GUI...</property> + <property name="use_action_appearance">False</property> <property name="can_focus">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="use_action_appearance">False</property> <property name="use_stock">False</property> </object> </child> <child> <object class="GtkCheckMenuItem" id="node_embed_gui_menuitem"> + <property name="use_action_appearance">False</property> <property name="can_focus">False</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="use_action_appearance">False</property> <property name="label" translatable="yes">Embed GUI</property> </object> </child> <child> <object class="GtkImageMenuItem" id="node_randomize_menuitem"> <property name="label" translatable="yes">Randomize</property> - <property name="can_focus">False</property> <property name="use_action_appearance">False</property> + <property name="can_focus">False</property> <property name="use_stock">False</property> </object> </child> <child> <object class="GtkMenuItem" id="port_set_min_menuitem"> - <property name="can_focus">False</property> <property name="use_action_appearance">False</property> + <property name="can_focus">False</property> <property name="label" translatable="yes">Set Minimum</property> </object> </child> <child> <object class="GtkMenuItem" id="port_set_max_menuitem"> - <property name="can_focus">False</property> <property name="use_action_appearance">False</property> + <property name="can_focus">False</property> <property name="label" translatable="yes">Set Maximum</property> </object> </child> <child> <object class="GtkMenuItem" id="port_reset_range_menuitem"> - <property name="can_focus">False</property> <property name="use_action_appearance">False</property> + <property name="can_focus">False</property> <property name="label" translatable="yes">Reset Range</property> </object> </child> <child> <object class="GtkMenuItem" id="port_expose_menuitem"> - <property name="can_focus">False</property> <property name="use_action_appearance">False</property> + <property name="can_focus">False</property> <property name="label" translatable="yes">_Expose</property> <property name="use_underline">True</property> </object> </child> </object> - <object class="GtkWindow" id="graph_tree_win"> - <property name="width_request">320</property> - <property name="height_request">340</property> - <property name="can_focus">False</property> - <property name="border_width">8</property> - <property name="title" translatable="yes">Graphs - Ingen</property> - <child> - <object class="GtkScrolledWindow" id="scrolledwindow8"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="border_width">3</property> - <property name="shadow_type">in</property> - <child> - <object class="GtkTreeView" id="graphs_treeview"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="rules_hint">True</property> - </object> - </child> - </object> - </child> - </object> - <object class="GtkWindow" id="graph_win"> - <property name="can_focus">False</property> - <property name="title" translatable="yes">Ingen</property> - <property name="default_width">776</property> - <property name="default_height">480</property> - <child> - <object class="GtkVBox" id="graph_win_vbox"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkMenuBar" id="menubar"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkMenuItem" id="graph_file_menu"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_File</property> - <property name="use_underline">True</property> - <child type="submenu"> - <object class="GtkMenu" id="graph_file_menu_menu"> - <property name="can_focus">False</property> - <child> - <object class="GtkImageMenuItem" id="graph_import_menuitem"> - <property name="label">_Import...</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - <accelerator key="I" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_import_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="separator9"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_save_menuitem"> - <property name="label">gtk-save</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="S" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_file_save_graph_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_save_as_menuitem"> - <property name="label">Save _As...</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - <accelerator key="S" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_save_as_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_draw_menuitem"> - <property name="label">_Draw...</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - <accelerator key="R" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_draw_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="separator11"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_close_menuitem"> - <property name="label">gtk-close</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <signal name="activate" handler="on_graph_file_close_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="separator6"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_quit_menuitem"> - <property name="label">gtk-quit</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <signal name="activate" handler="on_graph_file_quit_nokill_menuitem_activate" swapped="no"/> - </object> - </child> - </object> - </child> - </object> - </child> - <child> - <object class="GtkMenuItem" id="edit2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_Edit</property> - <property name="use_underline">True</property> - <child type="submenu"> - <object class="GtkMenu" id="edit2_menu"> - <property name="can_focus">False</property> - <child> - <object class="GtkSeparatorMenuItem" id="menuitem4"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_cut_menuitem"> - <property name="label">gtk-cut</property> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <signal name="activate" handler="on_graph_cut_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_copy_menuitem"> - <property name="label">gtk-copy</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="C" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_copy_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_paste_menuitem"> - <property name="label">gtk-paste</property> - <property name="visible">True</property> - <property name="sensitive">False</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="V" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_paste_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_delete_menuitem"> - <property name="label">gtk-delete</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="Delete" signal="activate"/> - <signal name="activate" handler="on_graph_delete_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_select_all_menuitem"> - <property name="label">gtk-select-all</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="A" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_select_all_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="menuitem1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_arrange_menuitem"> - <property name="label">Arrange</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - <accelerator key="G" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="menuitem2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_view_control_window_menuitem"> - <property name="label">C_ontrols...</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - <accelerator key="O" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_view_control_window_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_properties_menuitem"> - <property name="label">gtk-properties</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="P" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_properties_menuitem_activate" swapped="no"/> - </object> - </child> - </object> - </child> - </object> - </child> - <child> - <object class="GtkMenuItem" id="graph_graph_menu"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_View</property> - <property name="use_underline">True</property> - <child type="submenu"> - <object class="GtkMenu" id="graph_graph_menu_menu"> - <property name="can_focus">False</property> - <child> - <object class="GtkCheckMenuItem" id="graph_human_names_menuitem"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_Human names</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <accelerator key="H" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </object> - </child> - <child> - <object class="GtkCheckMenuItem" id="graph_show_port_names_menuitem"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">Port _Names</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </object> - </child> - <child> - <object class="GtkCheckMenuItem" id="graph_doc_pane_menuitem"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_Documentation Pane</property> - <property name="use_underline">True</property> - <property name="active">False</property> - <accelerator key="D" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </object> - </child> - <child> - <object class="GtkCheckMenuItem" id="graph_status_bar_menuitem"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_Status Bar</property> - <property name="use_underline">True</property> - <property name="active">True</property> - <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="<separator>"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_zoom_in_menuitem"> - <property name="label">gtk-zoom-in</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="equal" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_zoom_out_menuitem"> - <property name="label">gtk-zoom-out</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="minus" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_zoom_normal_menuitem"> - <property name="label">gtk-zoom-100</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="0" signal="activate" modifiers="GDK_CONTROL_MASK"/> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="menuitem3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_fullscreen_menuitem"> - <property name="label">gtk-fullscreen</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <accelerator key="F11" signal="activate"/> - <signal name="activate" handler="graph_fullscreen_menuitem" swapped="no"/> - </object> - </child> - </object> - </child> - </object> - </child> - <child> - <object class="GtkMenuItem" id="view1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_Windows</property> - <property name="use_underline">True</property> - <signal name="activate" handler="on_view1_activate" swapped="no"/> - <child type="submenu"> - <object class="GtkMenu" id="view1_menu"> - <property name="can_focus">False</property> - <child> - <object class="GtkImageMenuItem" id="graph_view_engine_window_menuitem"> - <property name="label">_Engine</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - <accelerator key="E" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_view_engine_window_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_view_graph_tree_window_menuitem"> - <property name="label">_Graph Tree</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - <accelerator key="T" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_view_tree_window_menuitem_activate" swapped="no"/> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_view_messages_window_menuitem"> - <property name="label">_Messages</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - <accelerator key="M" signal="activate" modifiers="GDK_CONTROL_MASK"/> - <signal name="activate" handler="on_graph_view_messages_window_menuitem_activate" swapped="no"/> - </object> - </child> - </object> - </child> - </object> - </child> - <child> - <object class="GtkMenuItem" id="help_menu"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="label" translatable="yes">_Help</property> - <property name="use_underline">True</property> - <signal name="activate" handler="on_help_menu_activate" swapped="no"/> - <child type="submenu"> - <object class="GtkMenu" id="help_menu_menu"> - <property name="can_focus">False</property> - <child> - <object 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="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">False</property> - </object> - </child> - <child> - <object class="GtkSeparatorMenuItem" id="separator13"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - </child> - <child> - <object class="GtkImageMenuItem" id="graph_help_about_menuitem"> - <property name="label">gtk-about</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> - <signal name="activate" handler="on_about1_activate" swapped="no"/> - </object> - </child> - </object> - </child> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHPaned" id="graph_documentation_paned"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkAlignment" id="graph_win_alignment"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="resize">True</property> - <property name="shrink">False</property> - </packing> - </child> - <child> - <object class="GtkScrolledWindow" id="graph_documentation_scrolledwindow"> - <property name="can_focus">False</property> - <property name="shadow_type">in</property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="resize">False</property> - <property name="shrink">True</property> - </packing> - </child> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkStatusbar" id="graph_win_status_bar"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">2</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">2</property> - </packing> - </child> - </object> - </child> - </object> <object class="GtkMenu" id="port_control_menu"> <property name="can_focus">False</property> <child> <object class="GtkImageMenuItem" id="port_control_menu_properties"> <property name="label">gtk-properties</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_port_control_menu_properties_activate" swapped="no"/> @@ -2112,11 +2166,11 @@ Contributors: <child> <object class="GtkButton" id="port_properties_cancel_button"> <property name="label">gtk-cancel</property> + <property name="use_action_appearance">False</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="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -2128,12 +2182,12 @@ Contributors: <child> <object class="GtkButton" id="port_properties_ok_button"> <property name="label">gtk-ok</property> + <property name="use_action_appearance">False</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="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -2162,6 +2216,10 @@ Contributors: <object class="GtkSpinButton" id="port_properties_min_spinner"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> <property name="climb_rate">1</property> <property name="digits">5</property> <property name="numeric">True</property> @@ -2169,13 +2227,17 @@ Contributors: <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> <object class="GtkSpinButton" id="port_properties_max_spinner"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> <property name="climb_rate">1</property> <property name="digits">5</property> <property name="numeric">True</property> @@ -2185,7 +2247,7 @@ Contributors: <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -2197,7 +2259,7 @@ Contributors: </object> <packing> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> <child> @@ -2211,7 +2273,7 @@ Contributors: <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options"/> </packing> </child> </object> @@ -2261,6 +2323,15 @@ Contributors: <child> <placeholder/> </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> </object> </child> </object> @@ -2330,11 +2401,11 @@ Contributors: <child> <object class="GtkButton" id="properties_cancel_button"> <property name="label">gtk-cancel</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -2346,10 +2417,10 @@ Contributors: <child> <object class="GtkButton" id="properties_apply_button"> <property name="label">gtk-apply</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -2361,12 +2432,12 @@ Contributors: <child> <object class="GtkButton" id="properties_ok_button"> <property name="label">gtk-ok</property> + <property name="use_action_appearance">False</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="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -2423,6 +2494,10 @@ Contributors: <property name="can_focus">True</property> <property name="invisible_char">●</property> <property name="activates_default">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="left_attach">1</property> @@ -2452,6 +2527,10 @@ Contributors: <property name="has_focus">True</property> <property name="invisible_char">●</property> <property name="activates_default">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="left_attach">1</property> @@ -2486,11 +2565,11 @@ Contributors: <child> <object class="GtkButton" id="rename_cancel_button"> <property name="label">gtk-cancel</property> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="receives_default">True</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -2502,12 +2581,12 @@ Contributors: <child> <object class="GtkButton" id="rename_ok_button"> <property name="label">gtk-ok</property> + <property name="use_action_appearance">False</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="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="use_stock">True</property> </object> <packing> @@ -2586,10 +2665,10 @@ Contributors: </child> <child> <object class="GtkCheckButton" id="toggle_control_check"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="use_action_appearance">False</property> <property name="draw_indicator">True</property> </object> <packing> @@ -2667,9 +2746,9 @@ Contributors: <property name="icon_size">1</property> <child> <object class="GtkToolItem" id="graph_view_breadcrumb_container"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <child> <placeholder/> </child> @@ -2694,9 +2773,9 @@ Contributors: <property name="icon_size">1</property> <child> <object class="GtkToggleToolButton" id="graph_view_process_but"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="stock_id">gtk-execute</property> <property name="active">True</property> @@ -2708,9 +2787,9 @@ Contributors: </child> <child> <object class="GtkToolItem" id="toolitem7"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <child> <object class="GtkImage" id="image1978"> <property name="visible">True</property> @@ -2726,13 +2805,17 @@ Contributors: </child> <child> <object class="GtkToolItem" id="toolitem10"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <child> <object class="GtkSpinButton" id="graph_view_poly_spin"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> <property name="climb_rate">1</property> <property name="numeric">True</property> </object> @@ -2753,9 +2836,9 @@ Contributors: </child> <child> <object class="GtkToolButton" id="graph_view_save_but"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="stock_id">gtk-save</property> </object> <packing> @@ -2774,9 +2857,9 @@ Contributors: </child> <child> <object class="GtkToolButton" id="graph_view_refresh_but"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="stock_id">gtk-refresh</property> </object> <packing> @@ -2786,9 +2869,9 @@ Contributors: </child> <child> <object class="GtkToolButton" id="graph_view_zoom_normal_but"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="stock_id">gtk-zoom-100</property> </object> @@ -2799,9 +2882,9 @@ Contributors: </child> <child> <object class="GtkToolButton" id="graph_view_zoom_full_but"> + <property name="use_action_appearance">False</property> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="use_action_appearance">False</property> <property name="use_underline">True</property> <property name="stock_id">gtk-zoom-fit</property> </object> @@ -2827,6 +2910,7 @@ Contributors: <child> <object class="GtkScrolledWindow" id="graph_view_scrolledwindow"> <property name="visible">True</property> + <property name="can_focus">False</property> <property name="can_default">True</property> <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> @@ -2915,6 +2999,10 @@ Contributors: <property name="can_focus">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <property name="width_chars">12</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> <property name="digits">4</property> <property name="numeric">True</property> </object> @@ -2984,6 +3072,10 @@ Contributors: <property name="can_focus">True</property> <property name="invisible_char">●</property> <property name="caps_lock_warning">False</property> + <property name="primary_icon_activatable">False</property> + <property name="secondary_icon_activatable">False</property> + <property name="primary_icon_sensitive">True</property> + <property name="secondary_icon_sensitive">True</property> </object> <packing> <property name="expand">True</property> diff --git a/src/server/Broadcaster.cpp b/src/server/Broadcaster.cpp index f3bc96f7..8e53164f 100644 --- a/src/server/Broadcaster.cpp +++ b/src/server/Broadcaster.cpp @@ -26,10 +26,16 @@ namespace Ingen { namespace Server { +Broadcaster::Broadcaster() + : _must_broadcast(false) + , _bundle_depth(0) +{} + Broadcaster::~Broadcaster() { Glib::Mutex::Lock lock(_clients_mutex); _clients.clear(); + _broadcastees.clear(); } /** Register a client to receive messages over the notification band. @@ -51,9 +57,21 @@ Broadcaster::unregister_client(const Raul::URI& uri) { Glib::Mutex::Lock lock(_clients_mutex); const size_t erased = _clients.erase(uri); + _broadcastees.erase(uri); return (erased > 0); } +void +Broadcaster::set_broadcast(const Raul::URI& client, bool broadcast) +{ + if (broadcast) { + _broadcastees.insert(client); + } else { + _broadcastees.erase(client); + } + _must_broadcast.store(!_broadcastees.empty()); +} + /** Looks up the client with the given source @a uri (which is used as the * unique identifier for registered clients). */ diff --git a/src/server/Broadcaster.hpp b/src/server/Broadcaster.hpp index 3162742b..5de5ec8f 100644 --- a/src/server/Broadcaster.hpp +++ b/src/server/Broadcaster.hpp @@ -17,8 +17,10 @@ #ifndef INGEN_ENGINE_CLIENTBROADCASTER_HPP #define INGEN_ENGINE_CLIENTBROADCASTER_HPP +#include <atomic> #include <list> #include <map> +#include <set> #include <string> #include <glibmm/thread.h> @@ -41,12 +43,21 @@ namespace Server { class Broadcaster : public Interface { public: - Broadcaster() : _bundle_depth(0) {} + Broadcaster(); ~Broadcaster(); void register_client(const Raul::URI& uri, SPtr<Interface> client); bool unregister_client(const Raul::URI& uri); + void set_broadcast(const Raul::URI& client, bool broadcast); + + /** Return true iff there are any clients with broadcasting enabled. + * + * This is used in the audio thread to decide whether or not notifications + * should be calculated and emitted. + */ + bool must_broadcast() const { return _must_broadcast; } + /** A handle that represents a transfer of possibly several changes. * * This object going out of scope signifies the transfer is completed. @@ -135,9 +146,11 @@ private: typedef std::map< Raul::URI, SPtr<Interface> > Clients; - Glib::Mutex _clients_mutex; - Clients _clients; - unsigned _bundle_depth; + Glib::Mutex _clients_mutex; + Clients _clients; + std::set<Raul::URI> _broadcastees; + std::atomic<bool> _must_broadcast; + unsigned _bundle_depth; }; } // namespace Server diff --git a/src/server/Context.cpp b/src/server/Context.cpp index 1be69fe4..2ac2ddc2 100644 --- a/src/server/Context.cpp +++ b/src/server/Context.cpp @@ -55,6 +55,12 @@ Context::Context(Engine& engine, ID id) {} bool +Context::must_notify(const PortImpl* port) const +{ + return port->is_monitored() || _engine.broadcaster()->must_broadcast(); +} + +bool Context::notify(LV2_URID key, FrameTime time, PortImpl* port, diff --git a/src/server/Context.hpp b/src/server/Context.hpp index 028ee126..ea3593b8 100644 --- a/src/server/Context.hpp +++ b/src/server/Context.hpp @@ -53,6 +53,14 @@ public: virtual ~Context() {} + /** Return true iff the given port should broadcast its value. + * + * Whether or not broadcasting is actually done is a per-client property, + * this is for use in the audio thread to quickly determine if the + * necessary calculations need to be done at all. + */ + bool must_notify(const PortImpl* port) const; + /** Send a notification from this run context. * @return false on failure (ring is full) */ diff --git a/src/server/DuplexPort.cpp b/src/server/DuplexPort.cpp index 34c9b590..65152d02 100644 --- a/src/server/DuplexPort.cpp +++ b/src/server/DuplexPort.cpp @@ -100,9 +100,8 @@ DuplexPort::post_process(Context& context) perspective. Mix down input delivered by plugins so output (external perspective) is ready. */ InputPort::pre_process(context); - - if (_broadcast) - broadcast_value(context, false); + } else { + monitor(context); } } diff --git a/src/server/InputPort.cpp b/src/server/InputPort.cpp index 9002dbab..0d1a2d0e 100644 --- a/src/server/InputPort.cpp +++ b/src/server/InputPort.cpp @@ -124,9 +124,6 @@ void InputPort::add_arc(ProcessContext& context, ArcImpl* c) { _arcs.push_front(*c); - if (_type != PortType::CV) { - _broadcast = true; // Broadcast value/activity of connected input - } } /** Remove a arc. Realtime safe. @@ -151,10 +148,6 @@ InputPort::remove_arc(ProcessContext& context, const OutputPort* tail) return NULL; } - if (_arcs.empty()) { - _broadcast = false; // Turn off broadcasting if no longer connected - } - return arc; } @@ -220,8 +213,9 @@ InputPort::pre_process(Context& context) } } - if (_broadcast) - broadcast_value(context, false); + if (!_arcs.empty()) { + monitor(context); + } } void diff --git a/src/server/OutputPort.cpp b/src/server/OutputPort.cpp index 6b7329e5..492e5419 100644 --- a/src/server/OutputPort.cpp +++ b/src/server/OutputPort.cpp @@ -42,8 +42,6 @@ OutputPort::OutputPort(BufferFactory& bufs, add_property(bufs.uris().rdf_type, bufs.uris().lv2_OutputPort); } - _broadcast = true; - setup_buffers(bufs, poly, false); } @@ -73,8 +71,7 @@ OutputPort::post_process(Context& context) update_set_state(context, v); } - if (_broadcast) - broadcast_value(context, false); + monitor(context); } } // namespace Server diff --git a/src/server/PortImpl.cpp b/src/server/PortImpl.cpp index ed7a7084..352c8b23 100644 --- a/src/server/PortImpl.cpp +++ b/src/server/PortImpl.cpp @@ -51,12 +51,12 @@ PortImpl::PortImpl(BufferFactory& bufs, , _value(value) , _min(bufs.forge().make(0.0f)) , _max(bufs.forge().make(1.0f)) - , _last_broadcasted_value(value) + , _last_monitor_value(value) , _set_states(new Raul::Array<SetState>(static_cast<size_t>(poly))) , _prepared_set_states(NULL) , _buffers(new Raul::Array<BufferRef>(static_cast<size_t>(poly))) , _prepared_buffers(NULL) - , _broadcast(false) + , _monitored(false) , _set_by_user(false) , _is_morph(false) , _is_auto_morph(false) @@ -338,8 +338,12 @@ PortImpl::clear_buffers() } void -PortImpl::broadcast_value(Context& context, bool force) +PortImpl::monitor(Context& context) { + if (!context.must_notify(this)) { + return; + } + Forge& forge = context.engine().world()->forge(); URIs& uris = context.engine().world()->uris(); LV2_URID key = 0; @@ -359,23 +363,34 @@ PortImpl::broadcast_value(Context& context, bool force) case PortType::ATOM: if (_buffer_type == _bufs.uris().atom_Sequence) { LV2_Atom_Sequence* seq = (LV2_Atom_Sequence*)buffer(0)->atom(); - // TODO: Filter events, or only send one activity for blinkenlights - LV2_ATOM_SEQUENCE_FOREACH(seq, ev) { + if (_monitored) { + // Monitoring explictly enabled, send everything + LV2_ATOM_SEQUENCE_FOREACH(seq, ev) { + context.notify(uris.ingen_activity, + context.start() + ev->time.frames, + this, + ev->body.size, + ev->body.type, + LV2_ATOM_BODY(&ev->body)); + } + } else if (seq->atom.size > sizeof(LV2_Atom_Sequence_Body)) { + // Just sending for blinkenlights, send one + const int32_t one = 1; context.notify(uris.ingen_activity, - context.start() + ev->time.frames, + context.start(), this, - ev->body.size, - ev->body.type, - LV2_ATOM_BODY(&ev->body)); + sizeof(int32_t), + (LV2_URID)uris.atom_Bool, + &one); } } break; } - if (val.is_valid() && (force || val != _last_broadcasted_value)) { + if (val.is_valid() && val != _last_monitor_value) { if (context.notify(key, context.start(), this, val.size(), val.type(), val.get_body())) { - _last_broadcasted_value = val; + _last_monitor_value = val; } /* On failure, last_broadcasted_value remains unaffected, so we'll try diff --git a/src/server/PortImpl.hpp b/src/server/PortImpl.hpp index 4aed4458..45918964 100644 --- a/src/server/PortImpl.hpp +++ b/src/server/PortImpl.hpp @@ -145,10 +145,18 @@ public: void set_buffer_size(Context& context, BufferFactory& bufs, size_t size); - void broadcast(bool b) { _broadcast = b; } - bool broadcast() { return _broadcast; } + /** Return true iff this port is explicitly monitored. + * + * This is used for plugin UIs which require monitoring for particular + * ports, even if the Ingen client has not requested broadcasting in + * general (e.g. for canvas animation). + */ + bool is_monitored() const { return _monitored; } + + /** Explicitly turn on monitoring for this port. */ + void enable_monitoring(bool monitored) { _monitored = monitored; } - void broadcast_value(Context& context, bool force=false); + void monitor(Context& context); void raise_set_by_user_flag() { _set_by_user = true; } @@ -199,12 +207,12 @@ protected: Raul::Atom _value; Raul::Atom _min; Raul::Atom _max; - Raul::Atom _last_broadcasted_value; + Raul::Atom _last_monitor_value; Raul::Array<SetState>* _set_states; Raul::Array<SetState>* _prepared_set_states; Raul::Array<BufferRef>* _buffers; Raul::Array<BufferRef>* _prepared_buffers; - bool _broadcast; + bool _monitored; bool _set_by_user; bool _is_morph; bool _is_auto_morph; diff --git a/src/server/events/Delta.cpp b/src/server/events/Delta.cpp index 9287f9e5..2b851b16 100644 --- a/src/server/events/Delta.cpp +++ b/src/server/events/Delta.cpp @@ -104,6 +104,7 @@ Delta::pre_process() typedef Properties::const_iterator iterator; const bool is_graph_object = Node::uri_is_path(_subject); + const bool is_client = (_subject == "ingen:/clients/this"); // Take a writer lock while we modify the store Glib::RWLock::WriterLock lock(_engine.store()->lock()); @@ -112,7 +113,7 @@ Delta::pre_process() ? static_cast<Ingen::Resource*>(_engine.store()->get(Node::uri_to_path(_subject))) : static_cast<Ingen::Resource*>(_engine.block_factory()->plugin(_subject)); - if (!_object && (!is_graph_object || !_create)) { + if (!_object && !is_client && (!is_graph_object || !_create)) { return Event::pre_process_done(Status::NOT_FOUND, _subject); } @@ -155,7 +156,9 @@ Delta::pre_process() if (port) _old_bindings = _engine.control_bindings()->remove(port); } - _object->remove_property(key, value); + if (_object) { + _object->remove_property(key, value); + } } for (const auto& p : _properties) { @@ -243,6 +246,9 @@ Delta::pre_process() _status = Status::BAD_OBJECT_TYPE; } } + } else if (is_client && key == uris.ingen_broadcast) { + _engine.broadcaster()->set_broadcast( + _request_client->uri(), value.get_bool()); } if (_status != Status::NOT_PREPARED) { @@ -287,7 +293,7 @@ Delta::execute(ProcessContext& context) switch (*t) { case SpecialType::ENABLE_BROADCAST: if (port) { - port->broadcast(value.get_bool()); + port->enable_monitoring(value.get_bool()); } break; case SpecialType::ENABLE: diff --git a/src/server/internals/Controller.cpp b/src/server/internals/Controller.cpp index e65319a0..cad0aac4 100644 --- a/src/server/internals/Controller.cpp +++ b/src/server/internals/Controller.cpp @@ -118,7 +118,7 @@ ControllerNode::control(ProcessContext& context, uint8_t control_num, uint8_t va // FIXME: not thread safe _param_port->set_value(context.engine().world()->forge().make(control_num)); _param_port->set_control_value(context, time, control_num); - _param_port->broadcast_value(context, true); + _param_port->monitor(context); _learning = false; } diff --git a/src/server/internals/Trigger.cpp b/src/server/internals/Trigger.cpp index 41e1800f..c1c00b6b 100644 --- a/src/server/internals/Trigger.cpp +++ b/src/server/internals/Trigger.cpp @@ -133,7 +133,7 @@ TriggerNode::note_on(ProcessContext& context, uint8_t note_num, uint8_t velocity // FIXME: not thread safe _note_port->set_value(context.engine().world()->forge().make((float)note_num)); _note_port->set_control_value(context, time, (float)note_num); - _note_port->broadcast_value(context, true); + _note_port->monitor(context); _learning = false; } |