OSDN Git Service

Command()に書庫のハンドルを渡せるよう変更。TPI_INFO_HANDLE_ON_COMMANDを追加。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 15 Jan 2012 10:54:23 +0000 (10:54 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 15 Jan 2012 10:54:23 +0000 (10:54 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@590 9df91469-1e22-0410-86e7-ea8537beb833

doc/history.html
src/lychee/frm_main.cpp

index 1927dbf..794303f 100644 (file)
   <h2>History</h2>\r
   <h3 id="v0.01beta14">Ver.0.01&beta;14 (2012/--/--)</h3>\r
   <dl>\r
+   <dt>TPI</dt>\r
+   <dd>\r
+    <ul>\r
+     <li class="add">TPI_INFO_HANDLE_ON_COMMANDを追加。</li>\r
+     <li class="chg">Command()に書庫のハンドルを渡せるよう変更。</li>\r
+    </ul>\r
+   </dd>\r
    <dt>calLibrary</dt>\r
    <dd>\r
     <ul>\r
      <li class="fix">GetFileCount()が実装されていないライブラリで書庫を開けないバグを修正。</li>\r
     </ul>\r
    </dd>\r
+   <dt>sqxArc</dt>\r
+   <dd>\r
+    <ul>\r
+     <li class="fix">書庫への追加操作に対応していないのに、操作が実行できるようになっていたバグを修正。</li>\r
+    </ul>\r
+   </dd>\r
   </dl>\r
 \r
   <h3 id="v0.01beta13">Ver.0.01&beta;13 (2011/10/18)</h3>\r
index a5860db..10105f6 100644 (file)
@@ -199,7 +199,7 @@ void MainFrame::OnInit(wxInitDialogEvent&)
        this->toolbar->Show(fShow);\r
 \r
        // ステータスバー上にプログレスバーを作成。\r
-       this->gFrame = new wxGauge(this, -1, 0, wxPoint(0, 0), wxSize(200, 10));\r
+       this->gFrame = new wxGauge(this->statusbar, -1, 0, wxPoint(0, 0), wxSize(200, 10));\r
        this->gFrame->Show(false);\r
 }\r
 \r
@@ -218,20 +218,10 @@ void MainFrame::OnClose(wxCloseEvent& e)
 \r
 void MainFrame::OnSize(wxSizeEvent& e)\r
 {\r
-       // ウインドウの内容の位置を変更。\r
-       if (this->window_splitter != NULL)\r
-       {\r
-               this->window_splitter->SetSize(this->GetClientSize());\r
-       }\r
-\r
        // プログレスバーの位置を変更。\r
        if (this->gFrame != NULL)\r
        {\r
-               wxPoint p = this->statusbar->GetPosition();\r
-               wxSize  s = this->GetSize();\r
-               p.x += s.GetWidth() - 230;\r
-               p.y += 10;\r
-               this->gFrame->SetPosition(p);\r
+               this->gFrame->SetPosition(wxPoint(this->statusbar->GetSize().GetWidth() - 230, 10));\r
        }\r
        e.Skip();\r
 }\r
@@ -292,7 +282,7 @@ void MainFrame::OnArcCreate(wxCommandEvent& e)
        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
@@ -306,6 +296,7 @@ void MainFrame::OnArcCreate(wxCommandEvent& e)
 \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
@@ -315,7 +306,7 @@ void MainFrame::OnArcCreate(wxCommandEvent& e)
        // 処理を行う。\r
        {\r
                ProcessDialog procDlg(this, mkDlg.files.GetCount());\r
-               tpi.Command(TPI_COMMAND_CREATE, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
+               tpi.Command(TPI_COMMAND_CREATE, & swInfo, mkDlg.files);\r
                procDlg.Show(false);\r
                if (this->ErrorCheck(tpi.nErrorCode) != TPI_ERROR_SUCCESS)\r
                {\r
@@ -339,6 +330,7 @@ void MainFrame::OnArcCreate(wxCommandEvent& e)
        // 終了しない場合は書庫を開く。\r
        if (this->fnArchive.FileExists())\r
        {\r
+               e.SetInt(1);\r
                this->OnArcOpen(e);\r
        }\r
 }\r
@@ -530,9 +522,12 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
        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
@@ -587,6 +582,11 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
 \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
@@ -701,8 +701,9 @@ void MainFrame::OnArcAdd(wxCommandEvent& e)
        }\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
@@ -715,7 +716,7 @@ void MainFrame::OnArcAdd(wxCommandEvent& e)
        // 処理を行う。\r
        {\r
                ProcessDialog procDlg(this, mkDlg.files.GetCount(), this->szPassword);\r
-               tpi.Command(TPI_COMMAND_ADD, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
+               tpi.Command(TPI_COMMAND_ADD, & swInfo, mkDlg.files);\r
                this->ErrorCheck(tpi.nErrorCode);\r
                procDlg.Show(false);\r
        }\r
@@ -733,13 +734,15 @@ void MainFrame::OnArcAdd(wxCommandEvent& e)
        }\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
@@ -754,7 +757,7 @@ void MainFrame::OnArcConvert(wxCommandEvent& e)
        files.Add(fd.GetPath());\r
 \r
        ProcessDialog procDlg(this);\r
-       tpi.Command(swInfo.fMakeSFX ? TPI_COMMAND_SFX : TPI_COMMAND_UNSFX, & swInfo, this->fnArchive.GetFullPath(), files);\r
+       tpi.Command(swInfo.fMakeSFX ? TPI_COMMAND_SFX : TPI_COMMAND_UNSFX, & swInfo, files);\r
        this->ErrorCheck(tpi.nErrorCode);\r
        procDlg.Show(false);\r
 }\r
@@ -762,8 +765,9 @@ void MainFrame::OnArcConvert(wxCommandEvent& e)
 void MainFrame::OnArcExtract(wxCommandEvent& e)\r
 {\r
        TPI_SWITCHES swInfo;\r
-       swInfo.pCustomSwitches = NULL;\r
-       swInfo.szPassword = this->szPassword;\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
@@ -825,7 +829,7 @@ void MainFrame::OnArcExtract(wxCommandEvent& e)
        // 処理を行う。\r
        {\r
                ProcessDialog procDlg(this, mkDlg.files.GetCount(), this->szPassword);\r
-               tpi.Command(TPI_COMMAND_EXTRACT, & swInfo, this->fnArchive.GetFullPath(), mkDlg.files);\r
+               tpi.Command(TPI_COMMAND_EXTRACT, & swInfo, mkDlg.files);\r
                this->ErrorCheck(tpi.nErrorCode);\r
                procDlg.Show(false);\r
        }\r
@@ -963,13 +967,15 @@ void MainFrame::OnArcDelete(wxCommandEvent& e)
                wxArrayString asFiles = MakeTargetFileList(this);\r
                ProcessDialog procDlg(this, asFiles.GetCount(), this->szPassword);\r
                TPI_SWITCHES swInfo;\r
+               swInfo.szArcName  = this->fnArchive.GetFullPath();\r
                swInfo.szPassword = this->szPassword;\r
-               tpi.Command(TPI_COMMAND_DELETE, & swInfo, this->fnArchive.GetFullPath(), asFiles);\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
@@ -979,8 +985,9 @@ void MainFrame::OnArcTest(wxCommandEvent&)
        wxArrayString asFiles = MakeTargetFileList(this);\r
        ProcessDialog procDlg(this, asFiles.GetCount(), this->szPassword);\r
        TPI_SWITCHES swInfo;\r
+       swInfo.szArcName  = this->fnArchive.GetFullPath();\r
        swInfo.szPassword = this->szPassword;\r
-       tpi.Command(TPI_COMMAND_TEST, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r
+       tpi.Command(TPI_COMMAND_TEST, & swInfo, asFiles);\r
        this->ErrorCheck(tpi.nErrorCode);\r
        procDlg.Show(false);\r
 }\r
@@ -991,8 +998,9 @@ void MainFrame::OnArcRepair(wxCommandEvent&)
        wxArrayString asFiles = MakeTargetFileList(this);\r
        ProcessDialog procDlg(this, asFiles.GetCount(), this->szPassword);\r
        TPI_SWITCHES swInfo;\r
+       swInfo.szArcName  = this->fnArchive.GetFullPath();\r
        swInfo.szPassword = this->szPassword;\r
-       tpi.Command(TPI_COMMAND_REPAIR, & swInfo, this->fnArchive.GetFullPath(), asFiles);\r
+       tpi.Command(TPI_COMMAND_REPAIR, & swInfo, asFiles);\r
        this->ErrorCheck(tpi.nErrorCode);\r
        procDlg.Show(false);    \r
 }\r