changeset 4755:c317248d17fe draft

(svn r6669) -Add: vararg functions to set hidden/disabled/lowered state of multiple widgets in one call
author glx <glx@openttd.org>
date Fri, 06 Oct 2006 21:10:14 +0000
parents 42b48b433d0e
children a9a6bd8ab356
files window.c window.h
diffstat 2 files changed, 51 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/window.c
+++ b/window.c
@@ -1,6 +1,7 @@
 /* $Id$ */
 
 #include "stdafx.h"
+#include <stdarg.h>
 #include "openttd.h"
 #include "debug.h"
 #include "functions.h"
@@ -17,6 +18,48 @@
 // delta between mouse cursor and upper left corner of dragged window
 static Point _drag_delta;
 
+void CDECL SetWindowWidgetsDisabledState(Window *w, bool disab_stat, int widgets, ...)
+{
+	va_list wdg_list;
+
+	va_start(wdg_list, widgets);
+
+	while (widgets != WIDGET_LIST_END) {
+		SetWindowWidgetHiddenState(w, widgets, disab_stat);
+		widgets = va_arg(wdg_list, int);
+	}
+
+	va_end(wdg_list);
+}
+
+void CDECL SetWindowWidgetsHiddenState(Window *w, bool hidden_stat, int widgets, ...)
+{
+	va_list wdg_list;
+
+	va_start(wdg_list, widgets);
+
+	while (widgets != WIDGET_LIST_END) {
+		SetWindowWidgetHiddenState(w, widgets, hidden_stat);
+		widgets = va_arg(wdg_list, int);
+	}
+
+	va_end(wdg_list);
+}
+
+void CDECL SetWindowWidgetsLoweredState(Window *w, bool lowered_stat, int widgets, ...)
+{
+	va_list wdg_list;
+
+	va_start(wdg_list, widgets);
+
+	while (widgets != WIDGET_LIST_END) {
+		SetWindowWidgetLoweredState(w, widgets, lowered_stat);
+		widgets = va_arg(wdg_list, int);
+	}
+
+	va_end(wdg_list);
+}
+
 void RaiseWindowButtons(Window *w)
 {
 	const Widget *wi = w->widget;
--- a/window.h
+++ b/window.h
@@ -62,6 +62,11 @@
 	WIDG_LOWERED  = 6,  // widget is paint lowered, a pressed button in fact
 } ResizeFlag;
 
+/* used to indicate the end of widgets' list for vararg functions */
+enum {
+	WIDGET_LIST_END = -1,
+};
+
 typedef struct Widget {
 	byte type;                        ///< Widget type, see @WindowWidgetTypes
 	byte display_flags;               ///< Resize direction, alignment, etc. during resizing, see @ResizeFlags
@@ -783,6 +788,9 @@
 void RaiseWindowButtons(Window *w);
 void RelocateAllWindows(int neww, int newh);
 int PositionMainToolbar(Window *w);
+void CDECL SetWindowWidgetsDisabledState(Window *w, bool disab_stat, int widgets, ...);
+void CDECL SetWindowWidgetsHiddenState(Window *w, bool hidden_stat, int widgets, ...);
+void CDECL SetWindowWidgetsLoweredState(Window *w, bool lowered_stat, int widgets, ...);
 
 /* misc_gui.c*/
 void GuiShowTooltips(StringID string_id);