146
148
def delete_line(textbuffer):
148
Delete a the cursor line in a gtk.TextBuffer.
149
textbuffer.begin_user_action()
151
begin_position, end_position = get_line_bounds(textbuffer)
152
start_position = begin_position.copy()
153
begin_position, end_position = __get_end_line_position(begin_position)
154
textbuffer.delete(start_position, end_position)
157
__delete_last_line(textbuffer)
160
textbuffer.end_user_action()
150
@param textbuffer: The text buffer to operate on.
151
@type textbuffer: A gtk.TextBuffer object.
163
def __delete_last_line(textbuffer):
153
164
begin_position, end_position = get_line_bounds(textbuffer)
154
165
if begin_position.ends_line():
156
delete_empty_line(textbuffer)
158
if begin_position.ends_line() and end_position.ends_line():
159
# Delete empty second to last line.
160
delete_empty_line(textbuffer)
162
if begin_position.get_char() in ["\x00"] and end_position.get_char() in ["\x00"]:
163
# Delete empty last line.
164
delete_empty_last_line(textbuffer)
166
if begin_position.get_char() and end_position.get_char() in ["\x00"]:
167
# Delete last line with text on it.
168
delete_last_line(textbuffer)
170
# Delete normal lines.
171
end_position.forward_char()
172
textbuffer.begin_user_action()
173
textbuffer.delete(begin_position, end_position)
174
textbuffer.end_user_action()
177
def delete_empty_line(textbuffer):
179
Delete an empty cursor line.
181
@param textbuffer: The text buffer to operate on.
182
@type textbuffer: A gtk.TextBuffer object.
184
from SCRIBES.cursor import get_cursor_line
185
cursor_line = get_cursor_line(textbuffer)
186
begin_position = textbuffer.get_iter_at_line(cursor_line)
187
end_position = begin_position.copy()
188
end_position.forward_char()
189
textbuffer.begin_user_action()
190
textbuffer.delete(begin_position, end_position)
191
textbuffer.end_user_action()
194
def delete_empty_last_line(textbuffer):
196
Delete an empty last cursor line.
198
@param textbuffer: The text buffer to operate on.
199
@type textbuffer: A gtk.TextBuffer object.
201
begin_position, end_position = get_line_bounds(textbuffer)
202
result = begin_position.backward_line()
204
if begin_position.get_char() in ["\n"]:
205
end_position = begin_position.copy()
206
end_position.forward_char()
208
end_position = begin_position.copy()
209
end_position.forward_to_line_end()
210
end_position.forward_char()
211
begin_position.forward_to_line_end()
212
textbuffer.begin_user_action()
213
textbuffer.delete(begin_position, end_position)
214
textbuffer.end_user_action()
217
def delete_last_line(textbuffer):
219
Delete the last cursor line if it contains text.
221
@param textbuffer: The text buffer to operate on.
222
@type textbuffer: A gtk.TextBuffer object.
224
begin_position, end_position = get_line_bounds(textbuffer)
225
end_position.forward_char()
226
textbuffer.begin_user_action()
227
textbuffer.delete(begin_position, end_position)
228
delete_empty_last_line(textbuffer)
229
textbuffer.end_user_action()
166
begin_position.backward_line()
167
begin_position, end_position = __get_end_line_position(begin_position)
168
textbuffer.delete(begin_position, end_position)
170
textbuffer.delete(begin_position, end_position)
171
from SCRIBES.cursor import get_cursor_iterator
172
iterator = get_cursor_iterator(textbuffer)
173
iterator.backward_line()
174
start_position, end_position = __get_end_line_position(iterator)
175
textbuffer.delete(start_position, end_position)
178
def __get_end_line_position(iterator):
179
from gtk import TEXT_SEARCH_VISIBLE_ONLY, TEXT_SEARCH_TEXT_ONLY
180
for endline in newlines:
182
begin_position, end_position = iterator.forward_search(endline, TEXT_SEARCH_TEXT_ONLY)
183
return begin_position, end_position
232
188
def join_line(textbuffer):