feat: Label maxlen property
label-NAME-maxlen = N label-NAME-ellipsis = bool Fixes jaagr/lemonbuddy#49
This commit is contained in:
parent
afb787f0d7
commit
c3f84c22f0
@ -281,7 +281,7 @@ The configuration syntax is based on the `ini` file format.
|
|||||||
;
|
;
|
||||||
; The rest of the drawtypes follow the same pattern.
|
; The rest of the drawtypes follow the same pattern.
|
||||||
;
|
;
|
||||||
; label-NAME[-(foreground|background|(under|over)line|font|padding)] = ?
|
; label-NAME[-(foreground|background|(under|over)line|font|padding|maxlen|ellipsis)] = ?
|
||||||
; icon-NAME[-(foreground|background|(under|over)line|font|padding)] = ?
|
; icon-NAME[-(foreground|background|(under|over)line|font|padding)] = ?
|
||||||
; ramp-NAME-[0-9]+[-(foreground|background|(under|over)line|font|padding)] = ?
|
; ramp-NAME-[0-9]+[-(foreground|background|(under|over)line|font|padding)] = ?
|
||||||
; animation-NAME-[0-9]+[-(foreground|background|(under|over)line|font|padding)] = ?
|
; animation-NAME-[0-9]+[-(foreground|background|(under|over)line|font|padding)] = ?
|
||||||
@ -300,6 +300,10 @@ The configuration syntax is based on the `ini` file format.
|
|||||||
format-offline = <label-offline>
|
format-offline = <label-offline>
|
||||||
format-offline-offset = -8
|
format-offline-offset = -8
|
||||||
|
|
||||||
|
; Cap the song label without trailing ellipsis
|
||||||
|
label-song-maxlen = 30
|
||||||
|
label-song-ellipsis = false
|
||||||
|
|
||||||
; By only specifying alpha value, it will be applied to the bar's default foreground
|
; By only specifying alpha value, it will be applied to the bar's default foreground
|
||||||
label-time-foreground = #66
|
label-time-foreground = #66
|
||||||
|
|
||||||
|
@ -9,11 +9,13 @@ namespace drawtypes
|
|||||||
{
|
{
|
||||||
std::string text, fg, bg, ul, ol;
|
std::string text, fg, bg, ul, ol;
|
||||||
int font = 0, padding = 0, margin = 0;
|
int font = 0, padding = 0, margin = 0;
|
||||||
|
size_t maxlen = 0;
|
||||||
|
bool ellipsis = true;
|
||||||
|
|
||||||
Label(std::string text, int font)
|
Label(std::string text, int font)
|
||||||
: text(text), font(font){}
|
: text(text), font(font){}
|
||||||
Label(std::string text, std::string fg = "", std::string bg = "", std::string ul = "", std::string ol = "", int font = 0, int padding = 0, int margin = 0)
|
Label(std::string text, std::string fg = "", std::string bg = "", std::string ul = "", std::string ol = "", int font = 0, int padding = 0, int margin = 0, size_t maxlen = 0, bool ellipsis = true)
|
||||||
: text(text), fg(fg), bg(bg), ul(ul), ol(ol), font(font), padding(padding), margin(margin){}
|
: text(text), fg(fg), bg(bg), ul(ul), ol(ol), font(font), padding(padding), margin(margin), maxlen(maxlen), ellipsis(ellipsis){}
|
||||||
|
|
||||||
operator bool() {
|
operator bool() {
|
||||||
return !this->text.empty();
|
return !this->text.empty();
|
||||||
|
@ -6,7 +6,7 @@ namespace drawtypes
|
|||||||
{
|
{
|
||||||
std::unique_ptr<Label> Label::clone() {
|
std::unique_ptr<Label> Label::clone() {
|
||||||
return std::unique_ptr<Label> { new Label(
|
return std::unique_ptr<Label> { new Label(
|
||||||
this->text, this->fg, this->bg, this->ul, this->ol, this->font, this->padding, this->margin) };
|
this->text, this->fg, this->bg, this->ul, this->ol, this->font, this->padding, this->margin, this->maxlen, this->ellipsis) };
|
||||||
}
|
}
|
||||||
|
|
||||||
void Label::replace_token(std::string token, std::string replacement) {
|
void Label::replace_token(std::string token, std::string replacement) {
|
||||||
@ -37,7 +37,9 @@ namespace drawtypes
|
|||||||
config::get<std::string>(config_path, label_name +"-overline", ""),
|
config::get<std::string>(config_path, label_name +"-overline", ""),
|
||||||
config::get<int>(config_path, label_name +"-font", 0),
|
config::get<int>(config_path, label_name +"-font", 0),
|
||||||
config::get<int>(config_path, label_name +"-padding", 0),
|
config::get<int>(config_path, label_name +"-padding", 0),
|
||||||
config::get<int>(config_path, label_name +"-margin", 0)) };
|
config::get<int>(config_path, label_name +"-margin", 0),
|
||||||
|
config::get<size_t>(config_path, label_name +"-maxlen", 0),
|
||||||
|
config::get<bool>(config_path, label_name +"-ellipsis", true)) };
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Label> get_optional_config_label(std::string config_path, std::string label_name, std::string def) {
|
std::unique_ptr<Label> get_optional_config_label(std::string config_path, std::string label_name, std::string def) {
|
||||||
|
@ -211,6 +211,15 @@ void Builder::node(drawtypes::Label *label, bool add_space)
|
|||||||
{
|
{
|
||||||
if (!*label) return;
|
if (!*label) return;
|
||||||
|
|
||||||
|
auto text = label->text;
|
||||||
|
|
||||||
|
if (label->maxlen > 0) {
|
||||||
|
text.resize(label->maxlen);
|
||||||
|
|
||||||
|
if (label->ellipsis && label->text.length() > label->maxlen)
|
||||||
|
text.append("...");
|
||||||
|
}
|
||||||
|
|
||||||
if ((label->ol.empty() && this->o > 0) || (this->o > 0 && label->margin > 0))
|
if ((label->ol.empty() && this->o > 0) || (this->o > 0 && label->margin > 0))
|
||||||
this->overline_close(true);
|
this->overline_close(true);
|
||||||
if ((label->ul.empty() && this->u > 0) || (this->u > 0 && label->margin > 0))
|
if ((label->ul.empty() && this->u > 0) || (this->u > 0 && label->margin > 0))
|
||||||
@ -228,7 +237,7 @@ void Builder::node(drawtypes::Label *label, bool add_space)
|
|||||||
this->color(label->fg);
|
this->color(label->fg);
|
||||||
if (label->padding > 0)
|
if (label->padding > 0)
|
||||||
this->space(label->padding);
|
this->space(label->padding);
|
||||||
this->node(label->text, label->font, add_space);
|
this->node(text, label->font, add_space);
|
||||||
if (label->padding > 0)
|
if (label->padding > 0)
|
||||||
this->space(label->padding);
|
this->space(label->padding);
|
||||||
this->color_close(lazy_closing && label->margin > 0);
|
this->color_close(lazy_closing && label->margin > 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user