summaryrefslogtreecommitdiffstats
path: root/src/gui/PatchCanvas.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-11-16 04:57:33 +0000
committerDavid Robillard <d@drobilla.net>2009-11-16 04:57:33 +0000
commit1a725c0811fd15900464e1eff429c6ead90805d4 (patch)
treef8609772c7833da664b6621cccf32e3dc9d16d0b /src/gui/PatchCanvas.cpp
parentb1a0a1b76ee1c9ae469c3d73543998662adc05ee (diff)
downloadingen-1a725c0811fd15900464e1eff429c6ead90805d4.tar.gz
ingen-1a725c0811fd15900464e1eff429c6ead90805d4.tar.bz2
ingen-1a725c0811fd15900464e1eff429c6ead90805d4.zip
Add edit checkbutton to canvas menu for fast mouse based control.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2271 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui/PatchCanvas.cpp')
-rw-r--r--src/gui/PatchCanvas.cpp31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/gui/PatchCanvas.cpp b/src/gui/PatchCanvas.cpp
index 0f071334..46a1c003 100644
--- a/src/gui/PatchCanvas.cpp
+++ b/src/gui/PatchCanvas.cpp
@@ -72,8 +72,6 @@ PatchCanvas::PatchCanvas(SharedPtr<PatchModel> patch, int width, int height)
Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
xml->get_widget("canvas_menu", _menu);
- /*xml->get_widget("canvas_menu_add_number_control", _menu_add_number_control);
- xml->get_widget("canvas_menu_add_button_control", _menu_add_button_control);*/
xml->get_widget("canvas_menu_add_audio_input", _menu_add_audio_input);
xml->get_widget("canvas_menu_add_audio_output", _menu_add_audio_output);
xml->get_widget("canvas_menu_add_control_input", _menu_add_control_input);
@@ -83,6 +81,7 @@ PatchCanvas::PatchCanvas(SharedPtr<PatchModel> patch, int width, int height)
xml->get_widget("canvas_menu_load_plugin", _menu_load_plugin);
xml->get_widget("canvas_menu_load_patch", _menu_load_patch);
xml->get_widget("canvas_menu_new_patch", _menu_new_patch);
+ xml->get_widget("canvas_menu_edit", _menu_edit);
// Add port menu items
_menu_add_audio_input->signal_activate().connect(
@@ -118,6 +117,9 @@ PatchCanvas::PatchCanvas(SharedPtr<PatchModel> patch, int width, int height)
_menu_load_plugin->signal_activate().connect(sigc::mem_fun(this, &PatchCanvas::menu_load_plugin));
_menu_load_patch->signal_activate().connect(sigc::mem_fun(this, &PatchCanvas::menu_load_patch));
_menu_new_patch->signal_activate().connect(sigc::mem_fun(this, &PatchCanvas::menu_new_patch));
+ _menu_edit->signal_activate().connect(sigc::mem_fun(this, &PatchCanvas::menu_edit_toggled));
+
+ _patch->signal_editable.connect(sigc::mem_fun(this, &PatchCanvas::patch_editable_changed));
}
@@ -143,7 +145,7 @@ PatchCanvas::build_menus()
Gtk::MenuItem* internal_menu_item = &(_menu->items().back());
_internal_menu = Gtk::manage(new Gtk::Menu());
internal_menu_item->set_submenu(*_internal_menu);
- _menu->reorder_child(*internal_menu_item, 2);
+ _menu->reorder_child(*internal_menu_item, 4);
}
// Build skeleton LV2 plugin class heirarchy for 'Plugin' menu
@@ -225,7 +227,7 @@ PatchCanvas::build_plugin_menu()
Gtk::MenuItem* plugin_menu_item = &(_menu->items().back());
_plugin_menu = Gtk::manage(new Gtk::Menu());
plugin_menu_item->set_submenu(*_plugin_menu);
- _menu->reorder_child(*plugin_menu_item, 3);
+ _menu->reorder_child(*plugin_menu_item, 5);
}
Glib::Mutex::Lock lock(PluginModel::rdf_world()->mutex());
@@ -527,7 +529,6 @@ PatchCanvas::canvas_event(GdkEvent* event)
bool ret = false;
switch (event->type) {
-
case GDK_BUTTON_PRESS:
if (event->button.button == 3) {
_last_click_x = (int)event->button.x;
@@ -560,10 +561,7 @@ PatchCanvas::canvas_key_event(GdkEventKey* event)
return true;
case GDK_e:
if (event->state == 0) {
- if (_patch->get_editable() == true)
- _patch->set_editable(false);
- else
- _patch->set_editable(true);
+ _patch->set_editable(!_patch->get_editable());
return true;
} else {
return false;
@@ -829,5 +827,20 @@ PatchCanvas::menu_new_patch()
}
+void
+PatchCanvas::menu_edit_toggled()
+{
+ _patch->set_editable(_menu_edit->get_active());
+}
+
+
+void
+PatchCanvas::patch_editable_changed(bool editable)
+{
+ if (_menu_edit->get_active() != editable)
+ _menu_edit->set_active(editable);
+}
+
+
} // namespace GUI
} // namespace Ingen