OSDN Git Service

ファイルを開く動作でアプリケーションが起動している間も、Lycheeのウインドウを操作できるよう変更。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Fri, 29 Oct 2010 14:39:52 +0000 (14:39 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Fri, 29 Oct 2010 14:39:52 +0000 (14:39 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@394 9df91469-1e22-0410-86e7-ea8537beb833

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

index 38a1b6b..bb431b3 100644 (file)
@@ -26,6 +26,7 @@
      <dd>\r
       <ul>\r
        <li class="add">書庫からクリップボードへファイルをコピーする機能を追加。</li>\r
+       <li class="chg">ファイルを開く動作でアプリケーションが起動している間も、Lycheeのウインドウを操作できるよう変更。</li>\r
        <li class="chg">書庫閲覧時のメモリ使用量を削減。</li>\r
        <li class="chg">書庫のアイコンを変更。</li>\r
        <li class="chg">格納パスにルートが含まれている場合は、それを除いて表示するよう変更。</li>\r
index f175f73..3e3713d 100644 (file)
@@ -737,18 +737,21 @@ void MainFrame::OnArcExtract(wxCommandEvent& e)
                {\r
                        // コマンドを実行。\r
                        wxString szTempFile = swInfo.fnDestinationDirectory.GetPathWithSep() + wxFileName(mkDlg.files[0], wxPATH_DOS).GetFullName();\r
-                       if (tpi.nErrorCode == TPI_ERROR_SUCCESS)\r
+                       bool fSuccess = tpi.nErrorCode == TPI_ERROR_SUCCESS;\r
+                       myProcess * pCallback = new myProcess(szTempFile, swInfo.fnDestinationDirectory.GetPath());\r
+                       if (fSuccess)\r
                        {\r
 #ifdef __LINUX__\r
                                // Linuxでは引用符で囲む必要がある。\r
-                               ::wxExecute(ftFile->GetOpenCommand(QuoteString(szTempFile)), wxEXEC_SYNC);\r
+                               fSuccess = ::wxExecute(ftFile->GetOpenCommand(QuoteString(szTempFile)), wxEXEC_ASYNC, pCallback) > 0;\r
 #else\r
-                               ::wxExecute(ftFile->GetOpenCommand(szTempFile), wxEXEC_SYNC);\r
+                               fSuccess = ::wxExecute(ftFile->GetOpenCommand(szTempFile), wxEXEC_ASYNC, pCallback) > 0;\r
 #endif\r
                        }\r
-\r
-                       ::wxRemoveFile(szTempFile);\r
-                       ::wxRmdir(swInfo.fnDestinationDirectory.GetPath());\r
+                       if (! fSuccess)\r
+                       {\r
+                               pCallback->OnTerminate(0, 0);\r
+                       }\r
                }\r
                else\r
                {\r
index a2e6391..aa73f99 100644 (file)
@@ -259,3 +259,14 @@ wxString QuoteString(const wxString & s)
 {\r
        return wxT('"') + s + wxT('"');\r
 }\r
+\r
+//******************************************************************************\r
+//    「開く」用プロセス\r
+//******************************************************************************\r
+\r
+void myProcess::OnTerminate(int, int)\r
+{\r
+       ::wxRemoveFile(this->szFile);\r
+       ::wxRmdir(this->szDir);\r
+       delete this;\r
+}\r
index c0f63f9..9c12ae4 100644 (file)
@@ -21,6 +21,7 @@
 \r
 #ifndef H_LOADED_FUNCTIONS\r
 #define H_LOADED_FUNCTIONS\r
+#include <wx/process.h>\r
 \r
 //******************************************************************************\r
 //    コントロール処理系関数\r
@@ -40,4 +41,17 @@ wxString GetFileTypeName(const wxFileName &);
 wxIcon GetFileTypeIcon(const wxFileName &);\r
 wxString QuoteString(const wxString &);\r
 \r
+//******************************************************************************\r
+//    「開く」用プロセス\r
+//******************************************************************************\r
+\r
+class myProcess : public wxProcess\r
+{\r
+public:\r
+       myProcess(const wxString & szFile, const wxString & szDir) : szFile(szFile), szDir(szDir) {}\r
+    virtual void OnTerminate(int, int);\r
+private:\r
+       wxString szFile, szDir;\r
+};\r
+\r
 #endif\r