From: <hug...@li...> - 2011-07-19 17:27:39
|
branch: details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/d99b5f35cfad changeset: 5430:d99b5f35cfad user: harryvanderwolf <hv...@gm...> date: Tue Jul 19 19:26:59 2011 +0200 description: [OSX] work around PTBatcherGui call: First straightforward call to open bundle, then second direct call to ptbatchergui binary with all options. That should work on Tiger, Leopard and Snow Leopard diffstat: mac/Hugin.xcodeproj/project.pbxproj | 17 +++++++- mac/create_stripped_apps_for_installer.sh | 8 +++- src/hugin1/hugin/AssistantPanel.cpp | 40 ++++++++++---------- src/hugin1/hugin/PanoPanel.cpp | 41 ++++++++++---------- 4 files changed, 61 insertions(+), 45 deletions(-) diffs (188 lines): diff -r ba85cc921556 -r d99b5f35cfad mac/Hugin.xcodeproj/project.pbxproj --- a/mac/Hugin.xcodeproj/project.pbxproj Tue Jul 19 00:31:10 2011 -0400 +++ b/mac/Hugin.xcodeproj/project.pbxproj Tue Jul 19 19:26:59 2011 +0200 @@ -3593,6 +3593,8 @@ 733AC15A131C277600D276B9 /* wxImageCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wxImageCache.cpp; sourceTree = "<group>"; }; 733DF63F117F2268002EC787 /* pano_modify */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pano_modify; sourceTree = BUILT_PRODUCTS_DIR; }; 733DF66E117F2384002EC787 /* pto_merge */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pto_merge; sourceTree = BUILT_PRODUCTS_DIR; }; + 733E08CB13AFB4BB00EE081B /* dual_use.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = dual_use.py; path = "hugin_script_interface/plugins-dev/dual_use.py"; sourceTree = "<group>"; }; + 733E08CC13AFB4BB00EE081B /* plugin_skeleton.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = plugin_skeleton.py; path = "hugin_script_interface/plugins-dev/plugin_skeleton.py"; sourceTree = "<group>"; }; 7340668D125BB2AF00FC4790 /* CPDetectorDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CPDetectorDialog.cpp; sourceTree = "<group>"; }; 734066E9125BB83400FC4790 /* FindPanoDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FindPanoDialog.cpp; sourceTree = "<group>"; }; 734066EA125BB83400FC4790 /* FailedProjectsDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FailedProjectsDialog.cpp; sourceTree = "<group>"; }; @@ -3776,7 +3778,6 @@ 73B1ACE513A6A014006A3C54 /* hpi.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = hpi.py; path = hugin_script_interface/hpi.py; sourceTree = "<group>"; }; 73B1ACE613A6A014006A3C54 /* hsi.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; name = hsi.i; path = hugin_script_interface/hsi.i; sourceTree = "<group>"; }; 73B1ACE913A6A014006A3C54 /* crop_cp.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = crop_cp.py; sourceTree = "<group>"; }; - 73B1ACEA13A6A014006A3C54 /* demo_plugin.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = demo_plugin.py; sourceTree = "<group>"; }; 73B1ACEC13A6A014006A3C54 /* top_five.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = top_five.py; sourceTree = "<group>"; }; 73B1ACED13A6A014006A3C54 /* woa.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = woa.py; sourceTree = "<group>"; }; 73B1AD0613A6A0B0006A3C54 /* _hsi.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = _hsi.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -6311,6 +6312,15 @@ name = assistant_makefile; sourceTree = "<group>"; }; + 733E08C213AFB47400EE081B /* plugins-dev */ = { + isa = PBXGroup; + children = ( + 733E08CB13AFB4BB00EE081B /* dual_use.py */, + 733E08CC13AFB4BB00EE081B /* plugin_skeleton.py */, + ); + name = "plugins-dev"; + sourceTree = "<group>"; + }; 734FB8DC0EB38B9400CD7122 /* celeste */ = { isa = PBXGroup; children = ( @@ -6416,6 +6426,7 @@ 73B1ACE513A6A014006A3C54 /* hpi.py */, 73B1ACE613A6A014006A3C54 /* hsi.i */, 73B1ACE713A6A014006A3C54 /* plugins */, + 733E08C213AFB47400EE081B /* plugins-dev */, ); name = hugin_script_interface; sourceTree = "<group>"; @@ -6424,7 +6435,6 @@ isa = PBXGroup; children = ( 73B1ACE913A6A014006A3C54 /* crop_cp.py */, - 73B1ACEA13A6A014006A3C54 /* demo_plugin.py */, 73B1ACEC13A6A014006A3C54 /* top_five.py */, 73B1ACED13A6A014006A3C54 /* woa.py */, ); @@ -12591,7 +12601,8 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(RELEASE_ARCHS_32)"; + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = dwarf; GCC_ENABLE_FIX_AND_CONTINUE = NO; diff -r ba85cc921556 -r d99b5f35cfad mac/create_stripped_apps_for_installer.sh --- a/mac/create_stripped_apps_for_installer.sh Tue Jul 19 00:31:10 2011 -0400 +++ b/mac/create_stripped_apps_for_installer.sh Tue Jul 19 19:26:59 2011 +0200 @@ -18,6 +18,7 @@ rm $binary ln -s "../$relHuginApp/MacOS/$binary" done + cd "$PTBatcherGuiApp" # Remove frameworks, Libraries and Resources and create symbolic links # PTBatcherGui.icns are nowadays also installed in Hugin.app @@ -34,5 +35,10 @@ ln -s "$relHuginApp/Libraries" ln -s "$relHuginApp/Resources" cd $installerfolder -# That should do it +## That should do it +#Finally create a symbolic link to PTBatcherGui inside Hugin.app for simpler call to straight binary +cd "$HuginApp/MacOS" +ln -s ../../../PTBatcherGui.app/Contents/MacOS/PTBatcherGui PTBatcherGui + + diff -r ba85cc921556 -r d99b5f35cfad src/hugin1/hugin/AssistantPanel.cpp --- a/src/hugin1/hugin/AssistantPanel.cpp Tue Jul 19 00:31:10 2011 -0400 +++ b/src/hugin1/hugin/AssistantPanel.cpp Tue Jul 19 19:26:59 2011 +0200 @@ -463,27 +463,27 @@ int os = wxGetOsVersion(&osVersionMajor, &osVersionMinor); - if ((osVersionMajor == 0x10) && (osVersionMinor >= 0x50)) - { //This is Leopard and Snow Leopard. Use the bundles Snow Leopard open command - //wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI --args -a "+wxQuoteFilename(projectFile))); - wxString cmd = MacGetPathToBundledExecutableFile(CFSTR("open")); - if(cmd != wxT("")) - { - cmd = wxQuoteString(cmd); - args = _T("-b net.sourceforge.hugin.PTBatcherGUI --args -a "+wxQuoteFilename(projectFile)); - } - else - { - wxMessageBox(wxString::Format(_("External program %s not found in the bundle, reverting to system path"), wxT("open")), _("Error")); - args = _T("-b net.sourceforge.hugin.PTBatcherGUI ")+wxQuoteFilename(projectFile); - cmd = wxT("open"); - } - cmd += wxT(" ") + args; - wxExecute(cmd); - } - else { //This is Tiger - wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI "+wxQuoteFilename(projectFile))); + // Terrible but working work-around for the Mac bundle + // Always start PTBatcherGui with a simple open. This works on every system. + //If it's already open than the extra instance will be killed immediately. + wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI")); + sleep(5); + // And now we start PTBatcherGui the linux way because that works. + wxString cmd = MacGetPathToBundledExecutableFile(CFSTR("PTBatcherGui")); + if(cmd != wxT("")) + { //Found PTBatcherGui (symbolic link) inside the bundle. Call it directly. + cmd = wxQuoteString(cmd); + args = wxT(" -a ")+wxQuoteFilename(projectFile); } + else + { //Can't find PTBatcherGui (symbolic link) inside the bundle. Use the most straightforward call possible + wxMessageBox(wxString::Format(_("External program %s not found in the bundle, reverting to system path"), wxT("open")), _("Error")); + args = _T("-b net.sourceforge.hugin.PTBatcherGUI ")+wxQuoteFilename(projectFile); + cmd = wxT("open"); + } + cmd += wxT(" ") + args; + wxExecute(cmd); + #else #ifdef __WINDOWS__ wxString huginPath = getExePath(wxGetApp().argv[0])+wxFileName::GetPathSeparator(); diff -r ba85cc921556 -r d99b5f35cfad src/hugin1/hugin/PanoPanel.cpp --- a/src/hugin1/hugin/PanoPanel.cpp Tue Jul 19 00:31:10 2011 -0400 +++ b/src/hugin1/hugin/PanoPanel.cpp Tue Jul 19 19:26:59 2011 +0200 @@ -1201,28 +1201,27 @@ int os = wxGetOsVersion(&osVersionMajor, &osVersionMinor); - if ((osVersionMajor == 0x10) && (osVersionMinor >= 0x50)) - { //This is Leopard and Snow Leopard. Use the bundles Snow Leopard open command - //wxExecute(wxT("open -b net.sourceforge.hugin.PTBatcherGUI --args ")+switches+wxQuoteFilename(projectFile)+wxT(" ")+wxQuoteFilename(dlg.GetPath())); - - wxString cmd = MacGetPathToBundledExecutableFile(CFSTR("open")); - if(cmd != wxT("")) - { - cmd = wxQuoteString(cmd); - args = wxT("-b net.sourceforge.hugin.PTBatcherGUI --args ")+switches+wxQuoteFilename(projectFile)+wxT(" ")+wxQuoteFilename(dlg.GetPath()); - } - else - { - wxMessageBox(wxString::Format(_("External program %s not found in the bundle, reverting to system path"), wxT("open")), _("Error")); - args = _T("-b net.sourceforge.hugin.PTBatcherGUI ")+wxQuoteFilename(projectFile); - cmd = wxT("open"); - } - cmd += wxT(" ") + args; - wxExecute(cmd); - } - else { //This is Tiger - wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI "+wxQuoteFilename(projectFile))); + // Terrible but working work-around for the Mac bundle + // Always start PTBatcherGui with a simple open. This works on every system. + //If it's already open than the extra instance will be killed immediately. + wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI")); + sleep(5); + // And now we start PTBatcherGui the linux way because that works. + wxString cmd = MacGetPathToBundledExecutableFile(CFSTR("PTBatcherGui")); + if(cmd != wxT("")) + { //Found PTBatcherGui (symbolic link) inside the bundle. Call it directly. + cmd = wxQuoteString(cmd); + args = wxT(" ")+switches+wxQuoteFilename(projectFile)+wxT(" ")+wxQuoteFilename(dlg.GetPath()); } + else + { //Can't find PTBatcherGui (symbolic link) inside the bundle. Use the most straightforward call possible + wxMessageBox(wxString::Format(_("External program %s not found in the bundle, reverting to system path"), wxT("open")), _("Error")); + args = _T("-b net.sourceforge.hugin.PTBatcherGUI ")+wxQuoteFilename(projectFile); + cmd = wxT("open"); + } + cmd += wxT(" ") + args; + wxExecute(cmd); + #else #ifdef __WINDOWS__ wxString huginPath = getExePath(wxGetApp().argv[0])+wxFileName::GetPathSeparator(); |
From: <hug...@li...> - 2011-07-20 03:54:20
|
branch: 2011.2 details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/9ffd16347303 changeset: 5431:9ffd16347303 user: harryvanderwolf <hv...@gm...> date: Tue Jul 19 19:26:59 2011 +0200 description: [OSX] work around PTBatcherGui call: First straightforward call to open bundle, then second direct call to ptbatchergui binary with all options. That should work on Tiger, Leopard and Snow Leopard diffstat: mac/Hugin.xcodeproj/project.pbxproj | 17 +++++++- mac/create_stripped_apps_for_installer.sh | 8 +++- src/hugin1/hugin/AssistantPanel.cpp | 40 ++++++++++---------- src/hugin1/hugin/PanoPanel.cpp | 41 ++++++++++---------- 4 files changed, 61 insertions(+), 45 deletions(-) diffs (188 lines): diff -r 27dac3681b9e -r 9ffd16347303 mac/Hugin.xcodeproj/project.pbxproj --- a/mac/Hugin.xcodeproj/project.pbxproj Sun Jul 17 09:29:37 2011 -0400 +++ b/mac/Hugin.xcodeproj/project.pbxproj Tue Jul 19 19:26:59 2011 +0200 @@ -3593,6 +3593,8 @@ 733AC15A131C277600D276B9 /* wxImageCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wxImageCache.cpp; sourceTree = "<group>"; }; 733DF63F117F2268002EC787 /* pano_modify */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pano_modify; sourceTree = BUILT_PRODUCTS_DIR; }; 733DF66E117F2384002EC787 /* pto_merge */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pto_merge; sourceTree = BUILT_PRODUCTS_DIR; }; + 733E08CB13AFB4BB00EE081B /* dual_use.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = dual_use.py; path = "hugin_script_interface/plugins-dev/dual_use.py"; sourceTree = "<group>"; }; + 733E08CC13AFB4BB00EE081B /* plugin_skeleton.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = plugin_skeleton.py; path = "hugin_script_interface/plugins-dev/plugin_skeleton.py"; sourceTree = "<group>"; }; 7340668D125BB2AF00FC4790 /* CPDetectorDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CPDetectorDialog.cpp; sourceTree = "<group>"; }; 734066E9125BB83400FC4790 /* FindPanoDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FindPanoDialog.cpp; sourceTree = "<group>"; }; 734066EA125BB83400FC4790 /* FailedProjectsDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FailedProjectsDialog.cpp; sourceTree = "<group>"; }; @@ -3776,7 +3778,6 @@ 73B1ACE513A6A014006A3C54 /* hpi.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = hpi.py; path = hugin_script_interface/hpi.py; sourceTree = "<group>"; }; 73B1ACE613A6A014006A3C54 /* hsi.i */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c.preprocessed; name = hsi.i; path = hugin_script_interface/hsi.i; sourceTree = "<group>"; }; 73B1ACE913A6A014006A3C54 /* crop_cp.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = crop_cp.py; sourceTree = "<group>"; }; - 73B1ACEA13A6A014006A3C54 /* demo_plugin.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = demo_plugin.py; sourceTree = "<group>"; }; 73B1ACEC13A6A014006A3C54 /* top_five.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = top_five.py; sourceTree = "<group>"; }; 73B1ACED13A6A014006A3C54 /* woa.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = woa.py; sourceTree = "<group>"; }; 73B1AD0613A6A0B0006A3C54 /* _hsi.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = _hsi.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -6311,6 +6312,15 @@ name = assistant_makefile; sourceTree = "<group>"; }; + 733E08C213AFB47400EE081B /* plugins-dev */ = { + isa = PBXGroup; + children = ( + 733E08CB13AFB4BB00EE081B /* dual_use.py */, + 733E08CC13AFB4BB00EE081B /* plugin_skeleton.py */, + ); + name = "plugins-dev"; + sourceTree = "<group>"; + }; 734FB8DC0EB38B9400CD7122 /* celeste */ = { isa = PBXGroup; children = ( @@ -6416,6 +6426,7 @@ 73B1ACE513A6A014006A3C54 /* hpi.py */, 73B1ACE613A6A014006A3C54 /* hsi.i */, 73B1ACE713A6A014006A3C54 /* plugins */, + 733E08C213AFB47400EE081B /* plugins-dev */, ); name = hugin_script_interface; sourceTree = "<group>"; @@ -6424,7 +6435,6 @@ isa = PBXGroup; children = ( 73B1ACE913A6A014006A3C54 /* crop_cp.py */, - 73B1ACEA13A6A014006A3C54 /* demo_plugin.py */, 73B1ACEC13A6A014006A3C54 /* top_five.py */, 73B1ACED13A6A014006A3C54 /* woa.py */, ); @@ -12591,7 +12601,8 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(RELEASE_ARCHS_32)"; + ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386"; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = dwarf; GCC_ENABLE_FIX_AND_CONTINUE = NO; diff -r 27dac3681b9e -r 9ffd16347303 mac/create_stripped_apps_for_installer.sh --- a/mac/create_stripped_apps_for_installer.sh Sun Jul 17 09:29:37 2011 -0400 +++ b/mac/create_stripped_apps_for_installer.sh Tue Jul 19 19:26:59 2011 +0200 @@ -18,6 +18,7 @@ rm $binary ln -s "../$relHuginApp/MacOS/$binary" done + cd "$PTBatcherGuiApp" # Remove frameworks, Libraries and Resources and create symbolic links # PTBatcherGui.icns are nowadays also installed in Hugin.app @@ -34,5 +35,10 @@ ln -s "$relHuginApp/Libraries" ln -s "$relHuginApp/Resources" cd $installerfolder -# That should do it +## That should do it +#Finally create a symbolic link to PTBatcherGui inside Hugin.app for simpler call to straight binary +cd "$HuginApp/MacOS" +ln -s ../../../PTBatcherGui.app/Contents/MacOS/PTBatcherGui PTBatcherGui + + diff -r 27dac3681b9e -r 9ffd16347303 src/hugin1/hugin/AssistantPanel.cpp --- a/src/hugin1/hugin/AssistantPanel.cpp Sun Jul 17 09:29:37 2011 -0400 +++ b/src/hugin1/hugin/AssistantPanel.cpp Tue Jul 19 19:26:59 2011 +0200 @@ -463,27 +463,27 @@ int os = wxGetOsVersion(&osVersionMajor, &osVersionMinor); - if ((osVersionMajor == 0x10) && (osVersionMinor >= 0x50)) - { //This is Leopard and Snow Leopard. Use the bundles Snow Leopard open command - //wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI --args -a "+wxQuoteFilename(projectFile))); - wxString cmd = MacGetPathToBundledExecutableFile(CFSTR("open")); - if(cmd != wxT("")) - { - cmd = wxQuoteString(cmd); - args = _T("-b net.sourceforge.hugin.PTBatcherGUI --args -a "+wxQuoteFilename(projectFile)); - } - else - { - wxMessageBox(wxString::Format(_("External program %s not found in the bundle, reverting to system path"), wxT("open")), _("Error")); - args = _T("-b net.sourceforge.hugin.PTBatcherGUI ")+wxQuoteFilename(projectFile); - cmd = wxT("open"); - } - cmd += wxT(" ") + args; - wxExecute(cmd); - } - else { //This is Tiger - wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI "+wxQuoteFilename(projectFile))); + // Terrible but working work-around for the Mac bundle + // Always start PTBatcherGui with a simple open. This works on every system. + //If it's already open than the extra instance will be killed immediately. + wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI")); + sleep(5); + // And now we start PTBatcherGui the linux way because that works. + wxString cmd = MacGetPathToBundledExecutableFile(CFSTR("PTBatcherGui")); + if(cmd != wxT("")) + { //Found PTBatcherGui (symbolic link) inside the bundle. Call it directly. + cmd = wxQuoteString(cmd); + args = wxT(" -a ")+wxQuoteFilename(projectFile); } + else + { //Can't find PTBatcherGui (symbolic link) inside the bundle. Use the most straightforward call possible + wxMessageBox(wxString::Format(_("External program %s not found in the bundle, reverting to system path"), wxT("open")), _("Error")); + args = _T("-b net.sourceforge.hugin.PTBatcherGUI ")+wxQuoteFilename(projectFile); + cmd = wxT("open"); + } + cmd += wxT(" ") + args; + wxExecute(cmd); + #else #ifdef __WINDOWS__ wxString huginPath = getExePath(wxGetApp().argv[0])+wxFileName::GetPathSeparator(); diff -r 27dac3681b9e -r 9ffd16347303 src/hugin1/hugin/PanoPanel.cpp --- a/src/hugin1/hugin/PanoPanel.cpp Sun Jul 17 09:29:37 2011 -0400 +++ b/src/hugin1/hugin/PanoPanel.cpp Tue Jul 19 19:26:59 2011 +0200 @@ -1192,28 +1192,27 @@ int os = wxGetOsVersion(&osVersionMajor, &osVersionMinor); - if ((osVersionMajor == 0x10) && (osVersionMinor >= 0x50)) - { //This is Leopard and Snow Leopard. Use the bundles Snow Leopard open command - //wxExecute(wxT("open -b net.sourceforge.hugin.PTBatcherGUI --args ")+switches+wxQuoteFilename(projectFile)+wxT(" ")+wxQuoteFilename(dlg.GetPath())); - - wxString cmd = MacGetPathToBundledExecutableFile(CFSTR("open")); - if(cmd != wxT("")) - { - cmd = wxQuoteString(cmd); - args = wxT("-b net.sourceforge.hugin.PTBatcherGUI --args ")+switches+wxQuoteFilename(projectFile)+wxT(" ")+wxQuoteFilename(dlg.GetPath()); - } - else - { - wxMessageBox(wxString::Format(_("External program %s not found in the bundle, reverting to system path"), wxT("open")), _("Error")); - args = _T("-b net.sourceforge.hugin.PTBatcherGUI ")+wxQuoteFilename(projectFile); - cmd = wxT("open"); - } - cmd += wxT(" ") + args; - wxExecute(cmd); - } - else { //This is Tiger - wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI "+wxQuoteFilename(projectFile))); + // Terrible but working work-around for the Mac bundle + // Always start PTBatcherGui with a simple open. This works on every system. + //If it's already open than the extra instance will be killed immediately. + wxExecute(_T("open -b net.sourceforge.hugin.PTBatcherGUI")); + sleep(5); + // And now we start PTBatcherGui the linux way because that works. + wxString cmd = MacGetPathToBundledExecutableFile(CFSTR("PTBatcherGui")); + if(cmd != wxT("")) + { //Found PTBatcherGui (symbolic link) inside the bundle. Call it directly. + cmd = wxQuoteString(cmd); + args = wxT(" ")+switches+wxQuoteFilename(projectFile)+wxT(" ")+wxQuoteFilename(dlg.GetPath()); } + else + { //Can't find PTBatcherGui (symbolic link) inside the bundle. Use the most straightforward call possible + wxMessageBox(wxString::Format(_("External program %s not found in the bundle, reverting to system path"), wxT("open")), _("Error")); + args = _T("-b net.sourceforge.hugin.PTBatcherGUI ")+wxQuoteFilename(projectFile); + cmd = wxT("open"); + } + cmd += wxT(" ") + args; + wxExecute(cmd); + #else #ifdef __WINDOWS__ wxString huginPath = getExePath(wxGetApp().argv[0])+wxFileName::GetPathSeparator(); |