case TPI_MESSAGE_STATUS:\r
{\r
static int s_nGaugeCounter = 0, s_nInterval = 0;\r
- if (! this->IsShown())\r
- {\r
- return TPI_CALLBACK_CONTINUE;\r
- }\r
switch (piInfo->eStatus)\r
{\r
case TPI_STATUS_OPENARCHIVE:\r
s_nGaugeCounter = 0;\r
}\r
break;\r
- // 書庫ロード時用の独自仕様。\r
- case 0x1000:\r
+ // Lycheeの独自仕様。\r
+ case 0x1000: // 初期設定。\r
this->ebSource->ChangeValue(piInfo->fiInfo.fnFileName.GetFullPath());\r
+ this->Update();\r
+ case 0x1001: // 書庫ロード時には最初にファイル数が分からないので、ここで設定。\r
this->gArchive->SetRange(piInfo->fiInfo.nUnpackedSize);\r
this->gArchive->SetValue(0);\r
- this->Update();\r
s_nInterval = piInfo->fiInfo.nUnpackedSize / 10;\r
break;\r
- case 0x1001:\r
+ case 0x1002: // 各ファイルの処理を開始。\r
if (piInfo->fiInfo.nUnpackedSize > 10000)\r
{\r
this->ebTarget->ChangeValue(piInfo->fiInfo.fnFileName.GetFullPath());\r
// 進捗ダイアログ表示。\r
ProcessDialog procDlg;\r
procDlg.fnArchive = & this->fnArchive;\r
+ procDlg.Show(true);\r
\r
// DnD以外で書庫を開く場合、TPIを読み込み。\r
TPI_PROCESSINFO piInfo;\r
if (! this->LoadTPI(this->fnArchive.GetFullPath(), & piInfo.fiInfo.nUnpackedSize))\r
{\r
- tpi.FreeLibrary();\r
+ procDlg.Show(false);\r
if (nMode == 2)\r
{\r
// DnDの場合は書庫を作成する。\r
return;\r
}\r
\r
- procDlg.nFileCount = piInfo.fiInfo.nUnpackedSize;\r
- procDlg.Show(true);\r
+ piInfo.eMessage = TPI_MESSAGE_STATUS;\r
+ piInfo.eStatus = 0x1001;\r
+ if (this->ErrorCheck(procDlg.CallbackProc(TPI_NOTIFY_COMMON, & piInfo), wxT("Callback")) == TPI_CALLBACK_CANCEL)\r
+ {\r
+ procDlg.Show(false);\r
+ tpi.CloseArchive();\r
+ wxCommandEvent e;\r
+ this->OnArcClose(e);\r
+ return;\r
+ }\r
\r
// 配列のサイズを確保。\r
this->fileinfo.Alloc(piInfo.fiInfo.nUnpackedSize);\r
// ファイル情報をロード。\r
if (tpi.GetFileInformation(& piInfo.fiInfo, true))\r
{\r
- piInfo.eMessage = TPI_MESSAGE_STATUS;\r
- piInfo.eStatus = 0x1001;\r
+ piInfo.eStatus = 0x1002;\r
piInfo.nProcessedSize = 0;\r
do\r
{\r