18#ifndef FLOWCANVAS_CANVAS_HPP
19#define FLOWCANVAS_CANVAS_HPP
24#include <boost/enable_shared_from_this.hpp>
25#include <boost/utility.hpp>
27#include <libgnomecanvasmm.h>
59 ,
public boost::enable_shared_from_this<Canvas>
60 ,
public Gnome::Canvas::CanvasAA
71 boost::shared_ptr<Connection>
73 boost::shared_ptr<Connectable> head)
const;
76 boost::shared_ptr<Connectable> head,
82 boost::shared_ptr<Connectable> head);
98 bool locked()
const {
return _locked; }
105 virtual void arrange(
bool use_length_hints=
false,
bool center=
true);
109 double width()
const {
return _width; }
110 double height()
const {
return _height; }
130 virtual void connect(boost::shared_ptr<Connectable> ,
131 boost::shared_ptr<Connectable> ) {}
135 boost::shared_ptr<Connectable> ) {}
151 bool port_event(GdkEvent* event, boost::weak_ptr<Port> port);
153 GVNodes layout_dot(
bool use_length_hints,
const std::string& filename);
156 bool are_connected(boost::shared_ptr<const Connectable> tail,
157 boost::shared_ptr<const Connectable> head);
159 void select_port(boost::shared_ptr<Port> p,
bool unique =
false);
160 void select_port_toggle(boost::shared_ptr<Port> p,
int mod_state);
161 void unselect_port(boost::shared_ptr<Port> p);
162 void selection_joined_with(boost::shared_ptr<Port> port);
163 void join_selection();
165 boost::shared_ptr<Port> get_port_at(
double x,
double y);
167 bool scroll_drag_handler(GdkEvent* event);
168 bool select_drag_handler(GdkEvent* event);
169 bool connection_drag_handler(GdkEvent* event);
171 void ports_joined(boost::shared_ptr<Port> port1, boost::shared_ptr<Port> port2);
172 bool animate_selected();
174 void move_contents_to_internal(
double x,
double y,
double min_x,
double min_y);
176 void on_parent_changed(Gtk::Widget* old_parent);
177 sigc::connection _parent_event_connection;
179 typedef std::list< boost::shared_ptr<Port> > SelectedPorts;
181 SelectedPorts _selected_ports;
182 boost::shared_ptr<Port> _connect_port;
183 boost::shared_ptr<Port> _last_selected_port;
185 Gnome::Canvas::Rect _base_rect;
186 Gnome::Canvas::Rect* _select_rect;
187 ArtVpathDash* _select_dash;
193 enum DragState { NOT_DRAGGING, CONNECTION, SCROLL, SELECT };
194 DragState _drag_state;
198 bool _remove_objects :1;
The 'master' canvas widget which contains all other objects.
Definition: Canvas.hpp:61
double width() const
Definition: Canvas.hpp:109
static sigc::signal< void, Gnome::Canvas::Item * > signal_item_left
Definition: Canvas.hpp:138
virtual void connect(boost::shared_ptr< Connectable >, boost::shared_ptr< Connectable >)
Make a connection.
Definition: Canvas.hpp:130
void set_direction(FlowDirection d)
Definition: Canvas.hpp:122
bool add_connection(boost::shared_ptr< Connection > connection)
boost::shared_ptr< Connection > remove_connection(boost::shared_ptr< Connectable > tail, boost::shared_ptr< Connectable > head)
void render_to_dot(const std::string &filename)
boost::shared_ptr< Connection > get_connection(boost::shared_ptr< Connectable > tail, boost::shared_ptr< Connectable > head) const
static sigc::signal< void, Gnome::Canvas::Item * > signal_item_entered
Definition: Canvas.hpp:137
bool locked() const
Definition: Canvas.hpp:98
ConnectionList _connections
All connections on this canvas.
Definition: Canvas.hpp:142
virtual void disconnect(boost::shared_ptr< Connectable >, boost::shared_ptr< Connectable >)
Disconnect two ports.
Definition: Canvas.hpp:134
ItemList & items()
Definition: Canvas.hpp:92
void set_zoom(double pix_per_unit)
std::list< boost::shared_ptr< Connection > > _selected_connections
All currently selected connections.
Definition: Canvas.hpp:144
ConnectionList & selected_connections()
Definition: Canvas.hpp:95
void unselect_connection(Connection *c)
bool add_connection(boost::shared_ptr< Connectable > tail, boost::shared_ptr< Connectable > head, uint32_t color)
void add_item(boost::shared_ptr< Item > i)
FlowDirection
Definition: Canvas.hpp:117
@ VERTICAL
Definition: Canvas.hpp:119
@ HORIZONTAL
Definition: Canvas.hpp:118
void select_item(boost::shared_ptr< Item > item)
double height() const
Definition: Canvas.hpp:110
ItemList & selected_items()
Definition: Canvas.hpp:93
void move_contents_to(double x, double y)
ItemList _items
All items on this canvas.
Definition: Canvas.hpp:141
void set_default_placement(boost::shared_ptr< Module > m)
ConnectionList & connections()
Definition: Canvas.hpp:94
virtual bool canvas_event(GdkEvent *event)
std::list< boost::shared_ptr< Item > > _selected_items
All currently selected modules.
Definition: Canvas.hpp:143
double get_zoom()
Definition: Canvas.hpp:100
Canvas(double width, double height)
bool remove_item(boost::shared_ptr< Item > i)
virtual bool frame_event(GdkEvent *ev)
FlowDirection direction() const
Definition: Canvas.hpp:123
virtual void arrange(bool use_length_hints=false, bool center=true)
void unselect_item(boost::shared_ptr< Item > item)
ArtVpathDash * select_dash()
Dash applied to selected items.
Definition: Canvas.hpp:127
void resize(double width, double height)
A connection (line) between two canvas objects.
Definition: Connection.hpp:43
A named block (possibly) containing input and output ports.
Definition: Module.hpp:38
A port on a Module.
Definition: Port.hpp:51
FlowCanvas namespace, everything is defined under this.
Definition: Canvas.hpp:38
std::list< boost::shared_ptr< Connection > > ConnectionList
Definition: Connection.hpp:111
std::list< boost::shared_ptr< Item > > ItemList
Definition: Item.hpp:149