home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: InfoMgt
/
InfoMgt.zip
/
kim21.zip
/
EDIT.KIM
< prev
next >
Wrap
Text File
|
1995-07-27
|
22KB
|
956 lines
rem Datum : 12.93 / 4.94 / 7.94
rem Version : 2.1
rem Programm : Editor
rem Programmierer : JK
deffloat a,b,c,i,t,y,flag,taste,ok
defstring objekt, _suchtext, _tauschtext,ostyp
deffloat _case , _tausch_key
defstring _pfad_kim , _pfad_kmask, _pfad_arbeit
defstring aktpfad,_conf_datei,zeichen
deffloat _load_pos
dim _load_datei,1,5
deffloat _text_insert,..
_text_format,..
_text_mlfie_cftext,..
_text_setsel,..
_text_backcol,..
_text_textcol,..
_text_undo,..
_text_getline,..
_text_setline,..
_text_len,..
_text_clear,..
_textlen,..
_text_limit
rem FLAGS im OS/2 Message-System für MLE-Objekte
rem siehe IBM/REDBOOKS
_text_format = 449
_text_insert = 457
_text_setsel = 458
_text_backcol = 468
_text_textcol = 466
_text_undo = 462
_text_getline = 445
_text_setline = 446
_text_len = 448
_text_clear = 475
_text_limit = 432
os_type ostyp
if ostyp<>"OS2" then
beep : beep
end
endif
rem _textlen=32700
_textlen=64000
dimmemo test1,_textlen
defstring _dateiname
defstring _dummy
_dateiname="NONAME.KIM"
rem Definiert eine Palette mit der Vordergrundsfarbe 7 und Hintergrund 0
def_palette 1,1,15
def_palette 2,0,7
def_palette 3,4,7
def_palette 9,0,7
loadfont "H10","Helv" ,10
loadfont "H8" ,"Helv",8
loadfont "T12","Times New Roman Bold",12
loadfont "C8","Courier" ,8
set_keymap "F2",10002,2
set_keymap "F3",10003,3
set_keymap "F4",10004,4
set_keymap "F5",10005,5
set_keymap "F6",10006,6
set_keymap "F7",10007,7
set_keymap "F8",10008,8
set_keymap "F9",10009,9
rem Pfadzuweisungen laden
getdir aktpfad
_conf_datei=aktpfad+"\kex.cfg"
exist _conf_datei,ok
if ok=1 then
open 2,_conf_datei,"r"
gets 2,_pfad_kim
gets 2,_pfad_kmask
gets 2,_pfad_arbeit
for a=1 to 5
gets 2,_load_datei[a]
if _load_datei[a]="EOF" then
_load_datei[a]=""
endif
if _load_datei[a]<>"" then _load_pos=_load_pos+1 : endif
next
close 2
else
getdir aktpfad
_pfad_kim =aktpfad+"\KIM.EXE"
_pfad_kmask=aktpfad+"\KMASK.KIM"
_pfad_arbeit=""
open 2,_conf_datei
puts 2,_pfad_kim
puts 2,_pfad_kmask
puts 2,_pfad_arbeit
puts 2,""
puts 2,""
puts 2,""
puts 2,""
puts 2,""
close 2
endif
rem Wechseln in das Arbeitsverzeichnis
mid _pfad_arbeit,zeichen,2,1
if zeichen=":" then
mid _pfad_arbeit,zeichen,1,1
ucase zeichen
asc zeichen,t
t=t-64
setdrive t,y
endif
chdir _pfad_arbeit,t
def_window_st "window",2,2,75,15,"KIM-Editor"
rem set_item_status "window",0,"maximized"
call fenster_inhalt()
rem Menüpunkte akualisieren (KEX.CFG)
set_item_array "lo_",_load_datei,1,5
win_paint "window"
rem Hintergrundfarbe des MLE-Fensters
winsentmsg "text",_text_backcol,15,0,a
winsentmsg "text",_text_textcol,9,0,a
rem Textbox erhält Eingabefokus
event_on_item "text","select"
event_on_item "text","current"
set_item "pr2",_dateiname
while i<>1000
win_ev i
if i<>1 then
winsentmsg "text",459,4,0,a
rem winsentmsg "text",445,a,0,a
if a<>b then
form a,_dummy,0,5
_dummy="Zeichen :"+_dummy
set_item "pr4",_dummy
b=a
endif
endif
get_item_pos objekt,taste
if taste=13 then
call auswerten(objekt,i)
endif
if taste>10000 then
call fx_tasten(taste)
endif
wend
rem Konfigurationsdatei schreiben
kill _conf_datei
open 2,_conf_datei
puts 2,_pfad_kim
puts 2,_pfad_kmask
puts 2,_pfad_arbeit
for a=1 to 5
puts 2,_load_datei[a]
next
close 2
end
rem ---------------------------------------------------------------------
rem U N T E R P R O G R A M M E
rem ---------------------------------------------------------------------
modul fx_tasten(float taste)
deffloat a,ok
defstring zeile
if taste=10003 then
event_on_item "text","select"
event_on_item "text","current"
search_mle "text",_suchtext,0,_case,-1,zeile,a
exitmod
endif
if taste=10004 and _tausch_key=1 then
winsentmsg "text",_text_insert,_tauschtext,0,a
search_mle "text",_suchtext,0,_case,-1,zeile,a
exitmod
endif
if taste=10005 then
_tausch_key=0
set_item "pr3",""
exitmod
endif
if taste=10008
call label()
exitmod
endif
if taste=10009 then
exist "KIM.ERR",a
if a=1 then
open 6,"kim.err","r"
gets 6,zeile
close 6
val zeile,a
winsentmsg "text",_text_setsel,a,a,ok
endif
endif
endmod
modul auswerten(char obj,float i)
deffloat a,flag,ok,i
defstring suche,tausche,pfadalt,pfad
defstring rueck,zeile,zeichen,text
if obj="datei_quit" then
call datei_veraendert(a)
if a<>3 then
i=1000
endif
exitmod
endif
if obj="datei_neu" then
get_item_status "text","changed",ok
if ok=1 then
call speichern(a)
endif
if a<>-1 then
test1=""
set_item "text",test1
event_on_item "text","redisplay"
_dateiname="NONAME.KIM"
set_item "pr2",_dateiname
set_item_status "text",1,"changed"
endif
exitmod
endif
if obj="datei_laden" then
get_item_status "text","changed",ok
if ok=1 then
call speichern(a)
endif
call laden(a,"")
set_item_status "text",1,"changed"
exitmod
endif
mid obj,suche,1,3
if suche="lo_" then
get_item_status "text","changed",ok
if ok=1 then
call speichern(a)
endif
get_item obj,suche
call laden(a,suche)
set_item_status "text",1,"changed"
exitmod
endif
if obj="datei_speichern" then
get_item_status "text","changed",a
if a<>-1 then
set_item "pr3","Datei wird gesichert..."
get_item "text",test1
savememo _dateiname,test1,a
if a<>1 then
set_item "pr3","Diese Datei wurde nicht korrekt gesichert !"
else
set_item "pr3",""
set_item_status "text",1,"changed"
endif
endif
exitmod
endif
if obj="datei_speichern2" then
call speichern(a)
exitmod
endif
if obj="datei_druck" then
get_item "text",test1
savememo "prn",test1,a
rem open 1,"prn"
rem puts 1,test1
rem puts 1,chr(12)
close 1
exitmod
endif
if obj="bearbeiten_suchen" then
call such_box("Suchen","Suchtext : ",_suchtext ,35)
set_item "pr3"," F3 = Weiter F5 = Abbrechen "
event_on_item "text","select"
event_on_item "text","current"
search_mle "text",_suchtext,0,_case,-1,zeile,a
exitmod
endif
if obj="bearbeiten_tauschen" then
call tausch_box(_suchtext,_tauschtext)
_tausch_key=1
setclip _tauschtext
event_on_item "text","select"
event_on_item "text","current"
set_item "pr3"," F3 = Weiter F4 = Tauschen F5 = Abbrechen "
search_mle "text",_suchtext,0,_case,-1,zeile,a
exitmod
endif
if obj="bearbeiten_undo" then
event_on_item "text","select"
event_on_item "text","current"
winsentmsg "text",_text_undo,0,0,a
exitmod
endif
if obj="option_pfade" then
call pfad_box()
exitmod
endif
if obj="option_fehler" then
exist "KIM.ERR",a
if a=1 then
open 6,"kim.err","r"
gets 6,zeile
close 6
val zeile,a
winsentmsg "text",_text_setsel,a,a,ok
endif
endif
if obj="option_mask" then
rem Zuerst prüfen ob Datei sich verändert hat
call datei_veraendert(a)
if a<>3 then
get_item "pr3",zeile
set_item "pr3","Maskengenerator wird gestartet ..."
rem Verzeichnis wechseln
shell _pfad_kim,"",_pfad_kmask
set_item "pr3",zeile
endif
exitmod
endif
endmod
modul fenster_inhalt()
def_toolbar "tool",0,0,0,0 ; "region off","border"
def_prompt "pr1",0,0," Datei : ";"H10"
def_prompt "pr2",0,0," ";"H10"
def_prompt "pr3",0,1," ";"color on","H10"
def_prompt "pr4",0,2," ";"H10"
color_item "pr3",3
add_item "tool","pr1","pr2","pr3","pr4"
def_pulldown_item "p_datei","&Datei",1
def_pulldown_item "p_bearbeiten","&Bearbeiten",1
def_pulldown_item "p_start","&Start",0
def_pulldown_item "p_option","&Optionen",1
def_pulldown_item "p_tabelle","&Labeltabelle",0
def_popup_item "datei_neu","&Neu"
def_popup_item "datei_laden","&Laden"
def_popup_item "datei_speichern","&Speichern"
def_popup_item "datei_speichern2","Speichern &unter"
def_popup_item "datei_druck","&Druck"
def_popup_item "datei_quit","&Quit"
def_popup_item "lo_0","";"sep"
def_popup_item "lo_1","1"
def_popup_item "lo_2","2"
def_popup_item "lo_3","3"
def_popup_item "lo_4","4"
def_popup_item "lo_5","5"
def_popup_item "bearbeiten_undo","&Rückgängig machen "
def_popup_item "bearbeiten_suchen" ,"&Suchen"
def_popup_item "bearbeiten_tauschen","&Tauschen"
def_popup_item "option_fehler","Letzte &Fehlerposition <F9>"
def_popup_item "option_pfade","Such&pfade"
def_popup_item "option_mask","Maskengenerator"
add_item "p_datei",..
"datei_neu",..
"datei_laden",..
"datei_speichern",..
"datei_speichern2",..
"datei_druck",..
"datei_quit",..
"lo_0",..
"lo_1",..
"lo_2",..
"lo_3",..
"lo_4",..
"lo_5"
add_item "p_bearbeiten",..
"bearbeiten_undo",..
"bearbeiten_suchen",..
"bearbeiten_tauschen"
add_item "p_option",..
"option_fehler",..
"option_pfade",..
"option_mask"
def_text "text",0,0,255,15,_textlen,test1 ; "region off","border","wrap off","C8"
rem Flag = 0 HZ 1 VT sonst CORNER */
def_scrollbar "scroll1",0,0,0,0,0
def_scrollbar "scroll2",1,0,0,0,0
add_item "text","scroll1","scroll2"
def_pulldown_menu "menu",1 ;"border"
add_item "menu","p_datei","p_bearbeiten","p_start","p_option","p_start","p_tabelle"
add_item "window","menu","tool","text"
endmod
modul speichern(float flag)
deffloat ok
defstring datei
flag=0
msgbox "Datei speichern ?",1,ok,""
if ok=1 then
load "window","*.kim",datei,"Datei speichern "
if datei="" then
flag=-1
else
get_item "text",test1
savememo datei,test1,ok
_dateiname=datei
set_item "pr2",_dateiname
endif
endif
endmod
modul laden(float flag,char datei)
deffloat ok,i
defstring text,text2
flag=0
if datei="" then
load "window","*.kim",datei,"Datei laden "
endif
if datei="" then
flag=-1
else
filelen datei,ok
if ok>_textlen then
msgbox "Datei zu groß !",0,ok,""
flag=-1
exitmod
endif
set_item "pr3","Datei wird geladen ..."
loadmemo datei,test1,ok
_dateiname=datei
set_item "text",test1
rem event_on_item "text","redisplay"
set_item "pr2",_dateiname
rem Menü-verändern
ok=0
for i=1 to 5
if _load_datei[i]=datei then
ok=1
endif
next
if ok=0 then
_load_pos=_load_pos+1
if _load_pos>5 then _load_pos=1 :endif
form _load_pos,text,0,1
text="lo_"+text
set_item text,_dateiname
_load_datei[_load_pos]=_dateiname
endif
endif
set_item "pr3",""
endmod
modul input_box(char ueber,char text,char ausgabe,float laenge)
deffloat y,t
defstring meier
def_window "msg",10,5, 45,6
def_border "msg_border"
def_titel "msg_titel",ueber
def_button "msg_button1",5 ,3,15,""," OK "
def_button "msg_button2",21,3,15,""," Abbruch "
def_prompt "msg_pr",5,0,text
def_string "msg_in",5,1,laenge,ausgabe ;"border"
add_item "msg",..
"msg_border",..
"msg_titel",..
"msg_pr",..
"msg_in",..
"msg_button1",..
"msg_button2"
win_paint "msg"
while y<>1000
win_ev y
get_item_pos meier,t
if t=13 then
if meier="msg_button1" then
y=1000
get_item "msg_in",ausgabe
endif
if meier="msg_button2" then
y=1000
ausgabe=""
endif
endif
wend
event_on_item "msg","end"
endmod
modul such_box(char ueber,char text,char ausgabe,float laenge)
deffloat y,t,ok
defstring meier
def_window "such",10,5, 45,12;"modal","move off"
def_border "such_border"
def_titel "such_titel",ueber
def_button "such_button1",5 ,9,15,""," &OK "
def_button "such_button2",21,9,15,""," &Abbruch "
def_prompt "such_pr",5,0,text
def_string "such_in",5,1,laenge,ausgabe ;"border","clear"
def_group "such_group",5,3,35,5,"Groß/Kleinschrift";"H8"
def_button "such_radio1",2,1,30,"","unterscheiden";"radio"
def_button "such_radio2",2,2,30,"","nicht unterscheiden";"radio"
add_item "such_group","such_radio1","such_radio2"
set_item_status "such_radio2",0,"select"
add_item "such",..
"such_border",..
"such_titel",..
"such_pr",..
"such_in",..
"such_button1",..
"such_button2",..
"such_group"
win_paint "such"
while y<>1000
win_ev y
get_item_pos meier,t
if t=13 then
if meier="such_button1" then
y=1000
get_item "such_in",ausgabe
endif
if meier="such_button2" then
y=1000
ausgabe=""
endif
endif
wend
GET_ITEM_STATUS "such_radio1","set",ok
if ok=1 then
_case=0
else
_case=1
endif
event_on_item "such","end"
endmod
modul tausch_box(char ausgabe,char ausgabe2)
deffloat y,t,ok,laenge
defstring meier
laenge=35
def_window "tausch",10,5, 45,14;"modal","move off"
def_border "tausch_border"
def_titel "tausch_titel","Tausche"
def_button "tausch_button1",5 ,11,15,""," &OK "
def_button "tausch_button2",21,11,15,""," &Abbruch "
def_prompt "tausch_pr",5,0,"Suchtext:"
def_string "tausch_in",5,1,laenge,ausgabe ;"border"
def_prompt "tausch_pr2",5,2,"Ersetzen durch:"
def_string "tausch_in2",5,3,laenge,ausgabe2 ;"border"
def_group "tausch_group",5,5,35,4,"Groß/Kleinschrift";"H8"
def_button "tausch_radio1",2,1,30,"","unterscheiden";"radio"
def_button "tausch_radio2",2,2,30,"","nicht unterscheiden";"radio"
add_item "tausch_group","tausch_radio1","tausch_radio2"
set_item_status "tausch_radio2",0,"select"
add_item "tausch",..
"tausch_border",..
"tausch_titel",..
"tausch_pr",..
"tausch_in",..
"tausch_pr2",..
"tausch_in2",..
"tausch_button1",..
"tausch_button2",..
"tausch_group"
win_paint "tausch"
while y<>1000
win_ev y
get_item_pos meier,t
if t=13 then
if meier="tausch_button1" then
y=1000
get_item "tausch_in",ausgabe
get_item "tausch_in2",ausgabe2
endif
if meier="tausch_button2" then
y=1000
ausgabe=""
ausgabe2=""
endif
endif
wend
GET_ITEM_STATUS "tausch_radio1","set",ok
if ok=1 then
_case=0
else
_case=1
endif
event_on_item "tausch","end"
endmod
modul pfad_box()
deffloat y,t,ok,laenge
defstring meier,zeichen
laenge=35
def_window "pfad",10,5, 45,14;"modal","move off"
def_border "pfad_border"
def_titel "pfad_titel","Pfadeinstellungen"
def_button "pfad_button1",5 ,11,15,""," &OK "
def_button "pfad_button2",21,11,15,""," &Abbruch "
def_prompt "pfad_pr",5,0,"Pfad + KIM Interpreter"
def_string "pfad_in",5,1,laenge,_pfad_kim ;"border"
def_prompt "pfad_pr2",5,2,"Pfad + KIM Maskengenerator"
def_string "pfad_in2",5,3,laenge,_pfad_kmask ;"border"
def_prompt "pfad_pr3",5,4,"Arbeitsverzeichnis"
def_string "pfad_in3",5,5,laenge,_pfad_arbeit ;"border"
add_item "pfad",..
"pfad_border",..
"pfad_titel",..
"pfad_pr",..
"pfad_in",..
"pfad_pr2",..
"pfad_in2",..
"pfad_pr3",..
"pfad_in3",..
"pfad_button1",..
"pfad_button2"
win_paint "pfad"
while y<>1000
win_ev y
get_item_pos meier,t
if t=13 then
if meier="pfad_button1" then
y=1000
get_item "pfad_in",_pfad_kim
get_item "pfad_in2",_pfad_kmask
get_item "pfad_in3",_pfad_arbeit
endif
if meier="pfad_button2" then
y=1000
endif
endif
wend
kill _conf_datei
open 2,_conf_datei
puts 2,_pfad_kim
puts 2,_pfad_kmask
puts 2,_pfad_arbeit
for t=1 to 5
puts 2,_load_datei[t]
next
close 2
event_on_item "pfad","end"
rem Wechseln in das Arbeitsverzeichnis
mid _pfad_arbeit,zeichen,2,1
if zeichen=":" then
mid _pfad_arbeit,zeichen,1,1
ucase zeichen
asc zeichen,t
t=t-64
setdrive t,y
endif
chdir _pfad_arbeit,t
endmod
modul label()
defstring zeile,id$,zahl$
deffloat a,i,pos,ok
call label_fenster()
set_item "pr3","Labeltabelle wird geladen ..."
get_item "text",test1
a=-1
search_mle "text","modul ",1,1,0,zeile,a
pos=a
i=0
while a<>-1
i=i+1
form i,zahl$,0,1
id$="la"+zahl$
def_string id$,0,i,45,zeile
add_item "label_box",id$
a=-1
search_mle "text","modul ",1,1,pos,zeile,a
pos=a
wend
set_item "pr3",""
win_paint "label_window"
call label_auswahl(zeile)
if zeile<>"" then
event_on_item "text","select"
event_on_item "text","current"
_suchtext=zeile
a=0
search_mle "text",_suchtext,1,1,0,zeile,a
endif
endmod
MODUL label_fenster()
DEF_WINDOW_ST "label_window",2,2,50,15,"Labeltabelle";"modal","move off"
DEF_LIST "label_box",0, 2,1,45,10,0,0;"border","sort"
def_scrollbar "label_scroll",1,0,0,0,0
DEF_BUTTON "label_button1",15,12,12,""," &Abbruch "
add_item "label_box","label_scroll"
ADD_ITEM "label_window",..
"label_box",..
"label_button1"
ENDMOD
modul label_auswahl(char label)
deffloat i,taste,a,b
deffloat _zahl
defstring id,zeichen,text
while i<>1000
win_ev i
get_item_pos id,taste
if taste=13 then
if id="label_button1" then
label=""
i=1000
else
mid id,zeichen,1,2
if zeichen="la" then
get_item id,label
i=1000
endif
endif
endif
wend
event_on_item "label_window","end"
endmod
modul datei_veraendert(float ok)
deffloat a
get_item_status "text","changed",a
if a<>-1 then
msgbox "Datei wurde verändert ! Sichern ?",2,ok,""
rem msgbox "Datei wurde verändert. Speichern ?",2,ok,""
if ok=1 then
set_item "pr3","Datei wird gesichert..."
get_item "text",test1
savememo _dateiname,test1,a
if a<>1 then
set_item "pr3","Diese Datei wurde nicht korrekt gesichert !"
ok=3
else
set_item "pr3",""
set_item_status "text",1,"changed"
endif
endif
endif
endmod
modul p_start_select()
deffloat i,a,ok
defstring text,zeile,zeichen
rem Zuerst prüfen ob Datei sich verändert hat
call datei_veraendert(a)
if a<>3 or a=-1 then
get_item "pr3",text
set_item "pr3","Programm wird gestartet ..."
rem Verzeichnis wechseln
zeile=_dateiname
len zeile,a
for i=1 to a
mid zeile,zeichen,i,1
if zeichen="\" then ok=i : endif
next
if ok>1 then
mid zeile,zeile,1,ok-1
endif
chdir zeile,a
shell _pfad_kim,"",_dateiname
set_item "pr3",text
endif
endmod
modul p_tabelle_select()
call label()
endmod
rem ******************** Programm Ende **********************