iwDistribution::iwDistribution(const GameWorldViewer& gwv, GameCommandFactory& gcFactory) : IngameWindow(CGI_DISTRIBUTION, IngameWindow::posLastOrCenter, Extent(290, 312), _("Distribution of goods"), LOADER.GetImageN("resource", 41)), gwv(gwv), gcFactory(gcFactory), settings_changed(false) { CreateGroups(); // Tab Control ctrlTab* tab = AddTabCtrl(0, DrawPoint(10, 20), 270); DrawPoint txtPos(GetSize().x / 2, 60); DrawPoint progPos(PROGRESS_BORDER_DISTANCE - tab->GetPos().x, txtPos.y); const Extent progSize(GetSize().x - 2 * PROGRESS_BORDER_DISTANCE, 20); for(unsigned groupId = 0; groupId < groups.size(); groupId++) { const DistributionGroup& group = groups[groupId]; ctrlGroup* tabGrp = tab->AddTab(group.img, group.name, groupId); txtPos.y = progPos.y = 60; unsigned curId = 0; for(const std::string& entry : group.entries) { unsigned txtId = group.entries.size() + curId; tabGrp->AddText(txtId, txtPos, entry, COLOR_YELLOW, FontStyle::CENTER | FontStyle::BOTTOM, SmallFont); tabGrp->AddProgress(curId++, progPos, progSize, TC_GREY, 139, 138, 10); txtPos.y = progPos.y += progSize.y * 2; } } // Gruppe auswählen tab->SetSelection(0); // Timer für die Übertragung der Daten via Netzwerk AddTimer(1, 2000); const Extent btSize(32, 32); // Hilfe AddImageButton(2, DrawPoint(15, GetSize().y - 15 - btSize.y), btSize, TC_GREY, LOADER.GetImageN("io", 225), _("Help")); // Standardbelegung AddImageButton(10, GetSize() - DrawPoint::all(15) - btSize, btSize, TC_GREY, LOADER.GetImageN("io", 191), _("Default")); UpdateSettings(); }
/** * Konstruktor von @p iwAction. * * @author OLiver */ iwAction::iwAction(dskGameInterface* const gi, GameWorldViewer* const gwv, const Tabs& tabs, MapPoint selectedPt, int mouse_x, int mouse_y, unsigned int params, bool military_buildings) : IngameWindow(CGI_ACTION, mouse_x, mouse_y, 200, 254, _("Activity window"), LOADER.GetImageN("io", 1)), gi(gi), gwv(gwv), selectedPt(selectedPt), mousePosAtOpen_(mouse_x, mouse_y) { /* TAB_FLAG 1 = Land road TAB_FLAG 2 = Waterway TAB_FLAG 3 = Pull down flag TAB_FLAG 4 = Send geologist TAB_FLAG 5 = Send scout TAB_CUTROAD 1 = Cut Road TAB_BUILD 100-108, 200-212, 300-303, 400-403 = Buildings TAB_SETFLAG 1 = Erect flag TAB_WATCH 1 = TAB_WATCH 2 = TAB_WATCH 3 = zum HQ TAB_WATCH 4 = notify allies of location TAB_ATTACK 1 = Less soldiers TAB_ATTACK 2 = More soldiers TAB_ATTACK 3 = Option group: Better/Weaker TAB_ATTACK 4 = Angriff TAB_ATTACK 10-14 = Direktauswahl Anzahl */ /// Haupttab ctrlTab* main_tab = AddTabCtrl(0, 10, 20, 180); // Bau-main_tab if(tabs.build) { ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 18), _("-> Build house"), TAB_BUILD); ctrlTab* build_tab = group->AddTabCtrl(1, 0, 45, 180); // Building tabs if(tabs.build_tabs == Tabs::BT_MINE) //mines build_tab->AddTab(LOADER.GetImageN("io", 76), _("-> Dig mines"), Tabs::BT_MINE); else { build_tab->AddTab(LOADER.GetImageN("io", 67), _("-> Build hut"), Tabs::BT_HUT); if(tabs.build_tabs >= Tabs::BT_HOUSE) build_tab->AddTab(LOADER.GetImageN("io", 68), _("-> Build house"), Tabs::BT_HOUSE); if(tabs.build_tabs >= Tabs::BT_CASTLE) //castle & harbor build_tab->AddTab(LOADER.GetImageN("io", 69), _("-> Build castle"), Tabs::BT_CASTLE); } // add building icons to TabCtrl const unsigned char building_count_max = 14; const unsigned building_count[4] = { 9, 13, 6, 4 }; const BuildingType building_icons[4][building_count_max] = { { /* 0 */ /* 0 */ BLD_WOODCUTTER, /* 1 */ BLD_FORESTER, /* 2 */ BLD_QUARRY, /* 3 */ BLD_FISHERY, /* 4 */ BLD_HUNTER, /* 5 */ BLD_BARRACKS, /* 6 */ BLD_GUARDHOUSE, /* 7 */ BLD_LOOKOUTTOWER, /* 8 */ BLD_WELL }, {/* 1 */ /* 0 */ BLD_SAWMILL, /* 1 */ BLD_SLAUGHTERHOUSE, /* 2 */ BLD_MILL, /* 3 */ BLD_BAKERY, /* 4 */ BLD_IRONSMELTER, /* 5 */ BLD_METALWORKS, /* 6 */ BLD_ARMORY, /* 7 */ BLD_MINT, /* 8 */ BLD_SHIPYARD, /* 9 */ BLD_BREWERY, /* 10 */ BLD_STOREHOUSE, /* 11 */ BLD_WATCHTOWER, /* 12 */ BLD_CATAPULT }, { /* 2 */ /* 0 */ BLD_FARM, /* 1 */ BLD_PIGFARM, /* 2 */ BLD_DONKEYBREEDER, /* 3 */ BLD_CHARBURNER, /* 4 */ BLD_FORTRESS, /* 5 */ BLD_HARBORBUILDING }, { /* 3 */ /* 0 */ BLD_GOLDMINE, /* 1 */ BLD_IRONMINE, /* 2 */ BLD_COALMINE, /* 3 */ BLD_GRANITEMINE } }; const unsigned TABS_COUNT[5] = {1, 2, 3, 1, 3}; /// Flexible what-buildings-are-available handling bool building_available[4][building_count_max] ; // First enable all buildings for (unsigned char i = 0; i < 4; ++i) { for(unsigned char j = 0; j < building_count_max; ++j) { if (j < building_count[i]) { building_available[i][j] = GAMECLIENT.GetLocalPlayer().IsBuildingEnabled(building_icons[i][j]); } else { building_available[i][j] = false; } } } // Now deactivate those we don't want // Harbor if (tabs.build_tabs != Tabs::BT_HARBOR) building_available[2][5] = false; // Military buildings if (!military_buildings) { building_available[0][5] = false; building_available[0][6] = false; building_available[1][11] = false; building_available[2][4] = false; } // Mint and Goldmine if(GAMECLIENT.GetGGS().isEnabled(ADDON_CHANGE_GOLD_DEPOSITS)) { building_available[1][7] = false; building_available[3][0] = false; } // Catapult if (!GAMECLIENT.GetLocalPlayer().CanBuildCatapult()) //-V807 building_available[1][12] = false; // Charburner if(!GAMECLIENT.GetGGS().isEnabled(ADDON_CHARBURNER)) building_available[2][3] = false; for(unsigned char i = 0; i < TABS_COUNT[tabs.build_tabs]; ++i) { unsigned char k = 0; Tabs::BuildTab bt = (tabs.build_tabs == Tabs::BT_MINE) ? Tabs::BT_MINE : Tabs::BuildTab(i); for(unsigned char j = 0; j < building_count_max; ++j) { if (!building_available[bt][j]) continue; // Baukosten im Tooltip mit anzeigen std::stringstream tooltip; tooltip << _(BUILDING_NAMES[building_icons[bt][j]]); tooltip << _("\nCosts: "); if(BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].boards > 0) tooltip << (int)BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].boards << _(" boards"); if(BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].stones > 0) { if(BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].boards > 0) tooltip << ", "; tooltip << (int)BUILDING_COSTS[GAMECLIENT.GetLocalPlayer().nation][building_icons[bt][j]].stones << _(" stones"); } build_tab->GetGroup(bt)->AddBuildingIcon(j, (k % 5) * 36, (k / 5) * 36 + 45, building_icons[bt][j], GAMECLIENT.GetLocalPlayer().nation, 36, tooltip.str()); ++k; } building_tab_heights[bt] = (k / 5 + ((k % 5 != 0) ? 1 : 0)) * 36 + 150; } build_tab->SetSelection(0, true); } // Wenn es einen Flaggen-main_tab gibt, dann entsprechend die Buttons anordnen, wie sie gebraucht werden if(tabs.flag) { ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 70), _("Erect flag"), TAB_FLAG); switch(params) { case AWFT_NORMAL: // normal Flag { group->AddImageButton(1, 0, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 65), _("Build road")); group->AddImageButton(3, 45, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 118), _("Pull down flag")); group->AddImageButton(4, 90, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 20), _("Call in geologist")); group->AddImageButton(5, 135, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 96), _("Send out scout")); } break; case AWFT_WATERFLAG: // Water flag { group->AddImageButton(1, 0, 45, 36, 36, TC_GREY, LOADER.GetImageN("io", 65), _("Build road")); group->AddImageButton(2, 36, 45, 36, 36, TC_GREY, LOADER.GetImageN("io", 95), _("Build waterway")); group->AddImageButton(3, 72, 45, 36, 36, TC_GREY, LOADER.GetImageN("io", 118), _("Pull down flag")); group->AddImageButton(4, 108, 45, 36, 36, TC_GREY, LOADER.GetImageN("io", 20), _("Call in geologist")); group->AddImageButton(5, 144, 45, 36, 36, TC_GREY, LOADER.GetImageN("io", 96), _("Send out scout")); } break; case AWFT_HQ: // HQ { group->AddImageButton(1, 0, 45, 180, 36, TC_GREY, LOADER.GetImageN("io", 65), _("Build road")); } break; case AWFT_STOREHOUSE: // Storehouse { group->AddImageButton(1, 0, 45, 90, 36, TC_GREY, LOADER.GetImageN("io", 65), _("Build road")); group->AddImageButton(3, 90, 45, 90, 36, TC_GREY, LOADER.GetImageN("io", 118), _("Demolish house")); } break; } } // Flagge Setzen-main_tab if(tabs.setflag) { ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 45), _("Erect flag"), TAB_SETFLAG); unsigned int nr = 70; if(params == AWFT_WATERFLAG) nr = 94; // Straße aufwerten ggf anzeigen unsigned int btWidth = 180, btPosX = 90; AddUpgradeRoad(group, btPosX, btWidth); group->AddImageButton(1, 0, 45, btWidth, 36, TC_GREY, LOADER.GetImageN("io", nr), _("Erect flag")); } // Cut-main_tab if(tabs.cutroad) { ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 19), _("Dig up road"), TAB_CUTROAD); // Straße aufwerten ggf anzeigen unsigned int btWidth = 180, btPosX = 0; if(!tabs.setflag) AddUpgradeRoad(group, btPosX, btWidth); group->AddImageButton(1, btPosX, 45, btWidth, 36, TC_GREY, LOADER.GetImageN("io", 32), _("Dig up road")); } if(tabs.attack) { ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 98), _("Attack options"), TAB_ATTACK); available_soldiers_count = params; AddAttackControls(group, params); selected_soldiers_count = 1; } if(tabs.sea_attack) { ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 177), _("Attack options"), TAB_SEAATTACK); selected_soldiers_count_sea = 1; available_soldiers_count_sea = gwv->GetAvailableSoldiersForSeaAttackCount(GAMECLIENT.GetPlayerID(), selectedPt); AddAttackControls(group, available_soldiers_count_sea); } // Beobachten-main_tab if(tabs.watch) { ctrlGroup* group = main_tab->AddTab(LOADER.GetImageN("io", 36), _("Display options"), TAB_WATCH); group->AddImageButton(1, 0, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 108), _("Observation window")); group->AddImageButton(2, 45, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 179), _("House names")); group->AddImageButton(3, 90, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 180), _("Go to headquarters")); group->AddImageButton(4, 135, 45, 45, 36, TC_GREY, LOADER.GetImageN("io", 107), _("Notify allies of this location")); } main_tab->SetSelection(0, true); if(x_ + GetWidth() > VIDEODRIVER.GetScreenWidth()) x_ = mouse_x - GetWidth() - 40; if(y_ + GetHeight() > VIDEODRIVER.GetScreenHeight()) y_ = mouse_y - GetHeight() - 40; VIDEODRIVER.SetMousePos(GetX() + 20, GetY() + 75); }
/** * Konstruktor von @p iwDistribution. * * @author OLiver */ iwDistribution::iwDistribution(void) : IngameWindow(CGI_DISTRIBUTION, 0xFFFF, 0xFFFF, 290, 312, _("Distribution of goods"), LOADER.GetImageN("resource", 41)), settings_changed(false) { ctrlGroup* group; // Werte für die Progressbars //const GameClientPlayer *player = GAMECLIENT.GetLocalPlayer(); // Tab Control ctrlTab* tab = AddTabCtrl(0, 10, 20, 270); // Nahrungsgruppe group = tab->AddTab(LOADER.GetImageN("io", 80), _("Foodstuff"), TAB_FOOD); // Granitbergwerk group->AddText(0, width / 2, 60, _("Granite mine"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Kohlebergwerk group->AddText(2, width / 2, 100, _("Coal mine"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Eisenbergwerk group->AddText(4, width / 2, 140, _("Iron mine"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Goldbergwerk group->AddText(6, width / 2, 180, _("Gold mine"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(7, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 180, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Getreidegruppe group = tab->AddTab(LOADER.GetImageN("io", 90), _("Grain"), TAB_CORN); // Mühle group->AddText(0, width / 2, 60, _("Mill"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Schweinezucht group->AddText(2, width / 2, 100, _("Pig farm"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Eselzucht group->AddText(4, width / 2, 140, _("Donkey breeding"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Brauerei group->AddText(6, width / 2, 180, _("Brewery"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(7, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 180, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Charburner group->AddText(8, width / 2, 220, _("Charburner"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(9, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 220, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Eisengruppe group = tab->AddTab(LOADER.GetImageN("io", 81), _("Iron"), TAB_IRON); // Schmiede group->AddText(0, width / 2, 60, _("Armory"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Schlosserei group->AddText(2, width / 2, 100, _("Metalworks"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Kohlegruppe group = tab->AddTab(LOADER.GetImageN("io", 91), _("Coal"), TAB_COAL); // Schmiede group->AddText(0, width / 2, 60, _("Armory"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Eisenschmelze group->AddText(2, width / 2, 100, _("Iron smelter"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Münzprägerei group->AddText(4, width / 2, 140, _("Mint"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Wood group group = tab->AddTab(LOADER.GetImageN("io", 89), _("Wood"), TAB_WOOD); // Sawmill group->AddText(0, width / 2, 60, _("Sawmill"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Charburner group->AddText(2, width / 2, 100, _("Charburner"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Brettergruppe group = tab->AddTab(LOADER.GetImageN("io", 82), _("Boards"), TAB_BOARD); // Baustellen group->AddText(0, width / 2, 60, _("Construction"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Schlosserei group->AddText(2, width / 2, 100, _("Metalworks"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Werft group->AddText(4, 120, 140, _("Shipyard"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Wasserbüffel äh -gruppe ;-) group = tab->AddTab(LOADER.GetImageN("io", 92), _("Water"), TAB_WATER); // Bäckerei group->AddText(0, width / 2, 60, _("Bakery"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(1, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 60, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Brauerei group->AddText(2, width / 2, 100, _("Brewery"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(3, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 100, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Schweinezucht group->AddText(4, width / 2, 140, _("Pig farm"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(5, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 140, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); // Eselzucht group->AddText(6, width / 2, 180, _("Donkey breeding"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); (void) group->AddProgress(7, PROGRESS_BORDER_DISTANCE - tab->GetX(false), 180, width - 2 * PROGRESS_BORDER_DISTANCE, 20, TC_GREY, 139, 138, 10); UpdateSettings(); // Gruppe auswählen tab->SetSelection(0); // Timer für die Übertragung der Daten via Netzwerk AddTimer(1, 2000); // Hilfe AddImageButton(2, 15, height - 15 - 32, 32, 32, TC_GREY, LOADER.GetImageN("io", 21), _("Help")); // Standardbelegung AddImageButton(10, width - 15 - 32, height - 15 - 32, 32, 32, TC_GREY, LOADER.GetImageN("io", 191), _("Default")); }