From 2974e612af00a367ab7c7f465a5f4b2363e47045 Mon Sep 17 00:00:00 2001 From: The-UltimateGamer <2357931342@qq.com> Date: Wed, 26 Aug 2020 18:50:17 +0800 Subject: [PATCH 1/3] Update README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eb2558d..98b0c7e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ ## Overview -Pygame GUI library, named after the creator of Python, Guido van Rossum, believing that this library will be the first to implement a GUI completely compatible with pygame. Included is a "mini-OS" to show off all the elements. +Pygame GUI library, named after the creator of Python, Guido van Rossum, believing that this library will be the first to implement a GUI completely compatible with pygame. Included is a "mini-OS" to show off all the elements. That "mini-OS" is called *Winnux 58* (**Win**dows 9**5** + **Win**dows 9**8** + Li**nux**). + +~~i kinda hate this name now~~ ## Features From 3634fd248700fc70ab47ee09adaccf77bdcd99c2 Mon Sep 17 00:00:00 2001 From: The-UltimateGamer <2357931342@qq.com> Date: Wed, 26 Aug 2020 19:29:50 +0800 Subject: [PATCH 2/3] FINALLYgit add .! --- README.md | 35 +++++++++++++++++++++++++++++------ README.pdf | Bin 0 -> 54730 bytes wiki/FAQ.md | 14 ++++++++++++++ wiki/FAQ.pdf | Bin 0 -> 35320 bytes 4 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 README.pdf create mode 100644 wiki/FAQ.md create mode 100644 wiki/FAQ.pdf diff --git a/README.md b/README.md index fa53c42..66879cb 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,32 @@ Please check our [wiki](https://github.com/The-UltimateGamer/GUIdo/wiki) for mor ## NEVER TRY TO MOUNT `files.img` ## Directory structure: -/home/ -- test.txt -(Note: this is created for the testing of the `cat` command.) -/sys/ -- kernel.py -(This is where our OS boots.) +- `/home/` + + - test.txt + (Note: this is created for the testing of the `cat` command.) + +- `/sys/` + + - kernel.py + (This is where our OS boots. **DO NOT TRY TO DELETE IT.**) + +## License Notice + +Winnux 58 is brought to you under the [GNU AGPL-3.0 License](https://www.gnu.org/licenses/agpl-3.0.en.html). + +OS emulator using pygame. +Copyright (C) 2020 The-UltimateGamer & pythonleo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . \ No newline at end of file diff --git a/README.pdf b/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2b720032a0d1f7a845b48e7f28d836b9c1bf95b9 GIT binary patch literal 54730 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%0D}Mk=xOF6)ROzTb$1NwUBq8S?TI0kP`0&eIe7 zmfnh}(aQIQr3de>kBleDY!>l2D9(5;joj_dZI6L)2@dHJ-*N?%BqIaQbBP~|p`JlU zZ-FTvrB(&=gO*HUKW}PmAHdm;V2VjC*OKlmqB73SSsBW)Jo@?MVD)%uV${(D90;ie zuv_sJP?=hyk-SL;%5=rGO&B5^lW&U&A-bL%#D)moDS6u!oi8tVzlU>cj6q~f!vbU@ zP;ti}XSr0I2RSjBS0Q|2>PtOyq2`XAQ^y8j7}3>#<6MV&8nQ*#3T!U_Iqr{ zNahE%!5I=G$L%=@L19>shX=gyf=~ED1#{*KQ1B-CgW!jh9l@_z$%1z&5@gI@=vtN&sOHY9*VbJ=Nm0ZE60Jd*X24-1h*C922I0tt?HFW8ZD(dyRCLfWv%MW zkcUbgiK{I7c9d)<^(L9L+RP)3FHQ-eWjec+c1dlo^2x3{@q-w=brrg^Ow&D74iJsq zyuZ{dkN@gR?LRxFl-=eo@zwj+i!Xt!MG?E%5Q}E3^!u&q3a(|4&V-^cIv`E29#!g? zVdhY2LYn6*Abt#&*d6?XsY=?lGOT=$)3abT=#5dsMaYWL`abK#_8>vZWD$09NxazA z0jc%b{|iU=A4z#*Vb2MKDl;V4q6=#pI<%Xo@@1CpKkuj*klCgV3cyx;N&S9qp<*2} zb3GhSy3_8Amz{nU`LbPai(4o8v6S8VIg1%%#mh+bT7BgM{fcG}GbFkyd1*q-Zs~?Y zzsG!6x*E{_yhA7#`YuUc)9}<+wjJN1G9PPYb%CZ|JyDNJ=WyuAF8V$h?1nnfR9V-f zHR{CLdijH#k0D=mPE$dBRf}@jnKoaI$p0R$QX?M$H>z`xOS=mI#k0HVh?hogSdo=0E_zZ595AaA%wp zP}zVt$f^W@Qpby&d-t6TMOKJ0kaL)KkaFi@Z?@DDrhJHXkRiH&#}w1%Zc{FPx0V3Q zFdiJ&#Iv7U-u+Vmb=Ye47h-jJtkMo(t34X}v*dEI#|S674`QyzuXsz`buc zNJt5@QxelhQ+-)6`czit!4a8Q4Q%l#qRe|)N6dW5NxFDU&QCsUBhRCm3ReW>W4a|V zDwq3V1wGelP5{ZoKu>+D^Ag}LC%sBAIwvazoK(+so}&Nig@pHwg#U#EGe#%krn2VY zX)~w3ko&0*3yiHntZ`Oi;9`jq2*{qZFcHfT0WmqWZxEN(^^oee|^ULjk zpWK{~sUin{px+2o}L4=^#Ld^(67eQ8UCofc*97zpJrN=ZQ*l3g%K>1~J*_e|< z4o?tX$nr=(Hz+y*&j5-n{xyp_tq=d~y`6F}~b=zyr6g^McNJT7(tg39g zwcD~>jQH7n3|g+n$PTJ+7*pS3Ff581G5kQW;KACj<5cE0IqoAY>6Kf}X>I3}-x)Kh z{+vzuPv)jmyNkl6TLrzzs%7M#ozQNfHZcXlQ(tr&q1?^gJboU%Q9lqd)RA1oKnNcJ z{$$30ienc`tk@ukmk?!@)$u7n7C89$CbboD^p|i%z)1)j_Xrdl8PglN5bk>644iIr zhq4V`SjpSEtWb%Iz*1BiGK7|k))IKYrl7tNC7PCsd*i0~k9;U|al;=^?HxRDmp3ad zp`bE^6EQ=udT_y5N_t!cb-~wL@n=fZ(bA_$Bv^!u{IX1(4&Wyo=vf4#Y!zbt>+DCX zStStW?$7Q>cXOE?m4R!#Iv$a?5ijv_x8VZgSgju8huH?&)eqcM{AOr)kpJIuwU@sd73;vXYMt6hA$~y(2q5m3FhH zp`i=XmijuZuFBtfHU4XxO83ZpO`YB9CaEoAL2NY##F+Ym_FS4^)aYKzoIWrFqHS+R z=GVSdPb1ROvH{&gg+7)7sWTjqFi2h4P#HK1-$Q}4UG2gxi$I0X*1<-hqHU&8)~4S` zg_9hj%M;!MsdOnAenT}r%)Oo5vHPYYrdIs@AmLY`?l-XemN~7mDt?SxU=IjP>y zkx}gz`OrxO(>pMdb)`t8j)Gz4236Eb)O2PT!mPO&s{u%>PVn%wl->N@_?mLpTBcot z79kzaF3zVaN{!%EDr!#JQBFH7WE>a6Bp{NuOa@(G0{!R649m<^uOXL$Q0dXJ@6)4R z(ptJVZVIFK5i70y@xcTUDKqAD^8IkJ)P?jHPR3`3YX+yfiRCZ4{4HPfc9;nCf|>Pn z8Tpd*W>~hHPqa8)EO*LJvFsitrqvdc_fEVQ@e1k+)+4`lD0C9buoIyT859zJ2NFmt zjARp4OEefF?Gc7+fj?3lCKE|DzGbS-J86d2;kPzjbr7rF$nIwXcSU1|KP6`-V}25e z$Xmo%q$Eu;N1GHm9vbz})mDKHHY3Zf=AeKQ96pP7g_FDU{Ph)4d-QYP=Yia;_`UXG zXw+*P9=a&qFRQd{X!{s$^P_+^{RxSgFW`wmvRkzJ%OjJ5GP3r?wT5va0f^6kaG{ODMMCy@`FS3^LjLZmI zR&lHKPpBeT!WB78Pk<)Ho6h2Bd&S;@FzT@Z7bVeYR^|A17F! znO2SnkUqVrJ#X;rk|$^@f04<@D19=wa*ZWw@)CC;NAJT^bX)rqch3_^PV;em{UR#m z$L0&L#Xr>7AB%6$*=D`}oO<|k|26uC&)!eI6yE;b>&r@C@MFv}jr-PeR{IV~Z;KB1 zvX2koy6^BZ^E`Wm%RRvFG&Gx^|13I%C>#0xhiGt*Yw~8NqI=AbF-2XzkQp0>Yp`4mTTM&~G|zGk59=ITysraDwqv^WdGqM;vMvpr$M|V; zMH>5Cxhu<1!uEB>SEIXiM$UCUY;+SdUPx3DDhMg}sq7_vRCSVB4_qY<0ae!w;(NRm zagEnA+>i|saR9ZvYo}+WJ|V!z$G2mSG%I4%WdhO%6Q|xy5APUjFLHd9K3B~?AuLv@ z;a}vKm&h}HkhcX%aEvm$P~AikO&}QARYoo)ZD+w#s4aX=hyWTzD?IU1x7>MQ(Lei* zkq3XO$!3&Fbw-|(YSFf2^e*sr?u=e+cp0oa7SoD?J<2p0s|J0_hq8%ngXQy;UWXyUf0xx2iW8;#Os2at0@|6?Rw^f{<)c9`-N0?W z$_(;5mn*W?G&WuV#Dvqfg#JWO81-o_T5WjKn=CY>go>VohA%;KpRx=BR-dcTZ>v^R zb(IJ4)bqM-KO?*|h9x2y7f9UY<)QQ1HENqi0F7bnX6*&bho0Jqds67GEMm3vTH~?t ziX<%a-2*Tsbe+k7nz-rBIR{a7Y=v~(WU|cLSGN6vw`%_( zx&HNeO;#h}jwrdD{cs%DRj7*hm#nV=Hs`dQA8tYp6YO}H@dLv4;S|Hf!)6akS(?$F zzi-1;jJh<2%@-E0kf5aAw8ZBfJiOd(SUf3n8?08(@8nIcTkpQcxdbFk{G`D9PMw<} z#ppyLbKu~v7LV?N)mohK^4e(57$D*KQF2Cw3bxofB3lji2jt7)#b>1Dau&NXczu&X z5D~hb*(sadGbX7ys50Y*8n^mPV%+n}xr$QB=*kS;u$CHB2c3}6XSKd|W2Y^VN`v2a zjW0p_oN%_mFgd$)IjNhD>+A0n%=P%?k~90tl*UBJg=5oYbN;&7e!4ZRZ=%T2ONsoP zaUlrH&;0oP+|+l^ZwPu~smoreyxm0tPL!sdUadTTs@#|rytEi6w+(eF#9(JX5pX((He_(+2VG2c&apEp`P=oOwH$_a% z)Q6(3M@n_z!qi8^6V+@y!sZJQt0akR|CxaMeQ!-DBdcrNmGKHM3D${zsL?@@m%Q4u z9k%#FMnPO#=BD5m8w1HadxOe%{-pc}(jJt+@vHK+Cm49IRE2zUrx2M8AL3297I_Rq z(Xo#H4+OcFW<&}Uh0kVUhCd=Y8hDV>gfa{u@gc2djSSQuuZ?3W7xzD8!|0!Z_hgn0 z_>5LSlT{dY@_98&W=w5`zJT~ zyZ856sV*nAhJVJi)cmf8DgAwJ`ttMVFcfWt_^p0>XuI&YZimg!Q4BCkRmwmWRb* z*vLIU#-Xl$3F70BBPi+Dko)58qJYK|iUSUr`PZYaQQ?3tqy*DVZBUild^Mv9)d9D^ z6d13gK`>mzLVfn0U(hvwk+1sPM`h4{Ir{0IpUJR>#&f8Bw*_AO_TD#Z? ze9e4K8^%wha%dJca^NL2NRZ*)B1OQs-bIWQSXQ)zarb-rCkLhQc!*Z)_nVz?H2s+B zgA{BW;Q4#L=zt;Sy6MghwHy8|<7AlfBBRklD25zkw>t#HDTXRvCIjful?-PZldE9C z{19>J-Lj$#6tww?z(KEi4?eU`(di*e&(WY zsmaT&B4~V+Oy|VO4#{Ge&r+#%+j+ZI`vRJl&TwLlLQ%y(BnU$2DW@glBj z6t*yWODZN*CG5b6{vd-uhE3?MX@ctL-kX5q<~p9Jgru}~XNI6kAMwx76(Zo|w@7&N z3qOWkt;syFx_``mw*GXAQ%A|Y_#LZ%aYSWAdv5At2ToRdA0%tHzpReb2`fv@a24ah z5OcaCg~Pd@vi`y6mkIz=WiOv|P_u)6-;KKKo{VtWxxdTq%HXS-hw&>j@=xIQpRCb; z@D55w<`Aq`1?+6^>SO|Tex+R?ES8BX7(&Yi9q5aVi;|JkU#$>= z>>sxP2ubyqGylaiy*~ewk^BcY@)|_v*B)IV1BI|@vX-V0Xa2IT_cwm(b$I_xPt3^0 z$j09M)e@wG|1|U(g?}pi1C0j(cp#8JB!2$`U=Lvi*!~XKpYmFJsLv)@=gj-=3p(2m z$~%q!B;)F(+;O}Hz8xZq%@Bs!`FtOox@U|9i-q{+Tfp2#{zRk&!_v4TFOz!ijN{Q~ zR(wViYq}Y(ZLQ826Ot0uBkY^$qvE&(?dO#Y{AxdguE(dJzZ}oK#}>USI_5umS2WBo zWk9`wQZYo;I?$O^R(q<@bSt3P5%77cd><1Xp#K4-v$?Elov{^V`n=zd;f|D$xW(*Y zKOaLs>^BNj==6NAq||prKd9+*O#2SA)j5${Mo;4J)Z5oL6T;=|@pU_RHbj^Ppx}T+ z{%u?+zoi^L_V&k&W#rMe8UrYRZl_((Y|SU3foyRvd+2KIo*Mg@YUfla;cC)>$YYZp zSWACo|ES+O%AvCqM3P*J6`w=`PMT=_OsBsOP8Xug!+c15Df)ipwnuvb^~=`>-~0`h z!5tMo<+~_U6A&`vI0zLXB{9B_#1)`mgb9<5V8?N0lt&&%s!TjTLRz?@6r}YA<00(SM4#8v!O-eU;dwUZc+^S2X2z|U=$1yviox*?0V9x-4Yo$fvNrKPPXe#9; z)xtI(h)P))E#k<1OYyPQe>sqqlt?2;gVay3XW#l6*M0XbjiNwcA)up?9A=~VELI+B zH7trX`|gO!G0>$+qNbxrUq$@3d`-WwsU>c$#)t;Lm!MTm?PHBdw5|}2{ec+4P;;Ly z%`93f3X0*1O?M%j&Jn+*Y38Vo_zgT;l~Ff0tRxXQlEF6owyeT-GStf-Sd4?msH|Gx zMFQu_E3ICvipDGLh=xnz7P$@A6}2w788GYnIOkU)G>5Ieh(8uxhj#g(Fq>AjCw*(R z)+kiCIgBs^Q_?B&vq&vt+5CaszdOFzCq@iwn-rE=iuZY~FHQ@Ke1}^Qen~BjH>qAK zsQ!VX_}GJ={PPzN1Aa~rN8?8<5*42ntLRwvudTTp5tP)0*$bzd6ip1J`S#(AO7XI> z^;~6Vjq1utL!ZONK*1YTlF0gJ7`*2F^?ta7N=(JXGY-HHv(?_Bp|cCh150_II}yu% z#|G*qRu#*U_Wg1qOjwctnM|jq9r|J|HMUR?YPMuj{Z@gs@^P0V(TQGbNG6nYDyGYM z2vS+u#VL!x@huNmVLCLRDD^>13a&F#6z1C3M9flFuN(*^mi<_6)ZUC}-upCRXno{rQYtYOe)Pr4yj-@=N^2T( zwurK*B%2pE-_a@ga1c>V4G^DvNRq@5=J*%77w}@HU9mnWr z@O?s??pDnC8*W=VqARsQ8GmR#Zw82Cx!c+eP71(sbtA6P*4 zBfL|0z96W0ZMs;aub3S`Hx*YrT%p{`S^9pJTpE0EC%x2gowvpa&P@k|9~`2q7ZMKL zk84ye72lh;%BOryk<0IER<=3|SKU&H2YlU;Rr`9zY;bmS>=@(~73}!YC$jkf6B9cM9ZZ`DV<}ZYB2z-bC+XY%2QeGH--WRV_U2_4`;AMgBcbHR z5fU}DGbMhAizF*Bd=m@b(~CU}Xad7o*mJ{*t_H46ONp+PZe-=`7gC@-P!8t*WKM?t zX`sAU^4B(ZnI3{-T#aMGiDDFf52lmo4?R7D>a(L5K{L3_!mcmMOiTyNmSPq*aw2HP zLavEKiMbv*qFh8Clk5)^^k49D(+VVL!wuDcP6=07eX*iz5B*_{$HKQ9p#&(Ss;Y)X`(<4sBt1{ZX-}9w;(K~3 zT^waE11Suuh4WdX);0mZd7cSU^5?D2^v}R+BLq}5gmyfcu1yd*O_-cfkD*q04!7Eh3`>qj1;ip; z-~9VhOF?Fz!<7%7+7i3uK4AqmVs;YEGZ{yisC1MGakZw3!|0fb≪fok{C|b}x=| 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 Mc5cYmxd{FL0M&BissI20 literal 0 HcmV?d00001 From 367c7f6167a9d8d38cf1bc859af36db62b80495f Mon Sep 17 00:00:00 2001 From: The-UltimateGamer <2357931342@qq.com> Date: Thu, 27 Aug 2020 12:16:03 +0800 Subject: [PATCH 3/3] Faulty advanced input --- files.img | 9 + kernel.py | 563 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 572 insertions(+) create mode 100644 kernel.py diff --git a/files.img b/files.img index eafb9f1..4696092 100644 --- a/files.img +++ b/files.img @@ -575,3 +575,12 @@ If you're seeing this, then the `cat` command is working! !LOC=/ !FNAME=home/ + + + +!LOC=/ +!FNAME=a.txt + + + + diff --git a/kernel.py b/kernel.py new file mode 100644 index 0000000..af62be5 --- /dev/null +++ b/kernel.py @@ -0,0 +1,563 @@ +# kernel.py +# Core of our OS + +import pygame, sys, random, time, io, os +from math import * +from contextlib import redirect_stdout +from enum import Enum + +width, height = 1024, 768 + +def pwd(working_dir, args): + print(working_dir, end='\r') + +def ls(working_dir, args, flag=True): + files = open("files.img", 'r+', encoding="ISO-8859-1") + lines = files.read().strip('\0').split('\n') + + result = [] + for i, line in enumerate(lines): + if line == "!LOC=%s" % working_dir: + if flag: print(lines[i + 1].strip('!FNAME='), end='\r') + result.append(lines[i + 1].strip('!FNAME=')) + return result + +def cat(working_dir, args): + if not args: + print("Missing argument.\rUsage: cat ", end='\r') + return + for target in args: + files = open("files.img", 'r+', encoding="ISO-8859-1") + lines = files.read().strip('\0').split('\n') + contents = [] + for i, line in enumerate(lines): + if line == '!LOC=%s' % working_dir \ + and lines[i + 1] == '!FNAME=%s' % target: + for i in range(i+2, len(lines)): + if lines[i] and lines[i][0] == '!': break + contents.append(lines[i]) + break + else: + print("cat: %s: no such file" % target, end = '\r') + print('\r'.join(contents)) + files.close() + +def rm(working_dir, args): + files = open("files.img", 'r+', encoding="ISO-8859-1") + to_be_written = [] + target = args[0] + lines = files.read().strip('\0').split('\n') + write_or_not = True + for i, line in enumerate(lines): + if write_or_not: + if line == '!FNAME=%s' % target \ + and lines[i-1] == '!LOC=%s' % working_dir: + write_or_not = False + to_be_written.pop() + else: + if line and line[0] == '!': + write_or_not = True + if write_or_not: + to_be_written.append(line) + files.close() + fw = open("files.img", 'w+', encoding="ISO-8859-1") + fw.write('\n'.join(to_be_written)) + fw.close() + +class Pic(object): + def __init__(self, fileName): + img = pygame.image.load(fileName) + self.img = pygame.transform.scale(img, (width, height)) + self.x, self.y = 0, 0 + self.w, self.h = self.img.get_size() + def draw(self, screen, speed = 5): + screen.blit(self.img, (self.x, self.y), (0, 0, self.w, self.h)) + pygame.draw.rect(screen, (0, 255, 0), (0, 0, speed * 8, 8), 0) + def getPixelGrid(self, x0, y0, sideLen, pixelGrid): + n = sideLen // 2 + for y in range(-n, n + 1): + for x in range(-n, n + 1): + pixelGrid[y + n][x + n] = self.img.get_at((x + x0, y + y0)) + +class Kernel: + def __init__(self): + pygame.init() + self.screen = pygame.display.set_mode((width, height)) + pygame.display.set_caption("Winnux 58") + self.clock = pygame.time.Clock() + self.raster = pygame.font.Font("res/Perfect_DOS_VGA_437.ttf", 15) + self.speed = 5 + self.mousePos = (0, 0) + self.apps = [] + self.appID = 0 + self.dialogs = [] + self.dialogID = 0 + def launch(self): + for app in self.apps: + app.draw(self.screen) + for dialog in self.dialogs: + try: + dialog.draw(self.screen) + except: + pass + pygame.display.update() + self.clock.tick(50) + def addApp(self, app): + app.appID = len(self.apps) + self.apps.append(app) + def addDialog(self, dialog): + dialog.dialogID = len(self.dialogs) + dialog.closeBtn = Secret((dialog.x + 357, dialog.y + 6, 17, 16), dialog.dialogID) + self.dialogs.append(dialog) + def keyUp(self, key): + self.apps[self.appID].keyUp(key) + def keyDown(self, key): + self.apps[self.appID].keyDown(key) + def mouseDown(self, pos, button): + self.apps[self.appID].mouseDown(pos, button) + try: + self.dialogs[self.dialogID].mouseDown(pos, button) + except: + pass + print(event.pos) + def mouseUp(self, pos, button): + self.apps[self.appID].mouseUp(pos, button) + def mouseMotion(self, pos): + self.apps[self.appID].mouseMotion(pos) + +class App: + def __init__(self, picName): + self.pic = Pic(picName) + self.appID = 0 + self.btnList = [] + self.tooltipList = [] + self.txtField = TxtField(0, 0, 0, 0) + self.txtFieldEnabled = False + self.canvas = pygame.Surface((width, height - 60)) + self.canvasEnabled = False + self.secretList = [] + def draw(self, screen): + if framework.appID != self.appID: + return + screen.blit(self.pic.img, (0, 0)) + for button in self.btnList: + button.draw(screen) + for tooltip in self.tooltipList: + tooltip.draw(screen) + if self.txtFieldEnabled: + self.txtField.content = self.txtField.wrap(self.txtField.txtBuffer) + self.txtField.content = self.txtField.content[-self.txtField.h:] + self.txtField.draw(screen, self.txtField.content, (255, 255, 255), self.txtField.y) + if self.canvasEnabled: + if self.appID == snake.appID: + snakeGame.draw(self.canvas) + snakeGame.move() + framework.screen.blit(self.canvas, (0, 60)) + def addButton(self, b): + self.btnList.append(b) + def addTooltip(self, txt, font, x, y, c, rect): + tt = Tooltip(txt, font, x, y, c, rect) + self.txtList.append(tt) + def enableTxtField(self, x, y, w, h): + if self.canvasEnabled: + print("Only one of either the text field or the canvas can be enabled in an App.") + return + self.txtFieldEnabled = True + self.txtField.x, self.txtField.y = x, y + self.txtField.w, self.txtField.h = w, h + def enableCanvas(self): + if self.txtFieldEnabled: + print("Only one of either the text field or the canvas can be enabled in an App.") + return + self.canvasEnabled = True + def mouseDown(self, pos, button): + for btn in self.btnList: + btn.mouseDown(pos, button) + for secret in self.secretList: + secret.mouseDown(pos, button) + def mouseUp(self, pos, button): + for button in self.btnList: + button.mouseUp(pos, button) + def mouseMotion(self, pos): + framework.mousePos = pos + for btn in self.btnList: + btn.mouseMove(pos) + def keyUp(self, key): + if self.txtFieldEnabled: + self.txtField.keyUp(key) + def keyDown(self, key): + if self.txtFieldEnabled: + self.txtField.keyDown(key) + if self.canvasEnabled: + if self.appID == snake.appID: + snakeGame.keyDown(key) + +class Button: + def __init__(self, picFile, x, y, appID, **txt): + self.img = pygame.image.load(picFile).convert() + self.w, self.h = self.img.get_width() // 3, self.img.get_height() + self.x, self.y = x, y + self.rect = pygame.Rect(self.x, self.y, self.w, self.h) + self.status = 0 + self.appID = appID + self.txt = txt + def draw(self, screen): + screen.blit(self.img, (self.x, self.y), + (self.status * self.rect.w, 0, + self.rect.w, self.rect.h)) + if self.txt: + screen.blit(self.txt["font"].render(self.txt["content"], True, (0,0,0)), \ + (self.x + self.w // 2 - 4 * len(self.txt["content"]), self.y + self.h // 2 - 8)) + def mouseDown(self, pos, button): + if self.rect.collidepoint(pos): + self.status = 2 + def mouseUp(self, pos, button): + self.status = 0 + if not self.rect.collidepoint(pos): + return + framework.apps[self.appID].pic.draw(framework.screen, framework.speed) + framework.appID = self.appID + def mouseMove(self, pos): + if self.rect.collidepoint(pos): + self.status = 1 + else: + self.status = 0 + +class Tooltip: + def __init__(self, txt, font, x, y, c, rect): + self.txt = txt + self.img = font.render(txt, True, c) + self.x, self.y = x, y + self.c = c + self.rect = pygame.Rect(rect) + def draw(self, screen): + if self.rect.collidepoint(framework.mousePos): + screen.blit(self.img, (self.x, self.y)) + +class TxtField: + def __init__(self, x, y, w, h): + self.x, self.y = x, y + self.w, self.h = w, h + self.pwd = '/' + self.placeholder = ['%s# ' % self.pwd] + self.txtBuffer = [] + self.content = [] + # MAGIC # + self.caps = { '`': '~', '1': '!', '2': '@', '3': '#', '4': '$', '5': '%', '6': '^', '7': '&', '8': '*', '9': '(', '0': ')', '-': '_', '=': '+', '[': '{', ']': '}', '\\': '|', ';': ':', '\'': '"', ',': '<', '.': '>', '/': '?', 'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D', 'e': 'E', 'f': 'F', 'g': 'G', 'h': 'H', 'i': 'I', 'j': 'J', 'k': 'K', 'l': 'L', 'm': 'M', 'n': 'N', 'o': 'O', 'p': 'P', 'q': 'Q', 'r': 'R', 's': 'S', 't': 'T', 'u': 'U', 'v': 'V', 'w': 'W', 'x': 'X', 'y': 'Y', 'z': 'Z' } + self.shift, self.capsLock = False, False + self.currentLine, self.loc, self.maxIndex = 0, 0, 0 + self.cLineStr = "" + self.raster = pygame.font.Font("res/Perfect_DOS_VGA_437.ttf", 16) + def wrap(self, txtBuffer): + lines = [] + ptr = 0 + prev_i = 0 + ph = self.placeholder[ptr] + if self.loc > self.maxIndex: + self.loc = self.maxIndex + if self.loc < 0: self.loc = 0 + if self.maxIndex < 0: self.loc = 0 + for i in range(len(txtBuffer)): + if txtBuffer[i] == '\n': + self.currentLine = i + 1 + lines.append(ph) + ptr += 1 + ph = self.placeholder[ptr] + prev_i = i + elif txtBuffer[i] == '\r' or (i != 0 and (i - prev_i) % self.w == 0): + ph += txtBuffer[i] if txtBuffer[i] not in ('\n', '\r', ' ', '') else '' + self.currentLine = i + 1 + lines.append(ph) + ph = '' + prev_i = i + elif txtBuffer[i] == '\t': + ph += ' ' + else: + ph += txtBuffer[i] + lines.append(ph) + return lines + def draw(self, screen, lines, c = (255, 255, 255), y = 0): + for line in lines: + img = self.raster.render(line, True, c) + screen.blit(img, (self.x, y)) + y += 16 + def cd(self, dir_name): + def process_dir(dr: str): + for d in dr.split('/'): + if d: + if d[0] == '.': + if d == '..': + self.pwd = "" + try: nTemp.pop() + except: pass + for i in nTemp: + if i: + self.pwd += '/' + i + self.pwd += '/' + elif (d + '/') in ls(self.pwd, [], False): + self.pwd += d + '/' + else: + print("cd: %s: no such directory." % d, end='\r') + return + temp = self.pwd.split('/') + nTemp = [] + self.pwd = "" + for i in temp: + if i: + self.pwd += '/' + i + nTemp.append(i) + self.pwd += '/' + if dir_name[0] == '/': + self.pwd = '/' + dir_name = dir_name[1:] + process_dir(dir_name) + def vis(self, args): + if not args: + print("vis: missing argument.\rUsage: vis ", end='\r') + if type(args) == type([]): + print("vis: too many arguments.\rUsage: vis ", end='\r') + if '/' in args: + print("No.", end='\r') + return + while True: + rm(self.pwd, [args]) + files = open("files.img", 'a+', encoding="ISO-8859-1") + files.write("\n\n!LOC=" + self.pwd + "\n") + files.write("!FNAME=" + args + "\n") + self.txtBuffer.append('\r') + self.txtBuffer.append('\r') + while True: + for event in pygame.event.get(): + if event.type == pygame.KEYDOWN: + self.txtBuffer = [] + self.content = [] + self.keyDown(event.key, True) + files.write(self.cLineStr + '\n') + framework.launch() + elif event.type == pygame.KEYUP: + if event.key == pygame.K_LSHIFT or event.key == pygame.K_RSHIFT: + self.shift = False + elif event.key == pygame.K_CAPSLOCK: + self.capsLock = 1 - self.capsLock + elif event.type == pygame.QUIT: + pygame.quit() + sys.exit() + framework.launch() + files.close() + def exec_cmd(self, on_scr): + cmd = on_scr.split() + try: main = cmd.pop(0) + except: main = None + output = io.StringIO() + with redirect_stdout(output): + if main: + if main == 'cd': self.cd(cmd[0]) + elif main == 'vis': self.vis(cmd[0]) + else: + try: exec("%s('%s', %s)" % (main, self.pwd, str(cmd))) + except: print("%s: command not found" % on_scr, end='') + else: pass + self.txtBuffer.append('\r') + self.txtBuffer += list(output.getvalue().rstrip('\n')) + self.placeholder.append('%s# ' % self.pwd) + def keyUp(self, key): + if key == pygame.K_LSHIFT or key == pygame.K_RSHIFT: + self.shift = False + elif key == pygame.K_CAPSLOCK: + self.capsLock = 1 - self.capsLock + def keyDown(self, key, isVis = False): + if key == pygame.K_BACKSPACE: + if (self.txtBuffer and self.txtBuffer[-1] != '\n') or not self.txtBuffer: + try: + if self.loc - 1 != -1: + self.txtBuffer.pop(self.loc - 1) + self.maxIndex -= 1 + self.loc -= 1 + except: pass + elif key == pygame.K_DELETE: + try: + if self.loc > self.maxIndex: + self.loc = self.maxIndex + self.txtBuffer.pop(self.currentLine + self.loc) + self.maxIndex -= 1 + except: pass + elif key == pygame.K_RETURN: + cmd = '' + self.loc = 0 + self.maxIndex = 0 + i = -1 + if isVis: + while len(self.txtBuffer) > - i - 1 and self.txtBuffer[i] != '\r': + cmd = self.txtBuffer[i] + cmd + i -= 1 + else: + while len(self.txtBuffer) > - i - 1 and self.txtBuffer[i] != '\n': + cmd = self.txtBuffer[i] + cmd + i -= 1 + if isVis: + self.cLineStr = cmd + self.txtBuffer.append('\r') + return + else: + self.exec_cmd(cmd) + self.txtBuffer.append('\n') + framework.launch() + elif key == pygame.K_TAB: + for i in range(4): + self.txtBuffer.append(' ') + self.loc += 1 + elif key == pygame.K_LSHIFT or key == pygame.K_RSHIFT: + self.shift = True + elif key == pygame.K_CAPSLOCK: + self.capsLock = 1 - self.capsLock + elif key == pygame.K_LEFT: + if self.loc != 0: + self.loc -= 1 + elif key == pygame.K_RIGHT: + if self.loc + 1 <= self.maxIndex: + self.loc += 1 + else: + if 32 <= key <= 126: + if (key == 39 or 44 <= key <= 57 or key == 59 or key == 61 or key == 96 or 91 <= key <= 93) and self.shift: + self.txtBuffer.insert(self.loc, self.caps[chr(key)]) + elif 97 <= event.key <= 122 and (self.shift or self.capsLock): + self.txtBuffer.insert(self.loc, self.caps[chr(key)]) + else: + self.txtBuffer.insert(self.loc, chr(key)) + self.loc += 1 + self.maxIndex += 1 + framework.launch() + print(self.txtBuffer, self.loc, self.maxIndex) + +class Secret: + def __init__(self, rect, dialogID): + self.rect = pygame.Rect(rect) + self.dialogID = dialogID + def mouseDown(self, pos, button): + if self.rect.collidepoint(pos): + framework.dialogs.pop() + +class DlgStatus(Enum): + INFO = 0 + WARNING = 1 + ERROR = 2 + +class Dialog: + def __init__(self, title, content, status=DlgStatus.INFO): + self.img = pygame.image.load("res/dialog/dialog.png") + self.icon = pygame.transform.scale(pygame.image.load("res/dialog/" + str(status) + ".bmp"), (32, 32)) + self.icon.set_colorkey((255, 0, 255)) + self.raster = pygame.font.Font("res/Perfect_DOS_VGA_437.ttf", 16) + self.title = self.raster.render(title, True, (255, 255, 255)) + self.content = self.wrap(content, 35) + self.dialogID = 0 + self.w, self.h = self.img.get_size() + self.x, self.y = 322, 284 + self.closeBtn = None + def wrap(self, txt, w): + processed = [] + temp = "" + for i in range(txt.__len__()): + if i != 0 and i % w == 0: + processed.append(self.raster.render(temp, True, (0, 0, 0))) + temp = "" + temp += txt[i] + processed.append(self.raster.render(temp, True, (0, 0, 0))) + return processed + def draw(self, screen): + screen.blit(self.img, (self.x, self.y)) + screen.blit(self.title, (self.x + 10, self.y + 6)) + screen.blit(self.icon, (self.x + 30, self.y + 90)) + for i in range(len(self.content)): + screen.blit(self.content[i], (self.x + 80, self.y + 35 + i * 16)) + def mouseDown(self, pos, button): + self.closeBtn.mouseDown(pos, button) + +class SnakeGame: + def __init__(self): + self.tileWidth = 32 + self.x0, self.y0 = 192, 144 + self.snakeLen = 1 + self.snakePos = [] + self.direction = 0 + self.speedX = (1, 0, -1, 0) + self.speedY = (0, 1, 0, -1) + self.sx, self.sy = 0, 0 + self.ix, self.iy = random.randint(0, 19), random.randint(0, 14) + self.lost = 0 + self.bigFont = pygame.font.Font("res/Perfect_DOS_VGA_437.ttf", 100) + self.smallFont = pygame.font.Font("res/Perfect_DOS_VGA_437.ttf", 60) + self.bg = pygame.Surface((640, 480)) + self.bg.fill((255, 255, 255)) + self.gameOver = self.bigFont.render("Game Over!", True, (255, 255, 255)) + self.restart = self.smallFont.render("PRESS R TO RESTART", True, (255, 255, 255)) + def draw(self, canvas): + canvas.fill((40, 40, 40)) + if self.lost == 1: + canvas.blit(self.gameOver, (250, 200)) + canvas.blit(self.restart, (230, 300)) + return + canvas.blit(self.bg, (self.x0, self.y0)) + for pos in self.snakePos[-self.snakeLen:]: + pygame.draw.rect(canvas, (60, 110, 5), (self.x0 + pos[0] * self.tileWidth, self.y0 + pos[1] * self.tileWidth, self.tileWidth, self.tileWidth)) + pygame.draw.rect(canvas, (190, 30, 50), (self.x0 + self.ix * self.tileWidth, self.y0 + self.iy * self.tileWidth, self.tileWidth, self.tileWidth)) + def move(self): + if self.lost == 1: + return + self.sx = (self.sx + self.speedX[self.direction]) % 20 + self.sy = (self.sy + self.speedY[self.direction]) % 15 + if (self.sx, self.sy) in self.snakePos[-self.snakeLen:]: + self.lost = 1 + self.snakePos.append((self.sx, self.sy)) + if self.sx == self.ix and self.sy == self.iy: + self.ix, self.iy = random.randint(0, 19), random.randint(0, 14) + self.snakeLen += 1 + def keyDown(self, key): + if key == pygame.K_UP: + self.direction = 3 + if key == pygame.K_DOWN: + self.direction = 1 + if key == pygame.K_LEFT: + self.direction = 2 + if key == pygame.K_RIGHT: + self.direction = 0 + if key == pygame.K_r and self.lost == 1: + self.snakeLen = 1 + self.snakePos = [] + self.sx, self.sy = 0, 0 + self.ix, self.iy = random.randint(0, 19), random.randint(0, 14) + self.lost = 0 + +framework = Kernel() +bg = App("res/clouds.jpg") +term = App("res/blank.jpg") +snake = App("res/blank.jpg") +snake.enableCanvas() +snakeGame = SnakeGame() +framework.appID = bg.appID +framework.addApp(bg) +framework.addApp(term) +framework.addApp(snake) +framework.addDialog(Dialog("Hey there!", "Welcome to Winnux 58!")) +bg.addButton(Button("res/button/txt_btn.bmp", 20, 20, term.appID, font=framework.raster, content="TERMINAL")) +bg.addButton(Button("res/button/txt_btn.bmp", 20, 60, snake.appID, font=framework.raster, content="SNAKE")) +term.addButton(Button("res/button/txt_btn.bmp", width // 2 - 35, 20, bg.appID, font=framework.raster, content="CLOSE")) +snake.addButton(Button("res/button/txt_btn.bmp", width // 2 - 35, 20, bg.appID, font=framework.raster, content="CLOSE")) +term.enableTxtField(50, 60, 100, 40) + +while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + sys.exit() + if event.type == pygame.KEYDOWN: + framework.keyDown(event.key) + elif event.type == pygame.KEYUP: + framework.keyUp(event.key) + if event.type == pygame.MOUSEBUTTONDOWN: + framework.mouseDown(event.pos, event.button) + elif event.type == pygame.MOUSEBUTTONUP: + framework.mouseUp(event.pos, event.button) + elif event.type == pygame.MOUSEMOTION: + framework.mouseMotion(event.pos) + framework.launch() \ No newline at end of file