void ReopenEditorListView::DoOpen(wxString fname)
{
    EditorManager* em = Manager::Get()->GetEditorManager();
    if(!fname.IsEmpty() && !em->IsOpen(fname))
    {
        em->Open(fname);
    }
}
Exemple #2
0
// ----------------------------------------------------------------------------
void JumpTracker::OnMenuJumpNext(wxCommandEvent &event)
// ----------------------------------------------------------------------------
{
    #if defined(LOGGING)
    //LOGIT( _T("JT [%s]"), _T("OnMenuJumpNext"));
    #endif

    m_bJumpInProgress = true;
    do {
        int count = m_ArrayOfJumpData.GetCount();
        if (not count) break;

        if ( count > 1 )
            m_Cursor += 1;
        if (m_Cursor > (int)count-1)
            m_Cursor = 0;

        EditorManager* edmgr = Manager::Get()->GetEditorManager();
        int cursor = m_Cursor;
        wxString edFilename;
        long edPosn;
        bool found = false;
        for (int i = 0; i<count; ++i, ++cursor)
        {
            if (cursor > count-1) cursor = 0;
            JumpData& jumpNext = m_ArrayOfJumpData.Item(cursor);
            edFilename = jumpNext.GetFilename();
            edPosn = jumpNext.GetPosition();
            if (not edmgr->IsOpen(edFilename))
                continue;
            found = true;
            break;
        }
        if (not found) break;

        m_Cursor = cursor;

        #if defined(LOGGING)
        LOGIT( _T("JT OnMenuJumpNext [%s][%ld]curs[%d]"), edFilename.c_str(), edPosn, m_Cursor);
        #endif
        // activate editor
        EditorBase* eb = edmgr->GetEditor(edFilename);
        if (not eb) break;

        edmgr->SetActiveEditor(eb);
        // position to editor line
        cbEditor* cbed = edmgr->GetBuiltinEditor(eb);
        if (not cbed) break;

        cbed->GotoLine(cbed->GetControl()->LineFromPosition(edPosn)); //center on scrn
        cbed->GetControl()->GotoPos(edPosn);
    }while(0);

    m_bJumpInProgress = false;
    return;
}
void ReopenEditorListView::DoOpen(wxArrayString fnames)
{
    EditorManager* em = Manager::Get()->GetEditorManager();
    for(size_t i = 0; i < fnames.GetCount(); ++i)
    {
        if(!fnames[i].IsEmpty() && !em->IsOpen(fnames[i]))
        {
            em->Open(fnames[i]);
        }
    }
}
void CodeChecker::OnProcessTerminate(wxProcessEvent &e)
{
    if(m_processqueue.empty())
        return;
    wxString file(m_processqueue.begin()->file);
    wxString out=m_process->GetStdout();
    wxString err=m_process->GetStderr();
    LangData &ld=m_commands[m_processqueue.begin()->lang];
    wxRegEx re(ld.regexp,wxRE_ADVANCED);
    wxString data=out+err;
    if(m_issues.find(file)!=m_issues.end())
        m_issues[file].clear();
    while(re.Matches(data))
    {
        long linenum;
        if(re.GetMatch(data,ld.regexp_indline).ToLong(&linenum))
        {
            CodeIssue ci;
            ci.line=linenum-1;
            ci.msg=re.GetMatch(data,ld.regexp_indmsg);//_T("");
            m_issues[file].push_back(ci);
        }
        size_t start,end;
        re.GetMatch(&start,&end,0);
        data=data.Mid(end);
    }

    LogMessage(_("Syntax Check Results"));
    LogMessage(out);
    LogMessage(err);
    EditorManager* em = Manager::Get()->GetEditorManager();
    EditorBase* eb = em->IsOpen(file);
    if (eb && eb->IsBuiltinEditor())
    {
        cbEditor *ed=(cbEditor *)eb;
        cbStyledTextCtrl *control=ed->GetControl();
//        control->MarkerDefine(CHECK_MARKER, CHECK_STYLE);
//        control->MarkerSetForeground(CHECK_MARKER, wxColour(0xFF, 0xA0, 0xA0));
//        control->MarkerSetBackground(CHECK_MARKER, wxColour(0xA0, 0xA0, 0xA0));
        control->MarkerDeleteAll(CHECK_MARKER);
        CodeIssues::iterator iend=m_issues[file].end();
        for(CodeIssues::iterator it=m_issues[file].begin();it!=iend;++it)
            control->MarkerAdd(it->line,CHECK_MARKER);
    }

    //TODO: retrieve a handle to the editor control
    //TODO: Parse stdout/stderr
    //TODO: Define the marker (if not defined already)
//
//    if(!control->LineHasMarker(CHECK_MARKER,linenum))
//        control->MarkerAdd(CHECK_MARKER,linenum));
    m_processqueue.pop_front();
}
void ReopenEditor::OnReopenEditor(wxCommandEvent& /*event*/)
{
    if(m_pListLog->GetItemsCount() > 0)
    {
        EditorManager* em = Manager::Get()->GetEditorManager();
        wxString fname = m_pListLog->GetFilename(0);
        if(!fname.IsEmpty() && !em->IsOpen(fname))
        {
            em->Open(fname);
        }
    }
}
Exemple #6
0
bool PromptSaveOpenFile(wxString message, wxFileName path)
{
    EditorManager* em = Manager::Get()->GetEditorManager();
    EditorBase *eb=em->IsOpen(path.GetFullPath());
    if(eb)
    {
        if(eb->GetModified())
            switch(cbMessageBox(message,_("Save File?"),wxYES_NO|wxCANCEL))
            {
                case wxYES:
                    if(!eb->Save())
                        cbMessageBox(_("Save failed - proceeding with unsaved file"));
                case wxNO:
                    eb->Close();
                    return true;
                case wxCANCEL:
                    return false;
            }
    }
    return true;
}