1 #ifndef MSP_GLTK_ARRANGEMENT_H_
2 #define MSP_GLTK_ARRANGEMENT_H_
7 #include "mspgltk_api.h"
14 class MSPGLTK_API arrangement_error: public std::logic_error
17 arrangement_error(const std::string &w): std::logic_error(w) { }
18 virtual ~arrangement_error() throw() { }
21 class MSPGLTK_API Arrangement
34 std::list<Widget *> widgets;
39 bool empty() { return widgets.empty(); }
41 void add(Widget &, bool);
49 Arrangement(Layout &);
51 virtual ~Arrangement();
53 void arrange(Widget &);
54 void arrange(Arrangement &);
57 virtual void process_widget(Widget &, Side, bool) = 0;
58 virtual void finish_widget(Widget &) = 0;
59 virtual void finish_slot() = 0;
60 const Edge &get_edge(Side s) const { return edges[s]; }
61 void add_constraint(Widget &, Layout::ConstraintType, Side, int = -1);
62 void add_constraint(Widget &, Layout::ConstraintType, const Edge &, int = -1);
64 static Layout::ConstraintType get_order_constraint(Side, bool);
65 static Layout::ConstraintType get_align_constraint(Side);