29 #ifndef PT_FORMS_WIDGET_H
30 #define PT_FORMS_WIDGET_H
32 #include <Pt/Forms/Api.h>
33 #include <Pt/Forms/Responder.h>
34 #include <Pt/Forms/Cursor.h>
36 #include <Pt/Gfx/Scaling.h>
37 #include <Pt/Gfx/Point.h>
38 #include <Pt/Gfx/Size.h>
39 #include <Pt/Gfx/Rect.h>
41 #include <Pt/Connectable.h>
42 #include <Pt/Signal.h>
61 class PT_FORMS_API Widget :
public Responder
76 const std::string& name()
const;
80 void setName(
const std::string& n);
84 void setNextResponder(Responder* r);
89 bool isConnected()
const;
97 const Screen* screen()
const;
105 const Widget* parent()
const;
109 bool isDescendantOf(
const Widget& top)
const;
113 bool isAncestorOf(
const Widget& child)
const;
117 Widget* hitTest(
const Gfx::PointF& pos);
121 Gfx::PointF toParent(
const Gfx::PointF& pos)
const;
125 Gfx::PointF fromParent(
const Gfx::PointF& pos)
const;
129 Gfx::PointF toGlobal(
const Gfx::PointF& pos)
const;
133 Gfx::PointF fromGlobal(
const Gfx::PointF& pos)
const;
138 void addPeer(Widget& peer);
142 void removePeer(Widget& peer);
152 virtual void repaint(
const Gfx::RectF& rect);
156 virtual void repaint();
161 double scaleFactor()
const;
163 const Gfx::Scaling& scaling()
const;
168 bool isVisible()
const;
172 virtual void show(
bool b =
true);
177 bool isEnabled()
const;
181 virtual void enable(
bool isEnable =
true);
184 void activate(
bool active =
true);
189 const Gfx::PointF& position()
const;
193 virtual void move(
const Gfx::PointF& pos);
197 const Gfx::SizeF& size()
const;
201 const Gfx::RectF& bounds()
const;
204 const Gfx::SizeF& minimumSize()
const;
206 void setMinimumSize(
const Gfx::SizeF& s);
208 void setMinimumSize(
double w,
double h);
210 void setMinimumWidth(
double w);
212 void setMinimumHeight(
double h);
215 const Gfx::SizeF& maximumSize()
const;
217 void setMaximumSize(
const Gfx::SizeF& s);
219 void setMaximumSize(
double w,
double h);
221 void setMaximumWidth(
double w);
223 void setMaximumHeight(
double h);
228 virtual void resize(
const Gfx::SizeF& s);
233 void setCapture(
bool capture);
236 const Cursor* cursor()
const;
238 void setCursor(
const Cursor* c);
250 virtual void onSetParent(Widget* parent);
252 virtual void onConnect(Screen& screen);
254 virtual void onDisconnect();
256 virtual Widget* onHitTest(
const Gfx::PointF& pos);
258 virtual Gfx::PointF onToParent(
const Gfx::PointF& pos)
const = 0;
260 virtual Gfx::PointF onFromParent(
const Gfx::PointF& pos)
const = 0;
262 virtual Gfx::PointF onToGlobal(
const Gfx::PointF& pos)
const;
264 virtual Gfx::PointF onFromGlobal(
const Gfx::PointF& pos)
const;
267 virtual void onAttachPeer(Widget& peer);
269 virtual void onDetachPeer(Widget& peer);
273 virtual void onRequestRepaint(
const Gfx::RectF& rect);
276 virtual void onRequestShow(
bool e);
279 virtual void onRequestEnable(
bool isEnable);
281 virtual void onRequestActivate(
bool active);
284 virtual void onRequestMove(
const Gfx::PointF& pos);
286 virtual void onSetSizeLimits(
const Gfx::SizeF& minSize,
287 const Gfx::SizeF& maxSize);
290 virtual void onRequestResize(
const Gfx::SizeF& s);
293 virtual void onRequestCapture(
bool capture);
296 virtual void onProcessEvent(
const Pt::Event& ev);
299 virtual void onProcessInvalidateEvent(
const InvalidateEvent& ev);
301 virtual void onInvalidateEvent(
const InvalidateEvent& ev);
303 virtual void onInvalidate();
306 virtual void onProcessPaintEvent(
const PaintEvent& ev);
308 virtual void onPaintEvent(
const PaintEvent& ev);
311 virtual void onProcessRescaleEvent(
const RescaleEvent& ev);
313 virtual void onRescaleEvent(
const RescaleEvent& ev);
315 virtual void onRescale(
double scaling);
318 virtual void onProcessShowEvent(
const ShowEvent& ev);
320 virtual void onShowEvent(
const ShowEvent& ev);
322 virtual void onShow(
bool visible);
325 virtual void onProcessEnableEvent(
const EnableEvent& ev);
327 virtual void onEnableEvent(
const EnableEvent& ev);
329 virtual void onEnable(
bool e);
332 virtual void onProcessMoveEvent(
const MoveEvent& ev);
334 virtual void onMoveEvent(
const MoveEvent& ev);
336 virtual void onProcessResizeEvent(
const ResizeEvent& ev);
338 virtual void onResizeEvent(
const ResizeEvent& ev);
341 virtual void onProcessMouseEvent(
const MouseEvent& ev);
343 virtual void onProcessTouchEvent(
const TouchEvent& ev);
345 virtual void onProcessScrollEvent(
const ScrollEvent& ev);
347 virtual void onProcessEnterEvent(
const EnterEvent& ev);
349 virtual void onProcessLeaveEvent(
const LeaveEvent& ev);
351 virtual void onProcessKeyEvent(
const KeyEvent& ev);
357 virtual Responder* onNextResponder();
359 virtual bool onMouseEvent(
const MouseEvent& ev);
361 virtual bool onTouchEvent(
const TouchEvent& ev);
363 virtual bool onScrollEvent(
const ScrollEvent& ev);
365 virtual bool onEnterEvent(
const EnterEvent& ev);
367 virtual bool onLeaveEvent(
const LeaveEvent& ev);
369 virtual bool onKeyEvent(
const KeyEvent& ev);
383 std::vector<Widget*> _peers;
385 Responder* _nextResponder;
389 Gfx::Scaling _scaling;
398 Gfx::SizeF _minimumSize;
399 Gfx::SizeF _maximumSize;
402 Forms::Cursor _cursor;
411 #endif // include guard
Connection Management for Signal and Slot Objects.
Definition: Connectable.h:49
Base class for all event types.
Definition: Event.h:49
Multicast Signal to call multiple slots.
Definition: Signal.h:109
uint_type uint64_t
Unsigned 64-bit integer type.
Definition: Types.h:54