diff options
Diffstat (limited to 'src/gui/setup_colours.cpp')
-rw-r--r-- | src/gui/setup_colours.cpp | 66 |
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]; |