1 /*
2  * This file is part of OpenTTD.
3  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6  */
7 
8 /** @file rail_widget.h Types related to the rail widgets. */
9 
10 #ifndef WIDGETS_RAIL_WIDGET_H
11 #define WIDGETS_RAIL_WIDGET_H
12 
13 /** Widgets of the #BuildRailToolbarWindow class. */
14 enum RailToolbarWidgets {
15 	/* Name starts with RA instead of R, because of collision with RoadToolbarWidgets */
16 	WID_RAT_CAPTION,        ///< Caption of the window.
17 	WID_RAT_BUILD_NS,       ///< Build rail along the game view Y axis.
18 	WID_RAT_BUILD_X,        ///< Build rail along the game grid X axis.
19 	WID_RAT_BUILD_EW,       ///< Build rail along the game view X axis.
20 	WID_RAT_BUILD_Y,        ///< Build rail along the game grid Y axis.
21 	WID_RAT_AUTORAIL,       ///< Autorail tool.
22 	WID_RAT_DEMOLISH,       ///< Destroy something with dynamite!
23 	WID_RAT_BUILD_DEPOT,    ///< Build a depot.
24 	WID_RAT_BUILD_WAYPOINT, ///< Build a waypoint.
25 	WID_RAT_BUILD_STATION,  ///< Build a station.
26 	WID_RAT_BUILD_SIGNALS,  ///< Build signals.
27 	WID_RAT_BUILD_BRIDGE,   ///< Build a bridge.
28 	WID_RAT_BUILD_TUNNEL,   ///< Build a tunnel.
29 	WID_RAT_REMOVE,         ///< Bulldozer to remove rail.
30 	WID_RAT_CONVERT_RAIL,   ///< Convert other rail to this type.
31 };
32 
33 /** Widgets of the #BuildRailStationWindow class. */
34 enum BuildRailStationWidgets {
35 	/* Name starts with BRA instead of BR, because of collision with BuildRoadStationWidgets */
36 	WID_BRAS_PLATFORM_DIR_X,       ///< Button to select '/' view.
37 	WID_BRAS_PLATFORM_DIR_Y,       ///< Button to select '\' view.
38 
39 	WID_BRAS_PLATFORM_NUM_1,       ///< Button to select stations with a single platform.
40 	WID_BRAS_PLATFORM_NUM_2,       ///< Button to select stations with 2 platforms.
41 	WID_BRAS_PLATFORM_NUM_3,       ///< Button to select stations with 3 platforms.
42 	WID_BRAS_PLATFORM_NUM_4,       ///< Button to select stations with 4 platforms.
43 	WID_BRAS_PLATFORM_NUM_5,       ///< Button to select stations with 5 platforms.
44 	WID_BRAS_PLATFORM_NUM_6,       ///< Button to select stations with 6 platforms.
45 	WID_BRAS_PLATFORM_NUM_7,       ///< Button to select stations with 7 platforms.
46 
47 	WID_BRAS_PLATFORM_LEN_1,       ///< Button to select single tile length station platforms.
48 	WID_BRAS_PLATFORM_LEN_2,       ///< Button to select 2 tiles length station platforms.
49 	WID_BRAS_PLATFORM_LEN_3,       ///< Button to select 3 tiles length station platforms.
50 	WID_BRAS_PLATFORM_LEN_4,       ///< Button to select 4 tiles length station platforms.
51 	WID_BRAS_PLATFORM_LEN_5,       ///< Button to select 5 tiles length station platforms.
52 	WID_BRAS_PLATFORM_LEN_6,       ///< Button to select 6 tiles length station platforms.
53 	WID_BRAS_PLATFORM_LEN_7,       ///< Button to select 7 tiles length station platforms.
54 
55 	WID_BRAS_PLATFORM_DRAG_N_DROP, ///< Button to enable drag and drop type station placement.
56 
57 	WID_BRAS_HIGHLIGHT_OFF,        ///< Button for turning coverage highlighting off.
58 	WID_BRAS_HIGHLIGHT_ON,         ///< Button for turning coverage highlighting on.
59 	WID_BRAS_COVERAGE_TEXTS,       ///< Empty space for the coverage texts.
60 
61 	WID_BRAS_MATRIX,               ///< Matrix widget displaying the available stations.
62 	WID_BRAS_IMAGE,                ///< Panel used at each cell of the matrix.
63 	WID_BRAS_MATRIX_SCROLL,        ///< Scrollbar of the matrix widget.
64 
65 	WID_BRAS_FILTER_CONTAINER,     ///< Container for the filter text box for the station class list.
66 	WID_BRAS_FILTER_EDITBOX,       ///< Filter text box for the station class list.
67 	WID_BRAS_SHOW_NEWST_DEFSIZE,   ///< Selection for default-size button for newstation.
68 	WID_BRAS_SHOW_NEWST_ADDITIONS, ///< Selection for newstation class selection list.
69 	WID_BRAS_SHOW_NEWST_MATRIX,    ///< Selection for newstation image matrix.
70 	WID_BRAS_SHOW_NEWST_RESIZE,    ///< Selection for panel and resize at bottom right for newstation.
71 	WID_BRAS_SHOW_NEWST_TYPE,      ///< Display of selected station type.
72 	WID_BRAS_NEWST_LIST,           ///< List with available newstation classes.
73 	WID_BRAS_NEWST_SCROLL,         ///< Scrollbar of the #WID_BRAS_NEWST_LIST.
74 
75 	WID_BRAS_PLATFORM_NUM_BEGIN = WID_BRAS_PLATFORM_NUM_1 - 1, ///< Helper for determining the chosen platform width.
76 	WID_BRAS_PLATFORM_LEN_BEGIN = WID_BRAS_PLATFORM_LEN_1 - 1, ///< Helper for determining the chosen platform length.
77 };
78 
79 /** Widgets of the #BuildSignalWindow class. */
80 enum BuildSignalWidgets {
81 	WID_BS_CAPTION,            ///< Caption for the Signal Selection window.
82 	WID_BS_TOGGLE_SIZE,        ///< Toggle showing advanced signal types.
83 	WID_BS_SEMAPHORE_NORM,     ///< Build a semaphore normal block signal.
84 	WID_BS_SEMAPHORE_ENTRY,    ///< Build a semaphore entry block signal.
85 	WID_BS_SEMAPHORE_EXIT,     ///< Build a semaphore exit block signal.
86 	WID_BS_SEMAPHORE_COMBO,    ///< Build a semaphore combo block signal.
87 	WID_BS_SEMAPHORE_PBS,      ///< Build a semaphore path signal.
88 	WID_BS_SEMAPHORE_PBS_OWAY, ///< Build a semaphore one way path signal.
89 	WID_BS_ELECTRIC_NORM,      ///< Build an electric normal block signal.
90 	WID_BS_ELECTRIC_ENTRY,     ///< Build an electric entry block signal.
91 	WID_BS_ELECTRIC_EXIT,      ///< Build an electric exit block signal.
92 	WID_BS_ELECTRIC_COMBO,     ///< Build an electric combo block signal.
93 	WID_BS_ELECTRIC_PBS,       ///< Build an electric path signal.
94 	WID_BS_ELECTRIC_PBS_OWAY,  ///< Build an electric one way path signal.
95 	WID_BS_CONVERT,            ///< Convert the signal.
96 	WID_BS_DRAG_SIGNALS_DENSITY_LABEL,    ///< The current signal density.
97 	WID_BS_DRAG_SIGNALS_DENSITY_DECREASE, ///< Decrease the signal density.
98 	WID_BS_DRAG_SIGNALS_DENSITY_INCREASE, ///< Increase the signal density.
99 	WID_BS_SEMAPHORE_NORM_SEL,  ///< NWID_SELECTION for WID_BS_SEMAPHORE_NORM.
100 	WID_BS_ELECTRIC_NORM_SEL,   ///< NWID_SELECTION for WID_BS_ELECTRIC_NORM.
101 	WID_BS_SEMAPHORE_ENTRY_SEL, ///< NWID_SELECTION for WID_BS_SEMAPHORE_ENTRY.
102 	WID_BS_ELECTRIC_ENTRY_SEL,  ///< NWID_SELECTION for WID_BS_ELECTRIC_ENTRY.
103 	WID_BS_SEMAPHORE_EXIT_SEL,  ///< NWID_SELECTION for WID_BS_SEMAPHORE_EXIT.
104 	WID_BS_ELECTRIC_EXIT_SEL,   ///< NWID_SELECTION for WID_BS_ELECTRIC_EXIT.
105 	WID_BS_SEMAPHORE_COMBO_SEL, ///< NWID_SELECTION for WID_BS_SEMAPHORE_COMBO.
106 	WID_BS_ELECTRIC_COMBO_SEL,  ///< NWID_SELECTION for WID_BS_ELECTRIC_COMBO.
107 };
108 
109 /** Widgets of the #BuildRailDepotWindow class. */
110 enum BuildRailDepotWidgets {
111 	/* Name starts with BRA instead of BR, because of collision with BuildRoadDepotWidgets */
112 	WID_BRAD_DEPOT_NE, ///< Build a depot with the entrance in the north east.
113 	WID_BRAD_DEPOT_SE, ///< Build a depot with the entrance in the south east.
114 	WID_BRAD_DEPOT_SW, ///< Build a depot with the entrance in the south west.
115 	WID_BRAD_DEPOT_NW, ///< Build a depot with the entrance in the north west.
116 };
117 
118 /** Widgets of the #BuildRailWaypointWindow class. */
119 enum BuildRailWaypointWidgets {
120 	WID_BRW_WAYPOINT_MATRIX, ///< Matrix with waypoints.
121 	WID_BRW_WAYPOINT,        ///< A single waypoint.
122 	WID_BRW_SCROLL,          ///< Scrollbar for the matrix.
123 };
124 
125 #endif /* WIDGETS_RAIL_WIDGET_H */
126