[prev in list] [next in list] [prev in thread] [next in thread] List: gtk-devel Subject: Highlevel printing API - proposal From: Alexander Larsson <alexl () redhat ! com> Date: 2006-01-25 18:32:25 Message-ID: 1138213945.32444.18.camel () greebo [Download RAW message or body] On the summit owen and some people hacked up a proposal for a Gtk+ printing API. It is availible in libegg/libegg/print in cvs. Having looked at various other APIs and platform requirements I have a different idea of how such a highlevel API could look. Attached is a example implementation of the API ideas. Look at testprint.c and testprintfileoperation.c to see how it is used. The basic idea is that each time you want to print (i.e. when the user selects File->Print) you create a new GtkPrintOperation, set various information on it like: * default page settings (size, orientation etc) * initial printer settings (from last print) * various settings controlling the print operation Then you kick off the operation, with egg_print_operation_run(). We then display a print dialog (if requested), and create a cairo context for the correct printing backend. Then various signals are emitted on the EggPrintOperation: begin_print: emitted at start, here you can e.g. allocate resources request_page_settings: emitted before page rendering, letting you change the page settings on a per-page basis draw_page: render the page nr given, return FALSE if no such page (you can hint on the nr of pages with egg_print_operation_set_nr_of_pages) end_print: emitted at end, even if cancelled, here you can free resources When this is done the job is sent to the spooler, and the function returns. We could add some form of feedback on the printing progress as other signals on the object. At this point you should get the new printer settings object and save that for the next print operation. Another way to use this API is to subclass EggPrintOperation, like the TestPrintFileOperation class in the example code. Opinions on this? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a bookish vegetarian stage actor moving from town to town, helping folk in trouble. She's a mentally unstable wisecracking museum curator with a flame-thrower. They fight crime! ["print2.tar.bz2" (print2.tar.bz2)] BZh91AY&SYR @C \ ` A`{{cB={h({_kteO>p֜4tF[Yk @T>wẞی:|zn*oq}}U${[F.jKH{lޭvJku3wok =ǧMg{{2+{죦Ls/v>BJ̵w G>Z;cm]Q \ }\Ww}n%|荹HU٪rwi{um0|G4nw@}R<={>ww7mwws \ SH&F@ S &F?TOmS&4=M &@ d@F"O&=L44 @ $j$h!4=OjC@MA4=&@ I \ FO 4 <&I4ɐ2F $MhSĦƂ*`)OB<J?TSjzm@CAB<)Szi4&) \ m/y_)m~}_?cܿ+aGhU-lZW?O1-yG<UU \ ;ृ , `3 2454b:\81 "" B0fh )ZR"Hv$H( \ E#RBBjAsEf9P\ \ ,Dd"A`#|j[Bo7oG@J$@Li'uVT|H \ xV>R A1;헍"g$.RAQ"~c.< ? n't vD/M oG\3@=,hhAIݪ`w-`U enϟYI3}+ҝ%~ٟCJG{5'W3 NBF{nn>Uȗ/WQsOͳTYq_q!ݺo6CQRd6o+DZ89+AM \ j^cʗ~ՅH/LI3t! (*g7x+{Ŧ%=_[TVg4j@lɊ&CV!3^ھLDYeJjtye˾i4Q:y|=1A_ RYڐci<#Pu-QV.E$B \ -z(I85T)ՖVɮa-Nݥ*S2)-iiW2˕e).m-U YWpt zyTB~5z@Bs ٸMuY3/Wkw:^OI$R!W'sN* NSr3 \ 4`GC=U wC#<yg~ #ζzP䕺m؛{nGHKK1 ` \ f+ I.C@ݾ ~JZ,ri /X)8) \ M_rسTP*zTtu<6A}bcͬpT@8-^8{ȃLRBn]힛%=~sG,1EG˧O(^2t+-ŏ$aLmqN걲8>hXΐmIu \ t`⧺ gˋdVֱeDTCMm߯fu>}>^pdVKM3D's$aN$d`k@h2nJOErv։d\l&[UZ.Q&\=C~/;^%- \ yC;3qjdE727 M[:R䪆c~q_qk.Տ9`3n ~}H-j@϶ b4Ϗl1`9}dQA$@jT X Q$-eW \ rAF( PvPJQaz>o٧kD>Fy( \ 2xX|(Y[J+/%1X7;)z.}^Y=YND@=!Y͞_^{<`k 1@b\U ܃Qh7wY8#||{F1߾sUUq]u9{4<<Ӈ r7or%-3.<E_l16mJ: +d > 媪s X0hWeA Sl b`3 4{`^JhZ_i͇.X8 \ }YA[̩Q@d?\R\~jklڝRSX@@YiZZ7$hKj$Q=Rb^F-P;U \ gvb1F$ŤaUJ(K;BDDS"#QYE)Ĩ/ߞ×HQ_f;\uM?FHI \ DDn֏vkz`["]w{5]u]uם_zs4jګ?:"Hr^ƈ垵&` \ Y[>Δ>b1kFR̚6K˫p;{:NCIh<Tm"1b|츻h!1! a͎r2Wt{N}Oww*֪G;OFNyG \ ,A 'bnUz%kvd0Q>3)Z2<ɌVMG85h7'OAO<>/__ҪU6pu}s߱熰qweީcѾ CbJ#P?˿J6ɤBs3U@_|UWbbߘp[$e!m-^5%p1EpқIzCC|sc|G賕Rr9}_(6I+2 MM~ w\nM$J4ȸ6QHiUhR#, +Tp2h{>Cos"s0dwo>՛7vCuhG)-'ģx $b'MKY+jPCB). \ ղ/2^ww}cGC/8yF'@LIB \ >lNÉd O]&:bUT=^FA#{x5ln-36ϡyyxCUUm0 !@TEo%]uT 'U, ڗyQ<!ރN{Hx\{a AB [X 44%kI U)(DRpdwC+PH4ఴEC?Ll}b|b[(} ]ago?6D硑H߃|[%u.[h*οu &;*)F:2,}Pk#RVvu '<òVUկ6', G~ \V < b>#5Ofq\N1lTa+ 'tdz\fخ.:jۇ7qNk{- ' \ XHQBDj9T5\&13nn|.L&&dV [b \ -@zӿAZ9r8q*f:":ynn \ ~祥&M^S9P7q%$kA>O \ c[VR\#ɫ*SL*ʣzPl`58vI}. R9~GˁLѥv:QnLë:9>x \ mW5H@b2aL'qqli4HG61uI:k꿣'kPz'&OwwԒUUUU_!{M/"'S* \ mdvۺՎHbA<lh.; aϿcBsvVbB"3Y \ _~0mZXFDL}MCֹ56cw͚zaJ#''3/5(q*:tKqcNҨ_ٳ8Ln*uҼ͚!)JU" " 8G9Eax:jߟ%nGj}сOCfᤶ+3F4CO/nqvw=/`AfdhӶ~S3A \ s6 a |҈#hU'X#@SD֮<TX<L 2:(]'UشYҺM~4X \ CI!2F䔸QzߪqN[-<6j-Ƭ8_%,*C熤pHQvE5:Eۗcn9:{C \ ;y:?RT㭹hsbCƻ>Ҹ,ov#i>la=ywt dq,G5^>5v \ 4ʭBIY0cӻ^aN]˜k8PXԽXju,S9P6I' \ U("GmYmLzDŽx4Vu6) yC6CEBŻ \ gd^~v愑;v]0dy[]TIfh+Ox˴]c3.@gJ}ziuNa!tFKM*zyoQ22 \ AFhT&yc*J~~G_waho=:NCCptN{zsN'5}}9-Ϸ>{}v*LLjYјN \ ˕Z&]{ zj?m \ &WY)Be퓗<[}gCO^>=Zo{lz]VqaN \ <' $5JH)sc0B9- Ny(7av&>K CS \ hH||5^<WnPsIAñ}sPƜYW(s6wji<٬4MYe~C\Z \ 4)AsC&D"(G~;8~U[sFTk5itK4ѱÏͻJ{af/e6 \ vɍngk;tdOǍzeShzYX]R<mf 3ӨuC=R ܼE=:s$xp^!fC04lx$\9Y}D"܌ڑ=+@g7/n{_ \ ,L^1vYak"!mDwr2#Q8j,BU=5EͽEufX/ 4|k9m` &~M)9V QmWLxne$Ytumw3j) [q:27;d:۫u<<O$i@R. 'G6Eg5 PqqyIf37م똣G, ?7ƻ}*ib=uD-.B,G!Ǿ먾 H$:weǗged, \ =$gԒa)~`IB.}s" I&Χ>^I`H`qN_?5̩?Eu* \ 8";gSd3*{L0q.$BH>κd8RGԺ?;ҞI=oOW>X<"nXchUWi-(ٍZ@6 \ `N6 n98[vG7S8k+\U;UQ;Ճ eټYgzs \ )Sd9-NijplQ:bQLΨdXԚv~;A e?bɻy]nvmAc.;q \ @>#!&5q:q<Vke9D pP' \ )'X#S=y.i.92s26Ì^> \ Eu+IhKRSJ4{k+ u.vhɇjW/QFa \ sbíh4Icã-p8ݯif7Z`2ٍ_鰼y \ zFq)߯$T4W`:KT%2c(ӊ,|V>=bח"`61Z~G \ ܹebm/"=L )AavE5lS7r#:RFv:zto+1 \ r-&<~@t| OLycNDaA]ۗGE.q>k~gW]u]u^ŏVnmn>( \ z,N?s8383Fޭ^??'鸩?9|oV8̝33#N;M9KEkO7>~Րrݰԃov5yb}ؾoh` ~Ha3aHWiD> \ ȃ;w\XQ2o|wzU]% J&B q9L/́C \ aOr~{&FdI-!]IZlJcNYSyJ]) Zr [$m/;_ \ N4z}5?}~P^l{z1._'"] 2B\0>J)u^ \ nI0+#gtOc4z6jM3ö A>{P@ /EY`lfM?^?.!5 @,R@:nBe2 Y $>2L2;IȆ|Zj \ P+(5iD1XÅeXy:<>eqU{5|7CbT3z`Gˉ(x֎V_ڮ \ @LKy6!RB̀.N7D3{Yr%KJbP =IʦB#EA*O5v@B!, \ l`ŹCב̽sS!A3F"6h͎ oRX;uBr~&w/'Zp=j` \ ).WNڕQ׳.~3EhtPG>iJAx0Iͼ8y*~2zzI̵}|t+21(ٮDm8etBwS-F l<uցN!!];bZh,|u>nszlz >x2v߃CL + >o- F c `)b%|S;5smnh5\tn' (F}!D$B^D \ X*IE$fyՖIw5}X%~GF=L: g̮M{* \ T1xxh1pJʾ_7.DYfh&O,.PNƱ֢I?e<?g31uzQs \ )ٷl~)ܨ0YeMl!=t1AE|\Ihw~;c<\lc >IJ$tg[!uJ \ v텘ఀ}KꍙTw<o~8VFNVјԉ;:G[ǎjx4MG< \ XQ['ӋBRpHaR#}O/,ⴟ37oƛ='! b = \ "{۱q*bM^`k Nk),1jmu9ɤ5i$U"X Yѓt*crjL1>Fb3Iވ=x*ް7eQf .8??* [H JGNh\59n U }ӵWy|1\ƺ;1NJrOw0oEzj7.N<H*Lu \ YG:mƨv-e,j k+ \ McxkuoJ2+{Ë>5%_0zA̿n~OYyR}@jBǪ0aPc? \ ЎaX.V{Hjlawժz$?јAlhOaF:]X$ \ {6|qU%d":O\ \ ڵk82ќj=&b4X،1Y_ozԺ[AcFiN7@2JI}\A6A<4E(4ѴɊ"_ \ i8yud L0T^-M|tsSo!tB2?7PZTOkB|eLJ|nׇ I/^_y( K\z9ᐄ4_Ec!&Hxw >Wܶ[*H|[d~Si@ y3/ 7#IÉ_-5 l2T f03Lϣ?6sIRw>=_O|y/U߅aP%GuN&uc&@fnX4d>=G<zo \ Ɋe#D'HnjJ% \ T3dCDD-1M=S]v[i1!?I=LBIn qC0l&wt_i''#>pog|5 \ @]kmuΡ G<`ڬn)H,4 Ԙ81v,,va.'*MgD@6 p"ܝ Q JY<|K䪬7ӕ]2[fc$=X};^QoVd~313R7oJ?8 \ xkuL4_9OfjGfv^XZd|ޮ*Ȃ0+Qܮ 9 `sH \ v J%҂̰GNq?7ruKj1+LTM74u^=+ɳ@G \ T5@4yʟ̒*me "oHwZ F>νo}1͖O id%kDh4C^BP{Uo&_CQ`]XL"P0oxOT =<Z,'0$Bl&Rh6 L"9EB[&FB]&-'C:NˆOm)I;PS^1ڿdU@P*38$ٓ PFm>5 \ X>K%2\U|> 04cpcez{/og|4Uh/ʪE窔E3)Nj3Mua93 i: -Jզ쉴\woqz-_FOP=@.C ;3T!Vg8p2c;+WQMnʋf谶NewGAIAeot۶D5N{Kej(iInD2[b(__] P<c˙=pEPgMzwאg1vG^z@ e$K#Zlz2 K/$1v/S#IۭHAL~ j?⏮Tc}_z?ѥ$/ k| HeY, OF-VX" *P>'5 єLW5תQSXيTȅ]t}莚z qcSTзsC8җb&~pm2 oמ;y'~ =<4XSəO6NֆiP$ B|q*sf]5Wyı/ \ 9x*G&҅|W?>Ncr{wXȰ쫡/%ę-\Wab?9 "0 B"BHESĈ6" go{Bqpg?fL[Iaoh8Gys_ؔ'^H(}3 \ r9ћ_c z+(gܢR!Qwr.}Qm7Riάj۹^Z \ "2ɯp[*vEe<P, ~"#$`"+ z=-{ǺA#R'dsxR \ fhQ{ A_q$X+!<qDǘ)q<4dY-W0\WP!8T \ g;$~m*= ^4pF)١ \ Ki~W}&63@5u(xm&݈t[$wr7۲Iìsc7=P1HehqQ<'A`$0 0=#ʅ]rRđhqEXkz,kZ4wyx W<7 \ HPd28 ] AQF9 irH)%iВQr$QqYZh3aUUrwI.Kdn騒z,܉0V}7G|~F5m*lhCpӨNsz"wzi .!v'kKô`^}># YO(4 &\Êag ,XcIypw=OWDkSj1r`.z;9brKF_SiD>UU]5=ϛ<)9@~d?= Lb0n 3p%Q*1WUUuɜ^Kx!p$u_U8nʭ*=C&I%vԪ]bFTCUZ `ݪɲZ \ n/?VczT=8nO5-: 4-dveH瘮pm`x @ \ u=Oњj\LK*e(8IY \ 3.zDZ8;$;&lLR2HFVfzNe=e=;2^@.CƮP!%arꚧZc<'#=5G+W5[>qj[XK Z2B։ Z0iYv-.Am CK݀4Q 0=Ѕ@_ʱᝯ(i+:<VUyzmhz'.aRTStGT@{4D֭`z$g \ (f8Tު[kF@JOAw:8D8D!J Qŝ& \ MwI?o8NH\2%M SR\$6`X; \ B$A"'`w@pB@(C_JԆ@59e7,3P|s4}Fu۸Br[!iGiRx \ (=@G>C\p@df!yDjBF.] y0GWq&xvi jOTx7o+]yb ͧ#QTqUr؋ 'L.H7 n9D! c亳(ۗtp5~$Lpa"zaGkCDIEkL*I]Fm)v)TW P @`ug`j%2><10KKvl8N]>~h`z0ssh']h>< \ 4YN$rB]x vDMbH뤹p忘[Re8Q 'A7pf ,G/W3T0mNV7u,*@/{y0:w \ [-b@5m=EÇt!_b؉a5;bC4(hl<TZ$35 \ A ؏.=l){fCT^!d6Y,o5n,-ea`j]@a%}&BC8e \ RDfϔ+?7p(8UȥрPYPih@kUL2tY0/xsT.hJ{4GbH&a \X8S`<p}}bzT< `4rLbh É~Ω!P+.;Av`N 7d b{ "|_LP 1dPUDQdXr뢤:^Lzᘪ{ad䧯`4@쾡]@"db@*`&^? \ /uN!U)i~ \ IB-BCwR8_8x2FIyMA$>'l2lDA7JH,8NŰZ4X-$%.|sWW.U<we 9d=tb51p !2: 0"/st C&x=d2AiHe`CP#0-z| =>d- mԟiHq:2Tux&*w5cr! t8 9HLJK+EռX"T!lB4IB0@|G \ |2{;ZpGQ&Vl#1]D=>n!mLmB&mGJ!<k]! -eaZX: ϼ2_+'.a8#3&=in˓Il;P(bFȌ;܄?E=_!`UUUU],HR6gp ?VzK`7 \ o"?А%pE8Kj̩pv:z]bl{@I%\av='fv$7C ^ 6Hp+W4(T$s! HI'7=ur'GDK!V܄P[y掞muE@e ];<] PPp$(<G`DXoajG@tV_ p4q4 \ v2`k& HAxLJ ؈ҧ%ypoj$-sU\l(8ѰbQ^'j@`"q x9ASRac(KUHIvZKG OME6YTxxu|N3 )rᱬq$VC~!?FV > RI $}yۯrΞo8q}k0:j&mcZL }kqkQGvk+ \ > }SuzW_톯bTŴ%tx[B%|3ѯ=u?dWGN11nݧF \ > [@/ZT5oW\\sZq](JjxGi:Goes`vA zOTC)R)J \ > 5Ha]gxIO4A}gsDܝ*04{U Ĥ0VO-{0MFsyvHIPD4z@A``} YD"!D@1wֹ > UUG^2jηӅD{ƃS{oo`o=yLMC"l HF!a 9Pb?& \ q C .C^ȇ> xï)g;".a3<ܽA\y٬5{?,ܪ)UDWb*@ﷄ*:g@46B"&*4g7f6&@8\x8B \ ;,؏,}"g3=Q~masTUQbD[A35dhiVju4 \ 3('?V7`7#DFb㾧SA|*f{{ \ ҩqEv|0цuQVu8 Q QH5{vXtxīaHD$!1h]02tzT2p=S zmRՊ"UTNj" ŧ#>ܑA)4;UVS\Ǥyln K/i,.qaI܆ "U"-;+m(ҫ`6F 0Y9qzd1 H2?IUUQI8PY ^ @6 lx IfDA"%0`ʪEU*!IT D651e?q9SS $qe5 *(JPa[\4zjDX b,O a@Qs@5H(Ra ? FjQ!$O焔W3G.)xTqBnwȞxyOxi7pV}N))VZnbrzH;"!0fCc}eJ+-BJ!_*!B| \ 6_lQG/4x;D8#IqqAU =f;H@nAI 3!IFr #3) NWrDA z@iFG|b;]a]J)`DF+v'w1x3Lfl OEĖ2*CK.0@0pw&T%7UGJji>p?|9 i#U" \ 0Ab. -U?U@U*H{~0 |AeM&6h*)$ Z`VyS Jim2 \ (h{T*v$-6b0 XTg 9n*'dJ!@xp>F $D \ 0s@6,lUWo;{N2dbP1$QD-*I_t*9{djc'Ni0 (x@{ʧvkz \ X0I8 uY8OÑ \ G_iRw-E"HܥN̽biXƉxbL!%t>