OSDN Git Service

コールバック関数に0x1000を送る部分を統合。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 9 Jan 2011 09:40:44 +0000 (09:40 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 9 Jan 2011 09:40:44 +0000 (09:40 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@464 9df91469-1e22-0410-86e7-ea8537beb833

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

index c95d544..7a9d484 100644 (file)
@@ -64,10 +64,16 @@ void ProcessDialog::OnInit(wxInitDialogEvent &)
        this->gArchive          = XRCCTRL(* this, "gArchive",     wxGauge);\r
        this->fCancel           = false;\r
        this->nOverwriteMode    = wxID_OK;\r
-       this->Update();\r
        g_procDlg = this;\r
-\r
        ::wxXmlResource::Get()->Unload(L_DIR_S_XRC wxT("dlg_process.xrc"));\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 = this->nFileCount;\r
+       this->CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
 }\r
 \r
 void ProcessDialog::OnClose(wxCloseEvent & e)\r
index bb1c49f..03f892c 100644 (file)
@@ -31,6 +31,9 @@ public:
        ProcessDialog();\r
        ~ProcessDialog();\r
 \r
+       wxFileName * fnArchive;\r
+       wxULongLong_t nFileCount;\r
+\r
        DECLARE_EVENT_TABLE()\r
 \r
 private:\r
index 296197d..0b9b076 100644 (file)
@@ -282,16 +282,10 @@ void MainFrame::OnArcCreate(wxCommandEvent& e)
        // 処理を行う。\r
        {\r
                ProcessDialog procDlg;\r
+               procDlg.fnArchive  = & this->fnArchive;\r
+               procDlg.nFileCount = mkDlg.files.GetCount();\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
                tpi.Command(TPI_COMMAND_CREATE, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
                this->ErrorCheck(tpi.nErrorCode);\r
                procDlg.Show(false);\r
@@ -333,13 +327,12 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
 \r
        // 進捗ダイアログ表示。\r
        ProcessDialog procDlg;\r
-       procDlg.Show(true);\r
+       procDlg.fnArchive  = & this->fnArchive;\r
 \r
        // DnD以外で書庫を開く場合、TPIを読み込み。\r
        TPI_PROCESSINFO piInfo;\r
        if (! this->LoadTPI(this->fnArchive.GetFullPath(), & piInfo.fiInfo.nUnpackedSize))\r
        {\r
-               procDlg.Show(false);\r
                tpi.FreeLibrary();\r
                if (nMode == 2)\r
                {\r
@@ -359,12 +352,8 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
                return;\r
        }\r
 \r
-       // 最初のコールバックを送信。\r
-       piInfo.eMessage = TPI_MESSAGE_STATUS;\r
-       piInfo.eStatus = 0x1000;\r
-       piInfo.nProcessedSize = 0;\r
-       piInfo.fiInfo.fnFileName = this->fnArchive;\r
-       procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo);\r
+       procDlg.nFileCount = piInfo.fiInfo.nUnpackedSize;\r
+       procDlg.Show(true);\r
 \r
        // 配列のサイズを確保。\r
        this->fileinfo.Alloc(piInfo.fiInfo.nUnpackedSize);\r
@@ -381,20 +370,22 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
        wxTreeItemId\r
                idRoot = this->tree_ctrl->AddRoot(wxEmptyString),\r
 #ifdef __WINDOWS__\r
-               idArchive = this->tree_ctrl->AppendItem(idRoot, piInfo.fiInfo.fnFileName.GetFullName(), g_hIconT.Add(GetFileTypeIcon(piInfo.fiInfo.fnFileName))),\r
+               idArchive = this->tree_ctrl->AppendItem(idRoot, this->fnArchive.GetFullName(), g_hIconT.Add(GetFileTypeIcon(piInfo.fiInfo.fnFileName))),\r
 #else\r
-               idArchive = this->tree_ctrl->AppendItem(idRoot, piInfo.fiInfo.fnFileName.GetFullName(), g_hIconT.Add(GetFileTypeIcon(piInfo.fiInfo.fnFileName).ConvertToImage().Rescale(16, 16))),\r
+               idArchive = this->tree_ctrl->AppendItem(idRoot, this->fnArchive.GetFullName(), g_hIconT.Add(GetFileTypeIcon(piInfo.fiInfo.fnFileName).ConvertToImage().Rescale(16, 16))),\r
 #endif\r
                idArcRoot = this->tree_ctrl->AppendItem(idRoot, wxT("-----"), 0, 1);\r
 \r
        // ファイル情報をロード。\r
        if (tpi.GetFileInformation(& piInfo.fiInfo, true))\r
        {\r
+               piInfo.eMessage = TPI_MESSAGE_STATUS;\r
                piInfo.eStatus = 0x1001;\r
+               piInfo.nProcessedSize = 0;\r
                do\r
                {\r
                        piInfo.nProcessedSize++;\r
-                       if (this->ErrorCheck(procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo)) == TPI_CALLBACK_CANCEL)\r
+                       if (this->ErrorCheck(procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo), wxT("Callback")) == TPI_CALLBACK_CANCEL)\r
                        {\r
                                procDlg.Show(false);\r
                                tpi.CloseArchive();\r
@@ -625,16 +616,10 @@ void MainFrame::OnArcAdd(wxCommandEvent& e)
        // 処理を行う。\r
        {\r
                ProcessDialog procDlg;\r
+               procDlg.fnArchive  = & this->fnArchive;\r
+               procDlg.nFileCount = mkDlg.files.GetCount();\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
                tpi.Command(TPI_COMMAND_ADD, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
                this->ErrorCheck(tpi.nErrorCode);\r
                procDlg.Show(false);\r
@@ -747,16 +732,10 @@ void MainFrame::OnArcExtract(wxCommandEvent& e)
        // 処理を行う。\r
        {\r
                ProcessDialog procDlg;\r
+               procDlg.fnArchive  = & this->fnArchive;\r
+               procDlg.nFileCount = mkDlg.files.GetCount();\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
                tpi.Command(TPI_COMMAND_EXTRACT, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
                this->ErrorCheck(tpi.nErrorCode);\r
                procDlg.Show(false);\r
@@ -884,19 +863,13 @@ void MainFrame::OnArcDelete(wxCommandEvent& e)
 \r
        // 処理を行う。\r
        {\r
-               TPI_SWITCHES swInfo;\r
+               wxArrayString asFiles = MakeTargetFileList(this, false);\r
                ProcessDialog procDlg;\r
+               procDlg.fnArchive  = & this->fnArchive;\r
+               procDlg.nFileCount = asFiles.GetCount();\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
+               TPI_SWITCHES swInfo;\r
                tpi.Command(TPI_COMMAND_DELETE, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r
                this->ErrorCheck(tpi.nErrorCode);\r
                procDlg.Show(false);\r
@@ -909,17 +882,11 @@ void MainFrame::OnArcDelete(wxCommandEvent& e)
 void MainFrame::OnArcTest(wxCommandEvent&)\r
 {\r
        // 処理を行う。\r
+       wxArrayString asFiles = MakeTargetFileList(this, false);\r
        ProcessDialog procDlg;\r
+       procDlg.fnArchive  = & this->fnArchive;\r
+       procDlg.nFileCount = asFiles.GetCount();\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
        TPI_SWITCHES swInfo;\r
        bool bIsCorrect = tpi.Command(TPI_COMMAND_TEST, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r
@@ -938,17 +905,11 @@ void MainFrame::OnArcTest(wxCommandEvent&)
 void MainFrame::OnArcRepair(wxCommandEvent&)\r
 {\r
        // 処理を行う。\r
+       wxArrayString asFiles = MakeTargetFileList(this, false);\r
        ProcessDialog procDlg;\r
+       procDlg.fnArchive  = & this->fnArchive;\r
+       procDlg.nFileCount = asFiles.GetCount();\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
        TPI_SWITCHES swInfo;\r
        tpi.Command(TPI_COMMAND_REPAIR, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r