1 |
/* ************************************************************************* |
2 |
* Copyright (c) 2005 VMware, Inc. |
3 |
* |
4 |
* Permission is hereby granted, free of charge, to any person obtaining |
5 |
* a copy of this software and associated documentation files (the |
6 |
* "Software"), to deal in the Software without restriction, including |
7 |
* without limitation the rights to use, copy, modify, merge, publish, |
8 |
* distribute, sublicense, and/or sell copies of the Software, and to |
9 |
* permit persons to whom the Software is furnished to do so, subject to |
10 |
* the following conditions: |
11 |
* |
12 |
* The above copyright notice and this permission notice shall be |
13 |
* included in all copies or substantial portions of the Software. |
14 |
* |
15 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
16 |
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
17 |
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
18 |
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
19 |
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
20 |
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
21 |
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
22 |
* *************************************************************************/ |
23 |
|
24 |
#ifndef LIBVIEW_WRAP_LABEL_HH |
25 |
#define LIBVIEW_WRAP_LABEL_HH |
26 |
|
27 |
|
28 |
#include <gtkmm/label.h> |
29 |
|
30 |
|
31 |
namespace view { |
32 |
|
33 |
/** @brief Multi-line label for gtk(mm) <= 2. |
34 |
* |
35 |
* This class is only used for gtk(mm) <= 2. If application is compiled against |
36 |
* gtk(mm) >= 3 then this class is not compiled at all. gtk(mm) 3 added support |
37 |
* for automatic multi-line labels by calling its set_line_wrap() method. |
38 |
* However Gtk::Label may still cause size calculation problems under certain |
39 |
* conditions. If you encountered such a problem, then use @c MultiLineLabel for |
40 |
* for gtk(mm) >= 3 instead. |
41 |
* |
42 |
* @see MultiLineLabel for gtk(mm) >= 3 |
43 |
*/ |
44 |
class WrapLabel |
45 |
: public Gtk::Label |
46 |
{ |
47 |
public: |
48 |
WrapLabel(const Glib::ustring &text = ""); |
49 |
|
50 |
void set_text(const Glib::ustring &str); |
51 |
void set_markup(const Glib::ustring &str); |
52 |
|
53 |
protected: |
54 |
virtual void on_size_allocate(Gtk::Allocation &alloc); |
55 |
virtual void on_size_request(Gtk::Requisition *req); |
56 |
|
57 |
private: |
58 |
void SetWrapWidth(int width); |
59 |
|
60 |
int mWrapWidth; |
61 |
int mWrapHeight; |
62 |
}; |
63 |
|
64 |
|
65 |
} /* namespace view */ |
66 |
|
67 |
|
68 |
#endif /* LIBVIEW_WRAP_LABEL_HH */ |