From 2ab714b32e9994aa94cdbd5ac5f284964e7e7f54 Mon Sep 17 00:00:00 2001 From: merni-ns Date: Tue, 14 Jan 2025 01:10:35 +0530 Subject: [PATCH] Change: Add fonts document to help window --- src/fileio.cpp | 1 + src/fileio_type.h | 1 + src/help_gui.cpp | 34 ++++++++++++++++++++-------------- src/lang/english.txt | 1 + src/widgets/help_widget.h | 1 + 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/fileio.cpp b/src/fileio.cpp index a63f74dce2..809e36a810 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -53,6 +53,7 @@ static const char * const _subdirs[] = { "game" PATHSEP "library" PATHSEP, "screenshot" PATHSEP, "social_integration" PATHSEP, + "docs" PATHSEP, }; static_assert(lengthof(_subdirs) == NUM_SUBDIRS); diff --git a/src/fileio_type.h b/src/fileio_type.h index 78e97f438d..46d1fbfdca 100644 --- a/src/fileio_type.h +++ b/src/fileio_type.h @@ -129,6 +129,7 @@ enum Subdirectory : uint8_t { GAME_LIBRARY_DIR, ///< Subdirectory for all GS libraries SCREENSHOT_DIR, ///< Subdirectory for all screenshots SOCIAL_INTEGRATION_DIR, ///< Subdirectory for all social integration plugins + DOCS_DIR, ///< Subdirectory for documentation NUM_SUBDIRS, ///< Number of subdirectories NO_DIRECTORY, ///< A path without any base directory }; diff --git a/src/help_gui.cpp b/src/help_gui.cpp index b86019569c..b56161b7af 100644 --- a/src/help_gui.cpp +++ b/src/help_gui.cpp @@ -26,6 +26,7 @@ static const std::string README_FILENAME = "README.md"; static const std::string CHANGELOG_FILENAME = "changelog.md"; static const std::string KNOWN_BUGS_FILENAME = "known-bugs.md"; static const std::string LICENSE_FILENAME = "COPYING.md"; +static const std::string FONTS_FILENAME = "fonts.md"; static const std::string WEBSITE_LINK = "https://www.openttd.org/"; static const std::string WIKI_LINK = "https://wiki.openttd.org/"; @@ -41,14 +42,14 @@ static constexpr size_t CHANGELOG_VERSIONS_LIMIT = 20; * @param filename The filename to find. * @return std::string The path to the filename if found. */ -static std::optional FindGameManualFilePath(std::string_view filename) +static std::optional FindGameManualFilePath(std::string_view filename, Subdirectory subdir) { static const Searchpath searchpaths[] = { SP_APPLICATION_BUNDLE_DIR, SP_INSTALLATION_DIR, SP_SHARED_DIR, SP_BINARY_DIR, SP_WORKING_DIR }; for (Searchpath sp : searchpaths) { - auto file_path = FioGetDirectory(sp, BASE_DIR) + filename.data(); + auto file_path = FioGetDirectory(sp, subdir) + filename.data(); if (FioCheckFileExists(file_path, NO_DIRECTORY)) return file_path; } @@ -57,14 +58,14 @@ static std::optional FindGameManualFilePath(std::string_view filena /** Window class displaying the game manual textfile viewer. */ struct GameManualTextfileWindow : public TextfileWindow { - GameManualTextfileWindow(std::string_view filename) : TextfileWindow(TFT_GAME_MANUAL) + GameManualTextfileWindow(std::string_view filename, Subdirectory subdir) : TextfileWindow(TFT_GAME_MANUAL) { this->ConstructWindow(); /* Mark the content of these files as trusted. */ this->trusted = true; - auto filepath = FindGameManualFilePath(filename); + auto filepath = FindGameManualFilePath(filename, subdir); /* The user could, in theory, have moved the file. So just show an empty window if that is the case. */ if (!filepath.has_value()) { return; @@ -122,26 +123,30 @@ struct HelpWindow : public Window { { this->InitNested(number); - this->EnableTextfileButton(README_FILENAME, WID_HW_README); - this->EnableTextfileButton(CHANGELOG_FILENAME, WID_HW_CHANGELOG); - this->EnableTextfileButton(KNOWN_BUGS_FILENAME, WID_HW_KNOWN_BUGS); - this->EnableTextfileButton(LICENSE_FILENAME, WID_HW_LICENSE); + this->EnableTextfileButton(README_FILENAME, BASE_DIR, WID_HW_README); + this->EnableTextfileButton(CHANGELOG_FILENAME, BASE_DIR, WID_HW_CHANGELOG); + this->EnableTextfileButton(KNOWN_BUGS_FILENAME, BASE_DIR, WID_HW_KNOWN_BUGS); + this->EnableTextfileButton(LICENSE_FILENAME, BASE_DIR, WID_HW_LICENSE); + this->EnableTextfileButton(FONTS_FILENAME, DOCS_DIR, WID_HW_FONTS); } void OnClick([[maybe_unused]] Point pt, WidgetID widget, [[maybe_unused]] int click_count) override { switch (widget) { case WID_HW_README: - new GameManualTextfileWindow(README_FILENAME); + new GameManualTextfileWindow(README_FILENAME, BASE_DIR); break; case WID_HW_CHANGELOG: - new GameManualTextfileWindow(CHANGELOG_FILENAME); + new GameManualTextfileWindow(CHANGELOG_FILENAME, BASE_DIR); break; case WID_HW_KNOWN_BUGS: - new GameManualTextfileWindow(KNOWN_BUGS_FILENAME); + new GameManualTextfileWindow(KNOWN_BUGS_FILENAME, BASE_DIR); break; case WID_HW_LICENSE: - new GameManualTextfileWindow(LICENSE_FILENAME); + new GameManualTextfileWindow(LICENSE_FILENAME, BASE_DIR); + break; + case WID_HW_FONTS: + new GameManualTextfileWindow(FONTS_FILENAME, DOCS_DIR); break; case WID_HW_WEBSITE: OpenBrowser(WEBSITE_LINK); @@ -159,9 +164,9 @@ struct HelpWindow : public Window { } private: - void EnableTextfileButton(std::string_view filename, WidgetID button_widget) + void EnableTextfileButton(std::string_view filename, Subdirectory subdir, WidgetID button_widget) { - this->GetWidget(button_widget)->SetDisabled(!FindGameManualFilePath(filename).has_value()); + this->GetWidget(button_widget)->SetDisabled(!FindGameManualFilePath(filename, subdir).has_value()); } }; @@ -185,6 +190,7 @@ static constexpr NWidgetPart _nested_helpwin_widgets[] = { NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_CHANGELOG), SetStringTip(STR_HELP_WINDOW_CHANGELOG), SetMinimalSize(128, 12), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_KNOWN_BUGS),SetStringTip(STR_HELP_WINDOW_KNOWN_BUGS), SetMinimalSize(128, 12), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_LICENSE), SetStringTip(STR_HELP_WINDOW_LICENSE), SetMinimalSize(128, 12), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_FONTS), SetStringTip(STR_HELP_WINDOW_FONTS), SetMinimalSize(128, 12), SetFill(1, 0), EndContainer(), EndContainer(), EndContainer(), diff --git a/src/lang/english.txt b/src/lang/english.txt index 1d65e91579..1ecbbae547 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -2248,6 +2248,7 @@ STR_HELP_WINDOW_README :{BLACK}Readme STR_HELP_WINDOW_CHANGELOG :{BLACK}Changelog STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Known Bugs STR_HELP_WINDOW_LICENSE :{BLACK}License +STR_HELP_WINDOW_FONTS :{BLACK}Fonts STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Manual / Wiki STR_HELP_WINDOW_BUGTRACKER :{BLACK}Report a Bug diff --git a/src/widgets/help_widget.h b/src/widgets/help_widget.h index d6715d9632..802e0610bb 100644 --- a/src/widgets/help_widget.h +++ b/src/widgets/help_widget.h @@ -16,6 +16,7 @@ enum HelpWindowWidgets : WidgetID { WID_HW_CHANGELOG, WID_HW_KNOWN_BUGS, WID_HW_LICENSE, + WID_HW_FONTS, WID_HW_WEBSITE, WID_HW_WIKI, WID_HW_BUGTRACKER,