예제 #1
0
void CTimeBarScale::OnMouse( wxMouseEvent& event )
{
    if (m_pTimeBarFrame->IsEnableFramePanel())
    {
        CTimeBarItemContainer* pContiner = m_pTimeBarFrame->GetItemContainer();
        if (event.ButtonDown(wxMOUSE_BTN_LEFT))
        {
            if (!HasCapture())
            {
                CaptureMouse();
            }
            m_pTimeBarFrame->SetClickOnScalebar(true);
            wxPoint pstn = event.GetPosition();
            int iScale = PointToScale(pstn);
            int iPositionX = iScale + pContiner->GetViewStart().x;
            m_pTimeBarFrame->SetCursorPos(iPositionX);
            m_pTimeBarFrame->RefreshControl();
        }
        else if (event.ButtonUp(wxMOUSE_BTN_LEFT))
        {
            if (HasCapture())
            {
                ReleaseMouse();
            }
        }
        else if (event.Dragging())
        {
            wxPoint pstn = event.GetPosition();
            {
                int iScale = PointToScale(pstn);
                int iPositionX = iScale + pContiner->GetViewStart().x;
                m_pTimeBarFrame->SetCursorPos(iPositionX);
                m_pTimeBarFrame->RefreshControl();
            }
        }
    }
}
예제 #2
0
void CTimeBarItem::DrawItem()
{
    static const size_t GrayCellOffset = 5;
    SetBackgroundStyle(wxBG_STYLE_PAINT);
    wxAutoBufferedPaintDC ScaleDC(this); 
    wxRect ItemRect = GetRect();
    CTimeBarItemContainer* pContainer = (CTimeBarItemContainer*)GetParent(); 
    wxPoint ViewStart = pContainer->GetViewStart();
    wxSize size = pContainer->GetSize();
    int cursorpositionx = pContainer->GetTimeBarFrameWindow()->GetCursorPositionX();
    int iWidith = pContainer->GetCellWidth();
    int iCount  = size.x / iWidith;
    iCount += ViewStart.x - 1;
    int iDrawRectWdith = iWidith +1;
    int iPositionX = -1;
    int iDefaultCellHeight = ItemRect.height + 1;
    int iCellDataHeight = ItemRect.height - 2 * DATACELLOFFSET;

    ScaleDC.SetPen(*wxLIGHT_GREY);
    ScaleDC.DrawRectangle(ItemRect);
    for(int i = ViewStart.x; i < iCount; i++)
    {
        iPositionX = i * iWidith;
        bool bHasData = HasData(i);
        bool bHasSelected = HasSelected(i);
        if (!bHasData)
        {
            if (bHasSelected)
            {
                ScaleDC.SetBrush(*wxBLUE);
                ScaleDC.DrawRectangle(iPositionX, 0, iDrawRectWdith, iDefaultCellHeight);
                ScaleDC.SetBrush(*wxWHITE);
            }
            else
            {
                if (i % GrayCellOffset == 0)
                {
                    ScaleDC.SetBrush(*wxLIGHT_GREY);
                    ScaleDC.DrawRectangle(iPositionX, 0, iDrawRectWdith, iDefaultCellHeight);
                    ScaleDC.SetBrush(*wxWHITE);
                }
                else
                {
                    ScaleDC.DrawRectangle(iPositionX, 0, iDrawRectWdith, iDefaultCellHeight);
                }
            }
            
        }
        else//if(bHasData)
        {
            if (bHasSelected)
            {
                DrawDefaultItem(&ScaleDC, i, iPositionX, iDrawRectWdith, iDefaultCellHeight);
                ScaleDC.SetBrush(*wxBLUE);
                ScaleDC.DrawRectangle(iPositionX, DATACELLOFFSET, iDrawRectWdith, iCellDataHeight);
                ScaleDC.SetBrush(*wxWHITE);
            }
            else
            {
                DrawDefaultItem(&ScaleDC, i, iPositionX, iDrawRectWdith, iDefaultCellHeight);
                ScaleDC.SetBrush(*wxGREEN);
                ScaleDC.DrawRectangle(iPositionX, DATACELLOFFSET, iDrawRectWdith, iCellDataHeight);
                ScaleDC.SetBrush(*wxWHITE);
            }
        }
    }
    wxPen pen = *wxRED_PEN;
    pen.SetWidth(CURSORWIDTH);
    ScaleDC.SetPen(pen);
    ScaleDC.DrawLine(cursorpositionx, 0, cursorpositionx, ItemRect.height);
}