Exemple #1
0
void			TMDIChild::ParseData(bool gotoPos)
{
    if(m_ParseTree->GetClassData() == NULL)
        return;

    char	*pointer = m_HexEditor->GetFastPointer(0, m_HexEditor->DataSize);
    m_ParseTree->SetParseData(pointer, m_HexEditor->DataSize);

    if(m_bFastParseMode)
        m_ParseTree->UnPackData(m_FastParsePos, 1);
    else
        m_ParseTree->UnPackData(m_HexEditor->SelStart, 1);

    m_ParseTree->ParseData();
    m_HexEditor->Repaint();

    if(gotoPos)
    {
        if(m_bFastParseMode)
        {
            GotoPosition(m_FastParsePos);
        }
        else
        {
            if(m_HexEditor->SelStart - 1 >= 0)
                GotoPosition(m_HexEditor->SelStart - 1);
        }
    }
}
Exemple #2
0
/////////////////////////////////////
// @mfunc Search backward for a given string and select it if found. You may use regular expressions on the text.
// @rvalue bool | true if text is ffound else false
//
bool CScintillaWnd::SearchBackward(LPSTR szText) { //@parm text to search
    if (szText == NULL) {
        return false;
    }
    long lPos = GetCurrentPosition();
    long lMinSel = GetSelectionStart();
    TextToFind tf;
    tf.lpstrText = szText;
    if (lMinSel >= 0) {
        tf.chrg.cpMin = lMinSel-1;
    }
    else {
        tf.chrg.cpMin = lPos-1;
    }
    tf.chrg.cpMax = 0;
    lPos = SendMessage(SCI_FINDTEXT, m_nSearchflags, (ULONG_PTR)&tf);
    if (lPos >= 0) {
        SetFocus();
        GotoPosition(lPos);
        SendMessage(SCI_SETSEL, tf.chrgText.cpMin, tf.chrgText.cpMax);
        SendMessage(SCI_FINDTEXT, m_nSearchflags, (ULONG_PTR)&tf);
        return true;
    }
    return false;
}
void CLATEDView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
    if (lHint == CStdEditorDoc::GetPositionHint) {
        GetPosition (*(CStdEditorPosition *)pHint);
        return;
    }

    if (lHint == CStdEditorDoc::GotoPositionHint) {
        GotoPosition (*(CStdEditorPosition *)pHint);
        return;
    }

    LATED_HINT_TYPE type = (LATED_HINT_TYPE) lHint;

    switch(type) {
    case UPDATE_ALL:
        OnUpdateAll(pHint);
        return;
    case UPDATE_NEW:
        OnUpdateNew();
        return;
    case UPDATE_CLEAR:
        {
            CTreeCtrl& rTree = GetTreeCtrl();
            rTree.SelectItem(NULL);
            rTree.DeleteAllItems();
        }
        return;
    case INVALID:
        break;
    }
    CTreeView::OnUpdate(pSender,lHint,pHint);
}
Exemple #4
0
void __fastcall TMDIChild::tvParseTreeClick(TObject *Sender)
{
    m_HexEditor->Repaint();


    //设置卷轴滚动
    tagSelRect	selRect;
    if(GetTreeSelRect(selRect) == false)
        return;

    if(selRect.SelStart < m_HexEditor->DataSize)
    {
        GotoPosition(selRect.SelStart);
    }


    SetSelectDetail();
    RefreshStateBar();

    //设置提示
    String hint;
    ParseTreeNode	*	curParseTree = (ParseTreeNode	*)tvParseTree->Selected->Data;
    if(curParseTree == NULL)
    {
        //选择的是结构体
        hint = m_ParseTree->GetClassData()->GetComment();
    }
    else
    {
        //选择的是变量
        hint = curParseTree->GetClassMember()->GetComment();
    }
    tvParseTree->Hint = hint;
}
Exemple #5
0
/////////////////////////////////////
// @mfunc Reset the Scintiall control and add new Text
// @rvalue void | not used
//
void CScintillaWnd::SetText (LPCSTR szText) { //@parm pointer to new text
    LRESULT lResult = 0;
    if (szText != NULL) {
        lResult = SendMessage(SCI_SETTEXT,0,(LPARAM)szText);
    }
    GotoPosition(0);
    SetFocus();
}
Exemple #6
0
void __fastcall 	TMDIChild::FastParseExecute(TObject *Sender)
{
    TMenuItem * selMenu = (TMenuItem * )Sender;
    String typeName = selMenu->Caption;

    //修正typeName
    if(selMenu->Caption == "-")
        return;

    if(typeName.Pos("["))
        typeName = LeftString(typeName, "[");

    ClassData * curClass = GetCurParseClass();

//	bool	haveResult = false;
    String 	defaultName;
    if(curClass == NULL)
    {
        //当前无结构体, 新建结构体
        int classCount = m_WorkSpace->GetClassManager()->GetClassCount();
        defaultName = FormatStr("tagUnNamedStruct%d", classCount);

        curClass = m_WorkSpace->GetClassManager()->AddClass();
        curClass->Init(defaultName, "");
        RefreshAllClassView();
    }

    String arrayVar;
    if(selMenu->Tag == 0)
        arrayVar = "";
    else
        arrayVar = IntToStr(selMenu->Tag);

    ClassMember * curMember = curClass->AddMember();
    defaultName = FormatStr("UnKnown%d", m_ParseTree->GetSize() + m_FastParsePos);

    curMember->Init(typeName, defaultName, "", arrayVar);

    m_ParseTree->BindClass(curClass);
    ExpandFirstNode();
    ParseData(false);

    tagSelRect	selRect;
    if(GetTreeSelRect(selRect) == false)
        return;
    GotoPosition(selRect.SelStart + selRect.SelLength);
}
Exemple #7
0
void __fastcall TMDIChild::actGoToNextExecute(TObject *Sender)
{
    int gotoPos = m_ParseTree->GetCurPos() + m_ParseTree->GetSize();
    if(gotoPos < m_HexEditor->DataSize)
    {
        m_ParseListHistory.push(m_HexEditor->SelStart);
        m_HexEditor->SelStart = m_ParseTree->GetCurPos() + m_ParseTree->GetSize();
        ParseData(false);

        tagSelRect	selRect;
        if(GetTreeSelRect(selRect) == false)
            return;
        GotoPosition(selRect.SelStart);

        edtCurParseCount->Value = m_ParseListHistory.size();
    }
}
Exemple #8
0
/////////////////////////////////////
// @mfunc Search forward for a given string and select it if found. You may use regular expressions on the text.
// @rvalue bool | true if text is found else false
//
bool CScintillaWnd::SearchForward(LPSTR szText) { //@parm text to search
    if (szText == NULL) {
        return false;
    }
    long lPos = GetCurrentPosition();
    TextToFind tf;
    tf.lpstrText = szText;
    tf.chrg.cpMin = lPos+1;
    tf.chrg.cpMax = SendMessage(SCI_GETLENGTH, 0, 0);
    lPos = SendMessage(SCI_FINDTEXT, m_nSearchflags, (ULONG_PTR)&tf);
    if (lPos >= 0) {
        SetFocus();
        GotoPosition(lPos);
        SendMessage(SCI_SETSEL, tf.chrgText.cpMin, tf.chrgText.cpMax);
        SendMessage(SCI_FINDTEXT, m_nSearchflags, (ULONG_PTR)&tf);
        return true;
    }
    return false;
}
Exemple #9
0
/*
* Posiciona cursor en fila y columna
 * fila: (9-fila)*8-1 (basado en 8 pixeles de alto por caracter)
 * columna: col*6-6 (basado en 6 pixeles de ancho por caracter)
 */
void rDK_GLCD::Goto(uint8_t col,uint8_t fila)
{
  GotoPosition(lcdCol(col),lcdFila(fila));
}
Exemple #10
0
/*
* Nueva versión de este metodo para calcular posición en cada fila de arriba hacia abajo
 * fila 1=pixel 63, fila 2= pixel 55, fila 3= pixel 47 ....
 */
void rDK_GLCD::GotoLine(uint8_t fila)
{ 	
  GotoPosition(0,lcdFila(fila));
}