⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configtree.cpp

📁 ecos实时嵌入式操作系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
            wxRect rect;            if (GetBoundingRect(id, rect))            {                GetPropertiesMenu()->SetClientData((void*) TRUE);                PopupMenu(GetPropertiesMenu(), 100, rect.GetTop() + 4);            }        }    }    else if (event.GetKeyCode() == '<')    {        if (id.IsOk())        {            ecConfigItem* item = ((ecTreeItemData*) GetItemData(id))->GetConfigItem();            item->BumpItem(-1);        }    }    else if (event.GetKeyCode() == '>')    {        if (id.IsOk())        {            ecConfigItem* item = ((ecTreeItemData*) GetItemData(id))->GetConfigItem();            item->BumpItem(+1);        }            }    else if (event.GetKeyCode() == WXK_SPACE)    {        if (id.IsOk())        {            ecConfigItem* item = ((ecTreeItemData*) GetItemData(id))->GetConfigItem();            item->BumpItem(0);        }    }    else if (event.GetKeyCode() == WXK_RETURN && event.AltDown())    {        if (id.IsOk())        {            ecConfigItem* item = ((ecTreeItemData*) GetItemData(id))->GetConfigItem();                        ecConfigPropertiesDialog dialog(wxGetApp().GetTopWindow(), item);            dialog.SetTitle(item->GetName());            dialog.ShowModal();        }    }    else    {        event.Skip();    }}void ecConfigTreeCtrl::OnCollapseExpand(wxTreeEvent& event){    if (GetCompanionWindow())        GetCompanionWindow()->Refresh();}// show help for this windowvoid ecConfigTreeCtrl::OnHelp(wxHelpEvent& event){    wxPoint pt = ScreenToClient(event.GetPosition());    int flags = 0;    wxTreeItemId id = HitTest(pt, flags);    wxHelpProvider *helpProvider = wxHelpProvider::Get();    if ( helpProvider && id > 0)    {        ecConfigItem* item = ((ecTreeItemData*) GetItemData(id))->GetConfigItem();        if (item)        {            wxGetApp().GetHelpController().DisplayTextPopup(item->GetDescription(), event.GetPosition());            return;	}    }    event.Skip();}/** ecValueWindow*/IMPLEMENT_CLASS(ecValueWindow, wxTreeCompanionWindow)BEGIN_EVENT_TABLE(ecValueWindow, wxTreeCompanionWindow)    EVT_PAINT(ecValueWindow::OnPaint)    EVT_MOUSE_EVENTS(ecValueWindow::OnMouseEvent)    EVT_SCROLLWIN(ecValueWindow::OnScroll)    EVT_TREE_ITEM_EXPANDED(-1, ecValueWindow::OnExpand)    EVT_TREE_ITEM_COLLAPSED(-1, ecValueWindow::OnExpand)END_EVENT_TABLE()ecValueWindow::ecValueWindow(wxWindow* parent, wxWindowID id,                             const wxPoint& pos,                             const wxSize& sz,                             long style):wxTreeCompanionWindow(parent, id, pos, sz, style){    SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_LISTBOX));    if (!wxGetApp().GetSettings().GetWindowSettings().GetUseDefaults() &&         wxGetApp().GetSettings().GetWindowSettings().GetFont(wxT("Configuration")).Ok())    {        SetFont(wxGetApp().GetSettings().GetWindowSettings().GetFont(wxT("Configuration")));    }    else        SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));        m_editWindow = NULL;    m_configItem = NULL;}void ecValueWindow::OnPaint(wxPaintEvent& event){    wxPaintDC dc(this);        if (!m_treeCtrl)        return;        wxPen pen(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT), 1, wxSOLID);    dc.SetPen(pen);    dc.SetBrush(* wxTRANSPARENT_BRUSH);    wxFont font(GetFont());    dc.SetFont(font);    //dc.SetTextForeground(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT));    dc.SetBackgroundMode(wxTRANSPARENT);        wxSize clientSize = GetClientSize();    wxRect itemRect;    int cy=0;    wxTreeItemId h, lastH;    for(h=m_treeCtrl->GetFirstVisibleItem();h;h=m_treeCtrl->GetNextVisible(h))    {        if (m_treeCtrl->GetBoundingRect(h, itemRect))        {            cy = itemRect.GetTop();            wxRect drawItemRect(0, cy, clientSize.x, itemRect.GetHeight());                        lastH = h;                        // Draw the actual item            DrawItem(dc, h, drawItemRect);            dc.DrawLine(0, cy, clientSize.x, cy);        }    }    if (lastH && lastH.IsOk() && m_treeCtrl->GetBoundingRect(lastH, itemRect))    {        cy = itemRect.GetBottom();        dc.DrawLine(0, cy, clientSize.x, cy);    }}// Returns the rectangle which will enclose the value for this tree itemwxRect ecValueWindow::GetItemRect(ecConfigItem* item){    if (!m_treeCtrl)        return wxRect(0, 0, 0, 0);        wxSize clientSize = GetClientSize();    wxRect itemRect;    int cy=0;    wxTreeItemId h;    for(h=m_treeCtrl->GetFirstVisibleItem();h;h=m_treeCtrl->GetNextVisible(h))    {        ecTreeItemData* data = (ecTreeItemData*) m_treeCtrl->GetItemData(h);        if (data->GetConfigItem() == item)        {            if (m_treeCtrl->GetBoundingRect(h, itemRect))            {                cy = itemRect.GetTop();                wxRect drawItemRect(0, cy, clientSize.x, itemRect.GetHeight());                return drawItemRect;            }            else                return wxRect(0, 0, 0, 0);        }    }    return wxRect(0, 0, 0, 0);}void ecValueWindow::OnMouseEvent(wxMouseEvent& event){    if (event.LeftDown() && (event.GetX() > 2))    {        // Find if this corresponds to a tree item        int flags = 0;        wxTreeItemId item = m_treeCtrl->HitTest(wxPoint(4, event.GetY()), flags);        if (item.IsOk())        {            m_treeCtrl->SelectItem(item);            ecConfigItem* configItem = ((ecTreeItemData*) m_treeCtrl->GetItemData(item))->GetConfigItem();            if (configItem->CanEdit())                BeginEditing(configItem);                    }    }    else if (event.RightDown())    {        // Find if this corresponds to a tree item        int flags = 0;        wxTreeItemId item = m_treeCtrl->HitTest(wxPoint(4, event.GetY()), flags);        if (item != 0)        {            ecConfigItem* configItem = ((ecTreeItemData*) m_treeCtrl->GetItemData(item))->GetConfigItem();            m_treeCtrl->SelectItem(item);            ((ecConfigTreeCtrl*) m_treeCtrl)->GetPropertiesMenu()->SetClientData((void*) TRUE);            PopupMenu(((ecConfigTreeCtrl*) m_treeCtrl)->GetPropertiesMenu(), event.GetX(), event.GetY());        }        else        {            wxGetApp().GetWhatsThisMenu()->SetClientData((void*) FALSE);            PopupMenu(wxGetApp().GetWhatsThisMenu(), event.GetX(), event.GetY());        }    }}void ecValueWindow::DrawItem(wxDC& dc, wxTreeItemId id, const wxRect& rect){    if (m_treeCtrl)    {        ecConfigItem* item = ((ecTreeItemData*) m_treeCtrl->GetItemData(id))->GetConfigItem();        if (!item)            return;        wxString text = item->GetDisplayValue();                if (text.IsEmpty())            return;                static wxColour normalColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT);        static wxColour disabledColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_GRAYTEXT);        dc.SetTextForeground( (item->GetActive() && (item->GetConfigType() != ecPackage)) ? normalColour : disabledColour );                int textW, textH;        dc.GetTextExtent(text, & textW, & textH);                int x = 2;        int y = rect.GetY() + wxMax(0, (rect.GetHeight() - textH) / 2);                dc.DrawText(text, x, y);    }}bool ecValueWindow::BeginEditing(ecConfigItem* item){    if (m_configItem)        EndEditing();        m_configItem = item;        m_editWindow = item->CreateEditWindow(this);    if (m_editWindow)    {        m_editWindow->Show(FALSE);                item->TransferDataToWindow(m_editWindow);                // Position the control        PositionEditWindow();                m_editWindow->Show(TRUE);        m_editWindow->SetFocus();                return TRUE;    }    else    {        m_configItem = NULL;        return FALSE;    }}// Position the controlvoid ecValueWindow::PositionEditWindow(){    if (!m_configItem || !m_editWindow)        return;        // Position the control    wxSize clientSize = GetClientSize();    wxRect itemRect;    m_treeCtrl->GetBoundingRect(m_configItem->GetTreeItem(), itemRect);    wxSize sz = m_editWindow->GetSize();    // m_editWindow->SetSize(2, itemRect.y+1, clientSize.x, itemRect.GetHeight() /* -2 */);    m_editWindow->SetSize(0, itemRect.y, clientSize.x, sz.y);}bool ecValueWindow::EndEditing(){    if (m_configItem)    {        if (m_editWindow && !wxGetApp().GetValuesLocked())            m_configItem->TransferDataFromWindow(m_editWindow);        m_configItem = NULL;    }        if (m_editWindow)    {        delete m_editWindow;        m_editWindow = NULL;    }        return TRUE;}void ecValueWindow::OnScroll(wxScrollWinEvent& event){    wxTreeCompanionWindow::OnScroll(event);        PositionEditWindow();}void ecValueWindow::OnExpand(wxTreeEvent& event){    wxTreeCompanionWindow::OnExpand(event);        EndEditing();}/** wxIconStateInfo*/wxIconStateInfo::wxIconStateInfo(const wxString& name){    m_maxStates = 0;    m_name = name;    int i;    for (i = 0; i < wxMAX_ICON_STATES; i++)        m_states[i] = 0;}int wxIconStateInfo::GetIconId(int state, bool enabled) const{    wxASSERT ( state < (wxMAX_ICON_STATES * 2) );    wxASSERT ( state < m_maxStates );        return m_states[state * 2 + (enabled ? 0 : 1)];}void wxIconStateInfo::SetIconId(int state, bool enabled, int iconId){    wxASSERT ( state < (wxMAX_ICON_STATES * 2) );    if (state+1 > m_maxStates)        m_maxStates = state+1;        m_states[state * 2 + (enabled ? 0 : 1)] = iconId;}/** wxIconStateInfoDb* Contains a list of wxIconStateInfos*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -