46 #if !defined (USE_FINAL_H) && !defined (COMPILE_FINAL_CUT) 47 #error "Only <final/final.h> can be included directly." 52 #include "final/fwidget.h" 53 #include "final/fwidgetcolors.h" 66 using FWidget::setEnable;
67 using FWidget::delAccelerator;
80 ~
FLabel() noexcept
override;
90 template <
typename typeT>
91 auto operator << (
const typeT&) ->
FLabel&;
92 auto operator << (UniChar) ->
FLabel&;
93 auto operator << (
const wchar_t) ->
FLabel&;
102 auto getClassName()
const ->
FString override;
103 auto getAccelWidget() ->
FWidget*;
104 auto getAlignment()
const noexcept -> Align;
108 void setAccelWidget (
FWidget* =
nullptr);
109 void setAlignment (Align) noexcept;
110 void setEmphasis (
bool =
true) noexcept;
111 void unsetEmphasis() noexcept;
112 void resetColors()
override;
113 void setReverseMode (
bool =
true) noexcept;
114 void unsetReverseMode() noexcept;
115 void setEnable (
bool =
true)
override;
116 void setNumber (uLong);
117 void setNumber (
long);
118 void setNumber (
float,
int = FLT_DIG);
119 void setNumber (
double,
int = DBL_DIG);
120 void setNumber (lDouble,
int = LDBL_DIG);
124 auto hasEmphasis()
const noexcept -> bool;
125 auto hasReverseMode()
const noexcept -> bool;
128 void hide()
override;
136 void cb_accelWidgetDestroyed();
140 static constexpr
auto NOT_SET =
static_cast<std::size_t
>(-1);
144 void setHotkeyAccelerator();
145 auto getAlignOffset (
const std::size_t)
const -> std::size_t;
146 void draw()
override;
147 void drawMultiLine();
148 void drawSingleLine();
149 void printHotkeyChar (
wchar_t);
150 void printLineContent (
FString&, std::size_t);
154 FStringList multiline_text{};
156 FWidget* accel_widget{
nullptr};
157 Align alignment{Align::Left};
158 std::size_t align_offset{0};
159 std::size_t hotkeypos{NOT_SET};
160 std::size_t column_width{0};
161 FColor emphasis_color{FColor::Default};
162 FColor ellipsis_color{FColor::Default};
163 bool multiline{
false};
164 bool emphasis{
false};
165 bool reverse_mode{
false};
170 template <
typename typeT>
171 inline auto FLabel::operator << (
const typeT& s) ->
FLabel&
180 inline auto FLabel::getClassName()
const ->
FString 184 inline auto FLabel::getAccelWidget () ->
FWidget*
185 {
return accel_widget; }
188 inline auto FLabel::getAlignment()
const noexcept -> Align
189 {
return alignment; }
192 inline auto FLabel::getText() & ->
FString&
196 inline void FLabel::setEmphasis (
bool enable) noexcept
197 { emphasis = enable; }
200 inline void FLabel::unsetEmphasis() noexcept
201 { setEmphasis(
false); }
204 inline void FLabel::setReverseMode (
bool enable) noexcept
205 { reverse_mode = enable; }
208 inline void FLabel::unsetReverseMode() noexcept
209 { setReverseMode(
false); }
212 inline void FLabel::setNumber (uLong num)
213 { setText(
FString().setNumber(num)); }
216 inline void FLabel::setNumber (
long num)
217 { setText(
FString().setNumber(num)); }
220 inline void FLabel::setNumber (
float num,
int precision)
221 { setText(
FString().setNumber(num, precision)); }
224 inline void FLabel::setNumber (
double num,
int precision)
225 { setText(
FString().setNumber(num, precision)); }
228 inline void FLabel::setNumber (lDouble num,
int precision)
229 { setText(
FString().setNumber(num, precision)); }
232 inline auto FLabel::hasEmphasis()
const noexcept ->
bool 236 inline auto FLabel::hasReverseMode()
const noexcept ->
bool 237 {
return reverse_mode; }
240 inline void FLabel::clear()
Definition: class_template.cpp:25