src/widget/widget.h
branchcpp_gui
changeset 6305 aa0faea50ab5
parent 6302 bd80897189ba
--- a/src/widget/widget.h	Sun Apr 15 14:17:40 2007 +0000
+++ b/src/widget/widget.h	Sun Apr 15 14:20:35 2007 +0000
@@ -290,6 +290,15 @@
 	/*virtual*/ void OnLeftButtonDown(EvtLeftButtonDown &ev);
 	/*virtual*/ void OnRightButtonDown(EvtRightButtonDown &ev);
 	/*virtual*/ void OnResize(EvtResize &ev);
+
+	template <class Tcls, void (Tcls::*Tenum_proc)(typename Tcls::Slot &, int) > void EnumSlotsT(Tcls *cls)
+	{
+		int slot_idx = 0;
+		for (WidgetIterator it = m_widgets.begin(); it != m_widgets.end(); slot_idx++) {
+			SlotPtr &slot = (*(it++));
+			(cls->*Tenum_proc)(*(typename Tcls::Slot*)(Slot*)slot, slot_idx);
+		}
+	}
 };
 
 struct Panel : CompositeWidget {
@@ -314,7 +323,25 @@
 		: CompositeWidget(container, feature_flags, tooltips, color)
 	{}
 
-	virtual CompositeWidget::WidgetIterator AddWidget(Widget *wd, Placement pp);
+	virtual CompositeWidget::WidgetIterator AddWidget(Widget *wi, Placement pp);
+
+	/*virtual*/ void QuerySizes();
+	/*virtual*/ void DoLayout();
+};
+
+struct Table : CompositeWidget {
+	typedef CompositeWidget super;
+
+	static const FeatureFlags DEFAULT_FEATURES = FF_NONE;
+
+	Rect16                           m_used_area;
+	CCountedPtr<SimpleCountedObject> m_size_data;
+
+	Table(CompositeWidget *container, FeatureFlags feature_flags = DEFAULT_FEATURES, StringID tooltips = 0, uint16 color = COLOUR_PARENT)
+		: CompositeWidget(container, feature_flags, tooltips, color)
+	{}
+
+	virtual CompositeWidget::WidgetIterator AddWidget(Widget *wi, int x_pos, int y_pos, int x_span = 1, int y_span = 1);
 
 	/*virtual*/ void QuerySizes();
 	/*virtual*/ void DoLayout();