// MainFrame\r
//******************************************************************************\r
\r
-MainFrame::MainFrame(): wxFrame()\r
+MainFrame::MainFrame(): wxFrame(), gFrame(NULL)\r
{\r
}\r
\r
MainFrame::~MainFrame()\r
{\r
- wxCommandEvent e;\r
- this->OnArcClose(e);\r
-\r
// 設定を記録。\r
if (! this->IsIconized() && ! this->IsMaximized())\r
{\r
this->conf.WriteId(CONF_WINDOW_X, a);\r
this->conf.WriteId(CONF_WINDOW_Y, b);\r
}\r
- this->conf.WriteId(CONF_WINDOW_SPLITTER_POS, this->window_splitter->GetSashPosition());\r
+\r
+ // ウインドウが表示されていないときは、GetSashPosition()が不正な値を返す。\r
+ if (this->IsShown())\r
+ {\r
+ this->conf.WriteId(CONF_WINDOW_SPLITTER_POS, this->window_splitter->GetSashPosition());\r
+ }\r
\r
// ツールバー/ステータスバー関連。\r
this->conf.WriteId(CONF_WINDOW_STATUSBAR, this->statusbar->IsShown());\r
this->conf.WriteId(CONF_LISTVIEW_S_ASCEND, g_fSortAscend);\r
}\r
\r
- this->Close(true);\r
+ wxCommandEvent e;\r
+ delete this->gFrame;\r
+ this->Show(false);\r
+ this->OnArcClose(e);\r
}\r
\r
//******************************************************************************\r
//******************************************************************************\r
\r
BEGIN_EVENT_TABLE(MainFrame, wxFrame)\r
- EVT_INIT_DIALOG( MainFrame::OnInit)\r
+ EVT_INIT_DIALOG(MainFrame::OnInit)\r
+ EVT_SIZE( MainFrame::OnSize)\r
+ EVT_CLOSE( MainFrame::OnClose)\r
// Menu\r
EVT_MENU(XRCID("Arc_Create"), MainFrame::OnArcCreate)\r
EVT_MENU(XRCID("Arc_Open"), MainFrame::OnArcOpen)\r
fShow = this->conf.ReadId(CONF_WINDOW_TOOLBAR, true);\r
this->menubar->Check(XRCID("Exe_View_ToolBar"), fShow);\r
this->toolbar->Show(fShow);\r
+\r
+ // ステータスバー上にプログレスバーを作成。\r
+ this->gFrame = new wxGauge(this->statusbar, -1, 0, wxPoint(0, 0), wxSize(200, 10));\r
+ this->gFrame->Show(false);\r
+}\r
+\r
+void MainFrame::OnClose(wxCloseEvent& e)\r
+{\r
+ if (e.CanVeto() && g_procDlg != NULL)\r
+ {\r
+ g_procDlg->OnClose(e);\r
+ e.Veto();\r
+ }\r
+ else\r
+ {\r
+ this->Destroy();\r
+ }\r
+}\r
+\r
+void MainFrame::OnSize(wxSizeEvent& e)\r
+{\r
+ // プログレスバーの位置を変更。\r
+ if (this->gFrame != NULL)\r
+ {\r
+ this->gFrame->SetPosition(wxPoint(this->statusbar->GetSize().GetWidth() - 230, 10));\r
+ }\r
+ e.Skip();\r
}\r
\r
// MenuBar\r
swInfo.pCustomSwitches = NULL;\r
\r
// 作成ダイアログを設定。\r
- MakeDialog mkDlg;\r
- mkDlg.SetParent(this);\r
+ MakeDialog mkDlg(this, TPI_COMMAND_CREATE);\r
if (e.GetClientData() == NULL)\r
{\r
// 処理対象のファイルを選択。\r
int nSelected = mkDlg.chType->GetSelection();\r
swInfo.nArchiveType = mkDlg.afInfo[nSelected].nTypeId;\r
swInfo.fStoreDirectoryPathes= ! mkDlg.cbIgnorePath->IsChecked();\r
- swInfo.fMakeSFX = mkDlg.cbMakeSFX->IsChecked();\r
+ swInfo.fMakeSFX = mkDlg.cbMakeSFX->IsChecked();\r
swInfo.fSolid = mkDlg.cbSolid->IsChecked();\r
swInfo.fMMOptimize = mkDlg.cbMMOptimize->IsChecked();\r
swInfo.fEncryptHeader = mkDlg.cbEncryptHeader->IsChecked();\r
\r
// TPIを読み込み。\r
this->fnArchive = wxFileName(mkDlg.cbDir->GetValue(), mkDlg.cbFileName->GetValue());\r
+ swInfo.szArcName = this->fnArchive.GetFullPath();\r
if (! tpi.InitLibrary(mkDlg.afInfo[nSelected].szTPIName, this->fnArchive.GetFullPath(), TPICallbackProc, mkDlg.afInfo[nSelected].nTypeId))\r
{\r
this->ErrorCheck(tpi.nErrorCode, wxT("InitLibrary"));\r
\r
// 処理を行う。\r
{\r
- ProcessDialog procDlg;\r
- procDlg.fnArchive = & this->fnArchive;\r
- procDlg.nFileCount = mkDlg.files.GetCount();\r
- procDlg.Show(true);\r
-\r
- tpi.Command(TPI_COMMAND_CREATE, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
- this->ErrorCheck(tpi.nErrorCode);\r
+ ProcessDialog procDlg(this, mkDlg.files.GetCount());\r
+ tpi.Command(TPI_COMMAND_CREATE, & swInfo, mkDlg.files);\r
procDlg.Show(false);\r
+ if (this->ErrorCheck(tpi.nErrorCode) != TPI_ERROR_SUCCESS)\r
+ {\r
+ tpi.FreeLibrary();\r
+ return;\r
+ }\r
}\r
tpi.FreeLibrary();\r
\r
}\r
\r
// 終了しない場合は書庫を開く。\r
- this->OnArcOpen(e);\r
+ if (this->fnArchive.FileExists())\r
+ {\r
+ e.SetInt(1);\r
+ this->OnArcOpen(e);\r
+ }\r
}\r
\r
void MainFrame::OnArcOpen(wxCommandEvent& e)\r
{\r
// モード取得。通常は0, それ以外で開く場合は1, ファイルDnDなら2。\r
- int nMode = e.GetInt() == 2 ? 2 : e.GetId() == XRCID("Arc_Open") ? 0 : 1;\r
+ int nMode = e.GetInt();\r
\r
// 書庫を選択。\r
if (nMode == 0)\r
this->fnArchive = wxFileName(fd.GetPath());\r
}\r
\r
- // 進捗ダイアログ表示。\r
- ProcessDialog procDlg;\r
- procDlg.fnArchive = & this->fnArchive;\r
- procDlg.Show(true);\r
-\r
- // DnD以外で書庫を開く場合、TPIを読み込み。\r
+ // TPIを読み込み。\r
+ ProcessDialog procDlg(this);\r
TPI_PROCESSINFO piInfo;\r
+ piInfo.fiInfo.nUnpackedSize = 0;\r
if (! this->LoadTPI(this->fnArchive.GetFullPath(), & piInfo.fiInfo.nUnpackedSize))\r
{\r
- procDlg.Show(false);\r
if (nMode == 2)\r
{\r
// DnDの場合は書庫を作成する。\r
return;\r
}\r
\r
+ // コマンドラインから書庫を開く場合にはウインドウが表示されていないので表示。\r
+ if (! this->IsShown())\r
+ {\r
+ this->Show();\r
+ }\r
+\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
+ // OnArcClose処理はProcessDialogのデストラクタで行う。\r
+ // this->OnArcClose(e);\r
return;\r
}\r
\r
g_hIconT.Add(wxBitmap(L_DIR_S_ICO wxT("folder_open.png"), wxBITMAP_TYPE_ANY));\r
this->tree_ctrl->SetImageList(& g_hIconT);\r
wxTreeItemId\r
- idRoot = this->tree_ctrl->AddRoot(wxEmptyString),\r
-#ifdef __WINDOWS__\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, this->fnArchive.GetFullName(), g_hIconT.Add(GetFileTypeIcon(piInfo.fiInfo.fnFileName).ConvertToImage().Rescale(16, 16))),\r
-#endif\r
+ idRoot = this->tree_ctrl->AddRoot(wxEmptyString),\r
+ idArchive = this->tree_ctrl->AppendItem(idRoot, this->fnArchive.GetFullName(), g_hIconT.Add(myRescaleIcon(GetFileTypeIcon(this->fnArchive)))),\r
idArcRoot = this->tree_ctrl->AppendItem(idRoot, wxT("-----"), 0, 1);\r
\r
// 巨大書庫のときにファイル名検査を省略するか。\r
{\r
procDlg.Show(false);\r
tpi.CloseArchive();\r
- wxCommandEvent e;\r
- this->OnArcClose(e);\r
+ // OnArcClose処理はProcessDialogのデストラクタで行う。\r
+ // this->OnArcClose(e);\r
return;\r
}\r
\r
// 書庫の情報を取得。\r
tpi.GetArchiveInformation(& this->aiArchive);\r
this->ErrorCheck(tpi.nErrorCode, wxT("GetArchiveInformation"));\r
+ this->szPassword = procDlg.szPassword;\r
\r
- // 書庫を閉じる。\r
- tpi.CloseArchive();\r
- this->ErrorCheck(tpi.nErrorCode, wxT("CloseArchive"));\r
+ // Command()でハンドルを用いない場合は、ここで書庫を閉じる。\r
+ if (! tpi.bHandleOnCommand)\r
+ {\r
+ tpi.CloseArchive();\r
+ this->ErrorCheck(tpi.nErrorCode, wxT("CloseArchive"));\r
+ }\r
\r
// 以下、UI処理。\r
this->fileinfo.Shrink();\r
- this->tree_ctrl->Freeze();\r
if (this->fileinfo.Count() < 10000)\r
{\r
this->tree_ctrl->ExpandAll();\r
// ツリービューの位置合わせ。\r
this->tree_ctrl->ScrollTo(idArchive);\r
this->tree_ctrl->SetScrollPos(wxHORIZONTAL, 0);\r
- this->tree_ctrl->Thaw();\r
this->list_ctrl->atDangerItem.SetTextColour(* wxRED);\r
this->list_ctrl->atEncryptedItem.SetTextColour(wxColour(wxT("forest green")));\r
\r
this->statusbar->SetStatusText(this->fnArchive.GetFullPath(), 4);\r
this->statusbar->SetToolTip(\r
wxString::Format(\r
- _("%s(%s)\nModify: %s\nCreate: %s\nTPI: %s(%s)"),\r
+ _("%s(%s)\nTPI: %s(%s)\nAccess: %s\nModify: %s\nCreate: %s\nComment:\n%s"),\r
this->fnArchive.GetFullName().c_str(), this->aiArchive.fiInfo.szTypeName.c_str(),\r
+ this->aiArchive.fiInfo.szTPIName.c_str(), this->aiArchive.fiInfo.szEngineName.c_str(),\r
+ this->aiArchive.tmAccess.Format(_("%Y/%m/%d %H:%M:%S")).c_str(),\r
this->aiArchive.tmModify.Format(_("%Y/%m/%d %H:%M:%S")).c_str(),\r
this->aiArchive.tmCreate.Format(_("%Y/%m/%d %H:%M:%S")).c_str(),\r
- this->aiArchive.fiInfo.szTPIName.c_str(), this->aiArchive.fiInfo.szEngineName.c_str()\r
+ this->aiArchive.szComment.c_str()\r
)\r
);\r
\r
// ツールバー・メニューバー設定。ファイル選択時しか動作しない削除などは別に設定。\r
SetMenuToolState("Arc_Close", true);\r
- SetMenuToolState("Arc_Add", (this->aiArchive.fiInfo.eSupportedCommand & TPI_COMMAND_ADD) == TPI_COMMAND_ADD && this->aiArchive.fiInfo.fArchive);\r
+ SetMenuToolState("Arc_Add", (this->aiArchive.fiInfo.eSupportedCommand & TPI_COMMAND_ADD) == TPI_COMMAND_ADD && this->aiArchive.fiInfo.fArchive);\r
SetMenuToolState("Arc_SFX", (this->aiArchive.fiInfo.eSupportedCommand & TPI_COMMAND_SFX) == TPI_COMMAND_SFX && ! this->aiArchive.fSFX);\r
- SetMenuToolState("Arc_UnSFX", (this->aiArchive.fiInfo.eSupportedCommand & TPI_COMMAND_UNSFX) == TPI_COMMAND_UNSFX && this->aiArchive.fSFX);\r
+ SetMenuToolState("Arc_UnSFX", (this->aiArchive.fiInfo.eSupportedCommand & TPI_COMMAND_UNSFX) == TPI_COMMAND_UNSFX && this->aiArchive.fSFX);\r
SetMenuToolState("Arc_Extract", (this->aiArchive.fiInfo.eSupportedCommand & TPI_COMMAND_EXTRACT)== TPI_COMMAND_EXTRACT);\r
SetMenuToolState("Arc_Test", (this->aiArchive.fiInfo.eSupportedCommand & TPI_COMMAND_TEST) == TPI_COMMAND_TEST);\r
SetMenuToolState("Arc_Repair", (this->aiArchive.fiInfo.eSupportedCommand & TPI_COMMAND_REPAIR) == TPI_COMMAND_REPAIR);\r
this->menubar->Enable(XRCID("Arc_Clone"), true);\r
\r
+ // タイトルバー設定。\r
+ this->SetTitle(this->fnArchive.GetFullName() + wxT(" - Lychee"));\r
+\r
procDlg.Show(false);\r
this->Raise();\r
}\r
\r
void MainFrame::OnArcClose(wxCommandEvent& e)\r
{\r
+ if (tpi.bHandleOnCommand)\r
+ {\r
+ tpi.CloseArchive();\r
+ }\r
+\r
// ツリービュー・リストビュー設定。\r
this->tree_ctrl->DeleteAllItems();\r
this->list_ctrl->DeleteAllItems();\r
}\r
this->statusbar->SetToolTip(wxEmptyString);\r
this->fileinfo.Clear();\r
+ this->szPassword.Empty();\r
this->aiArchive.szComment.Empty();\r
this->aiArchive.fnArchive.Clear();\r
this->aiArchive.fiInfo.szTypeName.Empty();\r
g_hIconLL.RemoveAll();\r
g_hIconLS.RemoveAll();\r
\r
+ // タイトルバー設定。\r
+ this->SetTitle(wxT("Lychee"));\r
+\r
// DnDで書庫を開くときは既に読み込まれているTPIを用いるので、解放してはいけない。\r
if (e.GetExtraLong() == 0)\r
{\r
void MainFrame::OnArcAdd(wxCommandEvent& e)\r
{\r
// 作成ダイアログを設定。\r
- MakeDialog mkDlg;\r
- mkDlg.SetParent(this);\r
- mkDlg.uCommand = TPI_COMMAND_ADD;\r
+ MakeDialog mkDlg(this, TPI_COMMAND_ADD);\r
\r
TPI_SWITCHES swInfo;\r
swInfo.pCustomSwitches = NULL;\r
}\r
\r
// 各種設定。\r
- swInfo.fMakeSFX = false;\r
- swInfo.fStoreDirectoryPathes = ! mkDlg.cbIgnorePath->IsChecked();\r
+ swInfo.szArcName = this->fnArchive.GetFullPath();\r
+ swInfo.fMakeSFX = false;\r
+ swInfo.fStoreDirectoryPathes= ! mkDlg.cbIgnorePath->IsChecked();\r
swInfo.fSolid = mkDlg.cbSolid->IsChecked();\r
swInfo.fMMOptimize = mkDlg.cbMMOptimize->IsChecked();\r
swInfo.fEncryptHeader = mkDlg.cbEncryptHeader->IsChecked();\r
\r
// 処理を行う。\r
{\r
- ProcessDialog procDlg;\r
- procDlg.fnArchive = & this->fnArchive;\r
- procDlg.nFileCount = mkDlg.files.GetCount();\r
- procDlg.Show(true);\r
-\r
- tpi.Command(TPI_COMMAND_ADD, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
+ ProcessDialog procDlg(this, mkDlg.files.GetCount(), this->szPassword);\r
+ tpi.Command(TPI_COMMAND_ADD, & swInfo, mkDlg.files);\r
this->ErrorCheck(tpi.nErrorCode);\r
procDlg.Show(false);\r
}\r
}\r
\r
// 終了しない場合は書庫を再読み込み。\r
+ e.SetInt(1);\r
this->OnArcOpen(e);\r
}\r
\r
void MainFrame::OnArcConvert(wxCommandEvent& e)\r
{\r
TPI_SWITCHES swInfo;\r
- swInfo.fMakeSFX = e.GetId() == XRCID("Arc_SFX");\r
+ swInfo.szArcName = this->fnArchive.GetFullPath();\r
+ swInfo.fMakeSFX = e.GetId() == XRCID("Arc_SFX");\r
\r
// 保存先を尋ねる。\r
wxFileDialog fd(this, swInfo.fMakeSFX ? _("Save as SFX") : _("Save as normal archive"), this->fnArchive.GetPath(), this->fnArchive.GetName() + (swInfo.fMakeSFX ? EXE_EXT : (wxString) wxEmptyString), wxFileSelectorDefaultWildcardStr, wxFD_SAVE | wxFD_OVERWRITE_PROMPT);\r
wxArrayString files;\r
files.Add(fd.GetPath());\r
\r
- ProcessDialog procDlg;\r
- procDlg.Show(true);\r
- tpi.Command(swInfo.fMakeSFX ? TPI_COMMAND_SFX : TPI_COMMAND_UNSFX, & swInfo, this->fnArchive.GetFullPath(), files);\r
+ ProcessDialog procDlg(this);\r
+ tpi.Command(swInfo.fMakeSFX ? TPI_COMMAND_SFX : TPI_COMMAND_UNSFX, & swInfo, files);\r
this->ErrorCheck(tpi.nErrorCode);\r
procDlg.Show(false);\r
}\r
void MainFrame::OnArcExtract(wxCommandEvent& e)\r
{\r
TPI_SWITCHES swInfo;\r
- swInfo.pCustomSwitches = NULL;\r
+ swInfo.szArcName = this->fnArchive.GetFullPath();\r
+ swInfo.pCustomSwitches = NULL;\r
+ swInfo.szPassword = this->szPassword;\r
\r
// モード取得。通常は0, 実行なら1, ファイルDnDなら2、ディレクトリDnDなら3、クリップボードなら4、コンテキストメニューからなら8。\r
int nMode = e.GetInt();\r
wxFileType * ftFile = NULL;\r
\r
// 展開ダイアログを作成。DnDまたは実行時は表示しない。\r
- MakeDialog mkDlg;\r
- mkDlg.SetParent(this);\r
- mkDlg.uCommand = TPI_COMMAND_EXTRACT;\r
+ MakeDialog mkDlg(this, TPI_COMMAND_EXTRACT);\r
mkDlg.files = MakeTargetFileList(this, nMode == 1, nMode == 0);\r
\r
bool bMakeDir = false;\r
// 作業ディレクトリ作成。\r
swInfo.fStoreDirectoryPathes = false;\r
wxString szDestDirBase = nMode == 3 ? this->tree_ctrl->GetItemText(this->tree_ctrl->GetSelection()) : wxT("tpi_tmp");\r
- wxStandardPaths p;\r
if (szDestDirBase == wxT("-----"))\r
{\r
// 書庫ルートのときは書庫名にしておく。\r
szDestDirBase = this->fnArchive.GetName();\r
}\r
- swInfo.fnDestinationDirectory = MakeDirPath(wxFileName::DirName(p.GetTempDir()), szDestDirBase, true);\r
+ swInfo.fnDestinationDirectory = MakeDirPath(wxFileName::DirName(wxStandardPaths::Get().GetTempDir()), szDestDirBase, true);\r
if (! swInfo.fnDestinationDirectory.IsOk())\r
{\r
wxLogError(_("Unable to make the temporary directory!"));\r
\r
// 処理を行う。\r
{\r
- ProcessDialog procDlg;\r
- procDlg.fnArchive = & this->fnArchive;\r
- procDlg.nFileCount = mkDlg.files.GetCount();\r
- procDlg.Show(true);\r
-\r
- tpi.Command(TPI_COMMAND_EXTRACT, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
+ ProcessDialog procDlg(this, mkDlg.files.GetCount(), this->szPassword);\r
+ tpi.Command(TPI_COMMAND_EXTRACT, & swInfo, mkDlg.files);\r
this->ErrorCheck(tpi.nErrorCode);\r
procDlg.Show(false);\r
}\r
// 処理を行う。\r
{\r
wxArrayString asFiles = MakeTargetFileList(this);\r
- ProcessDialog procDlg;\r
- procDlg.fnArchive = & this->fnArchive;\r
- procDlg.nFileCount = asFiles.GetCount();\r
- procDlg.Show(true);\r
-\r
+ ProcessDialog procDlg(this, asFiles.GetCount(), this->szPassword);\r
TPI_SWITCHES swInfo;\r
- tpi.Command(TPI_COMMAND_DELETE, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r
+ swInfo.szArcName = this->fnArchive.GetFullPath();\r
+ swInfo.szPassword = this->szPassword;\r
+ tpi.Command(TPI_COMMAND_DELETE, & swInfo, asFiles);\r
this->ErrorCheck(tpi.nErrorCode);\r
procDlg.Show(false);\r
}\r
\r
// 書庫を再読み込みする。\r
+ e.SetInt(1);\r
this->OnArcOpen(e);\r
}\r
\r
{\r
// 処理を行う。\r
wxArrayString asFiles = MakeTargetFileList(this);\r
- ProcessDialog procDlg;\r
- procDlg.fnArchive = & this->fnArchive;\r
- procDlg.nFileCount = asFiles.GetCount();\r
- procDlg.Show(true);\r
-\r
+ ProcessDialog procDlg(this, asFiles.GetCount(), this->szPassword);\r
TPI_SWITCHES swInfo;\r
- bool bIsCorrect = tpi.Command(TPI_COMMAND_TEST, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r
+ swInfo.szArcName = this->fnArchive.GetFullPath();\r
+ swInfo.szPassword = this->szPassword;\r
+ tpi.Command(TPI_COMMAND_TEST, & swInfo, asFiles);\r
+ this->ErrorCheck(tpi.nErrorCode);\r
procDlg.Show(false);\r
-\r
- if (bIsCorrect)\r
- {\r
- wxLogMessage(_("This is a correct archive."));\r
- }\r
- else\r
- {\r
- this->ErrorCheck(tpi.nErrorCode);\r
- }\r
}\r
\r
void MainFrame::OnArcRepair(wxCommandEvent&)\r
{\r
// 処理を行う。\r
wxArrayString asFiles = MakeTargetFileList(this);\r
- ProcessDialog procDlg;\r
- procDlg.fnArchive = & this->fnArchive;\r
- procDlg.nFileCount = asFiles.GetCount();\r
- procDlg.Show(true);\r
-\r
+ ProcessDialog procDlg(this, asFiles.GetCount(), this->szPassword);\r
TPI_SWITCHES swInfo;\r
- tpi.Command(TPI_COMMAND_REPAIR, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r
+ swInfo.szArcName = this->fnArchive.GetFullPath();\r
+ swInfo.szPassword = this->szPassword;\r
+ tpi.Command(TPI_COMMAND_REPAIR, & swInfo, asFiles);\r
this->ErrorCheck(tpi.nErrorCode);\r
procDlg.Show(false); \r
}\r
{\r
do\r
{\r
- // 初期化。\r
- if (! tpi.InitLibrary(L_DIR_B_LIB + szTPIName, szFileName, TPICallbackProc))\r
- {\r
- tpi.FreeLibrary();\r
- continue;\r
- }\r
-\r
- // 対応確認。\r
- if (! tpi.OpenArchive(szFileName, llFileCount))\r
+ // 初期化と対応確認。\r
+ if (! tpi.InitLibrary(L_DIR_B_LIB + szTPIName, szFileName, TPICallbackProc) || ! tpi.OpenArchive(szFileName, llFileCount))\r
{\r
tpi.FreeLibrary();\r
* llFileCount = 0;\r
break;\r
case TPI_ERROR_D_SKIPPED:\r
case TPI_CALLBACK_CANCEL:\r
- wxLogError(_("This operation is canceled by the user."));\r
break;\r
default:\r
wxLogError(_("Error: %s()!\nError code: %d"), szAPIName.c_str(), nErrorCode);\r