ó Ö@Qc@sØddlZddlZddlmZddlZddlZddlZdZddlZej dkrvdZnde fd„ƒYZ dej fd „ƒYZ d e fd „ƒYZd ejfd „ƒYZdS(iÿÿÿÿN(tdequettdarwint_mactWizardTaskErrorcBseZRS((t__name__t __module__(((s+..\workbench\wizard_progress_page_widget.pyR!st WizardTaskcBsÅeZd„Zd„Zd„Zed„ƒZed„ƒZed„ƒZed„ƒZ ed„ƒZ ed„ƒZ d „Z d „Z d „Zd „Zd „Zd„Zd„Zd„ZRS(cCs³tjj|tƒ|jƒ|jƒ||_||_||_tj ƒ|_ tj |ƒ|_ t|_ |jdƒ|j|j ttƒ|j|j ttƒ|jƒdS(Ni(tmformstBoxt__init__tTruet set_managedtset_release_on_addtownertlabeltfunct newImageBoxt_icontnewLabelt_labelt_enabledt set_spacingtaddtFalsetreset(tselfRRR((s+..\workbench\wizard_progress_page_widget.pyR &s       cCs|jj|ƒdS(N(Rtset_text(Rttext((s+..\workbench\wizard_progress_page_widget.pyR:scCs!|jƒtjdd|jƒ|jjd|jƒy|jƒWn³tjk r~|jjd|jƒ|jƒdSt k rû}t |t ƒs¶Hddl }|j ƒnd|j|jj|ƒf}|jj|ƒ|j|ƒ|‚nX|jjd|jƒ|jƒdS(NtWizards Execute '%s' s%s...s %s cancellediÿÿÿÿsError during %s: %ss%s done(t set_runningtgrttlog_infoRRt send_infoRt UserInterruptt set_abortedt Exceptiont isinstancetWizardThreadedTaskt tracebackt print_exctformat_exception_textt send_errort set_failedt set_finished(RteR'tmsg((s+..\workbench\wizard_progress_page_widget.pytrun=s(      cCs|jS(N(R(R((s+..\workbench\wizard_progress_page_widget.pyt is_enabledXscCs|jS(N(t_running(R((s+..\workbench\wizard_progress_page_widget.pyt is_running\scCs|jS(N(t _finished(R((s+..\workbench\wizard_progress_page_widget.pyt is_finished`scCs|jS(N(t_failed(R((s+..\workbench\wizard_progress_page_widget.pyt is_faileddscCs|jS(N(t_aborted(R((s+..\workbench\wizard_progress_page_widget.pyt is_abortedhscCs%|jo$|j o$|j o$|j S(N(R0R4R6R8(R((s+..\workbench\wizard_progress_page_widget.pyt is_pendinglscCsxd|_t|_t|_t|_t|_|jj|j ƒ|j r`|j j dt ƒn|j j dt ƒdS(Nstask_unchecked%s.pngstask_disabled%s.png(tNonet_error_messageRR1R3R5R7RRRRRt set_imagetos_icon_suffix(R((s+..\workbench\wizard_progress_page_widget.pyRps      cCs!t|_|jjdtƒdS(Nstask_executing%s.png(R R1RR<R=(R((s+..\workbench\wizard_progress_page_widget.pyR|s cCs*t|_t|_|jjdtƒdS(Nstask_error%s.png(R R7RR1RR<R=(R((s+..\workbench\wizard_progress_page_widget.pyR#€s  cCs3t|_t|_||_|jjdtƒdS(Nstask_error%s.png(RR1R R5R;RR<R=(RR.((s+..\workbench\wizard_progress_page_widget.pyR+…s   cCs|jjdtƒdS(Nstask_error%s.png(RR<R=(R((s+..\workbench\wizard_progress_page_widget.pytset_error_icon‹scCs|jjdtƒdS(Nstask_warning%s.png(RR<R=(R((s+..\workbench\wizard_progress_page_widget.pytset_warning_iconŽscCs*t|_t|_|jjdtƒdS(Nstask_checked%s.png(RR1R R3RR<R=(R((s+..\workbench\wizard_progress_page_widget.pyR,‘s  cCsP|j|krL||_|r5|jjdtƒqL|jjdtƒndS(Nstask_unchecked%s.pngstask_disabled%s.png(RRR<R=(Rtflag((s+..\workbench\wizard_progress_page_widget.pyt set_enabled–s  (RRR RR/tpropertyR0R2R4R6R8R9RRR#R+R>R?R,RA(((s+..\workbench\wizard_progress_page_widget.pyR%s"         R&cBsEeZd„Zdejfd„ƒYZd„Zd„Zd„ZRS(cCs#tj||||ƒd|_dS(N(RR R:t_thread(RRRR((s+..\workbench\wizard_progress_page_widget.pyR  st TaskThreadcBseZd„Zd„ZRS(cCstjj|ƒ||_dS(N(t threadingtThreadR R(RR((s+..\workbench\wizard_progress_page_widget.pyR §scCs|jjƒdS(N(Rt thread_work(R((s+..\workbench\wizard_progress_page_widget.pyR/¬s(RRR R/(((s+..\workbench\wizard_progress_page_widget.pyRD¦s cCs[|jƒ|jjd|jƒtjdd|jƒ|j|ƒ|_|jjƒdS(Ns%s....RsStarting thread for '%s' ( RRR!RRR RDRCtstart(R((s+..\workbench\wizard_progress_page_widget.pyR/±s  cCst|_tj|ƒdS(N(RR3RR(R((s+..\workbench\wizard_progress_page_widget.pyR¹s cCs y|jƒWnÈtjk rR|jjd|jƒtjj|j t ƒdSt k rØ}Hddl }|j ƒtjdd|j|fƒ|jjd|jt|ƒfƒtjj||d„t ƒdSX|jjd|jƒtjj|jt ƒdS(Ns %s cancellediÿÿÿÿRsThread '%s' failed: %s s%s: %scSs|jd|jj|ƒƒS(Ns Error: %s(R+RR)(Rtexc((s+..\workbench\wizard_progress_page_widget.pytËss %s finished(RRR"RR!RRt Utilitiestperform_from_main_threadR#RR$R'R(t log_errorR*tstrR,(RRIR'((s+..\workbench\wizard_progress_page_widget.pyRG¾s   #( RRR RERFRDR/RRG(((s+..\workbench\wizard_progress_page_widget.pyR&Ÿs    tWizardProgressPagecBs eZded„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d„Z d „Z ed „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCstjj|||ƒ||_tj|p.dƒ|_|jj|jt t ƒtj t ƒ|_ |j j dƒ|j jdƒ|jj|j t t ƒtjdƒ|_|jj|jt t ƒtjƒ|_|jj|jt t ƒ|jjt ƒtjdƒ|_|jj|jt t ƒg|_d|_t |_t |_tjtjƒ|_|jjdƒ|jj dƒtjtjƒ|_|jj t ƒ|jj|jƒ|jjt ƒ|jj|jt t ƒt!ƒ|_"t |_#t |_$|j%j&dƒt |_'dS( NsHThe following tasks will now be performed. Please monitor the execution.iisClick [Next >] to execute.Rs Message Logi s Show Logs((twizard_page_widgett WizardPageR t_use_private_message_handlingRRt _descriptiontcontentRRR tnewBoxt _tasks_boxt set_paddingRt _status_labeltnewProgressBart _progresstshowt _detail_labelt_tasksR:t_currently_running_task_indext_progress_indeterminatet_tasks_finishedtnewPaneltTitledBoxPanelt_log_boxt set_titlet newTextBoxtVerticalScrollBart _log_textt set_read_onlyRt _log_queuet _showing_logst_cancel_requestedtadvanced_buttonRt_log_progress_text(Rtmaint header_labelt descriptiontuse_private_message_handling((s+..\workbench\wizard_progress_page_widget.pyR Ôs@        cCs;x!|jD]}|jj|ƒq Wg|_|jƒdS(N(R]RVtremoveR(Rttask((s+..\workbench\wizard_progress_page_widget.pyt clear_taskss cCs t|ƒS(N(RN(RR-((s+..\workbench\wizard_progress_page_widget.pyR)scCs<t|||ƒ}|jj|ƒ|jj|ttƒ|S(s§ Add a task to be executed from the main thread. The callback must be as in callback(progress), where progress is a function to be optionally executed to report progress. The callback must return True if it finished executing or False if it was cancelled by the user. If an error occurs during the execution of the task, an exception must be raised. (RR]tappendRVRRR (RRRtwtask((s+..\workbench\wizard_progress_page_widget.pytadd_task s cCs<t|||ƒ}|jj|ƒ|jj|ttƒ|S(s‰ Add a task to be executed from a worker thread. The callback must be as in callback(). Progress information must be reported using grt.send_progress() The callback must return True if it finished executing or False if it was cancelled by the user. If an error occurs during the execution of the task, an exception must be raised. (R&R]RuRVRRR (RRRRv((s+..\workbench\wizard_progress_page_widget.pytadd_threaded_taskscCs||f|_dS(N(t_progress_info(Rtpcttstatus((s+..\workbench\wizard_progress_page_widget.pytupdate_progress(scCs:|jdkr&|j r&|jƒntjj|ƒdS(N(R^R:R`RHRPRQtgo_next(R((s+..\workbench\wizard_progress_page_widget.pyR},s cCsP|j |_|jr)|jjdƒn|jjdƒ|jj|jƒdS(Ns Hide Logss Show Logs(RjRlRRcR[(R((s+..\workbench\wizard_progress_page_widget.pyt go_advanced2s   cCs t|_dS(N(R Rk(R((s+..\workbench\wizard_progress_page_widget.pyt go_cancel:scCsktt|ƒj|ƒ|jj|jp4|jdkƒ|rg|jdkrg|j rg|jƒqgndS(N( tsuperROtpage_activatedt next_buttonRAR`R^R:RH(Rt advancing((s+..\workbench\wizard_progress_page_widget.pyR=s "cCst|_t|_d|_d|_|jjdƒ|jj dƒ|j j dƒx|j D]}|j ƒq^W|r‹|j jdƒndS(NisClick [Next >] to execute.R(RRkR`R:RyR^RZt set_valueRXRR\R]RRg(Rt clear_log_boxRs((s+..\workbench\wizard_progress_page_widget.pyRFs    cCs‡|jj|||fƒ|dkrƒ|jrƒ|jddƒd}|r]d||f}n d|}|jjd|dfƒntS( NtPROGRESSt:iiÿÿÿÿs - %s: %s s- %s tOUTPUTR(RiRuRmtsplitR (Rtmsg_typeRtdetailt progress_text((s+..\workbench\wizard_progress_page_widget.pyt_handle_task_outputSs cCs|jS(N(Rk(R((s+..\workbench\wizard_progress_page_widget.pytquery_cancel_status_scCs|jjd|dfƒdS(NRˆR(RiRu(RR.((s+..\workbench\wizard_progress_page_widget.pytsend_rawbscCs'tjd|ƒ|jd|dƒdS(NRtINFOR(Rt log_debugR(RR.((s+..\workbench\wizard_progress_page_widget.pyR!escCs+tjdd|ƒ|jd|dƒdS(NRsERROR: tERRORR(RR‘R(RR.((s+..\workbench\wizard_progress_page_widget.pyR*iscCs+tjdd|ƒ|jd|dƒdS(NRs WARNING: tWARNINGR(RR‘R(RR.((s+..\workbench\wizard_progress_page_widget.pyt send_warningmscCs*|jddtj|ƒ|fdƒdS(NR†s%s:%sR(RtlocaleRN(RRzR.((s+..\workbench\wizard_progress_page_widget.pyt send_progressqscCsÏd|_d|_t|_g|_g|_d|_d|_|j j ƒ|j j tƒ|j j tƒ|jj tƒ|js¨tj|jƒtj|jƒn|jdƒtjjd|jƒdS(Nis Starting...gš™™™™™¹?(t _warningst_errorsRRkt_task_warningst _task_errorsR:RyR^RZR[R‚RAt back_buttont cancel_buttonR RRRtpush_status_query_handlerRŽtpush_message_handlerRR!RRKt add_timeoutt update_status(R((s+..\workbench\wizard_progress_page_widget.pyRHts           cCsdS(N((R((s+..\workbench\wizard_progress_page_widget.pyttasks_finishedˆscCsdS(N((Rtcanceled((s+..\workbench\wizard_progress_page_widget.pyt tasks_failedŒscCs™|jdks|jdkr.|jdƒn|j|jƒƒ|jƒ|jdƒ|jsxtjƒtjƒn|j j t ƒ|j j ƒt |_ t|_|jjtƒ|jjtƒ|jjt ƒ|jjdƒ|jdkr,|jjdƒ|js|jƒn|jt ƒni|jdkrq|jjdƒ|jsa|jƒn|jt ƒn$|jj|jƒdƒ|jƒdS(NisETasks finished with warnings and/or errors, view the logs for detailss Rs?There were errors during execution, please review log messages.sThere were warnings during execution, please review log messages. Click [Next >] to continue if you think they are not important.s Click [Next >] to continue.(R—R˜R!t final_messaget_flush_messagesRRRtpop_message_handlertpop_status_query_handlerRZR[RtstopR_R R`R‚RAR›RœRXRR\RjR~R£R¡(R((s+..\workbench\wizard_progress_page_widget.pyR3s8            cCs×|jdƒ|jƒ|jdƒ|jsDtjƒtjƒn|jjtƒ|jj ƒt|_ |j j tƒ|j j tƒ|jj tƒ|jj|jƒƒ|jsÆ|jƒn|jtƒdS(NtFaileds (R!R¥RRRR¦R§RZR[RR¨R_R‚RAR›R RœR\Rtfailure_messageRjR~R£(R((s+..\workbench\wizard_progress_page_widget.pyR5³s           cCs»|jdƒ|jƒ|jdƒ|jsDtjƒtjƒn|jjtƒ|jj ƒt|_ |j j tƒ|j j tƒ|jj tƒ|jjdƒ|jtƒdS(Nt Cancelleds sCancelled by user.(R!R¥RRRR¦R§RZR[RR¨R_R‚RAR›R RœR\RR£(R((s+..\workbench\wizard_progress_page_widget.pyt _cancelledÊs        cCs xt|jƒdkr|jjƒ\}}}d|kr[ddj|jdƒƒ}n|dkr§|r|jjd||ftƒq|jjd|tƒq|dkró|rÙ|jjd||ftƒq|jjd |tƒq|d kr_|jd ƒ\}}}y|j t j |ƒ|ƒWqt k r[t jd d |ƒqXq|dkr|jd7_|jj|ƒn.|dkr»|jd7_|jj|ƒn|rä|jjd|||ftƒq|jjd||ftƒqWdS(Nis s Rs%s: %s s%s Rˆs%s: %ss%sR†R‡RsUException raised when converting "%s" to float using locale.atof(). Exception ignoredR’iR“s %s: %s: %s (tlenRitpoplefttjoinR‰Rgtappend_text_and_scrollR t partitionR|R•tatofR$RR‘R˜RšRuR—R™(RtmtypeRR‹Rzty((s+..\workbench\wizard_progress_page_widget.pyR¥Þs6         #cCsdS(sYSubclass and override to change the text message to be shown when tasks failed to finish.sA task has failed executing.((R((s+..\workbench\wizard_progress_page_widget.pyRªscCsdS(s\Subclass and override to change the text message to be shown when tasks finish successfully.sFinished performing tasks.((R((s+..\workbench\wizard_progress_page_widget.pyR¤scCså|jƒ|jr‡|j\}}d|_|dkrO|jstt|_qtn%|jrdt|_n|jj|ƒ|jj |ƒn|j |j }|j r*|j r*|jrÁ|jƒtSy|jƒWq*tk r&}|jd|j|fƒ|jj d|j|ƒƒ|jƒtSXn|jrA|jƒtS|jrX|jƒtS|jsk|j rá|jr|jƒn|jr—|jƒng|_g|_|j d7_ |j t|j ƒkrá|jƒtSntS(NisException in task '%s': %r s%si( R¥RyR:R_R RRZR„RXRR]R^R2R9RkR¬R/R$R*RR)R5R6R8R4R0RšR>R™R?R­R3(RRzRRsRI((s+..\workbench\wizard_progress_page_widget.pyR  sR                     N( RRR:RR RtR)RwRxR|R}R~RRRRRŽRR!R*R”R–RHR¡R£R3R5R¬R¥RªR¤R (((s+..\workbench\wizard_progress_page_widget.pyROÓs8.                  #   "  (R•REt collectionsRRRRPR=tsystplatformR$RR RR&RQRO(((s+..\workbench\wizard_progress_page_widget.pyts       z4