#!/boot/home/config/bin/yab

//localize

##### Allgemeines ##### 
Programmname$="HtmlEditor"
Version$="1.0"
Versionsdatum$="11.10.2006"
Entwickler$="Christian Albrecht, Lorenz Glaser"
Nickname$="Lelldorin, Lorglas"
Url_Label$="BeSly Projects"
Url_Text$="http://www.besly.de"

##### Fensternamen #####

Hpt_Fenster$=Programmname$
Lade_Fenster$=""

##### Bildschirmgröße #####

B_Breite = peek("desktopwidth")
B_Hoehe = peek("desktopheight")

##### Fenstergröße #####

F_Hoehe1=((B_Hoehe/2)-300)
F_Hoehe2=((B_Hoehe/2)+300)
F_Breite1=((B_Breite/2)-300)
F_Breite2=((B_Breite/2)+300)
F_minBreite=800
F_maxBreite=800
F_minHoehe=600
F_maxHoehe=600

##### Editor View Groesse #####

Editor_Breite1=240
Editor_Breite2= 790
Editor_Hoehe1=120
Editor_Hoehe2=590

##### Texteditor Groesse #####

TE_Breite1=5
TE_Breite2=535
TE_Hoehe1=30
TE_Hoehe2=420

##### Tab Optionen #####

Opt_Breite1=240
Opt_Breite2=790
Opt_Hoehe1=30
Opt_Hoehe2=110

##### Tab Auswahl #####

Sel_Breite1=10
Sel_Breite2=230
Sel_Hoehe1=120
Sel_Hoehe2=590

##### Listbox Programmiersprache Auswahl #####

LB_HTML_Breite1=10
LB_HTML_Breite2=200
LB_HTML_Hoehe1=40
LB_HTML_Hoehe2=420

##### Programmverzeichnis ######

Prg_Ordner$=""
Gfx_Ordner$=""
Hlp_Ordner$=""
Sfx_Ordner$=""

ProgrammierSprachenVerzeichnis$="/boot/home/Projekte/yab/Html_Editor/ProgrammierSprachen"

#################################

editorzahl=1

#################################

ProgrammierSprachen(ProgrammierSprachenVerzeichnis$)

############################################################
# Variablen (Zahlen) fuer mich ab "aa"
############################################################

##### Programmstart #####

Prg_Fenster()
read_drives()

################################	

dim part$(1)

inloop = true
while(inloop)

	msg$ = message$

	if (split(msg$, part$(), ":|") > 2) then
		PartOne$=part$(1)
		PartTwo$ = part$(2)
		PartThree$ = part$(3)
	fi

	if (split(msg$, part$(), ":|") > 3) then
		PartFour$ = part$(4)
	fi

	if (msg$ <> "") print msg$

	switch msg$
	
	case Hpt_Fenster$+":_QuitRequested|"
		window close Hpt_Fenster$
		window close "View_Ueber"
		window close "View_Hilfe"
	break
	
	case translate$(Hpt_Fenster$+":Program:Quit")+"|"
		window close Hpt_Fenster$
		window close "View_Ueber"
		window close "View_Hilfe"
	break
	
	case "Beenden_View_Ueber|"
		window close "View_Ueber"
	break
	
	case "Beenden_View_Hilfe|"
		window close "View_Hilfe"
	break
	
	//Funktionen
	case "DB_Drives:"+PartTwo$+"|"
		Drive_Selection$=PartTwo$
		read_folders()
	break
	
	case Programmname$+":View:Fullscreen|"
		F_Hoehe1=0
		F_Hoehe2=B_Hoehe
		F_Breite1=0
		F_Breite2=B_Breite
		F_minBreite=800
		F_maxBreite=B_Breite
		F_minHoehe=600
		F_maxHoehe=B_Hoehe
		Editor_Breite2=F_Breite2-20
		Editor_Hoehe2=F_Hoehe2-20
		TE_Breite2=Editor_Breite2-255
		TE_Hoehe2=Editor_Hoehe2-190
		Opt_Breite2=Editor_Breite2
		Sel_Hoehe2=Editor_Hoehe2
		LB_HTML_Hoehe2=TE_Hoehe2
		window close Hpt_Fenster$
		Prg_Fenster()
	break
	
	case Programmname$+":View:Default|"
		F_Hoehe1=((B_Hoehe/2)-300)
		F_Hoehe2=((B_Hoehe/2)+300)
		F_Breite1=((B_Breite/2)-300)
		F_Breite2=((B_Breite/2)+300)
		F_minBreite=800
		F_maxBreite=800
		F_minHoehe=600
		F_maxHoehe=600
		Editor_Breite2=790
		Editor_Hoehe2=590
		TE_Breite2=535
		TE_Hoehe2=420
		Opt_Breite2=790
		Sel_Hoehe2=590
		LB_HTML_Hoehe2=420
		window close Hpt_Fenster$
		Prg_Fenster()
	break
	
	case "CB_Files:_Invoke:"+PartThree$+"|"
		TabNumber = TABVIEW GET "Tab_Editor"
		print TabNumber
		
		editorzahl=TabNumber
  		///Get the current opened tab.
		//while (editorzahl)
		//	EnteredText$ = TEXTEDIT GET$ "editor"+str$(editorzahl)
		//		if (EnteredText$="" or TabNumber=1)then
		//			editorzahl=editorzahl+1
		//			break
		//		else
		//			editorzahl=1
		//			break
		//		endif
		//wend
		dateiauswahl$=COLUMNBOX GET$ "CB_Files", 2, val(PartThree$)
		print dateiauswahl$
		TABVIEW ADD "Tab_Editor", dateiauswahl$
		DateiLaden(TabNumber)
	break
	
	case "CB_Folders:_Invoke:"+PartThree$+"|"
		foldername$=COLUMNBOX GET$ "CB_Folders", 2, val(PartThree$)
		if(foldername$="..")then
			VerzeichnisZurueck()
		else
			Drive_Selection$=Drive_Selection$+"/"+foldername$
			read_folders()
		endif
	break
	
	case "DB_Language:"+PartTwo$+"|"
		Auswahl$=PartTwo$
		COLUMNBOX CLEAR "CB_HTML" //ColumnBox$
		ProgrammierSprachenInhalt(Auswahl$)		
	break
	
	case "DB_Language:_INVOKE:"+PartThree$+"|"
		columnbox ADD "CB_HTML", 2, az, 20, d$(ae)
		TabNumber = TABVIEW GET "Tab_Editor"
  		//Get the current opened tab.
		LineNumber = TEXTEDIT GET "editor"+str$(editorzahl), "cursor-position"	
	break
	
	default:
	end switch
	
	if(window count<1) inloop = false
	
	sleep 0.1
wend

sub Prg_Fenster()
	window open F_Breite1,F_Hoehe1 to F_Breite2,F_Hoehe2, Hpt_Fenster$, "BeSly Software "+Programmname$
		window set Hpt_Fenster$, "MinimumTo", F_minBreite,F_minHoehe
		window set Hpt_Fenster$, "MaximumTo", F_maxBreite,F_maxHoehe
		WINDOW SET Hpt_Fenster$, "Flags", "not-zoomable"

	menu "Program", translate$("About"), "", Hpt_Fenster$
	menu "Program", translate$("Help"), "", Hpt_Fenster$
	menu "Program", translate$("Documentation"), "", Hpt_Fenster$
	menu "Program", translate$("Options"), "", Hpt_Fenster$
	menu "Program", translate$("Quit"), "", Hpt_Fenster$
	menu "View", translate$("Fullscreen"), "", Hpt_Fenster$
	menu "View", translate$("Default"), "", Hpt_Fenster$

	TABVIEW Sel_Breite1,Sel_Hoehe1 TO Sel_Breite2,Sel_Hoehe2, "Tab_Selection", "bottom", Hpt_Fenster$
		TABVIEW ADD "Tab_Selection", "File"
			DROPBOX 4,10 TO 125,20, "DB_Drives", "", "Tab_Selection1"
				DROPBOX ADD "DB_Drives", "Select Drive"
				DROPBOX ADD "DB_Drives", "--"
			COLUMNBOX 10,40 TO 200,200, "CB_Folders",true, "movable", "Tab_Selection1"
				COLUMNBOX COLUMN "CB_Folders", "Icon", 1, 60, 20, 20, "align-left"
				COLUMNBOX COLUMN "CB_Folders", "Name", 2, 60, 200, 20, "align-left"			
			COLUMNBOX 10,220 TO 200,420, "CB_Files",true, "movable", "Tab_Selection1"
				COLUMNBOX COLUMN "CB_Files", "Icon", 1, 60, 20, 20, "align-left"
				COLUMNBOX COLUMN "CB_Files", "Name", 2, 60, 200, 20, "align-left"
		TABVIEW ADD "Tab_Selection", "Code"
			DROPBOX 4,10 TO 125,20, "DB_Language", "", "Tab_Selection2"
				DROPBOX ADD "DB_Language", "Select Language"
				DROPBOX ADD "DB_Language", "--"	

			COLUMNBOX LB_HTML_Breite1,LB_HTML_Hoehe1 TO LB_HTML_Breite2,LB_HTML_Hoehe2, "CB_HTML", true, "movable", "Tab_Selection2"
				columnbox column "CB_HTML", "Icon", 1, 60, 20, 20, "align-left"
				columnbox column "CB_HTML", "Name", 2, 60, 200, 20, "align-left"
	TABVIEW Opt_Breite1,Opt_Hoehe1 TO Opt_Breite2,Opt_Hoehe2, "Tab_Tags", "top", Hpt_Fenster$
		TABVIEW ADD "Tab_Tags", "Most" 
		TABVIEW ADD "Tab_Tags", "Frames" 
		TABVIEW ADD "Tab_Tags", "Tables" 
		TABVIEW ADD "Tab_Tags", "Fonts"
		TABVIEW ADD "Tab_Tags", "Images"  

		//Toolbar x1,y1 to x2,y2, "Tab_Tags"+"1"
		//Toolbar x1,y1 to x2,y2, "Tab_Tags"+"2"
		//Toolbar x1,y1 to x2,y2, "Tab_Tags"+"3"
		//Toolbar x1,y1 to x2,y2, "Tab_Tags"+"4"
		//Toolbar x1,y1 to x2,y2, "Tab_Tags"+"5"

	Editor()
end sub

sub Editor()
TABVIEW Editor_Breite1, Editor_Hoehe1 TO Editor_Breite2,Editor_Hoehe2, "Tab_Editor", "bottom", Hpt_Fenster$
		TABVIEW ADD "Tab_Editor", "Default" 		

		TEXTEDIT TE_Breite1,TE_Hoehe1 TO TE_Breite2,TE_Hoehe2, "editor"+str$(editorzahl), 3, "Tab_Editor"+str$(editorzahl)

			TEXTEDIT COLOR "editor"+str$(editorzahl), "char-color", "<"
			TEXTEDIT COLOR "editor"+str$(editorzahl), "char-color", ">"
			TEXTEDIT COLOR "editor"+str$(editorzahl), "char-color", "="
			TEXTEDIT COLOR "editor"+str$(editorzahl), "char-color", "/"
			TEXTEDIT COLOR "editor"+str$(editorzahl), "char-color", "#"
			TEXTEDIT COLOR "editor"+str$(editorzahl), "char-color", "<?"
			TEXTEDIT COLOR "editor"+str$(editorzahl), "char-color", "?>"
end sub

sub ueber()
	REM ###### Fenstergröße #######
	F_Hoehe_Ueber1=((B_Hoehe/2)-100)
	F_Hoehe_Ueber2=((B_Hoehe/2)+100)
	F_Breite_Ueber1=((B_Breite/2)-100)
	F_Breite_Ueber2=((B_Breite/2)+100)	

	window open F_Breite_Ueber1,F_Hoehe_Ueber1 to F_Breite_Ueber2,F_Hoehe_Ueber2, "View_Ueber", "About"
		window set "View_Ueber", "MinimumTo", 260,200
		window set "View_Ueber", "MaximumTo", 260,200
		window set "View_Ueber", "look", "modal"

	draw text 10, 20, Programmname$, "View_Ueber"
	draw text 10, 60, translate$("Version/Date: ")+Version$+" / "+Versionsdatum$, "View_Ueber"
	draw text 10, 80, translate$("Developer: ")+Entwickler$, "View_Ueber"
	draw text 10, 100, translate$("Nickname: ")+Nickname$, "View_Ueber"
	draw text 10, 120, translate$("Webside: "), "View_Ueber"

	texturl 90,112, "", Url_Label$, Url_Text$, "View_Ueber"
	BUTTON 80,160 TO 180,180, "Beenden_View_Ueber", translate$("Schließen"), "View_Ueber"

end sub



sub hilfe()

	REM ###### Fenstergröße #######
	F_Hoehe_Hilfe1=((B_Hoehe/2)-150)
	F_Hoehe_Hilfe2=((B_Hoehe/2)+150)
	F_Breite_Hilfe1=((B_Breite/2)-150)
	F_Breite_Hilfe2=((B_Breite/2)+150)

	window open F_Breite_Hilfe1,F_Hoehe_Hilfe1 to F_Breite_Hilfe2,F_Hoehe_Hilfe2, "View_Hilfe", "Help"
		window set "View_Hilfe", "MinimumTo", 300,300
		window set "View_Hilfe", "MaximumTo", 300,300
		window set "View_Hilfe", "look", "modal"		
	BUTTON 100,260 TO 200,280, "Beenden_View_Hilfe", translate$("Close"), "View_Hilfe"
end sub



sub read_drives()

	rDrives$=system$("ls -G -1 /")	
	dim SplitDrives$(1)
	rda=0
	rdb=0
	rda = split(rDrives$, SplitDrives$(), "\n")            
	for rdb = 1 to rda-1
		dropbox add "DB_Drives", SplitDrives$(rdb)
	next rdb
end sub

sub read_folders()

	COLUMNBOX CLEAR "CB_Files"
	COLUMNBOX CLEAR "CB_Folders"
	COLUMNBOX ADD "CB_Folders", 2, 1, 15, ".."
	a=0
	dim SplitFolderEntrys$(1)
	dim SplitEntrys$(1)
	CheckFolderEntrys$=system$("ls -all1Q /"+"\""+Drive_Selection$+"\"")
	entrys=split(CheckFolderEntrys$, SplitFolderEntrys$(), " ")
	print SplitFolderEntrys$(1)
	for a=1 to entrys step 10
	
		print SplitFolderEntrys$(a)
	//	Einzelentrys=split(SplitFolderEntrys$(a), SplitEntrys$(), " \"")
	//	for b=1 to Einzelentrys
	//		print SplitEntrys$(1)
	//		if(mid$(SplitEntrys$(1),1,1)="d")then
				COLUMNBOX ADD "CB_Folders", 1, a, 15, "__Path__="+SplitFolderEntrys$(a) 
				COLUMNBOX ADD "CB_Folders", 2, a, 15, SplitFolderEntrys$(a)
	//		endif
	//	next b
	next a
	

end sub

sub DateiLaden(editorzahl)
print editorzahl
	auslesen=open("/"+Drive_Selection$+"/"+dateiauswahl$, "r")
	b=0
	StatusLeisteAufbau()
	while (not EOF(auslesen))
   		b=b+1
		dim FileLoad$(b)
   	 	line input #auslesen b$
		FileLoad$(b)=b$		
		statusleiste(editorzahl,b)
	wend
	close(auslesen)
	WINDOW CLOSE "View_Ladebalken"
end sub

sub StatusLeisteAufbau() 

	F_Hoehe_Ueber1=((B_Hoehe/2)-100)
	F_Hoehe_Ueber2=((B_Hoehe/2)+100)
	F_Breite_Ueber1=((B_Breite/2)-200)
	F_Breite_Ueber2=((B_Breite/2)+200)

	window open F_Breite_Ueber1,F_Hoehe_Ueber1 to F_Breite_Ueber2,F_Hoehe_Ueber2, "View_Ladebalken", "xxx"
		window set "View_Ladebalken", "MinimumTo", 400,200
		window set "View_Ladebalken", "MaximumTo", 400,200
		window set "View_Ladebalken", "look", "modal"
	view 20,60 to 380,180, "DrawView", "View_Ladebalken"
		draw set "BgColor", 255,255,255, "DrawView"
 		draw set "HighColor", 108,166,205,"DrawView"
		draw set 0, "HighSolidFill"
end sub

sub statusleiste(editorzahl,b)

	draw set "highcolor", 0,0,0, "DrawView"	
	draw set 1, "HighSolidFill"
	draw circle 50,50, 41, "DrawView"
	draw set "highcolor", 0,0,245, "DrawView"
	radius=radius+0.125	
	draw line 50,50 to 50+cos(radius)*40,50+sin(radius)*40, "DrawView"

	if (radius=360) then
		radius=0
	endif	
	TEXTEDIT ADD "editor"+str$(editorzahl), FileLoad$(b)
	//TEXTEDIT ADD "editor", "\n"
	wait 0.01
	DRAW FLUSH "DrawView"

end sub

sub VerzeichnisZurueck()
	SizeFolderString=0
	BackFolder=0
	SizeFoldername=0
	dim FolderBack$(1)
	SizeFolderString=len(Drive_Selection$)
	BackFolder=split(Drive_Selection$, FolderBack$(), "/")
	SizeFoldername=len(FolderBack$(BackFolder))
	BackDriveName$=left$(Drive_Selection$, (SizeFolderString-(SizeFoldername+1)))
	if(BackDriveName$="")then
		read_folders()
	else
		Drive_Selection$=BackDriveName$
		read_folders()
	endif
end sub

sub ProgrammierSprachen(ProgrammierSprachenVerzeichnis$)				
	verzeichnisinhalt$=system$("ls -QA "+"\""+ProgrammierSprachenVerzeichnis$+"\"")
	print verzeichnisinhalt$
	dim splitdir_li$(1)
	n = split(verzeichnisinhalt$, splitdir_li$(), "\n")
		aa=0
		b_li$="\""
	//dateiname anzeigen     
	for aa = 1 to ab-1					
	 	posname_li=instr(splitdir_li$(i),b_li$,1)		 
		dateiname_li$=mid$(splitdir_li$(i),posname_li+1)
		posname_ende_li=len(dateiname_li$)
 	    dateiname_ohne_li$=left$(dateiname_li$,posname_ende_li-1)
	   // print dateiname_ohne_li$			
		DROPBOX ADD "DB_Language", dateiname_ohne_li$			
	next aa
end sub

sub ProgrammierSprachenInhalt(Auswahl$)
	ac=0
	ad=0
	ae=0	
	DateiAuswahl$=ProgrammierSprachenVerzeichnis$+"/"+Auswahl$
	auslesen=open(DateiAuswahl$, "r")

	while (not EOF(auslesen))
		line input #auslesen b$
		dim elements$(1)
	numElements = split(b$, elements$(),";")
		for ac = 1 to numElements
			ad=ad+1
			dim d$(ad)
			d$(ad) = elements$(ac)
			print d$(ad)
		next ac
	wend
	close(auslesen)

	anzahlspalten=numElements
	if (anzahlspalten<1) then
		anzahlzeilen=0
	else
		anzahlzeilen=ad/anzahlspalten
	endif
	print anzahlzeilen
	if (anzahlzeilen>0) then
		for ae = 1 to anzahlzeilen			
			//COLUMNBOX ADD ColumnBox$, Column, Row, Height, Item$
			columnbox ADD "CB_HTML", 2, az, 20, d$(ae) 			
		next ae	
	else
			columnbox ADD "CB_HTML", 2, 1, 20, "Kein Inhalt vorhanden"
	endif
end sub

sub kopieren_einfuegen(editor$)
	eingabe$=TEXTEDIT GET$ editor$
	CLIPBOARD COPY eingabe$
  //Copy Text$ to the system clipboard.
	Text$ = CLIPBOARD PASTE$
	TEXTEDIT ADD editor$, Text$
  //Paste ASCII text from the system clipboard into Text$.
end sub