summaryrefslogtreecommitdiff
path: root/plugingui
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2015-11-29 21:30:22 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2015-11-29 21:30:22 +0100
commit25adc2eeda98d56c641ea6c33c019740fd332f98 (patch)
treee77f020515e413ecfc3e2bb18970bb2d6d3826e7 /plugingui
parent2aeb2c9cf4da7ded3f68c046f6fa2773dded44a8 (diff)
Add text alignment and one-time autosize to Label.
Diffstat (limited to 'plugingui')
-rw-r--r--plugingui/label.cc32
-rw-r--r--plugingui/label.h15
2 files changed, 40 insertions, 7 deletions
diff --git a/plugingui/label.cc b/plugingui/label.cc
index 18ba1e8..f4a2cc1 100644
--- a/plugingui/label.cc
+++ b/plugingui/label.cc
@@ -31,19 +31,28 @@
namespace GUI {
-Label::Label(GUI::Widget *parent)
+Label::Label(Widget *parent)
: Widget(parent)
- , font(":fontemboss.png")
{
}
-void Label::setText(std::string text)
+void Label::setText(const std::string& text)
{
_text = text;
repaintEvent(nullptr);
}
-void Label::repaintEvent(GUI::RepaintEvent* repaintEvent)
+void Label::setAlignment(TextAlignment alignment)
+{
+ this->alignment = alignment;
+}
+
+void Label::resizeToText()
+{
+ resize(font.textWidth(_text) + border, font.textHeight());
+}
+
+void Label::repaintEvent(RepaintEvent* repaintEvent)
{
Painter p(*this);
@@ -51,7 +60,20 @@ void Label::repaintEvent(GUI::RepaintEvent* repaintEvent)
p.setColour(Colour(1));
- p.drawText(10, (height() + font.textHeight()) / 2, font, _text, true);
+ int offset = 0;
+ switch(alignment) {
+ case TextAlignment::left:
+ offset = border;
+ break;
+ case TextAlignment::center:
+ offset = (width() - font.textWidth(_text)) / 2;
+ break;
+ case TextAlignment::right:
+ offset = width() - font.textWidth(_text) - border;
+ break;
+ }
+
+ p.drawText(offset, (height() + font.textHeight()) / 2, font, _text, true);
}
} // GUI::
diff --git a/plugingui/label.h b/plugingui/label.h
index 3f0b93f..794778d 100644
--- a/plugingui/label.h
+++ b/plugingui/label.h
@@ -34,11 +34,21 @@
namespace GUI {
+enum class TextAlignment {
+ left,
+ center,
+ right,
+};
+
class Label : public Widget {
public:
Label(Widget *parent);
- void setText(std::string text);
+ void setText(const std::string& text);
+
+ void setAlignment(TextAlignment alignment);
+
+ void resizeToText();
protected:
// From Widget:
@@ -47,7 +57,8 @@ protected:
private:
std::string _text;
Font font{":fontemboss.png"};
-
+ TextAlignment alignment{TextAlignment::left};
+ int border{0};
};
} // GUI::