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.
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;
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))

View File

@ -327,29 +327,34 @@ bool DolphinApp::OnInit()
XInitThreads();
#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->Start(1, wxTIMER_ONE_SHOT);
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))
{
delete m_afterinit;
// 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:
m_afterinit = NULL;
// First check if we have an exec command line.
if (LoadFile && FileToLoad != wxEmptyString)
{
main_frame->BootGame(std::string(FileToLoad.mb_str()));
}
// If we have selected Automatic Start, start the default ISO,
// or if no default ISO exists, start the last loaded ISO
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()

View File

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

View File

@ -108,6 +108,12 @@ elif sys.platform == 'darwin':
CFBundleVersion = '3.0',
LSMinimumSystemVersion = '10.5.4',
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'],