summaryrefslogtreecommitdiffstats
path: root/src/gui/GraphCanvas.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/GraphCanvas.hpp')
-rw-r--r--src/gui/GraphCanvas.hpp129
1 files changed, 75 insertions, 54 deletions
diff --git a/src/gui/GraphCanvas.hpp b/src/gui/GraphCanvas.hpp
index 7aa4bb98..38f3ab08 100644
--- a/src/gui/GraphCanvas.hpp
+++ b/src/gui/GraphCanvas.hpp
@@ -17,27 +17,48 @@
#ifndef INGEN_GUI_GRAPHCANVAS_HPP
#define INGEN_GUI_GRAPHCANVAS_HPP
-#include "NodeModule.hpp"
+#include <ganv/Canvas.hpp>
+#include <ingen/Properties.hpp>
+#include <ingen/Resource.hpp>
+#include <ingen/URI.hpp>
+#include <lilv/lilv.h>
+#include <raul/Path.hpp>
-#include "ganv/Canvas.hpp"
-#include "ganv/Module.hpp"
-#include "ingen/Node.hpp"
-#include "ingen/client/ArcModel.hpp"
-#include "ingen/types.hpp"
-#include "lilv/lilv.h"
-#include "raul/Path.hpp"
+#include <gdk/gdk.h>
-#include <string>
+#include <cstdint>
#include <map>
+#include <memory>
#include <set>
+#include <string>
+#include <utility>
+
+namespace Ganv {
+class Module;
+class Node;
+class Port;
+} // namespace Ganv
+
+namespace Gtk {
+class CheckMenuItem;
+class Menu;
+class MenuItem;
+} // namespace Gtk
namespace ingen {
-namespace client { class GraphModel; }
+namespace client {
+class ArcModel;
+class BlockModel;
+class GraphModel;
+class ObjectModel;
+class PluginModel;
+class PortModel;
+} // namespace client
namespace gui {
-class NodeModule;
+class App;
class PluginMenu;
/** Graph canvas widget.
@@ -47,12 +68,12 @@ class PluginMenu;
class GraphCanvas : public Ganv::Canvas
{
public:
- GraphCanvas(App& app,
- SPtr<const client::GraphModel> graph,
- int width,
- int height);
+ GraphCanvas(App& app,
+ std::shared_ptr<const client::GraphModel> graph,
+ int width,
+ int height);
- virtual ~GraphCanvas() {}
+ ~GraphCanvas() override = default;
App& app() { return _app; }
@@ -61,14 +82,14 @@ public:
void show_port_names(bool b);
bool show_port_names() const { return _show_port_names; }
- void add_plugin(const SPtr<client::PluginModel>& p);
+ void add_plugin(const std::shared_ptr<client::PluginModel>& p);
void remove_plugin(const URI& uri);
- void add_block(const SPtr<const client::BlockModel>& bm);
- void remove_block(const SPtr<const client::BlockModel>& bm);
- void add_port(const SPtr<const client::PortModel>& pm);
- void remove_port(const SPtr<const client::PortModel>& pm);
- void connection(const SPtr<const client::ArcModel>& arc);
- void disconnection(const SPtr<const client::ArcModel>& arc);
+ void add_block(const std::shared_ptr<const client::BlockModel>& bm);
+ void remove_block(const std::shared_ptr<const client::BlockModel>& bm);
+ void add_port(const std::shared_ptr<const client::PortModel>& pm);
+ void remove_port(const std::shared_ptr<const client::PortModel>& pm);
+ void connection(const std::shared_ptr<const client::ArcModel>& arc);
+ void disconnection(const std::shared_ptr<const client::ArcModel>& arc);
void get_new_module_location(double& x, double& y);
@@ -96,7 +117,7 @@ private:
void menu_new_graph();
void menu_load_graph();
void menu_properties();
- void load_plugin(WPtr<client::PluginModel> weak_plugin);
+ void load_plugin(const std::weak_ptr<client::PluginModel>& weak_plugin);
void build_menus();
@@ -106,7 +127,7 @@ private:
Properties get_initial_data(Resource::Graph ctx=Resource::Graph::DEFAULT);
- Ganv::Port* get_port_view(const SPtr<client::PortModel>& port);
+ Ganv::Port* get_port_view(const std::shared_ptr<client::PortModel>& port);
void connect(Ganv::Node* tail,
Ganv::Node* head);
@@ -114,42 +135,42 @@ private:
void disconnect(Ganv::Node* tail,
Ganv::Node* head);
- App& _app;
- SPtr<const client::GraphModel> _graph;
+ App& _app;
+ std::shared_ptr<const client::GraphModel> _graph;
- using Views = std::map<SPtr<const client::ObjectModel>, Ganv::Module*>;
+ using Views = std::map<std::shared_ptr<const client::ObjectModel>, Ganv::Module*>;
Views _views;
- int _auto_position_count;
+ int _auto_position_count{0};
std::pair<int, int> _auto_position_scroll_offsets;
- int _menu_x;
- int _menu_y;
- int _paste_count;
+ int _menu_x{0};
+ int _menu_y{0};
+ int _paste_count{0};
// Track pasted objects so they can be selected when they arrive
- std::set<Raul::Path> _pastees;
-
- Gtk::Menu* _menu;
- Gtk::Menu* _internal_menu;
- PluginMenu* _plugin_menu;
- Gtk::MenuItem* _menu_add_audio_input;
- Gtk::MenuItem* _menu_add_audio_output;
- Gtk::MenuItem* _menu_add_control_input;
- Gtk::MenuItem* _menu_add_control_output;
- Gtk::MenuItem* _menu_add_cv_input;
- Gtk::MenuItem* _menu_add_cv_output;
- Gtk::MenuItem* _menu_add_event_input;
- Gtk::MenuItem* _menu_add_event_output;
- Gtk::MenuItem* _menu_load_plugin;
- Gtk::MenuItem* _menu_load_graph;
- Gtk::MenuItem* _menu_new_graph;
- Gtk::MenuItem* _menu_properties;
- Gtk::CheckMenuItem* _menu_edit;
-
- bool _human_names;
- bool _show_port_names;
- bool _menu_dirty;
+ std::set<raul::Path> _pastees;
+
+ Gtk::Menu* _menu = nullptr;
+ Gtk::Menu* _internal_menu = nullptr;
+ PluginMenu* _plugin_menu = nullptr;
+ Gtk::MenuItem* _menu_add_audio_input = nullptr;
+ Gtk::MenuItem* _menu_add_audio_output = nullptr;
+ Gtk::MenuItem* _menu_add_control_input = nullptr;
+ Gtk::MenuItem* _menu_add_control_output = nullptr;
+ Gtk::MenuItem* _menu_add_cv_input = nullptr;
+ Gtk::MenuItem* _menu_add_cv_output = nullptr;
+ Gtk::MenuItem* _menu_add_event_input = nullptr;
+ Gtk::MenuItem* _menu_add_event_output = nullptr;
+ Gtk::MenuItem* _menu_load_plugin = nullptr;
+ Gtk::MenuItem* _menu_load_graph = nullptr;
+ Gtk::MenuItem* _menu_new_graph = nullptr;
+ Gtk::MenuItem* _menu_properties = nullptr;
+ Gtk::CheckMenuItem* _menu_edit = nullptr;
+
+ bool _human_names = true;
+ bool _show_port_names = true;
+ bool _menu_dirty = false;
};
} // namespace gui