(svn r10496) -Feature: Replace all the windows for Industry building by a more flexible one.
authorbelugas
Tue, 10 Jul 2007 00:59:00 +0000
changeset 7218 8e73038b7586
parent 7217 ff5b3c502e84
child 7219 46fcc725cad3
(svn r10496) -Feature: Replace all the windows for Industry building by a more flexible one.
Thanks to Csaboka (from TTDPatch dev team) for his hints and original design (which i've found while it was halfway done, so i could make it more compliant ;)). Don't expect it to be a carbon-copy though. A few differences can be found here and there.
Thanks to Rubidium for his helping hand. Hope you will like it as we do :)
src/industry_gui.cpp
src/lang/american.txt
src/lang/brazilian_portuguese.txt
src/lang/bulgarian.txt
src/lang/catalan.txt
src/lang/croatian.txt
src/lang/czech.txt
src/lang/danish.txt
src/lang/dutch.txt
src/lang/english.txt
src/lang/esperanto.txt
src/lang/estonian.txt
src/lang/finnish.txt
src/lang/french.txt
src/lang/galician.txt
src/lang/german.txt
src/lang/hungarian.txt
src/lang/icelandic.txt
src/lang/italian.txt
src/lang/japanese.txt
src/lang/korean.txt
src/lang/lithuanian.txt
src/lang/norwegian_bokmal.txt
src/lang/norwegian_nynorsk.txt
src/lang/piglatin.txt
src/lang/polish.txt
src/lang/portuguese.txt
src/lang/romanian.txt
src/lang/russian.txt
src/lang/simplified_chinese.txt
src/lang/slovak.txt
src/lang/slovenian.txt
src/lang/spanish.txt
src/lang/swedish.txt
src/lang/traditional_chinese.txt
src/lang/turkish.txt
src/lang/ukrainian.txt
src/lang/unfinished/afrikaans.txt
src/lang/unfinished/greek.txt
src/lang/unfinished/latvian.txt
src/main_gui.cpp
--- a/src/industry_gui.cpp	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/industry_gui.cpp	Tue Jul 10 00:59:00 2007 +0000
@@ -25,262 +25,322 @@
 #include "newgrf_industries.h"
 #include "newgrf_text.h"
 
-/* industries per climate, according to the different construction windows */
-const byte _build_industry_types[4][12] = {
-	{  1,  2,  4,  6,  8,  0,  3,  5,  9, 11, 18 },
-	{  1, 14,  4, 13,  7,  0,  3,  9, 11, 15 },
-	{ 25, 13,  4, 23, 22, 11, 17, 10, 24, 19, 20, 21 },
-	{ 27, 30, 31, 33, 26, 28, 29, 32, 34, 35, 36 },
+extern Industry *CreateNewIndustry(TileIndex tile, IndustryType type);
+
+/**
+ * Search callback function for TryBuildIndustry
+ * @param tile to test
+ * @param data that is passed by the caller.  In this case, the type of industry been tested
+ * @return the success (or not) of the operation
+ */
+static bool SearchTileForIndustry(TileIndex tile, uint32 data)
+{
+	return CreateNewIndustry(tile, data) != NULL;
+}
+
+/**
+ * Perform a 9*9 tiles circular search around a tile
+ * in order to find a suitable zone to create the desired industry
+ * @param tile to start search for
+ * @param type of the desired industry
+ * @return the success (or not) of the operation
+ */
+static bool TryBuildIndustry(TileIndex tile, int type)
+{
+	return CircularTileSearch(tile, 9, SearchTileForIndustry, type);
+}
+bool _ignore_restrictions;
+
+enum {
+	DYNA_INDU_MATRIX_WIDGET = 2,
+	DYNA_INDU_INFOPANEL = 4,
+	DYNA_INDU_FUND_WIDGET,
+	DYNA_INDU_RESIZE_WIDGET,
 };
 
-static void UpdateIndustryProduction(Industry *i);
+static struct IndustryData {
+	uint16 count;
+	IndustryType select;
+	byte index[NUM_INDUSTRYTYPES + 1];
+	StringID additional_text[NUM_INDUSTRYTYPES + 1];
+} _industrydata;
 
-static void BuildIndustryWndProc(Window *w, WindowEvent *e)
+static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
 {
 	switch (e->event) {
-	case WE_PAINT:
-		DrawWindowWidgets(w);
-		if (_thd.place_mode == 1 && _thd.window_class == WC_BUILD_INDUSTRY) {
-			int ind_type = _build_industry_types[_opt_ptr->landscape][WP(w, def_d).data_1];
+		case WE_CREATE: {
+			IndustryType ind;
+			const IndustrySpec *indsp;
 
-			SetDParam(0, GetIndustrySpec(ind_type)->GetConstructionCost());
-			DrawStringCentered(85, w->height - 21, STR_482F_COST, 0);
-		}
-		break;
+			/* Shorten the window to the equivalant of the additionnal purchase
+			 * info coming from the callback.  SO it will only be available to tis full
+			 * height when newindistries are loaded */
+			if (!_loaded_newgrf_features.has_newindustries) {
+				w->widget[DYNA_INDU_INFOPANEL].bottom -= 44;
+				w->widget[DYNA_INDU_FUND_WIDGET].bottom -= 44;
+				w->widget[DYNA_INDU_FUND_WIDGET].top -= 44;
+				w->widget[DYNA_INDU_RESIZE_WIDGET].bottom -= 44;
+				w->widget[DYNA_INDU_RESIZE_WIDGET].top -= 44;
+				w->resize.height = w->height -= 44;
+			}
 
-	case WE_CLICK: {
-		int wid = e->we.click.widget;
-		if (wid >= 3) {
-			if (HandlePlacePushButton(w, wid, SPR_CURSOR_INDUSTRY, 1, NULL))
-				WP(w, def_d).data_1 = wid - 3;
+			/* Initilialize structures */
+			memset(&_industrydata.index, 0xFF, NUM_INDUSTRYTYPES);
+			memset(&_industrydata.additional_text, STR_NULL, NUM_INDUSTRYTYPES);
+			_industrydata.count = 0;
+
+			/* first indutry type is selected.
+			 * I'll be damned if there are none available ;) */
+			_industrydata.select = 0;
+			w->vscroll.cap = 8; // rows in grid, same in scroller
+			w->resize.step_height = 13;
+
+			if (_game_mode == GM_EDITOR) { // give room for the Many Random "button"
+				_industrydata.index[_industrydata.count] = INVALID_INDUSTRYTYPE;
+				_industrydata.count++;
+			}
+
+			/* We'll perform two distinct loops, one for secondary industries, and the other one for
+			 * primary ones. Each loop will fill the _industrydata structure. */
+			for (ind = IT_COAL_MINE; ind < NUM_INDUSTRYTYPES; ind++) {
+				indsp = GetIndustrySpec(ind);
+				if (indsp->enabled && (!indsp->IsRawIndustry() || _game_mode == GM_EDITOR)) {
+					_industrydata.index[_industrydata.count] = ind;
+					_industrydata.count++;
+				}
+			}
+
+			if (_patches.raw_industry_construction != 0 && _game_mode != GM_EDITOR) {
+				for (ind = IT_COAL_MINE; ind < NUM_INDUSTRYTYPES; ind++) {
+					indsp = GetIndustrySpec(ind);
+					if (indsp->enabled && indsp->IsRawIndustry()) {
+						_industrydata.index[_industrydata.count] = ind;
+						_industrydata.count++;
+					}
+				}
+			}
+		} break;
+
+		case WE_PAINT: {
+			const IndustrySpec *indsp = (_industrydata.index[_industrydata.select] == INVALID_INDUSTRYTYPE) ? NULL : GetIndustrySpec(_industrydata.index[_industrydata.select]);
+			StringID str = STR_4827_REQUIRES;
+			int x_str = w->widget[DYNA_INDU_INFOPANEL].left + 3;
+			int y_str = w->widget[DYNA_INDU_INFOPANEL].top + 3;
+			const Widget *wi = &w->widget[DYNA_INDU_INFOPANEL];
+			int max_width = wi->right - wi->left - 4;
+
+			/* Raw industries might be prospected. Show this fact by changing the string */
+			if (_game_mode == GM_EDITOR) {
+				w->widget[DYNA_INDU_FUND_WIDGET].data = STR_BUILD_NEW_INDUSTRY;
+			} else {
+				w->widget[DYNA_INDU_FUND_WIDGET].data = (_patches.raw_industry_construction == 2 && indsp->IsRawIndustry()) ? STR_PROSPECT_NEW_INDUSTRY : STR_FUND_NEW_INDUSTRY;
+			}
+
+			SetVScrollCount(w, _industrydata.count);
+
+			DrawWindowWidgets(w);
+
+			/* and now with the matrix painting */
+			for (byte i = 0; i < w->vscroll.cap && ((i + w->vscroll.pos) < _industrydata.count); i++) {
+				int offset = i * 13;
+				int x = 3;
+				int y = 16;
+				bool selected = _industrydata.select == i + w->vscroll.pos;
+
+				if (_industrydata.index[i + w->vscroll.pos] == INVALID_INDUSTRYTYPE) {
+					DrawString(21, y + offset, STR_MANY_RANDOM_INDUSTRIES, selected ? 12 : 6);
+					continue;
+				}
+				const IndustrySpec *indsp = GetIndustrySpec(_industrydata.index[i + w->vscroll.pos]);
+
+				/* Draw the name of the industry in white is selected, otherwise, in orange */
+				DrawString(20,     y + offset, indsp->name, selected ? 12 : 6);
+				GfxFillRect(x,     y + 1 + offset,  x + 10, y + 7 + offset, selected ? 15 : 0);
+				GfxFillRect(x + 1, y + 2 + offset,  x +  9, y + 6 + offset, indsp->map_colour);
+			}
+
+			if (_industrydata.index[_industrydata.select] == INVALID_INDUSTRYTYPE) {
+				DrawStringMultiLine(x_str, y_str, STR_RANDOM_INDUSTRIES_TIP, max_width, wi->bottom - wi->top - 40);
+				break;
+			}
+
+			if (_game_mode != GM_EDITOR) {
+				SetDParam(0, indsp->GetConstructionCost());
+				DrawStringTruncated(x_str, y_str, STR_482F_COST, 0, max_width);
+				y_str += 11;
+			}
+
+			/* Draw the accepted cargos, if any. Otherwhise, will print "Nothing" */
+			if (indsp->accepts_cargo[0] != CT_INVALID) {
+				SetDParam(0, GetCargo(indsp->accepts_cargo[0])->name);
+				if (indsp->accepts_cargo[1] != CT_INVALID) {
+					SetDParam(1, GetCargo(indsp->accepts_cargo[1])->name);
+					str = STR_4828_REQUIRES;
+					if (indsp->accepts_cargo[2] != CT_INVALID) {
+						SetDParam(2, GetCargo(indsp->accepts_cargo[2])->name);
+						str = STR_4829_REQUIRES;
+					}
+				}
+			} else {
+				SetDParam(0, STR_00D0_NOTHING);
+			}
+			DrawStringTruncated(x_str, y_str, str, 0, max_width);
+
+			y_str += 11;
+			/* Draw the produced cargos, if any. Otherwhise, will print "Nothing" */
+			str = STR_4827_PRODUCES;
+			if (indsp->produced_cargo[0] != CT_INVALID) {
+				SetDParam(0, GetCargo(indsp->produced_cargo[0])->name);
+				if (indsp->produced_cargo[1] != CT_INVALID) {
+					SetDParam(1, GetCargo(indsp->produced_cargo[1])->name);
+					str = STR_4828_PRODUCES;
+				}
+			} else {
+				SetDParam(0, STR_00D0_NOTHING);
+			}
+			DrawStringTruncated(x_str, y_str, str, 0, max_width);
+
+			/* Get the additional purchase info text, if it has not already been */
+			if (_industrydata.additional_text[_industrydata.select] == STR_NULL) {   // Have i been called already?
+				if (HASBIT(indsp->callback_flags, CBM_IND_FUND_MORE_TEXT)) {          // No. Can it be called?
+					uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_FUND_MORE_TEXT, 0, 0, NULL, _industrydata.index[_industrydata.select], INVALID_TILE);
+					if (callback_res != CALLBACK_FAILED) {  // Did it failed?
+						StringID newtxt = GetGRFStringID(indsp->grf_prop.grffile->grfid, 0xD000 + callback_res);  // No. here's the new string
+						_industrydata.additional_text[_industrydata.select] = newtxt;   // Store it for further usage
+					}
+				}
+			}
+
+			y_str += 11;
+			/* Draw the Additional purchase text, provided by newgrf callback, if any.
+			 * Otherwhise, will print Nothing */
+			if (_industrydata.additional_text[_industrydata.select] != STR_NULL &&
+					_industrydata.additional_text[_industrydata.select] != STR_UNDEFINED) {
+
+				SetDParam(0, _industrydata.additional_text[_industrydata.select]);
+				DrawStringMultiLine(x_str, y_str, STR_JUST_STRING, max_width, wi->bottom - wi->top - 40);  // text is white, for now
+			}
+		} break;
+
+		case WE_CLICK:
+			switch (e->we.click.widget) {
+				case DYNA_INDU_MATRIX_WIDGET: {
+					IndustryType type;
+					int y = (e->we.click.pt.y - w->widget[DYNA_INDU_MATRIX_WIDGET].top) / 13 + w->vscroll.pos ;
+
+					if (y >= 0 && y < _industrydata.count) { //Isit within the boundaries of available data?
+						_industrydata.select = y;
+						type = _industrydata.index[_industrydata.select];
+
+						SetWindowDirty(w);
+						if ((_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 &&	GetIndustrySpec(type)->IsRawIndustry()) ||
+								type == INVALID_INDUSTRYTYPE) {
+							/* Reset the button state if going to prospecting or "build many industries" */
+							RaiseWindowButtons(w);
+							ResetObjectToPlace();
+						}
+					}
+				} break;
+
+				case DYNA_INDU_FUND_WIDGET: {
+					IndustryType type = _industrydata.index[_industrydata.select];
+
+					if (type == INVALID_INDUSTRYTYPE) {
+						HandleButtonClick(w, DYNA_INDU_FUND_WIDGET);
+						WP(w, def_d).data_1 = -1;
+
+						if (GetNumTowns() == 0) {
+							ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_CAN_T_GENERATE_INDUSTRIES, 0, 0);
+						} else {
+							extern void GenerateIndustries();
+							_generating_world = true;
+							GenerateIndustries();
+							_generating_world = false;
+						}
+					} else if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 && GetIndustrySpec(type)->IsRawIndustry()) {
+						DoCommandP(0, type, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
+						HandleButtonClick(w, DYNA_INDU_FUND_WIDGET);
+						WP(w, def_d).data_1 = -1;
+					} else if (HandlePlacePushButton(w, DYNA_INDU_FUND_WIDGET, SPR_CURSOR_INDUSTRY, 1, NULL)) {
+							WP(w, def_d).data_1 = _industrydata.select;
+					}
+				}
+				break;
+	} break;
+
+	case WE_RESIZE: {
+		w->vscroll.cap  += e->we.sizing.diff.y / (int)w->resize.step_height;
+		w->widget[DYNA_INDU_MATRIX_WIDGET].data = (w->vscroll.cap << 8) + 1;
+	} break;
+
+	case WE_PLACE_OBJ: {
+		IndustryType type = _industrydata.index[_industrydata.select];
+
+		if (WP(w, def_d).data_1 == -1) break;
+		if (_game_mode == GM_EDITOR) {
+			/* Show error if no town exists at all */
+			if (GetNumTowns() == 0) {
+				SetDParam(0, GetIndustrySpec(type)->name);
+				ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
+				return;
+			}
+
+			_current_player = OWNER_NONE;
+			_generating_world = true;
+			_ignore_restrictions = true;
+			if (!TryBuildIndustry(e->we.place.tile, type)) {
+				SetDParam(0, GetIndustrySpec(type)->name);
+				ShowErrorMessage(_error_message, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
+			} else {
+				ResetObjectToPlace();
+			}
+			_ignore_restrictions = false;
+			_generating_world = false;
+		} else if (DoCommandP(e->we.place.tile, type, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY))) {
+			ResetObjectToPlace();
 		}
 	} break;
 
-	case WE_PLACE_OBJ:
-		if (DoCommandP(e->we.place.tile, _build_industry_types[_opt_ptr->landscape][WP(w, def_d).data_1], 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY)))
-			ResetObjectToPlace();
+	case WE_ABORT_PLACE_OBJ:
+		RaiseWindowButtons(w);
 		break;
 
-	case WE_ABORT_PLACE_OBJ:
-		RaiseWindowButtons(w);
+	case WE_TIMEOUT:
+		if (WP(w, def_d).data_1 == -1) {
+			RaiseWindowButtons(w);
+			WP(w, def_d).data_1 = 0;
+		}
 		break;
 	}
 }
 
-static const Widget _build_industry_land0_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   115, 0x0,                            STR_NULL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_0242_SAWMILL,               STR_0264_CONSTRUCT_SAWMILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0246_FACTORY,               STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0247_STEEL_MILL,            STR_0269_CONSTRUCT_STEEL_MILL},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land1_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   115, 0x0,                            STR_NULL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_024C_PAPER_MILL,            STR_026E_CONSTRUCT_PAPER_MILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_024E_PRINTING_WORKS,        STR_0270_CONSTRUCT_PRINTING_WORKS},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land2_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   115, 0x0,                            STR_NULL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0250_LUMBER_MILL,           STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0246_FACTORY,               STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0254_WATER_TOWER,           STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land3_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   115, 0x0,                            STR_NULL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0258_CANDY_FACTORY,         STR_027B_CONSTRUCT_CANDY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_025B_TOY_SHOP,              STR_027E_CONSTRUCT_TOY_SHOP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_025C_TOY_FACTORY,           STR_027F_CONSTRUCT_TOY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_025E_FIZZY_DRINK_FACTORY,   STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land0_widgets_extra[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   187, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_0242_SAWMILL,               STR_0264_CONSTRUCT_SAWMILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0246_FACTORY,               STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0247_STEEL_MILL,            STR_0269_CONSTRUCT_STEEL_MILL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    84,    95, STR_0240_COAL_MINE,             STR_CONSTRUCT_COAL_MINE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    97,   108, STR_0243_FOREST,                STR_CONSTRUCT_FOREST_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   110,   121, STR_0245_OIL_RIG,               STR_CONSTRUCT_OIL_RIG_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   123,   134, STR_0248_FARM,                  STR_CONSTRUCT_FARM_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   136,   147, STR_024A_OIL_WELLS,             STR_CONSTRUCT_OIL_WELLS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   149,   160, STR_0249_IRON_ORE_MINE,         STR_CONSTRUCT_IRON_ORE_MINE_TIP},
-
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land1_widgets_extra[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   174, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_024C_PAPER_MILL,            STR_026E_CONSTRUCT_PAPER_MILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_024E_PRINTING_WORKS,        STR_0270_CONSTRUCT_PRINTING_WORKS},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    84,    95, STR_0240_COAL_MINE,             STR_CONSTRUCT_COAL_MINE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    97,   108, STR_0243_FOREST,                STR_CONSTRUCT_FOREST_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   110,   121, STR_0248_FARM,                  STR_CONSTRUCT_FARM_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   123,   134, STR_024A_OIL_WELLS,             STR_CONSTRUCT_OIL_WELLS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   136,   147, STR_024F_GOLD_MINE,             STR_CONSTRUCT_GOLD_MINE_TIP},
+static const Widget _build_dynamic_industry_widgets[] = {
+{   WWT_CLOSEBOX,    RESIZE_NONE,    7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
+{    WWT_CAPTION,   RESIZE_RIGHT,    7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
+{     WWT_MATRIX,      RESIZE_RB,    7,     0,   157,    14,   118, 0x801,                          STR_INDUSTRY_SELECTION_HINT},
+{  WWT_SCROLLBAR,     RESIZE_LRB,    7,   158,   169,    14,   118, 0x0,                            STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{      WWT_PANEL,     RESIZE_RTB,    7,     0,   169,   119,   199, 0x0,                            STR_NULL},
+{    WWT_TEXTBTN,     RESIZE_RTB,    7,     0,   157,   200,   211, STR_FUND_NEW_INDUSTRY,          STR_NULL},
+{  WWT_RESIZEBOX,    RESIZE_LRTB,    7,   158,   169,   200,   211, 0x0,                            STR_RESIZE_BUTTON},
 {   WIDGETS_END},
 };
 
-static const Widget _build_industry_land2_widgets_extra[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   200, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0250_LUMBER_MILL,           STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0246_FACTORY,               STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0254_WATER_TOWER,           STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    84,    95, STR_024A_OIL_WELLS,             STR_CONSTRUCT_OIL_WELLS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    97,   108, STR_0255_DIAMOND_MINE,          STR_CONSTRUCT_DIAMOND_MINE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   110,   121, STR_0256_COPPER_ORE_MINE,       STR_CONSTRUCT_COPPER_ORE_MINE_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   123,   134, STR_0248_FARM,                  STR_CONSTRUCT_FARM_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   136,   147, STR_0251_FRUIT_PLANTATION,      STR_CONSTRUCT_FRUIT_PLANTATION_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   149,   160, STR_0252_RUBBER_PLANTATION,     STR_CONSTRUCT_RUBBER_PLANTATION_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   162,   173, STR_0253_WATER_SUPPLY,          STR_CONSTRUCT_WATER_SUPPLY_TIP},
-{   WIDGETS_END},
-};
-
-static const Widget _build_industry_land3_widgets_extra[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_0314_FUND_NEW_INDUSTRY,     STR_018C_WINDOW_TITLE_DRAG_THIS},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   187, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_0258_CANDY_FACTORY,         STR_027B_CONSTRUCT_CANDY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    29,    40, STR_025B_TOY_SHOP,              STR_027E_CONSTRUCT_TOY_SHOP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_025C_TOY_FACTORY,           STR_027F_CONSTRUCT_TOY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_025E_FIZZY_DRINK_FACTORY,   STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    71,    82, STR_0257_COTTON_CANDY_FOREST,   STR_CONSTRUCT_COTTON_CANDY_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    84,    95, STR_0259_BATTERY_FARM,          STR_CONSTRUCT_BATTERY_FARM_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    97,   108, STR_025A_COLA_WELLS,            STR_CONSTRUCT_COLA_WELLS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   110,   121, STR_025D_PLASTIC_FOUNTAINS,     STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   123,   134, STR_025F_BUBBLE_GENERATOR,      STR_CONSTRUCT_BUBBLE_GENERATOR_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   136,   147, STR_0260_TOFFEE_QUARRY,         STR_CONSTRUCT_TOFFEE_QUARRY_TIP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   149,   160, STR_0261_SUGAR_MINE,            STR_CONSTRUCT_SUGAR_MINE_TIP},
-{   WIDGETS_END},
-};
-
-
-static const WindowDesc _build_industry_land0_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 116,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land0_widgets,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land1_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 116,
+static const WindowDesc _build_industry_dynamic_desc = {
+	WDP_AUTO, WDP_AUTO, 170, 212,
 	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land1_widgets,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land2_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 116,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land2_widgets,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land3_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 116,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land3_widgets,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land0_desc_extra = {
-	WDP_AUTO, WDP_AUTO, 170, 188,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land0_widgets_extra,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land1_desc_extra = {
-	WDP_AUTO, WDP_AUTO, 170, 175,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land1_widgets_extra,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land2_desc_extra = {
-	WDP_AUTO, WDP_AUTO, 170, 201,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land2_widgets_extra,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc _build_industry_land3_desc_extra = {
-	WDP_AUTO, WDP_AUTO, 170, 188,
-	WC_BUILD_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_build_industry_land3_widgets_extra,
-	BuildIndustryWndProc
-};
-
-static const WindowDesc * const _industry_window_desc[2][4] = {
-	{
-	&_build_industry_land0_desc,
-	&_build_industry_land1_desc,
-	&_build_industry_land2_desc,
-	&_build_industry_land3_desc,
-	},
-	{
-	&_build_industry_land0_desc_extra,
-	&_build_industry_land1_desc_extra,
-	&_build_industry_land2_desc_extra,
-	&_build_industry_land3_desc_extra,
-	},
+	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE,
+	_build_dynamic_industry_widgets,
+	BuildDynamicIndustryWndProc,
 };
 
 void ShowBuildIndustryWindow()
 {
-	if (!IsValidPlayer(_current_player)) return;
-	AllocateWindowDescFront(_industry_window_desc[(_patches.raw_industry_construction == 0) ? 0 : 1][_opt_ptr->landscape], 0);
+	if (_game_mode != GM_EDITOR && !IsValidPlayer(_current_player)) return;
+	AllocateWindowDescFront(&_build_industry_dynamic_desc, 0);
 }
 
+static void UpdateIndustryProduction(Industry *i);
+
 static inline bool isProductionMinimum(const Industry *i, int pt) {
 	return i->production_rate[pt] == 1;
 }
--- a/src/lang/american.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/american.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Are you sure you want to create a random landscape?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Many random towns
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cover the map with randomly placed towns
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Many random industries
+STR_MANY_RANDOM_INDUSTRIES                                      :Many random industries
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cover the map with randomly placed industries
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Can't generate industries...
 
--- a/src/lang/brazilian_portuguese.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/brazilian_portuguese.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1243,7 +1243,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Tem certeza que deseja criar um terreno aleatório?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Várias cidades aleatórias
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cobrir o mapa com cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Várias indústrias aleatórias
+STR_MANY_RANDOM_INDUSTRIES                                      :Várias indústrias aleatórias
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Impossível gerar indústrias...
 
--- a/src/lang/bulgarian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/bulgarian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1235,7 +1235,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Потвърдете създаването на случаен терен?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Много случайни градове
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Покриване на картата със случайно поставени градове
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Много случайни индустрии
+STR_MANY_RANDOM_INDUSTRIES                                      :Много случайни индустрии
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Покриване на картата със случайно поставени индустрии
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Не може да се генерира промишленост...
 
--- a/src/lang/catalan.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/catalan.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Estàs segur que vols crear un paisatge aleatori?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Moltes poblacions aleatòries
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Omple el mapa amb poblacions situades aleatòriament
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Moltes indústries aleatòries
+STR_MANY_RANDOM_INDUSTRIES                                      :Moltes indústries aleatòries
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Omple el mapa amb indústries situades aleatòriament
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}No es poden generar indústries...
 
--- a/src/lang/croatian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/croatian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1236,7 +1236,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Jeste li sigurni da želite napraviti nasumični krajolik?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mnogo nasumičnih gradova
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Popuni kartu nasumce smještenim gradovima
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Mnoge nasumične industrije
+STR_MANY_RANDOM_INDUSTRIES                                      :Mnoge nasumične industrije
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Popuni kartu nasumce smještenim industrijama
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Ne možeš generirati gospodarstva...
 
--- a/src/lang/czech.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/czech.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1299,7 +1299,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Opravdu chceš vytvořit nový náhodný terén?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Hodně náhodných měst
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pokryje krajinu mnoha náhodnými městy
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Hodně náhodného průmyslu
+STR_MANY_RANDOM_INDUSTRIES                                      :Hodně náhodného průmyslu
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pokryje krajinu náhodným průmyslem
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nemůžu generovat průmysl...
 
--- a/src/lang/danish.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/danish.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Er du sikker på, at du vil lave et tilfældigt landskab?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mange tilfældige byer
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Dæk kortet med tilfældigt placerede byer
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Mange tilfældige industrier
+STR_MANY_RANDOM_INDUSTRIES                                      :Mange tilfældige industrier
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Dæk kortet med tilfældigt placerede industrier
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan ikke lave industrier...
 
--- a/src/lang/dutch.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/dutch.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Weet je zeker dat je een willekeurig landschap wil maken?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Veel willekeurige steden
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Bedek de kaart met willekeurig geplaatste steden
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Veel willekeurige industrieën
+STR_MANY_RANDOM_INDUSTRIES                                      :Veel willekeurige industrieën
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Bedek de kaart met willekeurig geplaatste industrieën
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan geen industrieën genereren
 
--- a/src/lang/english.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/english.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Are you sure you want to create a random landscape?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Many random towns
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cover the map with randomly placed towns
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Many random industries
+STR_MANY_RANDOM_INDUSTRIES                                      :Many random industries
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cover the map with randomly placed industries
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Can't generate industries...
 
@@ -1980,8 +1980,12 @@
 STR_4829_REQUIRES                                               :{BLACK}Requires: {YELLOW}{STRING}, {STRING}, {STRING}
 ############ range for requires ends
 
+############ range for produces starts
 STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING                      :{BLACK}Cargo waiting to be processed:
 STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO                     :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES                                               :{BLACK}Produces: {YELLOW}{STRING}
+STR_4828_PRODUCES                                               :{BLACK}Produces: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
 
 STR_482A_PRODUCTION_LAST_MONTH                                  :{BLACK}Production last month:
 STR_482B_TRANSPORTED                                            :{YELLOW}{CARGO}{BLACK} ({COMMA}% transported)
@@ -3372,3 +3376,8 @@
 STR_PREVIOUS_SIGN_TOOLTIP                                       :{BLACK}Go to previous sign
 
 ########
+
+STR_FUND_NEW_INDUSTRY                                           :{BLACK}Fund
+STR_PROSPECT_NEW_INDUSTRY                                       :{BLACK}Prospect
+STR_BUILD_NEW_INDUSTRY                                          :{BLACK}Build
+STR_INDUSTRY_SELECTION_HINT                                     :{BLACK}Choose the appropriate industry from this list
--- a/src/lang/esperanto.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/esperanto.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1224,7 +1224,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Ĉu vi certas ke vi volas krei hazardan landaspekton?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Multaj hazardaj urboj
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Kovru la mapon per hazarde metitajn urbojn
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Multaj hazardaj industrioj
+STR_MANY_RANDOM_INDUSTRIES                                      :Multaj hazardaj industrioj
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Kovru la mapon per hazarde metitajn industriojn
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Ne povas generi industriojn...
 
--- a/src/lang/estonian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/estonian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1341,7 +1341,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Oled sa kindel, et soovid luua suvalist maastikku?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Palju suvalisi linnu
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Kaardi katmine suvaliselt asetatud linnadega
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Palju suvalisi tööstusi
+STR_MANY_RANDOM_INDUSTRIES                                      :Palju suvalisi tööstusi
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Kata kaart suvaliselt paigutatud tööstustega
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Tööstust ei saa tekitada...
 
--- a/src/lang/finnish.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/finnish.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1221,7 +1221,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Haluatko todella luoda satunnaisen maaston?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Monta satunnaista kaupunkia
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Peitä kartta satunnaisesti sijoitetuilla kaupungeilla.
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Monta satunnaista teollisuusaluetta
+STR_MANY_RANDOM_INDUSTRIES                                      :Monta satunnaista teollisuusaluetta
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Peitä kartta satunnaisesti sijoitetuilla teollisuusalueilla.
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Teollisuusaluetta ei voi luoda...
 
--- a/src/lang/french.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/french.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1242,7 +1242,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Etes-vous sûr de vouloir créer un terrain aléatoire?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Beaucoup de villes au hasard
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Couvrir la carte avec des villes placées aléatoirement
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Beaucoup d'industries au hasard
+STR_MANY_RANDOM_INDUSTRIES                                      :Beaucoup d'industries au hasard
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Couvrir la carte avec des industries placées au hasard
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Ne peut pas générer les industries...
 
--- a/src/lang/galician.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/galician.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1148,7 +1148,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}¿Estás seguro de querer crear unha paisaxe aleatoria?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Varias cidades aleatorias
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cubri-lo mapa con cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Varias industrias aleatorias
+STR_MANY_RANDOM_INDUSTRIES                                      :Varias industrias aleatorias
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cubri-lo mapa con industrias colocadas aleatoriamente
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Non se poden xera-las industrias...
 
--- a/src/lang/german.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/german.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1237,7 +1237,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Soll wirklich eine zufällige Landschaft erzeugt werden?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Viele zufällige Städte
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Bedecke die Karte mit zufällig platzierten Städten
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Viele zufällige Industrien
+STR_MANY_RANDOM_INDUSTRIES                                      :Viele zufällige Industrien
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Bedecke die Karte mit zufällig platzierten Industrien
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kann keine Industrie erzeugen...
 
--- a/src/lang/hungarian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/hungarian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1307,7 +1307,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Biztos vagy benne hogy véletlen tájképet akarsz létrehozni?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Sok véletlen város
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Elhelyez a térképen véletlenszerüen sok várost.
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Sok véletlen gazdasági épület
+STR_MANY_RANDOM_INDUSTRIES                                      :Sok véletlen gazdasági épület
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Elhelyez a térképen véletlenszerüen sok gazdasági épületet
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nem tudok gazdasági épületet generálni...
 
--- a/src/lang/icelandic.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/icelandic.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1192,7 +1192,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Ertu viss um að þú viljir búa til handahófskennt land?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Búa til marga bæi
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Þekja landið með bæjum
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Búa til marga iðnaði
+STR_MANY_RANDOM_INDUSTRIES                                      :Búa til marga iðnaði
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Þekja kortið mörgum handahófskenndum iðnöðum
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Get ekki búið til iðnað...
 
--- a/src/lang/italian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/italian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1243,7 +1243,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Si è sicuri di voler generare un paesaggio casuale?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Alcune città casuali
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Copre la mappa con città posizionate casualmente
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Alcune industrie casuali
+STR_MANY_RANDOM_INDUSTRIES                                      :Alcune industrie casuali
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Copre la mappa con industrie posizionate casualmente
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Impossibile generare industrie...
 
--- a/src/lang/japanese.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/japanese.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}ランダムな地形を作成してもよろしいですか?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}多くのランダムな市町村
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}地図にたくさんの市町村を建設します
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}多くのランダムな産業
+STR_MANY_RANDOM_INDUSTRIES                                      :多くのランダムな産業
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}地図にたくさんの産業を建設します
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}産業が建設できません...
 
--- a/src/lang/korean.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/korean.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1242,7 +1242,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}무작위로 지형을 생성하시겠습니까?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}무작위 도시 건설
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}무작위로 도시를 건설합니다.
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}무작위 산업시설 건설
+STR_MANY_RANDOM_INDUSTRIES                                      :무작위 산업시설 건설
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}무작위로 산업시설을 건설합니다.
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}산업시설을 생성할 수 없습니다...
 
--- a/src/lang/lithuanian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/lithuanian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1224,7 +1224,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Ar tikrai norite sukurti atsitiktinį kraštovaizdį?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Daug atsitiktinių miestų
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Sukuria miestus atsitiktinėse žemėlapio vietose
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Daug atsitiktinių pramonės įmonių
+STR_MANY_RANDOM_INDUSTRIES                                      :Daug atsitiktinių pramonės įmonių
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Sukuria pramonės įmones atsitiktinėse žemėlapio vietose
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Neimanoma sukurti pramones imoniu...
 
--- a/src/lang/norwegian_bokmal.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/norwegian_bokmal.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1222,7 +1222,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Er du sikker på at du vil lage et tilfeldig generert landskap?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mange tilfeldige byer
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Dekk kartet med tilfeldig plasserte byer
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Mange tilfeldige industrier
+STR_MANY_RANDOM_INDUSTRIES                                      :Mange tilfeldige industrier
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Dekk kartet med tilfeldig plasserte industrier
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan ikke generere industrier...
 
--- a/src/lang/norwegian_nynorsk.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/norwegian_nynorsk.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1238,7 +1238,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Er du sikker på at du vil lage eit tilfeldig generert landskap?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mange tilfeldige byar
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Dekk kartet med tilfeldig plasserte byar
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Mange tilfeldige industriar
+STR_MANY_RANDOM_INDUSTRIES                                      :Mange tilfeldige industriar
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Dekk kartet med tilfeldig plasserte industriar
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan ikkje lage industriar...
 
--- a/src/lang/piglatin.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/piglatin.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Areway ouyay uresay ouyay antway otay eatecray away andomray andscapelay?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Anymay andomray ownstay
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Overcay ethay apmay ithway andomlyray acedplay ownstay
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Anymay andomray industriesway
+STR_MANY_RANDOM_INDUSTRIES                                      :Anymay andomray industriesway
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Overcay ethay apmay ithway andomlyray acedplay industriesway
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}An'tcay enerategay industriesway...
 
--- a/src/lang/polish.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/polish.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1324,7 +1324,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Jesteś pewien że chcesz stworzyć losowy krajobraz?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Wiele losowych miast
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pokryj mapę losowo położonymi miastami
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Wiele losowych przedsiębiorstw
+STR_MANY_RANDOM_INDUSTRIES                                      :Wiele losowych przedsiębiorstw
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pokryj mapę losowo położonymi przedsiębiorstwami
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nie można stworzyć przedsiębiorstw...
 
--- a/src/lang/portuguese.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/portuguese.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Tem a certeza que deseja criar um terreno aleatório?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Várias cidades aleatórias
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cobrir o mapa com cidades colocadas aleatoriamente
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Várias indústrias aleatórias
+STR_MANY_RANDOM_INDUSTRIES                                      :Várias indústrias aleatórias
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Não é possível gerar indústrias...
 
--- a/src/lang/romanian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/romanian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Esti sigur cã vrei sã creezi un peisaj aleator?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Mai multe orase aleatoare
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Umple harta cu orase generate aleator
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Multe industrii aleatoare
+STR_MANY_RANDOM_INDUSTRIES                                      :Multe industrii aleatoare
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Umple harta cu industrii generate aleator
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nu pot genera industrii...
 
--- a/src/lang/russian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/russian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1243,7 +1243,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Вы уверены, что хотите создать случайную землю?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Много случайных городов
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Случайно разместить на карте города
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Много произвольных промышленностей
+STR_MANY_RANDOM_INDUSTRIES                                      :Много произвольных промышленностей
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Случайно разместить предприятия на карте
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Невозможно создать промышленность...
 
--- a/src/lang/simplified_chinese.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/simplified_chinese.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1214,7 +1214,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}你确定要创建一个随机的景观吗?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}大量随机城镇
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}在地图上创建大量随机的城镇
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}大量随机工业
+STR_MANY_RANDOM_INDUSTRIES                                      :大量随机工业
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}在地图上创建大量随机的工业设施
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}不能生成工业设施……
 
--- a/src/lang/slovak.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/slovak.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1305,7 +1305,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Si si isty, ze chces vytvorit nahodny teren?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Vela nahodnych miest
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pokryt mapu nahodne umiestnenymi mestami
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Vela nahodneho priemyslu
+STR_MANY_RANDOM_INDUSTRIES                                      :Vela nahodneho priemyslu
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pokryt mapu nahodne umiestnenym priemyslom
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Nemozno vygenerovat priemysel ...
 
--- a/src/lang/slovenian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/slovenian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1283,7 +1283,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Zagotovo želiš ustvariti naključno zemljišče?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Več naključnih mest
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Postavi na ozemlje naključna mesta
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Več naključnih industrij
+STR_MANY_RANDOM_INDUSTRIES                                      :Več naključnih industrij
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Postavi na ozemlje naključno industrijo
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Ni mogoče zgraditi industrij ...
 
--- a/src/lang/spanish.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/spanish.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1242,7 +1242,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}¿Está seguro de generar un paisaje al azar?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Varias poblaciones al azar
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Cubre el mapa con poblaciones colocadas al azar
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Varias industrias al azar
+STR_MANY_RANDOM_INDUSTRIES                                      :Varias industrias al azar
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Cubre el mapa con industrias colocadas al azar
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}No se pueden crear industrias...
 
--- a/src/lang/swedish.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/swedish.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Är du säker på att du vill generera ett slumpmässigt landskap?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Många slumpmässiga städer
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Täck kartan med slumpmässigt placerade städer
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Många slumpmässiga industrier
+STR_MANY_RANDOM_INDUSTRIES                                      :Många slumpmässiga industrier
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Täck kartan med slumpmässigt placerade industrier
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan inte generera industrier...
 
--- a/src/lang/traditional_chinese.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/traditional_chinese.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1241,7 +1241,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}你要建立一個隨機地形嗎?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}隨機產生多個市鎮
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}以隨機放置的市鎮佈滿版圖
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}隨機產生多個工業
+STR_MANY_RANDOM_INDUSTRIES                                      :隨機產生多個工業
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}以隨機放置的工業佈滿版圖
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}隨機產生工業失敗...
 
--- a/src/lang/turkish.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/turkish.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1232,7 +1232,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Arazinin rasgele düzenlenmesini istediğinizden emin misiniz?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Birçok rastgele şehir
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Haritayı rastgele şehirlerle doldur
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Birçok rastgele fabrika
+STR_MANY_RANDOM_INDUSTRIES                                      :Birçok rastgele fabrika
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Haritayı rastgele fabrikalarla doldur
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Fabrika yapılamıyor...
 
--- a/src/lang/ukrainian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/ukrainian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1367,7 +1367,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Ви дійсно бажаєте створити ландшафт випадково?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Багато різних міст
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Випадково розташувати міста по карті
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Багато різної промисловості
+STR_MANY_RANDOM_INDUSTRIES                                      :Багато різної промисловості
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Випадково розташувати промисловість по карті
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Неможливо створити промисловість...
 
--- a/src/lang/unfinished/afrikaans.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/unfinished/afrikaans.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1124,7 +1124,7 @@
 
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Is jy seker jy wil 'n lukraake landeryke skep?
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Baie lukraak stede
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Baie luraak nyweheide
+STR_MANY_RANDOM_INDUSTRIES                                      :Baie luraak nyweheide
 STR_CAN_T_GENERATE_INDUSTRIES                                   :{WHITE}Kan nie nywerheide ontwikkel nie...
 
 STR_LANDSCAPING_TOOLBAR_TIP                                     :{BLACK}Oppe die landargitekteur werktuigbaan om land te verhoog/verlaag, boome beplant, ens.
--- a/src/lang/unfinished/greek.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/unfinished/greek.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1198,7 +1198,7 @@
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Είστε σίγουρος ότι θέλετε να δημιουργήσετε ένα τυχαίο τοπίο;
 STR_MANY_RANDOM_TOWNS                                           :{BLACK}Πολλές τυχαίες πόλεις
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Κάλυψη του χάρτη με τυχαία τοποθετημένες πόλεις
-STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Πολλές τυχαίες βιομηχανίες
+STR_MANY_RANDOM_INDUSTRIES                                      :Πολλές τυχαίες βιομηχανίες
 
 
 
@@ -2017,3 +2017,4 @@
 
 ########
 
+
--- a/src/lang/unfinished/latvian.txt	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/lang/unfinished/latvian.txt	Tue Jul 10 00:59:00 2007 +0000
@@ -1166,7 +1166,7 @@
 STR_NO_TOWN_IN_SCENARIO                                         :{WHITE}...šajā scenārijā nav pilsētu
 
 STR_GENERATE_RANDOM_LANDSCAPE                                   :{WHITE}Vai jūs esat pārliecināts, ka vēlaties izveidot nejauši izvēlētu ainavu?
-STR_MANY_RANDOM_TOWNS                                           :{BLACK}Daudz nejauši izveidotu pilsētu
+STR_MANY_RANDOM_TOWNS                                           :Daudz nejauši izveidotu pilsētu
 STR_RANDOM_TOWNS_TIP                                            :{BLACK}Pāklāt karti ar nejauši izvietotām pilsētām
 STR_MANY_RANDOM_INDUSTRIES                                      :{BLACK}Daudz nejauši izveidotu rūpniecību
 STR_RANDOM_INDUSTRIES_TIP                                       :{BLACK}Pāklāt karti ar nejauši izvietotām rūpniecībām
--- a/src/main_gui.cpp	Tue Jul 10 00:10:19 2007 +0000
+++ b/src/main_gui.cpp	Tue Jul 10 00:59:00 2007 +0000
@@ -1540,247 +1540,11 @@
 	AllocateWindowDescFront(&_scen_edit_town_gen_desc, 0);
 }
 
-
-static const Widget _scenedit_industry_normal_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                     STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   224, 0x0,                          STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_MANY_RANDOM_INDUSTRIES,   STR_RANDOM_INDUSTRIES_TIP},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0240_COAL_MINE,           STR_0262_CONSTRUCT_COAL_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0241_POWER_STATION,       STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0242_SAWMILL,             STR_0264_CONSTRUCT_SAWMILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    81,    92, STR_0243_FOREST,              STR_0265_PLANT_FOREST},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    94,   105, STR_0244_OIL_REFINERY,        STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   107,   118, STR_0245_OIL_RIG,             STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   120,   131, STR_0246_FACTORY,             STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   133,   144, STR_0247_STEEL_MILL,          STR_0269_CONSTRUCT_STEEL_MILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   146,   157, STR_0248_FARM,                STR_026A_CONSTRUCT_FARM},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   159,   170, STR_0249_IRON_ORE_MINE,       STR_026B_CONSTRUCT_IRON_ORE_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   172,   183, STR_024A_OIL_WELLS,           STR_026C_CONSTRUCT_OIL_WELLS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   185,   196, STR_024B_BANK,                STR_026D_CONSTRUCT_BANK_CAN_ONLY},
-{   WIDGETS_END},
-};
-
-
-static const Widget _scenedit_industry_hilly_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_023F_INDUSTRY_GENERATION,   STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   224, 0x0,                            STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_MANY_RANDOM_INDUSTRIES,     STR_RANDOM_INDUSTRIES_TIP},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0240_COAL_MINE,             STR_0262_CONSTRUCT_COAL_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0241_POWER_STATION,         STR_0263_CONSTRUCT_POWER_STATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_024C_PAPER_MILL,            STR_026E_CONSTRUCT_PAPER_MILL},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    81,    92, STR_0243_FOREST,                STR_0265_PLANT_FOREST},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    94,   105, STR_0244_OIL_REFINERY,          STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   107,   118, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   120,   131, STR_024E_PRINTING_WORKS,        STR_0270_CONSTRUCT_PRINTING_WORKS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   133,   144, STR_024F_GOLD_MINE,             STR_0271_CONSTRUCT_GOLD_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   146,   157, STR_0248_FARM,                  STR_026A_CONSTRUCT_FARM},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   159,   170, STR_024B_BANK,                  STR_0272_CONSTRUCT_BANK_CAN_ONLY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   172,   183, STR_024A_OIL_WELLS,             STR_026C_CONSTRUCT_OIL_WELLS},
-{   WIDGETS_END},
-};
-
-static const Widget _scenedit_industry_desert_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                        STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_023F_INDUSTRY_GENERATION,    STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   224, 0x0,                             STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_MANY_RANDOM_INDUSTRIES,      STR_RANDOM_INDUSTRIES_TIP},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0250_LUMBER_MILL,            STR_0273_CONSTRUCT_LUMBER_MILL_TO},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0251_FRUIT_PLANTATION,       STR_0274_PLANT_FRUIT_PLANTATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0252_RUBBER_PLANTATION,      STR_0275_PLANT_RUBBER_PLANTATION},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    81,    92, STR_0244_OIL_REFINERY,           STR_0266_CONSTRUCT_OIL_REFINERY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    94,   105, STR_024D_FOOD_PROCESSING_PLANT,  STR_026F_CONSTRUCT_FOOD_PROCESSING},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   107,   118, STR_0246_FACTORY,                STR_0268_CONSTRUCT_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   120,   131, STR_0253_WATER_SUPPLY,           STR_0276_CONSTRUCT_WATER_SUPPLY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   133,   144, STR_0248_FARM,                   STR_026A_CONSTRUCT_FARM},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   146,   157, STR_0254_WATER_TOWER,            STR_0277_CONSTRUCT_WATER_TOWER_CAN},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   159,   170, STR_024A_OIL_WELLS,              STR_026C_CONSTRUCT_OIL_WELLS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   172,   183, STR_024B_BANK,                   STR_0272_CONSTRUCT_BANK_CAN_ONLY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   185,   196, STR_0255_DIAMOND_MINE,           STR_0278_CONSTRUCT_DIAMOND_MINE},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   198,   209, STR_0256_COPPER_ORE_MINE,        STR_0279_CONSTRUCT_COPPER_ORE_MINE},
-{   WIDGETS_END},
-};
-
-static const Widget _scenedit_industry_candy_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                     STR_018B_CLOSE_WINDOW},
-{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   169,     0,    13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
-{      WWT_PANEL,   RESIZE_NONE,     7,     0,   169,    14,   224, 0x0,                          STR_NULL},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    16,    27, STR_MANY_RANDOM_INDUSTRIES,   STR_RANDOM_INDUSTRIES_TIP},
-
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    42,    53, STR_0257_COTTON_CANDY_FOREST, STR_027A_PLANT_COTTON_CANDY_FOREST},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    55,    66, STR_0258_CANDY_FACTORY,       STR_027B_CONSTRUCT_CANDY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    68,    79, STR_0259_BATTERY_FARM,        STR_027C_CONSTRUCT_BATTERY_FARM},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    81,    92, STR_025A_COLA_WELLS,          STR_027D_CONSTRUCT_COLA_WELLS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,    94,   105, STR_025B_TOY_SHOP,            STR_027E_CONSTRUCT_TOY_SHOP},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   107,   118, STR_025C_TOY_FACTORY,         STR_027F_CONSTRUCT_TOY_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   120,   131, STR_025D_PLASTIC_FOUNTAINS,   STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   133,   144, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   146,   157, STR_025F_BUBBLE_GENERATOR,    STR_0282_CONSTRUCT_BUBBLE_GENERATOR},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   159,   170, STR_0260_TOFFEE_QUARRY,       STR_0283_CONSTRUCT_TOFFEE_QUARRY},
-{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   167,   172,   183, STR_0261_SUGAR_MINE,          STR_0284_CONSTRUCT_SUGAR_MINE},
-{   WIDGETS_END},
-};
-
-
-static bool AnyTownExists()
-{
-	const Town *t;
-
-	FOR_ALL_TOWNS(t) return true;
-
-	return false;
-}
-
-extern Industry *CreateNewIndustry(TileIndex tile, IndustryType type);
-
-/**
- * Search callback function for TryBuildIndustry
- * @param tile to test
- * @param data that is passed by the caller.  In this case, the type of industry been tested
- * @return the success (or not) of the operation
- */
-static bool SearchTileForIndustry(TileIndex tile, uint32 data)
-{
-	return CreateNewIndustry(tile, data) != NULL;
-}
-
-/**
- * Perform a 9*9 tiles circular search around a tile
- * in order to find a suitable zone to create the desired industry
- * @param tile to start search for
- * @param type of the desired industry
- * @return the success (or not) of the operation
- */
-static bool TryBuildIndustry(TileIndex tile, int type)
-{
-	return CircularTileSearch(tile, 9, SearchTileForIndustry, type);
-}
-
-
-static const byte _industry_type_list[4][16] = {
-	{ 0,  1,  2,  3,  4,  5,  6,  8,  9, 18, 11, 12},
-	{ 0,  1, 14,  3,  4, 13,  7, 15,  9, 16, 11, 12},
-	{25, 19, 20,  4, 13, 23, 21, 24, 22, 11, 16, 17, 10},
-	{26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36},
-};
-
-static int _industry_type_to_place;
-bool _ignore_restrictions;
-
-static void ScenEditIndustryWndProc(Window *w, WindowEvent *e)
-{
-	int button;
-
-	switch (e->event) {
-	case WE_PAINT:
-		DrawWindowWidgets(w);
-		break;
-
-	case WE_CLICK:
-		if (e->we.click.widget == 3) {
-			HandleButtonClick(w, 3);
-
-			if (!AnyTownExists()) {
-				ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_CAN_T_GENERATE_INDUSTRIES, 0, 0);
-				return;
-			}
-
-			_generating_world = true;
-			GenerateIndustries();
-			_generating_world = false;
-		}
-
-		if ((button=e->we.click.widget) >= 4) {
-			if (HandlePlacePushButton(w, button, SPR_CURSOR_INDUSTRY, 1, NULL))
-				_industry_type_to_place = _industry_type_list[_opt.landscape][button - 4];
-		}
-		break;
-	case WE_PLACE_OBJ: {
-		int type;
-
-		/* Show error if no town exists at all */
-		type = _industry_type_to_place;
-		if (!AnyTownExists()) {
-			SetDParam(0, GetIndustrySpec(type)->name);
-			ShowErrorMessage(STR_0286_MUST_BUILD_TOWN_FIRST, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
-			return;
-		}
-
-		_current_player = OWNER_NONE;
-		_generating_world = true;
-		_ignore_restrictions = true;
-		if (!TryBuildIndustry(e->we.place.tile,type)) {
-			SetDParam(0, GetIndustrySpec(type)->name);
-			ShowErrorMessage(_error_message, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
-		}
-		_ignore_restrictions = false;
-		_generating_world = false;
-		break;
-	}
-	case WE_ABORT_PLACE_OBJ:
-		RaiseWindowButtons(w);
-		SetWindowDirty(w);
-		break;
-	case WE_TIMEOUT:
-		RaiseWindowWidget(w, 3);
-		InvalidateWidget(w, 3);
-		break;
-	}
-}
-
-static const WindowDesc _scenedit_industry_normal_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 225,
-	WC_SCEN_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_scenedit_industry_normal_widgets,
-	ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_hilly_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 225,
-	WC_SCEN_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_scenedit_industry_hilly_widgets,
-	ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_desert_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 225,
-	WC_SCEN_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_scenedit_industry_desert_widgets,
-	ScenEditIndustryWndProc,
-};
-
-static const WindowDesc _scenedit_industry_candy_desc = {
-	WDP_AUTO, WDP_AUTO, 170, 225,
-	WC_SCEN_INDUSTRY, WC_NONE,
-	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_scenedit_industry_candy_widgets,
-	ScenEditIndustryWndProc,
-};
-
-static const WindowDesc * const _scenedit_industry_descs[] = {
-	&_scenedit_industry_normal_desc,
-	&_scenedit_industry_hilly_desc,
-	&_scenedit_industry_desert_desc,
-	&_scenedit_industry_candy_desc,
-};
-
-
 static void ToolbarScenGenIndustry(Window *w)
 {
 	HandleButtonClick(w, 13);
 	SndPlayFx(SND_15_BEEP);
-	AllocateWindowDescFront(_scenedit_industry_descs[_opt.landscape],0);
+	ShowBuildIndustryWindow();
 }
 
 static void ToolbarScenBuildRoad(Window *w)