UI Toolkit

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
❤x1
Messages : 9
Inscription : jeu. 10/janv./2019 17:26
Contact :

UI Toolkit

Message par ❤x1 »

Image

Bonjour les gens,
Je travaille depuis deux semaines sur mon nouveau projet PureBasic après Inputify. C'est UI ToolKit, ma boite à outils pour le développement d'interfaces graphiques.

Bien évidemment, il est encore au tout début de son développement et il ne s'agit pour l'instant que d'une petite dizaine de canvas gadgets compatibles avec l'API de PB.
Image

J'en suis encore à décider précisément où je veux diriger ce projet et c'est pour ça que je viens vous demander votre avis.

Est-ce que ce projet aurait un intérêt pour vous ?
Je préférerais ne pas maintenir un projet open source (commentaires, documentation, etc) si personne ne l'utilise. J'ai été surpris de trouver assez peu de projet comparable et je me demande si je ne fais pas fausse route.

Participeriez-vous au projet ?
Je sais que certaines fonctionnalités vont m'être demandées, à commencer par la portabilité Linux et MacOS. J'ai pas de Mac et mes connaissances Linux sont limitées. Puis-je espérer l'aide de personnes plus compétentes sur ces sujets ? Ou bien pour optimiser le code ou fixer des bugs ?

Qu'en pensez-vous en l'état ?
Le code est extrêmement brouillon parce que je n'avais pas prévu de le rendre public aussi tôt, mais je pense que les fonctionnalités implémentées représentent bien mes objectifs. Qu'en pensez-vous ? Des choses à changer immédiatement ?

Voilà, je déciderai de l'avenir de UITK en fonction de vos retours.

Le GitHub du projet est ici : https://github.com/LastLifeLeft/UI-Toolkit
J'ai fait un Trello rapide pour le projet là : https://trello.com/b/NcW86uvi/ui-toolkit

Merci d'avance o/
Open Source Stuff : Inputify, UITK, Batchable
Mesa
Messages : 1098
Inscription : mer. 14/sept./2011 16:59

Re: UI Toolkit

Message par Mesa »

Je pense que c'est une bonne idée car les gadgets de PB sont vieillissants et de plus en plus de programmeurs réclament une interface graphique plus moderne.

Tu peux avoir du succès à condition de déboguer le code rapidement et de ne pas utiliser trop d'api pour que le portage sur linux et osx soit le plus simple possible.

Est-ce une obligation d'utiliser la fenêtre du toolkit (uitk:window) ? Parce que c'est le genre de chose qui rebute beaucoup.
Il faudrait avoir le choix d'utiliser openwindow() ou uitk:window.

Sinon, c'est fluide.

J'ai une erreur à la fermeture des programmes tests en 64b et il plante carrément en x86 au démarrage.

Il est peut probable de trouver de l'aide sauf pour déboguer car le temps et l'energie pour analyser le code de quelqu'un d'autre est très important mais cela ne doit pas te décourager pour autant.

Moi, j'aime bien (sauf le uitk:window), continue, tu verras bien. Peut-être que tu auras une bonne surprise.

(Pour info et ça n'a rien à voir mais j'ai une erreur dans inputify, ligne 713 de mainwindow.pbi, erreur hors limite).

Mesa.
Avatar de l’utilisateur
threedslider
Messages : 397
Inscription : dim. 01/juil./2018 22:38

Re: UI Toolkit

Message par threedslider »

C'est vraiment cool que ce soit en open source ! Bravo pour ton projet c'est intéressant :)

Moi aussi je cherchais une interface moderne mais sous le contexte d'OpenGL pour le UI. Mais le tien est plus avancé je trouve.

Ton UI Toolkit est "skinable" ou pas ? C'est à dire 100% UI modifiable pour le rendu ?

Et merci pour le partage.

Happy coding !
Avatar de l’utilisateur
ChrisR
Messages : 222
Inscription : sam. 14/févr./2015 16:20

Re: UI Toolkit

Message par ChrisR »

Waouh, ça déchire et si ce n'est que le tout début de son développement, il promet vraiment 8)

Merci pour le partage et bon courage pour la suite, je vais suivre de près :D
Avatar de l’utilisateur
❤x1
Messages : 9
Inscription : jeu. 10/janv./2019 17:26
Contact :

Re: UI Toolkit

Message par ❤x1 »

Mesa a écrit : mar. 17/mai/2022 10:35 Est-ce une obligation d'utiliser la fenêtre du toolkit (uitk:window) ?
Du tout, c'est juste une fenêtre skinnée avec un contrôle complet. Son principal avantage, c'est que les gadgets qui y sont ajoutés héritent directement du skin. Si tu utilises une fenêtre native alors il faudra préciser le skin dans les flags de chaque gadget.
Mesa a écrit : mar. 17/mai/2022 10:35(Pour info et ça n'a rien à voir mais j'ai une erreur dans inputify, ligne 713 de mainwindow.pbi, erreur hors limite).
Je n'arrive pas à reproduire avec PB6 x64. T'as testé avec quelle version ? Je ne supporte pas le x86 : c'est trop de travail pour une cible qui réduit de plus en plus.
threedslider a écrit : mer. 18/mai/2022 17:52 Ton UI Toolkit est "skinable" ou pas ? C'est à dire 100% UI modifiable pour le rendu ?
Dur à dire, qu'est-ce que tu appelles 100% modifiable ?
Tu peux changer toutes les couleurs via SetGadgetColor() et en utilisant la liste des constantes à la ligne 64. Tu peux aussi modifier certains détails comme les coins arrondis. Pour les gadgets qui utilisent des items (type VList), tu peux aussi remplacer la fonction de dessin de ces gadgets par une fonction custom (exemple d'un des programmes que j'utilise pour développer et déboguer UITK) :
Image
J'ai encore quelques options à ajouter, mais ça n'ira pas beaucoup plus loin.

Merci pour vos retours, je vais les considérer pour décider comment je poursuivrai le projet.
Open Source Stuff : Inputify, UITK, Batchable
Avatar de l’utilisateur
threedslider
Messages : 397
Inscription : dim. 01/juil./2018 22:38

Re: UI Toolkit

Message par threedslider »

❤x1 a écrit : dim. 22/mai/2022 20:46 Dur à dire, qu'est-ce que tu appelles 100% modifiable ?
Comme certain disent en anglais le "look and feel", des UI qui ont l’apparence complétement différente l'un à l'autre, comme ceci :
Image

Voilà j'espère être plus clair ? Sinon je vois que tu as skinné ton UI c'est pas mal :)
Avatar de l’utilisateur
ChrisR
Messages : 222
Inscription : sam. 14/févr./2015 16:20

Re: UI Toolkit

Message par ChrisR »

Bonjour Love One, Joel,
J'ai joué un petit peu avec ton UI Toolkit, la base est superbe.
Pas sur d'avoir les compétences pour participer donc juste quelques notes :

J'ai noté qu'il n'est pas DPIAware pour l'instant. Juste en ajoutant DesktopScaledX(Y) dans la Macro RedrawObject(), il semble être pas mal pour les Gadgets.

Code : Tout sélectionner

Macro RedrawObject()
...
StartVectorDrawing(CanvasVectorOutput(*GadgetData\Gadget))
AddPathBox(DesktopScaledX(*GadgetData\OriginX), DesktopScaledY(*GadgetData\OriginY), DesktopScaledX(*GadgetData\Width), DesktopScaledY(*GadgetData\Height), #PB_Path_Default)
;AddPathBox(*GadgetData\OriginX, *GadgetData\OriginY, *GadgetData\Width, *GadgetData\Height, #PB_Path_Default)
Il semble bon aussi pour les boutons de la fenêtre. Je ne sais pas ou il faut ajouter pour les Menu!

Code : Tout sélectionner

In Procedure Window()
If Flags & #Window_CloseButton
  OffsetX + #WindowButtonWidth
  *WindowData\ButtonClose = Button(#PB_Any, *WindowData\Width - OffsetX, 0, DesktopScaledX(#WindowButtonWidth), DesktopScaledY(#WindowBarHeight), "A", Flags & #DarkMode * #DarkMode)
If Flags & #Window_MaximizeButton : .....
If Flags & #Window_MinimizeButton : .....

#
Suivant ton souci pour la fermeture de la fenêtre
En debug, avec ton contournement TerminateProcess_(), sans surprise, j'ai le message suivant: "The debugged executable quit unexpectedly"

Sans remonter plus loin, il semble bon pour l'exemple 1 et #PB_Event_CloseWindow sans contournement si j ajoute IsGadget et IsWindow dans la procédure Combo_Free

Code : Tout sélectionner

Procedure Combo_Free(*this.PB_Gadget)
  Protected *GadgetData.ComboData = *this\vt
  
  With *GadgetData
    UnbindEvent(#PB_Event_DeactivateWindow, @Combo_WindowHandler(), \MenuWindow)
    If \MenuCanvas And IsGadget(\MenuCanvas)
      UnbindGadgetEvent(\MenuCanvas, @Combo_VListHandler(), #PB_EventType_Change)
      FreeGadget(\MenuCanvas)
    EndIf
    If \MenuWindow And IsWindow(\MenuWindow)
      CloseWindow(\MenuWindow)
    EndIf

#
Comment cela fonctionne pour les fenêtre qui ont déjà une CallBack ?
J'ai vu ce sujet Multiple SetWindowCallback avec les Callbacks dans une liste mais j'ai pas essayé. Est il approprié ?
Avatar de l’utilisateur
ChrisR
Messages : 222
Inscription : sam. 14/févr./2015 16:20

Re: UI Toolkit

Message par ChrisR »

Il y a une erreur de copier-coller dans la Procedure Window:

Code : Tout sélectionner

If Flags & #Window_MinimizeButton
.....
  SetGadgetColor(*WindowData\MinimizeButton, #Color_Back_Cold, *WindowData\Theme\WindowTitle)
  ;SetGadgetColor(*WindowData\ButtonMaximize, #Color_Back_Cold, *WindowData\Theme\WindowTitle)
Avatar de l’utilisateur
ChrisR
Messages : 222
Inscription : sam. 14/févr./2015 16:20

Re: UI Toolkit

Message par ChrisR »

Je ne sais pas si c'est une bonne façon de participer! je continue.
Tous les événements des canvas sont reçus dans la boucle d'évènements, est-il possible de les filtrer suivant le type de Gadget.
ex: #PB_EventType_LeftClick seulement pour les boutons
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: UI Toolkit

Message par Shadow »

Salut, j'ai pas encore vue ton projet, code etc, mais oui, et re oui
et je signe, bien sur que ça va être très utile, des gadget skinable etc, donc fonce ! :D

Bon à mon avis t'es compétence sont bien au delà des miennes
non, en faite c'est pas ça, je suis meilleurs que toi c'est à peux près sur, mais...

Je suis meilleurs à être moins bon que toi :mrgreen:
Humour à deux balle, en gros ça veux dire que je suis meilleurs en médiocrité que toi ^^
Bon pas grave, oublie l'humour pourrie ^^

Mais oui ce sujet m'intéresse et ça va en intéresser bien d'autres !
Et Open Source, donc en faite, je me répète mais: Ouais grave !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
❤x1
Messages : 9
Inscription : jeu. 10/janv./2019 17:26
Contact :

Re: UI Toolkit

Message par ❤x1 »

threedslider a écrit : mar. 24/mai/2022 6:25 l’apparence complétement différente l'un à l'autre
Sur l'image d'exemple, la 3ème (qui vient de Diablo III, si je ne me trompe) est impossible avec UI Toolkit : il n'y aura pas d'image en arrière-plan, ça demanderait trop de travail supplémentaire.
Toutefois, je pense que ça peut être une bonne base pour l'ajouter au besoin : chaque gadget a une fonction redraw() ; il te suffira de la modifier pour obtenir le résultat que tu veux. L'intérêt de l'open source, tout ça.
ChrisR a écrit : mer. 25/mai/2022 11:46 Je ne sais pas si c'est une bonne façon de participer! je continue.
Je ne passe pas souvent par ici, le plus pratique serait d'ouvrir des bugs et de pull request sur GitHub, directement.
Open Source Stuff : Inputify, UITK, Batchable
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: UI Toolkit

Message par SPH »

Va y ❤x1 !

Quoi que cela fait de la concurrence (déloyale) envers un célèbre logiciel qu'a codé un de nos membres... :?
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
threedslider
Messages : 397
Inscription : dim. 01/juil./2018 22:38

Re: UI Toolkit

Message par threedslider »

❤x1 a écrit : dim. 29/mai/2022 21:25 Sur l'image d'exemple, la 3ème (qui vient de Diablo III, si je ne me trompe) est impossible avec UI Toolkit : il n'y aura pas d'image en arrière-plan, ça demanderait trop de travail supplémentaire.
Oui il ressemble à Diablo 3 mais c'est une démonstration qu'on peut skinné cela :)
❤x1 a écrit : dim. 29/mai/2022 21:25 Toutefois, je pense que ça peut être une bonne base pour l'ajouter au besoin : chaque gadget a une fonction redraw() ; il te suffira de la modifier pour obtenir le résultat que tu veux. L'intérêt de l'open source, tout ça.
Oui merci, je vais voir ça ;). Sinon Garde toujours ton super project opensource, ça peut toujours servir quoi ! :D
Répondre