summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/newgrf_config.cpp27
-rw-r--r--src/textfile_gui.cpp36
-rw-r--r--src/textfile_gui.h2
3 files changed, 40 insertions, 25 deletions
diff --git a/src/newgrf_config.cpp b/src/newgrf_config.cpp
index 4c296d20f..352740a59 100644
--- a/src/newgrf_config.cpp
+++ b/src/newgrf_config.cpp
@@ -20,6 +20,7 @@
#include "progress.h"
#include "video/video_driver.hpp"
#include "strings_func.h"
+#include "textfile_gui.h"
#include "fileio_func.h"
#include "fios.h"
@@ -878,29 +879,5 @@ bool GRFConfig::IsOpenTTDBaseGRF() const
*/
const char *GRFConfig::GetTextfile(TextfileType type) const
{
- static const char * const prefixes[] = {
- "readme",
- "changelog",
- "license",
- };
- assert_compile(lengthof(prefixes) == TFT_END);
-
- const char *prefix = prefixes[type];
-
- if (this->filename == NULL) return NULL;
-
- static char file_path[MAX_PATH];
- strecpy(file_path, this->filename, lastof(file_path));
-
- char *slash = strrchr(file_path, PATHSEPCHAR);
- if (slash == NULL) return NULL;
-
- seprintf(slash + 1, lastof(file_path), "%s_%s.txt", prefix, GetCurrentLanguageIsoCode());
- if (FioCheckFileExists(file_path, NEWGRF_DIR)) return file_path;
-
- seprintf(slash + 1, lastof(file_path), "%s_%.2s.txt", prefix, GetCurrentLanguageIsoCode());
- if (FioCheckFileExists(file_path, NEWGRF_DIR)) return file_path;
-
- seprintf(slash + 1, lastof(file_path), "%s.txt", prefix);
- return FioCheckFileExists(file_path, NEWGRF_DIR) ? file_path : NULL;
+ return ::GetTextfile(type, NEWGRF_DIR, this->filename);
}
diff --git a/src/textfile_gui.cpp b/src/textfile_gui.cpp
index 93138eac3..3a4954323 100644
--- a/src/textfile_gui.cpp
+++ b/src/textfile_gui.cpp
@@ -192,3 +192,39 @@ TextfileWindow::TextfileWindow(TextfileType file_type) : Window(), file_type(fil
this->hscroll->SetCount(this->max_length + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT);
this->hscroll->SetStepSize(10); // Speed up horizontal scrollbar
}
+
+/**
+ * Search a textfile file next to the given content.
+ * @param type The type of the textfile to search for.
+ * @param dir The subdirectory to search in.
+ * @param filename The filename of the content to look for.
+ * @return The path to the textfile, \c NULL otherwise.
+ */
+const char *GetTextfile(TextfileType type, Subdirectory dir, const char *filename)
+{
+ static const char * const prefixes[] = {
+ "readme",
+ "changelog",
+ "license",
+ };
+ assert_compile(lengthof(prefixes) == TFT_END);
+
+ const char *prefix = prefixes[type];
+
+ if (filename == NULL) return NULL;
+
+ static char file_path[MAX_PATH];
+ strecpy(file_path, filename, lastof(file_path));
+
+ char *slash = strrchr(file_path, PATHSEPCHAR);
+ if (slash == NULL) return NULL;
+
+ seprintf(slash + 1, lastof(file_path), "%s_%s.txt", prefix, GetCurrentLanguageIsoCode());
+ if (FioCheckFileExists(file_path, dir)) return file_path;
+
+ seprintf(slash + 1, lastof(file_path), "%s_%.2s.txt", prefix, GetCurrentLanguageIsoCode());
+ if (FioCheckFileExists(file_path, dir)) return file_path;
+
+ seprintf(slash + 1, lastof(file_path), "%s.txt", prefix);
+ return FioCheckFileExists(file_path, dir) ? file_path : NULL;
+}
diff --git a/src/textfile_gui.h b/src/textfile_gui.h
index 56760505c..846e93c56 100644
--- a/src/textfile_gui.h
+++ b/src/textfile_gui.h
@@ -16,6 +16,8 @@
#include "textfile_type.h"
#include "window_gui.h"
+const char *GetTextfile(TextfileType type, Subdirectory dir, const char *filename);
+
/** Window for displaying a textfile */
struct TextfileWindow : public Window, MissingGlyphSearcher {
TextfileType file_type; ///< Type of textfile to view.