From d06cf5871c0f80e0705fb48fdbf7e65fad63eec1 Mon Sep 17 00:00:00 2001 From: sirakaba Date: Fri, 14 Jan 2011 14:13:15 +0000 Subject: [PATCH] =?utf8?q?=E6=9B=B8=E5=BA=AB=E8=AA=AD=E3=81=BF=E8=BE=BC?= =?utf8?q?=E3=81=BF=E6=99=82=E3=81=AB=E9=80=B2=E6=8D=97=E3=83=90=E3=83=BC?= =?utf8?q?=E3=81=8C=E6=A9=9F=E8=83=BD=E3=81=97=E3=81=A6=E3=81=84=E3=81=AA?= =?utf8?q?=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3?= =?utf8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@472 9df91469-1e22-0410-86e7-ea8537beb833 --- src/lychee/dlg_process.cpp | 13 +++++-------- src/lychee/frm_main.cpp | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/lychee/dlg_process.cpp b/src/lychee/dlg_process.cpp index 4f05c2d..54cb22d 100644 --- a/src/lychee/dlg_process.cpp +++ b/src/lychee/dlg_process.cpp @@ -103,10 +103,6 @@ int ProcessDialog::CallbackProc(unsigned int _uMsg, void * _pStructure) case TPI_MESSAGE_STATUS: { static int s_nGaugeCounter = 0, s_nInterval = 0; - if (! this->IsShown()) - { - return TPI_CALLBACK_CONTINUE; - } switch (piInfo->eStatus) { case TPI_STATUS_OPENARCHIVE: @@ -138,15 +134,16 @@ int ProcessDialog::CallbackProc(unsigned int _uMsg, void * _pStructure) s_nGaugeCounter = 0; } break; - // 書庫ロード時用の独自仕様。 - case 0x1000: + // Lycheeの独自仕様。 + case 0x1000: // 初期設定。 this->ebSource->ChangeValue(piInfo->fiInfo.fnFileName.GetFullPath()); + this->Update(); + case 0x1001: // 書庫ロード時には最初にファイル数が分からないので、ここで設定。 this->gArchive->SetRange(piInfo->fiInfo.nUnpackedSize); this->gArchive->SetValue(0); - this->Update(); s_nInterval = piInfo->fiInfo.nUnpackedSize / 10; break; - case 0x1001: + case 0x1002: // 各ファイルの処理を開始。 if (piInfo->fiInfo.nUnpackedSize > 10000) { this->ebTarget->ChangeValue(piInfo->fiInfo.fnFileName.GetFullPath()); diff --git a/src/lychee/frm_main.cpp b/src/lychee/frm_main.cpp index afab185..89482e7 100644 --- a/src/lychee/frm_main.cpp +++ b/src/lychee/frm_main.cpp @@ -326,12 +326,13 @@ void MainFrame::OnArcOpen(wxCommandEvent& e) // 進捗ダイアログ表示。 ProcessDialog procDlg; procDlg.fnArchive = & this->fnArchive; + procDlg.Show(true); // DnD以外で書庫を開く場合、TPIを読み込み。 TPI_PROCESSINFO piInfo; if (! this->LoadTPI(this->fnArchive.GetFullPath(), & piInfo.fiInfo.nUnpackedSize)) { - tpi.FreeLibrary(); + procDlg.Show(false); if (nMode == 2) { // DnDの場合は書庫を作成する。 @@ -350,8 +351,16 @@ void MainFrame::OnArcOpen(wxCommandEvent& e) return; } - procDlg.nFileCount = piInfo.fiInfo.nUnpackedSize; - procDlg.Show(true); + piInfo.eMessage = TPI_MESSAGE_STATUS; + piInfo.eStatus = 0x1001; + if (this->ErrorCheck(procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo), wxT("Callback")) == TPI_CALLBACK_CANCEL) + { + procDlg.Show(false); + tpi.CloseArchive(); + wxCommandEvent e; + this->OnArcClose(e); + return; + } // 配列のサイズを確保。 this->fileinfo.Alloc(piInfo.fiInfo.nUnpackedSize); @@ -377,8 +386,7 @@ void MainFrame::OnArcOpen(wxCommandEvent& e) // ファイル情報をロード。 if (tpi.GetFileInformation(& piInfo.fiInfo, true)) { - piInfo.eMessage = TPI_MESSAGE_STATUS; - piInfo.eStatus = 0x1001; + piInfo.eStatus = 0x1002; piInfo.nProcessedSize = 0; do { -- 2.11.0