170 lines
No EOL
5.5 KiB
Text
170 lines
No EOL
5.5 KiB
Text
;************************************************
|
|
;*
|
|
;* Advanced Dialog V0.1
|
|
;*
|
|
;* (c) 2019 by René Linder
|
|
;* (c) 2019 by Linder Hard- und Software
|
|
;*
|
|
;* Lizenz: LGPL V2.1
|
|
|
|
DeclareModule lhs_lib_adv_diag
|
|
Enumeration Dialogtypes
|
|
#lhs_adv_dialog_text
|
|
#lhs_adv_dialog_string
|
|
#lhs_adv_dialog_edit
|
|
EndEnumeration
|
|
|
|
Declare dialog() ;Dialog darstellen und abwarten
|
|
Declare init(Titel.s)
|
|
Declare add(Descrition.s, UID.s, Type.i, Lines.i, Content.s="") ;Element zum Dialog hinzufügen
|
|
Declare reset() ;dialog Liste leeren.
|
|
Declare.s get_explizit(UID.s) ;Respronse exlpizit zurückgeben
|
|
Declare get_init() ;get() Initilaiseren beim ersten element
|
|
Declare.s get() ;gibt das Aktuelle element zurück
|
|
|
|
EndDeclareModule
|
|
|
|
Module lhs_lib_adv_diag
|
|
Structure lhs_adv_dialog
|
|
Lines.i
|
|
Id.i
|
|
Text_Id.i
|
|
UID.s
|
|
Description.s
|
|
Type.i
|
|
Response.s
|
|
EndStructure
|
|
|
|
Global NewList lhs_adv_diag_content.lhs_adv_dialog()
|
|
Global Current_Element, Total_Elements
|
|
|
|
Procedure reset()
|
|
ClearList(lhs_adv_diag_content())
|
|
EndProcedure
|
|
|
|
Procedure add(Descrition.s, UID.s, Type.i, Lines.i, Content.s="")
|
|
AddElement(lhs_adv_diag_content())
|
|
lhs_adv_diag_content()\Description = Descrition
|
|
lhs_adv_diag_content()\UID = UID
|
|
lhs_adv_diag_content()\Type= Type
|
|
lhs_adv_diag_content()\Lines = Lines
|
|
lhs_adv_diag_content()\Response = Content
|
|
EndProcedure
|
|
|
|
Procedure init(Titel.s)
|
|
reset()
|
|
AddElement(lhs_adv_diag_content())
|
|
lhs_adv_diag_content()\Description = Titel
|
|
Total_Elements = 0
|
|
Current_Element = 0
|
|
EndProcedure
|
|
|
|
|
|
Procedure dialog()
|
|
Define Dialog, Dialog_Height, Event, PosY, Lines_curr, Current, Button_Ok, Button_Cancel
|
|
ResetList(lhs_adv_diag_content())
|
|
NextElement(lhs_adv_diag_content())
|
|
Current_Element = 0
|
|
PosY = 0
|
|
Lines_curr = 0
|
|
Height = 0
|
|
Dialog_Height = 50
|
|
Dialog = OpenWindow(#PB_Any, 0,0, 400, Dialog_Height, lhs_adv_diag_content()\Description, #PB_Window_TitleBar | #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
|
|
While NextElement(lhs_adv_diag_content())
|
|
Current_Element + 1
|
|
If lhs_adv_diag_content()\Lines = 1
|
|
Lines_curr + 1
|
|
PoSY = (Lines_curr * 50) - 45
|
|
Height = 40
|
|
Dialog_Height + 50
|
|
Else
|
|
Lines_curr + lhs_adv_diag_content()\Lines
|
|
Height = (lhs_adv_diag_content()\Lines * 50)
|
|
Dialog_Height + Height
|
|
Height - 15
|
|
PosY = (Lines_curr * 50) - Height
|
|
EndIf
|
|
ResizeWindow(Dialog, #PB_Ignore, #PB_Ignore, #PB_Ignore, Dialog_Height)
|
|
WindowBounds(Dialog, 400, Dialog_Height, 400, Dialog_Height)
|
|
Select lhs_adv_diag_content()\Type
|
|
Case #lhs_adv_dialog_text
|
|
lhs_adv_diag_content()\Id = TextGadget(#PB_Any, 5, PoSY , 390, Height, lhs_adv_diag_content()\Description)
|
|
Case #lhs_adv_dialog_string
|
|
lhs_adv_diag_content()\Text_Id = TextGadget(#PB_Any, 5, PoSY , 90, Height, lhs_adv_diag_content()\Description)
|
|
lhs_adv_diag_content()\Id = StringGadget(#PB_Any, 100, PoSY , 290, Height, lhs_adv_diag_content()\Response)
|
|
Case #lhs_adv_dialog_edit
|
|
lhs_adv_diag_content()\Text_Id = TextGadget(#PB_Any, 5, PoSY , 90, Height, lhs_adv_diag_content()\Description)
|
|
lhs_adv_diag_content()\Id = EditorGadget(#PB_Any, 100, PoSY , 290, Height)
|
|
SetGadgetText(lhs_adv_diag_content()\Id, lhs_adv_diag_content()\Response)
|
|
Default
|
|
;Reines Text Element
|
|
|
|
EndSelect
|
|
|
|
Wend
|
|
; Ok und Cancel Button
|
|
PosY + Height + 10
|
|
Button_Ok = ButtonGadget(#PB_Any, 5, PosY, 190, 40, "Ok")
|
|
Button_Cancel = ButtonGadget(#PB_Any, 205, PosY, 190, 40, "Cancel")
|
|
Repeat
|
|
Event = WaitWindowEvent()
|
|
|
|
Select Event
|
|
Case #PB_Event_CloseWindow
|
|
Quit=1
|
|
Case #PB_Event_Gadget
|
|
Select EventGadget()
|
|
Case Button_Cancel
|
|
CloseWindow(dialog)
|
|
ProcedureReturn #False
|
|
Case Button_Ok
|
|
ResetList(lhs_adv_diag_content())
|
|
NextElement(lhs_adv_diag_content())
|
|
While NextElement(lhs_adv_diag_content())
|
|
lhs_adv_diag_content()\Response = GetGadgetText(lhs_adv_diag_content()\Id)
|
|
Wend
|
|
CloseWindow(dialog)
|
|
ProcedureReturn #True
|
|
EndSelect
|
|
|
|
EndSelect
|
|
|
|
|
|
Until Quit=1
|
|
|
|
EndProcedure
|
|
|
|
Procedure.s get_explizit(UID.s)
|
|
ResetList(lhs_adv_diag_content())
|
|
While NextElement(lhs_adv_diag_content())
|
|
If lhs_adv_diag_content()\UID = UID
|
|
ProcedureReturn lhs_adv_diag_content()\Response
|
|
EndIf
|
|
Wend
|
|
|
|
ProcedureReturn UID
|
|
EndProcedure
|
|
|
|
|
|
Procedure get_init()
|
|
Current_Element = 1
|
|
EndProcedure
|
|
|
|
Procedure.s get()
|
|
|
|
EndProcedure
|
|
|
|
|
|
EndModule
|
|
|
|
; lhs_lib_adv_diag::init("Test Dialog")
|
|
; lhs_lib_adv_diag::add("Test", "test", lhs_lib_adv_diag::#lhs_adv_dialog_edit, 2)
|
|
; lhs_lib_adv_diag::add("Test2", "test2", lhs_lib_adv_diag::#lhs_adv_dialog_string, 1)
|
|
; lhs_lib_adv_diag::add("Test3", "test3", lhs_lib_adv_diag::#lhs_adv_dialog_edit, 1)
|
|
; lhs_lib_adv_diag::add("Test4", "test4", lhs_lib_adv_diag::#lhs_adv_dialog_string, 1)
|
|
; If lhs_lib_adv_diag::dialog()
|
|
; MessageRequester("Info", "Ok")
|
|
; Else
|
|
; MessageRequester("Info", "Cancel")
|
|
; EndIf
|
|
; MessageRequester("Test", lhs_lib_adv_diag::get_explizit("test")) |