示例#1
0
void PGE_Menu::addNamedIntMenuItem(int *intvalue, QList<NamedIntItem> _items, QString value, QString title, bool rotate, std::function<void()> _extAction)
{
    PGE_NamedIntMenuItem item;
    item.intvalue = intvalue;
    item.value = value;
    item.items=_items;
    if(intvalue)
        for(int i=0; i<_items.size(); i++)
        {
            if(*intvalue==_items[i].value)
            {
                item.curItem=i;
                break;
            }
        }
    item.allowRotation=rotate;
    item.title = (title.isEmpty() ? "unknown named integer" : title);
    item._font_id = _font_id;
    if(_text_len_limit_strict)
    {   //Crop lenght
        item.title=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(item.title, _font_id, 0, true).w();
    }
    else
    {
        //Capture limited lenght, but don't crop
        QString temp=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(temp, _font_id, 0, true).w();
    }
    item.extAction=_extAction;
    _items_named_int.push_back(item);
    PGE_Menu::_items.push_back( &_items_named_int.last() );
    refreshRect();
}
示例#2
0
void PGE_Menu::addKeyGrabMenuItem(KM_Key *key, QString value, QString title,
                                  SDL_Joystick* joystick_device)
{
    PGE_KeyGrabMenuItem item;
    item.targetKey = key;
    item.value = value;
    item.title = (title.isEmpty() ? "unknown key-grabber" : title);
    item._font_id = _font_id;
    if(_text_len_limit_strict)
    {   //Crop lenght
        item.title=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(item.title, _font_id, 0, true).w();
    }
    else
    {
        //Capture limited lenght, but don't crop
        QString temp=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(temp, _font_id, 0, true).w();
    }

    if(joystick_device)
    {
        item.joystick_mode=true;
        item.joystick_device=joystick_device;
    }

    item.menu = this;
    _items_keygrabs.push_back(item);
    _items.push_back( &_items_keygrabs.last() );
    refreshRect();
}
示例#3
0
void PGE_Menu::addIntMenuItem(int *intvalue, int min, int max, QString value, QString title, bool rotate, std::function<void()> _extAction)
{
    PGE_IntMenuItem item;
    item.intvalue = intvalue;
    item.value = value;
    item.min=min;
    item.max=max;
    item.allowRotation=rotate;
    item.title = (title.isEmpty() ? "unknown integer" : title);
    item._font_id = _font_id;
    if(_text_len_limit_strict)
    {   //Crop lenght
        item.title=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(item.title, _font_id, 0, true).w();
    }
    else
    {
        //Capture limited lenght, but don't crop
        QString temp=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(temp, _font_id, 0, true).w();
    }
    item.extAction=_extAction;
    _items_int.push_back(item);
    _items.push_back( &_items_int.last() );
    refreshRect();
}
示例#4
0
void PGE_Menu::setItemsNumber(int q)
{
    if(q>0)
        _itemsOnScreen = q;
    else
        _itemsOnScreen = 5;
    refreshRect();
}
示例#5
0
void PGE_Menu::clear()
{
    _items.clear();
    _items_normal.clear();
    _items_bool.clear();
    _items_int.clear();
    _items_named_int.clear();
    _items_keygrabs.clear();
    m_item=NULL;
    reset();
    refreshRect();
}
示例#6
0
void GenericLayout::onControlUpdate( const CtrlGeneric &rCtrl,
                                     int width, int height,
                                     int xOffSet, int yOffSet )
{
    // The size is not valid, refresh the whole layout
    if( width <= 0 || height <= 0 )
    {
        refreshAll();
        return;
    }

    const Position *pPos = rCtrl.getPosition();
    if( pPos )
    {
        refreshRect( pPos->getLeft() + xOffSet,
                     pPos->getTop() + yOffSet,
                     width, height );
    }
}
示例#7
0
void GenericLayout::onControlUpdate( const CtrlGeneric &rCtrl,
                                     int width, int height,
                                     int xOffSet, int yOffSet )
{
    // Do nothing if the layout or control is hidden
    if( !m_visible )
        return;

    const Position *pPos = rCtrl.getPosition();
    if( width > 0 && height > 0 )
    {
        // make sure region is within the layout
        rect region( pPos->getLeft() + xOffSet,
                     pPos->getTop() + yOffSet,
                     width, height );
        rect layout( 0, 0, m_rect.getWidth(), m_rect.getHeight() );
        rect inter;
        if( rect::intersect( layout, region, &inter ) )
        {
            refreshRect( inter.x, inter.y, inter.width, inter.height );
        }
    }
}
示例#8
0
void PGE_Menu::addBoolMenuItem(bool *flag, QString value, QString title, std::function<void()> _extAction)
{
    PGE_BoolMenuItem item;
    item.flag = flag;
    item.value = value;
    item.title = (title.isEmpty() ? "unknown flag" : title);
    item._font_id = _font_id;
    if(_text_len_limit_strict)
    {   //Crop lenght
        item.title=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(item.title, _font_id, 0, true).w();
    }
    else
    {
        //Capture limited lenght, but don't crop
        QString temp=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(temp, _font_id, 0, true).w();
    }
    item.extAction=_extAction;
    _items_bool.push_back(item);
    _items.push_back( &_items_bool.last() );
    refreshRect();
}
示例#9
0
void PGE_Menu::addMenuItem(QString value, QString title, std::function<void()> _extAction)
{
    PGE_Menuitem item;
    item.value = value;
    item.type=PGE_Menuitem::ITEM_Normal;
    item.title = (title.isEmpty() ? value : title);
    item._font_id = _font_id;
    if(_text_len_limit_strict)
    {   //Crop lenght
        item.title=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(item.title, _font_id, 0, true).w();
    }
    else
    {
        //Capture limited lenght, but don't crop
        QString temp=FontManager::cropText(item.title, _text_len_limit);
        item._width=FontManager::textSize(temp, _font_id, 0, true).w();
    }
    item.extAction=_extAction;
    _items_normal.push_back(item);
    _items.push_back( &_items_normal.last() );
    refreshRect();
}
示例#10
0
void GenericLayout::refreshAll()
{
    refreshRect( 0, 0, m_rect.getWidth(), m_rect.getHeight() );
}
示例#11
0
void PGE_Menu::setSize(PGE_Size s)
{
    _item_height=s.h();
    refreshRect();
}
示例#12
0
void PGE_Menu::setSize(int w, int h)
{
    Q_UNUSED(w);
    _item_height=h;
    refreshRect();
}
示例#13
0
void PGE_Menu::setPos(PGE_Point p)
{
    menuRect.setX(p.x());
    menuRect.setY(p.y()-_font_offset);
    refreshRect();
}
示例#14
0
void PGE_Menu::setPos(int x, int y)
{
    menuRect.setX(x);
    menuRect.setY(y-_font_offset);
    refreshRect();
}
示例#15
0
void GenericLayout::refreshAll()
{
    refreshRect( 0, 0, m_width, m_height );
}