NeoGadgets
Publié : lun. 06/avr./2026 16:34
Salut les gars,
Après avoir posté un exemple d'interface en canvas je me suis demandé si ce n'était pas plus simple de développer une librairie PureBasic de gadget personnalisé. Il y à quelque années j'avais acheté une lib qui s'appel ProGui et qui permettait d'intégré des gadget style office entre autre dans vos applications purebasic. Et comme la version Gold fournissait de code source de ce projet j'ai pu m'en inspirer. Du moins regarder comment ca fonctionne pour commencer à créer ma propre librairie. J'ai déja quelques gadgets fonctionnel et j'ai essayé de faire en sorte que l'intégration dans le code purebasic soit le plus proche du langage natif purebasic. Voici une première capture de ce que donne le premier prototype.

Et voici comment l'exploiter dans un code
Pour le moment je ne partage pas la librairie car je démarre seulement sont développement et je n'ai que quelques gadget de fonctionnelles mais avec encore plusieurs bugs. Dite moi si vous pensez que ça peut intéresser du monde ou c'est une perte de temps ?
Après avoir posté un exemple d'interface en canvas je me suis demandé si ce n'était pas plus simple de développer une librairie PureBasic de gadget personnalisé. Il y à quelque années j'avais acheté une lib qui s'appel ProGui et qui permettait d'intégré des gadget style office entre autre dans vos applications purebasic. Et comme la version Gold fournissait de code source de ce projet j'ai pu m'en inspirer. Du moins regarder comment ca fonctionne pour commencer à créer ma propre librairie. J'ai déja quelques gadgets fonctionnel et j'ai essayé de faire en sorte que l'intégration dans le code purebasic soit le plus proche du langage natif purebasic. Voici une première capture de ce que donne le premier prototype.

Et voici comment l'exploiter dans un code
Code : Tout sélectionner
EnableExplicit
XIncludeFile "../include/NeoGadgets.pbi"
Enumeration Windows
#Window_Main
EndEnumeration
Enumeration Gadgets
#Canvas_Main
EndEnumeration
Procedure ResizeUI()
ResizeGadget(#Canvas_Main, #PB_Ignore, #PB_Ignore, WindowWidth(#Window_Main), WindowHeight(#Window_Main))
NG_Redraw()
EndProcedure
Procedure HandleNeoEvent()
Select NG_Event()
Case #NG_Event_Click
Debug "Click sur gadget : " + Str(NG_EventGadget())
Select NG_EventGadget()
Case 1
NG_SetGadgetState(4, NG_GetGadgetState(4) + 10)
Case 2
NG_SetGadgetState(4, NG_GetGadgetState(4) - 10)
Case 5
NG_DisableGadget(1, 1 - Bool(NG_GetGadgetState(5)))
NG_SetGadgetText(5, "Toggle bouton Ajouter")
NG_SetGadgetState(5, 1 - NG_GetGadgetState(5))
Case 6
NG_HideGadget(3, NG_GetGadgetState(6))
NG_SetGadgetText(6, "Toggle checkbox expert")
NG_SetGadgetState(6, 1 - NG_GetGadgetState(6))
EndSelect
Case #NG_Event_Change
Debug "Changement sur gadget : " + Str(NG_EventGadget())
If NG_EventGadget() = 3
If NG_GetGadgetState(3)
NG_SetTheme(#NG_Theme_Neon)
Else
NG_SetTheme(#NG_Theme_Dark)
EndIf
EndIf
EndSelect
EndProcedure
If OpenWindow(#Window_Main, 0, 0, 900, 600, "NeoGadgets Demo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(#Canvas_Main, 0, 0, 900, 600, #PB_Canvas_Keyboard)
NG_Open(#Canvas_Main)
NG_SetTheme(#NG_Theme_Dark)
NG_ButtonGadget(1, 20, 20, 140, 36, "Ajouter")
NG_ButtonGadget(2, 170, 20, 140, 36, "Supprimer")
NG_CheckBoxGadget(3, 20, 74, 240, 28, "Activer le mode expert")
NG_ProgressBarGadget(4, 20, 124, 290, 24, 0, 100)
NG_SetGadgetState(4, 65)
NG_ButtonGadget(5, 20, 180, 180, 36, "Toggle bouton Ajouter")
NG_ButtonGadget(6, 210, 180, 180, 36, "Toggle checkbox expert")
NG_SetGadgetColor(1, #NG_Color_Pressed, RGBA(67, 129, 255, 255))
NG_Redraw()
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
If EventGadget() = #Canvas_Main
NG_HandleEvent(#Canvas_Main, EventType())
HandleNeoEvent()
NG_Redraw()
EndIf
Case #PB_Event_SizeWindow
ResizeUI()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
NG_Close()
EndIf



