From 3941bc55d6f818e31da790c3f31624ea969cd7fc Mon Sep 17 00:00:00 2001 From: Yash Agrawal Date: Sun, 8 Jul 2018 19:58:42 +0530 Subject: [PATCH 1/2] remove pyc files and add .gitignore --- .gitignore | 1 + olpcgames/__init__.pyc | Bin 3747 -> 0 bytes olpcgames/_version.pyc | Bin 267 -> 0 bytes olpcgames/activity.pyc | Bin 10638 -> 0 bytes olpcgames/canvas.pyc | Bin 6684 -> 0 bytes olpcgames/eventwrap.pyc | Bin 16565 -> 0 bytes olpcgames/gtkEvent.pyc | Bin 11407 -> 0 bytes olpcgames/mesh.pyc | Bin 24539 -> 0 bytes olpcgames/util.pyc | Bin 3573 -> 0 bytes 9 files changed, 1 insertion(+) create mode 100644 .gitignore delete mode 100644 olpcgames/__init__.pyc delete mode 100644 olpcgames/_version.pyc delete mode 100644 olpcgames/activity.pyc delete mode 100644 olpcgames/canvas.pyc delete mode 100644 olpcgames/eventwrap.pyc delete mode 100644 olpcgames/gtkEvent.pyc delete mode 100644 olpcgames/mesh.pyc delete mode 100644 olpcgames/util.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/olpcgames/__init__.pyc b/olpcgames/__init__.pyc deleted file mode 100644 index 16146c8e9d64d2a5298780c975c12385e027ad05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3747 zcmeHK-EJed6{c)wH=fOAH=9j?q8BBM0@ViV5t@r$ESeyyBpX6(t!v4(TrpHh;wAW0oJX{D}Sefc^0?n`8T! z%@a0%!sef_`BOIkG{_vY{7H}j%riEB&bBWD_G7mCj1@1~{BzcMuYbmlCC@~`aWkGntu;Fvq^ zakjxuR9O|Wl)AA-X>M#TEvYNTO7hI)q(}i<^NsRLQ+vMBW>d)gUN&gSgJoRmwX#MN zB)7HZCtCR0ilW$_@LC6Gs6U^5w^(P)u*wN`!$bms+eX0ue; z649yJjOWFL~{dl3OAI5-hTnKrMr)JePM$V=IIKCbf!U5ICnS z;1u=)WF6AHL3kR3d^6YimaZbK|5Pkp(Rr6(#x$ZNdc5crA*WO1-{4_1g-+ zP?bySLnw3rRj0uK9`-#w;f zsx0)_^lW@FT3nC%LoC0$8BHH#i70ofkQ&_N-C8R;+;iZkzJEo0XgBYyDVvnSe=4(9 zA%T?AqxpNmySak3s1v(AE!0W|loAb{ViG`B68SMaDro|=hqd<*%7f>1XeNRe=nfA( zJ+O%e2k&2vLz%=599Tg$yayF>iPHTNX8cL&FM&#aA{Sr;HOJ5}L3W}n%Be0q-xo z1y4UPS7ob_O!(jE@g}kYfD*M!5!wSIz^1Os+Iim1YKu6|W zHxNHg(=<7TW2PBURPDAIimfPSN5t)-3&m>&S-CSZIo?^1drug-xW!@!VN$`-sP>oW zZyVgn8#iC2iTWo#-3~7B9`|>)Sgdh3MB830)KBrOI4uXXJjW6RKgF+oHzta)4vP!^ zD`4H9K*T@BvRLFMTP*ww{BA>*?zCLvE%QfM=zinrU!C3E$3MbDyl8}<@oM5f!doje zt{-IXpno~K?k_Ih_J^MA``~$T)*oL469#W5lhI)2pF!ZNe?1!y##jBxY|$SMgIOQG zyB=M>eK!i&m!s*le?D5=Ove5xj_#f>Z!TtI{~6x=$2bje;q6`<{Ws@DGsUk%)MGF| zWPH#*4x}1c3u+xgm$bHvFZQsw@9@}L;(v!81-94T*H3?y{<`N@vXI{B-kCA^nX#Gt zD%~j#^5I6%Lz=bni$z*(9Yy~)u`<6o!*BNz%cIWo&ZAE9Yr{Kt>5W zkcf{@$xn`tFX0BWq1xi(HGo_O1X1h_$R7V82{(=X0W z%}FiE&(n9y&rfm7FG@}|(o0M($t=q(sRXM}2PxH$hnlWeP+80YG|wg%>;XHFcZ)#| HVq*jVAZ$c# diff --git a/olpcgames/activity.pyc b/olpcgames/activity.pyc deleted file mode 100644 index f05acd7c6d7f21e44242d49a4306cdaba131361d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10638 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 diff --git a/olpcgames/canvas.pyc b/olpcgames/canvas.pyc deleted file mode 100644 index 94485baf0be3489ed75e74c5a7cd67d02ee42977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6684 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 diff --git a/olpcgames/eventwrap.pyc b/olpcgames/eventwrap.pyc deleted file mode 100644 index 3be2b33e3d90b145587d79863fa83e020bcc5951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16565 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 diff --git a/olpcgames/gtkEvent.pyc b/olpcgames/gtkEvent.pyc deleted file mode 100644 index b409065a559c4b43306a6e5a36e20413d056641e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11407 zcmc&)OLH69b-oRNAOOBaiX!!xY0blfu|;yE8O!5|#+F1u50e7v25F61PP!m;6Ko0W zrn(#Aa3aN1)+7sOmsG{&jmwo~wyDZL$jVj8A`36P%rd+D0q6V9X*@(}TuGJbNb0L| z&%L+rz2|*SkPx_NR>huj5I6g~l^x2d!nioOx`S9n1KZ33A5En-`X` zvVpwW$@eA|%ub;PkC>eifeYqw(R4=5&S-y4$?TMjUot`2cq4q-PQ`dd^5q? zGUkObKi(NP9_A^w+{aGvK#gjJ=lnLBcKW#X)DP3;gQHLEG;W4TrFD2gxb)qRv5!tCD4GB10*+b?-+l z-Lp?QzThUFRpeb`-b#E6dGR8axfsBbhIh zSs5aKTEhEWHwc5&bteHQ+|O85?w<{Yc)#l^8QuNJ>vq^3#RS*&qL%AAoIE(AK!5Cm zI%L;4o`jnft)e9d+RB6ncLiGhaQr5oHLCBP#YTn1ds;0oZ;3?2hq%HVOp1bEMQ z=LM)5?}7mD8}AJPzG=KS1^AZnYymFGc6i%G^Ht95EE(@D!7m%{Z2?xOtM8KOSHSe` zH0VI$?N+CmBvjh}rHQdCHvUMn1yvr%mK{A5t%p_et-xQ7?m5nWx|bT^xA-`ze)smQ(Vt>`dJY5sty zg`T_);9b}_ISgQ|;3j}%at5#ayQ!Ec;GLkom$vel)O%I|C;tLz=$qVUFzsXJQOQIV zV*&d-XF_;IplOoP!dK=EEN?Jkf?^LCH8<%yF$IovFkb47m(9&=Nu>{s^`Y@>HC_!T zD8@gSG%s>;0HS2`U}_kZ=Xru@Md`MfSP<;YG36{$)v;+a!MTSx7 zJmFWNJtm4`vPC%D5P^rAyi^~1fO1!QDn zL5fgmvy1TN#bgFFq7e8_|9hHXIRD(54$Ox=}VL62I!aOC$kvX zkJ2CtmqPrvd$c5P4}dnoD#S3M%=@1oM2W9M2@lhX!rh?VjWb+boWCyOO6k_?)wcns zV`$v{W)SLiB}Ax4p|74f2w`||_=nO>{8TTJq*MraeEr{hoRY9>wI92iPOZ^!@84*w zrPCS8sjb&;G-`_EjW###)wgPndw*l=-bP*V3$NnuVwMh)Y&W;Jwm5lc4QZUAhqmPo z8TO@}sox+>h(Jp$fcvBysHVGM9yqP`f}QSx-hMyoB0%Fv35yY>p!?F;e)QBAVIXC8 zJI!{Y7VSpey}hxz-H?rL!`k{OdF&3v%ypAAIymsX^z`uo93V+y?9;{LBbn&v==||f zIi3qqNJ)a1_R^qIn1!RHB-~5mdw$1D&%F-o(w@5=8pYR-!yBeD>D3#iLF=&_c%mO( z>XO)yIPN?!pPY)Al|Ea6Re#d+I8Qz*LT3wAY)gLd1G z;qSe;d1%8|LnPl%sEReQ5<2k{``tt`A4wA&jG8KKnn*||YKs*J!re&3xu5;WL>Z%$ ziE!7LS&5@Pki1Il$&c>cs%_Lh+uUf>WcF6v_2uZwU4{i}CF!6K1F!9;dIoe)h^^np zn`r?PYO={qgJtKfzH9F@=|c<-GYM||1^AMo;8x*nw9T7cjKSsNh7A#2NkTWev7NMH z-w*97lB904(>b~%?!@zVn~1@((f1L4B@D|T{+`%*N8kZ}z#`=vDQqK!>-q`#Rwely zij;GUr)3v3O!tHfdp=_p=OZA8^of`5rECt9y%SWR>v(;HCn0l9Zq_F7j)rOkyJjPWO;&ANqE%f6(#wNoc0qBAoV(&3mdO^(wurgqJQvRb995 zId_Sry@JISxgQ!-ze=}|*^zXRUFH?{@6xHM#XrM(5?kQt}DeZiW}y~6aE?}g>BJc4L zE_0796Sw`^W&IH@t73bcG-n=RgX}Ehv~Aeb3Q>3QAQ%NRf9LKq*hRIT|0be=bHMCz z*|c5(H4$8|s5KfG=iWGlYT97=HRvRc3GoWt0VTFL8WX;affmt@}L<oR@=*P|*y)B*w z{-K*hU3^Y(9s=n+VnZEsz(FIyERVStOS+n!D2?3S*)b^#2Iwm!Ub=x8DrU8$7RQn9 zD*3QDE}@-9NPRaW*-3hI;ETVJBV(gJX=Jzyj3~SRG(9<`7L)x?xJW`O8|$<+ktVn-E_$FYP&Ir`AQ-)fr1HDw)k^6;DFuP>gy(RdNdm$48C`A8fQ`ksklYPr*d%je)@R_R0B7uYp?`zg5_K=$iQBROGo7m$wc=Rih zx{g15(QUnGH)d@d$=DLAa1z}gyRd}XOIlX>KivE~c)ijfPYBP+SbB%|_;)$^#suq**LhSUI|Uh>Cc3 z`W5hA6Xv?yTg)6vJ5|10Q?5INNE7iRpG$k>d_n9F(5M&*N%}_B`Ad%e6-V)$kY;>| zH~$V#7W=U929v3RQ39TiP-hgy&*&Ooo0gjLahq`YCguECCYX zTwEArM1sgl1CU!(U=|^hALj?CMF`&`%S0b(a0z+g90&=-2ESGyg!mQFFTSPGTF6N% zQvZCiXe>Mr;2^RZ^d+41PWDwg`yPzMUn^&cy&J_g!-XYQ7npq|l3|Ih)oPkpSLZMA z7RO~H$!x!9;7FF+pLGPAF@IMa7e>ohO{_F^9_a+ zSTX|O!bDxgd|ix*Oo=c)Sd16W>0($PVJg*Lstw{2GSeh4$au(Ncf;>z$nw*p6rV-$ zqodu}$FB#%*3s9pvVz5RbrixPa!gD{TYuIdu>=c4Q8#r_|8f2f6P)jH7JaHl{wR*} z6WYM13TeT<=8>>gEX;`}(@q12nSgv{j^rW|XvWi`n-n`f!n{|aY2KwDO|#07Ma}pD z2EG&8@S{pg6djs&dKfLGT@;xaZSz|AN|R^|Nn`mZi6$Rlqtm=9!$6aRiBQ?3%E%RI zaF1qs!GwNxdJukM3M!M2Dkl1tu`F02e)UizL8F57x-2g4&fO<<2xiXw%rYTnedaOu z$m6y3p>G-byOiB-r<2TJs3spc2FQyVRA9tt#aE0!59v!<$JZrkJP;Z&>k^sxRj!ie zkN#6J#ypFpo))w6&~<(W9I*O)tZCwQM^`D^z#Zt2NcOp=})o|>;?a^`+luRtfQqk8auUoYbL7+0e%R{Zoxsx+V^Nx#c^sRq;#7G{igEsBmV=R8=e0E diff --git a/olpcgames/mesh.pyc b/olpcgames/mesh.pyc deleted file mode 100644 index c76207349e87d27e949e103e9cd64f65a8c59132..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24539 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 diff --git a/olpcgames/util.pyc b/olpcgames/util.pyc deleted file mode 100644 index 4dbd1eb4181c7da302cf2902759ad82e86d5fd0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3573 zcmcImTW=dh6h7-)V&~GNf^v~s21Hs%N*r1tBua&d+NO$BC9r8}8-c9#?%3I8y<>J} zlNcp^DZhXxeg!Z52_*gvFNhc5J7;4%DH0E;S!>5LvomMTl`8uiPxTP9tmxI$5xUSe5w^r=R>wNZac`W4!p zrr}kYtkQm+k_PS0kQdeH2OQR*C+RX(^ejDZkhw}89$lq)j-n|R?M2h4>(UZ=Pouhw z<|%4O=MqIT(pjKrRyvEU`c89>E&2@2ddIpf2wiMal>|ebsjkV?p~?2+w5Lq&Y#eFj z_O#l`dqJjjdJtzO?d#OVf8*J*^N?baLD&oW+O~2RC-z-Ty;y5m-mw%G z;j_Dhrl(!Ilc!Ol+k?REiO>0C8Sh=ZqM;*tNpwPVOcaa5VYj(Po-0vYW^?f2C9KCE z{H?Gug<~+WWr%8xc8ojr4yHE@3{jEEJBe1~Ps-+9mKmpKPhL?j%hM2Y)81{hWaB^JNm14< zKveq`zqn~k>NK*fqGRVIrsvqU!yrowck+mhYT}=yu@BH&+cSMFu3y`J_~qRP9HZ5n ztxwkMzD~3=>Dq=d(T2%FeQT`rBvfl0&emY)v(#C-6=hxC>0ovh-gw2tkj3)D;g`_!K?pq}j_B`*k@jQEjUySr zw*YVKa;H@kxL~yiD&U&}%xtc*L+fgonj3&Oi7>B)ylPsS~C9&^c z&^{%PGw3#pf?QY~m&EWC69_rDB(4&42ljU)gUc-ZXEbm~o~4qaBV?+~ARwH`>=*dm zWI<0WGtdQ=ZKI*^YuNMevGjHsFNpFt&*G>C&z3t@h62 z2kU;@-`;+tf?{(NXF7xe!vtb*e!cnVnOnpshRDdGHe2L# z==>^gWpwDHL6And)tO@sI)A(X#-GOgB+9QfBUl6GIm>5IZPsgei=~i5%rB>-!1x_> z3K%1x2qeIas54`gfocZFh@VD5?B+>Q@Doxg03(4e#8u6frDlO*nxU z374F47pwE!#Hr+QK^W|OmfcRl2^Zrd2{5Z8?0%hXJ1#W6ku$LCNMc;QRwf_%X+fdb-+W%SRwg0q3Y3u696hp)0aJ)b7?6L~%1 zhocwdMyvn?se9ih^i73MJUS`SNtsS6bX+0k555sA)b;2J=Hx0YlX<`372KC)ItBpI z7RxGh1)So2_u+T}1Ytq(wLJd%BtqGNPe3jxDE$hwR6QM?2s6bfNT6wrzP~P-P7`Vv zR4J%Xj=@`0^6(eeWl@!$z&;)~c-eHnzh6NLN4 zr5)y32AWd(DAWVKorPPZ(OCxGTU}N6N8gY=)&*$@rV7AU(PZs9WcLRSL}kEyCd#oU zP&YqXO;9Q%XAT9I1)$LkmzV5zdx29!ldCX5*y=u;@8acSXU3$p%PoiA_x<%UK9NH*Vb62;wBqKnpo5c2;yz%sgFr zwz3N<$&lerXO>G1Y+E@mNUnJ1+OdzDtbtlCc%IKH6pjBvm13DnSdis%V9BnI*ZenCBHlR{M# zX>ta%08)TB8I4irzkv-G#24&@b5U8vg#7>wEzEf}Z;>v0Q{E!p_eSz~OA>nWeZ?A}5n z)%>_d9CzeO@!4~ZW4g)I>+W+B`W$T`SD&j|pOx~L&`dlgz1Mjy%WZt8k5o?d=d6@f gXlmZu@XjT?v!z<8jM8;(YTldk=BxGDdbwWt2hqrI-2eap From 66ed8732fdc27f8b7e764583b58283ee693fc7e2 Mon Sep 17 00:00:00 2001 From: Yash Agrawal Date: Sun, 8 Jul 2018 20:07:14 +0530 Subject: [PATCH 2/2] port to GTK+3 --- MANIFEST | 184 ------------------------------------ MANIFEST.in | 9 -- activity/activity.info | 2 +- game_sharing.py | 2 +- olpc-setup.py | 2 +- olpcgames/activity.py | 49 +++++++--- olpcgames/buildmanifest.py | 33 ------- olpcgames/canvas.py | 33 +++---- olpcgames/data/sleeping.svg | 52 ---------- olpcgames/eventwrap.py | 2 +- olpcgames/gtkEvent.py | 42 ++++---- olpcgames/mesh.py | 6 +- olpcgames/pangofont.py | 5 +- olpcgames/util.py | 2 +- olpcgames/video.py | 21 ++-- setup.py | 2 +- 16 files changed, 98 insertions(+), 348 deletions(-) delete mode 100644 MANIFEST delete mode 100755 MANIFEST.in delete mode 100755 olpcgames/buildmanifest.py delete mode 100755 olpcgames/data/sleeping.svg diff --git a/MANIFEST b/MANIFEST deleted file mode 100644 index 83bc30a..0000000 --- a/MANIFEST +++ /dev/null @@ -1,184 +0,0 @@ -load_images.py -olpc-setup.py -game_sharing.py -model.py -READ ME.txt -activity.py -storyboard_list.pkl -Exceptions.py -setup.py -graphics_layout.pkl -game_events.py -facilities.py -gui_buttons.py -display_panel.py -Foodforce2.py -haiti_storyboard.py -font.ttf -gokul_storyboard.py -level_change.py -POTFILES.in -LEGAL.txt -gui.py -LICENSE.txt -defaultStyle.py -texts_eng.py -MANIFEST.in -run.py -natural_calamities.py -texts_spa.py -proceduralFlow.py -threades.py -chat.py -NEWS -activity/activity.svg -activity/activity-foodforce2.svg -activity/activity.info -olpcgames/COPYING -olpcgames/svgsprite.py -olpcgames/_version.pyc -olpcgames/activity.py -olpcgames/activity.pyc -olpcgames/camera.py -olpcgames/util.py -olpcgames/eventwrap.py -olpcgames/pangofont.py -olpcgames/_gtkmain.py -olpcgames/__init__.py -olpcgames/eventwrap.pyc -olpcgames/textsprite.py -olpcgames/buildmanifest.py -olpcgames/mesh.pyc -olpcgames/canvas.py -olpcgames/gtkEvent.pyc -olpcgames/gtkEvent.py -olpcgames/_version.py -olpcgames/mesh.py -olpcgames/__init__.pyc -olpcgames/canvas.pyc -olpcgames/pausescreen.py -olpcgames/_cairoimage.py -olpcgames/video.py -olpcgames/dbusproxy.py -olpcgames/util.pyc -olpcgames/data/sleeping_svg.py -olpcgames/data/__init__.py -olpcgames/data/sleeping.svg -data/prosper.png -data/dot_fountain.png -data/WFPLOGO.png -data/top.png -data/Thumbs.db -data/drought.png -data/hospital_upgrade0.png -data/hospital_upgrade1.png -data/hospital_upgrade2.png -data/hospital_upgrade3.png -data/logo.png -data/Happy.png -data/house_upgrade0.png -data/house_upgrade1.png -data/house_upgrade2.png -data/house_upgrade3.png -data/People.png -data/dot_school.png -data/market.png -data/Wfpwork.png -data/dot_farm.png -data/tileset.png -data/farm.png -data/map.png -data/dot_hospital.png -data/dot_house.png -data/earthquake1.png -data/earthquake2.png -data/earthquake3.png -data/fountain.png -data/dot_market.png -data/dot_workshop.png -data/school_upgrade0.png -data/school_upgrade1.png -data/school_upgrade2.png -data/school_upgrade3.png -data/soundtrack.ogg -data/tileset2.png -data/workshop_upgrade0.png -data/workshop_upgrade1.png -data/workshop_upgrade2.png -data/workshop_upgrade3.png -art/optionbox_green.png -art/shadebutton.png -art/panch.png -art/son.png -art/villager.png -art/button.png -art/Thumbs.db -art/checkbox.png -art/button_green.png -art/ff2_cursor.xbm -art/imageBox.png -art/kamat.png -art/chatBox.png -art/ff2_cursor-mask.xbm -art/priest.png -art/closebutton.png -art/combobox.png -art/sukhdev.png -art/optionbox.png -art/ajmal.png -storyboards/Haiti Earthquake/earthquake.ogg -storyboards/Haiti Earthquake/storyboard.pkl -storyboards/Haiti Earthquake/storyboard_eng.pkl -storyboards/Haiti Earthquake/storyboard_spa.pkl -storyboards/Haiti Earthquake/intro_image.png -storyboards/Haiti Earthquake/init_fac.pkl -storyboards/Haiti Earthquake/soundtrack.ogg -storyboards/Haiti Earthquake/images/character images/ragnar.png -storyboards/Haiti Earthquake/images/character images/gilbert.png -storyboards/Haiti Earthquake/images/character images/stevenson.png -storyboards/Haiti Earthquake/images/character images/john.png -storyboards/Haiti Earthquake/images/character images/tony.png -storyboards/Haiti Earthquake/images/chat images/haiti.png -storyboards/Haiti Earthquake/images/chat images/earthquake_st.png -storyboards/Haiti Earthquake/data/data.pkl -storyboards/Haiti Earthquake/data/data1.pkl -storyboards/Haiti Earthquake/data/data2.pkl -storyboards/Haiti Earthquake/data/data3.pkl -storyboards/Haiti Earthquake/data/data4.pkl -storyboards/Haiti Earthquake/data/data5.pkl -storyboards/Haiti Earthquake/data/data6.pkl -storyboards/Gokul An Indian Village/storyboard.pkl -storyboards/Gokul An Indian Village/storyboard_eng.pkl -storyboards/Gokul An Indian Village/storyboard_spa.pkl -storyboards/Gokul An Indian Village/intro_image.png -storyboards/Gokul An Indian Village/init_fac.pkl -storyboards/Gokul An Indian Village/soundtrack.ogg -storyboards/Gokul An Indian Village/images/character images/panch.png -storyboards/Gokul An Indian Village/images/character images/son.png -storyboards/Gokul An Indian Village/images/character images/villager.png -storyboards/Gokul An Indian Village/images/character images/kamat.png -storyboards/Gokul An Indian Village/images/character images/priest.png -storyboards/Gokul An Indian Village/images/character images/sukhdev.png -storyboards/Gokul An Indian Village/images/character images/ajmal.png -storyboards/Gokul An Indian Village/images/chat images/prosper.png -storyboards/Gokul An Indian Village/images/chat images/drought.png -storyboards/Gokul An Indian Village/images/chat images/Happy.png -storyboards/Gokul An Indian Village/images/chat images/Wfpwork.png -storyboards/Gokul An Indian Village/images/chat images/earthquake_st.png -storyboards/Gokul An Indian Village/images/chat images/earthquake1.png -storyboards/Gokul An Indian Village/images/chat images/earthquake2.png -storyboards/Gokul An Indian Village/images/chat images/earthquake3.png -storyboards/Gokul An Indian Village/data/data1.pkl -storyboards/Gokul An Indian Village/data/data2.pkl -storyboards/Gokul An Indian Village/data/data3.pkl -storyboards/Gokul An Indian Village/data/data4.pkl -storyboards/Gokul An Indian Village/data/data5.pkl -storyboards/Gokul An Indian Village/data/data6.pkl -storyboards/Gokul An Indian Village/data/data7.pkl -storyboards/Gokul An Indian Village/data/data8.pkl -storyboards/Gokul An Indian Village/data/data9.pkl -sounds/soundtrack.ogg -sounds/effects/build1.ogg -sounds/effects/build2.ogg -sounds/effects/build3.ogg -po/POTFILES.in \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100755 index f197a9d..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,9 +0,0 @@ -include *.* NEWS README -recursive-include activity *.svg *.info -include olpcgames/COPYING -recursive-include olpcgames *.* -recursive-include data *.* -recursive-include art *.* -recursive-include storyboards * -recursive-include sounds * -recursive-include po *.* diff --git a/activity/activity.info b/activity/activity.info index 5300dcc..c20e3a6 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -2,6 +2,6 @@ name = FoodForce2 activity_version = 5 host_version = 1 -service_name = org.laptop.community.FoodForce2 +bundle_id = org.laptop.community.FoodForce2 icon = activity-foodforce2 exec = sugar-activity activity.Activity diff --git a/game_sharing.py b/game_sharing.py index a251447..5a6f858 100755 --- a/game_sharing.py +++ b/game_sharing.py @@ -19,7 +19,7 @@ # import olpcgames.mesh as mesh -from sugar.presence import presenceservice +from sugar3.presence import presenceservice import sys import types import pygame diff --git a/olpc-setup.py b/olpc-setup.py index 668540c..c768402 100755 --- a/olpc-setup.py +++ b/olpc-setup.py @@ -1,4 +1,4 @@ #!/usr/bin/env python -from sugar.activity import bundlebuilder +from sugar3.activity import bundlebuilder if __name__ == "__main__": bundlebuilder.start("%(name)s") diff --git a/olpcgames/activity.py b/olpcgames/activity.py index 538ba13..d70719c 100644 --- a/olpcgames/activity.py +++ b/olpcgames/activity.py @@ -25,14 +25,19 @@ class PygameActivity(activity.Activity): log = logging.getLogger( 'olpcgames.activity' ) ##log.setLevel( logging.DEBUG ) -import pygtk -pygtk.require('2.0') -import gtk -import gtk.gdk + +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk +from gi.repository import Gdk import os -from sugar.activity import activity -from sugar.graphics import style +from sugar3.activity import activity +from sugar3.graphics.toolbarbox import ToolbarBox +from sugar3.activity.widgets import ActivityToolbarButton +from sugar3.graphics.toolbutton import ToolButton +from sugar3.activity.widgets import StopButton +from sugar3.graphics import style from olpcgames.canvas import PygameCanvas from olpcgames import mesh, util @@ -96,7 +101,7 @@ def __init__(self, handle): super(PygameActivity, self).__init__(handle) self.make_global() if self.game_size is None: - width,height = gtk.gdk.screen_width(), gtk.gdk.screen_height() + width,height = Gdk.Screen.width(), Gdk.Screen.height() log.info( 'Total screen size: %s %s', width,height) # for now just fudge the toolbar size... self.game_size = width, height - (1*style.GRID_CELL_SIZE) @@ -119,9 +124,25 @@ def build_toolbar( self ): This is a customisation point for those games which want to provide custom toolbars when running under Sugar. """ - toolbar = activity.ActivityToolbar(self) - toolbar.show() - self.set_toolbox(toolbar) + toolbar_box = ToolbarBox() + self.set_toolbar_box(toolbar_box) + toolbar_box.show() + + activity_button = ActivityToolbarButton(self) + toolbar_box.toolbar.insert(activity_button, -1) + activity_button.show() + + separator = Gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_expand(True) + toolbar_box.toolbar.insert(separator, -1) + separator.show() + + stop_button = StopButton(self) + toolbar_box.toolbar.insert(stop_button, -1) + stop_button.show() + + self.show_all() def shared_cb(*args, **kwargs): log.info( 'shared: %s, %s', args, kwargs ) try: @@ -151,8 +172,8 @@ def joined_cb(*args, **kwargs): # launched from Neighborhood) joined_cb() - toolbar.title.unset_flags(gtk.CAN_FOCUS) - return toolbar + #toolbar_box.title.set_can_focus(False) + return toolbar_box PYGAME_CANVAS_CLASS = PygameCanvas def build_canvas( self ): @@ -167,11 +188,11 @@ def build_canvas( self ): self._pgc.connect_game(self.game_handler or self.game_name) # XXX Bad coder, do not hide in a widely subclassed operation # map signal does not appear to show up on socket instances - gtk.gdk.threads_init() + Gdk.threads_init() return self._pgc else: import hippo - self._drawarea = gtk.DrawingArea() + self._drawarea = Gtk.DrawingArea() canvas = hippo.Canvas() canvas.grab_focus() self.set_canvas(canvas) diff --git a/olpcgames/buildmanifest.py b/olpcgames/buildmanifest.py deleted file mode 100755 index 899433b..0000000 --- a/olpcgames/buildmanifest.py +++ /dev/null @@ -1,33 +0,0 @@ -#! /usr/bin/env python -"""Stupid little script to automate generation of MANIFEST and po/POTFILES.in - -Really this should have been handled by using distutils, but oh well, -distutils is a hoary beast and I can't fault people for not wanting to -spend days spelunking around inside it to find the solutions... -""" -from distutils.filelist import FileList -import os - -def fileList( template ): - """Produce a formatted file-list for storing in a file""" - files = FileList() - for line in filter(None,template.splitlines()): - files.process_template_line( line ) - content = '\n'.join( files.files ) - return content - - -def main( ): - """Do the quicky finding of files for our manifests""" - content = fileList( open('MANIFEST.in').read() ) - open( 'MANIFEST','w').write( content ) - - content = fileList( open('POTFILES.in').read() ) - try: - os.makedirs( 'po' ) - except OSError, err: - pass - open( os.path.join('po','POTFILES.in'), 'w').write( content ) - -if __name__ == "__main__": - main() diff --git a/olpcgames/canvas.py b/olpcgames/canvas.py index 2583827..ff08610 100644 --- a/olpcgames/canvas.py +++ b/olpcgames/canvas.py @@ -7,17 +7,18 @@ import threading from pprint import pprint -import pygtk -pygtk.require('2.0') -import gtk -import gobject +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk +from gi.repository import Gdk +from gi.repository import GObject import pygame from olpcgames import gtkEvent, util __all__ = ['PygameCanvas'] -class PygameCanvas(gtk.Layout): +class PygameCanvas(Gtk.Layout): """Canvas providing bridge methods to run Pygame in GTK The PygameCanvas creates a secondary thread in which the Pygame instance will @@ -40,12 +41,12 @@ def __init__(self, width, height): # Build the main widget log.info( 'Creating the pygame canvas' ) super(PygameCanvas,self).__init__() - self.set_flags(gtk.CAN_FOCUS) + self.set_can_focus(True) # Build the sub-widgets - self._align = gtk.Alignment(0.5, 0.5) - self._inner_evb = gtk.EventBox() - self._socket = gtk.Socket() + self._align = Gtk.Alignment.new(0.5, 0.5, 0.0, 0.0) + self._inner_evb = Gtk.EventBox() + self._socket = Gtk.Socket() # Add internal widgets @@ -106,12 +107,12 @@ def _start(self, fn): import olpcgames olpcgames.widget = olpcgames.WIDGET = self try: - import sugar.activity.activity,os + import sugar3.activity.activity,os except ImportError, err: log.info( """Running outside Sugar""" ) else: try: - os.chdir(sugar.activity.activity.get_bundle_path()) + os.chdir(sugar3.activity.activity.get_bundle_path()) except KeyError, err: pass @@ -134,16 +135,16 @@ def _start(self, fn): eventwrap.clear() finally: log.info( 'Main function finished, calling main_quit' ) - gtk.main_quit() + Gtk.main_quit() source_object_id = None def view_source(self): """Implement the 'view source' key by saving datastore, and then telling the Journal to view it.""" if self.source_object_id is None: - from sugar import profile - from sugar.datastore import datastore - from sugar.activity.activity import get_bundle_name, get_bundle_path + from sugar3 import profile + from sugar3.datastore import datastore + from sugar3.activity.activity import get_bundle_name, get_bundle_path from gettext import gettext as _ import os.path jobject = datastore.create() @@ -165,7 +166,7 @@ def journal_show_object(self, object_id): """Invoke journal_show_object from sugar.activity.activity if it exists.""" try: - from sugar.activity.activity import show_object_in_journal + from sugar3.activity.activity import show_object_in_journal show_object_in_journal(object_id) except ImportError: pass # no love from sugar. diff --git a/olpcgames/data/sleeping.svg b/olpcgames/data/sleeping.svg deleted file mode 100755 index 2c7ef50..0000000 --- a/olpcgames/data/sleeping.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/olpcgames/eventwrap.py b/olpcgames/eventwrap.py index 402109c..24baab6 100644 --- a/olpcgames/eventwrap.py +++ b/olpcgames/eventwrap.py @@ -19,7 +19,7 @@ release a few more resources, then a bit more... """ import pygame -import gtk +from gi.repository import Gtk import Queue import thread, threading import logging diff --git a/olpcgames/gtkEvent.py b/olpcgames/gtkEvent.py index 6b20102..fc636fe 100644 --- a/olpcgames/gtkEvent.py +++ b/olpcgames/gtkEvent.py @@ -1,8 +1,9 @@ """gtkEvent.py: translate GTK events into Pygame events.""" -import pygtk -pygtk.require('2.0') -import gtk -import gobject +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk +from gi.repository import Gdk +from gi.repository import GObject import pygame from olpcgames import eventwrap import logging @@ -62,16 +63,17 @@ def __init__(self, mainwindow, mouselistener=None): # Need to set our X event masks so we see mouse motion and stuff -- mainwindow.set_events( - gtk.gdk.KEY_PRESS_MASK | \ - gtk.gdk.KEY_RELEASE_MASK \ + Gdk.EventMask.KEY_PRESS_MASK | \ + Gdk.EventMask.KEY_RELEASE_MASK | \ + Gdk.EventMask.VISIBILITY_NOTIFY_MASK ) self._inner_evb.set_events( - gtk.gdk.POINTER_MOTION_MASK | \ - gtk.gdk.POINTER_MOTION_HINT_MASK | \ - gtk.gdk.BUTTON_MOTION_MASK | \ - gtk.gdk.BUTTON_PRESS_MASK | \ - gtk.gdk.BUTTON_RELEASE_MASK + Gdk.EventMask.POINTER_MOTION_MASK | \ + Gdk.EventMask.POINTER_MOTION_HINT_MASK | \ + Gdk.EventMask.BUTTON_MOTION_MASK | \ + Gdk.EventMask.BUTTON_PRESS_MASK | \ + Gdk.EventMask.BUTTON_RELEASE_MASK ) # Callback functions to link the event systems @@ -83,8 +85,8 @@ def __init__(self, mainwindow, mouselistener=None): self._inner_evb.connect('motion-notify-event', self._mousemove) # You might need to do this - mainwindow.set_flags(gtk.CAN_FOCUS) - self._inner_evb.set_flags(gtk.CAN_FOCUS) + mainwindow.set_can_focus(True) + self._inner_evb.set_can_focus(True) # Internal data self.__stopped = False @@ -98,7 +100,7 @@ def __init__(self, mainwindow, mouselistener=None): self.__tick_id = None #print "translator initialized" - self._inner_evb.connect( 'expose-event', self.do_expose_event ) + self._inner_evb.connect( 'draw', self.do_expose_event ) # screen = gtk.gdk.screen_get_default() # screen.connect( 'size-changed', self.do_resize_event ) self._inner_evb.connect( 'configure-event', self.do_resize_event ) @@ -168,7 +170,7 @@ def _keymods(self): def _keyevent(self, widget, event, type): - key = gtk.gdk.keyval_name(event.keyval) + key = Gdk.keyval_name(event.keyval) if key is None: # No idea what this key is. return False @@ -192,7 +194,7 @@ def _keyevent(self, widget, event, type): self.__keystate[keycode] = type == pygame.KEYDOWN if type == pygame.KEYUP: mod = self._keymods() - ukey = unichr(gtk.gdk.keyval_to_unicode(event.keyval)) + ukey = unichr(Gdk.keyval_to_unicode(event.keyval)) if ukey == '\000': ukey = '' evt = eventwrap.Event(type, key=keycode, unicode=ukey, mod=mod) @@ -229,7 +231,7 @@ def _mousemove(self, widget, event): # if this is a hint, then let's get all the necessary # information, if not it's all we need. if event.is_hint: - x, y, state = event.window.get_pointer() + win, x, y, state = event.window.get_device_position(event.device) else: x = event.x y = event.y @@ -240,9 +242,9 @@ def _mousemove(self, widget, event): self.__mouse_pos = (x, y) self.__button_state = [ - state & gtk.gdk.BUTTON1_MASK and 1 or 0, - state & gtk.gdk.BUTTON2_MASK and 1 or 0, - state & gtk.gdk.BUTTON3_MASK and 1 or 0, + state & Gdk.ModifierType.BUTTON1_MASK and 1 or 0, + state & Gdk.ModifierType.BUTTON2_MASK and 1 or 0, + state & Gdk.ModifierType.BUTTON3_MASK and 1 or 0, ] evt = eventwrap.Event(pygame.MOUSEMOTION, diff --git a/olpcgames/mesh.py b/olpcgames/mesh.py index 1ad4c43..ba1e88a 100644 --- a/olpcgames/mesh.py +++ b/olpcgames/mesh.py @@ -121,7 +121,7 @@ import olpcgames from olpcgames.util import get_traceback try: - from sugar.presence.tubeconn import TubeConnection + from sugar3.presence.tubeconn import TubeConnection except ImportError, err: TubeConnection = object try: @@ -136,7 +136,7 @@ telepathy = None try: - import sugar.presence.presenceservice + import sugar3.presence.presenceservice except Exception, err: pass import pygame.event as PEvent @@ -416,7 +416,7 @@ def _get_presence_service( ): log.debug( """About to import sugar.presence.presenceservice""" ) try: log.debug( 'About to retrieve presence service instance' ) - pservice = sugar.presence.presenceservice.get_instance() + pservice = sugar3.presence.presenceservice.get_instance() try: log.debug( ' Retrieved presence service instance: %s', pservice ) name, path = pservice.get_preferred_connection() diff --git a/olpcgames/pangofont.py b/olpcgames/pangofont.py index 441dfd1..2edf75c 100644 --- a/olpcgames/pangofont.py +++ b/olpcgames/pangofont.py @@ -47,7 +47,8 @@ import logging import pangocairo import pygame.rect, pygame.image -import gtk +from gi.repository import Gtk +from gi.repository import Gdk import struct from pygame import surface from pygame.font import Font @@ -202,7 +203,7 @@ def get_underline( self ): def _createLayout( self, text ): """Produces a Pango layout describing this text in this font""" # create layout - layout = pango.Layout(gtk.gdk.pango_context_get()) + layout = pango.Layout(Gdk.pango_context_get()) layout.set_font_description(self.fd) if self.underline: attrs = layout.get_attributes() diff --git a/olpcgames/util.py b/olpcgames/util.py index 49a23b0..a9c7289 100644 --- a/olpcgames/util.py +++ b/olpcgames/util.py @@ -8,7 +8,7 @@ NON_SUGAR_ROOT = '~/.sugar/default/olpcgames' try: - from sugar.activity.activity import get_bundle_path as _get_bundle_path + from sugar3.activity.activity import get_bundle_path as _get_bundle_path def get_bundle_path( ): """Retrieve bundle path from activity with fix for silly registration bug""" path = _get_bundle_path() diff --git a/olpcgames/video.py b/olpcgames/video.py index 032aa13..ce66a5a 100644 --- a/olpcgames/video.py +++ b/olpcgames/video.py @@ -14,10 +14,13 @@ import olpcgames from olpcgames import _gtkmain -import pygtk -pygtk.require('2.0') -import gtk -import gst +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk +from gi.repository import Gdk +gi.require_version('Gst', '1.0') +from gi.repository import Gst +Gst.init(None) class VideoWidget(gtk.DrawingArea): """Widget to render GStreamer video over our Pygame Canvas @@ -102,7 +105,7 @@ def __init__(self, videowidget, pipe_desc=pipe_desc): self._playing = False self._videowidget = videowidget - self._pipeline = gst.parse_launch(pipe_desc) + self._pipeline = Gst.parse_launch(pipe_desc) bus = self._pipeline.get_bus() bus.enable_sync_message_emission() @@ -113,7 +116,7 @@ def __init__(self, videowidget, pipe_desc=pipe_desc): def play(self): log.info( 'Play' ) if self._playing == False: - self._pipeline.set_state(gst.STATE_PLAYING) + self._pipeline.set_state(Gst.State.PLAYING) self._playing = True def pause(self): @@ -121,11 +124,11 @@ def pause(self): if self._playing == True: if self._synchronized: log.debug( ' pause already sync\'d' ) - self._pipeline.set_state(gst.STATE_PAUSED) + self._pipeline.set_state(Gst.State.PAUSED) self._playing = False def stop( self ): """Stop all playback""" - self._pipeline.set_state( gst.STATE_NULL ) + self._pipeline.set_state(Gst.State.NULL) def on_sync_message(self, bus, message): log.info( 'Sync: %s', message ) @@ -138,7 +141,7 @@ def on_sync_message(self, bus, message): def on_message(self, bus, message): log.info( 'Message: %s', message ) t = message.type - if t == gst.MESSAGE_ERROR: + if t == Gst.MessageType.ERROR: err, debug = message.parse_error() log.warn("Video error: (%s) %s" ,err, debug) self._playing = False diff --git a/setup.py b/setup.py index c22971f..b2c9f0e 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ #!/usr/bin/env python -from sugar.activity import bundlebuilder +from sugar3.activity import bundlebuilder if __name__ == "__main__": bundlebuilder.start("FoodForce2")