src/widget/widget.h
branchcpp_gui
changeset 6297 4bf29d14edba
parent 6295 a88d8c2cff6e
child 6301 e0251f797d59
equal deleted inserted replaced
6296:3205d21b662f 6297:4bf29d14edba
     3 #ifndef WIDGET_H
     3 #ifndef WIDGET_H
     4 #define WIDGET_H
     4 #define WIDGET_H
     5 
     5 
     6 
     6 
     7 #include <list>
     7 #include <list>
     8 #include <map>
     8 #include <vector>
     9 #include "../macros.h"
     9 #include "../macros.h"
    10 #include "../string.h"
    10 #include "../string.h"
    11 #include "../order.h"
    11 #include "../order.h"
    12 #include "../rail.h"
    12 #include "../rail.h"
    13 #include "../airport.h"
    13 #include "../airport.h"
    47 	FF_NO_RESIZE_BOX       = (1 <<  3),
    47 	FF_NO_RESIZE_BOX       = (1 <<  3),
    48 	FF_UNMOVABLE           = (1 <<  4),
    48 	FF_UNMOVABLE           = (1 <<  4),
    49 	FF_TRANSPARENT         = (1 <<  5),
    49 	FF_TRANSPARENT         = (1 <<  5),
    50 	FF_TOGGLE_BUTTON       = (1 <<  6),
    50 	FF_TOGGLE_BUTTON       = (1 <<  6),
    51 	FF_STICKED             = (1 <<  7),
    51 	FF_STICKED             = (1 <<  7),
       
    52 	FF_FIXED_WIDTH         = (1 <<  8),
       
    53 	FF_FIXED_HEIGHT        = (1 <<  9),
       
    54 
       
    55 	FF_FIXED_SIZE          = FF_FIXED_WIDTH | FF_FIXED_HEIGHT,
    52 };
    56 };
    53 
    57 
    54 DECLARE_ENUM_AS_BIT_SET(FeatureFlags);
    58 DECLARE_ENUM_AS_BIT_SET(FeatureFlags);
    55 
    59 
    56 struct Widget;
    60 struct Widget;
   197 	}
   201 	}
   198 
   202 
   199 };
   203 };
   200 
   204 
   201 struct CompositeWidget : public Widget {
   205 struct CompositeWidget : public Widget {
       
   206 	struct Slot {
       
   207 		WidgetPtr    m_wi;
       
   208 		uint8        m_span;
       
   209 	};
       
   210 
   202 	typedef Widget super;
   211 	typedef Widget super;
   203 	typedef std::map<WidgetId, WidgetPtr> Widgets;
   212 	typedef std::vector<Slot> Widgets;
   204 	typedef Widgets::iterator WidgetIterator;
   213 	typedef Widgets::iterator WidgetIterator;
   205 	typedef Widgets::reverse_iterator WidgetReverseIterator;
   214 	typedef Widgets::reverse_iterator WidgetReverseIterator;
   206 
   215 
   207 protected:
   216 protected:
   208 	Widgets m_widgets;
   217 	Widgets m_widgets;
   215 	CompositeWidget(CompositeWidget *container, WidgetId id, FeatureFlags feature_flags, byte color, const Rect16 &rect, StringID tooltips)
   224 	CompositeWidget(CompositeWidget *container, WidgetId id, FeatureFlags feature_flags, byte color, const Rect16 &rect, StringID tooltips)
   216 		: Widget(container, id, feature_flags, color, rect, tooltips)
   225 		: Widget(container, id, feature_flags, color, rect, tooltips)
   217 	{}
   226 	{}
   218 
   227 
   219 	void AddWidget(Widget *wd);
   228 	void AddWidget(Widget *wd);
       
   229 	WidgetIterator FindWidget(WidgetId id);
   220 	Widget* GetWidget(WidgetId id);
   230 	Widget* GetWidget(WidgetId id);
   221 	Widget* RemoveWidget(WidgetId id);
   231 	Widget* RemoveWidget(WidgetId id);
   222 
   232 
   223 	/*virtual*/ Widget* WidgetFromPt(const Point16 &pt);
   233 	/*virtual*/ Widget* WidgetFromPt(const Point16 &pt);
   224 
   234 
   231 	/*virtual*/ void OnLeftButtonDown(EvtLeftButtonDown &ev);
   241 	/*virtual*/ void OnLeftButtonDown(EvtLeftButtonDown &ev);
   232 	/*virtual*/ void OnRightButtonDown(EvtRightButtonDown &ev);
   242 	/*virtual*/ void OnRightButtonDown(EvtRightButtonDown &ev);
   233 	/*virtual*/ void OnResize(EvtResize &ev);
   243 	/*virtual*/ void OnResize(EvtResize &ev);
   234 };
   244 };
   235 
   245 
   236 
       
   237 }; // namespace gui
   246 }; // namespace gui
   238 
   247 
   239 #endif /* WIDGET_H */
   248 #endif /* WIDGET_H */