Ec@sbdZddklZddklZlZlZddklZl Z defdYZ dS(s This module exposes a class that creates the text editor's replace bar. @author: Lateef Alabi-Oki @organization: The Scribes Project @copyright: Copyright © 2005 Lateef Alabi-Oki @license: GNU GPLv2 or Later @contact: mystilleef@gmail.com i(t ScribesBar(tSHRINKtFILLtEXPAND(tSIGNAL_RUN_LASTt TYPE_NONEt ReplaceBarcBs0eZdZheed(fdddk?l?} | ||_@ddkAlA}|||_BddkClD}|||_EdS(s Initialize the replace bar object's attributes. @param self: Reference to the ScribesReplaceBar instance. @type self: A ScribesReplaceBar object. t!initialize_search_replace_managertSearchReplaceManageri(tFindCaseButton(tFindWordButton(t FindEntry(tFindPreviousButton(tFindNextButton(tFindSearchButton(tFindStopButton(tmsg0005(tLabel(tmsg0008(t ReplaceButton(tReplaceAllButton(t ReplaceEntry(tReplaceStopButton(tReplaceIncrementalButtonN(FR7R.ttriggermanagerttriggertstoret get_objectR8Rt CaseButtonRPR't WordButtonRQR*tEntryRRR"tPreviousButtonRSRAt NextButtonRTR?t SearchButtonRUR=t StopButtonRVRCtNoneRRRRRRR!t_ReplaceBar__status_id_1R$R&R)R+R-R0R2R4ti18nRWtgtkRXt_ReplaceBar__labeltTruet_ReplaceBar__show_stop_buttontFalset_ReplaceBar__bar_is_visiblet%_ReplaceBar__show_replace_stop_buttonRYt_ReplaceBar__replace_labeltset_use_underlineRZRGR[RIR\RER]t _ReplaceBar__replace_stop_buttontIncrementalButtonR^R,(R6RPRQRRRSRTRURVRWRXRYRZR[R\R]R^((splugins/ReplaceBar/Manager.pyt__init_attributessb            cCsd|idd|idddd|id|id|id d|iitd S( s Define the default properties for the bar. @param self: Reference to the ScribesReplaceBar instance. @type self: A ScribesReplaceBar object. tnamesscribes replacebartrowsitcolumnsiiis border-widthN(t set_propertytresizetset_col_spacingstset_row_spacingsRnRuRo(R6((splugins/ReplaceBar/Manager.pyt__set_propertiess  cCsddkl}l}l}l}l}ddkl}l}l}l}l}|dddd|_|ii|i|ii |i |i d|id d d d d d dd d||Bd||Bdddd |i d|i d d d dd d dd d||Bd||Bdd dd |i d|i d dd dd d dd d||Bd||Bdd dd |i d|i d dd dd d dd d||Bd||Bdd dd |i d|d dd dd d dd d||Bd||Bdd dd |i d|id dd dd d dd d||Bd||Bdd dd |i d|id dd dd d dd d||Bd||Bdd dd |dddd|_|ii|i|ii |i|i d|id d d d d d ddd||Bd||Bdddd |i d|id d d dd d ddd||Bd||Bdd dd |i d|id dd dd d ddd||Bd||Bdd dd |i d|id dd dd d ddd||Bd||Bdd dd |i d|d dd dd d ddd||Bd||Bdd dd |i d|id dd dd d ddd||Bd||Bdd dd dS(s Arrange the widgets of the replace bar. @param self: Reference to the ScribesReplaceBar instance. @type self: A ScribesReplaceBar object. i(RRRt Alignmentt VSeparator(RRRRRtxaligng?tyaligng?tchildt left_attachit right_attachit top_attacht bottom_attachtxoptionstyoptionstxpaddingitypaddingiiiiiN(RmRRRRRt_ReplaceBar__find_alignmenttaddRntset_mnemonic_widgetR"tattachRAR=R'R*t_ReplaceBar__replace_alignmentRtRERGRIR,(R6RRRRR((splugins/ReplaceBar/Manager.pyt__arrange_widgetss((                          cCs#|iodSnti|dS(sx Show the findbar. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. N(RrRtshow_bar(R6((splugins/ReplaceBar/Manager.pyRgs  cCs)|itjodSnti|dS(sx Hide the findbar. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. N(RrRqRthide_bar(R6((splugins/ReplaceBar/Manager.pyRss cCs<|itjotSn|iidt|iitS(Nt sensitive(RsRqRvR|Rot grab_focus(R6((splugins/ReplaceBar/Manager.pyt__show_replace_stop_button_cbs  cCs<|itjotSn|iidt|iitS(s* Show the stop button. The stop button is shown if a searching operation is more than 1 second long. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @return: True to call this function again, False otherwise. @rtype: A Boolean object. R(RpRqRCR|RoR(R6((splugins/ReplaceBar/Manager.pyt__show_stop_button_cbs  cCs|ii|i|ii|i|ii|i|ii|i|ii|i|ii|i|ii|idS(s Block signals for the search and replace manager. The search and replace manager is used multiple widgets and functions. Thus when the find bar is hidden, these signals need to be blocked. Otherwise, the find bar traps these signals and handles them which can lead to unwanted behavior. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. N( R8t handler_blockRRRRRRR!(R6((splugins/ReplaceBar/Manager.pyt__block_search_replace_signalss cCs|ii|i|ii|i|ii|i|ii|i|ii|i|ii|i|ii|idS(s Unblock signals for the search and replace manager. The search and replace manager is used multiple widgets and functions. Thus when the find bar is hidden, these signals need to be blocked. Otherwise, the find bar traps these signals and handles them. This can lead to unwanted behavior. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. N( R8thandler_unblockRRRRRRR!(R6((splugins/ReplaceBar/Manager.pyt __unblock_search_replace_signalss cCst|_|iidt|iidt|iidt|iidtddkl }|d|i |i idt|i |i jo|i|i ddkl}l}l}|id|iddd d d d d dd||Bd||Bdd dd |iin|i|i jo|i|iddkl}l}l}|id|iddd d d dd dd||Bd||Bdd dd |iidt|iindS(s Handles callback when the "replacing" signal is emitted. @param self: Reference to the ScribesReplaceBar instance. @type self: A ScribesReplaceBar object. @param replacemanager: The text editor's replace object. @type replacemanager: A ScribesReplaceBar object. Ri(t timeout_addi(RRRRRiRiRiRiRRRRiN(RoRsR"R|RqR=R'R*tgobjectRt(_ReplaceBar__show_replace_stop_button_cbRAR?t get_childrentremoveRmRRRRtshow_allRIRv(R6treplacemanagerRRRR((splugins/ReplaceBar/Manager.pyt__replacebar_replacing_cbsH     cCst|_|iidt|iidt|iidt|iidt|i|i jo|i |iddk l }l }l}|id|iddddd d d d d ||Bd||Bdddd |iin|iidS(s Handles callback when the "replaced" signal is emitted. @param self: Reference to the ScribesReplaceBar instance. @type self: A ScribesReplaceBar object. @param replacemanager: The text editor's replace object. @type replacemanager: A ScribesReplaceBar object. Ri(RRRRRiRiRiRiRRRiRN(RqRsR"R|RoR=R'R*RvRRRmRRRRRIRR(R6RRRR((splugins/ReplaceBar/Manager.pyt__replacebar_replaced_cbs(    cCst|_|iidt|iidt|iidt|iidt|i|i jo|i |in|i |i jo|i |i ddk l }l}l}|id|iddddd d d d d ||Bd||Bdddd |iin|i|i joxddk l}l }l}|id|iddddd dd d d ||Bd||Bdddd |iin|iidS(s( Handles callback when the "cancel" signal is emitted. @param self: Reference to the ScribesReplaceBar instance. @type self: A ScribesReplaceBar object. @param searchmanager: An object that performs search and replace operations. @type searchmanager: A SearchReplaceManager object. Ri(RRRRRiRiRiRiRRRiR(RRRN(RqRsR"R|RoR=R*R'RCRRRvRmRRRRRIRR(R6t searchmanagerRRR((splugins/ReplaceBar/Manager.pyt__replacebar_cancel_cbsD      cCs|iit|_ddkl}|d|i|i|ijo|i |in|i |ijokddk l }l }l}|id|i dddd d d d d d||Bd||Bdd dd n|i idt|i idS(s  Handles callback when the "searching" signal is emitted. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @param searchmanager: The text editor's searchmanager @type searchmanager: A SearchProcessor object. i(Ri(RRRRRiRiRiRiRRRRRN(R8tresetRoRpRRt _ReplaceBar__show_stop_button_cbR=RRRCRmRRRRR|RqR(R6RRRRR((splugins/ReplaceBar/Manager.pyt__replacebar_searching_cbJs(      cCs-t|_|i|ijo|i|inddkl}l}l}|i i djo\|i d|i ddddd d d dd ||Bd ||Bdd dd |i i nl|i d|iddddd d d dd ||Bd ||Bdd dd |iidt|ii dS(s  Handles callback when the "matches-found" signal is emitted. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @param searchmanager: The text editor's searchmanager @type searchmanager: A SearchProcessor object. i(RRRiRRiRiRiRRRRRRN(RqRpRCRRRmRRRR8tnumber_of_matchesRR?RR=R|(R6RRRR((splugins/ReplaceBar/Manager.pyt__replacebar_matches_found_cbis6      cCst|_|i|ijo|i|in|i|ijoddkl}l}l }|i d|idddddd d d d ||Bd ||Bdd dd |ii dt|ii ndS(s Handles callback when the "no-matches-found" signal is emitted. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @param searchmanager: The text editor's searchmanager @type searchmanager: A SearchProcessor object. i(RRRRRiRiRiRiRRRRRN( RqRpRCRRR=RmRRRRR|R(R6RRRR((splugins/ReplaceBar/Manager.pyt __replacebar_no_matches_found_cbs"   cCsZ|i|ijo"|io|iiqVn|io|iintS(sP Handles callback when the findbar's entry "activate" signal is emitted. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @param entry: The findbar's text entry. @type entry: A gtk.Entry object. @return: True to propagate signals to parent widgets. @type: A Boolean Object. (R=Rtget_textR R?Ro(R6tentry((splugins/ReplaceBar/Manager.pyt__replacebar_activate_cbs   cCsddkl}l}l}|ii|i|ijo|i|in|i |ijo\|i d|i dddddd d d d ||Bd ||Bdd dd |i i nt S(sO Handles callback when the findbar's entry "changed" signal is emitted. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @param entry: The findbar's text entry. @type entry: A gtk.Entry object. @return: True to propagate signals to parent widgets. @type: A Boolean Object. i(RRRRRiRiRiRiRRRR( RmRRRR8RR?RRR=RRRq(R6RRRR((splugins/ReplaceBar/Manager.pyt__replacebar_changed_cbs    cCsO|i|ijo|i|in|i|ijoxddkl}l}l}|id|idddddd d d d ||Bd ||Bdd dd |ii n|i i dt |i io|ii dtn|ii dt |i i|ii dt |ii dt |ii dt tS(s  Handles callback when the "toggled" signal is emitted. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @param togglebutton: The findbar's case check button. @type togglebutton: A ScribesFindCaseButton object. i(RRRRRiRiRiRiRRRRR(R?RRR=RmRRRRRRAR|RqR"RRoRRGRIRE(R6t togglebuttonRRR((splugins/ReplaceBar/Manager.pyt__replacebar_toggled_cbs.    cCsp|iddjodSnt|_|iddkl}|iii|d|_ |i dtdS(sH Handles callback when the "show-bar" signal is emitted. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @param editor: Reference to the text editor. @type editor: An Editor object. @param gotobar: The text editor's gotobar. @type gotobar: A ScribesFindBar object. Rysscribes replacebarNi(tmsg0009treplaceR( t get_propertyRoRrt+_ReplaceBar__unblock_search_replace_signalsRlRR7tfeedbacktset_modal_messageRkR|(R6R7tbarR((splugins/ReplaceBar/Manager.pyt__replacebar_show_bar_cbs   cCs|iddjodSn|it|_|iii|it|i|i jo|i |in|i |i jo|i |i n|i |i joxddk l}l}l}|id|i ddd d d d d dd||Bd||Bdd dd |i inddkl}|iii|dd|i|i jo|i |iddk l}l}l}|id|iddd d d dd dd||Bd||Bdd dd |iindS(sH Handles callback when the "hide-bar" signal is emitted. @param self: Reference to the ScribesFindBar instance. @type self: A ScribesFindBar object. @param editor: Reference to the text editor. @type editor: An Editor object. @param gotobar: The text editor's gotobar. @type gotobar: A ScribesFindBar object. Rysscribes replacebarNi(RRRRRiRiRiRiRRRR(tmsg0010tinfoi(RR5RqRrR.Rtunset_modal_messageRkR?RRRCR=RmRRRRRRlRR7tupdate_status_messageRvRI(R6R7RRRRR((splugins/ReplaceBar/Manager.pyt__replacebar_hide_bar_cbsJ       cCsQddkl}l}||i|i||i|i||i|i||i|i||i|i||i |i||i |i||i |i ||i |i ||i|i||i|i||i|i||i|i||i|i||i||i||~d}dS(s Handles callback when "delete" signal is emitted. @param self: Reference to the ReplaceBar instance. @type self: A ReplaceBar object. @param replacebar: Reference to the ReplaceBar instance. @type replacebar: A ReplaceBar object. i(tdisconnect_signaltdelete_attributesN(t SCRIBES.utilsRRRRRRRRRR!R$R"R&R)R*R+R-R,R0R.R2R4tdestroyRj(R6t replacebarRR((splugins/ReplaceBar/Manager.pyt __destroy_cbNs*   ((5t__name__t __module__t__doc__RRt __gsignals__Rt'_ReplaceBar__get_search_replace_managert_ReplaceBar__get_entryt"_ReplaceBar__get_match_case_buttont"_ReplaceBar__get_match_word_buttont_ReplaceBar__get_search_buttont_ReplaceBar__get_next_buttont _ReplaceBar__get_previous_buttont_ReplaceBar__get_stop_buttont_ReplaceBar__get_replace_entryt_ReplaceBar__get_replace_buttont#_ReplaceBar__get_replace_all_buttont)_ReplaceBar__get_incremental_check_buttontpropertytsearch_replace_managertfind_text_entrytmatch_case_buttontmatch_word_buttont next_buttontprevious_buttont search_buttontfind_stop_buttont replace_entrytreplace_buttontreplace_all_buttontincremental_buttonRRRRRRRR5RRRRRRR R#R%R(R/R1R3(((splugins/ReplaceBar/Manager.pyR"sb &             ;      /  -  '    #  6N( Rt SCRIBES.barRRmRRRRRRR(((splugins/ReplaceBar/Manager.pyss