diff options
author | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2008-05-19 10:48:18 +0000 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2008-05-19 10:48:18 +0000 |
commit | 0c869fc47a30616967cb8b69af9ec772566d7076 (patch) | |
tree | 7202c51c95648dd3862a57f21eb82fc9cc0b7b69 /src/gui/popup_box.cpp | |
parent | 8d3028707f0c5b65c3a78178f63a0cccc9a0c9a8 (diff) | |
download | mana-0c869fc47a30616967cb8b69af9ec772566d7076.tar.gz mana-0c869fc47a30616967cb8b69af9ec772566d7076.tar.bz2 mana-0c869fc47a30616967cb8b69af9ec772566d7076.tar.xz mana-0c869fc47a30616967cb8b69af9ec772566d7076.zip |
Removed the PopupBox class and used gcn::DropDown instead. It has clipping
issues, but it would be better to fix those instead of using this complicated
workaround.
Diffstat (limited to 'src/gui/popup_box.cpp')
-rw-r--r-- | src/gui/popup_box.cpp | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/src/gui/popup_box.cpp b/src/gui/popup_box.cpp deleted file mode 100644 index 4cac2169..00000000 --- a/src/gui/popup_box.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - * The Mana World - * Copyright 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * The Mana World is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * The Mana World is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "popup_box.h" -#include "window.h" -#include "browserbox.h" - -#include <iostream> -#include <sstream> - -class PoppedSelectionWindow : public Window -{ -public: - PoppedSelectionWindow(PopupBox *owner): - mOwner(owner) - { - setResizable(false); - setTitleBarHeight(0); - mShowTitle = false; - - mBrowserBox = new BrowserBox(); - mBrowserBox->setPosition(4, 4); - mBrowserBox->setHighlightMode(BrowserBox::BACKGROUND); - mBrowserBox->setOpaque(false); - add(mBrowserBox); - mBrowserBox->setLinkHandler(owner); - - initModel(); - } - - void initModel(void) - { - mBrowserBox->clearRows(); - gcn::ListModel *model = mOwner->getListModel(); - for (int i = 0; i < model->getNumberOfElements(); i++) { - std::stringstream s; - s << "@@" << i << "|" << model->getElementAt(i) << "@@"; - mBrowserBox->addRow(s.str()); - } - - setContentSize(mBrowserBox->getWidth() + 8, mBrowserBox->getHeight() + 8); - } - -protected: - BrowserBox *mBrowserBox; - PopupBox *mOwner; -}; - -PopupBox::PopupBox(gcn::ListModel *list_model) : - DropDown(list_model), - mWindow(NULL) -{ -} - -PopupBox::~PopupBox(void) -{ - if (mWindow) - delete mWindow; -} - -//////////////////////////////////////// -// Widget ops - -void -PopupBox::draw(gcn::Graphics *graphics) -{ - // fill background - graphics->setColor(gcn::Color(0xd0, 0xd0, 0xd0)); - graphics->fillRectangle(gcn::Rectangle(0, 0, getWidth(), getHeight())); - - // draw frame-ish object - graphics->setColor(gcn::Color(0xc0, 0xc0, 0xc0)); - graphics->drawRectangle(gcn::Rectangle(0, 0, getWidth(), getHeight())); - graphics->setColor(gcn::Color(0xe0, 0xe0, 0xe0)); - graphics->drawLine(0, getHeight(), getWidth(), getHeight()); - graphics->drawLine(getWidth(), 0, getWidth(), getHeight()); - - graphics->drawText(getListModel()->getElementAt(getSelected()), 0, 0); -} - -//////////////////////////////////////// -// MouseListener ops - -void -PopupBox::mousePressed(gcn::MouseEvent& mouseEvent) -{ - if (0 <= mouseEvent.getY() - && mouseEvent.getY() < getHeight() - && mouseEvent.getX() >= 0 - && mouseEvent.getX() < getWidth() - && mouseEvent.getButton() == gcn::MouseEvent::LEFT - && mouseEvent.getSource() == this) { - if (mWindow == NULL) { - mWindow = new PoppedSelectionWindow(this); - mWindow->resizeToContent(); - } - - int x, y; - getAbsolutePosition(x, y); - mWindow->setPosition(mouseEvent.getX() + x, - mouseEvent.getY() + y); - mWindow->setVisible(true); - mWindow->requestMoveToTop(); - } -} - -//////////////////////////////////////// -// LinkHandler ops - -void -PopupBox::handleLink(const std::string &link) -{ - if (mWindow) - mWindow->setVisible(false); - - std::stringstream s; - s << link; - int index; - s >> index; - setSelected(index); -} |