OSDN Git Service

ファイルの処理先を問うTPI_PARAM_DESTを追加。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 23 Sep 2010 14:53:19 +0000 (14:53 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 23 Sep 2010 14:53:19 +0000 (14:53 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@340 9df91469-1e22-0410-86e7-ea8537beb833

src/plugin/spiLibrary/spiLibrary.cpp

index c43aff1..4072fd7 100644 (file)
@@ -338,38 +338,42 @@ int __stdcall Command
        {\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
@@ -385,8 +389,7 @@ int __stdcall Command
 \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