summaryrefslogtreecommitdiff
path: root/src/gui/setup_colours.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/setup_colours.cpp')
-rw-r--r--src/gui/setup_colours.cpp66
1 files changed, 47 insertions, 19 deletions
diff --git a/src/gui/setup_colours.cpp b/src/gui/setup_colours.cpp
index 112925ae..49e08aeb 100644
--- a/src/gui/setup_colours.cpp
+++ b/src/gui/setup_colours.cpp
@@ -19,13 +19,16 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <vector>
+#include <string>
#include <guichan/listmodel.hpp>
#include <guichan/widgets/label.hpp>
#include <guichan/widgets/slider.hpp>
+#include "browserbox.h"
#include "colour.h"
+#include "itemlinkhandler.h"
+#include "listbox.h"
#include "scrollarea.h"
#include "setup_colours.h"
#include "slider.h"
@@ -36,19 +39,31 @@
#include "../configuration.h"
#include "../utils/gettext.h"
+#include "../utils/tostring.h"
Setup_Colours::Setup_Colours() :
mSelected(-1)
{
setOpaque(false);
- mColourBox = new gcn::ListBox(textColour);
+ mColourBox = new ListBox(textColour);
mColourBox->setActionEventId("colour_box");
mColourBox->addActionListener(this);
mScroll = new ScrollArea(mColourBox);
mScroll->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
- mScroll->setWidth(90);
+
+ mPreview = new BrowserBox(BrowserBox::AUTO_WRAP);
+ mPreview->setOpaque(false);
+
+ // Replace this later with a more appropriate link handler. For now, this'll
+ // do, as it'll do nothing when clicked on.
+ mPreview->setLinkHandler(new ItemLinkHandler());
+
+ mPreviewBox = new ScrollArea(mPreview);
+ mPreviewBox->setHeight(20);
+ mPreviewBox->setScrollPolicy(gcn::ScrollArea::SHOW_NEVER,
+ gcn::ScrollArea::SHOW_NEVER);
mRedLabel = new gcn::Label(_("Red: "));
@@ -59,7 +74,7 @@ Setup_Colours::Setup_Colours() :
mRedText->addListener(this);
mRedSlider = new Slider(0, 255);
- mRedSlider->setWidth(90);
+ mRedSlider->setWidth(160);
mRedSlider->setValue(mRedText->getValue());
mRedSlider->setActionEventId("slider_red");
mRedSlider->addActionListener(this);
@@ -73,7 +88,7 @@ Setup_Colours::Setup_Colours() :
mGreenText->addListener(this);
mGreenSlider = new Slider(0, 255);
- mGreenSlider->setWidth(90);
+ mGreenSlider->setWidth(160);
mGreenSlider->setValue(mGreenText->getValue());
mGreenSlider->setActionEventId("slider_green");
mGreenSlider->addActionListener(this);
@@ -87,7 +102,7 @@ Setup_Colours::Setup_Colours() :
mBlueText->addListener(this);
mBlueSlider = new Slider(0, 255);
- mBlueSlider->setWidth(90);
+ mBlueSlider->setWidth(160);
mBlueSlider->setValue(mBlueText->getValue());
mBlueSlider->setActionEventId("slider_blue");
mBlueSlider->addActionListener(this);
@@ -98,18 +113,19 @@ Setup_Colours::Setup_Colours() :
LayoutHelper h(this);
ContainerPlacer place = h.getPlacer(0, 0);
- place(0, 0, mScroll, 1, 3).setPadding(2);
- place(1, 0, mRedLabel, 2);
- place(3, 0, mRedSlider);
- place(4, 0, mRedText).setPadding(1);
- place(1, 1, mGreenLabel, 2);
- place(3, 1, mGreenSlider);
- place(4, 1, mGreenText).setPadding(1);
- place(1, 2, mBlueLabel, 2);
- place(3, 2, mBlueSlider);
- place(4, 2, mBlueText).setPadding(1);
-
- setDimension(gcn::Rectangle(0, 0, 290, 150));
+ place(0, 0, mScroll, 4, 7).setPadding(2);
+ place(0, 7, mPreviewBox, 4).setPadding(2);
+ place(0, 8, mRedLabel, 2);
+ place(2, 8, mRedSlider);
+ place(3, 8, mRedText).setPadding(1);
+ place(0, 9, mGreenLabel, 2);
+ place(2, 9, mGreenSlider);
+ place(3, 9, mGreenText).setPadding(1);
+ place(0, 10, mBlueLabel, 2);
+ place(2, 10, mBlueSlider);
+ place(3, 10, mBlueText).setPadding(1);
+
+ setDimension(gcn::Rectangle(0, 0, 290, 250));
}
Setup_Colours::~Setup_Colours()
@@ -135,6 +151,18 @@ void Setup_Colours::action(const gcn::ActionEvent &event)
{
mSelected = mColourBox->getSelected();
int col = textColour->getColourAt(mSelected);
+ char ch = textColour->getColourCharAt(mSelected);
+ std::string msg;
+
+ if (ch == '<')
+ msg = toString("@@|") +
+ _("This is what the color looks like") + "@@";
+ else
+ msg = "##" + toString(ch) +
+ _("This is what the color looks like");
+
+ mPreview->clearRows();
+ mPreview->addRow(msg);
setEntry(mRedSlider, mRedText, col >> 16);
setEntry(mGreenSlider, mGreenText, (col >> 8) & 0xff);
setEntry(mBlueSlider, mBlueText, col & 0xff);
@@ -169,7 +197,7 @@ void Setup_Colours::action(const gcn::ActionEvent &event)
}
}
-void Setup_Colours::setEntry(Slider *s, TextField *t, int value)
+void Setup_Colours::setEntry(gcn::Slider *s, TextField *t, int value)
{
s->setValue(value);
char buffer[100];