Skip to content

Commit

Permalink
add setting of serial numbering filenames 7
Browse files Browse the repository at this point in the history
  • Loading branch information
katahiromz committed Apr 18, 2024
1 parent 1700365 commit 8eba7fe
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 17 deletions.
42 changes: 34 additions & 8 deletions GUI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2900,24 +2900,50 @@ BOOL __fastcall XgNumberingSave(HWND hwnd, BOOL bPattern)
SYSTEMTIME stNow;
::GetLocalTime(&stNow);

WCHAR szPath[MAX_PATH];
XGStringW strPath, oldName;
BOOL bSameName = FALSE;
for (INT iFile = 0; iFile <= 99999; ++iFile) {
// 連番ファイル名を生成する。
strPath = XgGenerateNumberingFilename(hwnd, szFormat, &stNow, iFile);
if (oldName == strPath)
if (oldName == strPath) // 前回と同じファイル名だった場合。
{
StringCchCopyW(szPath, _countof(szPath), strPath.c_str());
XGStringW strDotExt = PathFindExtensionW(szPath);
PathRemoveExtensionW(szPath);
StringCchCatW(szPath, _countof(szPath), L"~");
PathAddExtensionW(szPath, strDotExt.c_str());
strPath = szPath;
bSameName = TRUE; // フラグを立てて、後で処理する。
break;
}
// ファイル名のファイルが存在すれば、終了。
if (!PathFileExistsW(strPath.c_str()))
break;
// 古い名前を記憶する。
oldName = strPath;
}

if (bSameName) // 同じファイル名の場合。
{
// おそらく連番がない。
// ファイルタイトルにチルダ(~)を追加してファイル名の重複を避けることにする。

// 拡張子のないファイル名を取得する。
WCHAR szFileName[MAX_PATH];
StringCchCopyW(szFileName, _countof(szFileName), strPath.c_str());
XGStringW strDotExt = PathFindExtensionW(szFileName);
if (strDotExt.empty())
strDotExt = L".xd";
PathRemoveExtensionW(szFileName);

// 拡張子のないファイル名にチルダ(~)と拡張子をいくつか追加して再試行する。
for (INT iRetry = 1; iRetry < MAX_PATH; ++iRetry)
{
XGStringW strName = szFileName;
strName += XGStringW(iRetry, L'~'); // チルダを(iRetry + 1)個追加。
strName += strDotExt.c_str(); // 拡張子を追加。
if (!PathFileExistsW(strName.c_str()))
{
strPath = std::move(strName);
break;
}
}
}

// 保存する。
xg_strFileName = strPath;
if (!XgOnSave(hwnd))
Expand Down
26 changes: 17 additions & 9 deletions XgFileSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,27 @@ XgFileSettingsDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
hCmb2 = GetDlgItem(hwnd, cmb2);
ComboBox_AddString(hCmb2, L"Crossword-%6N.xd");
ComboBox_AddString(hCmb2, L"Crossword-%Wx%H-%4N.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y%M%D-%h%m%s-%N.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y%M%D-%h%m%s-%Wx%H-%N.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y_%M_%D-%h_%m_%s-%N.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y_%M_%D-%h_%m_%s-%Wx%H-%N.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y%M%D-%h%m%s.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y%M%D-%h%m%s-%Wx%H.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y%M%D(%w)-%h%m%s.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y%M%D(%w)-%h%m%s-%Wx%H.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y_%M_%D-%h_%m_%s.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y_%M_%D-%h_%m_%s-%Wx%H.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y_%M_%D(%w)-%h_%m_%s.xd");
ComboBox_AddString(hCmb2, L"Cross-%Y_%M_%D(%w)-%h_%m_%s-%Wx%H.xd");
ComboBox_SetText(hCmb2, xg_szNumberingFileName1);
// 連番ファイル名2。
hCmb3 = GetDlgItem(hwnd, cmb3);
ComboBox_AddString(hCmb3, L"Pat-%6N.xd");
ComboBox_AddString(hCmb3, L"Pattern-%6N.xd");
ComboBox_AddString(hCmb3, L"Pat-%Wx%H-%4N.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y%M%D-%h%m%s-%N.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y%M%D-%h%m%s-%Wx%H-%N.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y_%M_%D-%h_%m_%s-%N.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y_%M_%D-%h_%m_%s-%Wx%H-%N.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y%M%D-%h%m%s.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y%M%D-%h%m%s-%Wx%H.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y%M%D(%w)-%h%m%s.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y%M%D(%w)-%h%m%s-%Wx%H.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y_%M_%D-%h_%m_%s.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y_%M_%D-%h_%m_%s-%Wx%H.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y_%M_%D(%w)-%h_%m_%s.xd");
ComboBox_AddString(hCmb3, L"Pat-%Y_%M_%D(%w)-%h_%m_%s-%Wx%H.xd");
ComboBox_SetText(hCmb3, xg_szNumberingFileName2);
// ドラッグ&ドロップを受け付ける。
DragAcceptFiles(hwnd, TRUE);
Expand Down

0 comments on commit 8eba7fe

Please sign in to comment.