25 | | def labelize(text, widget): |
26 | | box = hippo.CanvasBox() |
27 | | box.props.spacing = style.DEFAULT_SPACING |
28 | | |
29 | | text = hippo.CanvasText(text=text) |
30 | | text.props.color = style.COLOR_SELECTION_GREY.get_int() |
31 | | if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL: |
32 | | text.props.xalign = hippo.ALIGNMENT_END |
33 | | else: |
34 | | text.props.xalign = hippo.ALIGNMENT_START |
35 | | box.append(text) |
36 | | |
37 | | box.append(widget, hippo.PACK_EXPAND) |
38 | | |
39 | | return box |
40 | | |
41 | | class Entry(hippo.CanvasWidget): |
42 | | def __init__(self, text=None, frame_color=style.COLOR_WHITE.get_gdk_color(), |
43 | | **kwargs): |
44 | | hippo.CanvasWidget.__init__(self, **kwargs) |
45 | | |
46 | | self.entry = gtk.Entry() |
47 | | self.entry.modify_bg(gtk.STATE_INSENSITIVE, frame_color) |
48 | | |
49 | | self.props.widget = self.entry |
50 | | |
51 | | if text: |
52 | | self.text = text |
53 | | |
54 | | def get_text(self): |
55 | | return self.entry.props.text |
56 | | |
57 | | def set_text(self, value): |
58 | | self.entry.props.text = value |
59 | | |
60 | | text = gobject.property(type=str, setter=set_text, getter=get_text) |
61 | | text = property(get_text, set_text) |
62 | | |
63 | | class TextView(hippo.CanvasWidget): |
64 | | def __init__(self, text=None, **kwargs): |
65 | | hippo.CanvasWidget.__init__(self, **kwargs) |
66 | | |
67 | | self.view = gtk.TextView() |
68 | | self.view.props.left_margin = style.DEFAULT_SPACING |
69 | | self.view.props.right_margin = style.DEFAULT_SPACING |
70 | | self.view.props.wrap_mode = gtk.WRAP_WORD |
71 | | self.view.props.accepts_tab = False |
72 | | self.view.show() |
73 | | |
74 | | scrolled_window = gtk.ScrolledWindow() |
75 | | scrolled_window.set_shadow_type(gtk.SHADOW_OUT) |
76 | | scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) |
77 | | scrolled_window.add(self.view) |
78 | | |
79 | | self.props.widget = scrolled_window |
80 | | |
81 | | if text: |
82 | | self.text = text |
83 | | |
84 | | def get_text(self): |
85 | | return self.view.props.buffer.props.text |
86 | | |
87 | | def set_text(self, value): |
88 | | self.view.props.buffer.props.text = text |
89 | | |
90 | | text = gobject.property(type=str, setter=set_text, getter=get_text) |
91 | | text = property(get_text, set_text) |
92 | | |
93 | | class Image(hippo.CanvasWidget): |
94 | | def __init__(self, palette=None, tooltip=None, pixbuf=None, **kwargs): |
95 | | self.image = gtk.Image() |
96 | | self._invoker = CanvasInvoker() |
97 | | |
98 | | hippo.CanvasBox.__init__(self, widget=self.image, **kwargs) |
99 | | |
100 | | self._invoker._position_hint = self._invoker.AT_CURSOR |
101 | | self._invoker.attach(self) |
102 | | |
103 | | self.connect('destroy', self._destroy_cb) |
104 | | |
105 | | if palette: |
106 | | self.palette = palette |
107 | | if tooltip: |
108 | | self.tooltip = tooltip |
109 | | if pixbuf: |
110 | | self.pixbuf = pixbuf |
111 | | |
112 | | def _destroy_cb(self, widget): |
113 | | if self._invoker is not None: |
114 | | self._invoker.detach() |
115 | | |
116 | | def create_palette(self): |
117 | | return None |
118 | | |
119 | | def get_palette(self): |
120 | | return self._invoker.palette |
121 | | |
122 | | def set_palette(self, palette): |
123 | | self._invoker.palette = palette |
124 | | |
125 | | palette = gobject.property(type=object, |
126 | | setter=set_palette, getter=get_palette) |
127 | | palette = property(get_palette, set_palette) |
128 | | |
129 | | def get_tooltip(self): |
130 | | return self._invoker.palette and self._invoker.palette.primary_text |
131 | | |
132 | | def set_tooltip(self, text): |
133 | | self.set_palette(Palette(text)) |
134 | | |
135 | | tooltip = gobject.property(type=str, setter=set_tooltip, getter=get_tooltip) |
136 | | tooltip = property(get_tooltip, set_tooltip) |
137 | | |
138 | | def set_pixbuf(self, value): |
139 | | self.image.set_from_pixbuf(value) |
140 | | self.props.box_width = value.get_width() |
141 | | self.props.box_height = value.get_height() |
142 | | |
143 | | pixbuf = gobject.property(type=object, setter=set_pixbuf, getter=None) |
144 | | pixbuf = property(None, set_pixbuf) |
145 | | |