summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIra Rice <irarice@gmail.com>2009-01-28 16:58:56 -0700
committerIra Rice <irarice@gmail.com>2009-01-28 16:58:56 -0700
commit4418d3678337276070e6d46d8011ce052be388a5 (patch)
tree03137a83a020670cfce5a7044238314509025464
parent1ca8d08b7619e1958371ce8d82e201b82ae39e32 (diff)
downloadmana-4418d3678337276070e6d46d8011ce052be388a5.tar.gz
mana-4418d3678337276070e6d46d8011ce052be388a5.tar.bz2
mana-4418d3678337276070e6d46d8011ce052be388a5.tar.xz
mana-4418d3678337276070e6d46d8011ce052be388a5.zip
Moved NPC text back to using the textbox. Rationale is that the textbox
code is in much better shape than the browserbox code at the moment, and that the move to using the browserbox was a bit silly, as textbox already wraps. Signed-off-by: Ira Rice <irarice@gmail.com>
-rw-r--r--src/gui/npc_text.cpp40
-rw-r--r--src/gui/npc_text.h13
2 files changed, 38 insertions, 15 deletions
diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp
index a2e043d1..b2256f07 100644
--- a/src/gui/npc_text.cpp
+++ b/src/gui/npc_text.cpp
@@ -22,9 +22,9 @@
#include <string>
#include "npc_text.h"
-#include "browserbox.h"
#include "button.h"
#include "scrollarea.h"
+#include "textbox.h"
#include "widgets/layout.h"
@@ -42,10 +42,11 @@ NpcTextDialog::NpcTextDialog():
setDefaultSize(0, 0, 260, 200);
- mBrowserBox = new BrowserBox(BrowserBox::AUTO_WRAP);
- mBrowserBox->setOpaque(false);
+ mTextBox = new TextBox;
+ mTextBox->setEditable(false);
+ mTextBox->setOpaque(false);
- scrollArea = new ScrollArea(mBrowserBox);
+ scrollArea = new ScrollArea(mTextBox);
okButton = new Button(_("OK"), "ok", this);
scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
@@ -61,30 +62,43 @@ NpcTextDialog::NpcTextDialog():
setLocationRelativeTo(getParent());
}
-void NpcTextDialog::clearText()
-{
- mBrowserBox->clearRows();
-}
-
void NpcTextDialog::setText(const std::string &text)
{
- mBrowserBox->clearRows();
- mBrowserBox->addRow(text);
+ const gcn::Rectangle &area = getChildrenArea();
+ const int width = area.width;
+
+ mText = text;
+ mTextBox->setMinWidth(width - 30);
+ mTextBox->setTextWrapped(mText);
}
void NpcTextDialog::addText(const std::string &text)
{
- mBrowserBox->addRow(text);
+ setText(mText + text + "\n");
}
void NpcTextDialog::action(const gcn::ActionEvent &event)
{
if (event.getId() == "ok")
{
- clearText();
+ setText("");
setVisible(false);
if (current_npc)
current_npc->nextDialog();
current_npc = 0;
}
}
+
+void NpcTextDialog::widgetResized(const gcn::Event &event)
+{
+ Window::widgetResized(event);
+
+ const gcn::Rectangle &area = getChildrenArea();
+
+ mTextBox->setMinWidth(area.width - 30);
+ mTextBox->setTextWrapped(mText);
+
+ // Set the text again so that it gets wrapped according to the new size
+ mTextBox->setTextWrapped(mText);
+}
+
diff --git a/src/gui/npc_text.h b/src/gui/npc_text.h
index b4b6f1af..4e0d33aa 100644
--- a/src/gui/npc_text.h
+++ b/src/gui/npc_text.h
@@ -29,7 +29,7 @@
#include "scrollarea.h"
#include "window.h"
-class BrowserBox;
+class TextBox;
/**
* The npc text dialog.
@@ -71,10 +71,19 @@ class NpcTextDialog : public Window, public gcn::ActionListener
*/
void addText(const std::string &string);
+ /**
+ * Called when resizing the window.
+ *
+ * @param event The calling event
+ */
+ void widgetResized(const gcn::Event &event);
+
private:
gcn::Button *okButton;
gcn::ScrollArea *scrollArea;
- BrowserBox *mBrowserBox;
+ TextBox *mTextBox;
+
+ std::string mText;
};
#endif // NPC_TEXT_H