fb:porticula NoPaste
MuhEdit 0.9.9
Uploader: | The_Muh |
Datum/Zeit: | 11.08.2008 00:23:37 |
'--------------Credits--------------'
' MuhEdit, version 0.9.9.0
' Programming and idea by The_Muh.
' Thanks to:
' MisterD, ThePuppetMaster for little pieces of code
' and Michael Tyca for Testing.
' Special thanks to:
' stevie1401 for the Linux-Clipboard-Code
' Mao for the Windows-Clipboard-Code
' Raph_Ael for some bytes of the Cursor (since 0.9.9) ;-)
'--------------licence--------------'
' This program is free software; you can redistribute it and/or modify
' it under the terms of the GNU General Public License as published by
' the Free Software Foundation; either version 2 of the License, or
' (at your option) any later version.
'
' This program is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
' GNU General Public License for more details.
'
' You should have received a copy of the GNU General Public License
' along with this program; if not, write to the Free Software
' Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
' MA 02110-1301, USA.
'-----------------------------------'
'declares:
declare sub search()
declare sub speichern()
declare sub laden(seite as string)
declare sub text(ByVal Maeh As Integer)
declare sub anzeige(anzeigetext() as string, X as integer, Y as integer)
declare function conv(key as string) as string
declare function directory(FL as integer) as string
DECLARE FUNCTION GetFromClipboard() AS INTEGER
DECLARE SUB SendToClipboard(ClipStr() AS STRING)
DECLARE FUNCTION exist(BYREF DateiName AS STRING, Attr AS INTEGER=&h27)AS INTEGER
declare function eingabe(ByVal frage As String ,vorgabe As String, X as integer,Y as integer) as string
declare function Max(array() as string) as integer
declare sub correct_cur()
'variablen:
dim shared as integer hoehe = 60, breite = 65
dim d as string
dim as string Li, Re
dim as integer ascL, ascR
dim shared as string tZeile()
dim shared as string seite
dim shared as integer zeile=3, spalte=1
dim as integer mzeile, mspalte, buttons
dim i as integer
dim L as integer
Dim as integer einf = 1
dim dirs as string
dim rest as string
dim shared a as integer
dim shared b as integer
dim shared pot_spalte as integer = 1
REDIM tzeile(1) AS STRING
'makros:
#macro datei (array2,endung,flag)
K = DIR("*." & endung,flag)
do
if len(k) and k <> "." and k <> ".." then
redim preserve array2(i)
array2(i) = K
i += 1
end if
K = DIR("")
LOOP until LEN(K) = 0' solange noch ein nicht gelistetes Verzeichnis existiert
#endmacro
#macro blubb(array)
dim key as string
c = 0
do
cls
locate 1, 1 : PRINT "MuhEdit Directory";
if flag = &h10 then print " | Set Directory = ESC"
locate 2, 1 : Print String(breite, asc("_"));
locate 3, 1 : Print right(Curdir,50);
locate hoehe,1 :Print "Switch between File / Directory = F1";
text(5)
for sh as integer = lbound(array) to hoehe-6 'text anzeigen...
if SH + A <= ubound(array) then
locate sh+4 ,1
if sh = c then
print "X "& sh + A &") /"& array(sh+A);
else
print " "& sh + A &") /"& array(sh+A);
end if
else
exit for
end if
if sh = 50 then exit for
next sh
do : sleep 1 : key = inkey : loop until key <> ""
select case key
case chr(255,59)
if flag = &h10 then
flag = &h00
else
flag = &h10
end if
exit do
case chr(255,73)
if A > 0 then
A -= 1
end if
case chr(255,81)
if c + a < ubound(array) then A += 1
case chr(255,72) 'oben
if c > 0 then c -= 1
if A > 0 and c = 0 then a -= 1
case chr(255,80) 'unten
if c < hoehe -6 and c < ubound(array) then
c += 1
else
if c + a < ubound(array) then A += 1
end if
case chr(27)
if flag = &h10 then weiter = 0
exit do
case chr(13)
if flag = &h10 then
if c = 0 then
dirs = ".."
else
dirs = dirname(c)
end if
chdir(dirs)
else
seite = filename(c)
weiter = 0
end if
exit do
end select
loop
#endmacro
'subs und funktionen:
sub angleichen()
if ubound(tzeile) < zeile + A then redim preserve tzeile(zeile + A) as string
end sub
sub anzeige(anzeigetext() as string, X as integer,Y as integer)
if X >= 0 then
for sh as integer = 3 to (hoehe - 2) 'text anzeigen...
if SH + X <= ubound(anzeigetext) then
locate sh, 1
print mid(anzeigetext(sh+X),Y +1,breite)
else
exit for
end if
next sh
else
for sh as integer = 3 to (hoehe -2)
locate sh, 1
print mid(anzeigetext(sh),Y +1,breite)
next sh
end if
'text(1)
end sub
function conv(key as string) as string
dim con as string
dim ascl as integer
ascL = asc(left(key,1))
select case ascL
'case 167 : con = chr(245) '§
case 228 : con = chr(132) 'ä
case 196 : con = chr(142)
case 246 : con = chr(148) 'ö
case 214 : con = chr(153)
case 252 : con = chr(129) 'ü
case 220 : con = chr(154)
case 223 : con = chr(225) 'ß
case else: con = chr(ascl)
end select
return con
end function
sub correct_curs()
angleichen()
if len(tzeile(zeile + A)) > pot_spalte and len(tzeile(zeile + a)) > 1 then
spalte = pot_spalte
end if
if len(tzeile(zeile + A)) < pot_spalte then
spalte = len(tzeile(zeile + A)) + 1
if len(tzeile(zeile + A)) = 0 then spalte = 1
end if
end sub
sub counter()
dim code as integer
dim blank as integer
dim i as integer
for i = 1 to ubound(tzeile)-1
if len(ltrim(tzeile(i))) = 0 or len(ltrim(tzeile(i),chr(9))) = 0 then blank += 1
if len(ltrim(tzeile(i),chr(9))) <> 0 and len(ltrim(tzeile(i))) <> 0 then code += 1
next i
locate 8,1
print "Textlines: "& code' - blank
print "Blanklines: "& blank
print ""
print "Gesamt: "& code + blank
end sub
function directory(FL as integer) as string
dim dirs as string
DIM AS STRING dirname()
dim filename() as string
dim as integer i = 1
dim c as integer
dim K as string
dim key as string
dim flag as integer
dim weiter as integer
weiter = 1
Locate 4,1
flag = fl
do
if flag = &h10 then
i = 1
redim dirname(1)
dirname(0) = ".."
datei(dirname,"*",flag)
else
i = 0
redim filename(1)
datei(filename,"txt",&h00)
datei(filename,"*ml",&h00)
datei(filename,"bas",&h00)
end if
text(5) 'linie
if flag = &h10 then
blubb(dirname)
if c > ubound(dirname) then continue do
else
blubb(filename)
if c > ubound(filename) then continue do
end if
loop until weiter = 0
if flag = &h00 then laden(seite)
if flag = &h10 then
text 2
locate hoehe,1 : print "Accepted";
getkey
end if
return dirs
end function
function eingabe(ByVal frage As String ,vorgabe As String, X as integer,Y as integer) as string
dim zeichen as string
dim zeichenkette as string
dim L as integer
dim Li as string
dim Re as string
dim ascR as integer
dim ascL as integer
dim einf as integer
dim spalte as integer
dim rest as string
einf = 1
zeichenkette = vorgabe
locate x, 1
print frage & Zeichenkette;
spalte = len(zeichenkette) +1
y = len(frage) +1
do
text(2)
text(6)
locate x,1: print frage;
locate x,len(frage) + 1: print Zeichenkette;
DRAW STRING ((y + spalte-2)*8 , (x-1)*8), "_" 'Cursor anzeigen
do : sleep 1 : zeichen = inkey : loop while zeichen = ""
Li = mid(zeichen, 1,1)
Re = mid(zeichen, 2.1)
ascL = asc(Li)
ascR = asc(Re)
L = len(zeichenkette)
select case ascR
case 82 'testen ob "einf" gedrückt wurde
if einf = 1 then 'der umschalter
einf = 0
else
einf = 1
end if
case 75: 'links
if spalte > 1 then spalte -= 1
case 77: 'rechts
if spalte < L then spalte += 1
end select
if ascL <> 255 then
select case ascL
case 8 'backspace
if L > spalte then
zeichenkette = left(zeichenkette,spalte-2) + right(zeichenkette,L -(spalte-1))
else
zeichenkette=left(zeichenkette,len(zeichenkette)-1)
end if
if spalte <> 1 then spalte -= 1
pot_spalte = spalte
case 13 'enter
return zeichenkette
locate 3,1
exit function
case 27
return vorgabe
locate 3,1
exit function
case 127 'entf
if L >= spalte then
zeichenkette = left(zeichenkette,spalte-1) + right(zeichenkette,L -(spalte))
end if
case else
if L >= spalte then
if einf = 0 then
MID(zeichenkette, spalte, 1) = zeichen
else
zeichenkette = left(zeichenkette, spalte-1) + zeichen + right(zeichenkette, (L - spalte +1) )
end if
else
zeichenkette = zeichenkette + zeichen
end if
spalte += 1
end select
end if
loop until zeichen = chr(13)
end function
FUNCTION exist(BYREF DateiName AS STRING, Attr AS INTEGER=&h27)AS INTEGER
RETURN DIR(DateiName, Attr)<>""
END FUNCTION
sub info()
cls
text(1)
dim array as integer
dim zeilen as integer
dim zeichen as integer
dim filesize as integer
OPEN seite FOR BINARY AS #1
filesize = LOF(1)
CLOSE #1
array = ubound(tzeile)
for i1 as integer = 1 to array
if len(tzeile(i1)) > 0 then
zeilen += 1
end if
next i1
for i2 as integer = 1 to array
zeichen += len(tzeile(i2))
next
filesize = filesize / 1024
locate 3,1:print "Filename: "& seite;
locate 4,1:print "Letters: "& zeichen;
locate 5,1:print "Filesize: "& filesize & " kB";
end sub
#ifdef __fb_Linux__
SUB sendtoclipboard(ClipStr() AS STRING)
DIM AS INTEGER i,ff
DIM AS STRING helper, file
file=EXEPATH+"/xcliptmp"
ff=FREEFILE
OPEN file FOR OUTPUT AS #ff
for i as integer = lbound(ClipStr) +3 to max(Clipstr())
PRINT #ff,ClipStr(i)
Next
CLOSE #ff
helper="less "+file+" | xclip -sel clip"
SHELL helper
END SUB
FUNCTION getfromclipboard() AS INTEGER
DIM AS STRING helper,file,dummy
DIM AS INTEGER i,j,ff
dim paste() as string
dim l as integer
file=EXEPATH+"/xcliptmp"
helper="xclip -o -sel clip > "+file
SHELL helper
IF exist(file) THEN
ff=FREEFILE
OPEN file FOR INPUT AS #ff
'i= max(tzeile())
WHILE NOT EOF(ff)
i+=1
LINE INPUT #ff,dummy
redim preserve paste(i)
paste(i)=dummy
Wend
CLOSE #ff
ELSE
i=0
END IF
if len(paste(i)) > 0 then
redim preserve tzeile(ubound(tzeile) + ubound(paste))
for x as integer = max(tzeile()) to zeile + 1 step -1
tzeile(x + ubound(paste) -1) = tzeile(x)
next
L = Len(tzeile(zeile + a))
tzeile(zeile +A) = left(tzeile(zeile +A), spalte +B-1) + paste(1) + right(tzeile(zeile +A), (L - spalte -B +1))
for x as integer = lbound(paste) +2 to ubound(paste)
tzeile(x+zeile-1) = paste(x)
next
end if
zeile += ubound(paste) -1
kill file
RETURN i
END FUNCTION
#endif
sub laden(seite as string)
dim as integer i = 2
'seite = file()
redim tzeile(1) as string
OPEN seite FOR INPUT AS #1
while not EOF(1)
i += 1
REDIM Preserve tzeile(i) AS STRING
line INPUT #1, tzeile(i)
wend
CLOSE #1
redim preserve tzeile(max(tzeile())) 'leere zeilen am ende der datei "abschneiden"
end sub
function max(array() as string) as integer
dim m as integer
for i as integer = 3 to ubound(array)
if len(ltrim(tzeile(i))) <> 0 then
m = i
end if
next
return m
end function
sub replace()
cls
dim keyword as string
dim positionX(1 to 46) as integer
dim positionY(1 to 46) as integer
dim repl as string
dim hit as integer
locate 1,1 : print "Search";
locate 2, 1 : Print String(breite , asc("_"));
text 5
keyword = eingabe("Keyword:","",hoehe,1)
repl = eingabe("Replace with:","",hoehe,1)
locate 3,1
for i as integer = 1 to ubound(tzeile)
hit = instr(tzeile(i),keyword)
if hit > 0 then
tzeile(i) = left(tzeile(i),hit-1) + repl + right(tzeile(i), len(tzeile(i)) - hit -len(keyword) +1 )
end if
next
end sub
sub search()
cls
dim as integer count = 1
dim keyword as string
dim positionX(1 to 46) as integer
dim positionY(1 to 46) as integer
dim hitnum as integer
dim suchpos as integer
dim as integer hit = 1
locate 1,1 : print "Search";
locate 2, 1 : Print String(breite , asc("_"));
text 5
keyword = eingabe("Keyword:","",hoehe,1)
locate 3,1
for i as integer = 1 to ubound(tzeile)
suchpos = 0
do
hit = instr(suchpos+1,tzeile(i),keyword)
if hit > 0 then
if count < 46 then
print count & ") Hit in Line: "& i - 2 &" Row: "& hit
positionX(count) = i
positionY(count) = hit
count += 1
else
print "Too much hits";
end if
end if
suchpos = hit + len(keyword) -1
loop until hit = 0
next
locate hoehe, 1
if positionX(1) <> 0 then
input "Jump to hit number: ", hitnum
zeile = positionX(hitnum)
spalte = positionY(hitnum)
end if
end sub
sub speichern()
cls
dim x as integer
dim as integer i = 3
dim K as string
dim filename() as string
redim filename(i)
'datei("txt"):datei("*ml"):datei("bas")
anzeige(filename(), 0, 0)
text 6 'linie
if len(seite) > 0 then
seite = eingabe("Filename:",seite,hoehe,1)
else
seite = eingabe("Filename:","example.txt",hoehe,1)
end if
OPEN seite FOR OUTPUT AS #1
For x = 3 to max(tzeile())
PRINT #1, rtrim(tzeile(x))
next
CLOSE #1
text(3) 'print accepted
getkey
end sub
sub text(ByVal Maeh As Integer)
select case maeh
case 1
locate 1, 1 : PRINT "Load = F2 / Save = F3 / Directory = F4 / Quit = ESC";
locate 2, 1 : Print String(breite , asc("_"));
Locate (hoehe-1),1 : Print String(breite , asc("_"));
Locate (hoehe),1 : Print String(breite , asc(" "));
Locate (hoehe),1 : Print "File: "& seite &" / Line: "& Zeile+A &" / Row:"& spalte+b & " " & len(tzeile(zeile +A));
case 2
locate (hoehe ), 1 : Print String(breite, asc(" "));
case 3
locate (hoehe), 1 : Print String(breite, asc(" "));
Locate (hoehe), 1 : Print "Accepted";
locate 3,1
case 4
locate (hoehe), 1 : Print String(breite, asc(" "));
Locate (hoehe), 1 : Print "False";
locate 3,1
case 5
Locate (hoehe-1),1 : Print String(breite, asc("_"));
case 6
locate 1, 1 : PRINT "MuhEdit Saver" ;
locate 2, 1 : Print String(breite, asc("_"));
Locate (hoehe-1),1 : Print String(breite, asc("_"));
case 7
locate 1, 1 : PRINT "MuhEdit Fileinfo";
locate 2, 1 : Print String(breite, asc("_"));
Locate (hoehe-1),1 : Print String(breite, asc("_"));
Locate (hoehe),1 : Print String(breite, asc(" "));
case else
exit sub
end select
end sub
'------WIndows-Speziefisch:------'
#ifndef __fb_linux__
#include "windows.bi"
Declare Sub WriteClipboard(Text As String)
Declare Function ReadClipboard() As String
declare sub s_t_a(text as string)
dim text2 as string
sub s_t_a(text2 as string)
dim paste() as string
dim suchpos as integer
dim count as integer
dim old as integer
dim as integer hit = 1
do
hit = instr(suchpos+1,text2,chr(13,10))
if hit > 0 then
count += 1
redim preserve paste(count)
if old > 0 then
paste(count) = mid(text2,old+2,hit - old -1 )
else
paste(count) = left(text2,hit -1)
end if
old = hit
end if
suchpos = hit + 1
loop until hit = 0
redim preserve paste(count+1)
paste(count+1) = mid(text2,old+2,hit - old -1)
redim preserve tzeile(ubound(tzeile) + ubound(paste))
for x as integer = max(tzeile()) to zeile + 1 step -1
tzeile(x + ubound(paste) -1) = tzeile(x)
next
L = Len(tzeile(zeile + a))
tzeile(zeile +A) = left(tzeile(zeile +A), spalte +B-1) + paste(1) + right(tzeile(zeile +A), (L - spalte -B +1))
for x as integer = lbound(paste) +2 to ubound(paste)
tzeile(x+zeile-1) = paste(x)
next
end sub
Function readClipboard() As String
Dim As Any Ptr hGlobal, pGlobal
Dim As String txt
OpenClipboard(0)
hGlobal=GetClipboardData(1)
If hGlobal then
pGlobal=GlobalLock(hGlobal)
txt=Space(lstrlen(pGlobal)) ' txt auf die Länge des Clipboards bringen
lstrcpy(strptr(txt), pGlobal)
ReadClipboard=txt
End If
CloseClipboard()
End Function
Sub writeClipboard(Txt As String)
Dim As Any Ptr lpMem, hGlobalClip
hGlobalClip=GlobalAlloc(GMEM_MOVEABLE Or GMEM_SHARE, Len(Txt)+1)
OpenClipboard(0)
EmptyClipboard()
lpMem=GlobalLock(hGlobalClip)
lstrcpy(lpMem, strptr(Txt))
GlobalUnlock(lpMem)
SetClipboardData(CF_TEXT, hGlobalClip)
CloseClipboard()
End Sub
#endif
'----Ende Windows-teil----'
'------------------Aufruf-flags auswerten------------------'
if command(1) = "-S" then
hoehe = HIWORD(WIDTH)
breite = LOWORD(WIDTH)
if command(2) <> "" then
seite = command(2)
laden(seite)
end if
CLS
elseif command(1) <> "-S" then
seite = command(1)
laden(seite)
screenres breite*8, hoehe * 8
COLOR 0, 15
CLS
end if
'------------------------hauptprogramm----------------------'
dirs = curdir
locate 3, 0
DO
'------ verwaltung + anzeige ------'
angleichen()
L = len(tzeile(zeile + A))
anzeige(tzeile(), A, B)
text 1
locate zeile ,spalte,1
DRAW STRING ((spalte-1)*8 , (zeile -1)*8), "_", 'Cursor anzeigen
'------ Eingabe ------':
do : sleep 1 'auf eingabe warten
d = inkey
getmouse mspalte, mzeile,,buttons
mzeile = mzeile / 8
mspalte = mspalte / 8
if buttons = 1 and mzeile <= (hoehe - 2) and mzeile > 3 then
locate zeile,spalte : print " "
zeile = mzeile
spalte = mspalte
'Begin Mouse-Check Code
if ubound(tZeile) < zeile + A then redim preserve tZeile(zeile + A) as string
tZeile(zeile + A) = rtrim(tZeile(zeile + A))
if mspalte > len(tZeile(zeile + A)) then
spalte = len(tZeile(zeile + A)) + 1
else
spalte = mspalte
end if
'End Mouse-Check Code
pot_spalte = spalte
d = ""
exit do
end if
loop until d<>""
locate zeile ,spalte,1
if d = "" then continue do
Re = mid(d, 2.1)
ascR = asc(Re)
if command(1) <> "-S" then D = conv(D)
Li = mid(d, 1,1)
ascL = asc(Li)
'------ Verarbeitung teil 1 ------':
SELECT CASE ascR
case 72 'oben
if zeile > 3 then
zeile -= 1
else
if A > 0 then A -= 1
end if
correct_curs
case 80 'unten
if zeile < (hoehe - 2) then
zeile += 1
else
A += 1
end if
correct_curs
case 75 'links
if spalte > 1 then 'nicht am zeilenanfang
spalte-=1
pot_spalte = spalte
else 'am zeilenanfang
if zeile > 3 and zeile < (hoehe - 2) then
if B = 0 then
zeile -= 1
spalte = 1
else
B -= 1
end if
elseif zeile = 3 or zeile = (hoehe-2) then
if B <> 0 then
B -= 1
elseif B = 0 then
if zeile = hoehe-2 then zeile -= 1
if A > 0 then A -= 1
end if
end if
end if
case 77 'rechts
if spalte + b < L + 2 then
if spalte < breite then
spalte += 1
pot_spalte = spalte
elseif spalte = breite then
b += 1
end if
end if
if spalte + b >= l +2 then
spalte = 1
if zeile < (hoehe - 2) then
zeile += 1
else
A += 1
end if
end if
case 107 'das X oben
exit do
case 63 'F5, hohe und breite
if command(1) <> "-S" then
CLS
text(1)
locate 3,1 : print "The width must be 55 or higher"
locate 4,1 : print "The Heigth must be 20 or higher"
locate 5,1 : Input "Heigth: ", Hoehe
Locate 6,1 : Input "Width: ", Breite
if breite < 65 then breite = 65
if hoehe < 40 then hoehe = 40
screenres breite *8, hoehe * 8
if zeile > hoehe then
A += zeile-hoehe+2
zeile = 3
end if
COLOR 0, 15
end if
case 64 'f5 (dateiinfo)
info()
counter()
getkey
case 62 'F4 (verzeichnis wechseln)
dirs = directory(&h10)
text(1)
case 61 'seite speichern(F3)
speichern()
text(1)
case 60 'Laden (F2)
dirs = directory(&h00)
text(1)
case 82 'einfügen
if einf = 1 then
einf = 0
else
einf = 1
end if
case 73 'bild hoch
if A > 0 then
A -= 1
end if
case 81 'bild runter
a += 1
case 71
spalte = 1
b = 0
case 79
spalte = len(tzeile(zeile +A)) +1
if spalte > 50 then
B = spalte - 50
spalte -= B
end if
end select
'------ Verarbeitung teil 2 ------':
if ascL <> 255 then
select case ascL
case 6
search()
if zeile > 46 then
A = zeile - 46
zeile -= A
end if
case 8 'backspace
if spalte > 1 then 'nicht am zeilenanfang
if B = 0 then
spalte-=1
else
b -= 1
end if
locate zeile,spalte
L = len(tzeile(zeile +A))
if L >= spalte+B then
tzeile(zeile+A) = left(tzeile(zeile+A),B + spalte-1) + right(tzeile(zeile+A),L -(spalte+B))
else
tzeile(zeile +A)=left(tzeile(zeile +A),len(tzeile(zeile +A))-1)
end if
else 'am zeilenanfang
if zeile + A <= max(tzeile()) and zeile > 3 then
redim preserve tzeile(ubound(tzeile) + 1)
rest = tzeile(zeile)
tzeile(zeile-1) = tzeile(zeile-1) + ltrim(rest)
for x as integer = zeile TO max(tzeile())
tzeile(x) = tzeile(x+1)
next
redim preserve tzeile(ubound(tzeile) -1)
zeile -= 1
end if
if zeile > max(tzeile()) and zeile > 3 then
zeile -= 1
spalte = len(rtrim(tzeile(zeile)))+1
end if
if zeile = 3 and a > 0 then
if A > 0 then A -= 1
spalte = len(rtrim(tzeile(zeile+a)))+1
end if
pot_spalte = spalte
end if
case 13 'enter
if L > (spalte + b) and zeile > 3 then
redim preserve tzeile(ubound(tzeile) + 1)
for x as integer = ubound(tzeile) to (zeile +1) step -1
tzeile(x) = tzeile(x-1)
next
rest = right(tzeile(zeile +A), (L - (spalte + B))+1)
tzeile(zeile+A) = left(tzeile(zeile+A), (Spalte +B) -1)
tzeile(Zeile+A+1) = rest
elseif zeile + a < max(tzeile()) and Len(ltrim(tzeile(zeile))) = 0 then
redim preserve tzeile(ubound(tzeile) + 1)
for x as integer = ubound(tzeile) to (zeile +1) step -1
tzeile(x) = tzeile(x-1)
next
end if
if zeile < (hoehe - 2) then
zeile += 1
spalte = 1
B = 0
else
spalte = 1
B = 0
A += 1
end if
pot_spalte = spalte
case 127
if L >= spalte then
tzeile(zeile+A) = left(tzeile(zeile+A),B + spalte-1) + right(tzeile(zeile+A),L -(spalte+B))
end if
'------ Copy und Paste ------':
case 3
#ifdef __fb_linux__
if shell("xclip -version") = 0 then sendtoclipboard(tzeile())
#else
for i as integer = 1 to max(tzeile())
text2 = text2 + tzeile(i) + chr(13,10)
next
text2=left(text2,len(text2)-2)
WriteClipboard(Text2)
#endif
case 22
#ifdef __fb_linux__
if shell("xclip -version") = 0 then getfromclipboard()
#else
text2 = ReadClipboard
s_t_a(text2)
#endif
'-----------------------------'
case 18
replace()
case 19
speichern()
text(1)
case 27 'escape
exit do
case 32 to 127,9,245, 132,142,148,153,129,154,225
if D = chr(9) then
D = " "
if spalte <= breite -4 then
spalte +=4
else
B += 4 - (breite - spalte)
end if
end if
L = len(tzeile(zeile +A))
if L >= spalte + B then
if einf = 0 then
MID(tzeile(zeile + A), spalte +B, 1) = d
else
tzeile(zeile +A) = left(tzeile(zeile +A), spalte +B-1) + d + right(tzeile(zeile +A), (L - spalte -B +1))
end if
else
tzeile(zeile +A) = tzeile(zeile +A) + d
end if
if spalte = breite then
b += 1
else
spalte += 1
end if
pot_spalte = spalte
end select
end if
cls
loop
end
'------------------------------todo-----------------------------
'Bis 1.0:
'- Copy&Paste für Windows
'- Fertigstellung und bugfreiheit aller, für Textbearbeitung notwendiger features
'---------------------------------------------------------------