OSDN Git Service

書庫全体の処理状況を表示する機能を追加。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 4 Mar 2010 02:45:26 +0000 (02:45 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 4 Mar 2010 02:45:26 +0000 (02:45 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@280 9df91469-1e22-0410-86e7-ea8537beb833

src/lychee/dlg_process.cpp
src/lychee/frm_main.cpp

index 6acff50..24a38b9 100644 (file)
@@ -82,7 +82,7 @@ int ProcessDialog::CallbackProc(unsigned int _uMsg, void * _pStructure)
        }\r
 \r
        TPI_PROCESSINFO * piInfo = (TPI_PROCESSINFO *) _pStructure;\r
-       if (piInfo == NULL || ! g_procDlg->IsShown())\r
+       if (piInfo == NULL || ! this->IsShown())\r
        {\r
                return TPI_CALLBACK_CONTINUE;\r
        }\r
index 86cb376..3a3d9d8 100644 (file)
@@ -275,14 +275,25 @@ void MainFrame::OnArcCreate(wxCommandEvent& e)
        }\r
 \r
        // 処理を行う。\r
-       ProcessDialog procDlg;\r
-       procDlg.Show(true);\r
-       if (! tpi.Command(TPI_COMMAND_CREATE, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files))\r
        {\r
-               this->ErrorCheck(tpi.nErrorCode);\r
-               return;\r
+               ProcessDialog procDlg;\r
+               procDlg.Show(true);\r
+\r
+               // コールバックを送信。\r
+               TPI_PROCESSINFO piInfo;\r
+               piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+               piInfo.eStatus = 0x1000;\r
+               piInfo.fiInfo.fnFileName = this->fnArchive;\r
+               piInfo.fiInfo.nUnpackedSize = mkDlg.files.GetCount();\r
+               procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
+\r
+               if (! tpi.Command(TPI_COMMAND_CREATE, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files))\r
+               {\r
+                       this->ErrorCheck(tpi.nErrorCode);\r
+                       return;\r
+               }\r
+               procDlg.Show(false);\r
        }\r
-       procDlg.Show(false);\r
        tpi.FreeLibrary();\r
 \r
        if (mkDlg.cbOpenAfter->IsChecked())\r
@@ -338,7 +349,7 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
                ::wxLogError(_("No plug-in supporting this archive was found!"));\r
                return;\r
        }\r
-       TPICallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
+       procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
 \r
        // 配列のサイズを確保。\r
        this->fileinfo.Alloc(piInfo.fiInfo.nUnpackedSize);\r
@@ -377,7 +388,7 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
                do\r
                {\r
                        piInfo.nProcessedSize++;\r
-                       if (this->ErrorCheck(TPICallbackProc(TPI_NOTIFY_COMMON, & piInfo)) == TPI_CALLBACK_CANCEL)\r
+                       if (this->ErrorCheck(procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo)) == TPI_CALLBACK_CANCEL)\r
                        {\r
                                procDlg.Show(false);\r
                                tpi.CloseArchive();\r
@@ -549,13 +560,25 @@ void MainFrame::OnArcAdd(wxCommandEvent& e)
        swInfo.szKeyFile            = mkDlg.tcKeyfile->GetValue();\r
        swInfo.szComment            = mkDlg.tcComment->GetValue();\r
 \r
-       ProcessDialog procDlg;\r
-       procDlg.Show(true);\r
-       if (! this->tpi.Command(TPI_COMMAND_ADD, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files))\r
+       // 処理を行う。\r
        {\r
-               this->ErrorCheck(tpi.nErrorCode);\r
+               ProcessDialog procDlg;\r
+               procDlg.Show(true);\r
+\r
+               // コールバックを送信。\r
+               TPI_PROCESSINFO piInfo;\r
+               piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+               piInfo.eStatus = 0x1000;\r
+               piInfo.fiInfo.fnFileName = this->fnArchive;\r
+               piInfo.fiInfo.nUnpackedSize = mkDlg.files.GetCount();\r
+               procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
+\r
+               if (! tpi.Command(TPI_COMMAND_ADD, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files))\r
+               {\r
+                       this->ErrorCheck(tpi.nErrorCode);\r
+               }\r
+               procDlg.Show(false);\r
        }\r
-       procDlg.Show(false);\r
 \r
        if (mkDlg.cbOpenAfter->IsChecked())\r
        {\r
@@ -677,13 +700,25 @@ void MainFrame::OnArcExtract(wxCommandEvent& e)
                }\r
        }\r
 \r
-       ProcessDialog procDlg;\r
-       procDlg.Show(true);\r
-       if (! this->tpi.Command(TPI_COMMAND_EXTRACT, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files))\r
+       // 処理を行う。\r
        {\r
-               this->ErrorCheck(tpi.nErrorCode);\r
+               ProcessDialog procDlg;\r
+               procDlg.Show(true);\r
+\r
+               // コールバックを送信。\r
+               TPI_PROCESSINFO piInfo;\r
+               piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+               piInfo.eStatus = 0x1000;\r
+               piInfo.fiInfo.fnFileName = this->fnArchive;\r
+               piInfo.fiInfo.nUnpackedSize = mkDlg.files.GetCount();\r
+               procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
+\r
+               if (! tpi.Command(TPI_COMMAND_EXTRACT, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files))\r
+               {\r
+                       this->ErrorCheck(tpi.nErrorCode);\r
+               }\r
+               procDlg.Show(false);\r
        }\r
-       procDlg.Show(false);\r
 \r
        if (nMode == 0)\r
        {\r
@@ -770,15 +805,27 @@ void MainFrame::OnArcDelete(wxCommandEvent& e)
                return;\r
        }\r
 \r
-       // 各種設定。\r
-       TPI_SWITCHES swInfo;\r
-       ProcessDialog procDlg;\r
-       procDlg.Show(true);\r
-       if (! this->tpi.Command(TPI_COMMAND_DELETE, & swInfo, this->fnArchive.GetFullPath(), MakeTargetFileList(this, false)))\r
+       // 処理を行う。\r
        {\r
-               this->ErrorCheck(tpi.nErrorCode);\r
+               TPI_SWITCHES swInfo;\r
+               ProcessDialog procDlg;\r
+               procDlg.Show(true);\r
+               wxArrayString asFiles = MakeTargetFileList(this, false);\r
+\r
+               // コールバックを送信。\r
+               TPI_PROCESSINFO piInfo;\r
+               piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+               piInfo.eStatus = 0x1000;\r
+               piInfo.fiInfo.fnFileName = this->fnArchive;\r
+               piInfo.fiInfo.nUnpackedSize = asFiles.GetCount();\r
+               procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
+\r
+               if (! tpi.Command(TPI_COMMAND_DELETE, & swInfo, this->fnArchive.GetFullPath(), asFiles))\r
+               {\r
+                       this->ErrorCheck(tpi.nErrorCode);\r
+               }\r
+               procDlg.Show(false);\r
        }\r
-       procDlg.Show(false);    \r
 \r
        // 書庫を再読み込みする。\r
        this->OnArcOpen(e);\r
@@ -786,11 +833,23 @@ void MainFrame::OnArcDelete(wxCommandEvent& e)
 \r
 void MainFrame::OnArcTest(wxCommandEvent&)\r
 {\r
-       TPI_SWITCHES swInfo;\r
+       // 処理を行う。\r
        ProcessDialog procDlg;\r
        procDlg.Show(true);\r
-       bool bIsCorrect = this->tpi.Command(TPI_COMMAND_TEST, & swInfo, this->fnArchive.GetFullPath(), MakeTargetFileList(this, false));\r
+       wxArrayString asFiles = MakeTargetFileList(this, false);\r
+\r
+       // コールバックを送信。\r
+       TPI_PROCESSINFO piInfo;\r
+       piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+       piInfo.eStatus = 0x1000;\r
+       piInfo.fiInfo.fnFileName = this->fnArchive;\r
+       piInfo.fiInfo.nUnpackedSize = asFiles.GetCount();\r
+       procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
+\r
+       TPI_SWITCHES swInfo;\r
+       bool bIsCorrect = tpi.Command(TPI_COMMAND_TEST, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r
        procDlg.Show(false);\r
+\r
        if (bIsCorrect)\r
        {\r
                ::wxLogMessage(_("This is a correct archive."));\r
@@ -803,10 +862,21 @@ void MainFrame::OnArcTest(wxCommandEvent&)
 \r
 void MainFrame::OnArcRepair(wxCommandEvent&)\r
 {\r
-       TPI_SWITCHES swInfo;\r
+       // 処理を行う。\r
        ProcessDialog procDlg;\r
        procDlg.Show(true);\r
-       if (! this->tpi.Command(TPI_COMMAND_REPAIR, & swInfo, this->fnArchive.GetFullPath(), MakeTargetFileList(this, false)))\r
+       wxArrayString asFiles = MakeTargetFileList(this, false);\r
+\r
+       // コールバックを送信。\r
+       TPI_PROCESSINFO piInfo;\r
+       piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+       piInfo.eStatus = 0x1000;\r
+       piInfo.fiInfo.fnFileName = this->fnArchive;\r
+       piInfo.fiInfo.nUnpackedSize = asFiles.GetCount();\r
+       procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
+\r
+       TPI_SWITCHES swInfo;\r
+       if (! this->tpi.Command(TPI_COMMAND_REPAIR, & swInfo, this->fnArchive.GetFullPath(), asFiles))\r
        {\r
                this->ErrorCheck(tpi.nErrorCode);\r
        }\r