o S(en‡ã@s’ddlZdZze dd¡ddlmZdZWney1e dd¡ddlmZejjej_Ynwddlm Z dd lm Z dd lm Z dd lm Z dd lm Z ddlZddlZddlZddlZddlZddlZddlZddlZd dlmZmZd dlmZmZmZmZd dlmZd dl m!Z!ddl"Z"d dl#m"Z$Gdd„dej%j&j'ƒZ(Gdd„dej%j&j)ƒZ*Gdd„deƒZ+Gdd„deƒZ,Gdd„de-ƒZ.Gdd„de-ƒZ/Gdd „d ee!ƒZ0e1d!krGe0ƒZ2e+e2ƒZ3e,e2ƒZ4e2 5¡ 6gd"¢¡e  7¡e 8d¡e 9¡Z:ej;d d…D]Z¡qe:e< ?¡qe: @e3e4¡e  7¡e4 Ad#d$¡e2 5¡ 6gd"¢¡e2 Bd%d&d'¡e2 Cd(gd)¡dSdS)*éNFÚVtez2.91)rTz2.90)ÚGtk)ÚGdk)ÚGLib)ÚGObject)ÚPangoé)Ú run_apportÚ apport_crash)ÚDistUpgradeViewÚFuzzyTimeToStrÚInstallProgressÚAcquireProgress)Úget)ÚSimpleGtkbuilderApp)Úgettextc@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) ÚGtkCdromProgressAdapterzi Report the cdrom add progress Subclass this class to implement cdrom add progress reporting cCs|j|_|j|_||_dS©N)Ú label_statusÚstatusÚprogressbar_cacheÚprogressÚparent©Úselfr©rúA/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeViewGtk3.pyÚ__init__Bs z GtkCdromProgressAdapter.__init__cCsH|r|j |¡|j |jt|jƒ¡t ¡r"t  ¡t ¡sdSdS)z; update is called regularly so that the gui can be redrawn N) rÚset_textrÚ set_fractionÚvalueÚfloatÚ totalStepsrÚevents_pendingÚmain_iteration)rÚtextÚsteprrrÚupdateFs  ÿzGtkCdromProgressAdapter.updatecCódS)N)FÚr©rrrrÚask_cdrom_nameMóz&GtkCdromProgressAdapter.ask_cdrom_namecCr()NFrr*rrrÚ change_cdromOr,z$GtkCdromProgressAdapter.change_cdromN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr'r+r-rrrrr>s  rcs.eZdZdd„Zd‡fdd„ Zdd„Z‡ZS) Ú GtkOpProgresscCs||_d|_dS)Nç)Ú progressbarÚfraction)rr4rrrrTs zGtkOpProgress.__init__Ncs`tt|ƒ |¡|jd}t|j|ƒdkr ||_|j |j¡t  ¡r.t  ¡t  ¡s$dSdS)NçY@çš™™™™™¹?) Úsuperr2r'ÚpercentÚabsr5r4rrr#r$)rr9Ú new_fraction©Ú __class__rrr'Zs ÿzGtkOpProgress.updatecCó|j d¡dS)Nú )r4rr*rrrÚdonegózGtkOpProgress.doner)r.r/r0rr'r@Ú __classcell__rrr<rr2Ss r2csLeZdZ‡fdd„Zdd„Zdd„Z‡fdd„Zd d „Z‡fd d „Z‡Z S) ÚGtkAcquireProgressAdaptercsFtt|ƒ ¡|j|_|j|_||_d|_|j |_ |j   d|j ¡dS)NFÚclicked) r8rCrrrrrrÚcanceledÚbutton_fetch_cancelÚ button_cancelÚconnectÚ cancelClickedrr<rrrosz"GtkAcquireProgressAdapter.__init__cCst d¡d|_dS)NrIT)ÚloggingÚdebugrE)rÚwidgetrrrrIxs  z'GtkAcquireProgressAdapter.cancelClickedcCsjtdƒ||f}tj|jjtjjtjjtj j d}|  |¡|  ¡}|  d¡| ¡|tjjkr3dSdS)Nz&Please insert '%s' into the drive '%s'©rÚflagsÚtypeÚbuttonsr)TF)Ú_rÚ MessageDialogrÚ window_mainÚ DialogFlagsÚMODALÚ MessageTypeÚQUESTIONÚ ButtonsTypeÚ OK_CANCELÚ set_markupÚrunÚ set_titleÚdestroyÚ ResponseTypeÚOK)rÚmediumÚdriveÚmsgÚdialogÚresrrrÚ media_change{s ý   z&GtkAcquireProgressAdapter.media_changecs2tt|ƒ ¡|j d¡|j ¡|j ¡dS)Nr)r8rCÚstartrrrÚshowrGr*r<rrrf‰s  zGtkAcquireProgressAdapter.startcCs*|j d¡|j tdƒ¡|j ¡dS)Nr?zFetching is complete)rrrrQrGÚhider*rrrÚstops zGtkAcquireProgressAdapter.stopcstt|ƒ |¡t|j|j ¡dƒdkrr|j |jd¡|jd}||j kr,|j }|j dkr_t   |j ¡}t |tƒrC| t ¡¡}|j tdƒ||j |f¡|j tdƒt|jƒ¡n|j tdƒ||j f¡|j d¡t ¡r~t ¡t ¡sv|j S) Nr6r7rrz!Fetching file %li of %li at %sB/súAbout %s remainingzFetching file %li of %liz )r8rCÚpulser:r9rÚ get_fractionrÚ current_itemsÚ total_itemsÚ current_cpsÚapt_pkgÚ size_to_strÚ isinstanceÚbytesÚdecodeÚlocaleÚgetpreferredencodingrrrQr Úetarr#r$rE)rÚownerÚ currentItemror<rrrk”s4     ÿ ÿ ÿ ÿ ÿzGtkAcquireProgressAdapter.pulse) r.r/r0rrIrerfrirkrBrrr<rrCks   rCc@sjeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z ddd„Z dd„Z dd„Z dd„ZdS)ÚGtkInstallProgressAdapteri,cCsXt |¡d|_|j|_|j|_|j|_|j|_ |j   d|j ¡||_ t j dd¡dS)Nú child-exitedzDPkg::StopOnErrorÚFalse)r rÚ_cacherrrÚexpander_terminalÚexpanderÚ_termÚtermrHÚ child_exitedrrpÚconfigÚsetrrrrr³s z"GtkInstallProgressAdapter.__init__cCsât |¡d|_|j tdƒ¡|j d¡|j d¡|j  d¡|j   ¡|j   d|j ¡tj d¡p6d}|dkrQ|jrQd |jvsI|jd jsQd }|j d¡d |jd g|_dtjvrf|j d |¡d|_d|_d|_dS)NFzApplying changesr3r?Tzcontents-changedÚDEBIAN_FRONTENDÚgnomez libgtk3-perlrczVTE_PTY_KEEP_FD=%szAPT_LISTCHANGES_FRONTEND=nonezDEBIAN_FRONTEND=%s)r Ú start_updateÚfinishedrrrQrrrÚ set_sensitiverrgrHÚ_on_term_content_changedÚosÚenvironrr}Ú is_installedÚ set_expandedÚwritefdÚenvÚappendÚ start_timeÚtime_uiÚ last_activity)rÚfrontendrrrr‡Às.       ÿ ÿ  z&GtkInstallProgressAdapter.start_updatecCsât |||¡t d||f¡t dd¡|vrdS|jj |jj¡t dƒ|}t dƒ|}d||f}|jj  ¡|jj  d¡|jj  ¡  tjj¡|jj |¡|jj ¡ |¡|jj ¡|jj ¡|jj ¡dS) Nz*got an error from dpkg for pkg: '%s': '%s'Údpkgz*dependency problems - leaving unconfiguredFzCould not install '%s'zThe upgrade will continue but the '%s' package may not be in a working state. Please consider submitting a bug report about it.ú%s %sr))r ÚerrorrJrÚdgettextrÚ dialog_errorÚset_transient_forrSrQÚrealizer\Ú get_windowÚ set_functionsrÚ WMFunctionÚMOVEÚ label_errorrZÚtextview_errorÚ get_bufferrÚ scroll_errorrgr[rh)rÚpkgÚerrormsgÚsummaryrbÚmarkuprrrr˜Üs$ þ    zGtkInstallProgressAdapter.errorc CsVt d|¡t ¡}tdƒ|}tdƒ}d||f}|jj |¡|jj d¡|jj  |jj ¡t j   |¡s<|d}t j   d¡rddd||g}tj|tjd  ¡d }| d d ¡}|jj ¡ |¡n |jj ¡ td ƒ¡|jj ¡} |jj ¡|jt ¡|7_| tjjkrd} nd} z |j |  d¡¡WdS|j | d¡YdS)Nz.got a conffile-prompt from dpkg for file: '%s'z/Replace the customized configuration file '%s'?ztYou will lose any changes you have made to this configuration file if you choose to replace it with a newer version.z1%s %sr)z .dpkg-distz /usr/bin/diffz-u)ÚstdoutrzUTF-8Úreplacez The 'diff' command was not foundzy zn zutf-8éÿÿÿÿ)rJrKÚtimerQrÚlabel_conffilerZÚdialog_conffiler\r›rSr‹ÚpathÚexistsÚ subprocessÚPopenÚPIPEÚ communicatertÚtextview_conffiler£rr[rhr“rr^ÚYESrÚ feed_childÚencode) rÚcurrentÚnewrfÚprimÚsecr¨ÚcmdÚdiffrdÚresponserrrÚconffileós<     ÿÿ    z"GtkInstallProgressAdapter.conffilecCsvtj tjj¡}t ¡}|dkr-|jD]}| d¡\}}|tj |<q|  ¡dtj d<|S|j   |¡|j   |¡|S)Nrú=Ú1ÚDPKG_UNTRANSLATED_MESSAGES)rÚPtyÚnew_syncÚPtyFlagsÚDEFAULTr‹ÚforkrÚsplitrŒÚ child_setuprÚset_ptyÚ watch_child)rÚptyÚpidrÚkeyr rrrrÈs    þ zGtkInstallProgressAdapter.forkcCst ¡|_d|_dS)zŠ helper function that is called when the terminal changed to ensure that we have a accurate idea when something hangs FN)r¬r”Úactivity_timeout_reported)rrrrrrŠ,s  z2GtkInstallProgressAdapter._on_term_content_changedcCsú|jdkr t ¡|_t||j ¡dƒdkr)|j t|ƒd¡|j |  ¡¡|dkrw|j |j}||j 8}t|ƒ|}d||}|dkrY|dkrY|j t dƒt |ƒ¡n|j d¡|jjry|jj d ¡d kr{|jj d |¡dSdSdSdS) Nr3r6r7çð?g€N@i£rjr?z load-statusézprogress("%s"))r’r¬r:rrlrr!rrÚstripr”r“rQr rÚ _webkit_viewÚ get_propertyÚexecute_script)rr¥r9rÚdeltaÚtime_per_percentrwrrrÚ status_change3s&       ò z'GtkInstallProgressAdapter.status_changeNcCs$|dur | ¡|_n||_d|_dS©NT)Úget_child_exit_statusÚ apt_statusrˆ)rrrrrrr‚Ms  z&GtkInstallProgressAdapter.child_exitedcCs|js | ¡|jr|jSr)rˆÚupdate_interfacerÜr*rrrÚ wait_childVsÿz$GtkInstallProgressAdapter.wait_childcCr>)Nr)©rrr*rrrÚ finish_update[rAz'GtkInstallProgressAdapter.finish_updatecCs t |¡|jdkr|j ¡t d¡|jdkr=|j|jt ¡kr=|j s6t   d|j|j   ¡f¡d|_ |jj d¡t ¡rIt ¡t ¡sAt d¡dS)Nr3gš™™™™™É?rz+no activity on terminal for %s seconds (%s)Tg{®Gáz„?)r rÝr’rrkr¬Úsleepr”ÚTIMEOUT_TERMINAL_ACTIVITYrÐrJÚwarningrÚget_textrr~rŽrr#r$r*rrrrÝ^s     ÿz*GtkInstallProgressAdapter.update_interfacer)r.r/r0rârr‡r˜rÀrÈrŠrÙr‚rÞràrÝrrrrrz®s '   rzc@seZdZdd„Zddd„ZdS)ÚDistUpgradeVteTerminalcCs||_||_dSr)rr)rrrrrrrrs zDistUpgradeVteTerminal.__init__Fc sîtr ‡fdd„}n‡fdd„}ˆj ¡ˆj d|¡ˆjj d¡|dkr-ˆjj d¡dˆ_trDˆj  t j j d|ddddd¡\}}nˆj  t j j d|dddd¡\}}|rZ|dkr\dSˆjsst ¡rkt ¡t ¡sct d ¡ˆjr_ˆ`dS) Ncó dˆ_dSrÚ©rˆ)Úterminalrr*rrÚwait_for_childwó z3DistUpgradeVteTerminal.call..wait_for_childcrærÚrç)rLr*rrré{rêr{TFú/rr7)Úvte291rrgrHrr~r‰rŽrˆÚ spawn_syncrrÆrÇÚfork_command_fullrr#r$r¬rá)rr½ÚhiddenréÚsuccessrÎrr*rÚcallusL   ø ù ÿ ýzDistUpgradeVteTerminal.callN©F)r.r/r0rrñrrrrråqsråc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚHtmlViewcCs ||_dSr)rÔ)rÚ webkit_viewrrrr¤s zHtmlView.__init__cCsr|jsdSzddlm}|sJ‚|j |¡|j d|j¡WdSty8|j |¡|j d|j¡YdSw)Nr©ÚWebKit2z load-changedz load-finished) rÔÚ gi.repositoryröÚload_urirHÚ_on_load_changedÚ ImportErrorÚopenÚ_on_load_finished)rÚurlrörrrrû¦s    þz HtmlView.opencCó|j ¡dSr)rÔrgr*rrrrg±óz HtmlView.showcCrþr)rÔrhr*rrrrh³rÿz HtmlView.hidecCs | ¡dSr)rg)rÚviewÚframerrrrüµó zHtmlView._on_load_finishedcCs(ddlm}||jjkr| ¡dSdS)Nrrõ)r÷röÚ LoadEventÚ LOAD_FINISHEDrg)rrÚeventÚdatarörrrrù·s   ÿzHtmlView._on_load_changedN) r.r/r0rrûrgrhrürùrrrrró£s  rócsèeZdZdZd7dd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Z‡fdd „Zd8d!d"„Zd8d#d$„Z %d9d&d'„Zd:d)d*„Zd;d,d-„Zd.d/„Zd0d1„Zdt ˆ¡|ˆ_|r|dkrtj t ¡d¡}t ¡}n d}tj |d¡}t t j ¡t ƒ  d¡z t  d|¡t d¡WntyW}z t d|¡WYd}~nd}~wwt ˆ|dd¡tj ¡}z ˆj | d d d ¡¡Wntjy}z t d |¡WYd}~nd}~wwˆj ¡}| d d¡}ˆj  |¡ˆ !¡dˆ_"tj ¡ˆ_#dˆ_$ˆj %¡ˆj &¡ 't(j)j*¡t+ˆj,ƒˆ_-t.ˆƒˆ_/t0ˆƒˆ_1t2ˆƒˆ_3t 4tj5¡ˆ_6t 7d¡}t 8¡} | 9| d¡| :| dd ¡ˆj; <|¡ˆj6 =d tj>j?¡ˆj; @ˆj6¡ˆjA Bd¡‡fdd„} ˆjC Dd| ¡ˆjEt _FdS)NÚ.Úmoz/usr/share/locale/Ú gtkbuilderÚGTKzubuntu-release-upgraderzError setting locales (%s)z/DistUpgrade.uizsystem-software-updateé rz)error setting default icon, ignoring (%s)ú%sz22.04r)Tr¨Fcsˆj ¡}ˆj | ¡dSr)Úexpander_detailsÚ get_expandedÚdialog_changesÚ set_resizable)ÚwÚexpandedr*rrÚ _activatedüs z0DistUpgradeViewGtk3.__init__.._activatedÚactivate)Gr rÚlogdirr‹r¯ÚjoinÚgetcwdrÚ init_checkÚsysÚargvÚ get_telemetryÚset_updater_typeruÚbindtextdomainrÚ textdomainÚ ExceptionrJrãrÚ IconThemeÚ get_defaultrSÚset_default_iconÚ load_iconrÚGErrorrKÚ label_titleÚ get_labelrªÚ set_labelÚcreate_terminalÚ prev_stepÚ iconthemerÔrœrržrrŸr r2rÚ_opCacheProgressrCÚ_acquireProgressrÚ_cdromProgressrzÚ_installProgressÚ TreeStoreÚ TYPE_STRINGÚ details_listÚTreeViewColumnÚCellRendererTextÚ pack_startÚ add_attributeÚtreeview_detailsÚ append_columnÚset_sort_column_idÚSortTypeÚ ASCENDINGÚ set_modelrrrrHÚ_handleExceptionÚ excepthook) rÚdatadirrÚ localedirÚgladedirÚeÚiconsÚ title_stringÚcolumnÚrenderrrr*rr¿sj      €ÿþ  €þ               zDistUpgradeViewGtk3.__init__cCsfddl}| |||¡}t dd |¡¡t|||ƒtƒs,| tdƒtdƒd |¡¡t  d¡dS)Nrznot handled exception: %sÚ zA fatal error occurredzÿPlease report this as a bug (if you haven't already) and include the files /var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in your report. The upgrade has aborted. Your original sources.list was saved in /etc/apt/sources.list.distUpgrade.r) Ú tracebackÚformat_exceptionrJr˜rr r rQrÚexit)rrOr ÚtbrHÚlinesrrrr= s  ùz$DistUpgradeViewGtk3._handleExceptioncCs t||jƒSr)rår€r*rrrÚ getTerminal!rzDistUpgradeViewGtk3.getTerminalcCsš|jdurHz4zddlm}Wntyddlm}Ynw| ¡|_|j ¡}| dd¡|j  |jddd¡Wnt   d¡t   ¡YSt|jƒS)Nrrõ)ÚWebKitzenable-pluginsFTz html widget)rÔr÷rörúrNÚWebViewÚ get_settingsÚ set_propertyÚ vbox_mainÚpack_endrJÚ exceptionr ÚSampleHtmlViewró)rrNÚsettingsrrrÚ getHtmlView#s  ÿ      zDistUpgradeViewGtk3.getHtmlViewcCsNt|jƒdkr%t|jƒdkr%tdƒ}tdƒ}| ||¡}t d|¡| SdS)NrézCtrl-c pressedzkThis will abort the operation and may leave the system in a broken state. Are you sure you want to do that?z5ctrl-c press detected, user decided to pass it on: %sF)ÚlenÚstringÚordrQÚaskYesNoQuestionrJrã)rrLÚkeyevr§rbrdrrrÚ_key_press_handler3s ÿz&DistUpgradeViewGtk3._key_press_handlercCsètj ¡|_t|jdƒs|jj|j_|j d|j¡t   d¡}|j  |¡g|_ |j  |jddd¡|j ¡t ¡|_|j ¡|j  |jddd¡|j |j ¡¡zttj |jd¡dƒ|_W|jStystj|_Y|jSw)z! helper to create a vte terminal rËzkey-press-eventz monospace 10Trzterm.logr)rÚTerminalrºr€ÚhasattrÚset_pty_objectrËrHr^rÚfont_description_from_stringÚset_fontÚ_terminal_linesÚ hbox_customr5rœrÚ VScrollbarÚvscrollbar_terminalrgÚset_adjustmentÚget_vadjustmentrûr‹r¯rrÚ _terminal_logr rr©)rÚfontdescrrrr)?s(         ý ýz#DistUpgradeViewGtk3.create_terminalcCó|jSr)r-r*rrrÚgetAcquireProgressXóz&DistUpgradeViewGtk3.getAcquireProgresscCs||j_|jSr)r/r})rÚcacherrrÚgetInstallProgressZsz&DistUpgradeViewGtk3.getInstallProgresscCrlr)r,r*rrrÚgetOpCacheProgress]rnz&DistUpgradeViewGtk3.getOpCacheProgresscCrlr)r.r*rrrÚgetCdromProgress_rnz$DistUpgradeViewGtk3.getCdromProgresscCs|j d|¡dS)Nr rß)rrbrrrÚ updateStatusasz DistUpgradeViewGtk3.updateStatuscCó4t|d|jƒ}t|d|jƒ}| ¡| ¡dS©Nú image_step%iú label_step%i)Úgetattrr rh©rr&ÚimageÚlabelrrrÚhideStepcs zDistUpgradeViewGtk3.hideStepcCrtru)rxr rgryrrrÚshowStepis zDistUpgradeViewGtk3.showStepcCsXtjj}|j}|r*t|d|jƒ}t|d|jƒ}| tj|¡| ¡|  ¡dSdS)Nrvú arrow_step%i) rÚIconSizeÚMENUr*rxr Úset_from_stockÚ STOCK_CANCELrgrh)rÚsizer&rzÚarrowrrrÚabortns ûzDistUpgradeViewGtk3.abortcsòtt|ƒ |¡|j ¡rt d¡tjj }t   ¡}|j rMt |d|j jƒ}t |d|j jƒ}t |d|j jƒ}| d|¡| tj|¡| ¡| ¡||_ t |d|jƒ}t |d|jƒ}t |d|jƒ}| d¡sodS| ¡| ¡dS)Nzicon theme changed, re-readingrvrwr~Ú attributesÚvisible)r8rÚsetStepr+Úrescan_if_neededrJrKrrr€rÚAttrListr*rxr rQrÚ STOCK_APPLYrgrhrÕ)rr&rƒÚattrlistrzr{r„r<rrrˆws*     zDistUpgradeViewGtk3.setStepcCs¶|j d¡|j |j¡d||f}|j |¡|dkr-|j ¡}| |¡|j   ¡n|j   ¡|j  ¡|j  ¡ tjj¡|j ¡|j  ¡t ¡rYt ¡t ¡sOdSdS)Nr)r—)Údialog_informationr\r›rSÚlabel_informationrZÚtextview_informationr£rÚscroll_informationrgrhrœrržrrŸr r[rr#r$©rr§rbÚ extended_msgÚbufferrrrÚ information•s          ÿzDistUpgradeViewGtk3.informationcCsš|j d¡|j |j¡d||f}|j |¡|dkr-|j ¡}| |¡|j   ¡n|j   ¡|j  ¡|j  ¡ tjj¡|j ¡|j  ¡dS)Nr)r—F)ršr\r›rSr¡rZr¢r£rr¤rgrhrœrržrrŸr r[r‘rrrr˜§s          zDistUpgradeViewGtk3.errorTc Cs¢t |||||¡s dS|jdtdƒ7_|dkr6|j d¡|j d¡|j |d¡|j |d¡|j   d|¡|j   |j¡|j   ¡tdƒ|jftd ƒ|jftd ƒ|jftd ƒ|jftd ƒ|jftd ƒ|jffD],\}}|rœ|j  d|t|ƒg¡} |D]} |j  | d| jt t| jddƒ¡fg¡q„qp|j ¡|j |j¡|j d¡|j  ¡ !t"j#j$t"j#j%B¡|j &¡} |j '¡| t(j)j*krÏdSdS)NFz %sz?To prevent data loss close all open applications and documents.Trrz%sz%No longer supported by Canonical (%s)zDowngrade (%s)z Remove (%s)zNo longer needed (%s)z Install (%s)z Upgrade (%s)z%s - %sr§r))+r ÚconfirmChangesÚconfirmChangesMessagerQÚbutton_cancel_changesÚ set_use_stockÚset_use_underliner(Úbutton_confirm_changesÚ label_summaryrZÚ label_changesr2ÚclearÚ demotionsÚ toDowngradeÚtoRemoveÚ toRemoveAutoÚ toInstallÚ toUpgrader‘rYÚnamerÚmarkup_escape_textrxÚ candidaterrœr›rSr\rržrrŸr ÚRESIZEr[rhrr^r¶) rr§ÚchangesržÚ downloadSizeÚactionsÚ removal_boldÚ parent_textr2Únoder¥rdrrrr•¹sT ÿÿ          ú ÿ  ÿ€  ÿ   z"DistUpgradeViewGtk3.confirmChangesÚNocCsŠd||f}tj|jtjjtjjtjjd}|  d¡|dkr'|  tj j ¡n|  tj j ¡| |¡| ¡}| ¡|tj j krCdSdS)Nr—rMr)r®TF)rrRrSrTrUrVrWrXÚYES_NOr\Úset_default_responser^ÚNOr¶rZr[r]©rr§rbÚdefaultrcrdrrrr\és ý   z$DistUpgradeViewGtk3.askYesNoQuestionÚCancelcCs®|rd||f}tj|jtjjtjjtjjd}|  d¡|  |¡|  t dƒtj jt dƒtj j¡|dkr>| tj j¡n| tj j¡| ¡}| ¡|tj jkrUdSdS)Nr—rMr)r´ÚContinueTF)rrRrSrTrUrVÚWARNINGrXÚNONEr\rZÚ add_buttonsrQr^ÚCANCELÚACCEPTr°r[r]r²rrrÚaskCancelContinueQuestionûs( ý   ÿ z-DistUpgradeViewGtk3.askCancelContinueQuestioncCs`|j |j¡|j d¡|j ¡|j ¡ tjj ¡|j  ¡}|j  ¡|t j jkr.dSdS)Nr)TF)Údialog_restartr›rSr\rœrržrrŸr r[rhrr^r¶)rrdrrrÚconfirmRestarts     z"DistUpgradeViewGtk3.confirmRestartcCs t ¡rt ¡t ¡sdSdSr)rr#r$r*rrrÚ processEventssÿz!DistUpgradeViewGtk3.processEventsFcCs"|j ¡|r|j d¡dSdS)NrÑ)rrkr)rrˆrrrÚ pulseProgress"s ÿz!DistUpgradeViewGtk3.pulseProgresscCsf|j |j¡|j d¡|j ¡|j ¡ tjj ¡|j  ¡}|j  ¡|t j jkr1t d¡dS)Nr)rT)Ú dialog_cancelr›rSr\rœrržrrŸr r[rhrr^r¹rrJ)rrLrrdrrrÚon_window_main_delete_event's      z/DistUpgradeViewGtk3.on_window_main_delete_event)NNrrÚ)r®)r´rò)r.r/r0r1rr=rMrWr^r)rmrprqrrrsr|r}r…rˆr”r˜r•r\r»r½r¾r¿rÁrBrrr<rr½s6 L    ÿ 0  rÚ__main__)z /usr/bin/dpkgz --configurez-aÚTODOzTODO~ÚshortÚlonga²asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended asfds afsdj af asdf asdf asf dsa fadsf asdf as fasf sextended Úxxéd)DÚgirìÚrequire_versionr÷rr rÄrºrÅrrrrrrrurJr¬r±Úaptrpr‹ÚDistUpgradeApportr r r r r rÚ telemetryrrÚSimpleGtk3builderApprrÚDistUpgradeGettextrQrÚbaseÚ CdromProgressrÚ OpProgressr2rCrzÚobjectrårórr.rÚfpÚiprMrñÚmainrJÚCacherorr¥rÚ mark_deleteÚ mark_installÚcommitrÀr˜r•rrrrÚsz     û        CD2 x    ÿ à