index d67e12b8134b8534f81078ebd231a4a0392171e7..640a03aaea67d8848439fc9009ed91fbaf17590b 100644 (file)
--- a/src/connector-context.h
+++ b/src/connector-context.h
#include <display/display-forward.h>
#include <2geom/point.h>
#include "libavoid/connector.h"
-
+#include "connection-points.h"
+#include <glibmm/i18n.h>
#define SP_TYPE_CONNECTOR_CONTEXT (sp_connector_context_get_type())
#define SP_CONNECTOR_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_CONNECTOR_CONTEXT, SPConnectorContext))
SP_CONNECTOR_CONTEXT_DRAGGING,
SP_CONNECTOR_CONTEXT_CLOSE,
SP_CONNECTOR_CONTEXT_STOP,
- SP_CONNECTOR_CONTEXT_REROUTING
+ SP_CONNECTOR_CONTEXT_REROUTING,
+ SP_CONNECTOR_CONTEXT_NEWCONNPOINT
+};
+
+enum {
+ SP_CONNECTOR_CONTEXT_DRAWING_MODE,
+ SP_CONNECTOR_CONTEXT_EDITING_MODE
};
+static char* cc_knot_tips[] = { _("<b>Connection point</b>: click or drag to create a new connector"),
+ _("<b>Connection point</b>: click to select, drag to move") };
+typedef std::map<SPKnot *, ConnectionPoint> ConnectionPointMap;
struct SPConnectorContext : public SPEventContext {
Inkscape::Selection *selection;
/** \invar npoints in {0, 2}. */
gint npoints;
-
+ /* The tool mode can be connector drawing or
+ connection points editing.
+ */
unsigned int mode : 1;
unsigned int state : 4;
+ gchar* knot_tip;
+
// Red curve
SPCanvasItem *red_bpath;
SPCurve *red_curve;
// The new connector
SPItem *newconn;
Avoid::ConnRef *newConnRef;
+ gdouble curvature;
+ bool isOrthogonal;
// The active shape
SPItem *active_shape;
// The activehandle
SPKnot *active_handle;
+ // The selected handle, used in editing mode
+ SPKnot *selected_handle;
+
SPItem *clickeditem;
SPKnot *clickedhandle;
- SPKnot *connpthandle;
+ ConnectionPointMap connpthandles;
SPKnot *endpt_handle[2];
guint endpt_handler_id[2];
gchar *sid;
GType sp_connector_context_get_type();
+void sp_connector_context_switch_mode(SPEventContext* ec, unsigned int newMode);
void cc_selection_set_avoid(bool const set_ignore);
+void cc_create_connection_point(SPConnectorContext* cc);
+void cc_remove_connection_point(SPConnectorContext* cc);
bool cc_item_is_connector(SPItem *item);