1 /***************************************************************************
2 * Copyright (C) 2008-2016 by Andrzej Rybczak *
3 * electricityispower@gmail.com *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
19 ***************************************************************************/
21 #ifndef NCMPCPP_SCROLLPAD_H
22 #define NCMPCPP_SCROLLPAD_H
25 #include "strbuffer.h"
29 /// Scrollpad is specialized window that holds large portions of text and
30 /// supports scrolling if the amount of it is bigger than the window area.
31 struct Scrollpad
: public Window
35 Scrollpad(size_t startx
, size_t starty
, size_t width
, size_t height
,
36 const std::string
&title
, Color color
, Border border
);
38 // override a few Window functions
39 virtual void refresh() override
;
40 virtual void scroll(Scroll where
) override
;
41 virtual void resize(size_t new_width
, size_t new_height
) override
;
42 virtual void clear() override
;
44 const std::string
&buffer();
49 bool setProperties(Color begin
, const std::string
&s
, Color end
,
50 size_t flags
, size_t id
= -2);
51 bool setProperties(Format begin
, const std::string
&s
, Format end
,
52 size_t flags
, size_t id
= -2);
53 void removeProperties(size_t id
= -2);
55 Scrollpad
&operator<<(int n
) { return write(n
); }
56 Scrollpad
&operator<<(long int n
) { return write(n
); }
57 Scrollpad
&operator<<(unsigned int n
) { return write(n
); }
58 Scrollpad
&operator<<(unsigned long int n
) { return write(n
); }
59 Scrollpad
&operator<<(char c
) { return write(c
); }
60 Scrollpad
&operator<<(const char *s
) { return write(s
); }
61 Scrollpad
&operator<<(const std::string
&s
) { return write(s
); }
62 Scrollpad
&operator<<(Color color
) { return write(color
); }
63 Scrollpad
&operator<<(Format format
) { return write(format
); }
66 template <typename ItemT
>
67 Scrollpad
&write(ItemT
&&item
)
69 m_buffer
<< std::forward
<ItemT
>(item
);
81 #endif // NCMPCPP_SCROLLPAD_H