QTfrontend/pages.cpp
branchexperimental3D
changeset 4343 19cbea33e4d2
parent 4006 45b63c2a694f
parent 4305 a020540e0ab8
child 4345 2c93d6a10869
equal deleted inserted replaced
4006:45b63c2a694f 4343:19cbea33e4d2
    98     {
    98     {
    99         QStringList Tips;
    99         QStringList Tips;
   100         Tips << tr("Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.", "Tips");
   100         Tips << tr("Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.", "Tips");
   101         Tips << tr("Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.", "Tips");
   101         Tips << tr("Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.", "Tips");
   102         Tips << tr("If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!", "Tips");
   102         Tips << tr("If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!", "Tips");
   103         Tips << tr("Want to save ropse? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!", "Tips");
   103         Tips << tr("Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!", "Tips");
   104         Tips << tr("If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.", "Tips");
   104         Tips << tr("If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.", "Tips");
   105         Tips << tr("You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.", "Tips");
   105         Tips << tr("You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.", "Tips");
   106         Tips << tr("By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.", "Tips");
   106         Tips << tr("By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.", "Tips");
   107         Tips << tr("Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!", "Tips");
   107         Tips << tr("Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!", "Tips");
   108         Tips << tr("Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!", "Tips");
   108         Tips << tr("Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!", "Tips");
   136         Tips << tr("If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.", "Tips");
   136         Tips << tr("If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.", "Tips");
   137         Tips << tr("The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.", "Tips");
   137         Tips << tr("The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.", "Tips");
   138         Tips << tr("The Flame Thrower is a weapon but it can be used for tunnel digging as well.", "Tips");
   138         Tips << tr("The Flame Thrower is a weapon but it can be used for tunnel digging as well.", "Tips");
   139         Tips << tr("Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.", "Tips");
   139         Tips << tr("Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.", "Tips");
   140         Tips << tr("Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.", "Tips");
   140         Tips << tr("Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.", "Tips");
   141         Tips << tr("Like Hedgewars? Become a fan on %1 or join our group at %2. You could follow us on %3 as well!", "Tips").arg("<a href=\"http://www.facebook.com/Hedgewars\">Facebook</a>").arg("<a href=\"http://steamcommunity.com/groups/hedgewars\">Steam Community</a>").arg("<a href=\"http://twitter.com/hedgewars\">Twitter</a>");
   141         Tips << tr("Like Hedgewars? Become a fan on %1 or follow us on %2!", "Tips").arg("<a href=\"http://www.facebook.com/Hedgewars\">Facebook</a>").arg("<a href=\"http://twitter.com/hedgewars\">Twitter</a>");
   142         Tips << tr("Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.", "Tips");
   142         Tips << tr("Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.", "Tips");
   143         Tips << tr("Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!", "Tips");
   143         Tips << tr("Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!", "Tips");
   144         // The following tip will require links to app store entries first.
   144         // The following tip will require links to app store entries first.
   145         //Tips << tr("Want to play Hedgewars any time? Grab the Mobile version for %1 and %2.", "Tips").arg("").arg("");
   145         //Tips << tr("Want to play Hedgewars any time? Grab the Mobile version for %1 and %2.", "Tips").arg("").arg("");
   146         Tips << tr("Keep your video card drivers up to date to avoid issues playing the game.", "Tips");
   146         Tips << tr("Keep your video card drivers up to date to avoid issues playing the game.", "Tips");
   147         //Tips << tr("", "Tips");
   147         //Tips << tr("", "Tips");
       
   148 #ifndef __APPLE__
       
   149         Tips << tr("You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.", "Tips");
       
   150 #endif
   148 #ifdef _WIN32
   151 #ifdef _WIN32
   149         Tips << tr("You can find your Hedgewars configuration files under \"My Documents\\Hedgewars\". Create backups or take the files with you, but don't edit them by hand.", "Tips");
   152         Tips << tr("You can find your Hedgewars configuration files under \"My Documents\\Hedgewars\". Create backups or take the files with you, but don't edit them by hand.", "Tips");
   150         Tips << tr("You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.", "Tips");
   153 #elif defined __APPLE__                                                                                                                     
   151 #else
   154         Tips << tr("You can find your Hedgewars configuration files under \"Library/Application Support/Hedgewars\" in your home directory. Create backups or take the files with you, but don't edit them by hand.", "Tips");
   152         Tips << tr("You can find your Hedgewars configuration files under \"Hedgewars\" in your home directory. Create backups or take the files with you, but don't edit them by hand.", "Tips");
   155 #else  
       
   156         Tips << tr("You can find your Hedgewars configuration files under \".hedgewars\" in your home directory. Create backups or take the files with you, but don't edit them by hand.", "Tips");
   153 #endif
   157 #endif
   154         mainNote->setText(QLabel::tr("Tip: ") + Tips[QTime(0, 0, 0).secsTo(QTime::currentTime()) % Tips.length()]);
   158         mainNote->setText(QLabel::tr("Tip: ") + Tips[QTime(0, 0, 0).secsTo(QTime::currentTime()) % Tips.length()]);
   155     }
   159     }
   156     else
   160     else
   157         mainNote->setText(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!"));
   161         mainNote->setText(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!"));
   609 #ifdef SPARKLE_ENABLED
   613 #ifdef SPARKLE_ENABLED
   610             CBAutoUpdate = new QCheckBox(groupMisc);
   614             CBAutoUpdate = new QCheckBox(groupMisc);
   611             CBAutoUpdate->setText(QCheckBox::tr("Check for updates at startup"));
   615             CBAutoUpdate->setText(QCheckBox::tr("Check for updates at startup"));
   612             MiscLayout->addWidget(CBAutoUpdate, 4, 0, 1, 2);
   616             MiscLayout->addWidget(CBAutoUpdate, 4, 0, 1, 2);
   613 #endif
   617 #endif
   614 #ifdef _WIN32
   618 #ifndef __APPLE__
   615             BtnAssociateFiles = new QPushButton(groupMisc);
   619             BtnAssociateFiles = new QPushButton(groupMisc);
   616             BtnAssociateFiles->setText(QPushButton::tr("Associate file extensions"));
   620             BtnAssociateFiles->setText(QPushButton::tr("Associate file extensions"));
   617             BtnAssociateFiles->setEnabled(!custom_data && !custom_config);
   621             BtnAssociateFiles->setEnabled(!custom_data && !custom_config);
   618             MiscLayout->addWidget(BtnAssociateFiles, 4, 0, 1, 2);
   622             MiscLayout->addWidget(BtnAssociateFiles, 4, 0, 1, 2);
   619 #endif
   623 #endif
  1022     BtnMultiplayer = addButton(":/res/Multiplayer.png", topLine, 1, true);
  1026     BtnMultiplayer = addButton(":/res/Multiplayer.png", topLine, 1, true);
  1023     BtnMultiplayer->setToolTip(tr("Multiplayer (play a hotseat game against your friends, or AI teams)"));
  1027     BtnMultiplayer->setToolTip(tr("Multiplayer (play a hotseat game against your friends, or AI teams)"));
  1024     topLine->addStretch();
  1028     topLine->addStretch();
  1025 
  1029 
  1026 
  1030 
  1027     BtnCampaignPage = addButton(":/res/SimpleGame.png", middleLine, 0, true);
  1031     BtnCampaignPage = addButton(":/res/Campaign.png", middleLine, 0, true);
  1028     BtnCampaignPage->setToolTip(tr("Campaign Mode (...). IN DEVELOPMENT"));
  1032     BtnCampaignPage->setToolTip(tr("Campaign Mode (...). IN DEVELOPMENT"));
       
  1033     BtnCampaignPage->setVisible(false);
  1029 
  1034 
  1030     BtnTrainPage = addButton(":/res/Trainings.png", middleLine, 1, true);
  1035     BtnTrainPage = addButton(":/res/Trainings.png", middleLine, 1, true);
  1031     BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT"));
  1036     BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT"));
  1032 
  1037 
  1033     BtnBack = addButton(":/res/Exit.png", bottomLine, 0, true);
  1038     BtnBack = addButton(":/res/Exit.png", bottomLine, 0, true);
  1159     
  1164     
  1160     QLabel * ruleLabel = new QLabel(this);
  1165     QLabel * ruleLabel = new QLabel(this);
  1161     ruleLabel->setText(tr("Rules:"));
  1166     ruleLabel->setText(tr("Rules:"));
  1162     CBRules = new QComboBox(this);
  1167     CBRules = new QComboBox(this);
  1163     CBRules->addItem(QComboBox::tr("Any"));
  1168     CBRules->addItem(QComboBox::tr("Any"));
  1164     CBRules->addItem(QComboBox::tr("Default"));
  1169     // not the most elegant solution but it works
  1165     CBRules->addItem(QComboBox::tr("Pro mode"));
  1170     ammoSchemeModel = new AmmoSchemeModel(this, NULL);
  1166     CBRules->addItem(QComboBox::tr("Shoppa"));
  1171     for (int i = 0; i < ammoSchemeModel->predefSchemesNames.count(); i++)
  1167     CBRules->addItem(QComboBox::tr("Basketball"));
  1172         CBRules->addItem(ammoSchemeModel->predefSchemesNames.at(i).toAscii().constData());
  1168     CBRules->addItem(QComboBox::tr("Minefield"));
       
  1169     CBRules->addItem(QComboBox::tr("Barrel mayhem"));
       
  1170     CBRules->addItem(QComboBox::tr("Tunnel hogs"));
       
  1171     filterLayout->addWidget(ruleLabel);
  1173     filterLayout->addWidget(ruleLabel);
  1172     filterLayout->addWidget(CBRules);
  1174     filterLayout->addWidget(CBRules);
  1173     filterLayout->addSpacing(30);
  1175     filterLayout->addSpacing(30);
  1174     
  1176     
  1175     QLabel * weaponLabel = new QLabel(this);
  1177     QLabel * weaponLabel = new QLabel(this);
  1176     weaponLabel->setText(tr("Weapons:"));
  1178     weaponLabel->setText(tr("Weapons:"));
  1177     CBWeapons = new QComboBox(this);
  1179     CBWeapons = new QComboBox(this);
  1178     CBWeapons->addItem(QComboBox::tr("Any"));
  1180     CBWeapons->addItem(QComboBox::tr("Any"));
  1179     CBWeapons->addItem(QComboBox::tr("Basketball"));
  1181     for (int i = 0; i < cDefaultAmmos.count(); i++) {
  1180     CBWeapons->addItem(QComboBox::tr("Crazy"));
  1182         QPair<QString,QString> ammo = cDefaultAmmos.at(i);
  1181     CBWeapons->addItem(QComboBox::tr("Default"));
  1183         CBWeapons->addItem(ammo.first.toAscii().constData());
  1182     CBWeapons->addItem(QComboBox::tr("Minefield"));
  1184     }
  1183     CBWeapons->addItem(QComboBox::tr("Pro mode"));
       
  1184     CBWeapons->addItem(QComboBox::tr("Shoppa"));
       
  1185     filterLayout->addWidget(weaponLabel);
  1185     filterLayout->addWidget(weaponLabel);
  1186     filterLayout->addWidget(CBWeapons);
  1186     filterLayout->addWidget(CBWeapons);
  1187     filterLayout->addSpacing(30);
  1187     filterLayout->addSpacing(30);
  1188 
  1188 
  1189     QLabel * searchLabel = new QLabel(this);
  1189     QLabel * searchLabel = new QLabel(this);
  1344         roomsList->setItem(r, 3, item);
  1344         roomsList->setItem(r, 3, item);
  1345 
  1345 
  1346         if(list[i + 5] == "+rnd+")
  1346         if(list[i + 5] == "+rnd+")
  1347         {
  1347         {
  1348             item = new QTableWidgetItem(tr("Random Map")); // selected map (is randomized)
  1348             item = new QTableWidgetItem(tr("Random Map")); // selected map (is randomized)
  1349             item->setIcon(QIcon(":/res/mapRandom.png"));
  1349 // FIXME - need real icons. Disabling until then
       
  1350 //            item->setIcon(QIcon(":/res/mapRandom.png"));
  1350         }
  1351         }
  1351         else if (list[i+5] == "+maze+")
  1352         else if (list[i+5] == "+maze+")
  1352         {
  1353         {
  1353             item = new QTableWidgetItem(tr("Random Maze"));
  1354             item = new QTableWidgetItem(tr("Random Maze"));
  1354             item->setIcon(QIcon(":/res/mapMaze.png"));
  1355 // FIXME - need real icons. Disabling until then
       
  1356 //            item->setIcon(QIcon(":/res/mapMaze.png"));
  1355         }
  1357         }
  1356         else
  1358         else
  1357         {
  1359         {
  1358             item = new QTableWidgetItem(list[i + 5]); // selected map
  1360             item = new QTableWidgetItem(list[i + 5]); // selected map
  1359             
  1361             
  1364                 item->setForeground(red);
  1366                 item->setForeground(red);
  1365                 item->setIcon(QIcon(":/res/mapMissing.png"));
  1367                 item->setIcon(QIcon(":/res/mapMissing.png"));
  1366             }
  1368             }
  1367             else
  1369             else
  1368             {
  1370             {
  1369                 // todo: mission icon?
  1371                // todo: mission icon?
  1370                 item->setIcon(QIcon(":/res/mapCustom.png"));
  1372 // FIXME - need real icons. Disabling until then
       
  1373 //               item->setIcon(QIcon(":/res/mapCustom.png"));
  1371             }
  1374             }
  1372         }
  1375         }
  1373         
  1376         
  1374         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  1377         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  1375         item->setToolTip(tr("Games may be played on precreated or randomized maps."));
  1378         item->setToolTip(tr("Games may be played on precreated or randomized maps."));
  1376         roomsList->setItem(r, 4, item);
  1379         roomsList->setItem(r, 4, item);
  1377 
  1380 
  1378         item = new QTableWidgetItem(list[i + 6].left(20)); // selected game scheme
  1381         item = new QTableWidgetItem(list[i + 6].left(24)); // selected game scheme
  1379         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  1382         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  1380         item->setToolTip(tr("The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism."));
  1383         item->setToolTip(tr("The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism."));
  1381         roomsList->setItem(r, 5, item);
  1384         roomsList->setItem(r, 5, item);
  1382 
  1385 
  1383         item = new QTableWidgetItem(list[i + 7].left(20)); // selected weapon scheme
  1386         item = new QTableWidgetItem(list[i + 7].left(24)); // selected weapon scheme
  1384         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  1387         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
  1385         item->setToolTip(tr("The Weapon Scheme defines available weapons and their ammunition count."));
  1388         item->setToolTip(tr("The Weapon Scheme defines available weapons and their ammunition count."));
  1386         roomsList->setItem(r, 6, item);
  1389         roomsList->setItem(r, 6, item);
  1387 
  1390 
  1388         if(!list[i + 1].compare(selection) && !selection.isEmpty())
  1391         if(!list[i + 1].compare(selection) && !selection.isEmpty())
  1543 
  1546 
  1544     TBW_invulnerable = new ToggleButtonWidget(gbGameModes, ":/res/btnInvulnerable.png");
  1547     TBW_invulnerable = new ToggleButtonWidget(gbGameModes, ":/res/btnInvulnerable.png");
  1545     TBW_invulnerable->setToolTip("<b>" + ToggleButtonWidget::tr("Invulnerable") + "</b>:<br />" + tr("All hogs have a personal forcefield"));
  1548     TBW_invulnerable->setToolTip("<b>" + ToggleButtonWidget::tr("Invulnerable") + "</b>:<br />" + tr("All hogs have a personal forcefield"));
  1546     glGMLayout->addWidget(TBW_invulnerable,1,1,1,1);
  1549     glGMLayout->addWidget(TBW_invulnerable,1,1,1,1);
  1547 
  1550 
  1548     TBW_mines = new ToggleButtonWidget(gbGameModes, ":/res/btnMines.png");
  1551     TBW_resethealth = new ToggleButtonWidget(gbGameModes, ":/res/btnResetHealth.png");
  1549     TBW_mines->setToolTip("<b>" + ToggleButtonWidget::tr("Add Mines") + "</b>:<br />" + tr("Enable random mines"));
  1552     TBW_resethealth->setToolTip("<b>" + ToggleButtonWidget::tr("Reset Health") + "</b>:<br />" + tr("All (living) hedgehogs are fully restored at the end of turn"));
  1550     glGMLayout->addWidget(TBW_mines,1,2,1,1);
  1553     glGMLayout->addWidget(TBW_resethealth,1,2,1,1);
  1551 
  1554 
  1552     TBW_vampiric = new ToggleButtonWidget(gbGameModes, ":/res/btnVampiric.png");
  1555     TBW_vampiric = new ToggleButtonWidget(gbGameModes, ":/res/btnVampiric.png");
  1553     TBW_vampiric->setToolTip("<b>" + ToggleButtonWidget::tr("Vampirism") + "</b>:<br />" + tr("Gain 80% of the damage you do back in health"));
  1556     TBW_vampiric->setToolTip("<b>" + ToggleButtonWidget::tr("Vampirism") + "</b>:<br />" + tr("Gain 80% of the damage you do back in health"));
  1554     glGMLayout->addWidget(TBW_vampiric,1,3,1,1);
  1557     glGMLayout->addWidget(TBW_vampiric,1,3,1,1);
  1555 
  1558 
  1599 
  1602 
  1600     TBW_perhogammo = new ToggleButtonWidget(gbGameModes, ":/res/btnPerHogAmmo.png");
  1603     TBW_perhogammo = new ToggleButtonWidget(gbGameModes, ":/res/btnPerHogAmmo.png");
  1601     TBW_perhogammo->setToolTip("<b>" + ToggleButtonWidget::tr("Per Hedgehog Ammo") + "</b>:<br />" + tr("Each hedgehog has its own ammo. It does not share with the team."));
  1604     TBW_perhogammo->setToolTip("<b>" + ToggleButtonWidget::tr("Per Hedgehog Ammo") + "</b>:<br />" + tr("Each hedgehog has its own ammo. It does not share with the team."));
  1602     glGMLayout->addWidget(TBW_perhogammo,4,0,1,1);
  1605     glGMLayout->addWidget(TBW_perhogammo,4,0,1,1);
  1603 
  1606 
       
  1607     TBW_nowind = new ToggleButtonWidget(gbGameModes, ":/res/btnNoWind.png");
       
  1608     TBW_nowind->setToolTip("<b>" + ToggleButtonWidget::tr("Disable Wind") + "</b>:<br />" + tr("You will not have to worry about wind anymore."));
       
  1609     glGMLayout->addWidget(TBW_nowind,4,1,1,1);
       
  1610 
       
  1611     TBW_morewind = new ToggleButtonWidget(gbGameModes, ":/res/btnMoreWind.png");
       
  1612     TBW_morewind->setToolTip("<b>" + ToggleButtonWidget::tr("More Wind") + "</b>:<br />" + tr("Wind will affect almost everything."));
       
  1613     glGMLayout->addWidget(TBW_morewind,4,2,1,1);
       
  1614 
  1604     // Right
  1615     // Right
  1605     QLabel * l;
  1616     QLabel * l;
  1606 
  1617 
  1607     l = new QLabel(gbBasicSettings);
  1618     l = new QLabel(gbBasicSettings);
  1608     l->setText(QLabel::tr("Damage Modifier"));
  1619     l->setText(QLabel::tr("Damage Modifier"));
  1610     glBSLayout->addWidget(l,0,0,1,1);
  1621     glBSLayout->addWidget(l,0,0,1,1);
  1611     l = new QLabel(gbBasicSettings);
  1622     l = new QLabel(gbBasicSettings);
  1612     l->setFixedSize(32,32);
  1623     l->setFixedSize(32,32);
  1613     l->setPixmap(QPixmap(":/res/iconDamage.png"));
  1624     l->setPixmap(QPixmap(":/res/iconDamage.png"));
  1614     glBSLayout->addWidget(l,0,1,1,1);
  1625     glBSLayout->addWidget(l,0,1,1,1);
  1615 
       
  1616     SB_DamageModifier = new QSpinBox(gbBasicSettings);
  1626     SB_DamageModifier = new QSpinBox(gbBasicSettings);
  1617     SB_DamageModifier->setRange(10, 300);
  1627     SB_DamageModifier->setRange(10, 300);
  1618     SB_DamageModifier->setValue(100);
  1628     SB_DamageModifier->setValue(100);
  1619     SB_DamageModifier->setSingleStep(25);
  1629     SB_DamageModifier->setSingleStep(25);
  1620     glBSLayout->addWidget(SB_DamageModifier,0,2,1,1);
  1630     glBSLayout->addWidget(SB_DamageModifier,0,2,1,1);
  1625     glBSLayout->addWidget(l,1,0,1,1);
  1635     glBSLayout->addWidget(l,1,0,1,1);
  1626     l = new QLabel(gbBasicSettings);
  1636     l = new QLabel(gbBasicSettings);
  1627     l->setFixedSize(32,32);
  1637     l->setFixedSize(32,32);
  1628     l->setPixmap(QPixmap(":/res/iconTime.png"));
  1638     l->setPixmap(QPixmap(":/res/iconTime.png"));
  1629     glBSLayout->addWidget(l,1,1,1,1);
  1639     glBSLayout->addWidget(l,1,1,1,1);
  1630 
       
  1631     SB_TurnTime = new QSpinBox(gbBasicSettings);
  1640     SB_TurnTime = new QSpinBox(gbBasicSettings);
  1632     SB_TurnTime->setRange(1, 9999);
  1641     SB_TurnTime->setRange(1, 9999);
  1633     SB_TurnTime->setValue(45);
  1642     SB_TurnTime->setValue(45);
  1634     SB_TurnTime->setSingleStep(15);
  1643     SB_TurnTime->setSingleStep(15);
  1635     glBSLayout->addWidget(SB_TurnTime,1,2,1,1);
  1644     glBSLayout->addWidget(SB_TurnTime,1,2,1,1);
  1640     glBSLayout->addWidget(l,2,0,1,1);
  1649     glBSLayout->addWidget(l,2,0,1,1);
  1641     l = new QLabel(gbBasicSettings);
  1650     l = new QLabel(gbBasicSettings);
  1642     l->setFixedSize(32,32);
  1651     l->setFixedSize(32,32);
  1643     l->setPixmap(QPixmap(":/res/iconHealth.png"));
  1652     l->setPixmap(QPixmap(":/res/iconHealth.png"));
  1644     glBSLayout->addWidget(l,2,1,1,1);
  1653     glBSLayout->addWidget(l,2,1,1,1);
  1645 
       
  1646     SB_InitHealth = new QSpinBox(gbBasicSettings);
  1654     SB_InitHealth = new QSpinBox(gbBasicSettings);
  1647     SB_InitHealth->setRange(50, 200);
  1655     SB_InitHealth->setRange(50, 200);
  1648     SB_InitHealth->setValue(100);
  1656     SB_InitHealth->setValue(100);
  1649     SB_InitHealth->setSingleStep(25);
  1657     SB_InitHealth->setSingleStep(25);
  1650     glBSLayout->addWidget(SB_InitHealth,2,2,1,1);
  1658     glBSLayout->addWidget(SB_InitHealth,2,2,1,1);
  1655     glBSLayout->addWidget(l,3,0,1,1);
  1663     glBSLayout->addWidget(l,3,0,1,1);
  1656     l = new QLabel(gbBasicSettings);
  1664     l = new QLabel(gbBasicSettings);
  1657     l->setFixedSize(32,32);
  1665     l->setFixedSize(32,32);
  1658     l->setPixmap(QPixmap(":/res/iconSuddenDeath.png"));
  1666     l->setPixmap(QPixmap(":/res/iconSuddenDeath.png"));
  1659     glBSLayout->addWidget(l,3,1,1,1);
  1667     glBSLayout->addWidget(l,3,1,1,1);
  1660 
       
  1661     SB_SuddenDeath = new QSpinBox(gbBasicSettings);
  1668     SB_SuddenDeath = new QSpinBox(gbBasicSettings);
  1662     SB_SuddenDeath->setRange(0, 50);
  1669     SB_SuddenDeath->setRange(0, 50);
  1663     SB_SuddenDeath->setValue(15);
  1670     SB_SuddenDeath->setValue(15);
  1664     SB_SuddenDeath->setSingleStep(3);
  1671     SB_SuddenDeath->setSingleStep(3);
  1665     glBSLayout->addWidget(SB_SuddenDeath,3,2,1,1);
  1672     glBSLayout->addWidget(SB_SuddenDeath,3,2,1,1);
  1666 
  1673 
  1667     l = new QLabel(gbBasicSettings);
  1674     l = new QLabel(gbBasicSettings);
       
  1675     l->setText(QLabel::tr("Sudden Death Water Rise"));
       
  1676     l->setWordWrap(true);
       
  1677     glBSLayout->addWidget(l,4,0,1,1);
       
  1678     l = new QLabel(gbBasicSettings);
       
  1679     l->setFixedSize(32,32);
       
  1680     l->setPixmap(QPixmap(":/res/iconSuddenDeath.png")); // TODO: icon
       
  1681     glBSLayout->addWidget(l,4,1,1,1);
       
  1682     SB_WaterRise = new QSpinBox(gbBasicSettings);
       
  1683     SB_WaterRise->setRange(0, 100);
       
  1684     SB_WaterRise->setValue(47);
       
  1685     SB_WaterRise->setSingleStep(5);
       
  1686     glBSLayout->addWidget(SB_WaterRise,4,2,1,1);
       
  1687 
       
  1688     l = new QLabel(gbBasicSettings);
       
  1689     l->setText(QLabel::tr("Sudden Death Health Decrease"));
       
  1690     l->setWordWrap(true);
       
  1691     glBSLayout->addWidget(l,5,0,1,1);
       
  1692     l = new QLabel(gbBasicSettings);
       
  1693     l->setFixedSize(32,32);
       
  1694     l->setPixmap(QPixmap(":/res/iconSuddenDeath.png")); // TODO: icon
       
  1695     glBSLayout->addWidget(l,5,1,1,1);
       
  1696     SB_HealthDecrease = new QSpinBox(gbBasicSettings);
       
  1697     SB_HealthDecrease->setRange(0, 100);
       
  1698     SB_HealthDecrease->setValue(5);
       
  1699     SB_HealthDecrease->setSingleStep(1);
       
  1700     glBSLayout->addWidget(SB_HealthDecrease,5,2,1,1);
       
  1701 
       
  1702     l = new QLabel(gbBasicSettings);
  1668     l->setText(QLabel::tr("Crate Drops"));
  1703     l->setText(QLabel::tr("Crate Drops"));
  1669     l->setWordWrap(true);
  1704     l->setWordWrap(true);
  1670     glBSLayout->addWidget(l,4,0,1,1);
  1705     glBSLayout->addWidget(l,6,0,1,1);
  1671     l = new QLabel(gbBasicSettings);
  1706     l = new QLabel(gbBasicSettings);
  1672     l->setFixedSize(32,32);
  1707     l->setFixedSize(32,32);
  1673     l->setPixmap(QPixmap(":/res/iconBox.png"));
  1708     l->setPixmap(QPixmap(":/res/iconBox.png"));
  1674     glBSLayout->addWidget(l,4,1,1,1);
  1709     glBSLayout->addWidget(l,6,1,1,1);
  1675 
       
  1676     SB_CaseProb = new FreqSpinBox(gbBasicSettings);
  1710     SB_CaseProb = new FreqSpinBox(gbBasicSettings);
  1677     SB_CaseProb->setRange(0, 9);
  1711     SB_CaseProb->setRange(0, 9);
  1678     SB_CaseProb->setValue(5);
  1712     SB_CaseProb->setValue(5);
  1679     glBSLayout->addWidget(SB_CaseProb,4,2,1,1);
  1713     glBSLayout->addWidget(SB_CaseProb,6,2,1,1);
       
  1714 
       
  1715     l = new QLabel(gbBasicSettings);
       
  1716     l->setText(QLabel::tr("% Health Crates"));
       
  1717     l->setWordWrap(true);
       
  1718     glBSLayout->addWidget(l,7,0,1,1);
       
  1719     l = new QLabel(gbBasicSettings);
       
  1720     l->setFixedSize(32,32);
       
  1721     l->setPixmap(QPixmap(":/res/iconHealth.png")); // TODO: icon
       
  1722     glBSLayout->addWidget(l,7,1,1,1);
       
  1723     SB_HealthCrates = new QSpinBox(gbBasicSettings);
       
  1724     SB_HealthCrates->setRange(0, 100);
       
  1725     SB_HealthCrates->setValue(35);
       
  1726     SB_HealthCrates->setSingleStep(5);
       
  1727     glBSLayout->addWidget(SB_HealthCrates,7,2,1,1);
       
  1728 
       
  1729     l = new QLabel(gbBasicSettings);
       
  1730     l->setText(QLabel::tr("Health in Crates"));
       
  1731     l->setWordWrap(true);
       
  1732     glBSLayout->addWidget(l,8,0,1,1);
       
  1733     l = new QLabel(gbBasicSettings);
       
  1734     l->setFixedSize(32,32);
       
  1735     l->setPixmap(QPixmap(":/res/iconHealth.png")); // TODO: icon
       
  1736     glBSLayout->addWidget(l,8,1,1,1);
       
  1737     SB_CrateHealth = new QSpinBox(gbBasicSettings);
       
  1738     SB_CrateHealth->setRange(0, 200);
       
  1739     SB_CrateHealth->setValue(25);
       
  1740     SB_CrateHealth->setSingleStep(5);
       
  1741     glBSLayout->addWidget(SB_CrateHealth,8,2,1,1);
  1680 
  1742 
  1681     l = new QLabel(gbBasicSettings);
  1743     l = new QLabel(gbBasicSettings);
  1682     l->setText(QLabel::tr("Mines Time"));
  1744     l->setText(QLabel::tr("Mines Time"));
  1683     l->setWordWrap(true);
  1745     l->setWordWrap(true);
  1684     glBSLayout->addWidget(l,5,0,1,1);
  1746     glBSLayout->addWidget(l,9,0,1,1);
  1685     l = new QLabel(gbBasicSettings);
  1747     l = new QLabel(gbBasicSettings);
  1686     l->setFixedSize(32,32);
  1748     l->setFixedSize(32,32);
  1687     l->setPixmap(QPixmap(":/res/iconTime.png")); // TODO: icon
  1749     l->setPixmap(QPixmap(":/res/iconTime.png")); // TODO: icon
  1688     glBSLayout->addWidget(l,5,1,1,1);
  1750     glBSLayout->addWidget(l,9,1,1,1);
  1689     SB_MinesTime = new QSpinBox(gbBasicSettings);
  1751     SB_MinesTime = new QSpinBox(gbBasicSettings);
  1690     SB_MinesTime->setRange(-1, 3);
  1752     SB_MinesTime->setRange(-1, 5);
  1691     SB_MinesTime->setValue(3);
  1753     SB_MinesTime->setValue(3);
  1692     SB_MinesTime->setSingleStep(1);
  1754     SB_MinesTime->setSingleStep(1);
  1693     SB_MinesTime->setSpecialValueText(tr("Random"));
  1755     SB_MinesTime->setSpecialValueText(tr("Random"));
  1694     SB_MinesTime->setSuffix(" "+ tr("Seconds"));
  1756     SB_MinesTime->setSuffix(" "+ tr("Seconds"));
  1695     glBSLayout->addWidget(SB_MinesTime,5,2,1,1);
  1757     glBSLayout->addWidget(SB_MinesTime,9,2,1,1);
  1696 
  1758 
  1697     l = new QLabel(gbBasicSettings);
  1759     l = new QLabel(gbBasicSettings);
  1698     l->setText(QLabel::tr("Mines"));
  1760     l->setText(QLabel::tr("Mines"));
  1699     l->setWordWrap(true);
  1761     l->setWordWrap(true);
  1700     glBSLayout->addWidget(l,6,0,1,1);
  1762     glBSLayout->addWidget(l,10,0,1,1);
  1701     l = new QLabel(gbBasicSettings);
  1763     l = new QLabel(gbBasicSettings);
  1702     l->setFixedSize(32,32);
  1764     l->setFixedSize(32,32);
  1703     l->setPixmap(QPixmap(":/res/iconMine.png")); // TODO: icon
  1765     l->setPixmap(QPixmap(":/res/iconMine.png")); // TODO: icon
  1704     glBSLayout->addWidget(l,6,1,1,1);
  1766     glBSLayout->addWidget(l,10,1,1,1);
  1705     SB_Mines = new QSpinBox(gbBasicSettings);
  1767     SB_Mines = new QSpinBox(gbBasicSettings);
  1706     SB_Mines->setRange(1, 80);
  1768     SB_Mines->setRange(0, 80);
  1707     SB_Mines->setValue(1);
  1769     SB_Mines->setValue(0);
  1708     SB_Mines->setSingleStep(5);
  1770     SB_Mines->setSingleStep(5);
  1709     glBSLayout->addWidget(SB_Mines,6,2,1,1);
  1771     glBSLayout->addWidget(SB_Mines,10,2,1,1);
  1710 
  1772 
  1711     l = new QLabel(gbBasicSettings);
  1773     l = new QLabel(gbBasicSettings);
  1712     l->setText(QLabel::tr("% Dud Mines"));
  1774     l->setText(QLabel::tr("% Dud Mines"));
  1713     l->setWordWrap(true);
  1775     l->setWordWrap(true);
  1714     glBSLayout->addWidget(l,7,0,1,1);
  1776     glBSLayout->addWidget(l,11,0,1,1);
  1715     l = new QLabel(gbBasicSettings);
  1777     l = new QLabel(gbBasicSettings);
  1716     l->setFixedSize(32,32);
  1778     l->setFixedSize(32,32);
  1717     l->setPixmap(QPixmap(":/res/iconDud.png"));
  1779     l->setPixmap(QPixmap(":/res/iconDud.png"));
  1718     glBSLayout->addWidget(l,7,1,1,1);
  1780     glBSLayout->addWidget(l,11,1,1,1);
  1719     SB_MineDuds = new QSpinBox(gbBasicSettings);
  1781     SB_MineDuds = new QSpinBox(gbBasicSettings);
  1720     SB_MineDuds->setRange(0, 100);
  1782     SB_MineDuds->setRange(0, 100);
  1721     SB_MineDuds->setValue(0);
  1783     SB_MineDuds->setValue(0);
  1722     SB_MineDuds->setSingleStep(5);
  1784     SB_MineDuds->setSingleStep(5);
  1723     glBSLayout->addWidget(SB_MineDuds,7,2,1,1);
  1785     glBSLayout->addWidget(SB_MineDuds,11,2,1,1);
  1724 
  1786 
  1725 
  1787 
  1726     l = new QLabel(gbBasicSettings);
  1788     l = new QLabel(gbBasicSettings);
  1727     l->setText(QLabel::tr("Explosives"));
  1789     l->setText(QLabel::tr("Explosives"));
  1728     l->setWordWrap(true);
  1790     l->setWordWrap(true);
  1729     glBSLayout->addWidget(l,8,0,1,1);
  1791     glBSLayout->addWidget(l,12,0,1,1);
  1730     l = new QLabel(gbBasicSettings);
  1792     l = new QLabel(gbBasicSettings);
  1731     l->setFixedSize(32,32);
  1793     l->setFixedSize(32,32);
  1732     l->setPixmap(QPixmap(":/res/iconDamage.png"));
  1794     l->setPixmap(QPixmap(":/res/iconDamage.png"));
  1733     glBSLayout->addWidget(l,8,1,1,1);
  1795     glBSLayout->addWidget(l,12,1,1,1);
  1734     SB_Explosives = new QSpinBox(gbBasicSettings);
  1796     SB_Explosives = new QSpinBox(gbBasicSettings);
  1735     SB_Explosives->setRange(0, 40);
  1797     SB_Explosives->setRange(0, 40);
  1736     SB_Explosives->setValue(0);
  1798     SB_Explosives->setValue(0);
  1737     SB_Explosives->setSingleStep(1);
  1799     SB_Explosives->setSingleStep(1);
  1738     glBSLayout->addWidget(SB_Explosives,8,2,1,1);
  1800     glBSLayout->addWidget(SB_Explosives,12,2,1,1);
  1739 
  1801 
  1740 
  1802 
  1741     l = new QLabel(gbBasicSettings);
  1803     l = new QLabel(gbBasicSettings);
  1742     l->setText(QLabel::tr("Scheme Name:"));
  1804     l->setText(QLabel::tr("Scheme Name:"));
  1743 
  1805 
  1772     mapper->addMapping(TBW_solid, 3);
  1834     mapper->addMapping(TBW_solid, 3);
  1773     mapper->addMapping(TBW_border, 4);
  1835     mapper->addMapping(TBW_border, 4);
  1774     mapper->addMapping(TBW_lowGravity, 5);
  1836     mapper->addMapping(TBW_lowGravity, 5);
  1775     mapper->addMapping(TBW_laserSight, 6);
  1837     mapper->addMapping(TBW_laserSight, 6);
  1776     mapper->addMapping(TBW_invulnerable, 7);
  1838     mapper->addMapping(TBW_invulnerable, 7);
  1777     mapper->addMapping(TBW_mines, 8);
  1839     mapper->addMapping(TBW_resethealth, 8);
  1778     mapper->addMapping(TBW_vampiric, 9);
  1840     mapper->addMapping(TBW_vampiric, 9);
  1779     mapper->addMapping(TBW_karma, 10);
  1841     mapper->addMapping(TBW_karma, 10);
  1780     mapper->addMapping(TBW_artillery, 11);
  1842     mapper->addMapping(TBW_artillery, 11);
  1781     mapper->addMapping(TBW_randomorder, 12);
  1843     mapper->addMapping(TBW_randomorder, 12);
  1782     mapper->addMapping(TBW_king, 13);
  1844     mapper->addMapping(TBW_king, 13);
  1786     mapper->addMapping(TBW_disablelandobjects, 17);
  1848     mapper->addMapping(TBW_disablelandobjects, 17);
  1787     mapper->addMapping(TBW_aisurvival, 18);
  1849     mapper->addMapping(TBW_aisurvival, 18);
  1788     mapper->addMapping(TBW_infattack, 19);
  1850     mapper->addMapping(TBW_infattack, 19);
  1789     mapper->addMapping(TBW_resetweps, 20);
  1851     mapper->addMapping(TBW_resetweps, 20);
  1790     mapper->addMapping(TBW_perhogammo, 21);
  1852     mapper->addMapping(TBW_perhogammo, 21);
  1791     mapper->addMapping(SB_DamageModifier, 22);
  1853     mapper->addMapping(TBW_nowind, 22);
  1792     mapper->addMapping(SB_TurnTime, 23);
  1854     mapper->addMapping(TBW_morewind, 23);
  1793     mapper->addMapping(SB_InitHealth, 24);
  1855     mapper->addMapping(SB_DamageModifier, 24);
  1794     mapper->addMapping(SB_SuddenDeath, 25);
  1856     mapper->addMapping(SB_TurnTime, 25);
  1795     mapper->addMapping(SB_CaseProb, 26);
  1857     mapper->addMapping(SB_InitHealth, 26);
  1796     mapper->addMapping(SB_MinesTime, 27);
  1858     mapper->addMapping(SB_SuddenDeath, 27);
  1797     mapper->addMapping(SB_Mines, 28);
  1859     mapper->addMapping(SB_CaseProb, 28);
  1798     mapper->addMapping(SB_MineDuds, 29);
  1860     mapper->addMapping(SB_MinesTime, 29);
  1799     mapper->addMapping(SB_Explosives, 30);
  1861     mapper->addMapping(SB_Mines, 30);
       
  1862     mapper->addMapping(SB_MineDuds, 31);
       
  1863     mapper->addMapping(SB_Explosives, 32);
       
  1864     mapper->addMapping(SB_HealthCrates, 33);
       
  1865     mapper->addMapping(SB_CrateHealth, 34);
       
  1866     mapper->addMapping(SB_WaterRise, 35);
       
  1867     mapper->addMapping(SB_HealthDecrease, 36);
  1800 
  1868 
  1801     mapper->toFirst();
  1869     mapper->toFirst();
  1802 }
  1870 }
  1803 
  1871 
  1804 void PageScheme::newRow()
  1872 void PageScheme::newRow()