Code : Tout sélectionner
; ************************************************************
; * Project Name: GoodWORDS
; * Author(s) : Nicolas 'Flaith' Djurovic
; * Date Started: 11/20/2005
; * Last Updated: 11/22/2005
; * Website : http://flaith.free.fr
; * Email : flaith@wanadoo.fr
; * Version : 0.13.3
; * Copyright : CopyLeft 2005 Flaith
; * Licence : GPL
; * PB Version : 3.94
; ************************************************************
;
; Librairie extérieure utilisée
; -----------------------------
; PureCOLOR Librairies v8
; Auteur : Philippe 'gnozal' Guntz
; Date : 02/04/2005
;- Window Constants
;
Enumeration
#Window
EndEnumeration
;- Gadget Constants
;
Enumeration
#TheFile
#ALTF4
#Button_again
#Button_quit
#Titre
#Texte
EndEnumeration
;- Structures pour liste chainées
;
Structure Title ;Titre
num.w ;/999
titre.s ;après les ":"
EndStructure
Structure Descr
number.w
description.s
EndStructure
;- Initialisation des listes chainées
NewList The_Title.Title()
NewList The_Descr.Descr()
;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Verdana", 10, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Verdana", 8) ;, #PB_Font_Italic)
;-CallBack pour PureCOLOR
;
Procedure.l WindowCallBack(WindowID.l, message.l, wParam.l, lParam.l)
ReturnValue.l = #PB_ProcessPureBasicEvents
ReturnValue = PureCOLOR_CallBack(WindowID, message, wParam, lParam, ReturnValue)
ProcedureReturn ReturnValue
EndProcedure
Procedure Open_Window()
If OpenWindow(#Window, 216, 0, 511, 300,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered,"Good Words !")
If CreateGadgetList(WindowID())
AddKeyboardShortcut(0, #PB_Shortcut_F4 | #PB_Shortcut_Alt, #ALTF4)
ButtonGadget(#Button_again, 410, 160, 90, 60, "Again")
SetGadgetFont(#Button_again, FontID2)
ButtonGadget(#Button_quit, 410, 230, 90, 60, "Quit")
SetGadgetFont(#Button_quit, FontID2)
TextGadget(#Titre, 10, 10, 390, 50, "TITRE", #PB_Text_Border | #PB_Text_Center)
SetGadgetFont(#Titre, FontID1)
TextGadget(#Texte, 10, 70, 390, 220, "TEXTE") ;, #PB_Text_Border)
SetGadgetFont(#Texte, FontID2)
EndIf
EndIf
EndProcedure
Procedure aff_random()
ResetList(The_Title())
ResetList(The_Descr())
;affiche données "au hazard" dans gadgets
Resultat = CountList(the_descr())
val_aleatoire = Random(Resultat)+1
SelectElement(The_Descr(), val_aleatoire)
SelectElement(The_Title(), The_Descr()\number - 1) ;pourquoi mettre - 1 ???
SetGadgetText(#Titre, The_Title()\titre)
SetGadgetText(#Texte, The_Descr()\description)
EndProcedure
Procedure Make_Color()
PureCOLOR_SetGadgetColor(#Titre, RGB(127,127,127), BackColor.l)
PureCOLOR_SetGadgetColor(#Texte, #Black, RGB(160,160,160))
EndProcedure
;- Programme Principal
;
Quit = 0
Open_Window()
SetWindowCallback(@WindowCallBack())
Make_Color()
If ReadFile(#TheFile,"fortune.txt") ;Si le fichier peut etre lu, on continu
While Eof(#TheFile) = 0 ;Tant que la 'fin de fichier' n'est pas atteinte
x.s = ReadString()
If Left(x,1) <> "#" And Left(x,1) <> "" And Left(x,1) <> " " ;on ne prend que si diff de # ou espace ou ligne vide
If Left(x,1) = "/"
num.w = Val(Mid(x,2,3))
descr.s = Mid(x,6,Len(x))
descr = ReplaceString(descr, "\n", Chr(13)+Chr(10)) ;si on trouve \n on met un saut de ligne
descr = ReplaceString(descr, "\t", Chr(9)) ;même chose (tabulation)
AddElement(The_Title())
The_Title()\num = num
The_Title()\titre = descr
Else
String$ = ReplaceString(x, "\n", Chr(13)+Chr(10))
String$ = ReplaceString(String$, "\t", Chr(9))
AddElement(The_Descr())
The_Descr()\number = num
The_Descr()\description = String$
EndIf
EndIf
Wend
CloseFile(#TheFile) ;Ferme le fichier
Else
MessageRequester("Information","Couldn't open the file!") ;sinon c'est fini
EndIf
aff_random()
Repeat
Event = WaitWindowEvent() ;on récupère les évènements
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
If Event = #PB_EventGadget ;si on appuie sur un gadget
Select EventGadgetID()
Case #Button_again ;on appuie sur le bouton Again
aff_random()
Case #Button_quit ;on appuie sur le bouton Quit
Quit = 1
EndSelect
EndIf
If Event = #PB_EventMenu
Select EventMenuID()
Case #ALTF4 ;Alt-F4
Quit = 1
EndSelect
EndIf
Until Quit = 1
