1
# -*- coding: utf-8 -*-
2
# Copyright © 2005 Lateef Alabi-Oki
4
# This file is part of Scribes.
6
# Scribes is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; either version 2 of the License, or
9
# (at your option) any later version.
11
# Scribes is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
# GNU General Public License for more details.
16
# You should have received a copy of the GNU General Public License
17
# along with Scribes; if not, write to the Free Software
18
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
This module exposes a class that creates the text editor's replace bar.
23
@author: Lateef Alabi-Oki
24
@organization: The Scribes Project
25
@copyright: Copyright © 2005 Lateef Alabi-Oki
26
@license: GNU GPLv2 or Later
27
@contact: mystilleef@gmail.com
30
from SCRIBES.bar import ScribesBar
31
from gtk import SHRINK, FILL, EXPAND
32
from gobject import SIGNAL_RUN_LAST, TYPE_NONE
34
class ReplaceBar(ScribesBar):
36
This class creates the text editor's replace bar object. The class defines
37
the behavior and default properties of the replace bar object.
41
"delete": (SIGNAL_RUN_LAST, TYPE_NONE, ()),
44
def __init__(self, editor):
46
Initialize the replace bar object.
48
@param self: Reference to the ScribesReplaceBar instance.
49
@type self: A ScribesReplaceBar object.
51
@param editor: Reference to the text editor.
52
@type editor: An Editor object.
54
ScribesBar.__init__(self, editor)
55
self.__init_attributes()
56
self.__set_properties()
57
self.__arrange_widgets()
58
self.__signal_id_1 = self.__manager.connect("replacing", self.__replacebar_replacing_cb)
59
self.__signal_id_2 = self.__manager.connect("replaced", self.__replacebar_replaced_cb)
60
self.__signal_id_3 = self.__manager.connect("replaced-all", self.__replacebar_replaced_cb)
61
self.__signal_id_4 = self.__manager.connect("cancel", self.__replacebar_cancel_cb)
62
self.__signal_id_5 = self.__manager.connect("searching", self.__replacebar_searching_cb)
63
self.__signal_id_6 = self.__manager.connect("matches-found", self.__replacebar_matches_found_cb)
64
self.__signal_id_7 = self.__manager.connect("no-matches-found",
65
self.__replacebar_no_matches_found_cb)
66
self.__signal_id_8 = self.__entry.connect("activate", self.__replacebar_activate_cb)
67
self.__signal_id_9 = self.__entry.connect("changed", self.__replacebar_changed_cb)
68
self.__signal_id_10 = self.__matchcase_check_button.connect("toggled", self.__replacebar_toggled_cb)
69
self.__signal_id_11 = self.__matchword_check_button.connect("toggled", self.__replacebar_toggled_cb)
70
self.__signal_id_12 = self.__incremental_check_button.connect("toggled", self.__replacebar_toggled_cb)
71
self.__signal_id_13 = self.__editor.connect("show-bar", self.__replacebar_show_bar_cb)
72
self.__signal_id_14 = self.__editor.connect("hide-bar", self.__replacebar_hide_bar_cb)
73
self.__signal_id_15 = self.connect("delete", self.__destroy_cb)
74
self.__block_search_replace_signals()
76
########################################################################
80
########################################################################
82
def __get_search_replace_manager(self):
83
return self.__search_replace_manager
85
def __get_entry(self):
88
def __get_match_case_button(self):
89
return self.__matchcase_check_button
91
def __get_match_word_button(self):
92
return self.__matchword_check_button
94
def __get_search_button(self):
95
return self.__search_button
97
def __get_next_button(self):
98
return self.__next_button
100
def __get_previous_button(self):
101
return self.__previous_button
103
def __get_stop_button(self):
104
return self.__stop_button
106
def __get_replace_entry(self):
107
return self.__replace_entry
109
def __get_replace_button(self):
110
return self.__replace_button
112
def __get_replace_all_button(self):
113
return self.__replace_all_button
115
def __get_incremental_check_button(self):
116
return self.__incremental_check_button
118
########################################################################
120
# Public API properties
122
########################################################################
124
# Public API properties.
125
search_replace_manager = property(__get_search_replace_manager, doc="Search and replace object.")
126
find_text_entry = property(__get_entry, doc="Entry for the findbar.")
127
match_case_button = property(__get_match_case_button, doc="")
128
match_word_button = property(__get_match_word_button, doc="")
129
next_button = property(__get_next_button, doc="")
130
previous_button = property(__get_previous_button, doc="")
131
search_button = property(__get_search_button, doc="")
132
find_stop_button = property(__get_stop_button, doc="")
133
replace_entry = property(__get_replace_entry, doc="")
134
replace_button = property(__get_replace_button, doc="")
135
replace_all_button = property(__get_replace_all_button, doc="")
136
incremental_button = property(__get_incremental_check_button, doc="")
138
def __init_attributes(self):
140
Initialize the replace bar object's attributes.
142
@param self: Reference to the ScribesReplaceBar instance.
143
@type self: A ScribesReplaceBar object.
146
self.__editor = self.editor
147
self.__editor.triggermanager.trigger("initialize_search_replace_manager")
148
self.__search_replace_manager = self.__manager = self.editor.store.get_object("SearchReplaceManager")
149
from CaseButton import FindCaseButton
150
self.__matchcase_check_button = FindCaseButton(self)
151
from WordButton import FindWordButton
152
self.__matchword_check_button = FindWordButton(self)
153
from Entry import FindEntry
154
self.__entry = FindEntry(self)
155
from PreviousButton import FindPreviousButton
156
self.__previous_button = FindPreviousButton(self)
157
from NextButton import FindNextButton
158
self.__next_button = FindNextButton(self)
159
from SearchButton import FindSearchButton
160
self.__search_button = FindSearchButton(self)
161
from StopButton import FindStopButton
162
self.__stop_button = FindStopButton(self)
163
self.__signal_id_1 = None
164
self.__signal_id_2 = None
165
self.__signal_id_3 = None
166
self.__signal_id_4 = None
167
self.__signal_id_5 = None
168
self.__signal_id_6 = None
169
self.__signal_id_7 = None
170
self.__status_id_1 = None
171
self.__signal_id_8 = self.__signal_id_9 = self.__signal_id_10 = None
172
self.__signal_id_11 = self.__signal_id_12 = self.__signal_id_13 = None
173
self.__signal_id_14 = self.__signal_id_15 = None
174
from i18n import msg0005
175
from gtk import Label
176
self.__label = Label(msg0005)
177
self.__show_stop_button = True
178
self.__bar_is_visible = False
180
self.__show_replace_stop_button = True
181
from gtk import Label
182
from i18n import msg0008
183
self.__replace_label = Label(msg0008)
184
self.__replace_label.set_use_underline(True)
185
from ReplaceButton import ReplaceButton
186
self.__replace_button = ReplaceButton(self)
187
from ReplaceAllButton import ReplaceAllButton
188
self.__replace_all_button = ReplaceAllButton(self)
189
from ReplaceEntry import ReplaceEntry
190
self.__replace_entry = ReplaceEntry(self)
191
from ReplaceStopButton import ReplaceStopButton
192
self.__replace_stop_button = ReplaceStopButton(self)
193
from IncrementalButton import ReplaceIncrementalButton
194
self.__incremental_check_button = ReplaceIncrementalButton(self)
197
def __set_properties(self):
199
Define the default properties for the bar.
201
@param self: Reference to the ScribesReplaceBar instance.
202
@type self: A ScribesReplaceBar object.
204
self.set_property("name", "scribes replacebar")
205
self.resize(rows=2, columns=7)
206
self.set_col_spacings(5)
207
self.set_row_spacings(1)
208
self.set_property("border-width", 1)
209
self.__label.set_use_underline(True)
212
def __arrange_widgets(self):
214
Arrange the widgets of the replace bar.
216
@param self: Reference to the ScribesReplaceBar instance.
217
@type self: A ScribesReplaceBar object.
219
from gtk import SHRINK, FILL, EXPAND, Alignment, VSeparator
220
from gtk import VSeparator, SHRINK, FILL, EXPAND, Alignment
221
self.__find_alignment = Alignment(xalign=1.0, yalign=0.5)
222
self.__find_alignment.add(self.__label)
223
self.__label.set_mnemonic_widget(self.__entry)
224
self.attach(child=self.__find_alignment,
229
xoptions=SHRINK|FILL,
230
yoptions=EXPAND|FILL,
234
self.attach(child=self.__entry,
239
xoptions=SHRINK|FILL,
240
yoptions=EXPAND|FILL,
244
self.attach(child=self.__previous_button,
249
xoptions=SHRINK|FILL,
250
yoptions=EXPAND|FILL,
254
self.attach(child=self.__search_button,
259
xoptions=SHRINK|FILL,
260
yoptions=EXPAND|FILL,
264
self.attach(child=VSeparator(),
269
xoptions=SHRINK|FILL,
270
yoptions=SHRINK|FILL,
274
self.attach(child=self.__matchcase_check_button,
279
xoptions=SHRINK|FILL,
280
yoptions=EXPAND|FILL,
284
self.attach(child=self.__matchword_check_button,
289
xoptions=SHRINK|FILL,
290
yoptions=EXPAND|FILL,
295
self.__replace_alignment = Alignment(xalign=1.0, yalign=0.5)
296
self.__replace_alignment.add(self.__replace_label)
297
self.__replace_label.set_mnemonic_widget(self.__replace_entry)
298
self.attach(child=self.__replace_alignment,
303
xoptions=SHRINK|FILL,
304
yoptions=EXPAND|FILL,
308
self.attach(child=self.__replace_entry,
313
xoptions=SHRINK|FILL,
314
yoptions=EXPAND|FILL,
318
self.attach(child=self.__replace_button,
323
xoptions=SHRINK|FILL,
324
yoptions=EXPAND|FILL,
328
self.attach(child=self.__replace_all_button,
333
xoptions=SHRINK|FILL,
334
yoptions=EXPAND|FILL,
338
self.attach(child=VSeparator(),
343
xoptions=SHRINK|FILL,
344
yoptions=SHRINK|FILL,
348
self.attach(child=self.__incremental_check_button,
353
xoptions=SHRINK|FILL,
354
yoptions=EXPAND|FILL,
363
@param self: Reference to the ScribesFindBar instance.
364
@type self: A ScribesFindBar object.
366
if self.__bar_is_visible:
368
ScribesBar.show_bar(self)
375
@param self: Reference to the ScribesFindBar instance.
376
@type self: A ScribesFindBar object.
378
if self.__bar_is_visible is False:
380
ScribesBar.hide_bar(self)
383
def __show_replace_stop_button_cb(self):
384
if self.__show_replace_stop_button is False:
386
self.__replace_stop_button.set_property("sensitive", True)
387
self.__replace_stop_button.grab_focus()
390
def __show_stop_button_cb(self):
392
Show the stop button.
394
The stop button is shown if a searching operation is more than 1 second
397
@param self: Reference to the ScribesFindBar instance.
398
@type self: A ScribesFindBar object.
400
@return: True to call this function again, False otherwise.
401
@rtype: A Boolean object.
403
if self.__show_stop_button is False:
405
self.__stop_button.set_property("sensitive", True)
406
self.__stop_button.grab_focus()
409
########################################################################
411
# (Un)Block Callbacks
413
########################################################################
415
def __block_search_replace_signals(self):
417
Block signals for the search and replace manager.
419
The search and replace manager is used multiple widgets and
420
functions. Thus when the find bar is hidden, these signals need
421
to be blocked. Otherwise, the find bar traps these signals and
422
handles them which can lead to unwanted behavior.
424
@param self: Reference to the ScribesFindBar instance.
425
@type self: A ScribesFindBar object.
427
self.__search_replace_manager.handler_block(self.__signal_id_1)
428
self.__search_replace_manager.handler_block(self.__signal_id_2)
429
self.__search_replace_manager.handler_block(self.__signal_id_3)
430
self.__search_replace_manager.handler_block(self.__signal_id_4)
431
self.__search_replace_manager.handler_block(self.__signal_id_5)
432
self.__search_replace_manager.handler_block(self.__signal_id_6)
433
self.__search_replace_manager.handler_block(self.__signal_id_7)
436
def __unblock_search_replace_signals(self):
438
Unblock signals for the search and replace manager.
440
The search and replace manager is used multiple widgets and
441
functions. Thus when the find bar is hidden, these signals need
442
to be blocked. Otherwise, the find bar traps these signals and
443
handles them. This can lead to unwanted behavior.
445
@param self: Reference to the ScribesFindBar instance.
446
@type self: A ScribesFindBar object.
448
self.__search_replace_manager.handler_unblock(self.__signal_id_1)
449
self.__search_replace_manager.handler_unblock(self.__signal_id_2)
450
self.__search_replace_manager.handler_unblock(self.__signal_id_3)
451
self.__search_replace_manager.handler_unblock(self.__signal_id_4)
452
self.__search_replace_manager.handler_unblock(self.__signal_id_5)
453
self.__search_replace_manager.handler_unblock(self.__signal_id_6)
454
self.__search_replace_manager.handler_unblock(self.__signal_id_7)
457
########################################################################
459
# Signal and Event Handlers
461
########################################################################
463
def __replacebar_replacing_cb(self, replacemanager):
465
Handles callback when the "replacing" signal is emitted.
467
@param self: Reference to the ScribesReplaceBar instance.
468
@type self: A ScribesReplaceBar object.
470
@param replacemanager: The text editor's replace object.
471
@type replacemanager: A ScribesReplaceBar object.
473
self.__show_replace_stop_button = True
474
self.__entry.set_property("sensitive", False)
475
self.__search_button.set_property("sensitive", False)
476
self.__matchcase_check_button.set_property("sensitive", False)
477
self.__matchword_check_button.set_property("sensitive", False)
478
from gobject import timeout_add
479
timeout_add(1000, self.__show_replace_stop_button_cb)
480
self.__previous_button.set_property("sensitive", False)
481
if self.__next_button in self.get_children():
482
self.remove(self.__next_button)
483
from gtk import SHRINK, FILL, EXPAND
484
self.attach(child=self.__search_button,
489
xoptions=SHRINK|FILL,
490
yoptions=EXPAND|FILL,
493
self.__search_button.show_all()
494
if self.__replace_all_button in self.get_children():
495
self.remove(self.__replace_all_button)
496
from gtk import SHRINK, FILL, EXPAND
497
self.attach(child=self.__replace_stop_button,
502
xoptions=SHRINK|FILL,
503
yoptions=EXPAND|FILL,
506
self.__replace_stop_button.set_property("sensitive", False)
507
self.__replace_stop_button.show_all()
510
def __replacebar_replaced_cb(self, replacemanager):
512
Handles callback when the "replaced" signal is emitted.
514
@param self: Reference to the ScribesReplaceBar instance.
515
@type self: A ScribesReplaceBar object.
517
@param replacemanager: The text editor's replace object.
518
@type replacemanager: A ScribesReplaceBar object.
520
self.__show_replace_stop_button = False
521
self.__entry.set_property("sensitive", True)
522
self.__search_button.set_property("sensitive", True)
523
self.__matchcase_check_button.set_property("sensitive", True)
524
self.__matchword_check_button.set_property("sensitive", True)
525
if self.__replace_stop_button in self.get_children():
526
self.remove(self.__replace_stop_button)
527
from gtk import SHRINK, FILL, EXPAND
528
self.attach(child=self.__replace_all_button,
533
xoptions=SHRINK|FILL,
534
yoptions=EXPAND|FILL,
537
self.__replace_all_button.show_all()
538
self.__entry.grab_focus()
541
def __replacebar_cancel_cb(self, searchmanager):
543
Handles callback when the "cancel" signal is emitted.
545
@param self: Reference to the ScribesReplaceBar instance.
546
@type self: A ScribesReplaceBar object.
548
@param searchmanager: An object that performs search and replace operations.
549
@type searchmanager: A SearchReplaceManager object.
551
self.__show_replace_stop_button = False
552
self.__entry.set_property("sensitive", True)
553
self.__search_button.set_property("sensitive", True)
554
self.__matchword_check_button.set_property("sensitive", True)
555
self.__matchcase_check_button.set_property("sensitive", True)
556
if self.__stop_button in self.get_children():
557
self.remove(self.__stop_button)
558
if self.__replace_stop_button in self.get_children():
559
self.remove(self.__replace_stop_button)
560
from gtk import SHRINK, FILL, EXPAND
561
self.attach(child=self.__replace_all_button,
566
xoptions=SHRINK|FILL,
567
yoptions=EXPAND|FILL,
570
self.__replace_all_button.show_all()
571
if not self.__search_button in self.get_children():
572
from gtk import EXPAND, SHRINK, FILL
573
self.attach(child=self.__search_button,
578
xoptions=SHRINK|FILL,
579
yoptions=EXPAND|FILL,
582
self.__search_button.show_all()
583
self.__entry.grab_focus()
586
def __replacebar_searching_cb(self, searchmanager):
588
Handles callback when the "searching" signal is emitted.
590
@param self: Reference to the ScribesFindBar instance.
591
@type self: A ScribesFindBar object.
593
@param searchmanager: The text editor's searchmanager
594
@type searchmanager: A SearchProcessor object.
596
self.__search_replace_manager.reset()
597
self.__show_stop_button = True
598
from gobject import timeout_add
599
timeout_add(1000, self.__show_stop_button_cb)
600
if self.__search_button in self.get_children():
601
self.remove(self.__search_button)
602
if not self.__stop_button in self.get_children():
603
from gtk import EXPAND, SHRINK, FILL
604
self.attach(child=self.__stop_button,
609
xoptions=SHRINK|FILL,
610
yoptions=EXPAND|FILL,
613
self.__stop_button.set_property("sensitive", False)
614
self.__stop_button.show_all()
617
def __replacebar_matches_found_cb(self, searchmanager):
619
Handles callback when the "matches-found" signal is emitted.
621
@param self: Reference to the ScribesFindBar instance.
622
@type self: A ScribesFindBar object.
624
@param searchmanager: The text editor's searchmanager
625
@type searchmanager: A SearchProcessor object.
627
self.__show_stop_button = False
628
if self.__stop_button in self.get_children():
629
self.remove(self.__stop_button)
630
from gtk import EXPAND, SHRINK, FILL
631
if self.__search_replace_manager.number_of_matches > 1:
632
self.attach(child=self.__next_button,
637
xoptions=SHRINK|FILL,
638
yoptions=EXPAND|FILL,
641
self.__next_button.show_all()
643
self.attach(child=self.__search_button,
648
xoptions=SHRINK|FILL,
649
yoptions=EXPAND|FILL,
652
self.__search_button.set_property("sensitive", False)
653
self.__search_button.show_all()
656
def __replacebar_no_matches_found_cb(self, searchmanager):
658
Handles callback when the "no-matches-found" signal is emitted.
660
@param self: Reference to the ScribesFindBar instance.
661
@type self: A ScribesFindBar object.
663
@param searchmanager: The text editor's searchmanager
664
@type searchmanager: A SearchProcessor object.
666
self.__show_stop_button = False
667
if self.__stop_button in self.get_children():
668
self.remove(self.__stop_button)
669
if not self.__search_button in self.get_children():
670
from gtk import EXPAND, SHRINK, FILL
671
self.attach(child=self.__search_button,
676
xoptions=SHRINK|FILL,
677
yoptions=EXPAND|FILL,
680
self.__search_button.set_property("sensitive", False)
681
self.__search_button.show_all()
684
def __replacebar_activate_cb(self, entry):
686
Handles callback when the findbar's entry "activate" signal is emitted.
688
@param self: Reference to the ScribesFindBar instance.
689
@type self: A ScribesFindBar object.
691
@param entry: The findbar's text entry.
692
@type entry: A gtk.Entry object.
694
@return: True to propagate signals to parent widgets.
695
@type: A Boolean Object.
697
if self.__search_button in self.get_children():
699
self.__search_button.activate()
702
self.__next_button.activate()
705
def __replacebar_changed_cb(self, entry):
707
Handles callback when the findbar's entry "changed" signal is emitted.
709
@param self: Reference to the ScribesFindBar instance.
710
@type self: A ScribesFindBar object.
712
@param entry: The findbar's text entry.
713
@type entry: A gtk.Entry object.
715
@return: True to propagate signals to parent widgets.
716
@type: A Boolean Object.
718
from gtk import EXPAND, SHRINK, FILL
719
self.__search_replace_manager.reset()
720
if self.__next_button in self.get_children():
721
self.remove(self.__next_button)
722
if not self.__search_button in self.get_children():
723
self.attach(child=self.__search_button,
728
xoptions=SHRINK|FILL,
729
yoptions=EXPAND|FILL,
732
self.__search_button.show_all()
735
def __replacebar_toggled_cb(self, togglebutton):
737
Handles callback when the "toggled" signal is emitted.
739
@param self: Reference to the ScribesFindBar instance.
740
@type self: A ScribesFindBar object.
742
@param togglebutton: The findbar's case check button.
743
@type togglebutton: A ScribesFindCaseButton object.
745
if self.__next_button in self.get_children():
746
self.remove(self.__next_button)
747
if not self.__search_button in self.get_children():
748
from gtk import EXPAND, SHRINK, FILL
749
self.attach(child=self.__search_button,
754
xoptions=SHRINK|FILL,
755
yoptions=EXPAND|FILL,
758
self.__search_button.show_all()
759
self.__previous_button.set_property("sensitive", False)
760
if self.__entry.get_text():
761
self.__search_button.set_property("sensitive", True)
763
self.__search_button.set_property("sensitive", False)
764
self.__entry.grab_focus()
765
self.__replace_button.set_property("sensitive", False)
766
self.__replace_all_button.set_property("sensitive", False)
767
self.__replace_entry.set_property("sensitive", False)
770
def __replacebar_show_bar_cb(self, editor, bar):
772
Handles callback when the "show-bar" signal is emitted.
774
@param self: Reference to the ScribesFindBar instance.
775
@type self: A ScribesFindBar object.
777
@param editor: Reference to the text editor.
778
@type editor: An Editor object.
780
@param gotobar: The text editor's gotobar.
781
@type gotobar: A ScribesFindBar object.
783
if bar.get_property("name") != "scribes replacebar":
785
self.__bar_is_visible = True
786
self.__unblock_search_replace_signals()
787
from i18n import msg0009
788
self.__status_id_1 = self.editor.feedback.set_modal_message(msg0009, "replace")
789
self.set_property("sensitive", True)
792
def __replacebar_hide_bar_cb(self, editor, bar):
794
Handles callback when the "hide-bar" signal is emitted.
796
@param self: Reference to the ScribesFindBar instance.
797
@type self: A ScribesFindBar object.
799
@param editor: Reference to the text editor.
800
@type editor: An Editor object.
802
@param gotobar: The text editor's gotobar.
803
@type gotobar: A ScribesFindBar object.
805
if bar.get_property("name") != "scribes replacebar":
807
self.__block_search_replace_signals()
808
self.__bar_is_visible = False
809
self.__editor.feedback.unset_modal_message(self.__status_id_1, False)
810
# Remove the next button from the findbar if it is attached.
811
if self.__next_button in self.get_children():
812
self.remove(self.__next_button)
813
# Remove the stop button from the findbar if it is attached.
814
if self.__stop_button in self.get_children():
815
self.remove(self.__stop_button)
816
# Attach the search button to the findbar if it isn't attached.
817
if not self.__search_button in self.get_children():
818
from gtk import SHRINK, FILL, EXPAND
819
self.attach(child=self.__search_button,
824
xoptions=SHRINK|FILL,
825
yoptions=EXPAND|FILL,
828
self.__search_button.show_all()
829
from i18n import msg0010
830
self.editor.feedback.update_status_message(msg0010, "info", 3)
831
if self.__replace_stop_button in self.get_children():
832
self.remove(self.__replace_stop_button)
833
from gtk import SHRINK, FILL, EXPAND
834
self.attach(child=self.__replace_all_button,
839
xoptions=SHRINK|FILL,
840
yoptions=EXPAND|FILL,
843
self.__replace_all_button.show_all()
846
def __destroy_cb(self, replacebar):
848
Handles callback when "delete" signal is emitted.
850
@param self: Reference to the ReplaceBar instance.
851
@type self: A ReplaceBar object.
853
@param replacebar: Reference to the ReplaceBar instance.
854
@type replacebar: A ReplaceBar object.
856
from SCRIBES.utils import disconnect_signal, delete_attributes
857
disconnect_signal(self.__signal_id_1, self.__manager)
858
disconnect_signal(self.__signal_id_2, self.__manager)
859
disconnect_signal(self.__signal_id_3, self.__manager)
860
disconnect_signal(self.__signal_id_4, self.__manager)
861
disconnect_signal(self.__signal_id_5, self.__manager)
862
disconnect_signal(self.__signal_id_6, self.__manager)
863
disconnect_signal(self.__signal_id_7, self.__manager)
864
disconnect_signal(self.__signal_id_8, self.__entry)
865
disconnect_signal(self.__signal_id_9, self.__entry)
866
disconnect_signal(self.__signal_id_10, self.__matchword_check_button)
867
disconnect_signal(self.__signal_id_11, self.__matchword_check_button)
868
disconnect_signal(self.__signal_id_12, self.__incremental_check_button)
869
disconnect_signal(self.__signal_id_13, self.__editor)
870
disconnect_signal(self.__signal_id_14, self.__editor)
871
disconnect_signal(self.__signal_id_15, self)
873
delete_attributes(self)