mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
(svn r23935) -Codechange: generalise GetTextfile
This commit is contained in:
parent
2a6e23263a
commit
58269b7ad2
@ -20,6 +20,7 @@
|
|||||||
#include "progress.h"
|
#include "progress.h"
|
||||||
#include "video/video_driver.hpp"
|
#include "video/video_driver.hpp"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
|
#include "textfile_gui.h"
|
||||||
|
|
||||||
#include "fileio_func.h"
|
#include "fileio_func.h"
|
||||||
#include "fios.h"
|
#include "fios.h"
|
||||||
@ -878,29 +879,5 @@ bool GRFConfig::IsOpenTTDBaseGRF() const
|
|||||||
*/
|
*/
|
||||||
const char *GRFConfig::GetTextfile(TextfileType type) const
|
const char *GRFConfig::GetTextfile(TextfileType type) const
|
||||||
{
|
{
|
||||||
static const char * const prefixes[] = {
|
return ::GetTextfile(type, NEWGRF_DIR, this->filename);
|
||||||
"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;
|
|
||||||
}
|
}
|
||||||
|
@ -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->SetCount(this->max_length + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT);
|
||||||
this->hscroll->SetStepSize(10); // Speed up horizontal scrollbar
|
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;
|
||||||
|
}
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
#include "textfile_type.h"
|
#include "textfile_type.h"
|
||||||
#include "window_gui.h"
|
#include "window_gui.h"
|
||||||
|
|
||||||
|
const char *GetTextfile(TextfileType type, Subdirectory dir, const char *filename);
|
||||||
|
|
||||||
/** Window for displaying a textfile */
|
/** Window for displaying a textfile */
|
||||||
struct TextfileWindow : public Window, MissingGlyphSearcher {
|
struct TextfileWindow : public Window, MissingGlyphSearcher {
|
||||||
TextfileType file_type; ///< Type of textfile to view.
|
TextfileType file_type; ///< Type of textfile to view.
|
||||||
|
Loading…
Reference in New Issue
Block a user