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:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user