diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj --- a/projects/openttd_vs80.vcproj +++ b/projects/openttd_vs80.vcproj @@ -1868,7 +1868,7 @@ > diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj --- a/projects/openttd_vs90.vcproj +++ b/projects/openttd_vs90.vcproj @@ -1865,7 +1865,7 @@ > diff --git a/source.list b/source.list --- a/source.list +++ b/source.list @@ -410,7 +410,7 @@ train_gui.cpp transparency_gui.cpp tree_gui.cpp vehicle_gui.cpp -waypoints_gui.cpp +waypoint_gui.cpp # Command handlers aircraft_cmd.cpp diff --git a/src/waypoint_gui.cpp b/src/waypoint_gui.cpp new file mode 100644 --- /dev/null +++ b/src/waypoint_gui.cpp @@ -0,0 +1,111 @@ +/* $Id$ */ + +/** @file waypoint_gui.cpp Handling of waypoints gui. */ + +#include "stdafx.h" +#include "openttd.h" +#include "window_gui.h" +#include "gui.h" +#include "textbuf_gui.h" +#include "vehicle_gui.h" +#include "waypoint.h" +#include "viewport_func.h" +#include "string_func.h" +#include "strings_func.h" +#include "gfx_func.h" +#include "command_func.h" +#include "functions.h" + +#include "table/strings.h" + +struct WaypointWindow : Window { +private: + Waypoint *wp; + + enum WaypointViewWidget { + WAYPVW_CLOSEBOX = 0, + WAYPVW_CAPTION, + WAYPVW_STICKY, + WAYPVW_VIEWPORTPANEL, + WAYPVW_SPACER, + WAYPVW_CENTERVIEW, + WAYPVW_RENAME, + WAYPVW_SHOW_TRAINS, + }; + +public: + WaypointWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number) + { + this->wp = GetWaypoint(this->window_number); + + this->flags4 |= WF_DISABLE_VP_SCROLL; + InitializeWindowViewport(this, 3, 17, 254, 86, this->wp->xy, ZOOM_LVL_MIN); + + this->FindWindowPlacementAndResize(desc); + } + + virtual void OnPaint() + { + /* You can only change your own waypoints */ + this->SetWidgetDisabledState(WAYPVW_RENAME, !CheckTileOwnership(this->wp->xy)); + SetDParam(0, this->wp->index); + this->DrawWidgets(); + + this->DrawViewport(); + } + + virtual void OnClick(Point pt, int widget) + { + switch (widget) { + case WAYPVW_CENTERVIEW: /* scroll to location */ + if (_ctrl_pressed) { + ShowExtraViewPortWindow(this->wp->xy); + } else { + ScrollMainWindowToTile(this->wp->xy); + } + break; + + case WAYPVW_RENAME: /* rename */ + SetDParam(0, this->wp->index); + ShowQueryString(STR_WAYPOINT_RAW, STR_EDIT_WAYPOINT_NAME, MAX_LENGTH_WAYPOINT_NAME_BYTES, MAX_LENGTH_WAYPOINT_NAME_PIXELS, this, CS_ALPHANUMERAL); + break; + + case WAYPVW_SHOW_TRAINS: /* show list of trains having this waypoint in their orders*/ + ShowVehicleListWindow(this->wp); + break; + } + } + + virtual void OnQueryTextFinished(char *str) + { + if (!StrEmpty(str)) { + _cmd_text = str; + DoCommandP(0, this->window_number, 0, NULL, CMD_RENAME_WAYPOINT | CMD_MSG(STR_CANT_CHANGE_WAYPOINT_NAME)); + } + } + +}; + +static const Widget _waypoint_view_widgets[] = { +{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // WAYPVW_CLOSEBOX +{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 247, 0, 13, STR_WAYPOINT_VIEWPORT, STR_018C_WINDOW_TITLE_DRAG_THIS}, // WAYPVW_CAPTION +{ WWT_STICKYBOX, RESIZE_NONE, COLOUR_GREY, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, // WAYPVW_STICKY +{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 259, 14, 105, 0x0, STR_NULL}, // WAYPVW_VIEWPORTPANEL +{ WWT_INSET, RESIZE_NONE, COLOUR_GREY, 2, 257, 16, 103, 0x0, STR_NULL}, // WAYPVW_SPACER +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 121, 106, 117, STR_00E4_LOCATION, STR_3053_CENTER_MAIN_VIEW_ON_STATION}, // WAYPVW_CENTERVIEW +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 122, 244, 106, 117, STR_0130_RENAME, STR_CHANGE_WAYPOINT_NAME}, // WAYPVW_RENAME +{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 245, 259, 106, 117, STR_TRAIN, STR_SCHEDULED_TRAINS_TIP }, // WAYPVW_SHOW_TRAINS +{ WIDGETS_END}, +}; + +static const WindowDesc _waypoint_view_desc = { + WDP_AUTO, WDP_AUTO, 260, 118, 260, 118, + WC_WAYPOINT_VIEW, WC_NONE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, + _waypoint_view_widgets, +}; + +void ShowWaypointWindow(const Waypoint *wp) +{ + AllocateWindowDescFront(&_waypoint_view_desc, wp->index); +} diff --git a/src/waypoints_gui.cpp b/src/waypoints_gui.cpp deleted file mode 100644 --- a/src/waypoints_gui.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/* $Id$ */ - -/** @file waypoint_gui.cpp Handling of waypoints gui. */ - -#include "stdafx.h" -#include "openttd.h" -#include "window_gui.h" -#include "gui.h" -#include "textbuf_gui.h" -#include "vehicle_gui.h" -#include "waypoint.h" -#include "viewport_func.h" -#include "string_func.h" -#include "strings_func.h" -#include "gfx_func.h" -#include "command_func.h" -#include "functions.h" - -#include "table/strings.h" - -struct WaypointWindow : Window { -private: - Waypoint *wp; - - enum WaypointViewWidget { - WAYPVW_CLOSEBOX = 0, - WAYPVW_CAPTION, - WAYPVW_STICKY, - WAYPVW_VIEWPORTPANEL, - WAYPVW_SPACER, - WAYPVW_CENTERVIEW, - WAYPVW_RENAME, - WAYPVW_SHOW_TRAINS, - }; - -public: - WaypointWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number) - { - this->wp = GetWaypoint(this->window_number); - - this->flags4 |= WF_DISABLE_VP_SCROLL; - InitializeWindowViewport(this, 3, 17, 254, 86, this->wp->xy, ZOOM_LVL_MIN); - - this->FindWindowPlacementAndResize(desc); - } - - virtual void OnPaint() - { - /* You can only change your own waypoints */ - this->SetWidgetDisabledState(WAYPVW_RENAME, !CheckTileOwnership(this->wp->xy)); - SetDParam(0, this->wp->index); - this->DrawWidgets(); - - this->DrawViewport(); - } - - virtual void OnClick(Point pt, int widget) - { - switch (widget) { - case WAYPVW_CENTERVIEW: /* scroll to location */ - if (_ctrl_pressed) { - ShowExtraViewPortWindow(this->wp->xy); - } else { - ScrollMainWindowToTile(this->wp->xy); - } - break; - - case WAYPVW_RENAME: /* rename */ - SetDParam(0, this->wp->index); - ShowQueryString(STR_WAYPOINT_RAW, STR_EDIT_WAYPOINT_NAME, MAX_LENGTH_WAYPOINT_NAME_BYTES, MAX_LENGTH_WAYPOINT_NAME_PIXELS, this, CS_ALPHANUMERAL); - break; - - case WAYPVW_SHOW_TRAINS: /* show list of trains having this waypoint in their orders*/ - ShowVehicleListWindow(this->wp); - break; - } - } - - virtual void OnQueryTextFinished(char *str) - { - if (!StrEmpty(str)) { - _cmd_text = str; - DoCommandP(0, this->window_number, 0, NULL, CMD_RENAME_WAYPOINT | CMD_MSG(STR_CANT_CHANGE_WAYPOINT_NAME)); - } - } - -}; - -static const Widget _waypoint_view_widgets[] = { -{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // WAYPVW_CLOSEBOX -{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 247, 0, 13, STR_WAYPOINT_VIEWPORT, STR_018C_WINDOW_TITLE_DRAG_THIS}, // WAYPVW_CAPTION -{ WWT_STICKYBOX, RESIZE_NONE, COLOUR_GREY, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, // WAYPVW_STICKY -{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 259, 14, 105, 0x0, STR_NULL}, // WAYPVW_VIEWPORTPANEL -{ WWT_INSET, RESIZE_NONE, COLOUR_GREY, 2, 257, 16, 103, 0x0, STR_NULL}, // WAYPVW_SPACER -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 0, 121, 106, 117, STR_00E4_LOCATION, STR_3053_CENTER_MAIN_VIEW_ON_STATION}, // WAYPVW_CENTERVIEW -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 122, 244, 106, 117, STR_0130_RENAME, STR_CHANGE_WAYPOINT_NAME}, // WAYPVW_RENAME -{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_GREY, 245, 259, 106, 117, STR_TRAIN, STR_SCHEDULED_TRAINS_TIP }, // WAYPVW_SHOW_TRAINS -{ WIDGETS_END}, -}; - -static const WindowDesc _waypoint_view_desc = { - WDP_AUTO, WDP_AUTO, 260, 118, 260, 118, - WC_WAYPOINT_VIEW, WC_NONE, - WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, - _waypoint_view_widgets, -}; - -void ShowWaypointWindow(const Waypoint *wp) -{ - AllocateWindowDescFront(&_waypoint_view_desc, wp->index); -}