{\r
do\r
{\r
- // コールバックを送信。\r
- piInfo.eStatus = TPI_STATUS_BEGINPROCESS;\r
+ // 処理対象かどうか判定。\r
+ if ((! _szFiles.IsEmpty()) && _szFiles.Index(piInfo.fiInfo.szStoredName) == wxNOT_FOUND)\r
+ {\r
+ continue;\r
+ }\r
+\r
+ // 処理を行うか確認。\r
+ piInfo.eMessage = TPI_MESSAGE_ASK;\r
+ piInfo.eStatus = TPI_PARAM_DEST;\r
+ piInfo.fnDestination = wxFileName(_swInfo->fnDestinationDirectory.GetPathWithSep() + (_swInfo->fStoreDirectoryPathes ? piInfo.fiInfo.fnFileName.GetFullPath() : piInfo.fiInfo.fnFileName.GetFullName()));\r
if (CallbackProc(0, 0, (long) & piInfo))\r
{\r
nErrorCode = TPI_ERROR_D_SKIPPED;\r
break;\r
}\r
- piInfo.eStatus = TPI_STATUS_INPROCESS;\r
-\r
- // 処理対象かどうか判定。\r
- if ((! _szFiles.IsEmpty()) && _szFiles.Index(piInfo.fiInfo.szStoredName) == wxNOT_FOUND)\r
+ if (! piInfo.fnDestination.IsOk())\r
{\r
continue;\r
}\r
\r
- // 出力名作成。\r
- wxString szTargetPath = _swInfo->fnDestinationDirectory.GetPathWithSep();\r
- if (_swInfo->fStoreDirectoryPathes)\r
+ // 出力先作成。\r
+ if (! piInfo.fnDestination.Mkdir(0777, wxPATH_MKDIR_FULL))\r
{\r
- // 展開先ディレクトリを作成。\r
- szTargetPath += piInfo.fiInfo.fnFileName.GetFullPath();\r
- wxFileName fnDest(szTargetPath);\r
- if (! fnDest.Mkdir(0777, wxPATH_MKDIR_FULL) || ::wxDirExists(fnDest.GetFullPath()))\r
- {\r
- nErrorCode = TPI_ERROR_IO_DIR_WRITE;\r
- break;\r
- }\r
+ nErrorCode = TPI_ERROR_IO_DIR_WRITE;\r
+ break;\r
}\r
- else\r
+\r
+ // コールバックを送信。\r
+ piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+ piInfo.eStatus = TPI_STATUS_BEGINPROCESS;\r
+ if (CallbackProc(0, 0, (long) & piInfo))\r
{\r
- szTargetPath += piInfo.fiInfo.fnFileName.GetFullName();\r
+ nErrorCode = TPI_ERROR_D_SKIPPED;\r
+ break;\r
}\r
+ piInfo.eStatus = TPI_STATUS_INPROCESS;\r
\r
// ファイル出力には対応してないのでメモリ出力で代行。\r
HLOCAL hMemory = NULL;\r
\r
// 展開先に出力。\r
wxFile hFile;\r
- // 強制上書きするので注意。\r
- if (! hFile.Create(szTargetPath, true))\r
+ if (! hFile.Create(piInfo.fnDestination.GetFullPath()))\r
{\r
nErrorCode = TPI_ERROR_IO_FILE_OPEN;\r
break;\r