/* 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)); }
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); } }
/* 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(); }