Esempio n. 1
0
void ExposedList::Update()
{
    if (!IsExposed())
        return;

    ExposedObjC::Update();
    if (listData.IsEmpty())
        {
            SC_StringArray temp;
            temp.Alloc(1);
            temp += "<< no data >>";
            scrolledList.SetListText(temp);
            exposedMS.enteredIndexValue = offsetVal;
            currListData.DeAlloc();
        }
    else
        {
            // has list changed ?
            if (!(currListData == listData))
                {
                    // update if different
                    scrolledList.SetListText(listData);
                    currListData = listData;
                }

            if (exposedMS.enteredIndexIsSingle)
                {
                    int currIndx = exposedMS.enteredIndexValue - offsetVal;
                    if (currIndx < 0)
                        currIndx = 0;
                    if (currIndx >= listData.Size())
                        currIndx = listData.Size() - 1;
                    scrolledList.SetSingleSelection(currIndx);
                    scrolledList.SetSelectionVisible();
                    exposedMS.enteredIndexValue = currIndx + offsetVal;
                }
            else
                {
                    SC_IntArray currIndex(exposedMS.enteredIndexArray);
                    int maxIndex = listData.Size();
                    int nOK = 0;
                    int i;
                    for (i = 0; i < currIndex.Size(); i++)
                        if ((currIndex[i] - offsetVal) < maxIndex)
                            {
                                currIndex[nOK++] =  currIndex[i] - offsetVal;
                            }
                    currIndex.SetSize(nOK);
                    scrolledList.SetMultipleSelection(currIndex);

                    for (i = 0; i < nOK; i++)
                        exposedMS.enteredIndexArray[i] = currIndex[i] + offsetVal;
                    exposedMS.enteredIndexArray.SetSize(nOK);
                }
        }
    SetAllSensitive();

}
Esempio n. 2
0
void wxStatusBarUniv::DoDraw(wxControlRenderer *renderer)
{
    // get the fields rect
    wxCoord borderBetweenFields;
    wxRect rect = GetTotalFieldRect(&borderBetweenFields);

    // prepare the DC
    wxDC& dc = renderer->GetDC();
    dc.SetFont(GetFont());
    dc.SetTextForeground(GetForegroundColour());

    // do draw the fields
    int flags = IsEnabled() ? 0 : (int)wxCONTROL_DISABLED;
    for ( int n = 0; n < m_nFields; n++ )
    {
        rect.width = m_widthsAbs[n];

        if ( IsExposed(rect) )
        {
            wxTopLevelWindow *parentTLW = wxDynamicCast(GetParent(), wxTopLevelWindow);

            // the size grip may be drawn only on the last field and only if we
            // have the corresponding style and even then only if we really can
            // resize this frame
            if ( n == m_nFields - 1 &&
                 HasFlag(wxST_SIZEGRIP) &&
                 GetParent()->HasFlag(wxRESIZE_BORDER) &&
                 parentTLW && !parentTLW->IsMaximized() )
            {
                flags |= wxCONTROL_SIZEGRIP;
            }

            int style;
            if (m_statusStyles)
                style = m_statusStyles[n];
            else
                style = wxSB_NORMAL;
            m_renderer->DrawStatusField(dc, rect, m_statusText[n], flags, style);
        }

        rect.x += rect.width + borderBetweenFields;
    }
}
Esempio n. 3
0
void Parser::ProcessNextToken(int token, const char *text)
{
    //printf("           * Loop %s [%s]\n", get_token_name(ID_FROM_TOKEN(token)), text);

    switch(token)
    {
    case T_LEFTBRACE:
        {
            mBraceDepth++;
            FlushDerived();
            ClearFlag(FLAG_UNOPENED);
            break;
        }

    case T_COMMA:
        {
            FlushDerived();
            break;
        }

    case T_COLON_COLON:
        {
            SetFlag(FLAG_COLON_COLON);
            break;
        }

    case T_FRIEND:
        {
            SetFlag(FLAG_FRIEND);
            break;
        }

    case T_ENUM:
        {
            SetFlag(FLAG_ENUM|FLAG_UNOPENED);
            break;
        }

    case T_MM_IGNORE_START:
        {
            mIgnore = 1;
            break;
        }

    case T_MM_IGNORE_END:
        {
            mIgnore = 0;
            break;
        }

    case T_RIGHTBRACE:
        {
            mBraceDepth--;
            if(!IsSet(FLAG_ENUM))
            {
                PopScope();
                ProcessStatement();
            }
            break;
        }

    case T_CLASS:
    case T_STRUCT:
    case T_NAMESPACE:
        {
            Scope *pScope      = new Scope;
            pScope->braceDepth = mBraceDepth;
            pScope->isClass    = (token != T_NAMESPACE);
            pScope->mpName     = NULL;
            pScope->isExposed  = IsSet(FLAG_NEXT_IS_EXPOSED);
            mScopes.push_back(pScope);
            SetFlag(pScope->isClass ? FLAG_CLASS|FLAG_UNOPENED : FLAG_NAMESPACE);
            ClearFlag(FLAG_NEXT_IS_EXPOSED);
            break;
        }

    case T_BOOL:
    case T_CHAR:
    case T_DOUBLE:
    case T_FLOAT:
    case T_INT:
    case T_LONG:
    case T_SHORT:
    case T_VOID:
    case T_WCHART:
        {
            Identifier *pIdentifier = new Identifier;
            pIdentifier->mpName = strdup(text);
            pIdentifier->isKeyword = true;
            if(IsSet(FLAG_NEXT_IS_CONST))
            {
                pIdentifier->isConst = true;
                ClearFlag(FLAG_NEXT_IS_CONST);
            }
            mIdentifiers.push_back(pIdentifier);
            break;
        }

    case T_IDENTIFIER:
        {
            if(IsSet(FLAG_NAMESPACE|FLAG_CLASS))
            {
                int size = mScopes.size();
                if(size > 0)
                {
                    Scope *pScope = mScopes[size-1];
                    pScope->mpName = strdup(text);
                    if(IsSet(FLAG_CLASS))
                    {
                        if(IsExposed())
                        {
                            mpGenerator->AddClass(text); //(GetFullScopeName());
                        }
                    }
                    ClearFlag(FLAG_NAMESPACE|FLAG_CLASS);
                }
            }
            else if(IsExposed())
            {
                if(!IsSet(FLAG_PAREN))
                {
                    if(IsSet(FLAG_COLON_COLON))
                    {
                        int size = mIdentifiers.size();
                        if(size > 0)
                        {
                            Identifier *pIdentifier = mIdentifiers[size-1];
                            char temp[2048];
                            sprintf(temp, "%s::%s", pIdentifier->mpName, text);
                            free(pIdentifier->mpName);
                            pIdentifier->mpName = strdup(temp);
                        }
                        ClearFlag(FLAG_COLON_COLON);
                    }
                    else
                    {
                        Identifier *pIdentifier = new Identifier;
                        pIdentifier->mpName = strdup(text);
                        pIdentifier->isBracketed = IsSet(FLAG_BRACKET);
                        if(IsSet(FLAG_NEXT_IS_CONST))
                        {
                            pIdentifier->isConst = true;
                            ClearFlag(FLAG_NEXT_IS_CONST);
                        }
                        mIdentifiers.push_back(pIdentifier);
                    }
                }
            }
            break;
        }

    case T_STAR:
        {
            int size = mIdentifiers.size();
            if(size > 0)
            {
                Identifier *pIdentifier = mIdentifiers[size-1];
                pIdentifier->starCount++;
            }
            break;
        }

    case T_LEFTPAREN:
        {
            SetFlag(FLAG_PAREN);
            break;
        }

    case T_MM_EXPOSE:
    case T_MM_EXPOSED:
        {
            SetFlag(FLAG_NEXT_IS_EXPOSED);
            break;
        }

    case T_LESS:
        {
            mBracketCount++;
            SetFlag(FLAG_BRACKET);
            break;
        }

    case T_GREATER:
        {
            mBracketCount--;
            if(mBracketCount == 0)
            {
                ClearFlag(FLAG_BRACKET);
            }
            break;
        }

    case T_CONST:
        {
            int size = mIdentifiers.size();
            if(size > 0)
            {
                Identifier *pIdentifier = mIdentifiers[size-1];
                pIdentifier->isConst = true;
            }
            else
            {
                SetFlag(FLAG_NEXT_IS_CONST);
            }
            break;
        }

    case T_SEMICOLON:
        {
            if(IsSet(FLAG_ENUM))
            {
                for(unsigned int i=0; i<mIdentifiers.size(); i++)
                {
                    Identifier *pIdentifier = mIdentifiers[i];
                    mpGenerator->AddEnum(pIdentifier->mpName, GetFullScopeName());
                }

                mIdentifiers.clear();
                ClearFlag(FLAG_ENUM|FLAG_PAREN);
            }
            else
            {
                ProcessStatement();
            }
            break;
        }
    }
}