a „oe+”ã@sêddlZddlZddlZddlZddlZddlZddlZddlZddlZ ddl Z ddl Z ddl Z ddl mZmZmZmZddlmZmZddlmZmZmZmZddlmZmZe jr¾ejZnej Zddl!TdZ"d d „Z#d d „Z$Gd d„dej%ƒZ&Gdd„de&ƒZ'Gdd„dej(ƒZ)Gdd„de&ƒZ*Gdd„de&ƒZ+Gdd„dej,ƒZ-Gdd„dej.ƒZ/Gdd„de/ƒZ0Gdd„de/ƒZ1Gdd „d e1ƒZ2Gd!d"„d"e1ƒZ3d#d$„Z4d%e0dfd&e2d'fd(e3dffZ5d)d*„Z6dZ7dZ8d+Z9ej:Z;Gd,d-„d-e;ƒZz %s (%s:%d)r) ÚmyobjectÚf_codeÚco_nameÚf_localsÚstrÚosÚpathÚsplitÚ co_filenameÚf_lineno)r ÚnamerrrÚGetText>s   ýzHierFrameItem.GetTextcCs|jj|jurdSdSdS)Néé)rÚcurframer#©r rrrÚGetBitmapColumnMszHierFrameItem.GetBitmapColumncCs4g}| t|jjddƒ¡| t|jjddƒ¡|S)NZLocalséZGlobalsr)ÚappendÚ HierFrameDictr#r&Ú f_globals)r ÚretrrrÚ GetSubListSszHierFrameItem.GetSubListcCsdS©Nrrr2rrrÚ IsExpandableYszHierFrameItem.IsExpandablecCs|j |j¡dSr:)rÚ set_cur_framer#r2rrrÚTakeDefaultAction\szHierFrameItem.TakeDefaultActionN) rrrrr.r3r9r;r=rrrrr9s rc@seZdZdd„Zdd„ZdS)r6cCs||_tj |||¡dSr)Ú bitmapColumnr ÚHLIDictr)r Údictr-r>rrrrcszHierFrameDict.__init__cCs|jSr)r>r2rrrr3gszHierFrameDict.GetBitmapColumnN)rrrrr3rrrrr6bsr6c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚNoStackAvailableItemcCst |d|¡dSr)rr)r ÚwhyrrrrlszNoStackAvailableItem.__init__cCsdS©Nrrr2rrrr;osz!NoStackAvailableItem.IsExpandablecCs|jSr)r-r2rrrr.rszNoStackAvailableItem.GetTextcCsdS)Nr0rr2rrrr3usz$NoStackAvailableItem.GetBitmapColumnN)rrrrr;r.r3rrrrrAksrAc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú HierStackRootcCst ||d¡g|_dSr)rrÚ last_stack©r rrrrrzszHierStackRoot.__init__cCs€|j}g}|jtkr\|jdd…}| ¡g|_|D]&\}}|j ||f¡||jur4q\q4|jD]\}}| t||ƒ¡qb|Sr) r#Ú debuggerStateÚDBGSTATE_BREAKÚstackÚreverserEr5Ú userbotframer)r rr8ZstackUser!Úlinenorrrr9€s  ÿzHierStackRoot.GetSubListcCsdS)Nz root itemrr2rrrr.–szHierStackRoot.GetTextcCsdSr:rr2rrrr;™szHierStackRoot.IsExpandableN)rrrrr9r.r;rrrrrDysrDc@s eZdZdZdd„Zdd„ZdS)ÚHierListDebuggerz0Hier List of stack frames, breakpoints, whateverc Cs$tj |dtjdt ddd¡¡dS)Néÿr)r ÚHierListWithItemsrÚwin32uiZIDB_DEBUGGER_HIERÚwin32apiZRGBr2rrrr sÿzHierListDebugger.__init__cCst|ƒ}| |¡dSr)rDZ AcceptRoot)r rÚrootrrrÚSetup¥szHierListDebugger.SetupN)rrrÚ__doc__rrSrrrrrMsrMc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚDebuggerWindowcCstj ||¡d|_dSr)r ÚWndrr)r Úobrrrr¯szDebuggerWindow.__init__cCs ||_dSr)rrFrrrÚInit³szDebuggerWindow.InitcCs,t d|j¡}|d|ddkr(d}|S)NúDebugger Windows\r4r)rré–rZ)rZLoadWindowSizeÚtitle)r ZdefRectrrrÚ GetDefRect¶szDebuggerWindow.GetDefRectcCs0| ¡d}tjj d|j|¡tj ||¡S)NérY) ZGetWindowPlacementÚpywinZ frameworkrZSaveWindowSizer[r rVÚ OnDestroy)r ÚmsgZnewSizerrrr_¼s zDebuggerWindow.OnDestroycCsl|d}|dvrdS|dvr(| ¡dSt ¡}z |jj}WntyRd}Yn0|durd||ƒSdSdS)Nr4)é éé r)é.r0r)ÚDeleteSelectedrZ GetActiveViewZbindingsZfire_key_eventÚAttributeError)r r`ÚkeyÚviewZfirerrrrÚ OnKeyDownÁs   zDebuggerWindow.OnKeyDowncCs t ¡dSr©rQÚ MessageBeepr2rrrreÒszDebuggerWindow.DeleteSelectedcCs t ¡dSrrjr2rrrÚ EditSelectedÕszDebuggerWindow.EditSelectedN) rrrrrXr\r_rirerlrrrrrU®srUc@s8eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd S) ÚDebuggerStackWindowZStackcCs"t |t ¡¡tƒ|_d|_dSrC)rUrrPZCreateTreeCtrlrMÚlistÚlistOKr2rrrrÜszDebuggerStackWindow.__init__cCs,|j ¡d|_t d|jd| ¡¡dS)NrrYÚVisible)rnÚDeleteAllItemsrorPÚWriteProfileValr[ÚIsWindowVisibler2rrrÚ SaveStateás  ÿzDebuggerStackWindow.SaveStatecCsttjtjBtjBtjBtjBtjB}|j  ||  ¡|t j ¡|  |jtj¡|  |jtj¡|j ||¡d|_dSrC)Úwin32conÚWS_CHILDÚ WS_VISIBLEÚ WS_BORDERÚcommctrlZ TVS_HASLINESZTVS_LINESATROOTZTVS_HASBUTTONSÚ_obj_Ú CreateWindowr\rPÚ IDC_LIST1Ú HookMessageriÚ WM_KEYDOWNÚ WM_SYSKEYDOWNrnZHierInitro)r ÚparentÚstylerrrr{ès"ÿþýüûÿz DebuggerStackWindow.CreateWindowcCs<|jdusJdƒ‚|js.d|_|j |j¡n |j ¡dS)NzInit not calledr)rrornrSZRefresh©r ÚstaterrrÚRespondDebuggerStateøs z(DebuggerStackWindow.RespondDebuggerStatecCs¨z| d¡}Wntjy$YdS0|j |¡}|j |¡}|j |¡}|durV|}|j |¡||fkrz|j |||¡z|  |¡}Wq&tjy Yq¤Yq&0q&dSrC) Z GetChildItemrPÚerrorrnZItemFromHandler3ZGetSelectedBitmapColumnZ GetItemImageZ SetItemImageZGetNextSiblingItem)r ÚhandleÚitemÚcolZselColrrrÚRespondDebuggerDatas   z'DebuggerStackWindow.RespondDebuggerDataN) rrrr[rrtr{r„r‰rrrrrmÙs rmc@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)ÚDebuggerListViewWindowcCst |t ¡¡dSr)rUrrPZCreateListCtrlr2rrrrszDebuggerListViewWindow.__init__cCsö|}tjtjBtjBtjBtjB}|j ||  ¡|t j ¡|  |j tj¡|  |j tj¡|}|jd\}}tj||df}| d|¡d}|jdd…D]*\}}|d}tj||df}| ||¡q˜| |jt¡| |jtj¡| |jtj¡dS©Nrr)rurvrwrxryZLVS_EDITLABELSZ LVS_REPORTrzr{r\rPr|r}rir~rÚcolumnsZ LVCFMT_LEFTZ InsertColumnZ HookNotifyÚOnListEndLabelEditÚLVN_ENDLABELEDITÚOnItemRightClickZ NM_RCLICKÚOnItemDoubleClickZ NM_DBLCLK)r r€rnrr[ÚwidthZ itemDetailsrˆrrrr{s4ÿþýüÿ z#DebuggerListViewWindow.CreateWindowcCsdSrrr2rrrr‰0sz*DebuggerListViewWindow.RespondDebuggerDatacCsdSrrr‚rrrr„3sz+DebuggerListViewWindow.RespondDebuggerStatecCs8z| dtj¡}Wntjy(YdS0| |¡dS)Néÿÿÿÿ)Ú GetNextItemryÚ LVNI_SELECTEDrPr…Z EditLabel)r Zselrrrrl6s z#DebuggerListViewWindow.EditSelectedcCs.|d}t|ƒtjvr"| ¡dSt ||¡S)Nr4r)ÚchrÚstringZascii_uppercaserlrUri)r r`rgrrrri=s z DebuggerListViewWindow.OnKeyDowncCs | ¡dSr©rl)r Ú notify_dataÚextrarrrrEsz(DebuggerListViewWindow.OnItemDoubleClickc CsÎ| t ¡¡}| |¡\}}}|dks4tj|@dkr8dS| |tjtj¡t  ¡}|  t j t j Bdd¡|  t j t j Bdd¡| ¡}| ¡r˜t ¡} n| ¡} |  |jd¡|  |jd¡| t ¡¡dS)Nr’rièz Edit itemiéz Delete item)ZScreenToClientrQZ GetCursorPosZHitTestryZ TVHT_ONITEMZ SetItemStateZ LVIS_SELECTEDrPZCreatePopupMenuZ AppendMenuruZ MF_STRINGZ MF_ENABLEDZ GetParentZ IsFloatingÚ GetMainFrameZGetParentFrameZ HookCommandÚ OnEditItemÚ OnDeleteItemZTrackPopupMenu) r r˜r™ÚptÚflagsZhItemZsubitemZmenuZdockbarZ hook_parentrrrrHs  z'DebuggerListViewWindow.OnItemRightClickcCs | ¡dSr)re©r ZcommandÚcoderrrrœ]sz#DebuggerListViewWindow.OnDeleteItemcCs | ¡dSrr—rŸrrrr›`sz!DebuggerListViewWindow.OnEditItemN) rrrrr{r‰r„rlrirrrœr›rrrrrŠsrŠc@s8eZdZdZddgZdd„Zdd„Zdd „Zd d „Zd S) ÚDebuggerBreakpointsWindowZ Breakpoints)Ú ConditionéF)ZLocationécCspg}t| ¡ƒD](}| | |d¡¡| | |d¡¡qt d|jdd |¡¡t d|jd| ¡¡dS)NrrrYZBreakpointListú rp© ÚrangeÚ GetItemCountr5Ú GetItemTextrPrrr[Újoinrs©r ÚitemsÚirrrrthsÿÿz#DebuggerBreakpointsWindow.SaveStatec CsŠ|d}|d}|durdS| |d¡d}ddlm}|j ¡D]8}|D].}t|ƒ|krL| ¡ ¡dkrpd}||_qDqLqD|  ¡dS)Nrr]é©Ú BreakpointZnone) ÚGetItemÚbdbr°ÚbplistÚvaluesÚidÚstripÚlowerÚcondr‰) r Ústdr™r‡ÚtextÚitem_idr°r³Úbprrrrus  z,DebuggerBreakpointsWindow.OnListEndLabelEditcCs–zl| dtj¡}| |¡d}ddlm}t|j ¡ƒD]0}|D]&}t |ƒ|kr@|j   |j |j ¡q8q@q8Wntjyˆt ¡Yn0| ¡dS)Nr’r®rr¯)r“ryr”r±r²r°rnr³r´rµrÚ clear_breakÚfileÚlinerPr…rQrkr‰)r Únumr»r°r³r¼rrrreˆs   z(DebuggerBreakpointsWindow.DeleteSelectedc Cs’|}| ¡d}ddlm}|j ¡D]f}|D]\}tj |j¡d}|j }|ddddt |ƒdt |ƒf}|  |¡}|  |dd||jf¡q.q&dS)Nr’rr¯rz%s: %s)rqr²r°r³r´r(r)r*r¾r¸r'rµÚ InsertItemÚ SetItemTextr¿) r ÚlÚindexr°r³r¼ZbaseNamer¸r‡rrrr‰—s  z-DebuggerBreakpointsWindow.RespondDebuggerDataN) rrrr[rŒrtrrer‰rrrrr¡ds  r¡c@s@eZdZdZddgZdd„Zdd„Zdd „Zd d „Zd d „Z dS)ÚDebuggerWatchWindowZWatch)Z Expressionr£)ZValuer¤cCs\t ||¡t d|jdd¡ d¡}d}|D]}|r.| |d|¡}q.| |dd¡dS)NrYÚItemsÚr¥r’rú )rŠr{rPÚ GetProfileValr[r*rÁ)r r€r¬rÄr‡rrrr{ªs  ÿþz DebuggerWatchWindow.CreateWindowcCsbg}t| ¡dƒD]}| | |d¡¡qt d|jdd |¡¡t d|jd| ¡¡dS)NrrrYrÆr¥rpr¦r«rrrrtµsÿÿzDebuggerWatchWindow.SaveStatecCsd|d}|d}|d}|dur$dS| |d|¡|| ¡dkrR| |dd¡| |jj¡dS)Nrr]rrÈ)rÂr¨rÁr„rrG)r r¹r™r‡ZitemnorºrrrrÁsz&DebuggerWatchWindow.OnListEndLabelEditcCsNz,| dtj¡}|| ¡dkr*| |¡WntjyHt ¡Yn0dS)Nr’r) r“ryr”r¨Z DeleteItemrPr…rQrk)r rÀrrrreÌs z"DebuggerWatchWindow.DeleteSelectedc Csæd}}|tkr.|jjrH|jjj}|jjj}n|tkrHddl}|j}}t|  ¡dƒD]ˆ}|  |d¡}|durvd}n\zt t |||ƒƒ}WnFt y d}Yn2t ¡\}} } t || ¡d ¡}d} Yn0| |d|¡qXdS)NrrrÇz Syntax Error)rHrr1r7r&ÚDBGSTATE_NOT_DEBUGGINGÚ__main__Ú__dict__r§r¨r©rÚevalÚ SyntaxErrorÚsysÚexc_infoÚ tracebackÚformat_exception_onlyr¶rÂ) r rƒrrrËr­rºÚvalÚtÚvÚtbrrrr„Ôs*      z(DebuggerWatchWindow.RespondDebuggerStateN) rrrr[rŒr{rtrrer„rrrrrŦs   rÅcCs|ƒ}| |¡|Sr)r{)r€ÚklassZcontrolrrrÚCreateDebuggerDialogîs rØièiè)é rÙièc Cs2tjtjBtjBtjBtjB}t ||tj ¡}|  dt j ¡|  tj¡| tj¡| d¡| |¡tD]À\}}}z| |¡d}Wntjy d}Yn0|r¨qltjj ¡}tjtjB}|j|t|j|||fd| | ¡tjBtjBtjB¡| tj¡|dur| |¡ql| ||tj¡qldS)NrÚDebuggerr)ZchildCreatorArgs) rurvrZCBRS_SIZE_DYNAMICZCBRS_TOPZ CBRS_TOOLTIPSZ CBRS_FLYBYrPZ CreateToolBarÚID_VIEW_TOOLBAR_DBGZ ModifyStyleryZ TBSTYLE_FLATZ LoadToolBarZ IDR_DEBUGGERZ EnableDockingZCBRS_ALIGN_ANYÚ SetWindowTextZDockControlBarÚDebuggerDialogInfosÚ GetControlBarr…r^ZdockingZ DockingBarZ CBRS_LEFTr{rØr[Z SetBarStyleZ GetBarStyleZFloatControlBar)r!rZtbdrµr×ÚfloatÚexistsZbarrrrÚPrepareControlBarsþs^ÿþýüÿ        úÿþýÿ   rár4c@sšeZdZdd„Zdd„Zdddd„Zdd „Zd d „Zd d „Zdedd„Z dd„Z dd„Z dd„Z dfdd„Z dd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zdgd*d+„Zdhd,d-„Zdid.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zdjd:d;„Zdd?„Z d@dA„Z!dBdC„Z"dDdE„Z#dFdG„Z$dHdI„Z%dJdK„Z&dLdM„Z'dNdO„Z(dPdQ„Z)dRdS„Z*dTdU„Z+dVdW„Z,dXdY„Z-dZd[„Z.d\d]„Z/d^d_„Z0d`da„Z1dbdc„Z2dS)krÚcCsºd|_t|_d|_d|_d|_t|_d|_d|_ d|_ d|_ d|_ t  |¡tj ¡D]4}d}| |dt¡}|dkrxqV| | ¡|¡q^qV| ¡t ¡ ¡|_tƒ|_d|_|_dS)NrrÇr’r)ÚinitedÚ SKIP_NONEÚ skipBotFramerKÚ frameShutdownÚpumpingrÊrGÚshownLineCurrentZshownLineCallstackÚlast_cmd_debuggedZ abortClosedÚisInitialBreakpointÚdebugger_parentrrÚeditorTemplateÚGetDocumentListZ MarkerGetNextrÚ set_breakÚ GetPathNameÚresetrPÚGetAppZIsInprocÚ inForcedGUIZLoadDebuggerOptionsÚoptionsÚ bAtExceptionÚ bAtPostMortem)r ÚdocÚlineNorrrr7s, zDebugger.__init__cCs | ¡dSr)Úcloser2rrrÚ__del__SszDebugger.__del__rc Cs¤|jr| ¡sdS||_|js"dSd|_tddƒt ¡}tD]P\}}}z0| |¡}|j durv|j   ¡|  |dd¡Wq>tj yŒYq>0q>|  ¡| ¡dSr‹)ræÚStopDebuggerPumprårârrPršrÝrÞr rtÚShowControlBarr…Ú_UnshowCurrentLineÚset_quit)r rår!rµr×rßrÖrrrr÷Vs(    zDebugger.closecCs,|jsJdƒ‚| ¡r(d|_t ¡dSdS)Nz/Can't stop the debugger pump if Im not pumping!rr)ræÚGUIAboutToFinishInteractrPrùr2rrrrùvs zDebugger.StopDebuggerPumpcCs0z |j|WSty*td|ƒ‚Yn0dS)z&Public interface into debugger optionszOption %s is not a valid optionN)ròÚKeyErrorr…)r ÚoptionrrrÚ get_options  zDebugger.get_optioncCsdSrr©r ÚcmdrrrÚprep_run†szDebugger.prep_runNcCs| t¡| ¡dSr)r„rÊr÷rrrrÚdone_run‰s zDebugger.done_runcCstj |¡ ¡Sr)r(r)Úabspathr·)r ÚfnamerrrÚcanonicszDebugger.canoniccCs$t |¡d|_| ¡| ¡dSr)rêrïrKÚUpdateAllLineStatesrûr2rrrrïs zDebugger.resetcCst |||¡|du|_dSr)rêÚsetupró)r ÚfrÔrrrr –szDebugger.setupcCs*| |¡}| ||t¡t |||||¡Sr)rÚ SetLineStateÚLINESTATE_BREAKPOINTrêrí)r ÚfilenamerLZ temporaryr¸rrrríšs zDebugger.set_breakcCs&| |¡}| ||t¡t |||¡Sr)rÚResetLineStater rêr½)r r rLrrrr½Ÿs zDebugger.clear_breakcCs|jr dS| ¡dSr)råÚGUIAboutToBreakr2rrrÚcmdloop¤szDebugger.cmdloopcCsdSrr©r r!rrrÚprint_stack_entry©szDebugger.print_stack_entrycCs||jd<| |d¡dS)NZ __return__)r&Ú interaction)r r!Z return_valuerrrÚ user_return­s zDebugger.user_returncCs| |¡r| |d¡dSr)Ú stop_herer)r r!ÚargsrrrÚ user_call³s zDebugger.user_callcCst|\}}}| t¡rp||f|jd<tdƒtjdkrVt|tƒsVt|tƒsN|f}||Ž}t   |||¡|  ||¡dS)NZ __exception__z&Unhandled exception while debugging...)é) rZOPT_STOP_EXCEPTIONSr&ÚprintrÏÚ version_infoÚ isinstanceÚ BaseExceptionÚtuplerÑÚprint_exceptionr)r r!rÐÚexc_typeÚ exc_valueÚ exc_tracebackrrrÚuser_exception¸s   zDebugger.user_exceptioncCs|jdkrdSt ||¡dSrC)r,rêÚ user_linerrrrr#Îs zDebugger.user_linecCsd|jrd|_| ¡dS||jur8|jtkr8| ¡dS||jurX|jtkrX| ¡dSt ||¡SrC) réÚ set_continueÚbotframeräÚSKIP_RUNÚ SKIP_STEPÚset_steprêrrrrrrÓszDebugger.stop_hererc Cst|ttjfƒstdƒ‚||_|r*d|_nd|_zÐ|durHddl}|j}|durT|}|  ¡|  |¡t   |j ¡t|ƒtjkrˆ|d}zRz"|r˜t|_nt|_t|||ƒWntjyÀYn0Wt|_d|_t   d¡nt|_d|_t   d¡0W| |¡n | |¡0dS)NzOnly strings can be runrrÚ )rr'ÚtypesÚCodeTypeÚ TypeErrorrèrérËrÌrïrrÏÚsettraceÚtrace_dispatchÚtyper'rär&Úexecr²ÚBdbQuitrãÚquittingr)r rÚglobalsÚlocalsZstart_steppingrËrrrÚrunàs@   þz Debugger.runc Cs:| |¡zt ||||¡W| |¡n | |¡0dSr)rrêÚrunevalr)r Úexprr3r4rrrr6s zDebugger.runevalc Csf| ¡t |j¡z:zt|||ƒWntjy:Yn0Wd|_t d¡nd|_t d¡0dSr:)rïrÏr-r.r0r²r1r2)r ZwhatrrrrrÚrunexec s  ÿzDebugger.runexeccCs| ¡r| ¡dSr)Ú GUIAboutToRunr(r2rrrÚ do_set_stepszDebugger.do_set_stepcCs| ¡r| |j¡dSr)r9Zset_nextr1r2rrrÚ do_set_nextszDebugger.do_set_nextcCs| ¡r| |j¡dSr)r9Z set_returnr1r2rrrÚ do_set_return szDebugger.do_set_returncCs| ¡r| ¡dSr)r9r$r2rrrÚdo_set_continue$szDebugger.do_set_continuecCs$d}|jr| ¡}|r t |¡dSr:)rærùrêrü)r Úokrrrrü(s zDebugger.set_quitcCs`|dur d}|rN|jr4|jjr4tj |jj¡d}nd}tt|ƒ||j|ƒntt|ƒdƒdS)NrÇrz??ÚNone)r$r+r(r)r*rrr,)r r!r-rrrrÚ _dump_frame_/szDebugger._dump_frame_cCs~z ddWnt ¡djjj}Yn0| ¡d|_|rfd|jvrP||_qf|j|_||_ |j}q:|  ¡t  |j¡dS)NrrÇr4Z_debugger_stop_frame_) rÏrÐÚtb_frameÚf_backrïrKr&r.Úf_tracer%r(r-rrrrÚ set_trace;s  zDebugger.set_tracecCsf|dusJdƒ‚||_|jD]\}}||ur||_qDqdsDJdƒ‚t|j|jƒ| ¡| ¡dS)NzYou must pass a valid framerz"Can't find the frame in the stack.)r1rIZcurindexrr7r&ÚGUIRespondDebuggerDataÚShowCurrentLine)r r!r rÄrrrr<Qs zDebugger.set_cur_framecCs |jtkSr)rGrHr2rrrÚIsBreakaszDebugger.IsBreakcCs |jtkSr)rGrÊr2rrrÚ IsDebuggingdszDebugger.IsDebuggingc Cs||jkrdS|tkrd}n<|tkr*d}n.|tkrP|jrJ|jrDd}qNd}qXd}ntdƒ‚t ¡  t  tj ¡|¡|jt kr’|tkr’t d|ƒdS||_z t ¡}Wntjy¼d}Yn0|durðtD]$\}}}t ¡ |¡j}| |¡qÊtj ¡D]}| |¡qú| ¡dS)NrÇz - runningz - post mortem exceptionz - exceptionz - breakzInvalid debugger state passed!z,Ignoring state change cos Im trying to stop!)rGrÊÚDBGSTATE_RUNNINGrHrórôr…rPršrÜZ LoadStringZ IDR_MAINFRAMEZDBGSTATE_QUITTINGrrÝrÞr r„rrërìZOnDebuggerStateChangerF) r rƒr[r!rµr×rßÚcbrõrrrr„gs> ÿ     zDebugger.RespondDebuggerStatecCsˆ|jr dSd|_t ¡}tD]D\}}}| |¡}|j |¡t d|jjdd¡r|  |dd¡q| tj ¡}|  |dd¡|  ¡dS)NrrYrpr) rârPršrÝrÞr rXrÉr[rúrÛrE)r r!rµr×rßÚwrÖrrrÚ GUICheckInits  ÿ zDebugger.GUICheckInitcCs@t ¡}tD]"\}}}|j|kr | |¡Sq dsYn0|jsJdSt ¡ ¡D]"}|  ¡D]}|  ¡sbdSqbqV|  t ¡r˜t ¡}|  tj¡dS)zCalled as the GUI is about to finish any interaction with the user Returns non zero if we are allowed to stop interactingNrr)rOrPršrQrPr…rñrðZGetDocTemplateListrìZ SaveModifiedrZOPT_HIDErRruZSW_HIDE)r Útemplaterõr!rrrrýãs      z!Debugger.GUIAboutToFinishInteractcCs| ||¡| |||¡dSr)Ú ShowLineNor )r ÚfileNameröÚ lineStaterrrÚ ShowLineStates zDebugger.ShowLineStatecCs8tj |¡}|dur4t|ƒ}| ||¡s4| ||¡dSr)rrëÚFindOpenDocumentrÚ MarkerCheckÚ MarkerAdd©r rVrörWrõZmarkerrrrr s   zDebugger.SetLineStatecCs,tj |¡}|dur(t|ƒ}| ||¡dSr)rrërYrZ MarkerDeleter\rrrrs zDebugger.ResetLineStatecCs|| t¡| t¡| | ¡¡}|j |g¡D]}| |t¡q0|jrx||jdkrx|jd}|  |t¡sx| |t¡dSr‹) ZMarkerDeleteAllrrrrîZbreaksÚgetr[rçrZ)r rõrr¿rörrrÚUpdateDocumentLineStatess    z!Debugger.UpdateDocumentLineStatescCstj ¡D]}| |¡q dSr)rrërìr^)r rõrrrr'szDebugger.UpdateAllLineStatescCsB| ¡|jr>| |jjj¡}|jj}||f|_| ||t¡dSr) rûr1rr$r+r,rçrXr)r rVrörrrrF+s  zDebugger.ShowCurrentLinecCs,|jdur(|j\}}| ||t¡d|_dS)z&Unshow the current line, and forget itN)rçrr)r rrLrrrrû7s  zDebugger._UnshowCurrentLinecCsštj |¡du}tj |¡rVt ||¡rV|sRtj |¡}|durN| |¡dSdSdSddl }|  ||¡}t dtj  |¡||dd…  d¡fƒdSdS)Nrrz %s(%d): %sr’r])rrërYr(r)ÚisfilerZJumpToDocumentr^Ú linecacheÚgetlinerÚbasenameÚ expandtabs)r r rLZwasOpenrõr`r¿rrrrU>s"   ÿÿzDebugger.ShowLineNo)r)N)rN)NNr)NN)NN)N)3rrrrrør÷rùrrrrrïr rír½rrrrr"r#rr5r6r8r:r;r<r=rür@rDr<rGrHr„rLrMrEr9rrNrýrXr rr^rrFrûrUrrrrrÚ6s`     %   ( rÚ)=r²r(Zpdbr–rÏrÑr*ryZpywin.docking.DockingBarr^rQrurPZpywin.frameworkrrrrZ(pywin.framework.editor.color.coloreditorrrZ pywin.mfcrr r r Z pywin.toolsr r ÚUNICODEZLVN_ENDLABELEDITWrŽZLVN_ENDLABELEDITAZdbgconr…rrZHLIPythonObjectrrr?r6rArDrOrMrVrUrmrŠr¡rÅrØrÝrárãr'r&ZPdbrêrÚrrrrÚ sX) $+:QBHý 1