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>
95 void setParent(
View& parent);
105 const std::vector<Control*>& controls()
const;
115 void setForm(
Form* form);
121 FocusPolicy focusPolicy()
const;
123 void setFocusPolicy(FocusPolicy f);
125 size_t focusIndex()
const;
127 void setFocusIndex(
size_t index);
129 bool hasFocus()
const;
136 Key actionKey()
const;
138 void setActionKey(
const Key& ak);
140 const Key* shortcut()
const;
142 void setShortcut(
const Key* k);
146 void setMnemonic(
const Char& ch);
150 void setMnemonicControl(
Control* control);
152 void processShortcut(
const Key& key);
158 bool acceptsInput()
const;
166 virtual void onInvalidateEvent(
const InvalidateEvent& ev);
168 virtual void onInvalidate();
174 virtual void onProcessPaintEvent(
const PaintEvent& ev);
176 virtual void onPaintEvent(
const PaintEvent& ev);
187 const SizePolicy& sizePolicy()
const;
189 void setSizePolicy(
const SizePolicy& policy);
198 virtual Gfx::SizeF onMeasure(
const SizePolicy& policy);
200 virtual void onProcessLayoutEvent(
const LayoutEvent& ev);
202 virtual void onLayoutEvent(
const LayoutEvent& ev);
204 virtual void onLayout(
const Gfx::RectF& rect);
208 const Spacing& margin()
const;
211 void setMargin(
const Spacing& s);
214 void setMargin(
double n);
217 void setMargin(
double horiz,
double vertical);
220 const Spacing& padding()
const;
223 void setPadding(
const Spacing& p);
226 void setPadding(
double n);
229 void setPadding(
double horiz,
double vertical);
232 virtual void onSetSizeLimits(
const Gfx::SizeF& minSize,
238 virtual void onAddControl(
Control& control);
240 virtual void onRemoveControl(
Control& control);
243 virtual void onActionKey(
const KeyEvent& kev);
245 virtual void onShortcut(
const Key& kev);
247 virtual void onMnemonic(
Pt::Char m);
253 virtual void onConnect(
Screen& screen);
255 virtual void onDisconnect();
265 virtual void onRequestRepaint(
const Gfx::RectF& rect);
267 virtual void onRequestShow(
bool isShown);
269 virtual void onRequestEnable(
bool isEnable);
271 virtual void onRequestActivate(
bool active);
273 virtual void onRequestMove(
const Gfx::PointF& pos);
275 virtual void onRequestResize(
const Gfx::SizeF& s);
278 virtual void onProcessEvent(
const Pt::Event& ev);
281 virtual void onProcessEnableEvent(
const EnableEvent& ev);
283 virtual void onEnableEvent(
const EnableEvent& ev);
285 virtual void onEnable(
bool isEnable);
288 virtual void onProcessShowEvent(
const ShowEvent& ev);
290 virtual void onShowEvent(
const ShowEvent& ev);
292 virtual void onShow(
bool visible);
295 virtual void onProcessFocusEvent(
const FocusEvent& ev);
297 virtual void onFocusEvent(
const FocusEvent& ev);
300 virtual void onProcessRescaleEvent(
const RescaleEvent& ev);
302 virtual void onRescaleEvent(
const RescaleEvent& ev);
304 virtual void onRescale(
double scaling);
307 virtual void onProcessMoveEvent(
const MoveEvent& ev);
309 virtual void onMoveEvent(
const MoveEvent& ev);
312 virtual void onProcessResizeEvent(
const ResizeEvent& ev);
314 virtual void onResizeEvent(
const ResizeEvent& ev);
317 virtual void onProcessMouseEvent(
const MouseEvent& ev);
319 virtual void onProcessTouchEvent(
const TouchEvent& ev);
321 virtual void onProcessScrollEvent(
const ScrollEvent& ev);
323 virtual void onProcessEnterEvent(
const EnterEvent& ev);
325 virtual void onProcessLeaveEvent(
const LeaveEvent& ev);
327 virtual void onProcessKeyEvent(
const KeyEvent& ev);
333 virtual bool onMouseEvent(
const MouseEvent& ev);
335 virtual bool onTouchEvent(
const TouchEvent& ev);
337 virtual bool onScrollEvent(
const ScrollEvent& ev);
339 virtual bool onKeyEvent(
const KeyEvent& ev);
341 virtual bool onEnterEvent(
const EnterEvent& ev);
343 virtual bool onLeaveEvent(
const LeaveEvent& ev);
355 virtual void onAttach(
Control& control);
357 virtual void onDetach(
Control& control);
359 virtual void onInit(
Control& control);
361 virtual void onRelease(
Control& control);
366 virtual void onRelayoutRequest(
Control& control);
368 virtual void onEnableRequest(
Control& control,
bool isEnable);
370 virtual void onActivateRequest(
Control& control,
bool active);
372 virtual void onShowRequest(
Control& control,
bool isShown);
378 virtual void onRaiseRequest(
Control& control);
380 virtual const std::vector<Key> onGetShortcuts();
382 virtual const std::vector<Char> onGetMnemonics();
386 std::vector<Control*> _children;
391 bool _isLayoutInvalid;
399 bool _isMeasureInvalid;
401 SizePolicy _sizePolicy;
402 SizePolicy _lastPolicy;
406 FocusPolicy _focusPolicy;
422 #endif // include guard
Core module.
Definition: Allocator.h:33
Base class for all event types.
Definition: Event.h:50
Paint context.
Definition: PaintContext.h:45
Size with floating-point width and height.
Definition: Size.h:47
Point with floating-point X and Y coordinates.
Definition: Point.h:47
Unicode character type.
Definition: String.h:67
Unicode capable basic_string.
Definition: Api-String.h:44
Rect with floating-point coordinates.
Definition: Rect.h:47