void CharCreateDialog::fontChanged() { Window::fontChanged(); if (mWidgets.size() > 0) clear(); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mNameLabel, 1); place(1, 0, mNameField, 6); place(0, 1, mHairStyleLabel, 1); place(1, 1, mPrevHairStyleButton); place(2, 1, mBeingBox, 1, 8).setPadding(3); place(3, 1, mNextHairStyleButton); place(0, 2, mHairColorLabel, 1); place(1, 2, mPrevHairColorButton); place(3, 2, mNextHairColorButton); place.getCell().matchColWidth(0, 2); place = getPlacer(0, 2); place(4, 0, mCancelButton); place(5, 0, mCreateButton); reflowLayout(225, 0); restoreFocus(); }
NpcIntegerDialog::NpcIntegerDialog(): Window(_("NPC Input")) { setWindowName("NPCInput"); saveVisibility(false); mValueField = new IntTextField(0, "ok", this); okButton = new Button(_("OK"), "ok", this); cancelButton = new Button(_("Cancel"), "cancel", this); resetButton = new Button(_("Reset"), "reset", this); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mValueField, 3); place.getCell().matchColWidth(1, 0); place = getPlacer(0, 1); place(0, 0, resetButton); place(2, 0, cancelButton); place(3, 0, okButton); setDefaultSize(175, 75, ImageRect::CENTER); loadWindowState(); }
CharSelectDialog::CharSelectDialog(LoginData *loginData): Window(_("Account and Character Management")), mLocked(false), mUnregisterButton(0), mChangeEmailButton(0), mCharacterEntries(0), mLoginData(loginData), mCharHandler(Net::getCharHandler()) { setCloseButton(false); mAccountNameLabel = new Label(loginData->username); mSwitchLoginButton = new Button(_("Switch Login"), "switch", this); mChangePasswordButton = new Button(_("Change Password"), "change_password", this); int optionalActions = Net::getLoginHandler()->supportedOptionalActions(); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mAccountNameLabel, 2); place(0, 1, mSwitchLoginButton); if (optionalActions & Net::LoginHandler::Unregister) { mUnregisterButton = new Button(_("Unregister"), "unregister", this); place(3, 1, mUnregisterButton); } place(0, 2, mChangePasswordButton); if (optionalActions & Net::LoginHandler::ChangeEmail) { mChangeEmailButton = new Button(_("Change Email"), "change_email", this); place(3, 2, mChangeEmailButton); } place = getPlacer(0, 1); for (int i = 0; i < (int)mLoginData->characterSlots; i++) { mCharacterEntries.push_back(new CharacterDisplay(this)); place(i % SLOTS_PER_ROW, (int)i / SLOTS_PER_ROW, mCharacterEntries[i]); } reflowLayout(); addKeyListener(this); center(); setVisible(true); Net::getCharHandler()->setCharSelectDialog(this); mCharacterEntries[0]->requestFocus(); }
CharCreateDialog::CharCreateDialog(Window *parent, int slot, Gender gender): Window(_("Create Character"), true, parent), mSlot(slot) { mPlayer = new Player(0, 0, NULL); mPlayer->setGender(gender); int numberOfHairColors = ColorDB::size(); mPlayer->setHairStyle(rand() % mPlayer->getNumOfHairstyles(), rand() % numberOfHairColors); mNameField = new TextField(""); mNameLabel = new Label(_("Name:")); mNextHairColorButton = new Button(">", "nextcolor", this); mPrevHairColorButton = new Button("<", "prevcolor", this); mHairColorLabel = new Label(_("Hair Color:")); mNextHairStyleButton = new Button(">", "nextstyle", this); mPrevHairStyleButton = new Button("<", "prevstyle", this); mHairStyleLabel = new Label(_("Hair Style:")); mCreateButton = new Button(_("Create"), "create", this); mCancelButton = new Button(_("Cancel"), "cancel", this); mBeingBox = new BeingBox(mPlayer); mBeingBox->setWidth(74); mNameField->setActionEventId("create"); mNameField->addActionListener(this); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mNameLabel, 1); place(1, 0, mNameField, 6); place(0, 1, mHairStyleLabel, 1); place(1, 1, mPrevHairStyleButton); place(2, 1, mBeingBox, 1, 8).setPadding(3); place(3, 1, mNextHairStyleButton); place(0, 2, mHairColorLabel, 1); place(1, 2, mPrevHairColorButton); place(3, 2, mNextHairColorButton); place.getCell().matchColWidth(0, 2); place = getPlacer(0, 2); place(4, 0, mCancelButton); place(5, 0, mCreateButton); reflowLayout(225, 0); setLocationRelativeTo(getParent()); setVisible(true); mNameField->requestFocus(); }
QuitDialog::QuitDialog(QuitDialog** pointerToMe): Window(_("Quit"), true, NULL), mMyPointer(pointerToMe) { mForceQuit = new RadioButton(_("Quit"), "quitdialog"); mLogoutQuit = new RadioButton(_("Quit"), "quitdialog"); mSwitchAccountServer = new RadioButton(_("Switch server"), "quitdialog"); mSwitchCharacter = new RadioButton(_("Switch character"), "quitdialog"); mOkButton = new Button(_("OK"), "ok", this); mCancelButton = new Button(_("Cancel"), "cancel", this); addKeyListener(this); ContainerPlacer place = getPlacer(0, 0); const State state = Client::getState(); // All states, when we're not logged in to someone. if (state == STATE_CHOOSE_SERVER || state == STATE_CONNECT_SERVER || state == STATE_LOGIN || state == STATE_LOGIN_ATTEMPT || state == STATE_UPDATE || state == STATE_LOAD_DATA) { placeOption(place, mForceQuit); } else { // Only added if we are connected to an accountserver or gameserver placeOption(place, mLogoutQuit); placeOption(place, mSwitchAccountServer); // Only added if we are connected to a gameserver if (state == STATE_GAME) placeOption(place, mSwitchCharacter); } mOptions[0]->setSelected(true); place = getPlacer(0, 1); place(1, 0, mOkButton); place(2, 0, mCancelButton); reflowLayout(150, 0); setLocationRelativeTo(getParent()); setVisible(true); requestModalFocus(); mOkButton->requestFocus(); }
CharSelectDialog::CharSelectDialog(LockedArray<LocalPlayer*> *charInfo, Gender gender): Window(_("Select Character")), mCharInfo(charInfo), mGender(gender), mCharSelected(false) { // Control that shows the Player mBeingBox = new BeingBox(); mBeingBox->setWidth(74); mNameLabel = new Label(strprintf(_("Name: %s"), "")); mLevelLabel = new Label(strprintf(_("Level: %d"), 0)); mJobLevelLabel = new Label(strprintf(_("Job Level: %d"), 0)); mMoneyLabel = new Label(strprintf(_("Money: %d"), 0)); const std::string tempString = getFont()->getWidth(_("New")) < getFont()->getWidth(_("Delete")) ? _("Delete") : _("New"); mPreviousButton = new Button(_("Previous"), "previous", this); mNextButton = new Button(_("Next"), "next", this); mNewDelCharButton = new Button(tempString, "newdel", this); mSelectButton = new Button(_("OK"), "ok", this); mCancelButton = new Button(_("Cancel"), "cancel", this); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mBeingBox, 1, 6).setPadding(3); place(1, 0, mNewDelCharButton); place(1, 1, mNameLabel, 5); place(1, 2, mLevelLabel, 5); place(1, 3, mJobLevelLabel, 5); place(1, 4, mMoneyLabel, 5); place.getCell().matchColWidth(1, 4); place = getPlacer(0, 2); place(0, 0, mPreviousButton); place(1, 0, mNextButton); place(4, 0, mCancelButton); place(5, 0, mSelectButton); reflowLayout(250, 0); setLocationRelativeTo(getParent()); setVisible(true); mSelectButton->requestFocus(); updatePlayerInfo(); }
MailWindow::MailWindow() : // TRANSLATORS: mail window name Window(_("Mail"), Modal_false, nullptr, "mail.xml"), ActionListener(), mMessages(), mMessagesMap(), mMailModel(new ExtendedNamesModel), mListBox(CREATEWIDGETR(ExtendedListBox, this, mMailModel, "extendedlistbox.xml")), mListScrollArea(new ScrollArea(this, mListBox, fromBool(getOptionBool("showlistbackground"), Opaque), "mail_listbackground.xml")), // TRANSLATORS: mail window button mRefreshButton(new Button(this, _("Refresh"), "refresh", this)), // TRANSLATORS: mail window button mNewButton(new Button(this, _("New"), "new", this)), // TRANSLATORS: mail window button mDeleteButton(new Button(this, _("Delete"), "delete", this)), // TRANSLATORS: mail window button mReturnButton(new Button(this, _("Return"), "return", this)), // TRANSLATORS: mail window button mOpenButton(new Button(this, _("Open"), "open", this)) { setWindowName("Mail"); setCloseButton(true); setResizable(true); setCloseButton(true); setSaveVisible(true); setStickyButtonLock(true); if (setupWindow) setupWindow->registerWindowForReset(this); setDefaultSize(310, 180, ImagePosition::CENTER); setMinWidth(310); setMinHeight(250); center(); mListScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); ContainerPlacer placer; placer = getPlacer(0, 0); placer(0, 0, mListScrollArea, 4, 5).setPadding(3); placer(4, 0, mRefreshButton); placer(4, 1, mOpenButton); placer(4, 2, mNewButton); placer(4, 3, mDeleteButton); placer(4, 4, mReturnButton); Layout &layout = getLayout(); layout.setRowHeight(0, LayoutType::SET); loadWindowState(); enableVisibleSound(true); }
BankWindow::BankWindow() : // TRANSLATORS: bank window name Window(_("Bank"), Modal_false, nullptr, "bank.xml"), ActionListener(), BankListener(), mBankMoneyLabel(new Label(this, strprintf( // TRANSLATORS: bank window money label _("Money in bank: %s"), " "))), mInputMoneyTextField(new IntTextField(this, 0, 0, 2147483647)), // TRANSLATORS: bank window button mWithdrawButton(new Button(this, _("Withdraw"), "withdraw", this)), // TRANSLATORS: bank window button mDepositButton(new Button(this, _("Deposit"), "deposit", this)) { setWindowName("Bank"); setCloseButton(true); if (setupWindow) setupWindow->registerWindowForReset(this); mBankMoneyLabel->adjustSize(); ContainerPlacer placer = getPlacer(0, 0); placer(0, 0, mBankMoneyLabel, 7); placer(0, 1, mInputMoneyTextField, 10); placer(0, 2, mDepositButton, 5); placer(5, 2, mWithdrawButton, 5); setContentSize(300, 100); setDefaultSize(300, 100, ImagePosition::CENTER, 0, 0); center(); setDefaultSize(); loadWindowState(); reflowLayout(300); enableVisibleSound(true); }
ShopWindow::ShopWindow() : // TRANSLATORS: shop window name Window(_("Personal Shop"), Modal_false, nullptr, "shop.xml"), #ifdef EATHENA_SUPPORT VendingModeListener(), VendingSlotsListener(), BuyingStoreModeListener(), BuyingStoreSlotsListener(), #endif ActionListener(), SelectionListener(), // TRANSLATORS: shop window button mCloseButton(new Button(this, _("Close"), "close", this)), mBuyShopItems(new ShopItems), mSellShopItems(new ShopItems), mTradeItem(nullptr), mBuyShopItemList(CREATEWIDGETR(ShopListBox, this, mBuyShopItems, mBuyShopItems)), mSellShopItemList(CREATEWIDGETR(ShopListBox, this, mSellShopItems, mSellShopItems)), mCurrentShopItemList(nullptr), mScrollArea(new ScrollArea(this, mBuyShopItemList, getOptionBool("showbuybackground"), "shop_buy_background.xml")), // TRANSLATORS: shop window label mAddButton(new Button(this, _("Add"), "add", this)), // TRANSLATORS: shop window label mDeleteButton(new Button(this, _("Delete"), "delete", this)), mAnnounceButton(nullptr), mPublishButton(nullptr), mRenameButton(nullptr), mAnnounceLinks(nullptr), mTabs(nullptr), mAcceptPlayer(), mTradeNick(), mSellShopName(serverConfig.getStringValue("sellShopName")), mSelectedItem(-1), mAnnonceTime(0), mLastRequestTimeList(0), mLastRequestTimeItem(0), mRandCounter(0), mTradeMoney(0), mSellShopSize(0), mBuyShopSize(0), isBuySelected(true), mHaveVending(serverFeatures->haveVending()), mEnableBuyingStore(false), mEnableVending(false) { setWindowName("Personal Shop"); setResizable(true); setCloseButton(true); setStickyButtonLock(true); setMinWidth(300); setMinHeight(220); if (mainGraphics->mWidth > 600) setDefaultSize(500, 300, ImagePosition::CENTER); else setDefaultSize(380, 300, ImagePosition::CENTER); if (setupWindow) setupWindow->registerWindowForReset(this); const int size = config.getIntValue("fontSize") + getOption("tabHeightAdjust", 16); mTabs = new TabStrip(this, "shop", size); mTabs->addActionListener(this); mTabs->setActionEventId("tab_"); // TRANSLATORS: shop window tab name mTabs->addButton(_("Buy"), "buy", true); // TRANSLATORS: shop window tab name mTabs->addButton(_("Sell"), "sell", false); loadList(); mBuyShopItemList->setPriceCheck(false); mSellShopItemList->setPriceCheck(false); mScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); mBuyShopItemList->addSelectionListener(this); mSellShopItemList->addSelectionListener(this); ContainerPlacer placer; placer = getPlacer(0, 0); placer(0, 0, mTabs, 8).setPadding(3); if (mHaveVending) { // TRANSLATORS: shop window button mPublishButton = new Button(this, _("Publish"), "publish", this); // TRANSLATORS: shop window button mRenameButton = new Button(this, _("Rename"), "rename", this); placer(2, 6, mPublishButton); placer(3, 6, mRenameButton); } else { // TRANSLATORS: shop window button mAnnounceButton = new Button(this, _("Announce"), "announce", this); // TRANSLATORS: shop window checkbox mAnnounceLinks = new CheckBox(this, _("Show links in announce"), false, this, "link announce"); placer(2, 6, mAnnounceButton); placer(0, 7, mAnnounceLinks, 7); } placer(0, 1, mScrollArea, 8, 5).setPadding(3); placer(0, 6, mAddButton); placer(1, 6, mDeleteButton); placer(7, 6, mCloseButton); Layout &layout = getLayout(); layout.setRowHeight(0, LayoutType::SET); center(); loadWindowState(); #ifdef EATHENA_SUPPORT updateShopName(); #endif instances.push_back(this); }
QuitDialog::QuitDialog(QuitDialog **const pointerToMe) : // TRANSLATORS: quit dialog name Window(_("Quit"), true, nullptr, "quit.xml"), ActionListener(), KeyListener(), mOptions(), // TRANSLATORS: quit dialog button mLogoutQuit(new RadioButton(this, _("Quit"), "quitdialog")), // TRANSLATORS: quit dialog button mForceQuit(new RadioButton(this, _("Quit"), "quitdialog")), mSwitchAccountServer(new RadioButton(this, // TRANSLATORS: quit dialog button _("Switch server"), "quitdialog")), mSwitchCharacter(new RadioButton(this, // TRANSLATORS: quit dialog button _("Switch character"), "quitdialog")), mRate(nullptr), // TRANSLATORS: quit dialog button mOkButton(new Button(this, _("OK"), "ok", this)), // TRANSLATORS: quit dialog button mCancelButton(new Button(this, _("Cancel"), "cancel", this)), mMyPointer(pointerToMe), mNeedForceQuit(false) { addKeyListener(this); ContainerPlacer placer = getPlacer(0, 0); const State state = client->getState(); mNeedForceQuit = (state == STATE_CHOOSE_SERVER || state == STATE_CONNECT_SERVER || state == STATE_LOGIN || state == STATE_PRE_LOGIN || state == STATE_LOGIN_ATTEMPT || state == STATE_UPDATE || state == STATE_LOAD_DATA); // All states, when we're not logged in to someone. if (mNeedForceQuit) { placeOption(placer, mForceQuit); } else { // Only added if we are connected to an accountserver or gameserver placeOption(placer, mLogoutQuit); placeOption(placer, mSwitchAccountServer); // Only added if we are connected to a gameserver if (state == STATE_GAME) placeOption(placer, mSwitchCharacter); } /* #ifdef ANDROID if (config.getBoolValue("rated") == false && config.getIntValue("gamecount") > 3) { mRate = new RadioButton(this, _("Rate in google play"), "quitdialog"); placeOption(placer, mRate); mOptions[mOptions.size() - 1]->setSelected(true); } else #endif */ { mOptions[0]->setSelected(true); } placer = getPlacer(0, 1); placer(1, 0, mOkButton, 1); placer(2, 0, mCancelButton, 1); reflowLayout(200, 0); }
MailEditWindow::MailEditWindow() : // TRANSLATORS: mail edit window name Window(_("Edit mail"), Modal_false, nullptr, "mailedit.xml"), ActionListener(), // TRANSLATORS: mail edit window button mSendButton(new Button(this, _("Send"), "send", this)), // TRANSLATORS: mail edit window button mCloseButton(new Button(this, _("Close"), "close", this)), // TRANSLATORS: mail edit window button mAddButton(new Button(this, _("Add"), "add", this)), // TRANSLATORS: mail edit window label mToLabel(new Label(this, _("To:"))), // TRANSLATORS: mail edit window label mSubjectLabel(new Label(this, _("Subject:"))), // TRANSLATORS: mail edit window label mMoneyLabel(new Label(this, _("Money:"))), // TRANSLATORS: mail edit window label mItemLabel(new Label(this, _("Item:"))), // TRANSLATORS: mail edit window label mMessageLabel(new Label(this, _("Message:"))), mToField(new TextField(this)), mSubjectField(new TextField(this)), mMoneyField(new IntTextField(this, 0, 0, 10000000)), mMessageField(new TextField(this)), mInventory(new Inventory(InventoryType::MAIL, 1)), mItemContainer(new ItemContainer(this, mInventory)), mItemScrollArea(new ScrollArea(this, mItemContainer, getOptionBool("showitemsbackground"), "mailedit_listbackground.xml")) { setWindowName("MailEdit"); setCloseButton(true); setResizable(true); setCloseButton(true); setSaveVisible(false); setStickyButtonLock(true); setVisible(Visible_true); setDefaultSize(380, 200, ImageRect::CENTER); setMinWidth(200); setMinHeight(200); center(); ContainerPlacer placer; placer = getPlacer(0, 0); mToField->setWidth(100); mSubjectField->setWidth(100); mMessageField->setWidth(100); mItemScrollArea->setHeight(70); mItemScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); mItemScrollArea->setVerticalScrollPolicy(ScrollArea::SHOW_NEVER); placer(0, 0, mToLabel); placer(1, 0, mToField, 3); placer(0, 1, mSubjectLabel); placer(1, 1, mSubjectField, 3); placer(0, 2, mMoneyLabel); placer(1, 2, mMoneyField, 3); placer(0, 3, mItemLabel); placer(1, 3, mItemScrollArea, 2, 2); placer(3, 4, mAddButton, 1); placer(0, 5, mMessageLabel); placer(1, 5, mMessageField, 3); placer(0, 6, mSendButton); placer(3, 6, mCloseButton); loadWindowState(); enableVisibleSound(true); }
StatusWindow::StatusWindow(LocalPlayer *player): Window(player->getName()), mPlayer(player), mCurrency(0) { setWindowName("Status"); setCloseButton(true); setSaveVisible(true); setDefaultSize(400, 345, ImageRect::CENTER); // ---------------------- // Status Part // ---------------------- mLvlLabel = new Label(strprintf(_("Level: %d"), 0)); mJobLvlLabel = new Label(strprintf(_("Job: %d"), 0)); mGpLabel = new Label(strprintf(_("Money: %s"), Units::formatCurrency(mCurrency).c_str())); mHpLabel = new Label(_("HP:")); mHpBar = new ProgressBar(0.0f, 80, 15, gcn::Color(0, 171, 34)); mXpLabel = new Label(_("Exp:")); mXpBar = new ProgressBar(0.0f, 80, 15, gcn::Color(143, 192, 211)); mMpLabel = new Label(_("MP:")); mMpBar = new ProgressBar(0.0f, 80, 15, gcn::Color(26, 102, 230)); mJobLabel = new Label(_("Job:")); mJobBar = new ProgressBar(0.0f, 80, 15, gcn::Color(220, 135, 203)); // ---------------------- // Stats Part // ---------------------- // Static Labels gcn::Label *mStatsTitleLabel = new Label(_("Stats")); gcn::Label *mStatsTotalLabel = new Label(_("Total")); gcn::Label *mStatsCostLabel = new Label(_("Cost")); mStatsTotalLabel->setAlignment(gcn::Graphics::CENTER); // Derived Stats mStatsAttackLabel = new Label(_("Attack:")); mStatsDefenseLabel= new Label(_("Defense:")); mStatsMagicAttackLabel = new Label(_("M.Attack:")); mStatsMagicDefenseLabel = new Label(_("M.Defense:")); // Gettext flag for next line: xgettext:no-c-format mStatsAccuracyLabel = new Label(_("% Accuracy:")); // Gettext flag for next line: xgettext:no-c-format mStatsEvadeLabel = new Label(_("% Evade:")); // Gettext flag for next line: xgettext:no-c-format mStatsReflexLabel = new Label(_("% Reflex:")); mStatsAttackPoints = new Label; mStatsDefensePoints = new Label; mStatsMagicAttackPoints = new Label; mStatsMagicDefensePoints = new Label; mStatsAccuracyPoints = new Label; mStatsEvadePoints = new Label; mStatsReflexPoints = new Label; // New labels for (int i = 0; i < 6; i++) { mStatsLabel[i] = new Label("0"); mStatsLabel[i]->setAlignment(gcn::Graphics::CENTER); mStatsDisplayLabel[i] = new Label; mPointsLabel[i] = new Label("0"); mPointsLabel[i]->setAlignment(gcn::Graphics::CENTER); } mRemainingStatsPointsLabel = new Label; // Set button events Id mStatsButton[0] = new Button("+", "STR", this); mStatsButton[1] = new Button("+", "AGI", this); mStatsButton[2] = new Button("+", "VIT", this); mStatsButton[3] = new Button("+", "INT", this); mStatsButton[4] = new Button("+", "DEX", this); mStatsButton[5] = new Button("+", "LUK", this); // Assemble ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mLvlLabel, 3); place(5, 0, mJobLvlLabel, 3); place(8, 0, mGpLabel, 3); place(0, 1, mHpLabel).setPadding(3); place(1, 1, mHpBar, 4); place(5, 1, mXpLabel).setPadding(3); place(6, 1, mXpBar, 5); place(0, 2, mMpLabel).setPadding(3); place(1, 2, mMpBar, 4); place(5, 2, mJobLabel).setPadding(3); place(6, 2, mJobBar, 5); place.getCell().matchColWidth(0, 1); place = getPlacer(0, 3); place(0, 1, mStatsTitleLabel, 5); place(5, 1, mStatsTotalLabel, 5); place(12, 1, mStatsCostLabel, 5); for (int i = 0; i < 6; i++) { place(0, 2 + i, mStatsLabel[i], 7).setPadding(5); place(7, 2 + i, mStatsDisplayLabel[i]).setPadding(5); place(10, 2 + i, mStatsButton[i]); place(12, 2 + i, mPointsLabel[i]).setPadding(5); } place(14, 2, mStatsAttackLabel, 7).setPadding(5); place(14, 3, mStatsDefenseLabel, 7).setPadding(5); place(14, 4, mStatsMagicAttackLabel, 7).setPadding(5); place(14, 5, mStatsMagicDefenseLabel, 7).setPadding(5); place(14, 6, mStatsAccuracyLabel, 7).setPadding(5); place(14, 7, mStatsEvadeLabel, 7).setPadding(5); place(14, 8, mStatsReflexLabel, 7).setPadding(5); place(21, 2, mStatsAttackPoints, 3).setPadding(5); place(21, 3, mStatsDefensePoints, 3).setPadding(5); place(21, 4, mStatsMagicAttackPoints, 3).setPadding(5); place(21, 5, mStatsMagicDefensePoints, 3).setPadding(5); place(21, 6, mStatsAccuracyPoints, 3).setPadding(5); place(21, 7, mStatsEvadePoints, 3).setPadding(5); place(21, 8, mStatsReflexPoints, 3).setPadding(5); place(0, 8, mRemainingStatsPointsLabel, 3).setPadding(5); Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); loadWindowState(); }
InventoryWindow::InventoryWindow(Inventory *const inventory) : Window("Inventory", Modal_false, nullptr, "inventory.xml"), ActionListener(), KeyListener(), SelectionListener(), InventoryListener(), AttributeListener(), mInventory(inventory), mItems(new ItemContainer(this, mInventory)), mUseButton(nullptr), mDropButton(nullptr), mOutfitButton(nullptr), mShopButton(nullptr), mCartButton(nullptr), mEquipmentButton(nullptr), mStoreButton(nullptr), mRetrieveButton(nullptr), mInvCloseButton(nullptr), mWeightBar(nullptr), mSlotsBar(new ProgressBar(this, 0.0F, 100, 0, ProgressColorId::PROG_INVY_SLOTS, "slotsprogressbar.xml", "slotsprogressbar_fill.xml")), mFilter(nullptr), mSortModel(new SortListModelInv), mSortDropDown(new DropDown(this, mSortModel, false, Modal_false, this, "sort")), mNameFilter(new TextField(this, "", true, this, "namefilter", true)), mSortDropDownCell(nullptr), mNameFilterCell(nullptr), mFilterCell(nullptr), mSlotsBarCell(nullptr), mSplit(false), mCompactMode(false) { mSlotsBar->setColor(getThemeColor(ThemeColorId::SLOTS_BAR), getThemeColor(ThemeColorId::SLOTS_BAR_OUTLINE)); if (inventory) { setCaption(gettext(inventory->getName().c_str())); setWindowName(inventory->getName()); switch (inventory->getType()) { case InventoryType::Inventory: case InventoryType::Trade: case InventoryType::Npc: #ifdef EATHENA_SUPPORT case InventoryType::Vending: case InventoryType::Mail: case InventoryType::Craft: #endif case InventoryType::TypeEnd: default: mSortDropDown->setSelected(config.getIntValue( "inventorySortOrder")); break; case InventoryType::Storage: mSortDropDown->setSelected(config.getIntValue( "storageSortOrder")); break; #ifdef EATHENA_SUPPORT case InventoryType::Cart: mSortDropDown->setSelected(config.getIntValue( "cartSortOrder")); break; #endif }; } else { // TRANSLATORS: inventory window name setCaption(_("Inventory")); setWindowName("Inventory"); mSortDropDown->setSelected(0); } if (setupWindow && inventory && inventory->getType() != InventoryType::Storage) { setupWindow->registerWindowForReset(this); } setResizable(true); setCloseButton(true); setSaveVisible(true); setStickyButtonLock(true); if (mainGraphics->mWidth > 600) setDefaultSize(450, 310, ImagePosition::CENTER); else setDefaultSize(387, 307, ImagePosition::CENTER); setMinWidth(310); setMinHeight(179); addKeyListener(this); mItems->addSelectionListener(this); ScrollArea *const invenScroll = new ScrollArea(this, mItems, getOptionBool("showbackground"), "inventory_background.xml"); invenScroll->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); const int size = config.getIntValue("fontSize"); mFilter = new TabStrip(this, "filter_" + getWindowName(), size + 16); mFilter->addActionListener(this); mFilter->setActionEventId("tag_"); StringVect tags = ItemDB::getTags(); const size_t sz = tags.size(); for (size_t f = 0; f < sz; f ++) mFilter->addButton(tags[f], tags[f], false); if (!mInventory) { invInstances.push_back(this); return; } switch (mInventory->getType()) { case InventoryType::Inventory: { // TRANSLATORS: inventory button const std::string equip = _("Equip"); // TRANSLATORS: inventory button const std::string use = _("Use"); // TRANSLATORS: inventory button const std::string unequip = _("Unequip"); std::string longestUseString = getFont()->getWidth(equip) > getFont()->getWidth(use) ? equip : use; if (getFont()->getWidth(longestUseString) < getFont()->getWidth(unequip)) { longestUseString = unequip; } mUseButton = new Button(this, longestUseString, "use", this); // TRANSLATORS: inventory button mDropButton = new Button(this, _("Drop..."), "drop", this); // TRANSLATORS: inventory outfits button mOutfitButton = new Button(this, _("O"), "outfit", this); // TRANSLATORS: inventory cart button mCartButton = new Button(this, _("C"), "cart", this); // TRANSLATORS: inventory shop button mShopButton = new Button(this, _("S"), "shop", this); // TRANSLATORS: inventory equipment button mEquipmentButton = new Button(this, _("E"), "equipment", this); mWeightBar = new ProgressBar(this, 0.0F, 100, 0, ProgressColorId::PROG_WEIGHT, "weightprogressbar.xml", "weightprogressbar_fill.xml"); mWeightBar->setColor(getThemeColor(ThemeColorId::WEIGHT_BAR), getThemeColor(ThemeColorId::WEIGHT_BAR_OUTLINE)); // TRANSLATORS: outfits button tooltip mOutfitButton->setDescription(_("Outfits")); // TRANSLATORS: cart button tooltip mCartButton->setDescription(_("Cart")); // TRANSLATORS: shop button tooltip mShopButton->setDescription(_("Shop")); // TRANSLATORS: equipment button tooltip mEquipmentButton->setDescription(_("Equipment")); place(0, 0, mWeightBar, 4); mSlotsBarCell = &place(4, 0, mSlotsBar, 4); mSortDropDownCell = &place(8, 0, mSortDropDown, 3); mFilterCell = &place(0, 1, mFilter, 10).setPadding(3); mNameFilterCell = &place(8, 1, mNameFilter, 3); place(0, 2, invenScroll, 11).setPadding(3); place(0, 3, mUseButton); place(1, 3, mDropButton); ContainerPlacer placer = getPlacer(10, 3); placer(0, 0, mShopButton); placer(1, 0, mOutfitButton); placer(2, 0, mCartButton); placer(3, 0, mEquipmentButton); updateWeight(); break; } case InventoryType::Storage: { // TRANSLATORS: storage button mStoreButton = new Button(this, _("Store"), "store", this); // TRANSLATORS: storage button mRetrieveButton = new Button(this, _("Retrieve"), "retrieve", this); // TRANSLATORS: storage button mInvCloseButton = new Button(this, _("Close"), "close", this); mSlotsBarCell = &place(0, 0, mSlotsBar, 6); mSortDropDownCell = &place(6, 0, mSortDropDown, 1); mFilterCell = &place(0, 1, mFilter, 7).setPadding(3); mNameFilterCell = &place(6, 1, mNameFilter, 1); place(0, 2, invenScroll, 7, 4); place(0, 6, mStoreButton); place(1, 6, mRetrieveButton); place(6, 6, mInvCloseButton); break; } #ifdef EATHENA_SUPPORT case InventoryType::Cart: { // TRANSLATORS: storage button mStoreButton = new Button(this, _("Store"), "store", this); // TRANSLATORS: storage button mRetrieveButton = new Button(this, _("Retrieve"), "retrieve", this); // TRANSLATORS: storage button mInvCloseButton = new Button(this, _("Close"), "close", this); mWeightBar = new ProgressBar(this, 0.0F, 100, 0, ProgressColorId::PROG_WEIGHT, "weightprogressbar.xml", "weightprogressbar_fill.xml"); mWeightBar->setColor(getThemeColor(ThemeColorId::WEIGHT_BAR), getThemeColor(ThemeColorId::WEIGHT_BAR_OUTLINE)); mSlotsBarCell = &place(3, 0, mSlotsBar, 3); mSortDropDownCell = &place(6, 0, mSortDropDown, 1); mFilterCell = &place(0, 1, mFilter, 7).setPadding(3); mNameFilterCell = &place(6, 1, mNameFilter, 1); place(0, 0, mWeightBar, 3); place(0, 2, invenScroll, 7, 4); place(0, 6, mStoreButton); place(1, 6, mRetrieveButton); place(6, 6, mInvCloseButton); break; } #endif default: case InventoryType::Trade: case InventoryType::Npc: #ifdef EATHENA_SUPPORT case InventoryType::Vending: case InventoryType::Mail: case InventoryType::Craft: #endif case InventoryType::TypeEnd: break; }; Layout &layout = getLayout(); layout.setRowHeight(2, LayoutType::SET); mInventory->addInventoyListener(this); invInstances.push_back(this); if (inventory->isMainInventory()) { updateDropButton(); } else { if (!invInstances.empty()) invInstances.front()->updateDropButton(); } loadWindowState(); enableVisibleSound(true); }
MailViewWindow::MailViewWindow(const MailMessage *const message) : // TRANSLATORS: mail view window name Window(_("View mail"), Modal_false, nullptr, "mailview.xml"), ActionListener(), mMessage(message), // TRANSLATORS: mail view window button mGetAttachButton(nullptr), // TRANSLATORS: mail view window button mCloseButton(new Button(this, _("Close"), "close", this)), mPrevButton(new Button(this, "<", "prev", this)), mNextButton(new Button(this, ">", "next", this)), // TRANSLATORS: mail view window button mReplyButton(new Button(this, _("Reply"), "reply", this)), // TRANSLATORS: mail view window label mTimeLabel(new Label(this, strprintf("%s %s", _("Time:"), message->strTime.c_str()))), mMoneyLabel(nullptr), // TRANSLATORS: mail view window label mFromLabel(new Label(this, strprintf("%s %s", _("From:"), message->sender.c_str()))), // TRANSLATORS: mail view window label mSubjectLabel(new Label(this, strprintf("%s %s", _("Subject:"), message->title.c_str()))), // TRANSLATORS: mail view window label mMessageLabel(new Label(this, strprintf("%s %s", _("Message:"), message->text.c_str()))), // TRANSLATORS: mail view window label mItemLabel(nullptr), mIcon(nullptr) { setWindowName("MailView"); setCloseButton(true); setResizable(true); setSaveVisible(false); setStickyButtonLock(true); setVisible(Visible_true); setDefaultSize(380, 230, ImageRect::CENTER); setMinWidth(200); setMinHeight(100); center(); ContainerPlacer placer; placer = getPlacer(0, 0); int n = 0; placer(0, n++, mTimeLabel); placer(0, n++, mFromLabel); placer(0, n++, mSubjectLabel); if (message->money) { // TRANSLATORS: mail view window label mMoneyLabel = new Label(this, strprintf("%s %d", _("Money:"), message->money)); placer(0, n++, mMoneyLabel); } placer(0, n++, mMessageLabel); if (message->itemId) { const ItemInfo &item = ItemDB::get(message->itemId); // +++ need use message->cards and ItemColorManager for colors Image *const image = resourceManager->getImage(combineDye2( paths.getStringValue("itemIcons").append( item.getDisplay().image), item.getDyeIconColorsString(ItemColor_one))); mIcon = new Icon(this, image); if (message->itemAmount != 1) { mItemLabel = new Label(this, std::string(_("Item:")).append( " (").append(toString(message->itemAmount)).append(") ")); } else { mItemLabel = new Label(this, std::string(_("Item:")).append(" ")); } placer(0, n, mItemLabel); placer(1, n++, mIcon); } if (message->money || message->itemId) { mGetAttachButton = new Button(this, _("Get attach"), "attach", this); placer(0, n++, mGetAttachButton); } ContainerPlacer placer2; placer2 = getPlacer(0, n); placer2(0, 0, mPrevButton); placer2(1, 0, mNextButton); placer2(3, 0, mReplyButton); placer2(4, 0, mCloseButton); loadWindowState(); enableVisibleSound(true); }
RegisterDialog::RegisterDialog(LoginData &data) : // TRANSLATORS: register dialog name Window(_("Register"), Modal_false, nullptr, "register.xml"), ActionListener(), KeyListener(), mLoginData(&data), mUserField(new TextField(this, mLoginData->username)), mPasswordField(new PasswordField(this, mLoginData->password)), mConfirmField(new PasswordField(this)), mEmailField(nullptr), // TRANSLATORS: register dialog. button. mRegisterButton(new Button(this, _("Register"), "register", this)), // TRANSLATORS: register dialog. button. mCancelButton(new Button(this, _("Cancel"), "cancel", this)), mMaleButton(nullptr), mFemaleButton(nullptr), mOtherButton(nullptr), mWrongDataNoticeListener(new WrongDataNoticeListener) { setCloseButton(true); // TRANSLATORS: register dialog. label. Label *const userLabel = new Label(this, _("Name:")); // TRANSLATORS: register dialog. label. Label *const passwordLabel = new Label(this, _("Password:"******"Confirm:")); ContainerPlacer placer; placer = getPlacer(0, 0); placer(0, 0, userLabel); placer(0, 1, passwordLabel); placer(0, 2, confirmLabel); placer(1, 0, mUserField, 3).setPadding(2); placer(1, 1, mPasswordField, 3).setPadding(2); placer(1, 2, mConfirmField, 3).setPadding(2); int row = 3; if (features.getIntValue("forceAccountGender") == -1) { // TRANSLATORS: register dialog. button. mMaleButton = new RadioButton(this, _("Male"), "sex", true); // TRANSLATORS: register dialog. button. mFemaleButton = new RadioButton(this, _("Female"), "sex", false); if (serverFeatures->haveAccountOtherGender()) { // TRANSLATORS: register dialog. button. mOtherButton = new RadioButton(this, _("Other"), "sex", false); placer(0, row, mMaleButton); placer(1, row, mFemaleButton); placer(2, row, mOtherButton); } else { placer(1, row, mMaleButton); placer(2, row, mFemaleButton); } row++; } if (serverFeatures->haveEmailOnRegister()) { // TRANSLATORS: register dialog. label. Label *const emailLabel = new Label(this, _("Email:")); mEmailField = new TextField(this); placer(0, row, emailLabel); placer(1, row, mEmailField, 3).setPadding(2); mEmailField->addKeyListener(this); mEmailField->setActionEventId("register"); mEmailField->addActionListener(this); // row++; } placer = getPlacer(0, 2); placer(1, 0, mRegisterButton); placer(2, 0, mCancelButton); reflowLayout(250, 0); mUserField->addKeyListener(this); mPasswordField->addKeyListener(this); mConfirmField->addKeyListener(this); mUserField->setActionEventId("register"); mPasswordField->setActionEventId("register"); mConfirmField->setActionEventId("register"); mUserField->addActionListener(this); mPasswordField->addActionListener(this); mConfirmField->addActionListener(this); center(); }
setWindowName("UpdaterWindow"); setResizable(true); setDefaultSize(450, 400, ImageRect::CENTER); setMinWidth(310); setMinHeight(220); mProgressBar->setSmoothProgress(false); mBrowserBox->setOpaque(false); mBrowserBox->setLinkHandler(this); mBrowserBox->setProcessVars(true); mBrowserBox->setEnableKeys(true); mBrowserBox->setEnableTabs(true); mPlayButton->setEnabled(false); ContainerPlacer placer; placer = getPlacer(0, 0); placer(0, 0, mScrollArea, 5, 3).setPadding(3); placer(0, 3, mLabel, 5); placer(0, 4, mProgressBar, 5); placer(3, 5, mCancelButton); placer(4, 5, mPlayButton); Layout &layout = getLayout(); layout.setRowHeight(0, LayoutType::SET); addKeyListener(this); if (mUpdateHost.empty()) { const std::vector<std::string> &mirrors = settings.updateMirrors;
TradeWindow::TradeWindow(): // TRANSLATORS: trade window caption Window(_("Trade: You"), false, nullptr, "trade.xml"), gcn::ActionListener(), gcn::SelectionListener(), mMyInventory(new Inventory(Inventory::TRADE)), mPartnerInventory(new Inventory(Inventory::TRADE)), mMyItemContainer(new ItemContainer(this, mMyInventory.get())), mPartnerItemContainer(new ItemContainer(this, mPartnerInventory.get())), // TRANSLATORS: trade window money label mMoneyLabel(new Label(this, strprintf(_("You get %s"), ""))), // TRANSLATORS: trade window button mAddButton(new Button(this, _("Add"), "add", this)), mOkButton(new Button(this, "", "", this)), // Will be filled in later // TRANSLATORS: trade window money change button mMoneyChangeButton(new Button(this, _("Change"), "money", this)), mMoneyField(new TextField(this)), mStatus(PROPOSING), mAutoAddItem(nullptr), mAutoAddToNick(""), mGotMoney(0), mGotMaxMoney(0), mAutoMoney(0), mAutoAddAmount(0), mOkOther(false), mOkMe(false) { logger->log1("TradeWindow::TradeWindow nick"); setWindowName("Trade"); setResizable(true); setCloseButton(true); setStickyButtonLock(true); setDefaultSize(386, 180, ImageRect::CENTER); setMinWidth(310); setMinHeight(180); if (setupWindow) setupWindow->registerWindowForReset(this); const gcn::Font *const fnt = mOkButton->getFont(); int width = std::max(fnt->getWidth(CAPTION_PROPOSE), fnt->getWidth(CAPTION_CONFIRMED)); width = std::max(width, fnt->getWidth(CAPTION_ACCEPT)); width = std::max(width, fnt->getWidth(CAPTION_ACCEPTED)); mOkButton->setWidth(8 + width); mMyItemContainer->addSelectionListener(this); ScrollArea *const myScroll = new ScrollArea(mMyItemContainer, true, "trade_background.xml"); myScroll->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); mPartnerItemContainer->addSelectionListener(this); ScrollArea *const partnerScroll = new ScrollArea(mPartnerItemContainer, true, "trade_background.xml"); partnerScroll->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); // TRANSLATORS: trade window money label Label *const moneyLabel2 = new Label(this, _("You give:")); mMoneyField->setWidth(40); place(1, 0, mMoneyLabel); place(0, 1, myScroll).setPadding(3); place(1, 1, partnerScroll).setPadding(3); ContainerPlacer placer; placer = getPlacer(0, 0); placer(0, 0, moneyLabel2); placer(1, 0, mMoneyField, 2); placer(3, 0, mMoneyChangeButton).setHAlign(LayoutCell::LEFT); placer = getPlacer(0, 2); placer(0, 0, mAddButton); placer(1, 0, mOkButton); Layout &layout = getLayout(); layout.extend(0, 2, 2, 1); layout.setRowHeight(1, Layout::AUTO_SET); layout.setRowHeight(2, 0); layout.setColWidth(0, Layout::AUTO_SET); layout.setColWidth(1, Layout::AUTO_SET); loadWindowState(); enableVisibleSound(true); reset(); }
QuestsWindow::QuestsWindow() : // TRANSLATORS: quests window name Window(_("Quests"), false, nullptr, "quests.xml"), ActionListener(), mQuestsModel(new QuestsModel), mQuestsListBox(new ExtendedListBox(this, mQuestsModel, "extendedlistbox.xml")), mQuestScrollArea(new ScrollArea(this, mQuestsListBox, getOptionBool("showlistbackground"), "quests_list_background.xml")), mItemLinkHandler(new ItemLinkHandler), mText(new BrowserBox(this, BrowserBox::AUTO_WRAP, true, "browserbox.xml")), mTextScrollArea(new ScrollArea(this, mText, getOptionBool("showtextbackground"), "quests_text_background.xml")), // TRANSLATORS: quests window button mCloseButton(new Button(this, _("Close"), "close", this)), mCompleteIcon(Theme::getImageFromThemeXml("complete_icon.xml", "")), mIncompleteIcon(Theme::getImageFromThemeXml("incomplete_icon.xml", "")), mVars(), mQuests(), mAllEffects(), mMapEffects(), mNpcEffects(), mQuestLinks(), mNewQuestEffectId(paths.getIntValue("newQuestEffectId")), mCompleteQuestEffectId(paths.getIntValue("completeQuestEffectId")), mMap(nullptr) { mQuestsListBox->postInit(); setWindowName("Quests"); setResizable(true); setCloseButton(true); setStickyButtonLock(true); setSaveVisible(true); setDefaultSize(400, 350, ImageRect::RIGHT); setMinWidth(310); setMinHeight(220); mQuestsListBox->setActionEventId("select"); mQuestsListBox->addActionListener(this); mQuestScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); mText->setOpaque(false); mText->setLinkHandler(mItemLinkHandler); mTextScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); mQuestsListBox->setWidth(500); if (!gui || gui->getNpcFont()->getHeight() < 20) mQuestsListBox->setRowHeight(20); else mQuestsListBox->setRowHeight(gui->getNpcFont()->getHeight()); ContainerPlacer placer; placer = getPlacer(0, 0); placer(0, 0, mQuestScrollArea, 4, 3).setPadding(3); placer(4, 0, mTextScrollArea, 4, 3).setPadding(3); placer(7, 3, mCloseButton); Layout &layout = getLayout(); layout.setRowHeight(0, LayoutType::SET); loadWindowState(); enableVisibleSound(true); loadXmlFile(paths.getStringValue("questsFile")); loadXmlFile(paths.getStringValue("questsPatchFile")); loadXmlDir("questsPatchDir", loadXmlFile); }
ItemAmountWindow::ItemAmountWindow(Usage usage, Window *parent, Item *item, int maxRange): Window("", true, parent), mItem(item), mMax(maxRange), mUsage(usage) { if (!mMax) mMax = mItem->getQuantity(); // Save keyboard state mEnabledKeyboard = keyboard.isEnabled(); keyboard.setEnabled(false); // Integer field mItemAmountTextField = new IntTextField(1); mItemAmountTextField->setRange(1, mMax); mItemAmountTextField->setWidth(35); mItemAmountTextField->addKeyListener(this); // Slider mItemAmountSlide = new Slider(1.0, mMax); mItemAmountSlide->setHeight(10); mItemAmountSlide->setActionEventId("slide"); mItemAmountSlide->addActionListener(this); //Item icon Image *image = item->getImage(); mItemIcon = new Icon(image); // Buttons Button *minusButton = new Button(_("-"), "dec", this); Button *plusButton = new Button(_("+"), "inc", this); Button *okButton = new Button(_("OK"), "ok", this); Button *cancelButton = new Button(_("Cancel"), "cancel", this); Button *addAllButton = new Button(_("All"), "all", this); minusButton->adjustSize(); minusButton->setWidth(plusButton->getWidth()); // Set positions ContainerPlacer place; place = getPlacer(0, 0); place(1, 0, minusButton); place(2, 0, mItemAmountTextField); place(3, 0, plusButton); place(4, 0, addAllButton); place(0, 0, mItemIcon, 1, 3); place(1, 1, mItemAmountSlide, 5); place(4, 2, cancelButton); place(5, 2, okButton); reflowLayout(225, 0); resetAmount(); switch (usage) { case TradeAdd: setCaption(_("Select amount of items to trade.")); break; case ItemDrop: setCaption(_("Select amount of items to drop.")); break; case StoreAdd: setCaption(_("Select amount of items to store.")); break; case StoreRemove: setCaption(_("Select amount of items to retrieve.")); break; case ItemSplit: setCaption(_("Select amount of items to split.")); break; } setLocationRelativeTo(getParentWindow()); setVisible(true); mItemPopup = new ItemPopup; mItemIcon->addMouseListener(this); }
RegisterDialog::RegisterDialog(LoginData *loginData): Window(_("Register")), mEmailField(0), mMaleButton(0), mFemaleButton(0), mWrongDataNoticeListener(new WrongDataNoticeListener), mLoginData(loginData) { int optionalActions = Net::getLoginHandler()->supportedOptionalActions(); gcn::Label *userLabel = new Label(_("Name:")); gcn::Label *passwordLabel = new Label(_("Password:"******"Confirm:")); mUserField = new TextField(loginData->username); mPasswordField = new PasswordField(loginData->password); mConfirmField = new PasswordField; mRegisterButton = new Button(_("Register"), "register", this); mCancelButton = new Button(_("Cancel"), "cancel", this); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, userLabel); place(0, 1, passwordLabel); place(0, 2, confirmLabel); place(1, 0, mUserField, 3).setPadding(2); place(1, 1, mPasswordField, 3).setPadding(2); place(1, 2, mConfirmField, 3).setPadding(2); int row = 3; if (optionalActions & Net::LoginHandler::SetGenderOnRegister) { mMaleButton = new RadioButton(_("Male"), "sex", true); mFemaleButton = new RadioButton(_("Female"), "sex", false); place(1, row, mMaleButton); place(2, row, mFemaleButton); row++; } if (optionalActions & Net::LoginHandler::SetEmailOnRegister) { gcn::Label *emailLabel = new Label(_("Email:")); mEmailField = new TextField; place(0, row, emailLabel); place(1, row, mEmailField, 3).setPadding(2); row++; } place = getPlacer(0, 2); place(1, 0, mRegisterButton); place(2, 0, mCancelButton); reflowLayout(250, 0); mUserField->addKeyListener(this); mPasswordField->addKeyListener(this); mConfirmField->addKeyListener(this); /* TODO: * This is a quick and dirty way to respond to the ENTER key, regardless of * which text field is selected. There may be a better way now with the new * input system of Guichan 0.6.0. See also the login dialog. */ mUserField->setActionEventId("register"); mPasswordField->setActionEventId("register"); mConfirmField->setActionEventId("register"); mUserField->addActionListener(this); mPasswordField->addActionListener(this); mConfirmField->addActionListener(this); center(); setVisible(true); mUserField->requestFocus(); mUserField->setCaretPosition(mUserField->getText().length()); mRegisterButton->setEnabled(canSubmit()); }
Setup_Video::Setup_Video(): mFullScreenEnabled(config.getBoolValue("screen")), mOpenGLEnabled(config.getBoolValue("opengl")), mCustomCursorEnabled(config.getBoolValue("customcursor")), mParticleEffectsEnabled(config.getBoolValue("particleeffects")), mFps(config.getIntValue("fpslimit")), mSDLTransparencyDisabled(config.getBoolValue("disableTransparency")), mModeListModel(new ModeListModel), mModeList(new ListBox(mModeListModel)), mFsCheckBox(new CheckBox(_("Full screen"), mFullScreenEnabled)), mOpenGLCheckBox(new CheckBox(_("OpenGL"), mOpenGLEnabled)), mCustomCursorCheckBox(new CheckBox(_("Custom cursor"), mCustomCursorEnabled)), mParticleEffectsCheckBox(new CheckBox(_("Particle effects"), mParticleEffectsEnabled)), mFpsCheckBox(new CheckBox(_("FPS limit:"))), mFpsSlider(new Slider(10, 120)), mFpsLabel(new Label), mOverlayDetail(config.getIntValue("OverlayDetail")), mOverlayDetailSlider(new Slider(0, 2)), mOverlayDetailField(new Label), mParticleDetail(3 - config.getIntValue("particleEmitterSkip")), mParticleDetailSlider(new Slider(0, 3)), mParticleDetailField(new Label), mDisableSDLTransparencyCheckBox( new CheckBox(_("Disable transparency (Low CPU mode)"), mSDLTransparencyDisabled)) { setName(_("Video")); Spacer *space = new Spacer(0,10); ScrollArea *scrollArea = new ScrollArea(mModeList); scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); scrollArea->setSize(100, 200); overlayDetailLabel = new Label(_("Ambient FX:")); particleDetailLabel = new Label(_("Particle detail:")); mModeList->setEnabled(true); #ifndef USE_OPENGL mOpenGLCheckBox->setEnabled(false); #endif mFpsLabel->setCaption(mFps > 0 ? toString(mFps) : _("None")); mFpsLabel->setWidth(60); mFpsSlider->setValue(mFps); mFpsSlider->setEnabled(mFps > 0); mFpsCheckBox->setSelected(mFps > 0); overlayDetailLabel->setAlignment(Graphics::RIGHT); particleDetailLabel->setAlignment(Graphics::RIGHT); // If the openGL Mode is enabled, disabling the transaprency // is irrelevant. mDisableSDLTransparencyCheckBox->setEnabled(!mOpenGLEnabled); // Pre-select the current video mode. std::string videoMode = toString(graphics->getWidth()) + "x" + toString(graphics->getHeight()); mModeList->setSelected(mModeListModel->getIndexOf(videoMode)); // Set actions mModeList->setActionEventId("videomode"); mCustomCursorCheckBox->setActionEventId("customcursor"); mParticleEffectsCheckBox->setActionEventId("particleeffects"); mDisableSDLTransparencyCheckBox->setActionEventId("disableTransparency"); mFpsCheckBox->setActionEventId("fpslimitcheckbox"); mFpsSlider->setActionEventId("fpslimitslider"); mOverlayDetailSlider->setActionEventId("overlaydetailslider"); mOverlayDetailField->setActionEventId("overlaydetailfield"); mOpenGLCheckBox->setActionEventId("opengl"); mParticleDetailSlider->setActionEventId("particledetailslider"); mParticleDetailField->setActionEventId("particledetailfield"); // Set listeners mModeList->addActionListener(this); mCustomCursorCheckBox->addActionListener(this); mOpenGLCheckBox->addActionListener(this); mParticleEffectsCheckBox->addActionListener(this); mDisableSDLTransparencyCheckBox->addActionListener(this); mFpsCheckBox->addActionListener(this); mFpsSlider->addActionListener(this); mOverlayDetailSlider->addActionListener(this); mOverlayDetailField->addKeyListener(this); mParticleDetailSlider->addActionListener(this); mParticleDetailField->addKeyListener(this); mOverlayDetailField->setCaption(overlayDetailToString(mOverlayDetail)); mOverlayDetailSlider->setValue(mOverlayDetail); mParticleDetailField->setCaption(particleDetailToString(mParticleDetail)); mParticleDetailSlider->setValue(mParticleDetail); // Do the layout ContainerPlacer place = getPlacer(0, 0); place.getCell().setHAlign(LayoutCell::FILL); place(0, 0, scrollArea, 1, 4).setPadding(2).setHAlign(LayoutCell::FILL); place(1, 0, space, 1, 4); place(2, 0, mFsCheckBox); place(2, 1, mOpenGLCheckBox); place(2, 2, mCustomCursorCheckBox); place = getPlacer(0, 1); place.getCell().setHAlign(LayoutCell::FILL); place(0, 0, space, 3); place(0, 1, mDisableSDLTransparencyCheckBox, 4); place(0, 2, mFpsCheckBox); place(1, 2, mFpsSlider, 2); place(3, 2, mFpsLabel); place(0, 3, mParticleEffectsCheckBox, 4); place(0, 4, particleDetailLabel); place(1, 4, mParticleDetailSlider, 2); place(3, 4, mParticleDetailField); place(0, 5, overlayDetailLabel); place(1, 5, mOverlayDetailSlider, 2); place(3, 5, mOverlayDetailField); }
BuyDialog::BuyDialog(int npcId): Window(_("Buy")), mNpcId(npcId), mMoney(0), mAmountItems(0), mMaxItems(0) { setWindowName("Buy"); //setupWindow->registerWindowForReset(this); setResizable(true); setCloseButton(true); setMinWidth(260); setMinHeight(230); setDefaultSize(260, 230, ImageRect::CENTER); mShopItems = new ShopItems; mShopItemList = new ShopListBox(mShopItems, mShopItems); mScrollArea = new ScrollArea(mShopItemList); mScrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); mSlider = new Slider(1.0); mQuantityLabel = new Label(strprintf("%d / %d", mAmountItems, mMaxItems)); mQuantityLabel->setAlignment(gcn::Graphics::CENTER); mMoneyLabel = new Label(strprintf(_("Price: %s / Total: %s"), "", "")); // TRANSLATORS: This is a narrow symbol used to denote 'increasing'. // You may change this symbol if your language uses another. mIncreaseButton = new Button(_("+"), "inc", this); // TRANSLATORS: This is a narrow symbol used to denote 'decreasing'. // You may change this symbol if your language uses another. mDecreaseButton = new Button(_("-"), "dec", this); mBuyButton = new Button(_("Buy"), "buy", this); mQuitButton = new Button(_("Quit"), "quit", this); mAddMaxButton = new Button(_("Max"), "max", this); mDecreaseButton->adjustSize(); mDecreaseButton->setWidth(mIncreaseButton->getWidth()); mIncreaseButton->setEnabled(false); mDecreaseButton->setEnabled(false); mBuyButton->setEnabled(false); mSlider->setEnabled(false); mSlider->setActionEventId("slider"); mSlider->addActionListener(this); mShopItemList->addSelectionListener(this); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mScrollArea, 8, 5).setPadding(3); place(0, 5, mDecreaseButton); place(1, 5, mSlider, 3); place(4, 5, mIncreaseButton); place(5, 5, mQuantityLabel, 2); place(7, 5, mAddMaxButton); place(0, 6, mMoneyLabel, 8); place(6, 7, mBuyButton); place(7, 7, mQuitButton); Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); center(); loadWindowState(); instances.push_back(this); setVisible(true); PlayerInfo::setBuySellState(BUYSELL_BUYING); }
TextCommandEditor::TextCommandEditor(TextCommand *const command) : // TRANSLATORS: command editor name Window(_("Command Editor"), Modal_false, nullptr, "commandeditor.xml"), ActionListener(), mIsMagicCommand(command ? (command->getCommandType() == TEXT_COMMAND_MAGIC) : false), mCommand(command), // TRANSLATORS: command editor button mIsMagic(new RadioButton(this, _("magic"), "magic", mIsMagicCommand)), // TRANSLATORS: command editor button mIsOther(new RadioButton(this, _("other"), "magic", !mIsMagicCommand)), // TRANSLATORS: command editor label mSymbolLabel(new Label(this, _("Symbol:"))), mSymbolTextField(new TextField(this)), // TRANSLATORS: command editor label mCommandLabel(new Label(this, _("Command:"))), mCommandTextField(new TextField(this)), // TRANSLATORS: command editor label mCommentLabel(new Label(this, _("Comment:"))), mCommentTextField(new TextField(this)), mTargetTypeModel(new TargetTypeModel), // TRANSLATORS: command editor label mTypeLabel(new Label(this, _("Target Type:"))), mTypeDropDown(new DropDown(this, mTargetTypeModel)), mIconsModel(new IconsModel), // TRANSLATORS: command editor label mIconLabel(new Label(this, _("Icon:"))), mIconDropDown(new DropDown(this, mIconsModel)), // TRANSLATORS: command editor label mManaLabel(new Label(this, _("Mana:"))), mManaField(new IntTextField(this, 0)), // TRANSLATORS: command editor label mMagicLvlLabel(new Label(this, _("Magic level:"))), mMagicLvlField(new IntTextField(this, 0)), mMagicSchoolModel(new MagicSchoolModel), // TRANSLATORS: command editor label mSchoolLabel(new Label(this, _("Magic School:"))), mSchoolDropDown(new DropDown(this, mMagicSchoolModel)), // TRANSLATORS: command editor label mSchoolLvlLabel(new Label(this, _("School level:"))), mSchoolLvlField(new IntTextField(this, 0)), // TRANSLATORS: command editor button mCancelButton(new Button(this, _("Cancel"), "cancel", this)), // TRANSLATORS: command editor button mSaveButton(new Button(this, _("Save"), "save", this)), // TRANSLATORS: command editor button mDeleteButton(new Button(this, _("Delete"), "delete", this)), mEnabledKeyboard(keyboard.isEnabled()) { const int w = 350; const int h = 370; keyboard.setEnabled(false); setWindowName("TextCommandEditor"); setDefaultSize(w, h, ImageRect::CENTER); mIsMagic->setActionEventId("magic"); mIsMagic->addActionListener(this); mIsOther->setActionEventId("other"); mIsOther->addActionListener(this); mManaField->setRange(0, 500); mManaField->setWidth(20); mTypeDropDown->setActionEventId("type"); mTypeDropDown->addActionListener(this); mIconDropDown->setActionEventId("icon"); mIconDropDown->addActionListener(this); mIconDropDown->setSelectedString(mCommand->getIcon()); mMagicLvlField->setRange(0, 5); mMagicLvlField->setWidth(20); mSchoolDropDown->setActionEventId("school"); mSchoolDropDown->addActionListener(this); mSchoolDropDown->setSelected(0); mSchoolLvlField->setRange(0, 5); mSchoolLvlField->setWidth(20); mSaveButton->adjustSize(); mCancelButton->adjustSize(); mDeleteButton->adjustSize(); if (command) { if (command->getCommandType() == TEXT_COMMAND_MAGIC) showControls(Visible_true); else showControls(Visible_false); mSymbolTextField->setText(command->getSymbol()); mCommandTextField->setText(command->getCommand()); mCommentTextField->setText(command->getComment()); mManaField->setValue(command->getMana()); mTypeDropDown->setSelected(static_cast<int>(command->getTargetType())); mMagicLvlField->setValue(command->getBaseLvl()); mSchoolDropDown->setSelected(static_cast<int>(command->getSchool()) - MAGIC_START_ID); mSchoolLvlField->setValue(command->getSchoolLvl()); } ContainerPlacer placer; placer = getPlacer(0, 0); placer(0, 0, mIsMagic, 1); placer(2, 0, mIsOther, 1); placer(0, 1, mSymbolLabel, 2).setPadding(3); placer(2, 1, mSymbolTextField, 3).setPadding(3); placer(0, 2, mCommandLabel, 2).setPadding(3); placer(2, 2, mCommandTextField, 4).setPadding(3); placer(0, 3, mCommentLabel, 2).setPadding(3); placer(2, 3, mCommentTextField, 4).setPadding(3); placer(0, 4, mTypeLabel, 2).setPadding(3); placer(2, 4, mTypeDropDown, 3).setPadding(3); placer(0, 5, mIconLabel, 2).setPadding(3); placer(2, 5, mIconDropDown, 3).setPadding(3); placer(0, 6, mManaLabel, 2).setPadding(3); placer(2, 6, mManaField, 3).setPadding(3); placer(0, 7, mMagicLvlLabel, 2).setPadding(3); placer(2, 7, mMagicLvlField, 3).setPadding(3); placer(0, 8, mSchoolLabel, 2).setPadding(3); placer(2, 8, mSchoolDropDown, 3).setPadding(3); placer(0, 9, mSchoolLvlLabel, 2).setPadding(3); placer(2, 9, mSchoolLvlField, 3).setPadding(3); placer(0, 10, mSaveButton, 2).setPadding(3); placer(2, 10, mCancelButton, 2).setPadding(3); placer(4, 10, mDeleteButton, 2).setPadding(3); setWidth(w); setHeight(h); reflowLayout(w); center(); }
void TextSelectDialog::postInit() { Window::postInit(); setWindowName("TextSelectDialog"); setResizable(true); setCloseButton(mAllowQuit == AllowQuit_true); setStickyButtonLock(true); setMinWidth(260); setMinHeight(220); setDefaultSize(260, 230, ImagePosition::CENTER, 0, 0); if (setupWindow != nullptr) setupWindow->registerWindowForReset(this); setActionEventId("OK"); mModel = new NamesModel; mItemList = CREATEWIDGETR(ListBox, this, mModel, "listbox.xml"); mScrollArea = new ScrollArea(this, mItemList, fromBool(getOptionBool("showbackground", false), Opaque), "sell_background.xml"); mScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); mSelectButton = new Button(this, mSelectButtonName, "select", BUTTON_SKIN, this); if (mAllowQuit == AllowQuit_true) { mQuitButton = new Button(this, // TRANSLATORS: sell dialog button _("Quit"), "quit", BUTTON_SKIN, this); } mSelectButton->setEnabled(false); mItemList->setDistributeMousePressed(false); mItemList->addSelectionListener(this); mItemList->setActionEventId("item"); mItemList->addActionListener(this); ContainerPlacer placer(nullptr, nullptr); placer = getPlacer(0, 0); placer(0, 0, mScrollArea, 8, 5).setPadding(3); if (mQuitButton != nullptr) { placer(6, 5, mSelectButton, 1, 1); placer(7, 5, mQuitButton, 1, 1); } else { placer(7, 5, mSelectButton, 1, 1); } Layout &layout = getLayout(); layout.setRowHeight(0, LayoutType::SET); center(); loadWindowState(); setVisible(Visible_true); enableVisibleSound(true); }
void BuyDialog::init() { setWindowName("Buy"); setResizable(true); setCloseButton(true); setStickyButtonLock(true); setMinWidth(260); setMinHeight(220); setDefaultSize(260, 230, ImageRect::CENTER); if (setupWindow) setupWindow->registerWindowForReset(this); mShopItems = new ShopItems; mShopItemList = new ShopListBox(this, mShopItems, mShopItems); mShopItemList->postInit(); mScrollArea = new ScrollArea(this, mShopItemList, getOptionBool("showbackground"), "buy_background.xml"); mScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); mSlider = new Slider(this, 1.0, 1.0); mQuantityLabel = new Label(this, strprintf( "%d / %d", mAmountItems, mMaxItems)); mQuantityLabel->setAlignment(Graphics::CENTER); // TRANSLATORS: buy dialog label mMoneyLabel = new Label(this, strprintf( _("Price: %s / Total: %s"), "", "")); mAmountField = new IntTextField(this, 1, 1, 123); mAmountField->setActionEventId("amount"); mAmountField->addActionListener(this); mAmountField->setSendAlwaysEvents(true); mAmountField->setEnabled(false); // TRANSLATORS: buy dialog label mAmountLabel = new Label(this, _("Amount:")); mAmountLabel->adjustSize(); // TRANSLATORS: This is a narrow symbol used to denote 'increasing'. // You may change this symbol if your language uses another. mIncreaseButton = new Button(this, _("+"), "inc", this); // TRANSLATORS: This is a narrow symbol used to denote 'decreasing'. // You may change this symbol if your language uses another. mDecreaseButton = new Button(this, _("-"), "dec", this); // TRANSLATORS: buy dialog button mBuyButton = new Button(this, mNpcId == fromInt(Items, BeingId) ? _("Create") :_("Buy"), "buy", this); // TRANSLATORS: buy dialog button mQuitButton = new Button(this, _("Quit"), "quit", this); // TRANSLATORS: buy dialog button mAddMaxButton = new Button(this, _("Max"), "max", this); mDecreaseButton->adjustSize(); mDecreaseButton->setWidth(mIncreaseButton->getWidth()); mIncreaseButton->setEnabled(false); mDecreaseButton->setEnabled(false); mBuyButton->setEnabled(false); mSlider->setEnabled(false); mSlider->setActionEventId("slider"); mSlider->addActionListener(this); mShopItemList->setDistributeMousePressed(false); mShopItemList->setActionEventId("buy"); mShopItemList->addActionListener(this); mShopItemList->addSelectionListener(this); mFilterTextField->setWidth(100); ContainerPlacer placer = getPlacer(0, 0); placer(0, 0, mScrollArea, 9, 5).setPadding(3); placer(0, 5, mDecreaseButton); placer(1, 5, mSlider, 4); placer(5, 5, mIncreaseButton); placer(6, 5, mQuantityLabel, 2); placer(8, 5, mAddMaxButton); placer(0, 6, mAmountLabel, 2); placer(2, 6, mAmountField, 2); placer(0, 7, mMoneyLabel, 8); if (mSortDropDown) { placer(0, 8, mSortDropDown, 2); } else { // TRANSLATORS: buy dialog label mFilterLabel = new Label(this, _("Filter:")); mFilterLabel->adjustSize(); placer(0, 8, mFilterLabel, 2); } placer(2, 8, mFilterTextField, 2); placer(7, 8, mBuyButton); placer(8, 8, mQuitButton); Layout &layout = getLayout(); layout.setRowHeight(0, LayoutType::SET); center(); loadWindowState(); enableVisibleSound(true); instances.push_back(this); setVisible(Visible_true); if (mSortDropDown) mSortDropDown->setSelected(config.getIntValue("buySortOrder")); }
void SellDialog::postInit() { setWindowName("Sell"); setResizable(true); setCloseButton(true); setStickyButtonLock(true); setMinWidth(260); setMinHeight(220); setDefaultSize(260, 230, ImagePosition::CENTER); if (setupWindow) setupWindow->registerWindowForReset(this); // Create a ShopItems instance, that is aware of duplicate entries. mShopItems = new ShopItems(true); if (mAdvanced == Advanced_true) mShopItems->setMergeDuplicates(false); mShopItemList = CREATEWIDGETR(ShopListBox, this, mShopItems, mShopItems, ShopListBoxType::Unknown); mShopItemList->setProtectItems(true); mScrollArea = new ScrollArea(this, mShopItemList, fromBool(getOptionBool("showbackground"), Opaque), "sell_background.xml"); mScrollArea->setHorizontalScrollPolicy(ScrollArea::SHOW_NEVER); mSellButton = new Button(this, // TRANSLATORS: sell dialog button mAdvanced == Advanced_true ? _("Add") : _("Sell"), "presell", this); // TRANSLATORS: sell dialog button mQuitButton = new Button(this, _("Quit"), "quit", this); initButtons(); mSellButton->setEnabled(false); mShopItemList->setDistributeMousePressed(false); mShopItemList->setPriceCheck(false); mShopItemList->addSelectionListener(this); mShopItemList->setActionEventId("sell"); mShopItemList->addActionListener(this); ContainerPlacer placer; placer = getPlacer(0, 0); if (mIsSell == IsSell_true) { // TRANSLATORS: sell dialog button mIncreaseButton = new Button(this, _("+"), "inc", this); // TRANSLATORS: sell dialog button mDecreaseButton = new Button(this, _("-"), "dec", this); // TRANSLATORS: sell dialog button mAddMaxButton = new Button(this, _("Max"), "max", this); mSlider = new Slider(this, 1.0, 1.0); mQuantityLabel = new Label(this, strprintf( "%d / %d", mAmountItems, mMaxItems)); mQuantityLabel->setAlignment(Graphics::CENTER); // TRANSLATORS: sell dialog label mMoneyLabel = new Label(this, strprintf(_("Price: %s / Total: %s"), "", "")); if (mAdvanced == Advanced_true) { // TRANSLATORS: sell dialog button mConfirmButton = new Button(this, _("Sell"), "confirm", this); mConfirmButton->setEnabled(false); } mDecreaseButton->adjustSize(); mDecreaseButton->setWidth(mIncreaseButton->getWidth()); mIncreaseButton->setEnabled(false); mDecreaseButton->setEnabled(false); mSlider->setEnabled(false); mSlider->setActionEventId("slider"); mSlider->addActionListener(this); placer(0, 0, mScrollArea, 8, 5).setPadding(3); placer(0, 5, mDecreaseButton); placer(1, 5, mSlider, 3); placer(4, 5, mIncreaseButton); placer(5, 5, mQuantityLabel, 2); placer(7, 5, mAddMaxButton); placer(0, 6, mMoneyLabel, 8); if (mAdvanced == Advanced_true) { placer(5, 7, mSellButton); placer(6, 7, mConfirmButton); } else { placer(6, 7, mSellButton); } placer(7, 7, mQuitButton); } else { placer(0, 0, mScrollArea, 8, 5).setPadding(3); placer(6, 5, mSellButton); placer(7, 5, mQuitButton); } Layout &layout = getLayout(); layout.setRowHeight(0, LayoutType::SET); center(); loadWindowState(); instances.push_back(this); setVisible(Visible_true); enableVisibleSound(true); }
TradeWindow::TradeWindow(): Window(_("Trade: You")), mMyInventory(new Inventory(INVENTORY_SIZE)), mPartnerInventory(new Inventory(INVENTORY_SIZE)), mStatus(PROPOSING) { setWindowName("Trade"); setResizable(true); setCloseButton(true); setDefaultSize(386, 180, ImageRect::CENTER); setMinWidth(386); setMinHeight(180); std::string longestName = getFont()->getWidth(_("OK")) > getFont()->getWidth(_("Trade")) ? _("OK") : _("Trade"); mAddButton = new Button(_("Add"), "add", this); mOkButton = new Button("", "", this); // Will be filled in later int width = std::max(mOkButton->getFont()->getWidth(CAPTION_PROPOSE), mOkButton->getFont()->getWidth(CAPTION_CONFIRMED)); width = std::max(width, mOkButton->getFont()->getWidth(CAPTION_ACCEPT)); width = std::max(width, mOkButton->getFont()->getWidth(CAPTION_ACCEPTED)); mOkButton->setWidth(8 + width); mMyItemContainer = new ItemContainer(mMyInventory.get()); mMyItemContainer->addSelectionListener(this); ScrollArea *myScroll = new ScrollArea(mMyItemContainer); myScroll->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); mPartnerItemContainer = new ItemContainer(mPartnerInventory.get()); mPartnerItemContainer->addSelectionListener(this); ScrollArea *partnerScroll = new ScrollArea(mPartnerItemContainer); partnerScroll->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); mMoneyLabel = new Label(strprintf(_("You get %s."), "")); gcn::Label *mMoneyLabel2 = new Label(_("You give:")); mMoneyField = new TextField; mMoneyField->setWidth(40); mMoneyChangeButton = new Button(_("Change"), "money", this); place(1, 0, mMoneyLabel); place(0, 1, myScroll).setPadding(3); place(1, 1, partnerScroll).setPadding(3); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mMoneyLabel2); place(1, 0, mMoneyField); place(2, 0, mMoneyChangeButton).setHAlign(LayoutCell::LEFT); place = getPlacer(0, 2); place(0, 0, mAddButton); place(1, 0, mOkButton); Layout &layout = getLayout(); layout.extend(0, 2, 2, 1); layout.setRowHeight(1, Layout::AUTO_SET); layout.setRowHeight(2, 0); layout.setColWidth(0, Layout::AUTO_SET); layout.setColWidth(1, Layout::AUTO_SET); loadWindowState(); reset(); }
SellDialog::SellDialog(): Window(_("Sell")), mMaxItems(0), mAmountItems(0) { setWindowName("Sell"); setResizable(true); setCloseButton(true); setMinWidth(260); setMinHeight(230); setDefaultSize(260, 230, ImageRect::CENTER); // Create a ShopItems instance, that is aware of duplicate entries. mShopItems = new ShopItems(true); mShopItemList = new ShopListBox(mShopItems, mShopItems); mScrollArea = new ScrollArea(mShopItemList); mScrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); mSlider = new Slider(1.0); mQuantityLabel = new Label(strprintf("%d / %d", mAmountItems, mMaxItems)); mQuantityLabel->setAlignment(gcn::Graphics::CENTER); mMoneyLabel = new Label(strprintf(_("Price: %s / Total: %s"), "", "")); mIncreaseButton = new Button("+", "+", this); mDecreaseButton = new Button("-", "-", this); mSellButton = new Button(_("Sell"), "sell", this); mQuitButton = new Button(_("Quit"), "quit", this); mAddMaxButton = new Button(_("Max"), "max", this); mItemDescLabel = new Label(strprintf(_("Description: %s"), "")); mItemEffectLabel = new Label(strprintf(_("Effect: %s"), "")); mDecreaseButton->adjustSize(); mDecreaseButton->setWidth(mIncreaseButton->getWidth()); mIncreaseButton->setEnabled(false); mDecreaseButton->setEnabled(false); mSellButton->setEnabled(false); mSlider->setEnabled(false); mShopItemList->setPriceCheck(false); mShopItemList->addSelectionListener(this); mSlider->setActionEventId("slider"); mSlider->addActionListener(this); ContainerPlacer place; place = getPlacer(0, 0); place(0, 0, mScrollArea, 8, 5).setPadding(3); place(0, 5, mDecreaseButton); place(1, 5, mSlider, 3); place(4, 5, mIncreaseButton); place(5, 5, mQuantityLabel, 2); place(7, 5, mAddMaxButton); place(0, 6, mMoneyLabel, 8); place(0, 7, mItemEffectLabel, 8); place(0, 8, mItemDescLabel, 8); place(6, 9, mSellButton); place(7, 9, mQuitButton); Layout &layout = getLayout(); layout.setRowHeight(0, Layout::AUTO_SET); center(); loadWindowState(); }
CharCreateDialog::CharCreateDialog(Window *parent, int slot): Window(_("Create Character"), true, parent), mSlot(slot) { mPlayer = new Player(0, 0, NULL); mPlayer->setGender(GENDER_MALE); ResourceManager *resman = ResourceManager::getInstance(); mBackGround = resman->getImage("graphics/elektrik/gui_login_window.png"); gcn::Label *girisLabel = new gcn::Label(_("-=KARAKTER OLUŞTUR=-")); girisLabel->setPosition(150,140); girisLabel->setFont(font_bas_b_1_16); girisLabel->setForegroundColor(gcn::Color(0xaa,0xbb,0xcc)); girisLabel->adjustSize(); add(girisLabel); int numberOfHairColors = ColorDB::size(); srand((unsigned)time(0)); mHairStyle = rand() % mPlayer->getNumOfHairstyles(); mHairColor = rand() % numberOfHairColors; updateHair(); mNameField = new TextField(""); mNameLabel = new Label(_("Name:")); // TRANSLATORS: This is a narrow symbol used to denote 'next'. // You may change this symbol if your language uses another. mNextHairColorButton = new Button(_(">"), "nextcolor", this); // TRANSLATORS: This is a narrow symbol used to denote 'previous'. // You may change this symbol if your language uses another. mPrevHairColorButton = new Button(_("<"), "prevcolor", this); mHairColorLabel = new Label(_("Hair color:")); mNextHairStyleButton = new Button(_(">"), "nextstyle", this); mPrevHairStyleButton = new Button(_("<"), "prevstyle", this); mHairStyleLabel = new Label(_("Hair style:")); mCreateButton = new Button(_("Create"), "create", this); mCancelButton = new Button(_("Cancel"), "cancel", this); mMale = new RadioButton(_("Male"), "gender"); mFemale = new RadioButton(_("Female"), "gender"); // Default to a Male character mMale->setSelected(true); mMale->setActionEventId("gender"); mFemale->setActionEventId("gender"); mMale->addActionListener(this); mFemale->addActionListener(this); mPlayerBox = new PlayerBox(mPlayer); mPlayerBox->setWidth(74); mNameField->setActionEventId("create"); mNameField->addActionListener(this); mAttributesLeft = new Label(strprintf(_("Please distribute %d points"), 99)); int w = 200; int h = 330; ContainerPlacer place; place = getPlacer(5,15); place(0,0,mNameLabel); place(1,0,mNameField,2); place = getPlacer(5,16); place(0,0,mHairColorLabel); place(1,0,mPrevHairColorButton); place(2,0,mPlayerBox,1,10).setPadding(3); place(3,0,mNextHairColorButton); place(0,1,mHairStyleLabel); place(1,1,mPrevHairStyleButton); place(3,1,mNextHairStyleButton); reflowLayout(350,335); mCreateButton->setPosition(200,345); mCancelButton->setPosition(260,345); mCancelButton->setWidth(mCreateButton->getWidth()); add(mPlayerBox); add(mNameField); add(mNameLabel); add(mNextHairColorButton); add(mPrevHairColorButton); add(mHairColorLabel); add(mNextHairStyleButton); add(mPrevHairStyleButton); add(mHairStyleLabel); add(mCreateButton); add(mCancelButton); // add(mAttributesLeft); // add(mMale); // add(mFemale); setSize(573,507); center(); setVisible(true); mNameField->requestFocus(); }
ItemAmountWindow::ItemAmountWindow(Usage usage, Window *parent, Item *item, int maxRange): Window("", true, parent, "amount.xml"), mItemPriceTextField(nullptr), mGPLabel(nullptr), mItem(item), mMax(maxRange), mUsage(usage), mItemPriceSlide(nullptr), mItemsModal(nullptr), mPrice(0) { if (!mItem) { setVisible(false); return; } if (usage == ShopBuyAdd) mMax = 10000; else if (!mMax) mMax = mItem->getQuantity(); // Save keyboard state mEnabledKeyboard = keyboard.isEnabled(); keyboard.setEnabled(false); // Integer field mItemAmountTextField = new IntTextField(1); mItemAmountTextField->setRange(1, mMax); mItemAmountTextField->setWidth(35); mItemAmountTextField->addKeyListener(this); // Slider mItemAmountSlide = new Slider(1.0, mMax); mItemAmountSlide->setHeight(10); mItemAmountSlide->setActionEventId("slide"); mItemAmountSlide->addActionListener(this); if (mUsage == ShopBuyAdd || mUsage == ShopSellAdd) { // Integer field mItemPriceTextField = new IntTextField(1); mItemPriceTextField->setRange(1, 10000000); mItemPriceTextField->setWidth(35); mItemPriceTextField->addKeyListener(this); // Slider mItemPriceSlide = new Slider(1.0, 10000000); mItemPriceSlide->setHeight(10); mItemPriceSlide->setActionEventId("slidePrice"); mItemPriceSlide->addActionListener(this); mGPLabel = new Label(" GP"); } if (mUsage == ShopBuyAdd) { mItemsModal = new ItemsModal; mItemDropDown = new DropDown(mItemsModal); mItemDropDown->setActionEventId("itemType"); mItemDropDown->addActionListener(this); } //Item icon Image *image = item->getImage(); mItemIcon = new Icon(image); // Buttons Button *minusAmountButton = new Button(_("-"), "dec", this); Button *plusAmountButton = new Button(_("+"), "inc", this); Button *okButton = new Button(_("OK"), "ok", this); Button *cancelButton = new Button(_("Cancel"), "cancel", this); Button *addAllButton = new Button(_("All"), "all", this); minusAmountButton->adjustSize(); minusAmountButton->setWidth(plusAmountButton->getWidth()); // Set positions ContainerPlacer placer; placer = getPlacer(0, 0); int n = 0; if (mUsage == ShopBuyAdd) { placer(0, n, mItemDropDown, 8); n++; } placer(1, n, minusAmountButton); placer(2, n, mItemAmountTextField, 3); placer(5, n, plusAmountButton); placer(6, n, addAllButton); placer(0, n, mItemIcon, 1, 3); placer(1, n + 1, mItemAmountSlide, 7); if (mUsage == ShopBuyAdd || mUsage == ShopSellAdd) { Button *minusPriceButton = new Button(_("-"), "decPrice", this); Button *plusPriceButton = new Button(_("+"), "incPrice", this); minusPriceButton->adjustSize(); minusPriceButton->setWidth(plusPriceButton->getWidth()); placer(1, n + 2, minusPriceButton); placer(2, n + 2, mItemPriceTextField, 3); placer(5, n + 2, plusPriceButton); placer(6, n + 2, mGPLabel); placer(1, n + 3, mItemPriceSlide, 7); placer(4, n + 5, cancelButton); placer(5, n + 5, okButton); } else { placer(4, n + 2, cancelButton); placer(5, n + 2, okButton); } reflowLayout(225, 0); resetAmount(); switch (usage) { case TradeAdd: setCaption(_("Select amount of items to trade.")); break; case ItemDrop: setCaption(_("Select amount of items to drop.")); break; case StoreAdd: setCaption(_("Select amount of items to store.")); break; case StoreRemove: setCaption(_("Select amount of items to retrieve.")); break; case ItemSplit: setCaption(_("Select amount of items to split.")); break; case ShopBuyAdd: setCaption(_("Add to buy shop.")); break; case ShopSellAdd: setCaption(_("Add to sell shop.")); break; default: setCaption(_("Unknown.")); break; } setLocationRelativeTo(getParentWindow()); setVisible(true); mItemPopup = new ItemPopup; mItemIcon->addMouseListener(this); }