Esempio n. 1
0
int DefaultMimeHandler::DoOpenFile(cbMimeType* mt, const wxString& filename)
{
    if (!mt)
        return -1;

    if (mt->useEditor)
    {
        // easy. use internal editor.
        cbEditor* ed = Manager::Get()->GetEditorManager()->Open(filename);
        if (ed)
        {
//            ed->SetProjectFile(pf);
            ed->Show(true);
            return 0;
        }
    }
    else if (mt->useAssoc)
    {
        // easy too. use associated app
        #ifdef __WXMSW__
        ShellExecute(0, wxString(_T("open")).c_str(), filename.c_str(), 0, 0, SW_SHOW);
        #endif
        #ifdef __WXGTK__
        wxExecute(wxString::Format(_T("xdg-open \"%s\""), filename.c_str()));
        #endif
        #ifdef __WXMAC__
        wxExecute(wxString::Format(_T("open \"%s\""), filename.c_str()));
        #endif
        return 0;
    }
    else
    {
        // call external program

        // create command line
        wxString external = mt->program;
        if (external.Find(_T("$(FILE)")) != -1)
            external.Replace(_T("$(FILE)"), filename);
        else
            external << _T(" \"") << filename << _T("\""); // file args wrapped in quotes (bug #1187231)

        Manager::Get()->GetLogManager()->Log(_T("Launching command: ") + external);

        // launch external program
        int ret = 0;
        if (mt->programIsModal)
        {
            wxEnableTopLevelWindows(false);
            ret = wxExecute(external, wxEXEC_SYNC);
            wxEnableTopLevelWindows(true);
        }
        else
            wxExecute(external, wxEXEC_ASYNC);
        return ret;
    }

    // failed...
    return -1;
}
Esempio n. 2
0
EWXWEXPORT(void,ELJApp_EnableTopLevelWindows)(bool _enb)
{
        wxEnableTopLevelWindows(_enb);
}