index 89c86b0196574d47e5c46899361502d0f8bb689d..aef9c1ac9d0045a829253921aa3722de456f36cb 100644 (file)
#define SEEN_UI_TOOL_MULTI_PATH_MANIPULATOR_H
#include <sigc++/connection.h>
-#include "display/display-forward.h"
#include "forward.h"
+#include "ui/tool/commit-events.h"
#include "ui/tool/manipulator.h"
+#include "ui/tool/modifier-tracker.h"
+#include "ui/tool/node.h"
#include "ui/tool/node-types.h"
-#include "ui/tool/commit-events.h"
+#include "ui/tool/shape-record.h"
struct SPCanvasGroup;
/**
* Manipulator that manages multiple path manipulators active at the same time.
- * It functions like a boost::ptr_set - manipulators added via insert() are retained.
*/
class MultiPathManipulator : public PointManipulator {
public:
- MultiPathManipulator(PathSharedData const &data, sigc::connection &chg);
+ MultiPathManipulator(PathSharedData &data, sigc::connection &chg);
virtual ~MultiPathManipulator();
virtual bool event(GdkEvent *event);
bool empty() { return _mmap.empty(); }
unsigned size() { return _mmap.empty(); }
- // TODO fix this garbage!
- void setItems(std::map<SPPath*, std::pair<Geom::Matrix, guint32> > const &items);
+ void setItems(std::set<ShapeRecord> const &);
void clear() { _mmap.clear(); }
void cleanup();
void selectSubpaths();
- void selectAll();
- void selectArea(Geom::Rect const &area, bool take);
void shiftSelection(int dir);
- void linearGrow(int dir);
- void spatialGrow(int dir);
- void invertSelection();
void invertSelectionInSubpaths();
- void deselect();
void setNodeType(NodeType t);
void setSegmentType(SegmentType t);
void insertNodes();
+ void duplicateNodes();
void joinNodes();
void breakNodes();
void deleteNodes(bool keep_shape = true);
- void joinSegment();
+ void joinSegments();
void deleteSegments();
void alignNodes(Geom::Dim2 d);
void distributeNodes(Geom::Dim2 d);
void showOutline(bool show);
void showHandles(bool show);
void showPathDirection(bool show);
- void setOutlineTransform(SPPath *item, Geom::Matrix const &t);
+ void setLiveOutline(bool set);
+ void setLiveObjects(bool set);
+ void updateOutlineColors();
- sigc::signal<void> signal_coords_changed;
+ sigc::signal<void> signal_coords_changed; /// Emitted whenever the coordinates
+ /// shown in the status bar need updating
private:
- typedef std::pair<SPPath*, boost::shared_ptr<PathManipulator> > MapPair;
- typedef std::map<SPPath*, boost::shared_ptr<PathManipulator> > MapType;
+ typedef std::pair<ShapeRecord, boost::shared_ptr<PathManipulator> > MapPair;
+ typedef std::map<ShapeRecord, boost::shared_ptr<PathManipulator> > MapType;
template <typename R>
void invokeForAll(R (PathManipulator::*method)()) {
void _commit(CommitEvent cps);
void _done(gchar const *);
void _doneWithCleanup(gchar const *);
- void _storeClipMaskItems(SPObject *obj, std::set<SPPath*> &, bool);
+ guint32 _getOutlineColor(ShapeRole role);
MapType _mmap;
+public:
PathSharedData const &_path_data;
+private:
sigc::connection &_changed;
+ ModifierTracker _tracker;
bool _show_handles;
bool _show_outline;
bool _show_path_direction;
+ bool _live_outline;
+ bool _live_objects;
+
+ friend class PathManipulator;
};
} // namespace UI
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :