Skip to content

Commit 182e4c2

Browse files
committed
First Alpha
1 parent 4ebcb5f commit 182e4c2

File tree

4 files changed

+215
-136
lines changed

4 files changed

+215
-136
lines changed

editor.exe renamed to Pyfoch.exe

9.86 MB
Binary file not shown.

Pyfoch.py

+215
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
'''
2+
This code is based on the code from
3+
https://docs.hektorprofe.net/python/interfaces-graficas-con-tkinter/editor-de-texto/
4+
'''
5+
6+
from tkinter import *
7+
from tkinter import filedialog as FileDialog
8+
from io import open
9+
10+
ruta = "" # La utilizaremos para almacenar la ruta del fichero
11+
12+
def nuevo():
13+
global ruta
14+
mensaje.set("New file")
15+
ruta = ""
16+
texto.delete(1.0, "end")
17+
root.title("Pyfoch")
18+
19+
def abrir():
20+
global ruta
21+
mensaje.set("Open file")
22+
ruta = FileDialog.askopenfilename(
23+
initialdir='.',
24+
filetypes=(("Pyfoch", "*.pfcf"),("Text file", "*.txt"),),title="Open a new file")
25+
26+
if ruta != "":
27+
fichero = open(ruta, 'r')
28+
contenido = fichero.read()
29+
texto.delete(1.0,'end')
30+
texto.insert('insert', contenido)
31+
fichero.close()
32+
root.title(ruta + " - Pyfoch")
33+
34+
def guardar_como():
35+
global ruta
36+
mensaje.set("Save file as")
37+
38+
fichero = FileDialog.asksaveasfile(title="Save file",mode="w", defaultextension=".pfcf")
39+
40+
if fichero is not None:
41+
ruta=fichero.name
42+
contenido=texto.get(1.0,'end-1c')
43+
fichero=open(ruta, 'w+')
44+
fichero.write(contenido)
45+
fichero.close()
46+
mensaje.set("File saved succesfully")
47+
else:
48+
mensaje.set("Save canceled")
49+
ruta = ""
50+
51+
def guardar():
52+
mensaje.set("Save file")
53+
if ruta != "":
54+
contenido = texto.get(1.0,'end-1c')
55+
fichero = open(ruta, 'w+')
56+
fichero.write(contenido)
57+
fichero.close()
58+
mensaje.set("File saved succesfully")
59+
else:
60+
guardar_como()
61+
#uwu
62+
63+
# Configuracion de la raiz
64+
root=Tk()
65+
root.configure(bg='white')
66+
root.title("Pyfoch")
67+
68+
# File Menu
69+
menubar=Menu(root)
70+
filemenu=Menu(menubar, tearoff=0)
71+
filemenu.add_command(label="New", command=nuevo)
72+
filemenu.add_command(label="Open", command=abrir)
73+
filemenu.add_command(label="Save", command=guardar)
74+
filemenu.add_command(label="Save as", command=guardar_como)
75+
filemenu.add_separator()
76+
77+
78+
'''
79+
This code is mine:
80+
'''
81+
def getLines(adress: str):
82+
h=open(adress,"r")
83+
lines=h.readlines()
84+
h.close()
85+
return lines
86+
87+
class Parser():
88+
def __init__(self,name: str ="Parser"):
89+
self.sep=[',']
90+
self.sec=['|']
91+
self.ski=["\""]
92+
self.vip=["\\"]
93+
self.den=["~"]
94+
self.name=name
95+
def compare(self,x: str,arr):
96+
k = False
97+
for i in arr:
98+
k =( k or x==i)
99+
return k
100+
def separator(self,x: str ):
101+
return self.compare(x,self.sep)
102+
def section(self,x: str):
103+
return self.compare(x,self.sec)
104+
def skip(self,x: str):
105+
return self.compare(x,self.ski)
106+
def isVip(self,x: str):
107+
return self.compare(x,self.vip)
108+
def isDeny(self,x: str):
109+
return self.compare(x,self.den)
110+
111+
def pfcfread(name: str,printYesOrNo: int =1,returnText: int =0):
112+
lines=getLines(name+".pfcf")
113+
T=""
114+
t=""
115+
code=""
116+
codel="" #code language
117+
m=0
118+
codem=0
119+
p=Parser()
120+
lineCount=0
121+
for k in lines:
122+
count=0
123+
for i in range(0,len(k)):
124+
j=k[i]
125+
if p.isDeny(j):
126+
if m==2:
127+
m=0
128+
else:
129+
m=2
130+
elif p.isVip(j):
131+
m=1
132+
elif m==2: #Comment mode on
133+
pass
134+
elif m==1: #Vip mode on
135+
t+=j
136+
m=0
137+
elif j=="<" or j==">":
138+
codem+=1
139+
elif codem==4:
140+
try:
141+
codef(codel,code)
142+
codem==0
143+
codel=""
144+
code=""
145+
except:
146+
print("Sintax error")
147+
elif codem==3:
148+
pass
149+
elif codem==2:
150+
code+=j
151+
elif codem==1: #Code mode on
152+
codel+=j
153+
elif p.separator(j):
154+
T+=t+"\n"
155+
t=""
156+
elif p.section(j):
157+
T+="\n"
158+
elif p.skip(j):
159+
pass
160+
elif j!="\n":
161+
t+=j
162+
count+=1
163+
lineCount+=1
164+
if printYesOrNo:
165+
print(T)
166+
if returnText:
167+
a={T,k}
168+
return a
169+
return T
170+
171+
def export():
172+
global ruta
173+
mensaje.set("Export file as")
174+
if ".pfcf" in ruta:
175+
ruta2=ruta[:-5]
176+
#.rstrip('f')
177+
T=pfcfread(ruta2,0)
178+
179+
fichero = FileDialog.asksaveasfile(title="Save file", mode="w", defaultextension=".txt")
180+
181+
if fichero is not None:
182+
ruta=fichero.name
183+
contenido=T
184+
fichero=open(ruta, 'w+')
185+
fichero.write(contenido)
186+
fichero.close()
187+
mensaje.set("File saved succesfully")
188+
else:
189+
mensaje.set("Save canceled")
190+
ruta = ""
191+
192+
#Tools Menu
193+
filemenu.add_command(label="Export", command=export)
194+
'''
195+
This code is based on the code from
196+
https://docs.hektorprofe.net/python/interfaces-graficas-con-tkinter/editor-de-texto
197+
'''
198+
199+
filemenu.add_command(label="Exit", command=root.quit)
200+
menubar.add_cascade(menu=filemenu, label="File")
201+
202+
# Caja de texto central
203+
texto=Text(root)
204+
texto.pack(fill="both", expand=1)
205+
texto.config(bd=0, padx=6, pady=4, font=("Consolas",12))
206+
207+
# Monitor inferior
208+
mensaje = StringVar()
209+
mensaje.set("Welcome to Pyfoch")
210+
monitor = Label(root, textvar=mensaje, justify='left')
211+
monitor.pack(side="left")
212+
213+
root.config(menu=menubar)
214+
# Finalmente bucle de la aplicacion
215+
root.mainloop()

editor.py

-134
This file was deleted.

main.py

-2
This file was deleted.

0 commit comments

Comments
 (0)