³ò £õEc@s<dZddklZlZlZdefd„ƒYZdS(s' This module documents a class that creates an object that searches for, or replaces, text found in the text editor's buffer. @author: Lateef Alabi-Oki @organization: The Scribes Project @copyright: Copyright © 2005 Lateef Alabi-Oki @license: GNU GPLv2 or Later @contact: mystilleef@gmail.com iÿÿÿÿ(tGObjecttSIGNAL_RUN_LASTt TYPE_NONEtSearchReplaceManagercBsieZdZheed3fd<eed4fd<eed5fd<eed6fd<eed7fd<eed8fd<eed9fd<eed:fd<eed;fd <eed<fd <eed=fd sm This class implements and object that searches for, or replaces, text found in the text editor's buffer. s matches-foundsno-matches-foundt searchingtnexttprevioustcancelsupdated-queriest replacingtreplaceds replaced-alltdestroycCs…ti|ƒ|i|ƒ|iiid|ƒ|_|id|iƒ|_ |id|i ƒ|_ |id|i ƒ|_ |id|iƒ|_|id|iƒ|_|id|iƒ|_|id|iƒ|_|id |iƒ|_|id |iƒ|_|id |iƒ|_|id |iƒ|_|id |iƒ|_|i i!d|i"ƒ|i i!d|i"ƒdS(sÛ Initialize the object. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param editor: Reference to the text editor. @type editor: An Editor object. RRs matches-foundsno-matches-foundRRRRR s replaced-allshide-barsshow-barR s/apps/scribes/match_cases/apps/scribes/match_wordN(#Rt__init__t&_SearchReplaceManager__init_attributest_SearchReplaceManager__editortstoret add_objectt_SearchReplaceManager__store_idtconnectt*_SearchReplaceManager__search_searching_cbt"_SearchReplaceManager__signal_id_1t._SearchReplaceManager__search_matches_found_cbt"_SearchReplaceManager__signal_id_2t1_SearchReplaceManager__search_no_matches_found_cbt"_SearchReplaceManager__signal_id_3t%_SearchReplaceManager__search_next_cbt"_SearchReplaceManager__signal_id_4t)_SearchReplaceManager__search_previous_cbt"_SearchReplaceManager__signal_id_5t'_SearchReplaceManager__search_cancel_cbt"_SearchReplaceManager__signal_id_6t*_SearchReplaceManager__search_replacing_cbt"_SearchReplaceManager__signal_id_7t)_SearchReplaceManager__search_replaced_cbt"_SearchReplaceManager__signal_id_8t,_SearchReplaceManager__search_replace_all_cbt"_SearchReplaceManager__signal_id_9t)_SearchReplaceManager__search_hide_bar_cbt#_SearchReplaceManager__signal_id_10t)_SearchReplaceManager__search_show_bar_cbt#_SearchReplaceManager__signal_id_11t!_SearchReplaceManager__destroy_cbt#_SearchReplaceManager__signal_id_12t#_SearchReplaceManager__gconf_clientt notify_addt'_SearchReplaceManager__search_client_cb(tselfteditor((s plugins/SearchReplace/Manager.pyR 6s"  cCsc||_g|_d|_d|_d|_d|_g|_|iƒ|_ |i ƒ|_ |i ƒ|_ t|_t|_t|_t|_t|_ddkl}|ƒ|_|iidƒ|_|iidƒ|_t|_t|_d|_d|_|_|_ d|_!|_"|_#d|_$|_%|_&d|_'|_(|_)d|_*dS(sï Initialize data attributes for the object. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param editor: Reference to the text editor. @type editor: An Editor object. iÿÿÿÿ(tclient_get_defaults/apps/scribes/match_cases/apps/scribes/match_wordN(+R t_SearchReplaceManager__queriestNonet'_SearchReplaceManager__start_point_markt%_SearchReplaceManager__end_point_markt_SearchReplaceManager__indext(_SearchReplaceManager__number_of_matchest*_SearchReplaceManager__position_of_matchest'_SearchReplaceManager__create_match_tagt _SearchReplaceManager__match_tagt+_SearchReplaceManager__create_selection_tagt$_SearchReplaceManager__selection_tagt)_SearchReplaceManager__create_replace_tagt"_SearchReplaceManager__replace_tagtFalset._SearchReplaceManager__cancel_search_operationt/_SearchReplaceManager__cancel_replace_operationt0_SearchReplaceManager__enable_regular_expressiont0_SearchReplaceManager__enable_incremental_searchtTruet!_SearchReplaceManager__reset_flagtgconfR/R*tget_boolt!_SearchReplaceManager__match_caset!_SearchReplaceManager__match_wordt%_SearchReplaceManager__is_initializedt%_SearchReplaceManager__bar_is_visiblet _SearchReplaceManager__status_idRRRRRRRR!R#R%R'R)R(R-R.R/((s plugins/SearchReplace/Manager.pyt__init_attributesRs8                 cCs|iS(N(R4(R-((s plugins/SearchReplace/Manager.pyt __get_indexyscCs|iS(N(R5(R-((s plugins/SearchReplace/Manager.pyt__get_number_of_matches|scCs|iS(N(R0(R-((s plugins/SearchReplace/Manager.pyt __get_queriesscCs|iS(N(RH(R-((s plugins/SearchReplace/Manager.pyt__get_is_initialized‚stdoctsNumber of match foundcCsû||_||_t|_t|_|idƒ||ijo!|ii|ƒ|idƒn!|ii|ƒ|ii|ƒ|i |ƒ}|io|i ƒdSn|o||_ |idƒn*|io|i ƒdSn|idƒdS(sù Search the text editor's buffer for a string. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param string: A string in the buffer to search for. @type string: A String object. Rsupdated-queriesNs matches-foundsno-matches-found( R2R3R=RCR>temitR0tappendtremovet)_SearchReplaceManager__search_for_matchest_SearchReplaceManager__resetR6(R-tstringtstarttendt found_matches((s plugins/SearchReplace/Manager.pytfind‘s,           cCs|i|||ƒdS(N(R[(R-RWRXRY((s plugins/SearchReplace/Manager.pytsearchµscCs|idƒdS(sœ Move the selection tag to the next match. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. RN(RR(R-((s plugins/SearchReplace/Manager.pyR¹s cCs|idƒdS(s  Move the selection tag to the previous match. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. RN(RR(R-((s plugins/SearchReplace/Manager.pyRÃs cCsÞt|_t|_|idƒ|i|i\}}|ii}|id|t ƒ}|i ƒ|i ƒ|i ||ƒ|i|ƒ}|i|||iƒ|iƒ|iƒtjo|i|ƒn|idƒdS(s‹ Replace selected text in the text editor's buffer. @param self: Reference to the Replace instance. @type self: A Replace object. RR N(R=RCR?RRR6R4R t textbuffert create_markR1RBRVtbegin_user_actiontdeletetget_iter_at_marktinsert_with_tagsR<tend_user_actiont get_deletedt delete_mark(R-ttexttbeginRYR]t begin_mark((s plugins/SearchReplace/Manager.pytreplaceÓs         c såt|_t|_|idƒg‰|ii‰‡‡fd†}ddkl}x€|iD]u}|ƒˆi d|dt ƒ}ˆi d|dtƒ}ˆi ||fƒ|io|ƒ|i ƒdSq]q]W|i ƒddkl}ˆiƒxªˆD]¢}|ƒ|io|ƒdSnˆi|dƒ}ˆi|dƒ} ˆi|| ƒˆi|dƒ}ˆi|ƒˆi|||iƒ||iiƒqWˆiƒ|ƒ|io|i ƒdSn|id ƒdS( s Replace all selected text in the text editor's buffer. @param self: Reference to the Replace instance. @type self: A Replace object. RcsmxfˆD]^}|diƒtjoˆi|dƒn|diƒtjoˆi|dƒqqWdS(Nii(RdR=Re(titem(tposition_marksR](s plugins/SearchReplace/Manager.pyt delete_marks÷s iÿÿÿÿ(tresponseiiN(tmove_view_to_cursors replaced-all(R=RCR?RRR R]t SCRIBES.utilsRmR6R^R1RBRSRVtSCRIBES.cursorRnR_RaR`t place_cursorRbR<ttextviewRc( R-RfRlRmtpositiont mark_begintmark_endRnRgRY((RkR]s plugins/SearchReplace/Manager.pyt replace_allësP                cCs|idƒdS(s Cancel a search operation. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. RN(RR(R-((s plugins/SearchReplace/Manager.pyR$s cCs|iƒdS(s– Reset the search processor's state. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. N(RV(R-((s plugins/SearchReplace/Manager.pytreset.s cCs+|tjp |tjo ||_ndS(só Enable or disable incremental searching. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param value: True to enable incremental searching. @type value: A Boolean object. N(RBR=RA(R-tvalue((s plugins/SearchReplace/Manager.pytenable_incremental_searching8s  cCs|iS(sÒ Return a list of search queries. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @return: A list of search queries. @rtype: A List object. (R0(R-((s plugins/SearchReplace/Manager.pyt get_queriesFs cCs|iS(N(RH(R-((s plugins/SearchReplace/Manager.pytis_initializedRscCsV|iiiƒ}|iddƒ|iddƒddkl}|id|ƒ|S(s› Create the search processor's match tag. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. t backgroundtyellowt foregroundtblueiÿÿÿÿ(t WEIGHT_BOLDtweight(R R]t create_tagt set_propertytpangoR€(R-ttagR€((s plugins/SearchReplace/Manager.pyt__create_match_tag[s cCsV|iiiƒ}|iddƒ|iddƒddkl}|id|ƒ|S(sž Create the search processor's selection tag @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. R|RR~R}iÿÿÿÿ(t WEIGHT_HEAVYR(R R]R‚RƒR„R‡(R-R…R‡((s plugins/SearchReplace/Manager.pyt__create_selection_tagis cCsV|iiiƒ}|iddƒ|iddƒddkl}|id|ƒ|S(s‡ Create the replace tag for the Replace object. @param self: Reference to the Replace instance. @type self: A Replace object. R|tgreenR~Riÿÿÿÿ(R‡R(R R]R‚RƒR„R‡(R-R…R‡((s plugins/SearchReplace/Manager.pyt__create_replace_tagws c Csw|iii|iƒ}|iii|iƒ}|io?ddkl}||iiƒ}|iii|i|ƒn|iii ||ƒ}g}ddk l }l }l } l} l} |ioB|io||||| Bƒ} qU||||| B| Bƒ} nK|io || |ƒ||| Bƒ} n!|| |ƒ||| B| Bƒ} | pdSn|i| ƒ}|S(sí Search the text editor's buffer for a string. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param string: The string to search for. @type string: A String object. iÿÿÿÿ(tget_cursor_iterator(tUNICODEtfindalltescapet MULTILINEt IGNORECASEN(R R]RaR2R3RARpR‹t move_marktget_texttreRŒRRŽRRR@RFR1t$_SearchReplaceManager__get_positions( R-RWRgRYR‹RfRZRŒRRŽRRtmatches((s plugins/SearchReplace/Manager.pyt__search_for_matches‹s(  (     c Cs*g}|iii|iƒ}|iii|iƒ}ddkl}ddkl}x[|D]S}|i odSn|ƒ|i |||ƒ\}} |i || fƒ| }q]W|i oh|itjoXg} xE|D]=\}} |iƒo$| iƒo| i || fƒqÛqÛW| }n|S(s= Get position of found matches in the buffer. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param matches: Found matches. @type matches: A List object. @return: Position of found matches in the text editor's buffer. @rtype: A List object. iÿÿÿÿ(tTEXT_SEARCH_VISIBLE_ONLY(RmN(R R]RaR2R3tgtkR—RoRmR>R1tforward_searchRSRGR@R=t starts_wordt ends_word( R-R•t positionsRgRYR—RmtmatchRXtstopttemp((s plugins/SearchReplace/Manager.pyt__get_positions­s*     cCsSddkl}|io|iii|iƒn|iii|dƒ|_dS(s, Handles callback when the "searching" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param SearchReplaceManager: The text editor's search processor. @type SearchReplaceManager: A SearchReplaceManager object. iÿÿÿÿ(tmsg0001trunN(ti18nR¡RJR tfeedbacktunset_modal_messagetset_modal_message(R-RR¡((s plugins/SearchReplace/Manager.pyt__search_searching_cbÔs  c Cs~t|_|iodSnd|_t|iƒ|_xG|iD]<}|iodSn|iii |i |d|dƒq@W|i|i\}}|iii |ƒ|iii |i ||ƒddk l}||iiƒ|io|iii|iƒnddkl}l}||id|if}|iii|dƒ|_||i}|iii|dd ƒdS( s0 Handles callback when the "matches-found" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param SearchReplaceManager: The text editor's search processor. @type SearchReplaceManager: A SearchReplaceManager object. Niiiÿÿÿÿ(Rn(tmsg0002tmsg0003R[tsucceedi (R=RCR>R4tlenR6R5R R]t apply_tagR8RqR:RpRnRrRJR¤R¥R£R¨R©R¦tupdate_status_message( R-RRsRgRYRnR¨R©tmessage((s plugins/SearchReplace/Manager.pyt__search_matches_found_cbäs.     (  cCs7|iƒddkl}|iii|ddƒdS(s7 Handles callback when the "no-matches-found" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param SearchReplaceManager: The text editor's SearchReplaceManager. @type SearchReplaceManager: A SearchReplaceManager object. iÿÿÿÿ(tmsg0004twarningi N(RVR£R°R R¤R­(R-RR°((s plugins/SearchReplace/Manager.pyt__search_no_matches_found_cbs cCsct|_|i|idjo.ddkl}|iii|dƒdSn|ii i ƒ\}}|ii i |i ||ƒ|id7_|i |i\}}|ii i|ƒ|ii i|i ||ƒddkl}||iiƒ|io|iii|iƒnddkl}||id|if}|iii|dƒ|_dS( s+ Handles callback when the "next" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param SearchReplaceManager: The text editor's SearchReplaceManager. @type SearchReplaceManager: A SearchReplaceManager object. iiÿÿÿÿ(tmsg0005R±N(Rn(R©R[(R=RCR4R5R£R³R R¤R­R]t get_boundst remove_tagR:R6RqR¬RpRnRrRJR¥R©R¦(R-RR³RgRYRnR©R®((s plugins/SearchReplace/Manager.pyt__search_next_cbs&  cCs\t|_|idjo.ddkl}|iii|dƒdSn|iii ƒ\}}|iii |i ||ƒ|id8_|i |i\}}|iii |ƒ|iii|i ||ƒddkl}||iiƒ|io|iii|iƒnddkl}||id|if}|iii|d ƒ|_dS( s/ Handles callback when the "previous" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param SearchReplaceManager: The text editor's SearchReplaceManager. @type SearchReplaceManager: A SearchReplaceManager object. iiÿÿÿÿ(tmsg0010R±Ni(Rn(R©R[(R=RCR4R£R·R R¤R­R]R´RµR:R6RqR¬RpRnRrRJR¥R©R5R¦(R-RR·RgRYRnR©R®((s plugins/SearchReplace/Manager.pyt__search_previous_cb3s&  cCsFt|_t|_|iƒddkl}|iii|dƒdS(s- Handles callback when the "cancel" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param SearchReplaceManager: The text editor's SearchReplaceManager. @type SearchReplaceManager: A SearchReplaceManager object. iÿÿÿÿ(tmsg0006RžN( RBR>R?RVR£R¹R R¤R¦(R-RR¹((s plugins/SearchReplace/Manager.pyt__search_cancel_cbQs   cCsddkl}l}||iƒo<||iiƒtƒo#|iii|iƒd|_n||i ƒo<||i iƒtƒo#|iii|i ƒd|_ nt|_ |i dj o0|i |i \}}|iii||ƒn|iƒt|_t|_dS(sS Handles callback when the "hide-bar" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param editor: Reference to the text editor. @type editor: An Editor object. @param bar: One of the text editor's bar objects. @type bar: A ScribesBar object. iÿÿÿÿ(tis_ttruthN(toperatorR»R¼R2RdR=R R]ReR1R3RIR4R6t select_rangeRVR@RA(R-R.tbarR»R¼RgRY((s plugins/SearchReplace/Manager.pyt__search_hide_bar_cbbs ) )     cCs t|_dS(sS Handles callback when the "show-bar" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param editor: Reference to the text editor. @type editor: An Editor object. @param bar: One of the text editor's bar objects. @type bar: A ScribesBar object. N(RBRI(R-R.R¿((s plugins/SearchReplace/Manager.pyt__search_show_bar_cbs cCs\t|_ddkl}|io|iii|iƒn|iii|dƒ|_dS(Niÿÿÿÿ(tmsg0007R¢( R=RCR£RÂRJR R¤R¥R¦(R-t processorRÂ((s plugins/SearchReplace/Manager.pyt__search_replacing_cbs   cCsZt|_ddkl}|io|iii|iƒn|iii|ddƒdS(Niÿÿÿÿ(tmsg0008Rªi ( R=RCR£RÅRJR R¤R¥R­(R-RÃRÅ((s plugins/SearchReplace/Manager.pyt__search_replaced_cb—s   cCsZt|_ddkl}|io|iii|iƒn|iii|ddƒdS(Niÿÿÿÿ(tmsg0009Rªi ( R=RCR£RÇRJR R¤R¥R­(R-RÃRÇ((s plugins/SearchReplace/Manager.pyt__search_replace_all_cbŸs   cCs(|idƒ|_|idƒ|_dS(s¨ Handles callback when the GConf database is modified. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. s/apps/scribes/match_cases/apps/scribes/match_wordN(RERFRG(R-tclienttcnxn_idtentrytdata((s plugins/SearchReplace/Manager.pyt__search_client_cb§scCså|iodSn|io|iii|iƒnd|_d|_d|_g|_|ii i ƒ\}}|ii i |i ||ƒ|ii i |i ||ƒ|ii i |i||ƒt|_t|_t|_dS(s– Reset the search processor's state. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. N(RCRJR R¤R¥R1R4R5R6R]R´RµR8R:R<R=R>R?RB(R-RgRY((s plugins/SearchReplace/Manager.pyt__reset¸s          cCs6|iiid|iƒddkl}l}ddkl}||i|ƒ||i |ƒ||i |ƒ||i |ƒ||i |ƒ||i |ƒ||i|ƒ||i|ƒ||i|ƒ||i|ƒ||i|iƒ||i|iƒ||iƒ||iƒ||ƒ~d}dS(s Handles callback when the "destroy" signal is emitted. @param self: Reference to the SearchReplaceManager instance. @type self: A SearchReplaceManager object. @param manager: Reference to the SearchReplaceManager instance. @type manager: A SearchReplaceManager object. Riÿÿÿÿ(tdisconnect_signaltdelete_attributes(t delete_listN(R Rt remove_objectRRoRÏRÐRÑRRRRRRRR!R#R)R'R%R0R6R1(R-tmanagerRÏRÐRÑ((s plugins/SearchReplace/Manager.pyt __destroy_cbÐs*    ((((((((((((/t__name__t __module__t__doc__RRt __gsignals__R R t _SearchReplaceManager__get_indext,_SearchReplaceManager__get_number_of_matchest"_SearchReplaceManager__get_queriest)_SearchReplaceManager__get_is_initializedtpropertytindextnumber_of_matchestqueriesR{R[R\RRRiRvRRwRBRyRzR7R9R;RUR”RRRRRRR$R&RR R"R,RVR((((s plugins/SearchReplace/Manager.pyR"sj  '     $    9     " '  "           N(R×tgobjectRRRR(((s plugins/SearchReplace/Manager.pyss