mw4print: persist banner text via banner.txt

- Add banner.txt load/save helpers in banner settings dialog

- Load banner from banner.txt first, with options.ini BannerText fallback

- Fix options.ini path join to include missing path separator
This commit is contained in:
2026-07-24 21:56:24 -05:00
parent ff650f7bec
commit 515adc2413
2 changed files with 65 additions and 10 deletions
+35 -5
View File
@@ -359,6 +359,39 @@ void CChildView::OnFileBannerSetting()
dlg.DoModal();
}
static void LoadBannerTextFile()
{
char szPath[MAX_PATH];
sprintf(szPath, "%s\\banner.txt", AssetsDirectory1);
FILE* f = fopen(szPath, "rt");
if (f) {
char szBuf[sizeof(g_szPrintBanner)];
if (fgets(szBuf, sizeof(szBuf), f)) {
size_t n = strlen(szBuf);
while (n && (szBuf[n - 1] == '\r' || szBuf[n - 1] == '\n')) {
szBuf[--n] = '\0';
}
strncpy(g_szPrintBanner, szBuf, sizeof(g_szPrintBanner) - 1);
g_szPrintBanner[sizeof(g_szPrintBanner) - 1] = '\0';
}
fclose(f);
}
}
static void SaveBannerTextFile()
{
char szPath[MAX_PATH];
sprintf(szPath, "%s\\banner.txt", AssetsDirectory1);
FILE* f = fopen(szPath, "wt");
if (f) {
fputs(g_szPrintBanner, f);
fputc('\n', f);
fclose(f);
}
}
/////////////////////////////////////////////////////////////////////////////
// CDlgBannerSetting
@@ -378,6 +411,7 @@ void CDlgBannerSetting::DoDataExchange(CDataExchange* pDX)
BOOL CDlgBannerSetting::OnInitDialog()
{
CDialog::OnInitDialog();
LoadBannerTextFile();
SetDlgItemText(IDC_BANNER_TEXT, g_szPrintBanner);
return TRUE;
}
@@ -385,11 +419,7 @@ BOOL CDlgBannerSetting::OnInitDialog()
void CDlgBannerSetting::OnOK()
{
GetDlgItemText(IDC_BANNER_TEXT, g_szPrintBanner, sizeof(g_szPrintBanner));
// Persist to options.ini so it survives a restart.
char szINI[MAX_PATH];
sprintf(szINI, "%s\\options.ini", AssetsDirectory1);
WritePrivateProfileString("battle tech print", "BannerText", g_szPrintBanner, szINI);
SaveBannerTextFile();
CDialog::OnOK();
}