(svn r7143) -CodeChange: remove redondancy in saveload dialogs
authorglx
Tue, 14 Nov 2006 00:27:28 +0000
changeset 5079 173056d957f5
parent 5078 130939b8e39e
child 5080 2593eed58079
(svn r7143) -CodeChange: remove redondancy in saveload dialogs
misc_gui.c
--- a/misc_gui.c	Tue Nov 14 00:02:02 2006 +0000
+++ b/misc_gui.c	Tue Nov 14 00:27:28 2006 +0000
@@ -1206,81 +1206,35 @@
 }
 
 
-static const Widget _load_dialog_1_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,           STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13, STR_4001_LOAD_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25, STR_SORT_BY_NAME,   STR_SORT_ORDER_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25, STR_SORT_BY_DATE,   STR_SORT_ORDER_TIP},
-{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47, 0x0,                STR_NULL},
-{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   293, 0x0,                STR_NULL},
-{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59, SPR_HOUSE_ICON,     STR_SAVELOAD_HOME_BUTTON},
-{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   291, 0x0,                STR_400A_LIST_OF_DRIVES_DIRECTORIES},
-{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   281, 0x0,                STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   282,   293, 0x0,                STR_RESIZE_BUTTON},
-{   WIDGETS_END},
-};
-
-static const Widget _load_dialog_2_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13, STR_0298_LOAD_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25, STR_SORT_BY_NAME,       STR_SORT_ORDER_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25, STR_SORT_BY_DATE,       STR_SORT_ORDER_TIP},
-{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47, 0x0,                    STR_NULL},
-{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   293, 0x0,                    STR_NULL},
-{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59, SPR_HOUSE_ICON,         STR_SAVELOAD_HOME_BUTTON},
-{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   291, 0x0,                    STR_400A_LIST_OF_DRIVES_DIRECTORIES},
-{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   281, 0x0,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   282,   293, 0x0,                    STR_RESIZE_BUTTON},
-{   WIDGETS_END},
-};
-
-static const Widget _load_dialog_3_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13,  STR_00C5,                STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13,  STR_4011_LOAD_HEIGHTMAP, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25,  STR_SORT_BY_NAME,        STR_SORT_ORDER_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25,  STR_SORT_BY_DATE,        STR_SORT_ORDER_TIP},
-{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47,  0x0,                     STR_NULL},
-{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   293,  0x0,                     STR_NULL},
-{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59,  SPR_HOUSE_ICON,          STR_SAVELOAD_HOME_BUTTON},
-{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   291,  0x0,                     STR_400A_LIST_OF_DRIVES_DIRECTORIES},
-{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   281,  0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   282,   293,  0x0,                     STR_RESIZE_BUTTON},
+static const Widget _load_dialog_widgets[] = {
+{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,         STR_018B_CLOSE_WINDOW},
+{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13, STR_NULL,         STR_018C_WINDOW_TITLE_DRAG_THIS},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
+{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47, 0x0,              STR_NULL},
+{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   293, 0x0,              STR_NULL},
+{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59, SPR_HOUSE_ICON,   STR_SAVELOAD_HOME_BUTTON},
+{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   291, 0x0,              STR_400A_LIST_OF_DRIVES_DIRECTORIES},
+{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   281, 0x0,              STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   282,   293, 0x0,              STR_RESIZE_BUTTON},
 {   WIDGETS_END},
 };
 
 static const Widget _save_dialog_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,           STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13, STR_4000_SAVE_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25, STR_SORT_BY_NAME,   STR_SORT_ORDER_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25, STR_SORT_BY_DATE,   STR_SORT_ORDER_TIP},
-{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47, 0x0,                STR_NULL},
-{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   291, 0x0,                STR_NULL},
-{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59, SPR_HOUSE_ICON,     STR_SAVELOAD_HOME_BUTTON},
-{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   290, 0x0,                STR_400A_LIST_OF_DRIVES_DIRECTORIES},
-{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   291, 0x0,                STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{      WWT_PANEL,    RESIZE_RTB,    14,     0,   256,   292,   307, 0x0,                STR_NULL},
-{      WWT_PANEL,    RESIZE_RTB,    14,     2,   254,   294,   305, 0x0,                STR_400B_CURRENTLY_SELECTED_NAME},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   127,   308,   319, STR_4003_DELETE,    STR_400C_DELETE_THE_CURRENTLY_SELECTED},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   128,   244,   308,   319, STR_4002_SAVE,      STR_400D_SAVE_THE_CURRENT_GAME_USING},
-{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   308,   319, 0x0,                STR_RESIZE_BUTTON},
-{   WIDGETS_END},
-};
-
-static const Widget _save_dialog_scen_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13, STR_0299_SAVE_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25, STR_SORT_BY_NAME,       STR_SORT_ORDER_TIP},
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25, STR_SORT_BY_DATE,       STR_SORT_ORDER_TIP},
-{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47, 0x0,                    STR_NULL},
-{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   291, 0x0,                    STR_NULL},
-{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59, SPR_HOUSE_ICON,         STR_SAVELOAD_HOME_BUTTON},
-{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   290, 0x0,                    STR_400A_LIST_OF_DRIVES_DIRECTORIES},
-{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   291, 0x0,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{      WWT_PANEL,    RESIZE_RTB,    14,     0,   256,   292,   307, 0x0,                    STR_NULL},
-{      WWT_PANEL,    RESIZE_RTB,    14,     2,   254,   294,   305, 0x0,                    STR_400B_CURRENTLY_SELECTED_NAME},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   127,   308,   319, STR_4003_DELETE,        STR_400C_DELETE_THE_CURRENTLY_SELECTED},
-{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   128,   244,   308,   319, STR_4002_SAVE,          STR_400D_SAVE_THE_CURRENT_GAME_USING},
-{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   308,   319, 0x0,                    STR_RESIZE_BUTTON},
+{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,         STR_018B_CLOSE_WINDOW},
+{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13, STR_NULL,         STR_018C_WINDOW_TITLE_DRAG_THIS},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
+{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47, 0x0,              STR_NULL},
+{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   291, 0x0,              STR_NULL},
+{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59, SPR_HOUSE_ICON,   STR_SAVELOAD_HOME_BUTTON},
+{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   290, 0x0,              STR_400A_LIST_OF_DRIVES_DIRECTORIES},
+{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   291, 0x0,              STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{      WWT_PANEL,    RESIZE_RTB,    14,     0,   256,   292,   307, 0x0,              STR_NULL},
+{      WWT_PANEL,    RESIZE_RTB,    14,     2,   254,   294,   305, 0x0,              STR_400B_CURRENTLY_SELECTED_NAME},
+{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   127,   308,   319, STR_4003_DELETE,  STR_400C_DELETE_THE_CURRENTLY_SELECTED},
+{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   128,   244,   308,   319, STR_4002_SAVE,    STR_400D_SAVE_THE_CURRENT_GAME_USING},
+{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   308,   319, 0x0,              STR_RESIZE_BUTTON},
 {   WIDGETS_END},
 };
 
@@ -1556,15 +1510,7 @@
 	WDP_CENTER, WDP_CENTER, 257, 294,
 	WC_SAVELOAD,0,
 	WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
-	_load_dialog_1_widgets,
-	SaveLoadDlgWndProc,
-};
-
-static const WindowDesc _load_dialog_scen_desc = {
-	WDP_CENTER, WDP_CENTER, 257, 294,
-	WC_SAVELOAD,0,
-	WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
-	_load_dialog_2_widgets,
+	_load_dialog_widgets,
 	SaveLoadDlgWndProc,
 };
 
@@ -1576,33 +1522,19 @@
 	SaveLoadDlgWndProc,
 };
 
-static const WindowDesc _save_dialog_scen_desc = {
-	WDP_CENTER, WDP_CENTER, 257, 320,
-	WC_SAVELOAD,0,
-	WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
-	_save_dialog_scen_widgets,
-	SaveLoadDlgWndProc,
-};
-
-static const WindowDesc _load_dialog_heightmap_desc = {
-	WDP_CENTER, WDP_CENTER, 257, 294,
-	WC_SAVELOAD,0,
-	WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
-	_load_dialog_3_widgets,
-	SaveLoadDlgWndProc,
-};
-
-static const WindowDesc * const _saveload_dialogs[] = {
-	&_load_dialog_desc,
-	&_load_dialog_scen_desc,
-	&_save_dialog_desc,
-	&_save_dialog_scen_desc,
-	&_load_dialog_heightmap_desc,
-};
-
 void ShowSaveLoadDialog(int mode)
 {
+	static const StringID saveload_captions[] = {
+		STR_4001_LOAD_GAME,
+		STR_0298_LOAD_SCENARIO,
+		STR_4000_SAVE_GAME,
+		STR_0299_SAVE_SCENARIO,
+		STR_4011_LOAD_HEIGHTMAP,
+	};
+
 	Window *w;
+	const WindowDesc *sld = &_save_dialog_desc;
+
 
 	SetObjectToPlace(SPR_CURSOR_ZZZ, 0, 0, 0);
 	DeleteWindowById(WC_QUERY_STRING, 0);
@@ -1614,9 +1546,12 @@
 	switch (mode) {
 		case SLD_SAVE_GAME:     GenerateFileName(); break;
 		case SLD_SAVE_SCENARIO: strcpy(_edit_str_buf, "UNNAMED"); break;
+		default:                sld = &_load_dialog_desc; break;
 	}
 
-	w = AllocateWindowDesc(_saveload_dialogs[mode]);
+	assert((uint)mode < lengthof(saveload_captions));
+	w = AllocateWindowDesc(sld);
+	w->widget[1].data = saveload_captions[mode];
 	w->vscroll.cap = 24;
 	w->resize.step_width = 2;
 	w->resize.step_height = 10;