/*
   $VER: NotifiyPlusGUI.Rexx 1.0 (05.04.2000)
   Martin Preisinger <preisinger@new-wen.net>
*/

Signal On Syntax
Options Results
Options FailAt 100
If ~Show('L','rexxdossupport.library') Then AddLib('rexxdossupport.library',1,-30,0)
If ~Show('L','rexxtricks.library') Then AddLib('rexxtricks.library',0,-30,0)
If ~Show('L','rexxreqtools.library') Then AddLib('rexxreqtools.library',0,-30,0)
If ~Show('L','rexxsupport.library') Then AddLib('rexxsupport.library',0,-30,0)
Parse Source .' '.' '.' 'Prog' '
Parse Arg List
If Arg(1,'E') Then Do
If ~Exists(List) Then Do
GF = RTEZRequest('Die gewählte Datei exisitert nicht.'||'0a'X||'Soll sie erzeugt werden?','_Ja|_Nein','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
If GF = 1 Then Do
If ~Open('List',List,'W') && ~Close('List') Then Do
RTEZRequest('Die Datei konnte'||'0a'X||'nicht erzeugt werden.','_OK','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
Exit
End
Line.0 = 1
Line.1 = ''
End
Else Exit
End
End
Else Do
List = GetToolTypeValue(Prog,'List')
If List = '' Then List = 'AMIRC:NotifyPlus/NotifyPlus.List'
End
Asterisk = GetToolTypeValue(Prog,'Asterisk')
If Upper(Asterisk) ~= 'YES' Then PH = '#?'
Else PH = '*'
Font = GetToolTypeValue(Prog,'Font')
If Upper(Font) = 'SCREEN' Then Window.Font = 'Screen'
If ~ReadFile(List,'Line') Then Do
List = RTFileRequest('SYS:','NotifyPlus.List','NotifyPlus Konfiguration laden...','Laden')
Select
When List = '' Then Exit
When ~Exists(List) Then Do
GF = RTEZRequest('Die gewählte Datei exisitert nicht.'||'0a'X||'Soll sie erzeugt werden?','_Ja|_Nein','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
If GF = 1 Then Do
If ~Open('List',List,'W') && ~Close('List') Then Do
RTEZRequest('Die Datei konnte'||'0a'X||'nicht erzeugt werden.','_OK','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
Exit
End
Line.0 = 1
Line.1 = ''
End
Else Exit
End
When ~ReadFile(List,'Line') Then Do
Beep()
Exit
End
Otherwise NOP
End
End
Window.GadgetText = '_Ändern|Klemm_brett|E_rstellen|_Löschen|_<|E_infügen|_>|S_ortieren|La_den|S_peichern|_Abbruch'
Window.Sort = 'False'
Window.MultiSelect = 'False'
ShowList:
Window.Title = 'NotifyPlusGUI - "'List'"'
If Line.0 = 0 Then Do
Line.0 = 1 ; Line.1 = ''
End
OK = ViewList('Line','Window','SLine')
Select
When OK & SLine.Gadget = 1 Then Do
Num = LSearch(SLine.1,'Line',1,'C','S')
If Num ~= -1 Then Do
EditEntry:
NLine = RTGetString(SLine.1,'Eintrag ändern. Format: <Nick> <Hostmask> <Kommando>','NotifyPlusGUI','_OK|_Abbruch','RTGL_Flags = GLReqF_CenterText')
If NLine = '' Then ShowList()
If Words(NLine) >= 3 Then Do
Line.Num = NLine
Change = 1
End
Else Do
Beep()
EditEntry()
End
End
Else Beep()
End
When SLine.Gadget = 2 Then Do
ComArgs = ''
ReadClipboard(0,'Clip')
Clip = Compress(Clip.1,D2C(002))
If ~RXTR_MatchPattern(Clip,'#?«#?» #? #? (#?@#?.#?.#?)#?','N') Then Do
If Length(Clip) > 55 Then Clip = Left(Clip,49)' [...]'
If Clip = 'CLIP.1' Then Clip = ' '
Beep()
RTEZRequest('Der Inhalt der Klemmbrettes'||'0a'X||'('Clip')'||'0a'x||'kann nicht verarbeitet werden.','_OK','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
ShowList()
End
Parse Var Clip '»'.' '.' 'Nick' ('Host')'
HM1 = PH'!'PH'@'PH||SubStr(Host,Pos('.',Host))
HM2 = PH'!'Strip(SubStr(Host,1,Pos('@',Host)),'L','~')||PH||SubStr(Host,Pos('.',Host))
HMSel = RTEZRequest('Hostmask für den Nick "'Nick'"'||'0a'X'0a'X||'1 -' HM1||'0a'X||'2 -' HM2,'_1|_2|_Abbruch','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
Select
When HMSel = 1 Then Hostmask = HM1
When HMSel = 2 Then Hostmask = HM2
Otherwise ShowList()
End
ComSel = RTEZRequest('Kommando für den Nick "'Nick'"'||'0a'X'0a'X||'1 - Beep'||'0a'X||'2 - Requester'||'0a'X||'3 - DOS Befehl'||'0a'X||'4 - ARexx Skript'||'0a'X||'5 - Quiet','_1|_2|_3|_4|_5|_Abbruch','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
Select
When ComSel = 1 Then Com = 'Beep'
When ComSel = 2 Then Com = 'Requester'
When ComSel = 3 Then Do
Com = '"'
ComArgs = RTFileRequest('C:',,'Auszuführende Datei wählen...','Benutzen')
ComArgs = RTGetString(ComArgs,'Auszuführender DOS Befehl für den Nick "'Nick'"','NotifyPlusGUI','_OK|_Abbruch')
If ComArgs = '' Then ShowList()
Else ComArgs = ComArgs'"'
End
When ComSel = 4 Then Do
Com = '"Rexx '
ComArgs = RTFileRequest('REXX:',,'Auszuführende Datei wählen...','Benutzen')
ComArgs = RTGetString(ComArgs,'Auszuführendes ARexx Skript für den Nick "'Nick'"','NotifyPlusGUI','_OK|_Abbruch')
If ComArgs = '' Then ShowList()
Else ComArgs = ComArgs'"'
End
When ComSel = 5 Then Com = 'Quiet'
Otherwise ShowList()
End
New = Line.0+1
Line.0 = New
Line.New = Nick Hostmask Com||ComArgs
Change = 1
End
When SLine.Gadget = 3 Then Do
NLine = ''
NewEntry:
NLine = RTGetString(NLine,'Eintrag erstellen. Format: <Nick> <Hostmask> <Kommando>','NotifyPlusGUI','_OK|_Abbruch','RTGL_Flags = GLReqF_CenterText')
If NLine = '' Then ShowList()
If Words(NLine) >= 3 Then Do
If Line.0 = 1 & Line.1 = '' Then Do
Line.1 = NLine
Change = 1
End
Else Do
New = Line.0+1
Line.0 = New
Line.New = NLine
Change = 1
End
End
Else Do
Beep()
NewEntry()
End
End
When OK & SLine.Gadget = 4 Then Do
RUSure = RTEZRequest('Wollen Sie den Eintrag für'||'0a'X||'den Nick "'Word(SLine.1,1)'"'||'0a'X||'aus der Liste entfernen?','Ja|Nein','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText|EZReqF_NoReturnKey|EZReqF_LAmigaQual')
If RUSure = 1 Then Do
Num = LSearch(SLine.1,'Line',1,'C','S')
If Num ~= -1 Then Do
StemRemove('Line',Num)
Change = 1
End
Else Beep()
End
End
When OK & SLine.Gadget = 5 Then Do
Num = LSearch(SLine.1,'Line',1,'C','S')
If Num ~= -1 & Num ~= 1 Then Do
If StemInsert('Line',Num-1,,SLine.1) Then If StemRemove('Line',Num+1) Then Change = 1
Else Beep()
End
End
When OK & SLine.Gadget = 6 Then Do
Num = LSearch(SLine.1,'Line',1,'C','S')
If Num ~= -1 Then Do
NLine = ''
NewInsert:
NLine = RTGetString(NLine,'Eintrag einfügen. Format: <Nick> <Hostmask> <Kommando>','NotifyPlusGUI','_OK|_Abbruch','RTGL_Flags = GLReqF_CenterText')
If NLine = '' Then ShowList()
If Words(NLine) >= 3 Then If StemInsert('Line',Num,,NLine) Then Change = 1
Else Beep()
End
End
When OK & SLine.Gadget = 7 Then Do
Num = LSearch(SLine.1,'Line',1,'C','S')
If Num ~= -1 & Num ~= Line.0 Then Do
CNum = Num+1
If StemInsert('Line',Num,,Line.CNum) Then If StemRemove('Line',Num+2) Then Change = 1
Else Beep()
End
End
When SLine.Gadget = 8 Then Do
QSort('Line')
Change = 1
End
When SLine.Gadget = 9 Then Do
If Change = 1 Then Do
RUSure = RTEZRequest('Wollen Sie die'||'0a'X||'Änderungen speichern?','Ja|Zurück|Nein','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText|EZReqF_NoReturnKey|EZReqF_LAmigaQual')
Select
When RUSure = 1 Then Do
SList = RTFileRequest(PathPart(List),FilePart(List),'NotifyPlus Konfiguration speichern als...','Speichern')
If SList ~= '' Then If ~WriteFile(SList,'Line') Then RTEZRequest('Die Datei konnte nicht'||'0a'X||'gespeichert werden.','OK','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
End
When RUSure = 2 Then ShowList()
Otherwise NOP
End
End
OList = List
List = RTFileRequest('SYS:','NotifyPlus.List','NotifyPlus Konfiguration laden...','Laden')
Select
When List = '' Then Do
List = OList
ShowList()
End
When ~Exists(List) Then Do
GF = RTEZRequest('Die gewählte Datei exisitert nicht.'||'0a'X||'Soll sie erzeugt werden?','_Ja|_Nein','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
If GF = 1 Then Do
If ~Open('List',List,'W') && ~Close('List') Then Do
RTEZRequest('Die Datei konnte'||'0a'X||'nicht erzeugt werden.','_OK','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
Exit
End
Change = 0
Line.0 = 1
Line.1 = ''
End
Else Do
List = OList
ShowList()
End
End
When ~ReadFile(List,'Line') Then Do
Beep()
RTEZRequest('Die Datei konnte'||'0a'X||'nicht geöffnet werden.','OK','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
List = OList
ShowList()
End
Otherwise NOP
End
End
When SLine.Gadget = 10 Then Do
SList = RTFileRequest(PathPart(List),FilePart(List),'NotifyPlus Konfiguration speichern als...','Speichern')
If SList ~= '' Then If ~WriteFile(SList,'Line') Then RTEZRequest('Die Datei konnte nicht'||'0a'X||'gespeichert werden.','OK','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
Else Change = 0
End
When SLine.Gadget = 0 Then Do
If Change = 1 Then Do
RUSure = RTEZRequest('Wollen Sie das Programm'||'0a'X||'wirklich verlassen?','Ja|Nein','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText|EZReqF_NoReturnKey|EZReqF_LAmigaQual')
If RUSure = 0 Then ShowList()
End
If Line.0 = 1 & Line.1 = '' & Change ~= 1 Then Do
DelF = RTEZRequest('Soll die leere Datei gelöscht werden?','_Ja|_Nein','NotifyPlusGUI')
If DelF = 1 Then Delete(List)
End
Exit
End
Otherwise Beep()
End
ShowList()
Exit
Syntax:
Signal Off Syntax
RCT = RC
Address 'COMMAND'
'Version >ENV:NP_RTR Libs:rexxtricks.library'
'Version >ENV:NP_RMH Libs:rmh.library'
'Version >ENV:NP_RRT Libs:rexxreqtools.library'
'Version >ENV:NP_RDS Libs:rexxdossupport.library'
Address
If Exists('RAM:NP_Bug') Then Mode = 'A'
Else Mode = 'W'
If Open('Bug','RAM:NP_Bug',Mode) Then Do
WriteLN('Bug',Translate(Date('E'),'.','/') '('Time()') - NotifyPlusGUI.Rexx 1.0:' RCT'/'Sigl||'0a'X'0a'X||GetENV('NP_RTR')||'0a'X||GetENV('NP_RMH')||'0a'X||GetENV('NP_RRT')||'0a'X||GetENV('NP_RDS')||'0a'X||Left('',70,'-'))
Close('Bug')
RTEZRequest('Fehler #'RCT' in Zeile' Sigl':'||'0a'X||Errortext(RCT)'.','OK','NotifyPlusGUI','RTEZ_Flags = EZReqF_CenterText')
Exit

