コード例 #1
0
/* BrowserWindow::reloadItems
 * Reloads (clears) all item images in [node] and its children
 * recursively
 *******************************************************************/
void BrowserWindow::reloadItems(BrowserTreeNode* node)
{
	// Check node was given to begin reload
	if (!node)
		node = items_root;

	// Go through items in this node
	for (unsigned a = 0; a < node->nItems(); a++)
		node->getItem(a)->clearImage();

	// Go through child nodes
	for (unsigned a = 0; a < node->nChildren(); a++)
		reloadItems((BrowserTreeNode*)node->getChild(a));
}
コード例 #2
0
ファイル: teambody.cpp プロジェクト: Airisu/pokemon-online
void TB_TeamBody::changeGeneration(int gen)
{
    if (this->gen == gen)
        return;

    this->gen = gen;
    trainerTeam()->team().setGen(gen);

    QSettings s;
    reloadItems(s.value("show_all_items").toBool());

    for(int i = 0; i < 6; i++) {
        pokeBody[i]->changeGeneration(gen);
    }

    if (dockAdvanced()) {
        dockAdvanced()->changeGeneration(gen);
    }
}
コード例 #3
0
ファイル: Keyboard.cpp プロジェクト: mosra/kompas-sdl
/* Konstruktor */
Keyboard::Keyboard(SDL_Surface* _screen, Skin& _skin, std::string file, std::string& _text, int _flags): screen(_screen), skin(_skin), text(_text), cursor(text.end()), cursorBlink(0), flags(_flags), shiftPushed(false) {
    /* Otevření conf souboru */
    ConfParser keyboard(file);

    /* Sekce skinu, ve které hledat věci pro tuto klávesnici */
    string skinSection;
    keyboard.value("skinSection", skinSection);

    /* Načtení věcí ze skinu */
    keyboardX = skin.get<int*>("x", skinSection);
    keyboardY = skin.get<int*>("x", skinSection);
    align = skin.get<Align*>("align", skinSection);
    image = skin.get<SDL_Surface**>("image", skinSection);

    textFont = skin.get<TTF_Font**>("textFont", skinSection);
    textColor = skin.get<SDL_Color*>("textColor", skinSection);

    keyAlign = skin.get<Align*>("keyAlign", skinSection);
    keyFont = skin.get<TTF_Font**>("keyFont", skinSection);
    keyColor = skin.get<SDL_Color*>("keyColor", skinSection);
    keyActiveColor = skin.get<SDL_Color*>("keyActiveColor", skinSection);
    keySpecialActiveColor = skin.get<SDL_Color*>("keySpecialActiveColor", skinSection);
    SDL_Surface** keyImage = skin.get<SDL_Surface**>("keyImage", skinSection);
    SDL_Surface** keyActiveImage = skin.get<SDL_Surface**>("keyActiveImage", skinSection);
    SDL_Surface** keySpecialImage = skin.get<SDL_Surface**>("keySpecialImage", skinSection);
    SDL_Surface** keySpecialActiveImage = skin.get<SDL_Surface**>("keySpecialActiveImage", skinSection);

    cursorX = skin.get<int*>("cursorX", skinSection);
    cursorY = skin.get<int*>("cursorY", skinSection);
    cursorAlign = skin.get<Align*>("cursorAlign", skinSection);
    cursorImage = skin.get<SDL_Surface**>("cursorImage", skinSection);
    cursorInterval = skin.get<int*>("cursorInterval", skinSection);

    /* Načtení globálních věcí z konfiguráku klávesnice */
    keyboard.value("w", keyboardW);
    keyboard.value("h", keyboardH);

    keyboard.value("textX", textPosition.x);
    keyboard.value("textY", textPosition.y);
    keyboard.value("textW", textPosition.w);
    keyboard.value("textH", textPosition.h);
    keyboard.value("textAlign", textAlign);

    /* keyW a keyH budu doplňovat do každé klávesy, proto nejsou v žádné vlastnosti třídy */
    int keyW;   keyboard.value("keyW", keyW);
    int keyH;   keyboard.value("keyH", keyH);

    /* Speciální klávesy */
    ConfParser::sectionPointer section = keyboard.section("specialKey");
    while(section != keyboard.sectionNotFound()) {
        KeyboardKey key;
        keyboard.value("x", key.position.x, section);
        keyboard.value("y", key.position.y, section);
        key.position.w = keyW;
        key.position.h = keyH;

        keyboard.value("posX", key.x, section);
        keyboard.value("posY", key.y, section);
        keyboard.value("name", key.name, section, ConfParser::SUPPRESS_ERRORS);

        string temp;
        keyboard.value("val", temp, section, ConfParser::SUPPRESS_ERRORS);
        key.values.push_back(temp);
        keyboard.value("shiftVal", temp, section, ConfParser::SUPPRESS_ERRORS);
        key.values.push_back(temp);

        /* Pokud není parametr name ani val, chyba */
        if(key.name == "" && key.values[0] == "")
            cerr << "U speciální klávesy na pozici [" << key.x << ";" << key.y << "] chybí popisek i hodnota!" << endl;

        key.image = keySpecialImage;
        key.activeImage = keySpecialActiveImage;
        key.flags = SPECIAL;

        items.push_back(key);
        section = keyboard.section("specialKey", section+1);
    }

    /* Počet speciálních kláves */
    vector<KeyboardKey>::size_type specialKeyCount = items.size();

    /* Mezerník */
    section = keyboard.section("space");
    KeyboardKey space;
    keyboard.value("x", space.position.x, section);
    keyboard.value("y", space.position.y, section);
    keyboard.value("w", space.position.w, section);
    keyboard.value("h", space.position.h, section);
    keyboard.value("posX", space.x, section);
    keyboard.value("posY", space.y, section);
    keyboard.value("name", space.name, section, ConfParser::SUPPRESS_ERRORS);
    space.image = skin.get<SDL_Surface**>("spaceImage", skinSection);
    space.activeImage = skin.get<SDL_Surface**>("spaceActiveImage", skinSection);
    for(vector<KeyboardKey>::size_type i = 0; i != specialKeyCount*4; ++i)
        space.values.push_back(" ");
    space.flags = 0;
    items.push_back(space);

    /* Enter */
    section = keyboard.section("enter");
    KeyboardKey enter;
    keyboard.value("x", enter.position.x, section);
    keyboard.value("y", enter.position.y, section);
    keyboard.value("w", enter.position.w, section);
    keyboard.value("h", enter.position.h, section);
    keyboard.value("posX", enter.x, section);
    keyboard.value("posY", enter.y, section);
    keyboard.value("name", enter.name, section, ConfParser::SUPPRESS_ERRORS);
    enter.image = skin.get<SDL_Surface**>("enterImage", skinSection);
    enter.activeImage = skin.get<SDL_Surface**>("enterActiveImage", skinSection);
    enter.flags = ENTER;
    items.push_back(enter);

    /* Shift */
    section = keyboard.section("shift");
    KeyboardKey shift;
    keyboard.value("x", shift.position.x, section);
    keyboard.value("y", shift.position.y, section);
    keyboard.value("w", shift.position.w, section);
    keyboard.value("h", shift.position.h, section);
    keyboard.value("posX", shift.x, section);
    keyboard.value("posY", shift.y, section);
    keyboard.value("name", shift.name, section, ConfParser::SUPPRESS_ERRORS);
    shift.image = skin.get<SDL_Surface**>("shiftImage", skinSection);
    shift.activeImage = skin.get<SDL_Surface**>("shiftActiveImage", skinSection);
    shift.flags = SHIFT;
    items.push_back(shift);

    /* Backspace */
    section = keyboard.section("backspace");
    KeyboardKey backspace;
    keyboard.value("x", backspace.position.x, section);
    keyboard.value("y", backspace.position.y, section);
    keyboard.value("w", backspace.position.w, section);
    keyboard.value("h", backspace.position.h, section);
    keyboard.value("posX", backspace.x, section);
    keyboard.value("posY", backspace.y, section);
    keyboard.value("name", backspace.name, section, ConfParser::SUPPRESS_ERRORS);
    backspace.image = skin.get<SDL_Surface**>("backspaceImage", skinSection);
    backspace.activeImage = skin.get<SDL_Surface**>("backspaceActiveImage", skinSection);
    backspace.flags = BACKSPACE;
    items.push_back(backspace);

    /* Delete */
    section = keyboard.section("delete");
    KeyboardKey del;
    keyboard.value("x", del.position.x, section);
    keyboard.value("y", del.position.y, section);
    keyboard.value("w", del.position.w, section);
    keyboard.value("h", del.position.h, section);
    keyboard.value("posX", del.x, section);
    keyboard.value("posY", del.y, section);
    keyboard.value("name", del.name, section, ConfParser::SUPPRESS_ERRORS);
    del.image = skin.get<SDL_Surface**>("deleteImage", skinSection);
    del.activeImage = skin.get<SDL_Surface**>("deleteActiveImage", skinSection);
    del.flags = DELETE;
    items.push_back(del);

    /* Šipka doleva */
    section = keyboard.section("leftArrow");
    KeyboardKey leftArrow;
    keyboard.value("x", leftArrow.position.x, section);
    keyboard.value("y", leftArrow.position.y, section);
    keyboard.value("w", leftArrow.position.w, section);
    keyboard.value("h", leftArrow.position.h, section);
    keyboard.value("posX", leftArrow.x, section);
    keyboard.value("posY", leftArrow.y, section);
    keyboard.value("name", leftArrow.name, section, ConfParser::SUPPRESS_ERRORS);
    leftArrow.image = skin.get<SDL_Surface**>("leftArrowImage", skinSection);
    leftArrow.activeImage = skin.get<SDL_Surface**>("leftArrowActiveImage", skinSection);
    leftArrow.flags = LEFT_ARROW;
    items.push_back(leftArrow);

    /* Šipka doprava */
    section = keyboard.section("rightArrow");
    KeyboardKey rightArrow;
    keyboard.value("x", rightArrow.position.x, section);
    keyboard.value("y", rightArrow.position.y, section);
    keyboard.value("w", rightArrow.position.w, section);
    keyboard.value("h", rightArrow.position.h, section);
    keyboard.value("posX", rightArrow.x, section);
    keyboard.value("posY", rightArrow.y, section);
    keyboard.value("name", rightArrow.name, section, ConfParser::SUPPRESS_ERRORS);
    rightArrow.image = skin.get<SDL_Surface**>("rightArrowImage", skinSection);
    rightArrow.activeImage = skin.get<SDL_Surface**>("rightArrowActiveImage", skinSection);
    rightArrow.flags = RIGHT_ARROW;
    items.push_back(rightArrow);

    /* Běžné klávesy */
    section = keyboard.section("key");
    while(section != keyboard.sectionNotFound()) {
        KeyboardKey key;
        keyboard.value("x", key.position.x, section);
        keyboard.value("y", key.position.y, section);
        key.position.w = keyW;
        key.position.h = keyH;

        keyboard.value("posX", key.x, section);
        keyboard.value("posY", key.y, section);
        keyboard.value("name", key.name, section, ConfParser::SUPPRESS_ERRORS);

        /*
        Hodnoty klávesy:
        - pokud není definována shift hodnota, je stejná jako normální
        - pokud není definována special normální hodnota, je stejná jako normální
        - pokud není definována shiftSpecial normální hodnota, je stejná jako normální
        - pokud není definována special shift hodnota, je stejná jako shift
        - pokud není definována shiftSpecial shift hodnota, je stejná jako shift
        */
        string temp;
        keyboard.value("val", temp, section);
        key.values.push_back(temp);
        keyboard.value("shiftVal", temp, section, ConfParser::SUPPRESS_ERRORS);
        key.values.push_back(temp);

        /* Speciální klávesy */
        for(vector<KeyboardKey>::size_type i = 0; i != specialKeyCount; ++i) {
            std::ostringstream number;
            number << i;

            temp = key.values[0];
            keyboard.value("special" + number.str() + "Val", temp, section, ConfParser::SUPPRESS_ERRORS);
            key.values.push_back(temp);
            temp = key.values[1];
            keyboard.value("special" + number.str() + "ShiftVal", temp, section, ConfParser::SUPPRESS_ERRORS);
            key.values.push_back(temp);

            temp = key.values[0];
            keyboard.value("shiftSpecial" + number.str() + "Val", temp, section, ConfParser::SUPPRESS_ERRORS);
            key.values.push_back(temp);
            temp = key.values[1];
            keyboard.value("shiftSpecial" + number.str() + "ShiftVal", temp, section, ConfParser::SUPPRESS_ERRORS);
            key.values.push_back(temp);
        }

        key.image = keyImage;
        key.activeImage = keyActiveImage;
        key.flags = 0;

        items.push_back(key);
        section = keyboard.section("key", section+1);
    }

    /* Inicializace ukazatelů na stisknuté spec. klávesy */
    specialPushed = items.end();
    specialShiftPushed = items.end();

    /* Reload položek */
    reloadItems();
}