"Fossies" - the Fresh Open Source Software Archive 
Member "radialnet/bestwidgets/textview.py" (4 Mar 2008, 4502 Bytes) of package /linux/privat/old/radialnet-0.44.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
1 # vim: set fileencoding=utf-8 :
2
3 # Copyright (C) 2008 Insecure.Com LLC.
4 #
5 # Author: João Paulo de Souza Medeiros <ignotus21@gmail.com>
6 #
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
21 import gtk
22 import bestwidgets as bw
23
24
25
26 class BWTextView(bw.BWScrolledWindow):
27 """
28 """
29 def __init__(self):
30 """
31 """
32 bw.BWScrolledWindow.__init__(self)
33
34 self.__auto_scroll = False
35
36 self.__create_widgets()
37
38
39 def __create_widgets(self):
40 """
41 """
42 self.__textbuffer = gtk.TextBuffer()
43 self.__textview = gtk.TextView(self.__textbuffer)
44
45 self.add_with_viewport(self.__textview)
46
47
48 def bw_set_auto_scroll(self, value):
49 """
50 """
51 self.__auto_scroll = value
52
53
54 def bw_set_editable(self, editable):
55 """
56 """
57 self.__textview.set_editable(False)
58
59
60 def bw_modify_font(self, font):
61 """
62 """
63 self.__textview.modify_font(font)
64
65
66 def bw_set_text(self, text):
67 """
68 """
69 self.__textbuffer.set_text(text)
70
71 if self.__auto_scroll:
72 self.bw_set_scroll_down()
73
74
75 def bw_get_text(self):
76 """
77 """
78 return self.__textbuffer.get_text(self.__textbuffer.get_start_iter(),
79 self.__textbuffer.get_end_iter())
80
81
82 def bw_set_scroll_down(self):
83 """
84 """
85 self.get_vadjustment().set_value(self.get_vadjustment().upper)
86
87
88 def bw_get_textbuffer(self):
89 """
90 """
91 return self.__textbuffer
92
93
94
95 class BWTextEditor(bw.BWScrolledWindow):
96 """
97 """
98 def __init__(self):
99 """
100 """
101 bw.BWScrolledWindow.__init__(self)
102 self.connect('expose_event', self.__expose)
103
104 self.__auto_scroll = False
105
106 self.__create_widgets()
107
108
109 def __create_widgets(self):
110 """
111 """
112 self.__hbox = bw.BWHBox(spacing=6)
113
114 self.__textbuffer = gtk.TextBuffer()
115 self.__textview = gtk.TextView(self.__textbuffer)
116
117 self.__linebuffer = gtk.TextBuffer()
118 self.__lineview = gtk.TextView(self.__linebuffer)
119 self.__lineview.set_justification(gtk.JUSTIFY_RIGHT)
120 self.__lineview.set_editable(False)
121 self.__lineview.set_sensitive(False)
122
123 self.__hbox.bw_pack_start_noexpand_nofill(self.__lineview)
124 self.__hbox.bw_pack_start_expand_fill(self.__textview)
125
126 self.add_with_viewport(self.__hbox)
127
128
129 def __expose(self, widget, event):
130 """
131 """
132 # code to fix a gtk issue that don't show text correctly
133 self.__hbox.check_resize()
134
135
136 def bw_set_auto_scroll(self, value):
137 """
138 """
139 self.__auto_scroll = value
140
141
142 def bw_set_editable(self, editable):
143 """
144 """
145 self.__textview.set_editable(False)
146
147
148 def bw_modify_font(self, font):
149 """
150 """
151 self.__textview.modify_font(font)
152 self.__lineview.modify_font(font)
153
154
155 def bw_set_text(self, text):
156 """
157 """
158 if text != "":
159
160 count = text.count('\n') + text.count('\r')
161
162 lines = range(1, count + 2)
163 lines = [str(i).strip() for i in lines]
164
165 self.__textbuffer.set_text(text)
166 self.__linebuffer.set_text('\n'.join(lines))
167
168 if self.__auto_scroll:
169 self.bw_set_scroll_down()
170
171 else:
172
173 self.__textbuffer.set_text("")
174 self.__linebuffer.set_text("")
175
176
177 def bw_get_text(self):
178 """
179 """
180 return self.__textbuffer.get_text(self.__textbuffer.get_start_iter(),
181 self.__textbuffer.get_end_iter())
182
183
184 def bw_set_scroll_down(self):
185 """
186 """
187 self.get_vadjustment().set_value(self.get_vadjustment().upper)