NeoGadgets

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

NeoGadgets

Message par MetalOS »

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.

Image

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
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 ?
Avatar de l’utilisateur
venom
Messages : 3199
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: NeoGadgets

Message par venom »

Salut MetalOS.

Oui l'idée de créer des interfaces "différentes" de l'OS peut être beau visuellement et mettre un coup de jeune ou encore une "signature" du développeur. Ça permet de faire des interfaces a sa façon.

Après a voir si il est possible pour les dev's de créer leurs "propres styles, skins" ? Car oui une lib toute faite. C'est déjà un gros plus mais toutes les interfaces auront un seul et unique style (ce qui est déjà un plus) :wink:

Perso j'aime bien l'idée, surtout en gardant l syntaxe PureBasic 8) même si ça force les futures codes a embarquer le .pbi dans leurs exemples mais ça rien de grave. Il suffit d'épingler ta lib sur le forum :wink:

Fin tu vois l'idée :oops: :lol:






@++
Windows 10 x64, PureBasic 6.30 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: NeoGadgets

Message par MetalOS »

Merci de ton retour venom.

C'est ultra compliqué mais je n'ai pas envie de baisser les bras :D Pour le moment tous les gadgets présent sur la capture sont maintenant fonctionnel. J'attaque les futur gadgets.
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: NeoGadgets

Message par MetalOS »

Image

Le combosBoxGadget et le TexteGadget sont fonctionnel aussi. Je vais travailler gadget par gadget c'est plus simple pour tester et je ferais un exemple par gadget. Prochain gadget l'EditorGadget.
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: NeoGadgets

Message par MetalOS »

Bon l'EditorGadget c'est une autre histoire 8O mais je vient de découvrir la commande ClipOutput() que je n'avais jamais utilisé et ça va être utile pour utiliser une zone restreint d'un gadget dessiné en canvas. Et je vais arrêté la pour aujourd'hui car ça fait 8 heures que je suis sur ce projet et je commence à avoir les yeux qui piques :D :D :D :D
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: NeoGadgets

Message par MetalOS »

Après une bonne nuit et avant l'editorGadget, voici le SeparatorGadget.

Image
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: NeoGadgets

Message par MetalOS »

Voici le FrameGadget. Je viens de me rendre compte que la gestion et création et plus ou moins similaire en fonction de la complexité d'un gadget. Du coup je vais pouvoir créer certain gadget plus rapidement que d'autre en faisant du copier coller de code.

Image
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 151
Inscription : mer. 28/janv./2009 13:28

Re: NeoGadgets

Message par Philippe_GEORGES »

Merci pour présenter ce projet.

Mais est il possible d'envisager une bibliothèque de gadgets qui seraient compatibles Mac et PC ? Je travaille sur les 2 plateformes. Ca m'arrangerait !

Merci pour ce travail

Phil
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
Avatar de l’utilisateur
Mindphazer
Messages : 741
Inscription : mer. 24/août/2005 10:42

Re: NeoGadgets

Message par Mindphazer »

Si MetalOS n'utilise pas d'API, comme dans son sujet Interface avec CanvasGadget() (viewtopic.php?t=19521), ça fonctionnera sous MacOS. Il faut juste faire les adaptations au DPI (avec des DesktopScaledX() et DesktopScaledY() et autres), ou compiler sans activer le facteur d'échelle....
Bureau : Win11 64bits
Maison : Macbook Pro M4 16" SSD 512 Go / Ram 24 Go - iPad Air 128 Go (pour madame) - iPhone 17 Pro Max 256 Go
Avatar de l’utilisateur
Kwai chang caine
Messages : 7067
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: NeoGadgets

Message par Kwai chang caine »

Dite moi si vous pensez que ça peut intéresser du monde ou c'est une perte de temps ?
Une perte de temps, je ne pense pas si déjà cela t'es utile pour toi :wink:
Quand à intéresser du monde, je pense que oui puisque tu avais déjà investi toi-même dans ProGUI, donc tu avais un besoin, et tu n'as peut être pas été le seul
Beaucoup de nouvelles applis ont des looks d'enfer désormais, surement qu'ils utilisent des librairies dédiées à ce genre de travail pour ne pas perdre trop de temps dans le "paraitre" et se consacrer à "l'utile"
Les grosses entreprises sont intéressées par le factuel, les pages de chiffres, les graphismes (Camenberts, courbes, etc ...) donc avoir du joli rapidement c'est leur truc, une vue d'ensemble au premier coup d’œil.
Quand aux développeurs PB, je ne sais pas si il y a encore beaucoup de nous qui utilisent des librairies non open-source, pour les problèmes que l'on a souvent évoqué d'arrêt net du suivi, des changements de version PB , etc ...et aussi, on est développeurs parce que l'on aime ça, et bien souvent essayer un domaine que l'on ne connait pas est un challenge, au moins pour voir
Quoi qu'il en soit, encore bravo pour tes jolies réalisations 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: NeoGadgets

Message par MetalOS »

@Mindphazer

Je n'utilise pas d'api dans mon exemple, uniquement des commandes purebasic.

@Philippe_GEORGES

Je pense que sa doit être possible mais je ne pourrais le faire car sur mon Macbook pro j'ai viré Mac OS pour installer linux.

@Kwai chang caine

Merci pour ton retour

Sa avance doucement et j'ai bientôt fini l'EditorGadget avec possibilité d'activer ou désactiver la numérotation de ligne.
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: NeoGadgets

Message par MetalOS »

Voici l'EditorGadget. J'ai juste un petit bug de retour à la ligne automatique sinon il est à 99% fini

Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 7067
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: NeoGadgets

Message par Kwai chang caine »

Ouahh l'editor un gros morceau 8O
tu vas lui ajouter des fonctions qu'on a pas avec le natif ?
parce que sans aller faire concurrence à scintilla :mrgreen: (Qui a lui même de gros defauts, je trouve), je trouve que l'éditeur et le listicon, bien que ce soit des bons gadgets, sont vraiment basiques sur PB :|
Après pour le listicon, a rajouter des fonctions, on a vite tendance pour le coup, a vouloir faire concurrence à EXCEL :lol:
Et puis j'ai appris dernièrement encore quelque chose que je ne savais pas, c'est que EXCEL n'est pas un listicon (Pourtant ça lui ressemble je trouve) 8O ... Mais un gridgadget.. Je devrais encore être le seul à ne pas le savoir au bout de 20 ans :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel
Avatar de l’utilisateur
falsam
Messages : 7405
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: NeoGadgets

Message par falsam »

C'est prometteur. Vivement la suite. En particulier les ListIconGadget et LisViewGadget. Bravo 🤩👏
Configuration : Windows 11 Famille 64-bit - PB 6.23 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MetalOS
Messages : 1574
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: NeoGadgets

Message par MetalOS »

Merci les gars,

@ Kwai chang caine , dans l'immédiat je ne pense pas ajouter plus d'option pour le moment mais pourquoi pas par la suite si tu à des idées.

@ falsam, ouais certains gadget sont plus complexe à géré par rapport à d'autre qui reste sur le même modèle que certains. Pour le ListIconGadget ca devrais allé car j'en avais créé un en canvas pour mon logiciel ECA, du coup je vais pouvoir l'adapter pour ce projet. J'ai déjà ajouté quelques nouveaux gadget et je travail sur un GraphiqueGadget pour créer un petit graphique avec des donées.
Répondre