Seite 1 von 4

PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 07.10.2009 22:31
von al90
Hi All,

PureRequester ist eine UserLibrary die einige neue DialogBoxen für PB zur verfügung stellt.
Dabei werden die Buttontexte automatisch in Deutsch angezeigt, wenn die Systemsprache
auch in Deutsch eingestellt ist. Anderfalls werden Englische ButtonTexte angezeigt.
Ausserdem habe ich mich bemüht, die Requester Systemnahe zu gestalten. Soll heißen,
das sie das ParentWindow auch automatisch blocken. Also genauso wie die Windows-
eigenen Requester. Ich hoffe der eine oder andere kann was damit anfangen.

Download entweder über den LibraryUpdater oder halt von http://www.puretools.eu :wink:
PureRequester DOC hat geschrieben:
Befehlsübersicht

PR_CheckBoxRequester()
PR_DateRequester()
PR_InputRequester()
PR_MultiButtonRequester()
PR_RgbRequester()
PR_TimeRequester()



PR_CheckBoxRequester(Title$, Text$)
Diese Funktion öffnet eine DialogBox mit einer CheckBox. D.H. das neben den üblichen "JA & NEIN" Buttons,
auch eine CheckBox mit dem Text Diese Meldung nicht mehr anzeigen unten links angezeigt wird.
Parameter
Title$ = Der Name des Titels für die DialogBox.
Text$ = Der Text der in der DialogBox erscheinen soll. (Mehrzeilige Texte können durch "|" getrennt werden.)
Rückgabewert
#PureRequester_Yes - Wenn der JA Button ohne CheckBox-Hacken betätigt wurde.
#PureRequester_No - Wenn der NEIN Button ohne CheckBox-Hacken betätigt wurde.
#PureRequester_YesWithCheckBox - Wenn der JA Button mit CheckBox-Hacken betätigt wurde.
#PureRequester_NoWithCheckBox - Wenn der NEIN Button mit CheckBox-Hacken betätigt wurde.
Hinweis
Alternativ kann natürlich auch #IDYES oder #IDNO (Bei inaktivierter CheckBox) benutzt werden.



PR_DateRequester()
Diese Funktion öffnet eine DialogBox zur eingabe eines Datums.
Parameter
Keine
Rückgabewert
Das gewählte Datum im PureBasic format oder #PureRequester_CancelDate wenn die DialogBox abgebrochen wurde.
Hinweis
Wenn die Systemsprache nicht in Deutsch eingestellt ist, wird der Tag & Monat in der DialogBox vertauscht.



PR_InputRequester (Title$, Text$, DefaultText$, StoredText$)
Diese Funktion öffnet eine DialogBox zur Eingabe eines Textes über einer Editierbaren ComboBox.
Parameter
Title$ = Der Name des Titels für die DialogBox.
Text$ = Der Text der in der DialogBox erscheinen soll.
DefaultText$ = Der vorgabetext der in dem Eingabefeld erscheinen soll.
StoredText$ = Mehrzeilige durch "|" getrennte Texte, die in der ComboBox eingetragen werden sollen.
Rückgabewert
Der eingegebene Text oder ("") wenn die DialogBox abgebrochen wurde.



PR_MultiButtonRequester (Title$, Text$)
Diese Funktion öffnet eine DialogBox mit mehreren Buttons. (JA / NEIN / JA ALLE / NEIN ALLE / ABBRECHEN)
Parameter
Title$ = Der Name des Titels für die DialogBox.
Text$ = Der Text der in der DialogBox erscheinen soll. (Mehrzeilige Texte können durch "|" getrennt werden.)
Rückgabewert
#PureRequester_Yes - Wenn der JA Button betätigt wurde.
#PureRequester_No - Wenn der NEIN Button betätigt wurde.
#PureRequester_YesAll - Wenn der JA ALLE Button betätigt wurde.
#PureRequester_NoAll - Wenn der NEIN ALLE Button betätigt wurde.
#PureRequester_Cancel - Wenn der ABBRECHEN Button betätigt wurde.
Hinweis
Alternativ kann natürlich auch #IDYES, #IDNO und #IDCANCEL (Bei JA / NEIN / ABBRECHEN) benutzt werden.



PR_RgbRequester (Color.l)
Diese Funktion öffnet eine DialogBox zum auswählen einer Farbe. (RGB-Werte)
Parameter
Color = Der Startwert der beim öffnen der DialogBox eingetragen werden soll.
Rückgabewert
Die ausgewählte Farbe oder #PureRequester_CancelRGB wenn die DialogBox abgebrochen wurde.



PR_TimeRequester (Title$, Text$, Seconds.l, DefaultButton.l)
Diese Funktion öffnet eine DialogBox, die sich nach Ablauf einer voreingestellten Zeit von selbst schließt.
Parameter
Title$ = Der Name des Titels für die DialogBox.
Text$ = Der Text der in der DialogBox erscheinen soll. (Mehrzeilige Texte können durch "|" getrennt werden.)
Seconds = Eine vorgegebene Zeit in Sekunden, nach der sich die DialogBox von selbst schließen soll.
DefaultButton = Der Button der nach Ablauf der Zeit ausgelöst werden soll. (Event)
Rückgabewert
#PureRequester_Yes - Wenn der JA Button betätigt wurde.
#PureRequester_No - Wenn der NEIN Button betätigt wurde.
Hinweis
Alternativ kann natürlich auch #IDYES oder #IDNO benutzt werden.

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 07.10.2009 23:07
von TomS
Heyho.
Ein paar Screenshots wären nicht schlecht ;)

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 07.10.2009 23:28
von al90
TomS hat geschrieben:Heyho.
Ein paar Screenshots wären nicht schlecht ;)
Biddeschööön. :)

Bild

Bild

Bild

Bild

Bild

Bild

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 08.10.2009 00:10
von STARGÅTE
[OT]
PR_MultiButtonRequester()

Ja ? Nein ? Ja Alle ? Nein Alle ? Abbrechen ? .... Ja Ab und Zu ? Nein Ab und Zu ? Ja jedes Zweite ? Nein jedes Dritte ? Ja jedes 4. und Nein jedes 3. und jedes 12. Abbrechen ?

ich finde diese Optionenn sollte mit rein :lol:
[/OT]

Im Ernst, nette Sache ... aber ich bin überhaupt kein Freund dieser Popups ^^

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 08.10.2009 01:54
von Thorium
Ich warte immernoch auf ein Programm, was mir nen zusätzlichen Button in Message Boxes einbaut mit der Aufschrift. "Halts Maul und mach einfach." :mrgreen:

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 08.10.2009 08:16
von Rings
Eigentlich keine schlechte Sache.
Solche Standard-Dialoge benötigt man doch schon mal öfters.
Allerdings fehlt der source um sowas auch
unter linux/osx/x64 (gescheiht) nutzen zu können.
Und beim nächsten PB-update funktioniert wieder was nicht.

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 08.10.2009 09:11
von Kaeru Gaman
ich stimme Rings zu.
die Gesamtfunktionalität wird ja nicht so geheimnisvoll sein, dass man es nicht auch als Include veröffentlichen könnte.
und dann hat man zusätzlich zur Portabilität auch noch den Lerneffekt.

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 08.10.2009 15:38
von Andesdaf
schöne Sache :allright:

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 08.10.2009 18:12
von al90
STARGÅTE hat geschrieben:[OT]
PR_MultiButtonRequester()

Ja ? Nein ? Ja Alle ? Nein Alle ? Abbrechen ? .... Ja Ab und Zu ? Nein Ab und Zu ? Ja jedes Zweite ? Nein jedes Dritte ? Ja jedes 4. und Nein jedes 3. und jedes 12. Abbrechen ?

ich finde diese Optionenn sollte mit rein :lol:
[/OT]
Für ein Gagproggi wäre der aufwand aber wohl zu groß. :lol:
Im Ernst, nette Sache ... aber ich bin überhaupt kein Freund dieser Popups ^^
Manchmal werden sie aber benötigt. Z.B bei Dateimanagern braucht man sowas schonmal öfters.
Thorium hat geschrieben:Ich warte immernoch auf ein Programm, was mir nen zusätzlichen Button in Message Boxes einbaut mit der Aufschrift. "Halts Maul und mach einfach." :mrgreen:
Für Vista würde ich mir sowas auch schon gerne wünschen. :mrgreen:
Andesdaf hat geschrieben:schöne Sache :allright:
Danke! :D

@Rings & @Kaeru Gaman

Hab hier mal einen kleinen Code zusammengestellt. Den Rest kann sich ja jetzt jeder selbst weiter ausbauen. :wink:

Code: Alles auswählen

Procedure.l CheckBoxRequester(Title$, Text$)

If GetUserDefaultLangID_() & $FF = #LANG_GERMAN
  Ja$="Ja"
  Nein$="Nein"
  Msg$="Diese Meldung nicht mehr anzeigen"
Else
  Ja$="Yes"
  Nein$="No"
  Msg$="Don't show again this message"
EndIf

If ExamineDesktops()
  DeskWidth=DesktopWidth(0)
  DeskHeight=DesktopHeight(0)
EndIf

txt$=ReplaceString(Text$,#CRLF$,"|")
Text$=ReplaceString(txt$,#LFCR$,"|")
txt$=ReplaceString(Text$,#CR$,"|")
Text$=ReplaceString(txt$,#LF$,"|")
txt$=ReplaceString(Text$,"|",Chr(10))
Text$=txt$
If Right(Text$,1)<>Chr(10):Text$+Chr(10):EndIf

oldwin=GetActiveWindow_()
win=OpenWindow(#PB_Any,50,50,400,200,Title$,#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered,oldwin)

If win
  EnableWindow_(oldwin,#False)

  fnt=LoadFont(#PB_Any,"Arial",9)
  If fnt
    SetGadgetFont(#PB_Default,FontID(fnt))
  EndIf

  sum=CountString(Text$,Chr(10))
  If StartDrawing(WindowOutput(win))
    If fnt : DrawingFont(FontID(fnt)) : EndIf
    For i=1 To sum
      c$=StringField(Text$,i,Chr(10))
      height+TextHeight(c$)
      If TextWidth(c$)>width
        width=TextWidth(c$)+95
      EndIf
    Next
    If width<480:width=480:EndIf
    If width>DeskWidth:width=DeskWidth-20:EndIf
    height+10
    StopDrawing()
  EndIf

  x=(DeskWidth/2)-((width)/2)
  y=(DeskHeight/2)-((height+111)/2)

  ResizeWindow(win,x,y,width,height+111)
  icon=LoadIcon_(0,#IDI_QUESTION)
  ImageGadget=ImageGadget(#PB_Any,25,25,10,10,icon)
  TextGadget=TextGadget(#PB_Any,80,33,width-85,height,Text$)
  CheckBox=CheckBoxGadget(#PB_Any,15,height+72,220,25,Msg$)
  x=width-120
  Yes=ButtonGadget(#PB_Any,x-105,height+70,100,27,Ja$)
  No=ButtonGadget(#PB_Any,x,height+70,100,27,Nein$)
  MessageBeep_(#MB_ICONQUESTION)

  Repeat
    Event=WaitWindowEvent()
    If Event=#PB_Event_Gadget
      st=EventGadget()
      If st=Yes : state=#IDYES : EndIf
      If st=No : state=#IDNO : EndIf
      If st<>CheckBox : Break : EndIf
    EndIf
  Until Event=#PB_Event_CloseWindow

  If Event=#PB_Event_CloseWindow
    state=#IDNO
  EndIf
  If GetGadgetState(CheckBox)=#True
    If state=#IDYES : state=-6 : EndIf
    If state=#IDNO : state=-7 : EndIf
  EndIf

  SetGadgetFont(#PB_Default, #PB_Default)
  If fnt : FreeFont(fnt) : EndIf
  DestroyIcon_(icon)
  EnableWindow_(oldwin,#True)
  CloseWindow(win)

  ProcedureReturn state

EndIf

EndProcedure


If OpenWindow(0, 100, 100, 600, 400, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  Debug CheckBoxRequester("Frage","Möchten Sie das Programm jetzt wirklich beenden ?")
  CloseWindow(0)
EndIf

End

Re: PureRequester - Neue DialogBoxen-Library für PB

Verfasst: 08.10.2009 22:42
von Kaeru Gaman
öhm... ist ja lieb gemeint...

aber besser anständig OpenSource, also den Code der kompletten Lib als Include, ausführlich kommentiert, als Bestandteil des Downloadpaketes.

mit ausführlich meine ich hier kein Anfängertutorial,
sondern einfach einen ausführlichen Kommentarkopf mit der kompletten Aufruf-Konvention,
und an besonderen Stellen beikommentiert was da gemacht wird.