From 32ff9b5e6822f4af04c5be4a71b43c5363f58031 Mon Sep 17 00:00:00 2001
From: David Robillard <d@drobilla.net>
Date: Thu, 27 Nov 2008 06:25:35 +0000
Subject: Replace "modes" with boolean "edit controls" in tooltips etc. Give
 edit controls a menu entry. Cleanup toolbar, fix some clashing mnemonics,
 etc.

git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1790 a436a847-0d15-0410-975c-d299462d15a1
---
 src/gui/PatchView.cpp   |  9 +++++--
 src/gui/PatchView.hpp   |  4 +++-
 src/gui/PatchWindow.cpp | 47 +++++++++++++++++++++---------------
 src/gui/PatchWindow.hpp |  6 +++--
 src/gui/ingen_gui.glade | 64 ++++++++++++++++++-------------------------------
 5 files changed, 65 insertions(+), 65 deletions(-)

(limited to 'src/gui')

diff --git a/src/gui/PatchView.cpp b/src/gui/PatchView.cpp
index 02e6fc97..deac1b22 100644
--- a/src/gui/PatchView.cpp
+++ b/src/gui/PatchView.cpp
@@ -47,7 +47,6 @@ PatchView::PatchView(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::X
 	xml->get_widget("patch_view_process_but", _process_but);
 	xml->get_widget("patch_view_poly_spin", _poly_spin);
 	xml->get_widget("patch_view_clear_but", _clear_but);
-	xml->get_widget("patch_view_destroy_but", _destroy_but);
 	xml->get_widget("patch_view_refresh_but", _refresh_but);
 	xml->get_widget("patch_view_save_but", _save_but);
 	xml->get_widget("patch_view_zoom_full_but", _zoom_full_but);
@@ -78,7 +77,6 @@ PatchView::set_patch(SharedPtr<PatchModel> patch)
 	_canvas_scrolledwindow->add(*_canvas);
 
 	_poly_spin->set_value(patch->poly());
-	_destroy_but->set_sensitive(patch->path() != "/");
 
 	for (GraphObject::Properties::const_iterator i = patch->properties().begin();
 			i != patch->properties().end(); ++i)
@@ -149,6 +147,13 @@ void
 PatchView::editable_toggled()
 {
 	const bool editable = _edit_mode_but->get_active();
+	set_editable(editable);
+}
+
+
+void
+PatchView::set_editable(bool editable)
+{
 	_patch->set_editable(editable);
 	_canvas->lock(!editable);
 }
diff --git a/src/gui/PatchView.hpp b/src/gui/PatchView.hpp
index 77da6263..c88e334a 100644
--- a/src/gui/PatchView.hpp
+++ b/src/gui/PatchView.hpp
@@ -62,6 +62,8 @@ public:
 	SharedPtr<PatchCanvas> canvas()               const { return _canvas; }
 	SharedPtr<PatchModel>  patch()                const { return _patch; }
 	Gtk::Viewport*         breadcrumb_container() const { return _breadcrumb_container; }
+	
+	void set_editable(bool editable);
 
 	static SharedPtr<PatchView> create(SharedPtr<PatchModel> patch);
 
@@ -77,6 +79,7 @@ private:
 	void refresh_clicked();
 	void on_editable_sig(bool locked);
 	void editable_toggled();
+
 	void canvas_item_entered(Gnome::Canvas::Item* item);
 	void canvas_item_left(Gnome::Canvas::Item* item);
 	
@@ -93,7 +96,6 @@ private:
 	Gtk::ToggleToolButton*  _process_but;
 	Gtk::SpinButton*        _poly_spin;
 	Gtk::ToolButton*        _clear_but;
-	Gtk::ToolButton*        _destroy_but;
 	Gtk::ToolButton*        _refresh_but;
 	Gtk::ToolButton*        _save_but;
 	Gtk::ToolButton*        _zoom_normal_but;
diff --git a/src/gui/PatchWindow.cpp b/src/gui/PatchWindow.cpp
index 280682ba..0863b770 100644
--- a/src/gui/PatchWindow.cpp
+++ b/src/gui/PatchWindow.cpp
@@ -69,6 +69,7 @@ PatchWindow::PatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glad
 	xml->get_widget("patch_save_menuitem", _menu_save);
 	xml->get_widget("patch_save_as_menuitem", _menu_save_as);
 	xml->get_widget("patch_upload_menuitem", _menu_upload);
+	xml->get_widget("patch_edit_controls_menuitem", _menu_edit_controls);
 	xml->get_widget("patch_cut_menuitem", _menu_cut);
 	xml->get_widget("patch_copy_menuitem", _menu_copy);
 	xml->get_widget("patch_paste_menuitem", _menu_paste);
@@ -85,7 +86,6 @@ PatchWindow::PatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glad
 	xml->get_widget("patch_status_bar_menuitem", _menu_show_status_bar);
 	xml->get_widget("patch_arrange_menuitem", _menu_arrange);
 	xml->get_widget("patch_clear_menuitem", _menu_clear);
-	xml->get_widget("patch_destroy_menuitem", _menu_destroy_patch);
 	xml->get_widget("patch_view_messages_window_menuitem", _menu_view_messages_window);
 	xml->get_widget("patch_view_patch_tree_window_menuitem", _menu_view_patch_tree_window);
 	xml->get_widget("patch_help_about_menuitem", _menu_help_about);
@@ -106,6 +106,8 @@ PatchWindow::PatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glad
 		sigc::mem_fun(this, &PatchWindow::event_save_as));
 	_menu_upload->signal_activate().connect(
 		sigc::mem_fun(this, &PatchWindow::event_upload));
+	_menu_edit_controls->signal_activate().connect(
+		sigc::mem_fun(this, &PatchWindow::event_edit_controls));
 	_menu_copy->signal_activate().connect(
 		sigc::mem_fun(this, &PatchWindow::event_copy));
 	_menu_paste->signal_activate().connect(
@@ -132,8 +134,6 @@ PatchWindow::PatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glad
 		sigc::mem_fun(this, &PatchWindow::event_show_controls));
 	_menu_view_patch_properties->signal_activate().connect(
 		sigc::mem_fun(this, &PatchWindow::event_show_properties));
-	_menu_destroy_patch->signal_activate().connect(
-		sigc::mem_fun(this, &PatchWindow::event_destroy));
 	_menu_clear->signal_activate().connect(
 		sigc::mem_fun(this, &PatchWindow::event_clear));
 	_menu_view_messages_window->signal_activate().connect(
@@ -195,6 +195,7 @@ PatchWindow::set_patch(SharedPtr<PatchModel> patch, SharedPtr<PatchView> view)
 	
 	new_port_connection.disconnect();
 	removed_port_connection.disconnect();
+	edit_mode_connection.disconnect();
 	_entered_connection.disconnect();
 	_left_connection.disconnect();
 
@@ -247,15 +248,13 @@ PatchWindow::set_patch(SharedPtr<PatchModel> patch, SharedPtr<PatchView> view)
 
 	set_title(_patch->path() + " - Ingen");
 
-	//m_properties_window->patch_model(pc->patch_model());
-
-	if (patch->path() == "/")
-		_menu_destroy_patch->set_sensitive(false);
-	else
-		_menu_destroy_patch->set_sensitive(true);
-
-	new_port_connection = patch->signal_new_port.connect(sigc::mem_fun(this, &PatchWindow::patch_port_added));
-	removed_port_connection = patch->signal_removed_port.connect(sigc::mem_fun(this, &PatchWindow::patch_port_removed));
+	new_port_connection = patch->signal_new_port.connect(
+			sigc::mem_fun(this, &PatchWindow::patch_port_added));
+	removed_port_connection = patch->signal_removed_port.connect(
+			sigc::mem_fun(this, &PatchWindow::patch_port_removed));
+	removed_port_connection = patch->signal_editable.connect(
+			sigc::mem_fun(this, &PatchWindow::editable_changed));
+	
 	show_all();
 
 	_view->signal_object_entered.connect(sigc::mem_fun(this, &PatchWindow::object_entered));
@@ -333,6 +332,15 @@ PatchWindow::object_left(ObjectModel* model)
 }
 
 
+void
+PatchWindow::editable_changed(bool editable)
+{
+	//const Atom& enabled = _patch->get_variable("ingen:enabled");
+	_menu_edit_controls->set_active(editable);
+}
+
+
+
 void
 PatchWindow::event_show_engine()
 {
@@ -453,6 +461,14 @@ PatchWindow::event_upload()
 }
 
 
+void
+PatchWindow::event_edit_controls()
+{
+	if (_view)
+		_view->set_editable(_menu_edit_controls->get_active());
+}
+
+
 void
 PatchWindow::event_copy()
 {
@@ -561,13 +577,6 @@ PatchWindow::event_quit()
 }
 
 
-void
-PatchWindow::event_destroy()
-{
-	App::instance().engine()->destroy(_patch->path());
-}
-
-
 void
 PatchWindow::event_clear()
 {
diff --git a/src/gui/PatchWindow.hpp b/src/gui/PatchWindow.hpp
index 3e0c75bf..5cfa2936 100644
--- a/src/gui/PatchWindow.hpp
+++ b/src/gui/PatchWindow.hpp
@@ -78,18 +78,19 @@ private:
 	void patch_port_removed(SharedPtr<PortModel> port);
 	void object_entered(ObjectModel* model);
 	void object_left(ObjectModel* model);
+	void editable_changed(bool editable);
 
 	void event_import();
 	void event_import_location();
 	void event_save();
 	void event_save_as();
 	void event_upload();
+	void event_edit_controls();
 	void event_copy();
 	void event_paste();
 	void event_delete();
 	void event_select_all();
 	void event_quit();
-	void event_destroy();
 	void event_clear();
 	void event_fullscreen_toggled();
 	void event_status_bar_toggled();
@@ -106,6 +107,7 @@ private:
 	
 	sigc::connection new_port_connection;
 	sigc::connection removed_port_connection;
+	sigc::connection edit_mode_connection;
 
 	bool _enable_signal;
 	bool _position_stored;
@@ -117,6 +119,7 @@ private:
 	Gtk::MenuItem*      _menu_save;
 	Gtk::MenuItem*      _menu_save_as;
 	Gtk::MenuItem*      _menu_upload;
+	Gtk::CheckMenuItem* _menu_edit_controls;
 	Gtk::MenuItem*      _menu_cut;
 	Gtk::MenuItem*      _menu_copy;
 	Gtk::MenuItem*      _menu_paste;
@@ -129,7 +132,6 @@ private:
 	Gtk::CheckMenuItem* _menu_show_status_bar;
 	Gtk::MenuItem*      _menu_fullscreen;
 	Gtk::MenuItem*      _menu_clear;
-	Gtk::MenuItem*      _menu_destroy_patch;
 	Gtk::MenuItem*      _menu_arrange;
 	Gtk::MenuItem*      _menu_view_engine_window;
 	Gtk::MenuItem*      _menu_view_control_window;
diff --git a/src/gui/ingen_gui.glade b/src/gui/ingen_gui.glade
index 5d249bd4..c94d4e8c 100644
--- a/src/gui/ingen_gui.glade
+++ b/src/gui/ingen_gui.glade
@@ -143,6 +143,21 @@
                 <property name="use_underline">True</property>
                 <child>
                   <widget class="GtkMenu" id="edit2_menu">
+                    <child>
+                      <widget class="GtkCheckMenuItem" id="patch_edit_controls_menuitem">
+                        <property name="visible">True</property>
+                        <property name="tooltip" translatable="yes">Enable editing of connections and dragging of nodes (disable to manipulate controls)</property>
+                        <property name="label" translatable="yes">_Edit connections</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <accelerator key="e" modifiers="" signal="activate"/>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkSeparatorMenuItem" id="menuitem4">
+                        <property name="visible">True</property>
+                      </widget>
+                    </child>
                     <child>
                       <widget class="GtkImageMenuItem" id="patch_cut_menuitem">
                         <property name="visible">True</property>
@@ -225,22 +240,6 @@
                         <signal name="activate" handler="on_patch_clear_menuitem_activate"/>
                       </widget>
                     </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_destroy_menuitem">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Destoy this patch (remove it from the engine)</property>
-                        <property name="label" translatable="yes">_Destroy Patch</property>
-                        <property name="use_underline">True</property>
-                        <signal name="activate" handler="on_patch_destroy_menuitem_activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image2131">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-delete</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
                     <child>
                       <widget class="GtkSeparatorMenuItem" id="menuitem2">
                         <property name="visible">True</property>
@@ -267,7 +266,7 @@
                       <widget class="GtkImageMenuItem" id="patch_properties_menuitem">
                         <property name="visible">True</property>
                         <property name="tooltip" translatable="yes">View/Edit properties for this patch</property>
-                        <property name="label" translatable="yes">_Properties...</property>
+                        <property name="label" translatable="yes">P_roperties...</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="on_patch_properties_menuitem_activate"/>
                         <accelerator key="P" modifiers="GDK_CONTROL_MASK" signal="activate"/>
@@ -1475,7 +1474,7 @@
                     <child>
                       <widget class="GtkToggleToolButton" id="patch_view_process_but">
                         <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Enable DSP processing</property>
+                        <property name="tooltip" translatable="yes">Enable patch</property>
                         <property name="use_underline">True</property>
                         <property name="stock_id">gtk-execute</property>
                         <property name="active">True</property>
@@ -1503,10 +1502,12 @@
                     <child>
                       <widget class="GtkToolItem" id="toolitem10">
                         <property name="visible">True</property>
+                        <property name="tooltip" translatable="yes">Polyphony</property>
                         <child>
                           <widget class="GtkSpinButton" id="patch_view_poly_spin">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Patch polyphony</property>
                             <property name="adjustment">1 1 512 1 10 10</property>
                             <property name="climb_rate">1</property>
                             <property name="numeric">True</property>
@@ -1537,19 +1538,10 @@
                         <property name="expand">False</property>
                       </packing>
                     </child>
-                    <child>
-                      <widget class="GtkSeparatorToolItem" id="separatortoolitem19">
-                        <property name="visible">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="homogeneous">False</property>
-                      </packing>
-                    </child>
                     <child>
                       <widget class="GtkToolButton" id="patch_view_clear_but">
                         <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Clear (Destroy all children)</property>
+                        <property name="tooltip" translatable="yes">Clear patch contents</property>
                         <property name="use_underline">True</property>
                         <property name="stock_id">gtk-clear</property>
                       </widget>
@@ -1557,16 +1549,6 @@
                         <property name="expand">False</property>
                       </packing>
                     </child>
-                    <child>
-                      <widget class="GtkToolButton" id="patch_view_destroy_but">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Destroy this patch</property>
-                        <property name="stock_id">gtk-delete</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
                     <child>
                       <widget class="GtkSeparatorToolItem" id="separatortoolitem22">
                         <property name="visible">True</property>
@@ -1600,7 +1582,7 @@
                     <child>
                       <widget class="GtkToolButton" id="patch_view_zoom_full_but">
                         <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Fit patch to window</property>
+                        <property name="tooltip" translatable="yes">Zoom to contents</property>
                         <property name="use_underline">True</property>
                         <property name="stock_id">gtk-zoom-fit</property>
                       </widget>
@@ -1622,9 +1604,9 @@
                       <widget class="GtkToggleToolButton" id="patch_view_edit_mode_but">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="tooltip" translatable="yes">Enable edit mode to move objects and make connections, disable to play controls ('e' to toggle)</property>
+                        <property name="tooltip" translatable="yes">Edit connections</property>
                         <property name="label" translatable="yes">Edit</property>
-                        <property name="stock_id">gtk-edit</property>
+                        <property name="stock_id">gtk-connect</property>
                         <property name="active">True</property>
                       </widget>
                       <packing>
-- 
cgit v1.2.1