00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "gui/help.h"
00023
00024 #include "gui/widgets/button.h"
00025 #include "gui/widgets/browserbox.h"
00026 #include "gui/widgets/layout.h"
00027 #include "gui/widgets/scrollarea.h"
00028
00029 #include "resources/resourcemanager.h"
00030
00031 #include "utils/gettext.h"
00032
00033 HelpWindow::HelpWindow():
00034 Window(_("Help"))
00035 {
00036 setMinWidth(300);
00037 setMinHeight(250);
00038 setContentSize(455, 350);
00039 setWindowName("Help");
00040 setResizable(true);
00041
00042 setDefaultSize(500, 400, ImageRect::CENTER);
00043
00044 mBrowserBox = new BrowserBox;
00045 mBrowserBox->setOpaque(false);
00046 mScrollArea = new ScrollArea(mBrowserBox);
00047 Button *okButton = new Button(_("Close"), "close", this);
00048
00049 mScrollArea->setDimension(gcn::Rectangle(5, 5, 445,
00050 335 - okButton->getHeight()));
00051 okButton->setPosition(450 - okButton->getWidth(),
00052 345 - okButton->getHeight());
00053
00054 mBrowserBox->setLinkHandler(this);
00055
00056 place(0, 0, mScrollArea, 5, 3).setPadding(3);
00057 place(4, 3, okButton);
00058
00059 Layout &layout = getLayout();
00060 layout.setRowHeight(0, Layout::AUTO_SET);
00061
00062 loadWindowState();
00063 }
00064
00065 void HelpWindow::action(const gcn::ActionEvent &event)
00066 {
00067 if (event.getId() == "close")
00068 {
00069 setVisible(false);
00070 }
00071 }
00072
00073 void HelpWindow::handleLink(const std::string &link)
00074 {
00075 std::string helpFile = link;
00076 loadHelp(helpFile);
00077 }
00078
00079 void HelpWindow::loadHelp(const std::string &helpFile)
00080 {
00081 mBrowserBox->clearRows();
00082
00083 loadFile("header");
00084 loadFile(helpFile);
00085
00086 mScrollArea->setVerticalScrollAmount(0);
00087 setVisible(true);
00088 }
00089
00090 void HelpWindow::loadFile(const std::string &file)
00091 {
00092 ResourceManager *resman = ResourceManager::getInstance();
00093 std::vector<std::string> lines =
00094 resman->loadTextFile("help/" + file + ".txt");
00095
00096 for (unsigned int i = 0; i < lines.size(); ++i)
00097 {
00098 mBrowserBox->addRow(lines[i]);
00099 }
00100 }