2016-06-15 03:32:35 +00:00
|
|
|
#pragma once
|
|
|
|
|
2016-12-05 19:41:00 +00:00
|
|
|
#include <map>
|
|
|
|
|
2016-06-15 03:32:35 +00:00
|
|
|
#include "common.hpp"
|
2016-12-26 16:06:28 +00:00
|
|
|
#include "components/types.hpp"
|
2016-11-19 05:22:44 +00:00
|
|
|
POLYBAR_NS
|
2016-06-15 03:32:35 +00:00
|
|
|
|
2016-12-05 19:41:00 +00:00
|
|
|
using std::map;
|
|
|
|
|
2016-11-19 14:49:03 +00:00
|
|
|
// fwd decl
|
2016-06-15 03:32:35 +00:00
|
|
|
using namespace drawtypes;
|
2020-11-22 22:05:45 +00:00
|
|
|
namespace modules {
|
|
|
|
struct module_interface;
|
|
|
|
}
|
2016-06-15 03:32:35 +00:00
|
|
|
|
|
|
|
class builder {
|
|
|
|
public:
|
2016-12-31 03:32:11 +00:00
|
|
|
explicit builder(const bar_settings& bar);
|
2016-06-15 03:32:35 +00:00
|
|
|
|
2019-01-12 13:51:54 +00:00
|
|
|
void reset();
|
2016-11-02 19:22:45 +00:00
|
|
|
string flush();
|
2016-12-26 16:06:28 +00:00
|
|
|
void append(string text);
|
2019-12-11 20:38:21 +00:00
|
|
|
void node(string str);
|
|
|
|
void node(string str, int font_index);
|
|
|
|
void node(const label_t& label);
|
|
|
|
void node_repeat(const string& str, size_t n);
|
|
|
|
void node_repeat(const label_t& label, size_t n);
|
2020-05-15 17:42:32 +00:00
|
|
|
void offset(int pixels);
|
2016-12-26 16:06:28 +00:00
|
|
|
void space(size_t width);
|
|
|
|
void space();
|
|
|
|
void remove_trailing_space(size_t len);
|
|
|
|
void remove_trailing_space();
|
2016-11-02 19:22:45 +00:00
|
|
|
void font(int index);
|
2016-11-24 18:24:47 +00:00
|
|
|
void font_close();
|
2019-10-27 21:41:18 +00:00
|
|
|
void background(rgba color);
|
2016-11-24 18:24:47 +00:00
|
|
|
void background_close();
|
2019-10-27 21:41:18 +00:00
|
|
|
void color(rgba color);
|
2016-11-24 18:24:47 +00:00
|
|
|
void color_close();
|
2019-10-27 21:41:18 +00:00
|
|
|
void line_color(const rgba& color);
|
2016-11-24 18:24:47 +00:00
|
|
|
void line_color_close();
|
2019-10-27 21:41:18 +00:00
|
|
|
void overline_color(rgba color);
|
2016-11-24 18:24:47 +00:00
|
|
|
void overline_color_close();
|
2019-10-27 21:41:18 +00:00
|
|
|
void underline_color(rgba color);
|
2016-11-24 18:24:47 +00:00
|
|
|
void underline_color_close();
|
2019-10-27 21:41:18 +00:00
|
|
|
void overline(const rgba& color = rgba{});
|
2016-11-24 18:24:47 +00:00
|
|
|
void overline_close();
|
2019-10-27 21:41:18 +00:00
|
|
|
void underline(const rgba& color = rgba{});
|
2016-11-24 18:24:47 +00:00
|
|
|
void underline_close();
|
2019-01-12 13:51:54 +00:00
|
|
|
void control(controltag tag);
|
2020-05-24 16:35:12 +00:00
|
|
|
void action(mousebtn index, string action);
|
2020-11-22 22:05:45 +00:00
|
|
|
void action(mousebtn btn, const modules::module_interface& module, string action, string data);
|
2020-05-24 16:35:12 +00:00
|
|
|
void action(mousebtn index, string action, const label_t& label);
|
2020-11-22 22:05:45 +00:00
|
|
|
void action(mousebtn btn, const modules::module_interface& module, string action, string data, const label_t& label);
|
2020-05-24 16:35:12 +00:00
|
|
|
void action_close();
|
2016-06-15 03:32:35 +00:00
|
|
|
|
|
|
|
protected:
|
2016-11-24 18:24:47 +00:00
|
|
|
|
2016-11-25 12:55:15 +00:00
|
|
|
void tag_open(syntaxtag tag, const string& value);
|
2016-11-24 18:24:47 +00:00
|
|
|
void tag_open(attribute attr);
|
|
|
|
void tag_close(syntaxtag tag);
|
|
|
|
void tag_close(attribute attr);
|
2016-06-15 03:32:35 +00:00
|
|
|
|
|
|
|
private:
|
2016-12-26 16:06:28 +00:00
|
|
|
const bar_settings m_bar;
|
2016-12-26 09:37:14 +00:00
|
|
|
string m_output;
|
|
|
|
|
2016-12-26 16:06:28 +00:00
|
|
|
map<syntaxtag, int> m_tags{};
|
|
|
|
map<syntaxtag, string> m_colors{};
|
2018-12-28 16:10:52 +00:00
|
|
|
map<attribute, bool> m_attrs{};
|
2016-12-26 09:37:14 +00:00
|
|
|
|
2017-01-19 10:11:28 +00:00
|
|
|
int m_fontindex{0};
|
2016-06-15 03:32:35 +00:00
|
|
|
};
|
|
|
|
|
2016-11-19 05:22:44 +00:00
|
|
|
POLYBAR_NS_END
|