Voici maintenant le code sommaire de votre application. L'objectif étant didacticiel il n'y aura que le minimum.
Code : Tout sélectionner
;PB 5.60 + - Windows Only (Présence d'API)
;Cet outil ne peut fonctionner que s'il est appelé depuis l'IDE
Enumeration Font
#FontGlobal
EndEnumeration
Enumeration Window
#mf
EndEnumeration
Enumeration Gadget
#mfOk
#mfGadget
#mfX
#mfY
#mfWidth
#mfHeight
#mfText
EndEnumeration
Global NewMap Gadgets()
;Plan de l'application
Declare Start()
Declare Setup() ;Initialisation des mots clés
Declare Parse() ;Analyse des paramétres du gadget
Declare Update() ;Mise à jour de l'IDE
Declare Exit()
Start()
Procedure Start()
;handle du composant d'édition de code Scintilla pour le source en cours
Protected HandleIDESci=Val(GetEnvironmentVariable("PB_TOOL_Scintilla"))
If HandleIDESci
;Copie en mémoire de la sélection de l'utilisateur.
SendMessage_(HandleIDESci, #WM_COPY,0,0)
Else
MessageRequester("Information", "Cette application doit etre lancer depuis l'IDE de PureBasic")
Exit()
EndIf
LoadFont(#FontGlobal, "", 10)
SetGadgetFont(#PB_Default, FontID(#FontGlobal))
OpenWindow(#mf, 0, 0, 200, 230, "Gadget Editor", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Tool)
StickyWindow(#mf, #True)
TextGadget(#PB_Any, 5, 20, 75, 22, "Gadget")
StringGadget(#mfGadget, 80, 20, 110, 22, "")
TextGadget(#PB_Any, 5, 50, 75, 22, "x")
StringGadget(#mfX, 80, 50, 110, 22, "")
TextGadget(#PB_Any, 5, 80, 75, 22, "y")
StringGadget(#mfY, 80, 80, 110, 22, "")
TextGadget(#PB_Any, 5, 110, 75, 22, "Width")
StringGadget(#mfWidth, 80, 110, 110, 22, "")
TextGadget(#PB_Any, 5, 140, 75, 22, "Height")
StringGadget(#mfHeight, 80, 140, 110, 22, "")
TextGadget(#PB_Any, 5, 170, 75, 22, "Text")
StringGadget(#mfText, 80, 170, 110, 22, "")
ButtonGadget(#mfOk, 5, WindowHeight(#mf) - 30, 190, 22, "Ok")
DisableGadget(#mfOk, #True)
;Création de la liste des mots clés de PureBasic
Setup()
;Analyse la sélection de l'utilisateur mémorisée dans le clipboard
Parse()
;Déclencheurs evenementiels
BindGadgetEvent(#mfOk, @Update())
BindEvent(#PB_Event_CloseWindow, @Exit())
Repeat : WaitWindowEvent() : ForEver
EndProcedure
;Création de la liste des mots clés de PureBasic
Procedure Setup()
AddMapElement(Gadgets(), "TextGadget")
AddMapElement(Gadgets(), "ButtonGadget")
AddMapElement(Gadgets(), "StringGadget")
EndProcedure
;Analyse la sélection de l'utilisateur mémorisée dans le clipboard
Procedure Parse()
Protected Buffer.s, GadgetType.s, Parameters.s, Value.s, n
Buffer = Trim(StringField(GetClipboardText(), 1, #CRLF$)) ;Prendre en compte uniquement la prémiere ligne
GadgetType = Trim(StringField(Buffer, 1, "(")) ;Mémorisation du type de gadget
Parameters = Mid(RemoveString(Buffer, GadgetType), 2) ;Supression premiere parenthése
Parameters = ReverseString(Mid(ReverseString(Parameters), 2)) ;Suppression de la derniere parenthése
;Est ce un mot clé ?
If FindMapElement(Gadgets(), GadgetType)
DisableGadget(#mfOk, #False)
For n = 1 To CountString(Parameters, ",") + 1
Value = Trim(StringField(Parameters, n, ","))
If FindString(Value, #DQUOTE$)
SetGadgetText(n, RemoveString(Value, #DQUOTE$))
SetGadgetData(n, #True)
Else
SetGadgetText(n, Value)
EndIf
Next
EndIf
EndProcedure
;Mise à jour de l'IDE
Procedure Update()
Protected HandleIDESci=Val(GetEnvironmentVariable("PB_TOOL_Scintilla"))
Protected Buffer.s, LastParameter, n
LastParameter = #mfText
;Préparation de la chaine de paramétres à renvoyer
Buffer = MapKey(Gadgets()) + "("
For n = #mfGadget To LastParameter
If GetGadgetData(n) = #True
Buffer + #DQUOTE$ + GetGadgetText(n) + #DQUOTE$
Else
Buffer + GetGadgetText(n)
EndIf
If n <> LastParameter
Buffer + ", "
EndIf
Next
Buffer + ")"
;Mise à jour de l'IDE
SetClipboardText(Buffer)
SendMessage_(HandleIDESci, #WM_PASTE,0,0)
PostEvent(#PB_Event_CloseWindow)
EndProcedure
Procedure Exit()
End
EndProcedure
Créer un exécutable de ce code. Par exemple GadgetEditor.exe
.
) dans le champ de saisie Ligne de commande.
.
- Donner un nom à votre application dans le champ Nom.
- Cliquer sur le champ Raccourci puis presser simultanément la combinaison de touches
Il ne vous reste plus qu'à tester votre application.