BEGIN_EVENT_TABLE(MyApp, wxApp)
EVT_COMMAND(MyDocumentEvent_scriptMenuModified, MyDocumentEvent, MyApp::OnScriptMenuModified)
- EVT_COMMAND(MyDocumentEvent_openFilesByIPC, MyDocumentEvent, MyApp::OnOpenFilesByIPC)
+ EVT_COMMAND(MyDocumentEvent_openFilesByEvent, MyDocumentEvent, MyApp::OnOpenFilesByEvent)
EVT_UPDATE_UI_RANGE(myMenuID_MyFirstMenuItem, myMenuID_MyLastMenuItem, MyApp::OnUpdateUI)
EVT_MENU(myMenuID_ExecuteScript, MyApp::OnExecuteScript)
EVT_MENU(myMenuID_OpenConsoleWindow, MyApp::OnOpenConsoleWindow)
files.append(argv[i]);
files.append(wxT("\n"));
}
- OnOpenFiles(files);
+ RequestOpenFilesByEvent(files);
}
gInitCompleted = true;
void
MyApp::MacOpenFile(const wxString &fileName)
{
- wxString files(fileName);
- OnOpenFiles(files);
+ wxString file(fileName);
+ RequestOpenFilesByEvent(file);
}
/* Open given files: instead of calling MacOpenFile() for each entry, build a file list
}
void
-MyApp::RequestOpenFilesByIPC(wxString& files)
+MyApp::RequestOpenFilesByEvent(wxString& files)
{
if (m_pendingFilesToOpen != NULL)
m_pendingFilesToOpen->Append(files);
else
m_pendingFilesToOpen = new wxString(files);
- wxCommandEvent myEvent(MyDocumentEvent, MyDocumentEvent_openFilesByIPC);
+ if (!m_pendingFilesToOpen->EndsWith(wxT("\n")))
+ m_pendingFilesToOpen->Append(wxT("\n"));
+ wxCommandEvent myEvent(MyDocumentEvent, MyDocumentEvent_openFilesByEvent);
wxPostEvent(this, myEvent);
}
void
-MyApp::OnOpenFilesByIPC(wxCommandEvent& event)
+MyApp::OnOpenFilesByEvent(wxCommandEvent& event)
{
if (m_pendingFilesToOpen == NULL)
return;
+ if (!gInitCompleted) {
+ // Repost this event and try again later
+ wxCommandEvent myEvent(MyDocumentEvent, MyDocumentEvent_openFilesByEvent);
+ wxPostEvent(this, myEvent);
+ return;
+ }
OnOpenFiles(*m_pendingFilesToOpen);
delete m_pendingFilesToOpen;
m_pendingFilesToOpen = NULL;
void OnActivate(wxActivateEvent &event);
- void RequestOpenFilesByIPC(wxString& files);
- void OnOpenFilesByIPC(wxCommandEvent& event);
+ void RequestOpenFilesByEvent(wxString& files);
+ void OnOpenFilesByEvent(wxCommandEvent& event);
bool OnOpenFiles(const wxString &files);
MyDocument **m_TimerDocs;
wxTimer *m_Timer;
- wxString *m_pendingFilesToOpen; /* Files to be processed by OnOpenFilesByIPC() */
+ wxString *m_pendingFilesToOpen; /* Files to be processed by OnOpenFilesByEvent() */
wxTopLevelWindow *m_frameToBeDestroyed; /* Used in CheckIfAllWindowsAreGone() */
MyDocumentEvent_updateDisplay,
MyDocumentEvent_insertFrameFromMD,
MyDocumentEvent_threadTerminated,
- MyDocumentEvent_openFilesByIPC,
+ MyDocumentEvent_openFilesByEvent,
MyDocumentEvent_documentWillClose,
MyDocumentEvent_openAuxiliaryDocuments
};