From a8f5a0b450b35c58df41b3aa5f4ecd32a2ecff82 Mon Sep 17 00:00:00 2001 From: The-UltimateGamer <2357931342@qq.com> Date: Tue, 28 Jul 2020 21:23:22 +0800 Subject: [PATCH 1/3] Text input system complete --- TextDraw.py | 75 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 67 insertions(+), 8 deletions(-) diff --git a/TextDraw.py b/TextDraw.py index c892981..970ff9c 100644 --- a/TextDraw.py +++ b/TextDraw.py @@ -6,12 +6,64 @@ width, height = 800, 600 txtBuffer = [] +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' +} pygame.init() screen = pygame.display.set_mode((width, height)) pygame.display.set_caption("TextDraw") clock = pygame.time.Clock() +shift = False +capsLock = False + while True: pygame.display.update() clock.tick(50) @@ -30,14 +82,21 @@ elif event.key == pygame.K_RETURN: txtBuffer.append('\n') print(txtBuffer) - elif event.key == pygame.K_LSHIFT or event == pygame.K_RSHIFT: - # TODO: do shift - pass + elif event.key == pygame.K_LSHIFT or event.key == pygame.K_RSHIFT: + shift = True elif event.key == pygame.K_CAPSLOCK: - # TODO: always do shift - pass + capsLock = 1 - capsLock else: if 32 <= event.key <= 126 or event.key == pygame.K_TAB: - txtBuffer.append(chr(event.key)) - for c in txtBuffer: - print(txtBuffer) \ No newline at end of file + if (44 <= event.key <= 57 or event.key == 59 or event.key == 61 or event.key == 96) and shift: + txtBuffer.append(caps[chr(event.key)]) + elif 97 <= event.key <= 122 and (shift or capsLock): + txtBuffer.append(caps[chr(event.key)]) + else: + txtBuffer.append(chr(event.key)) + elif event.type == pygame.KEYUP: + if event.key == pygame.K_LSHIFT or event.key == pygame.K_RSHIFT: + shift = False + elif event.key == pygame.K_CAPSLOCK: + capsLock = 1 - capsLock + print(txtBuffer, shift, capsLock) \ No newline at end of file From 3dbf2d53a073b561da9210daf88a44e55edcda15 Mon Sep 17 00:00:00 2001 From: The-UltimateGamer <2357931342@qq.com> Date: Thu, 30 Jul 2020 10:13:33 +0800 Subject: [PATCH 2/3] Txt ctrl, dialog art done & img written --- BinEditor.py | 102 ------------------------------- TextDraw.py | 24 ++++++++ files.img | 8 +-- kernel.py | 7 +-- res/dialog/DlgStatus.ERROR.bmp | Bin 3126 -> 3128 bytes res/dialog/DlgStatus.INFO.bmp | Bin 3126 -> 822 bytes res/dialog/DlgStatus.WARNING.bmp | Bin 2102 -> 3126 bytes 7 files changed, 30 insertions(+), 111 deletions(-) delete mode 100644 BinEditor.py diff --git a/BinEditor.py b/BinEditor.py deleted file mode 100644 index ebb0816..0000000 --- a/BinEditor.py +++ /dev/null @@ -1,102 +0,0 @@ -# BinEditor.py -# Binary editor for pixel art that supports undo & redo -# Might need to use that later on - -import pygame, sys - -width, height = 800, 600 -mx, my = 0, 0 - -def drawGrid(): - for i in range(n + 1): - pygame.draw.line(screen, (170, 170, 170), (50, 50 + 30 * i), (30 * (n + 1.7), 50 + 30 * i), 10) - for i in range(n + 1): - pygame.draw.line(screen, (170, 170, 170), (50 + 30 * i, 50), (50 + 30 * i, 30 * (n + 1.7)), 10) - -def checkBorders(): - try: - for i in range(len(squares)): - if pygame.Rect(squares[i][0], squares[i][1], 30, 30).collidepoint(mx, my): - flagList[i] = 1 - flagList[i] - undo.append(i) - except: - return - -def calc(): - numStr = "" - for i in range(n): - for j in range(n): - numStr += str(flagList[n * j + i]) - strList[i] = hex(int(numStr, 2))[2:] - numStr = "" - -def saveFile(): - fileName = input("File to save to: ") - f = open(fileName, "w") - for s in strList: - f.write(s + ' ') - f.close() - -n = 8 - -squares = [] -for i in range(55, 30 * (n + 1), 30): - for j in range(55, 30 * (n + 1), 30): - squares.append([i, j]) -strList = [""] * n - -print(squares) - -flagList = [0] * n * n -print(flagList) - -pygame.init() -screen = pygame.display.set_mode((width, height)) -pygame.display.set_caption("Binary Color Editor") -clock = pygame.time.Clock() -font = pygame.font.Font(None, 24) -undo = [] -redo = [] -over = False - -while True: - screen.fill((0, 0, 0)) - drawGrid() - checkBorders() - calc() - mx, my = 0, 0 - for i in range(len(flagList)): - if flagList[i]: - pygame.draw.rect(screen, (255, 255, 255), pygame.Rect(squares[i][0] + 1, squares[i][1] + 1, 20, 20), 0) - for i in range(len(strList)): - img = font.render(strList[i], True, (0, 0, 255)) - screen.blit(img, (30 * (n + 1) + 45, 55 + 30.5 * i)) - pygame.display.update() - clock.tick(10) - for event in pygame.event.get(): - if event.type == pygame.QUIT: - pygame.quit() - sys.exit() - if event.type == pygame.MOUSEBUTTONDOWN: - if event.button == 1: - if over: - redo = [] - print(event.pos) - mx, my = event.pos - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_s: - saveFile() - elif event.key == pygame.K_z: - if len(undo) != 0: - lastOp = undo.pop() - redo.append(lastOp) - flagList[lastOp] = 1 - flagList[lastOp] - over = True - elif event.key == pygame.K_y: - if len(redo) != 0: - prevOp = redo.pop() - undo.append(prevOp) - flagList[prevOp] = 1 - flagList[prevOp] - over = True - elif event.key == pygame.K_0: - flagList = [0] * n * n \ No newline at end of file diff --git a/TextDraw.py b/TextDraw.py index 970ff9c..de56c09 100644 --- a/TextDraw.py +++ b/TextDraw.py @@ -3,6 +3,26 @@ import pygame, sys +def wrap(txtBuffer): + lines = [] + temp = "" + for c in txtBuffer: + if c == '\n': + lines.append(temp) + temp = "" + else: + temp += c + lines.append(temp) + print(lines) + return lines + +def drawTxt(screen, lines, y = 0): + for line in lines: + img = raster.render(line, True, (255, 255, 255)) + screen.blit(img, (0, y)) + y += 16 + + width, height = 800, 600 txtBuffer = [] @@ -61,10 +81,14 @@ pygame.display.set_caption("TextDraw") clock = pygame.time.Clock() +raster = pygame.font.Font("res/vga936.fon", 32) + shift = False capsLock = False while True: + screen.fill((0, 0, 0)) + drawTxt(screen, wrap(txtBuffer)) pygame.display.update() clock.tick(50) for event in pygame.event.get(): diff --git a/files.img b/files.img index ead8d81..f458504 100644 --- a/files.img +++ b/files.img @@ -189,8 +189,8 @@ class DlgStatus(Enum): class Dialog: def __init__(self, title, content, status = DlgStatus.INFO): self.img = pygame.image.load("res/dialog/dialog.png") - self.icon = pygame.image.load("res/dialog/" + str(status) + ".bmp") - self.icon.set_colorkey((255, 255, 255)) + self.icon = pygame.transform.scale(pygame.image.load("res/dialog/" + str(status) + ".bmp"), (32, 32)) + self.icon.set_colorkey((255, 0, 255)) self.title = framework.raster.render(title, True, (255, 255, 255)) self.content = lineWrap(content, 35) self.dialogID = 0 @@ -212,8 +212,7 @@ term = App("res/term.jpg") framework.appID = bg.appID framework.addApp(bg) framework.addApp(term) -framework.addDialog(Dialog("Hey there!", "Welcome to our OS emulator! As you can see, line wrap is working perfectly here. Now we just need some art for the icons.")) -framework.addDialog(Dialog("Hi!", "Another one")) +framework.addDialog(Dialog("Hey there!", "Welcome to our OS emulator!")) bg.addButton(Button('U', "res/button/txt_btn.bmp", width // 2 - 35, 20, term.appID, font=framework.raster, content="TERMINAL")) term.addButton(Button('D', "res/button/txt_btn.bmp", width // 2 - 35, 20, bg.appID, font=framework.raster, content="CLOSE")) @@ -238,7 +237,6 @@ while True: !LOC=/bin/ !FNAME=vis.py - # vis.py # Basic CLI text editor diff --git a/kernel.py b/kernel.py index 4b7aac7..9ea3d11 100644 --- a/kernel.py +++ b/kernel.py @@ -185,8 +185,8 @@ class DlgStatus(Enum): class Dialog: def __init__(self, title, content, status = DlgStatus.INFO): self.img = pygame.image.load("res/dialog/dialog.png") - self.icon = pygame.image.load("res/dialog/" + str(status) + ".bmp") - self.icon.set_colorkey((255, 255, 255)) + self.icon = pygame.transform.scale(pygame.image.load("res/dialog/" + str(status) + ".bmp"), (32, 32)) + self.icon.set_colorkey((255, 0, 255)) self.title = framework.raster.render(title, True, (255, 255, 255)) self.content = lineWrap(content, 35) self.dialogID = 0 @@ -208,8 +208,7 @@ def mouseDown(self, pos, button): framework.appID = bg.appID framework.addApp(bg) framework.addApp(term) -framework.addDialog(Dialog("Hey there!", "Welcome to our OS emulator! As you can see, line wrap is working perfectly here. Now we just need some art for the icons.")) -framework.addDialog(Dialog("Hi!", "Another one")) +framework.addDialog(Dialog("Hey there!", "Welcome to our OS emulator!")) bg.addButton(Button('U', "res/button/txt_btn.bmp", width // 2 - 35, 20, term.appID, font=framework.raster, content="TERMINAL")) term.addButton(Button('D', "res/button/txt_btn.bmp", width // 2 - 35, 20, bg.appID, font=framework.raster, content="CLOSE")) diff --git a/res/dialog/DlgStatus.ERROR.bmp b/res/dialog/DlgStatus.ERROR.bmp index 1d2e843239b839cad838f2fa40805c9d418e3cc8..7ed0eed3242a14f057a4c5f9fb315aa9ec8d76ea 100644 GIT binary patch literal 3128 zcmd6oJ5B^K42Au9O}{6Af);6e?m)`{C=nHh;4C}@NGpn^9X_qmFXK$C z;Sq_^OytD&=dtrTnjLPG)pJ0*&$s*et(6_5Qr6MmZQ8dQpc%@Lyzdj9#63|>0Dmz_ zP(kJ09-o#Mmy6l)^VZ%&*}m6HmqAn*c>92=yE4Y{3k7JLbo=e&Ot_cc} zs00CMWNX=sQb`!)j1J000zl6XGb^*2riz(>fsDNX(DS`2$VrG6+z1o-7>|a?;duQM z{^-x=#joqrdwzSb&))m1-}#^;sMGl-J}HD*ww05t^HBpJI^67hR)|jbi}>ugPWR)V zglJv9p-N;yp~76)mTa{c>)OR#z*^9u#2kec)q-QD3C-aaP9YF*Wb3iJLppRBMCHj- S;L6BHnIg;aTf*W?G$Tk3q;-s$Wy>PZ|=?eotwmvkOz>21d{9lJ4$_Y>+I~z{&UZrbN_qp z_xOxRj_h$}Gl zGR&-ipgIU`19?QD67B1f(F#r z%hty=PeWmceFtHeA@qBoFo9YF)Ov`#2Gq{+DNtB2p9d5%%vZreBZMnvJ;5tGCFF6H zZudiTWw8uaGG%l|=L~8EgkPBzb!FL$RV)9f6Sz!jdRY8yj=tnDCwfH#M4)V6d1ejs?ZX{qWj#xuuY}M_h@8Nu zwg9CaLb@MYaPwfX{QXi@auxv*LZGT=J}Jp56joM>AA;}w;3W5jjcpK74dGRbSJZv+ zWj8LsjRx(7i-MRq=9EZ8(F6;cA+#lANk`#+u0~~cIh`VrC1pGR@h5Qz5=XBl-aRI~ zzg&@O>~`y)U+08JH$ph7liDq5?F5c1l>&`MCY6$BKIg2Ay$ZoK5OHm4Nb@#ESM^og zX1nF}3wvH(2x`p8?nXf>m4rx)=}3jm+JE{q@1<=G-(7B( zh;I@ESF4fqvebuChkL2VG)29X^=?Sjy5 zi0FFnJ#5f{s`PIB2%jWf@ky*riM*{T+$F1era#dEbFR%>(zfSimP{g+NN^k%h{ZgD z;IPK6m%v%2W!z_DI^prg@uH=)0ks_>I$>_h>&1Mt*%k=g6`Ic%AVluiIQC{59!KM+ z(0Q@(oT&>tVRrMBh?e8W2@DfSBm|$2vDq9Bhb0iODt_Qauk3_52)qfXNOvvccSw4^_t}3QjDwT;uA`HU> z7#HIyj~wN|oSz`%wkQxq15goHBg|yx?`2ucj(hT>QoEDsL}HqhmLX0|6VlR&Ei~+f zSk~qwPDO=EtI=sRYMD$bk%$OfU^J3)xhXaC+O)7L2(Jf915oOLS_=`i5PbEuL!5zu z!C&J0P5rLi0%=mZGBrz)lp#*a5Ut(FPfo`^J*yt|IP4CK(P%J`YJ)*0785d=*zGo7 z`d+j?t`4UEI1Wy!9sdW0GN)5&j~?UL?MN4s*VkvW4!!ypO>(As8$*+pCEKt?l$0($ zciyNYov6Z{PKV27RVYloy=tXGrcelx?hFRgxqk|lJogg>RYF)bL|%otRbkPM=g;vR zj^SU{zi()0@Z-;nc}3cc9DP!TddDtJOY5-PJsyM4?;Z7y$Yg_iUzKm7@h)7HD-DQ5-ul{9Py@4OSf>p3r$YiQ?XhAe`vzhe!9iM#0-w@xt@ag(z*EHrA_Kc2t zCnx6)7fv`n`ovW9iYa}E>4TFFFB&yrCX?^dW&5ro)y70YToS%+GhSRGX=~H!^-7Xd zSgnSyzfq>ryO*zOrloe2p2YnA2k*#(gP!&d>xq-5fhaT$P&1iHYmoytV7ix41%~^-jR|bWoPemXU@= zYw;WA%pCK@e}GZpX&}5OJft* z>o)Z=vU{)msIuAI_rTuw=&!4D964smE3z~426Fb8vkUrj_uR_aZP=Nw-=3>OOP`gi zO4}h%%aW$jB?&3S#spSEQcr8E!Q&ab5A6XCbHBH~-tq1c>;8kb?A_L#yRCVJ=3Pbo zy9&oyatg?u`PvVblA zhoQL{mwKQwh^x>H$E6-9J~-85`WMqjKoPiqNeWL$6re>eX86P73!)w~ijkd!mLA|* XfDS|R3y=$sR-iI81c?qz5?L7lp%WIV literal 3126 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 Mms!OtO Date: Sun, 2 Aug 2020 19:31:52 +0800 Subject: [PATCH 3/3] Txt ctrl REALLY done --- TODO | 6 +++++ TextDraw.py | 68 +++++++---------------------------------------- backup/files.img | Bin 25 -> 7818 bytes kernel.py | 13 ++++----- stub.py | 6 ++--- 5 files changed, 26 insertions(+), 67 deletions(-) create mode 100644 TODO diff --git a/TODO b/TODO new file mode 100644 index 0000000..be949ec --- /dev/null +++ b/TODO @@ -0,0 +1,6 @@ +- Integrate TextDraw.py and the buffer provided into kernel.py + Specifications: + - Should contain a variable that controls the availability of the buffer + - Because of this, apps will trigger the buffer by setting the value of that variable + - Should have a button to go back (to the desktop), which means integrating a button too + - Preferably make this into a class and make the buffer sizeable \ No newline at end of file diff --git a/TextDraw.py b/TextDraw.py index de56c09..7a05565 100644 --- a/TextDraw.py +++ b/TextDraw.py @@ -13,7 +13,6 @@ def wrap(txtBuffer): else: temp += c lines.append(temp) - print(lines) return lines def drawTxt(screen, lines, y = 0): @@ -26,55 +25,8 @@ def drawTxt(screen, lines, y = 0): width, height = 800, 600 txtBuffer = [] -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' -} +# ↓ Magic! ↓ +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' } pygame.init() screen = pygame.display.set_mode((width, height)) @@ -99,20 +51,21 @@ def drawTxt(screen, lines, y = 0): if event.key == pygame.K_BACKSPACE: try: txtBuffer.pop() - for c in txtBuffer: - print(txtBuffer) except: - print(txtBuffer) + pass elif event.key == pygame.K_RETURN: txtBuffer.append('\n') - print(txtBuffer) + elif event.key == pygame.K_TAB: + for i in range(4): + txtBuffer.append(' ') elif event.key == pygame.K_LSHIFT or event.key == pygame.K_RSHIFT: shift = True elif event.key == pygame.K_CAPSLOCK: capsLock = 1 - capsLock else: - if 32 <= event.key <= 126 or event.key == pygame.K_TAB: - if (44 <= event.key <= 57 or event.key == 59 or event.key == 61 or event.key == 96) and shift: + if 32 <= event.key <= 126: + # ↓ Also magic! ↓ + if (44 <= event.key <= 57 or event.key == 59 or event.key == 61 or event.key == 96 or 91 <= event.key <= 93 or event.key == 39) and shift: txtBuffer.append(caps[chr(event.key)]) elif 97 <= event.key <= 122 and (shift or capsLock): txtBuffer.append(caps[chr(event.key)]) @@ -122,5 +75,4 @@ def drawTxt(screen, lines, y = 0): if event.key == pygame.K_LSHIFT or event.key == pygame.K_RSHIFT: shift = False elif event.key == pygame.K_CAPSLOCK: - capsLock = 1 - capsLock - print(txtBuffer, shift, capsLock) \ No newline at end of file + capsLock = 1 - capsLock \ No newline at end of file diff --git a/backup/files.img b/backup/files.img index 860c8763318d14631a793f0ad6da9ed3b3b330f0..f458504805751b878ceb96559f3fbb20b54aa82a 100644 GIT binary patch literal 7818 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 Pt;%3;4O;Mjf%Ja?EO4Q* delta 7 OcmeCOm7E~K$N&HcLIH{Z diff --git a/kernel.py b/kernel.py index 9ea3d11..397532f 100644 --- a/kernel.py +++ b/kernel.py @@ -85,7 +85,8 @@ def __init__(self, picName): self.pic = Pic(picName) self.appID = 0 self.btnList = [] - self.txtList = [] + self.tooltipList = [] + self.txtFieldList = [] self.secretList = [] def draw(self, screen): if framework.appID != self.appID: @@ -93,11 +94,11 @@ def draw(self, screen): screen.blit(self.pic.img, (0, 0)) for button in self.btnList: button.draw(screen) - for txt in self.txtList: - txt.draw(screen) + for tooltip in self.tooltipList: + tooltip.draw(screen) def addButton(self, b): self.btnList.append(b) - def addTxt(self, txt, font, x, y, c, rect): + def addTooltip(self, txt, font, x, y, c, rect): t = Txt(txt, font, x, y, c, rect) self.txtList.append(t) def mouseDown(self, pos, button): @@ -157,7 +158,7 @@ def mouseMove(self, pos): else: self.status = 0 -class Txt: +class Tooltip: def __init__(self, txt, font, x, y, c, rect): self.txt = txt self.img = font.render(txt, True, c) @@ -174,7 +175,7 @@ def __init__(self, rect, dialogID): self.dialogID = dialogID def mouseDown(self, pos, button): if self.rect.collidepoint(pos): - framework.dialogs.pop(len(framework.dialogs) - 1) + framework.dialogs.pop() print(len(framework.dialogs) - 1) class DlgStatus(Enum): diff --git a/stub.py b/stub.py index efb5c62..5d62adc 100644 --- a/stub.py +++ b/stub.py @@ -1,4 +1,3 @@ -# # OS emulator using pygame. # Copyright (C) 2020 The-UltimateGamer & pythonleo # @@ -37,9 +36,10 @@ dsk_spl = img.read().split('\n') kernel = [] for i, line in enumerate(dsk_spl): - if line == '!LOC=/sys/' and dsk_spl[i+1] == '!FNAME=kernel.py': + if line == '!LOC=/sys/' and dsk_spl[i + 1] == '!FNAME=kernel.py': for j in range(i+2, len(dsk_spl)): - if len(dsk_spl[j]) > 0 and dsk_spl[j][0] == '!': break + if len(dsk_spl[j]) > 0 and dsk_spl[j][0] == '!': + break kernel.append(dsk_spl[j]) break