30 #ifndef PT_FORMS_CONTROL_H
31 #define PT_FORMS_CONTROL_H
33 #include <Pt/Forms/View.h>
34 #include <Pt/Forms/SizePolicy.h>
35 #include <Pt/Forms/Spacing.h>
37 #include <Pt/Forms/MouseEvent.h>
38 #include <Pt/Forms/TouchEvent.h>
39 #include <Pt/Forms/ScrollEvent.h>
40 #include <Pt/Forms/KeyEvent.h>
41 #include <Pt/Forms/ResizeEvent.h>
42 #include <Pt/Forms/MoveEvent.h>
43 #include <Pt/Forms/PaintEvent.h>
44 #include <Pt/Forms/EnterEvent.h>
45 #include <Pt/Forms/LeaveEvent.h>
46 #include <Pt/Forms/EnableEvent.h>
47 #include <Pt/Forms/InvalidateEvent.h>
48 #include <Pt/Forms/LayoutEvent.h>
49 #include <Pt/Forms/ShowEvent.h>
50 #include <Pt/Forms/FocusEvent.h>
52 #include <Pt/Gfx/PaintSurface.h>
53 #include <Pt/Gfx/Point.h>
54 #include <Pt/Gfx/Size.h>
55 #include <Pt/Gfx/Color.h>
57 #include <Pt/Signal.h>
58 #include <Pt/Delegate.h>
68 class PT_FORMS_API Control :
public View
80 void setParent(View& parent);
85 void add(Control& control);
88 void remove(Control& control);
90 const std::vector<Control*>& controls()
const;
100 void setForm(Form* form);
106 FocusPolicy focusPolicy()
const;
108 void setFocusPolicy(FocusPolicy f);
110 size_t focusIndex()
const;
112 void setFocusIndex(
size_t index);
114 bool hasFocus()
const;
121 Key actionKey()
const;
123 void setActionKey(
const Key& ak);
125 const Key* shortcut()
const;
127 void setShortcut(
const Key* k);
131 void setMnemonic(
const Char& ch);
133 String setMnemonic(
const String& text);
135 void setMnemonicControl(Control* control);
137 void processShortcut(
const Key& key);
143 bool acceptsInput()
const;
152 virtual void onInvalidateEvent(
const InvalidateEvent& ev);
154 virtual void onInvalidate();
160 virtual void onProcessPaintEvent(
const PaintEvent& ev);
162 virtual void onPaintEvent(
const PaintEvent& ev);
164 virtual void onPaint(PaintSurface& surface,
165 const Gfx::RectF& rect);
171 const Gfx::RectF geometry()
const;
173 const SizePolicy& sizePolicy()
const;
175 void setSizePolicy(
const SizePolicy& policy);
177 Gfx::SizeF preferredSize()
const;
179 Gfx::SizeF measure(
const SizePolicy& policy);
184 virtual Gfx::SizeF onMeasure(
const SizePolicy& policy);
186 virtual void onProcessLayoutEvent(
const LayoutEvent& ev);
188 virtual void onLayoutEvent(
const LayoutEvent& ev);
190 virtual void onLayout(
const Gfx::RectF& rect);
194 const Spacing& margin()
const;
197 void setMargin(
const Spacing& s);
200 void setMargin(
double n);
203 void setMargin(
double horiz,
double vertical);
206 const Spacing& padding()
const;
209 void setPadding(
const Spacing& p);
212 void setPadding(
double n);
215 void setPadding(
double horiz,
double vertical);
218 virtual void onSetSizeLimits(
const Gfx::SizeF& minSize,
219 const Gfx::SizeF& maxSize);
222 virtual void onSetSurface(PaintSurface* surface,
const Gfx::PointF& pos);
224 virtual void onAddControl(Control& control);
226 virtual void onRemoveControl(Control& control);
229 virtual void onActionKey(
const KeyEvent& kev);
231 virtual void onShortcut(
const Key& kev);
233 virtual void onMnemonic(
Pt::Char m);
239 virtual void onConnect(Screen& screen);
241 virtual void onDisconnect();
244 virtual Widget* onHitTest(
const Gfx::PointF& p);
246 virtual Gfx::PointF onToParent(
const Gfx::PointF& pos)
const;
248 virtual Gfx::PointF onFromParent(
const Gfx::PointF& pos)
const;
251 virtual void onRequestRepaint(
const Gfx::RectF& rect);
253 virtual void onRequestShow(
bool isShown);
255 virtual void onRequestEnable(
bool isEnable);
257 virtual void onRequestActivate(
bool active);
259 virtual void onRequestMove(
const Gfx::PointF& pos);
261 virtual void onRequestResize(
const Gfx::SizeF& s);
264 virtual void onProcessEvent(
const Pt::Event& ev);
267 virtual void onProcessEnableEvent(
const EnableEvent& ev);
269 virtual void onEnableEvent(
const EnableEvent& ev);
271 virtual void onEnable(
bool isEnable);
274 virtual void onProcessShowEvent(
const ShowEvent& ev);
276 virtual void onShowEvent(
const ShowEvent& ev);
278 virtual void onShow(
bool visible);
281 virtual void onProcessFocusEvent(
const FocusEvent& ev);
283 virtual void onFocusEvent(
const FocusEvent& ev);
286 virtual void onProcessRescaleEvent(
const RescaleEvent& ev);
288 virtual void onRescaleEvent(
const RescaleEvent& ev);
290 virtual void onRescale(
double scaling);
293 virtual void onProcessMoveEvent(
const MoveEvent& ev);
295 virtual void onMoveEvent(
const MoveEvent& ev);
298 virtual void onProcessResizeEvent(
const ResizeEvent& ev);
300 virtual void onResizeEvent(
const ResizeEvent& ev);
303 virtual void onProcessMouseEvent(
const MouseEvent& ev);
305 virtual void onProcessTouchEvent(
const TouchEvent& ev);
307 virtual void onProcessScrollEvent(
const ScrollEvent& ev);
309 virtual void onProcessEnterEvent(
const EnterEvent& ev);
311 virtual void onProcessLeaveEvent(
const LeaveEvent& ev);
313 virtual void onProcessKeyEvent(
const KeyEvent& ev);
319 virtual bool onMouseEvent(
const MouseEvent& ev);
321 virtual bool onTouchEvent(
const TouchEvent& ev);
323 virtual bool onScrollEvent(
const ScrollEvent& ev);
325 virtual bool onKeyEvent(
const KeyEvent& ev);
327 virtual bool onEnterEvent(
const EnterEvent& ev);
329 virtual bool onLeaveEvent(
const LeaveEvent& ev);
335 virtual Gfx::PointF onToControl(
const Control& control,
336 const Gfx::PointF& pos)
const;
338 virtual Gfx::PointF onFromControl(
const Control& control,
339 const Gfx::PointF& pos)
const;
341 virtual void onAttach(Control& control);
343 virtual void onDetach(Control& control);
345 virtual void onInit(Control& control);
347 virtual void onRelease(Control& control);
350 virtual void onRepaintRequest(Control& control,
const Gfx::RectF& rect);
352 virtual void onRelayoutRequest(Control& control);
354 virtual void onEnableRequest(Control& control,
bool isEnable);
356 virtual void onActivateRequest(Control& control,
bool active);
358 virtual void onShowRequest(Control& control,
bool isShown);
360 virtual void onMoveRequest(Control& control,
const Gfx::PointF& pos);
362 virtual void onResizeRequest(Control& control,
const Gfx::SizeF& size);
364 virtual void onRaiseRequest(Control& control);
366 virtual const std::vector<Key> onGetShortcuts();
368 virtual const std::vector<Char> onGetMnemonics();
372 std::vector<Control*> _children;
377 bool _isLayoutInvalid;
382 Gfx::PointF _requestedPosition;
383 Gfx::SizeF _requestedSize;
385 bool _isMeasureInvalid;
387 SizePolicy _sizePolicy;
388 SizePolicy _lastPolicy;
389 Gfx::SizeF _preferredSize;
392 FocusPolicy _focusPolicy;
408 #endif // include guard
Base class for all event types.
Definition: Event.h:49
Multicast Signal to call multiple slots.
Definition: Signal.h:109
Unicode character type.
Definition: String.h:66