summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-12-01 03:40:57 +0000
committerDavid Robillard <d@drobilla.net>2011-12-01 03:40:57 +0000
commit3ce44626f2e557494248d746f688f20eed4be197 (patch)
tree2f70cef0a4f4476bfd0a86596a8498af41aef27e /src
parent5a227a3b6e43c48e2d0cfeda00d06ff175a08968 (diff)
downloadpatchage-3ce44626f2e557494248d746f688f20eed4be197.tar.gz
patchage-3ce44626f2e557494248d746f688f20eed4be197.tar.bz2
patchage-3ce44626f2e557494248d746f688f20eed4be197.zip
Remove menu stuff from FlowCanvas.
git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@3717 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/PatchageModule.cpp9
-rw-r--r--src/PatchageModule.hpp4
-rw-r--r--src/PatchagePort.hpp19
3 files changed, 31 insertions, 1 deletions
diff --git a/src/PatchageModule.cpp b/src/PatchageModule.cpp
index 4254015..e9743f5 100644
--- a/src/PatchageModule.cpp
+++ b/src/PatchageModule.cpp
@@ -82,6 +82,15 @@ PatchageModule::show_menu(GdkEventButton* ev)
return true;
}
+bool
+PatchageModule::on_click(GdkEventButton* ev)
+{
+ if (ev->button == 3) {
+ return show_menu(ev);
+ }
+ return false;
+}
+
void
PatchageModule::load_location()
{
diff --git a/src/PatchageModule.hpp b/src/PatchageModule.hpp
index f87c208..7b8c02d 100644
--- a/src/PatchageModule.hpp
+++ b/src/PatchageModule.hpp
@@ -19,6 +19,8 @@
#include <string>
+#include <gtkmm/menu_elems.h>
+
#include "flowcanvas/Module.hpp"
#include "flowcanvas/Port.hpp"
@@ -46,6 +48,8 @@ public:
ModuleType type() const { return _type; }
protected:
+ bool on_click(GdkEventButton* ev);
+
void add_port(FlowCanvas::Port* port);
void remove_port(FlowCanvas::Port* port);
diff --git a/src/PatchagePort.hpp b/src/PatchagePort.hpp
index ebd5a71..693091a 100644
--- a/src/PatchagePort.hpp
+++ b/src/PatchagePort.hpp
@@ -21,6 +21,8 @@
#include <boost/shared_ptr.hpp>
+#include <gtkmm.h>
+
#include "flowcanvas/Port.hpp"
#include "flowcanvas/Module.hpp"
@@ -41,13 +43,28 @@ public:
uint32_t color)
: Port(module, name, is_input, color)
, _type(type)
- {}
+ {
+ }
virtual ~PatchagePort() {}
/** Returns the full name of this port, as "modulename:portname" */
std::string full_name() const { return _module->name() + ":" + _name; }
+ bool on_click(GdkEventButton* ev) {
+ if (ev->button != 3) {
+ return FlowCanvas::Port::on_click(ev);
+ }
+
+ Gtk::Menu* menu = Gtk::manage(new Gtk::Menu());
+ menu->items().push_back(
+ Gtk::Menu_Helpers::MenuElem(
+ "Disconnect All", sigc::mem_fun(this, &Port::disconnect_all)));
+
+ menu->popup(ev->button, ev->time);
+ return true;
+ }
+
PortType type() const { return _type; }
private: