ó «‡Uc@s_dZddlZddlZejdƒddlZddlZddlZdada da da e a dadagZd„Zd„Zd„Zd„Zd„Zd „Zd „Zd „Zd „Zd „Zd„Zdd>d„ƒYZd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d?d@dej$dddefd ej%d!d"d#efd$ej&d%d&d'efd(ej&d)dd*efd+ej'd,d-d+e#fd.dd/d0d.e"fd1dd2dd3efd4ej(ddd5e!fg Z)d6Z*d7„Z+d8„Z,d9„Z-d:„Z.d;„Z/d<„Z0e1d=kr[ej2e/ej3ƒƒndS(As7Print Editor A small demo editor with printing supportiÿÿÿÿNs2.0cCs<tdkrd}ntjjtƒ}tjd|ƒdS(NtUntitleds Simple Editor with printing - %s(tfilenametNonetostpathtbasenamet main_windowt set_title(R((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt update_titles  cCs•tjdƒtjtjƒƒ}|jƒ}|jƒ}d}tr_td}|jƒ}nd||t rtdpwd|f}tj d|ƒdS(Nits %d, %d%s %ss - Modified( t statusbartpoptbuffertget_iter_at_markt get_inserttget_linetget_line_offsett active_printstget_status_stringt file_changedtpush(titertrowtcolt print_strtoptmsg((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytupdate_statusbars     cCstƒtƒdS(N(RR(((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt update_ui/scCs%tjƒ\}}tj||tƒS(N(R t get_boundstget_texttFalse(tstarttend((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyR3scCstj|ƒtatƒdS(N(R tset_textRRR(ttext((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyR"7s cCsdatdƒdS(NR (RRR"(taction((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytdo_new>sc Csõd}yt|ƒjƒ}WnGtk re}tjttjtjtj d|t |ƒfƒ}n`Xy|j dƒ}Wn?t k rºtjttjtjtj d|dfƒ}n Xt |ƒ|dk rñ|jdd„ƒ|jƒndS(NsError loading file %s: %ssutf-8sNot valid utf8tresponsecSs |jƒS(N(tdestroy(twtresp((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt^s(RtfiletreadtIOErrortgtkt MessageDialogRtDIALOG_DESTROY_WITH_PARENTt MESSAGE_ERRORt BUTTONS_CLOSEtstrtdecodetUnicodeDecodeErrorR"tconnecttshow(t open_filenamet error_dialogtcontentstex((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt load_fileDs2     cCs…tjdttjtjtjtjtjfƒ}|jtjƒ|j ƒ}|tjkrw|j ƒ}t |ƒn|j ƒdS(Ns Select file( R.tFileChooserDialogRtFILE_CHOOSER_ACTION_OPENt STOCK_CANCELtRESPONSE_CANCELt STOCK_OPENt RESPONSE_OKtset_default_responsetrunt get_filenameR<R'(R$tdialogR&R8((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytdo_openbs     c Cs¶tƒ}d}yt|dƒj|ƒWndtk r}tjttjtj tj dt t |ƒfƒ}|j dd„ƒ|jƒn#X|tkr¥|ant}tƒdS(NR(sError saving to file %s: %sR&cSs |jƒS(N(R'(R(R)((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyR*s(RRR+twriteR-R.R/RR0R1R2R8R3R6R7RRR(t save_filenameR#R9R;R((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt save_fileps$    cCs…tjdttjtjtjtjtjfƒ}|jtjƒ|j ƒ}|tjkrw|j ƒ}t |ƒn|j ƒdS(Ns Select file( R.R=RtFILE_CHOOSER_ACTION_SAVER?R@t STOCK_SAVERBRCRDRERJR'(R$RFR&RI((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt do_save_asˆs     cCs'tdkrt|ƒn ttƒdS(N(RRRMRJ(R$((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytdo_save—s  t PrintDatacBseZdZdZdZRS(N(t__name__t __module__RR#tlayoutt page_breaks(((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyROscCs6|jƒ}|jƒ}|jƒ|_|jjtjdƒƒ|jjt|tj ƒƒ|jj |j ƒ|jj ƒ}g}d}x„t |ƒD]v}|jj|ƒ} | jƒ\} } | \} } }}|d}|||kr|j|ƒd}n||7}q˜W|jt|ƒdƒ||_dS(NsSans 12ig@i(t get_widtht get_heighttcreate_pango_layoutRRtset_font_descriptiontpangotFontDescriptiont set_widthtinttSCALER"R#tget_line_counttxrangeRt get_extentstappendt set_n_pagestlenRS(t operationtcontextt print_datatwidththeightt num_linesRSt page_heighttlinet layout_linetink_rectt logical_recttlxtlytlwidthtlheightt line_height((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt begin_print£s(     cCsit|jtƒst‚|dkr-d}n|j|d}y|j|}Wn tk rq|jjƒ}nX|jƒ}|jdddƒd}d}|jj ƒ} x¶||kr<| j ƒ} | j ƒ\} } | \} }}}| j ƒ}||kr|d}n|j | d|d|ƒ|j| ƒn|d7}||ko[| jƒs¯Pq¯q¯dS(Niig@(t isinstanceRStlisttAssertionErrort IndexErrorRRR]tget_cairo_contexttset_source_rgbtget_iterRtget_line_extentst get_baselinetmove_totshow_layout_linet next_line(RcRdtpage_nrReR R!tcrtit start_posRRjt_RmRnRoRpRqtbaseline((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt draw_page¾s4          cCs4tdkrtjƒantjtttƒadS(N(tsettingsRR.t PrintSettingstprint_run_page_setup_dialogRt page_setup(R$((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt do_page_setupàs  cCs'|jƒrtj|ƒntƒdS(N(t is_finishedRtremoveR(R((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytstatus_changed_cbès cCsQtƒ}tƒ|_tjƒ}tdk r=|jtƒntdk rY|j tƒn|j dt |ƒ|j dt |ƒy|j tjtƒ}Wnatjk rû}tjttjtjtjdt|ƒƒ}|j dd„ƒ|jƒnX|tjkr|jƒan|jƒsMtj|ƒtƒ|j dtƒndS(NRsR†sError printing file: %sR&cSs |jƒS(N(R'(R(R)((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyR*ststatus_changed(RORR#R.tPrintOperationR‡Rtset_print_settingsRŠtset_default_page_setupR6RsR†RDt#PRINT_OPERATION_ACTION_PRINT_DIALOGRtgobjecttGErrorR/R0t_MESSAGE_ERRORR2R3R7tPRINT_OPERATION_RESULT_APPLYtget_print_settingsRŒRRRRŽ(R$Retprint_tresR;R9((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytdo_printîs2        c CsWddg}tjtjddddddd d d |ƒ}|jtƒ|jƒdS( NsAlexander Larsson (C version)s%Gustavo Carneiro (Python translation)tnamesprint test editortversions0.1t copyrights(C) Red Hat, Inctcommentss%Program to demonstrate GTK+ printing.tauthors(R”tnewR.t AboutDialogtset_transient_forRR7(R$R tabout((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytdo_abouts    cCstdkrtjƒndS(Nt__main__(RPR.t main_quit(R$((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytdo_quits tFileMenut_FiletHelpMenut_HelptNewt_News NsCreate a new filetOpent_Opens Os Open a filetSavet_Saves SsSave current filetSaveAss Save _As...sSave to a filetQuitt_Quits QtAboutt_Abouts At PageSetups Page _SetupsSet up the pagetPrintsPrint the documents¡ cCstatƒdS(N(tTrueRR(R ((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytbuffer_changed_callback[scCs tƒdS(N(R(R t new_locationtmark((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytmark_set_callbackascCsO|jtjjtjjB@rK|jtjjtjjB@}|j| ƒndS(N(t changed_maskR.tgdktWINDOW_STATE_MAXIMIZEDtWINDOW_STATE_FULLSCREENtnew_window_statetset_has_resize_grip(twidgetteventR t maximized((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytupdate_resize_gripds c Cs3tjƒatjddƒtdkr>tjdtjƒntjdƒ}|jt ƒtj ƒ}|j |dƒtj |j ƒƒtjdƒ|jtƒtjddtƒ}tj|ƒ|jd ƒ}|jƒ|j|ddddtjtjBdddƒ tjƒ}|jtjtjƒ|jtjƒ|j|dddd tjtjBtjtjBddƒ tjƒ}|jƒ|j|ƒtj ƒa!|jt!ddd dtjtjBdddƒ |j"ƒa#t#j$d t%dƒt#j$d t'dƒtj$d t(t!dƒt)ƒtj*ƒdS(NiiXR¦s delete-eventtActionsiiis/MenuBaritchangedtmark_settwindow_state_event(+R.tWindowRtset_default_sizeRPR6R§t ActionGroupt add_actionstentriest UIManagertinsert_action_grouptadd_accel_grouptget_accel_grouptset_border_widthtadd_ui_from_stringtui_infotTableRtaddt get_widgetR7tattachtEXPANDtFILLtScrolledWindowt set_policytPOLICY_AUTOMATICtset_shadow_typet SHADOW_INtTextViewt grab_focust StatusbarR t get_bufferR tconnect_objectR»RR¾RÈRtshow_all(tactionstuittabletbartswR:((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyt create_windowls^                          cCsAtƒy|d}Wntk r(n Xt|ƒtjƒdS(Ni(RïRwR<R.tmain(targvtfname((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyRð³s  cCstƒtj|ƒtS(N(RïRR£(twin((s*/usr/lib/pygtk27/2.0/demos/print_editor.pytPrintEditorDemo¿s R¦((R©NRª(R«NR¬(4t__doc__tsystpygtktrequireR”RXR.RRRRŠR‡RRR R RRRRRR"R%R<RGRJRMRNRORsR†R‹RŽR›R¥R¨t STOCK_NEWRARLt STOCK_QUITt STOCK_PRINTRÑRØR»R¾RÈRïRðRôRPtexitRñ(((s*/usr/lib/pygtk27/2.0/demos/print_editor.pyts˜                   "   #            G