
letras ={
{ "1","2","3","4","5","6","7","8","9","0","[","]"},
{ "Q","W","E","R","T","Y","U","I","O","P","(",")"},
{ "A","S","D","F","G","H","J","K","L","Ñ",'"',"_"},
{ "Z","X","C","V","B","N","M",",",".","<",">",":"},
}	


--Configuracion y almacenamiento
--Sin necesidad de reinciar
lectura=1
sintaxis=1
line_hide=1
copia_seguridad=1
lenguaje=1
velocidad_puntero=3
color_txt=1
portapapeles=""
boton_cuadrado_pulsado=0
boton_x_pulsado=0
boton_triangulo_pulsado=0
help_nc_e=true
tam_txt_nc=0.6
color_texto=negro


parpadeo_h=timer.new()
parpadeo_h:start()


dofile("APP/NotepadCode/funciones.lua")
dofile("APP/NotepadCode/barra.lua")


function editor(carga)

letra_x=1
letra_y=1
tipo_teclado=1
elegida=1

posicion_puntero=0
linea_actual=1
linea=1
herra_e=false

actual=1

liberar(11)

if not carga then
	texto={}
	for variable in io.lines(workDir[pos_tarea].name) do
		texto[linea]=variable
		texto[linea]=texto[linea]:gsub("	","       ")
		linea=linea+1
	end
	if linea==1 then texto[1]="" end
end

while true do
controls.read()



fondo_editor:blit(0,0)

if controls.press("circle") then
	if herra_e then
		herra_e=false
	else
		herra_e=true
		for i=1,8 do
			herra_c[i].x=p.x+10
			herra_c[i].y=p.y+i*15
		end
	end
end

if not controls.r() then
	if controls.l()  then
		if controls.press("left") then posicion_puntero=posicion_puntero-1 elseif controls.press("right") then posicion_puntero=posicion_puntero+1 end
		if controls.press("down") and linea_actual<#texto then linea_actual=linea_actual+1 actual=actual+1 end
		if controls.press("up") and linea_actual>1 then linea_actual=linea_actual-1 actual=actual-1 end
	end

	if not controls.l() then
		if controls.up() then p.y=p.y-velocidad_puntero end
		if controls.down() then p.y=p.y+velocidad_puntero end
		if controls.right() then p.x=p.x+velocidad_puntero end
		if controls.left() then p.x=p.x-velocidad_puntero end
	end
end
if stick then
	if controls.analogx()>80 then p.x=p.x+velocidad_puntero end
	if controls.analogy()>80 then p.y=p.y+velocidad_puntero end
	if controls.analogx()<-80 then p.x=p.x-velocidad_puntero end
	if controls.analogy()<-80 then p.y=p.y-velocidad_puntero end
end

--Teclado

if controls.press("square") and texto[actual]=="" and actual!=#texto then 
	for i=actual+1,#texto do
		texto[i-1]=texto[i]
	end
	table.remove(texto)
end

if controls.press("square") and texto[actual]:len()>0 and posicion_puntero!=0 then
	local parte=string.sub(texto[actual],posicion_puntero+1,texto[actual]:len())
	texto[actual] = string.sub(texto[actual],1,posicion_puntero-1)
	texto[actual]=texto[actual]..parte
	if posicion_puntero>1 then posicion_puntero=posicion_puntero-1 end
end

if controls.square() then
	boton_cuadrado_pulsado=boton_cuadrado_pulsado+1 
	if boton_cuadrado_pulsado>30 then 
		if texto[actual]:len()>0 and posicion_puntero!=0 then
			local parte=string.sub(texto[actual],posicion_puntero+1,texto[actual]:len())
		texto[actual] = string.sub(texto[actual],1,posicion_puntero-1)
		texto[actual]=texto[actual]..parte
			if posicion_puntero>1 then posicion_puntero=posicion_puntero-1 end
		end
	end
else
	boton_cuadrado_pulsado=0
end

if controls.press("triangle") and boton_triangulo_pulsado<2 then
	local parte=string.sub(texto[actual],posicion_puntero+1,texto[actual]:len())
	texto[actual] = string.sub(texto[actual],1,posicion_puntero)
	texto[actual]=texto[actual].." "..parte 
	posicion_puntero=posicion_puntero+1
end


if controls.triangle() then
	boton_triangulo_pulsado=boton_triangulo_pulsado+1 
	if boton_triangulo_pulsado>30 then 
		local parte=string.sub(texto[actual],posicion_puntero+1,texto[actual]:len())
		texto[actual] = string.sub(texto[actual],1,posicion_puntero)
		texto[actual]=texto[actual].."       "..parte 
		posicion_puntero=posicion_puntero+7
		boton_triangulo_pulsado=0
	end
else
	boton_triangulo_pulsado=0
end

	if #texto-linea_actual<8 then
		for i=linea_actual,#texto do
		
		if string.sub(texto[i],1,2)=="[" or string.sub(texto[i],1,2)=="(" or string.sub(texto[i],1,2)==")" then texto[i]="" end
		
			if i==linea_actual then 
				draw.fillrect(60,i*20-linea_actual*20+26,screen.textwidth(texto[linea_actual],tam_txt_nc),15,gris_d)
			end
			if sintaxis==1 and lenguaje!=2 then
				tintado(60,i*20-linea_actual*20+30,texto[i],tam_txt_nc)
			else
				screen.print(60,i*20-linea_actual*20+30,texto[i],tam_txt_nc,color_texto,0)
			end
			if line_hide==1 then screen.print(10,i*20-linea_actual*20+30,i,tam_txt_nc,color_texto,0) end
			
		end
	else
		for i=linea_actual,linea_actual+7 do
		
		if string.sub(texto[i],1,2)=="[" or string.sub(texto[i],1,2)=="(" or string.sub(texto[i],1,2)==")" then texto[i]="" end
			
			if i==linea_actual then 
				draw.fillrect(60,i*20-linea_actual*20+26,screen.textwidth(texto[linea_actual],tam_txt_nc),15,gris_d)
			end
			if sintaxis==1 and lenguaje!=2 then
				tintado(60,i*20-linea_actual*20+30,texto[i],tam_txt_nc)
			else
				screen.print(60,i*20-linea_actual*20+30,texto[i],tam_txt_nc,color_texto,0)
			end
			if line_hide==1 then screen.print(10,i*20-linea_actual*20+30,i,tam_txt_nc,color_texto,0) end
		end
	end

puntero_parpadeante()
if lectura==1 then 
	if controls.r() then
		controles_teclado()
		
		
		if help_nc_e then
			for i=1,4 do
				screen.print(help_nc[3][i][1],help_nc[3][i][2],help_nc[3][i][3],0.5,negro,0)
			end
			tecladox=200
		else
			tecladox=140
		end
		
		draw.rect(tecladox,180,240,85,negro)
		
		for posiciony = 1, #letras do
			for posicionx = 1, #letras[posiciony] do
				if letra_x==posicionx and letra_y==posiciony then 
					screen.print(tecladox-10+20*posicionx,170+20*posiciony,letras[posiciony][posicionx],negro)
				else 
					screen.print(tecladox-10+20*posicionx,170+20*posiciony,letras[posiciony][posicionx],azul_claro)
				end
			end
		end
	else
		if help_nc_e then
			if controls.l() then
				for i=1,4 do
					screen.print(help_nc[2][i][1],help_nc[2][i][2],help_nc[2][i][3],0.5,negro,0)
				end
			else
				for i=1,6 do
					screen.print(help_nc[1][i][1],help_nc[1][i][2],help_nc[1][i][3],0.5,negro,0)
				end
			end
		end
	end
	if barra_actual==0 and herra_e then herramientas() end
end

barras_principales()


if p.x<0 then p.x=0 end
if p.x>477 then p.x=477 end
if p.y<0 then p.y=0 end
if p.y>269 then p.y=269 end


p.i:blit(p.x,p.y)


if controls.start() then sistema("NotepadCode") end
screen.flip()
end
end
