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
68 void add_item(boost::shared_ptr<Item> i);
71 boost::shared_ptr<Connection>
73 boost::shared_ptr<Connectable> head)
const;
76 boost::shared_ptr<Connectable> head,
81 boost::shared_ptr<Connection>
remove_connection(boost::shared_ptr<Connectable> tail,
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; }
112 void resize(
double width,
double 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;
205 #endif // FLOWCANVAS_CANVAS_HPP
bool add_connection(boost::shared_ptr< Connectable > tail, boost::shared_ptr< Connectable > head, uint32_t color)
A connection (line) between two canvas objects.
Definition: Connection.hpp:42
ItemList _items
All items on this canvas.
Definition: Canvas.hpp:141
bool remove_item(boost::shared_ptr< Item > i)
void resize(double width, double height)
ItemList & items()
Definition: Canvas.hpp:92
void unselect_connection(Connection *c)
void set_default_placement(boost::shared_ptr< Module > m)
std::list< boost::shared_ptr< Item > > ItemList
Definition: Item.hpp:149
Definition: Canvas.hpp:118
ConnectionList & connections()
Definition: Canvas.hpp:94
void unselect_item(boost::shared_ptr< Item > item)
void set_direction(FlowDirection d)
Definition: Canvas.hpp:122
double get_zoom()
Definition: Canvas.hpp:100
static sigc::signal< void, Gnome::Canvas::Item * > signal_item_entered
Definition: Canvas.hpp:137
static sigc::signal< void, Gnome::Canvas::Item * > signal_item_left
Definition: Canvas.hpp:138
void add_item(boost::shared_ptr< Item > i)
bool locked() const
Definition: Canvas.hpp:98
std::list< boost::shared_ptr< Connection > > _selected_connections
All currently selected connections.
Definition: Canvas.hpp:144
FlowDirection direction() const
Definition: Canvas.hpp:123
double height() const
Definition: Canvas.hpp:110
Canvas(double width, double height)
boost::shared_ptr< Connection > remove_connection(boost::shared_ptr< Connectable > tail, boost::shared_ptr< Connectable > head)
std::list< boost::shared_ptr< Connection > > ConnectionList
Definition: Connection.hpp:111
virtual bool canvas_event(GdkEvent *event)
void move_contents_to(double x, double y)
void select_item(boost::shared_ptr< Item > item)
double width() const
Definition: Canvas.hpp:109
std::list< boost::shared_ptr< Item > > _selected_items
All currently selected modules.
Definition: Canvas.hpp:143
virtual void arrange(bool use_length_hints=false, bool center=true)
boost::shared_ptr< Connection > get_connection(boost::shared_ptr< Connectable > tail, boost::shared_ptr< Connectable > head) const
void render_to_dot(const std::string &filename)
virtual void disconnect(boost::shared_ptr< Connectable >, boost::shared_ptr< Connectable >)
Disconnect two ports.
Definition: Canvas.hpp:134
ConnectionList _connections
All connections on this canvas.
Definition: Canvas.hpp:142
virtual bool frame_event(GdkEvent *ev)
virtual void connect(boost::shared_ptr< Connectable >, boost::shared_ptr< Connectable >)
Make a connection.
Definition: Canvas.hpp:130
A port on a Module.
Definition: Port.hpp:50
The 'master' canvas widget which contains all other objects.
Definition: Canvas.hpp:58
FlowDirection
Definition: Canvas.hpp:117
Definition: Canvas.hpp:119
void set_zoom(double pix_per_unit)
FlowCanvas namespace, everything is defined under this.
Definition: Canvas.hpp:38
A named block (possibly) containing input and output ports.
Definition: Module.hpp:37
ArtVpathDash * select_dash()
Dash applied to selected items.
Definition: Canvas.hpp:127
ItemList & selected_items()
Definition: Canvas.hpp:93
ConnectionList & selected_connections()
Definition: Canvas.hpp:95