Imported Upstream version 0.3~20101209
[debian/pino.git] / src / wrap_label.vala
1 using Gtk;
2
3 /** Label with NORMAL wrapping. Thanks to VMWare team */
4 public class WrapLabel : Label {
5         
6         public int m_wrap_width = 0;
7         public int m_wrap_height = 0;
8         
9         public WrapLabel(string? str = null) {
10                 get_layout().set_wrap(Pango.WrapMode.WORD_CHAR);
11                 set_alignment(0, 0);
12                 
13                 set_text(str);
14                 set_wrap_width(m_wrap_width);
15                 
16                 activate_link.connect(link_clicked);
17         }
18         
19         private bool link_clicked(string url) {
20                 debug(url);
21                 return true;
22         }
23         
24         private void set_wrap_width(int width) {
25                 if (width == 0) {
26                         return;
27                 }
28                 
29                 get_layout().set_width((int) (width * Pango.SCALE));
30                 
31                 int unused = 0;
32                 get_layout().get_pixel_size(out unused, out m_wrap_height);
33                 
34                 if (m_wrap_width != width) {
35                         m_wrap_width = width;
36                         queue_resize();
37                 }
38         }
39         
40         public override void size_request(out Gtk.Requisition req) {            
41                 req.width  = 0;
42                 req.height = m_wrap_height;
43         }
44         
45         public override void size_allocate(Gdk.Rectangle alloc) {
46                 base.size_allocate(alloc);
47                 set_wrap_width(alloc.width);
48         }
49         
50         public void set_markup_plus(string txt) {
51                 set_markup(txt);
52                 set_wrap_width(m_wrap_width);
53         }
54 }