55
55
TreeView.__init__(self)
56
56
self.__init_attributes(manager, editor)
57
57
self.__set_properties()
58
from gobject import idle_add
59
idle_add(self.__precompile_methods)
60
58
self.__signal_id_1 = manager.connect("destroy", self.__destroy_cb)
61
59
self.__signal_id_2 = manager.connect("match-found", self.__match_found_cb)
62
60
self.__signal_id_3 = self.connect("row-activated", self.__row_activated_cb)
66
64
self.__signal_id_8 = self.connect("cursor-changed", self.__cursor_changed_cb)
67
65
self.__signal_id_9 = manager.connect("no-match-found", self.__no_match_found_cb)
68
66
self.__block_textview()
67
from gobject import idle_add, PRIORITY_LOW
68
idle_add(self.__precompile_methods, priority=PRIORITY_LOW)
70
70
def __init_attributes(self, manager, editor):
125
125
@param self: Reference to the CompletionTreeView instance.
126
126
@type self: A CompletionTreeView object.
128
from operator import ne
129
if ne(completion_list, self.__word_list):
128
if completion_list != self.__word_list:
130
129
self.__word_list = completion_list
131
130
self.__model.clear()
132
131
for word in self.__word_list:
261
260
@type completion_list: A List object.
264
# from gobject import source_remove, idle_add
263
# from gobject import source_remove, idle_add, PRIORITY_LOW
265
264
# source_remove(self.__populate_id)
268
267
from collections import deque
269
#self.__populate_id = idle_add(self.__populate_model, deque(completion_list))
268
#self.__populate_id = idle_add(self.__populate_model, deque(completion_list), priority=PRIORITY_LOW)
270
269
from thread import start_new_thread
271
270
start_new_thread(self.__populate_model, (deque(completion_list),))
353
352
@return: True to propagate signals to parent widgets.
354
353
@type: A Boolean Object.
356
from operator import not_, eq, truth
357
if not_(self.__is_visible): return False
355
if not self.__is_visible: return False
358
356
# Get the selected item on the completion window.
359
357
selection = self.get_selection()
360
358
# Get the model and iterator of the selected item.
361
359
model, iterator = selection.get_selected()
362
360
# If for whatever reason the selection is lost, select the first row
363
361
# automactically when the up or down arrow key is pressed.
365
363
selection.select_path((0,))
366
364
model, iterator = selection.get_selected()
367
365
path = model.get_path(iterator)
368
366
from gtk import keysyms
369
if eq(event.keyval, keysyms.Return):
367
if event.keyval == keysyms.Return:
370
368
# Insert the selected item into the editor's buffer when the enter key
371
369
# event is detected.
372
370
self.row_activated(path, self.get_column(0))
373
371
self.__manager.emit("no-match-found")
374
elif eq(event.keyval, keysyms.Up):
372
elif event.keyval == keysyms.Up:
375
373
# If the up key is pressed check to see if the first row is selected.
376
374
# If it is, select the last row. Otherwise, get the path to the row
377
375
# above and select it.
379
377
number_of_rows = len(model)
380
378
selection.select_path(number_of_rows-1)
381
379
self.scroll_to_cell(number_of_rows-1)
383
381
selection.select_path((path[0]-1,))
384
382
self.scroll_to_cell((path[0]-1,))
385
elif eq(event.keyval, keysyms.Down):
383
elif event.keyval == keysyms.Down:
386
384
# Get the iterator of the next row.
387
385
next_iterator = model.iter_next(iterator)
388
386
# If the next row exists, select it, if not select the first row.
428
425
@param self: Reference to the CompletionTreeView instance.
429
426
@type self: A CompletionTreeView object.
431
from operator import not_
432
if not_(self.__is_blocked): return
428
if not self.__is_blocked: return
433
429
self.__editor.textview.handler_unblock(self.__signal_id_7)
434
430
self.__is_blocked = False
444
440
@param self: Reference to the CompletionTreeView instance.
445
441
@type self: A CompletionTreeView object.
447
from operator import truth
448
if truth(self.__is_blocked): return
443
if self.__is_blocked: return
449
444
self.__editor.textview.handler_block(self.__signal_id_7)
450
445
self.__is_blocked = True