Update 'CARDPUTER CircuitPython/projects/text_editor.py'

This commit is contained in:
2025-03-06 01:28:46 +00:00
parent 19d0950145
commit 09af281c3b

View File

@@ -19,39 +19,6 @@ import sdcardio
import storage import storage
import os import os
def save_file():
save_text = "save file"
save_group = label.Label(terminalio.FONT, text=save_text)
save_group.x = 10
save_group.y = 10
board.DISPLAY.root_group = save_group
def open_file():
open_text = "open file"
open_group = label.Label(terminalio.FONT, text=open_text)
open_group.x = 10
open_group.y = 10
board.DISPLAY.root_group = open_group
def editor(text):
if page == "editor":
## WRAPPING
## calculate wrapping when entering a character
lines = text.split("\n")
current_line = lines[len(lines)-1]
if len(current_line) > 35:
text=text+"\n" # <- start a new line here
##############################################
text = text+key
text_area.text = text
return text
def esc():
if page == "editor":
pass
elif page == "save" or page == "open":
board.DISPLAY.root_group = intro_text_area
## SD Card set up for saving text to SD card ## SD Card set up for saving text to SD card
spi = busio.SPI(board.SD_SCK, MOSI=board.SD_MOSI, MISO=board.SD_MISO) spi = busio.SPI(board.SD_SCK, MOSI=board.SD_MOSI, MISO=board.SD_MISO)
cs = board.SD_CS cs = board.SD_CS
@@ -79,26 +46,82 @@ intro_text_area.y = 10
text = "" text = ""
text_area = label.Label(terminalio.FONT, text=text) text_area = label.Label(terminalio.FONT, text=text)
text_area.x = 0 text_area.x = 0
text_area.y = 40 text_area.y = 30
board.DISPLAY.root_group = intro_text_area board.DISPLAY.root_group = intro_text_area
intro_text_area.append(text_area) intro_text_area.append(text_area)
filename_text = ""
save_text = "Save File - Enter Filename\nIf file exists, it will be overwritten"
save_group = label.Label(terminalio.FONT, text=save_text, color="C3B")
save_group.x = 10
save_group.y = 10
filename_group = label.Label(terminalio.FONT, text=filename_text)
filename_group.x = 0
filename_group.y = 60
save_group.append(filename_group)
open_text = "open file"
open_group = label.Label(terminalio.FONT, text=open_text)
open_group.x = 10
open_group.y = 10
while True: while True:
key = keyb.scan() key = keyb.scan()
if key == "BACKSP":
text = text[:-1] if key == "BACKSP":
elif key == "CTRLD": if page == "editor":
text = "" text = text[:-1]
elif key == "CTRLS": text_area.text = text
save_file() elif page == "save":
page = "save" filename_text = filename_text[:-1]
elif key == "CTRLO": filename_group.text = filename_text
open_file()
page="open" elif key == "CTRLD":
elif key == "ESC": if page == "editor":
esc() text = ""
page = "editor" text_area.text = text
else: elif page == "save":
text = editor(text) filename_text = ""
filename_group.text = filename_text
elif key == "CTRLS":
board.DISPLAY.root_group = save_group
page = "save"
filename_group.text=filename_text
elif key == "CTRLO":
board.DISPLAY.root_group = open_group
page="open"
elif key == "ESC":
if page == "editor":
pass
elif page == "save" or page == "open":
board.DISPLAY.root_group = intro_text_area
page = "editor"
else:
## The actual editor
if page == "editor":
## WRAPPING
## calculate wrapping when entering a character
lines = text.split("\n")
current_line = lines[len(lines)-1]
if len(current_line) > 35:
text=text+"\n" # <- start a new line here
##############################################
text = text+key
text_area.text = text
## The save file menu - for typing the filename
elif page == "save":
if key == "\n":
pass # handle saving the file
elif not keyb.is_alphanumeric(key):
pass # dont allow special characters to be entered
else:
filename_text = filename_text+key
filename_group.text=filename_text