Allow opening a file and starting Dolphin on OS X by clicking

a document icon.

Don't bother creating the game list until after an automatic
start has finished and with the -b option, not at all.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6884 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Soren Jorvang 2011-01-20 03:26:51 +00:00
parent ff06b4c817
commit 82422371f3
4 changed files with 32 additions and 14 deletions

View File

@ -986,10 +986,6 @@ void CFrame::DoStop()
// Clear wiimote connection status from the status bar. // Clear wiimote connection status from the status bar.
GetStatusBar()->SetStatusText(wxT(" "), 1); GetStatusBar()->SetStatusText(wxT(" "), 1);
// If batch mode was specified on the command-line, exit now.
if (m_bBatchMode)
Close(true);
} }
} }
@ -1021,6 +1017,12 @@ void CFrame::OnStop(wxCommandEvent& WXUNUSED (event))
{ {
m_bGameLoading = false; m_bGameLoading = false;
DoStop(); DoStop();
// If batch mode was specified on the command-line, exit now.
if (m_bBatchMode)
Close(true);
else
UpdateGameList();
} }
void CFrame::OnReset(wxCommandEvent& WXUNUSED (event)) void CFrame::OnReset(wxCommandEvent& WXUNUSED (event))

View File

@ -327,29 +327,34 @@ bool DolphinApp::OnInit()
XInitThreads(); XInitThreads();
#endif #endif
// Postpone final actions until event handler is running // Postpone final actions until event handler is running.
// Updating the game list makes use of wxProgressDialog which may
// only be run after OnInit() when the event handler is running.
m_afterinit = new wxTimer(this, wxID_ANY); m_afterinit = new wxTimer(this, wxID_ANY);
m_afterinit->Start(1, wxTIMER_ONE_SHOT); m_afterinit->Start(1, wxTIMER_ONE_SHOT);
return true; return true;
} }
void DolphinApp::MacOpenFile(const wxString &fileName)
{
FileToLoad = fileName;
LoadFile = true;
if (m_afterinit == NULL)
main_frame->BootGame(std::string(FileToLoad.mb_str()));
}
void DolphinApp::AfterInit(wxTimerEvent& WXUNUSED(event)) void DolphinApp::AfterInit(wxTimerEvent& WXUNUSED(event))
{ {
delete m_afterinit; delete m_afterinit;
m_afterinit = NULL;
// Updating the game list makes use of wxProgressDialog which may
// only be run after OnInit() when the event handler is running.
main_frame->UpdateGameList();
// Check the autoboot options:
// First check if we have an exec command line. // First check if we have an exec command line.
if (LoadFile && FileToLoad != wxEmptyString) if (LoadFile && FileToLoad != wxEmptyString)
{ {
main_frame->BootGame(std::string(FileToLoad.mb_str())); main_frame->BootGame(std::string(FileToLoad.mb_str()));
} }
// If we have selected Automatic Start, start the default ISO, // If we have selected Automatic Start, start the default ISO,
// or if no default ISO exists, start the last loaded ISO // or if no default ISO exists, start the last loaded ISO
else if (main_frame->g_pCodeWindow) else if (main_frame->g_pCodeWindow)
@ -370,6 +375,9 @@ void DolphinApp::AfterInit(wxTimerEvent& WXUNUSED(event))
} }
} }
} }
// No automatic start was requested; let the user make a selection.
else
main_frame->UpdateGameList();
} }
void DolphinApp::InitLanguageSupport() void DolphinApp::InitLanguageSupport()

View File

@ -25,14 +25,16 @@ class CFrame;
class DolphinApp : public wxApp class DolphinApp : public wxApp
{ {
public: public:
CFrame* GetCFrame();
private:
bool OnInit(); bool OnInit();
void OnEndSession(); void OnEndSession();
int OnExit(); int OnExit();
void OnFatalException(); void OnFatalException();
CFrame* GetCFrame();
void InitLanguageSupport(); void InitLanguageSupport();
void MacOpenFile(const wxString &fileName);
private:
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
wxTimer *m_afterinit; wxTimer *m_afterinit;

View File

@ -108,6 +108,12 @@ elif sys.platform == 'darwin':
CFBundleVersion = '3.0', CFBundleVersion = '3.0',
LSMinimumSystemVersion = '10.5.4', LSMinimumSystemVersion = '10.5.4',
LSRequiresCarbon = True, LSRequiresCarbon = True,
CFBundleDocumentTypes = [
dict(CFBundleTypeExtensions =
('ciso', 'dol', 'elf', 'gcm', 'gcz', 'iso', 'wad'),
CFBundleTypeIconFile = 'Dolphin.icns',
CFBundleTypeName = 'Nintendo GC/Wii file',
CFBundleTypeRole = 'Viewer')]
))) )))
env.Command('dummy', '#' + env['prefix'], env.Command('dummy', '#' + env['prefix'],