UI Toolkit
UI Toolkit
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.
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/
Re: UI Toolkit
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.
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.
- threedslider
- Messages : 397
- Inscription : dim. 01/juil./2018 22:38
Re: UI Toolkit
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 !
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 !
Re: UI Toolkit
Waouh, ça déchire et si ce n'est que le tout début de son développement, il promet vraiment
Merci pour le partage et bon courage pour la suite, je vais suivre de près
Merci pour le partage et bon courage pour la suite, je vais suivre de près
Re: UI Toolkit
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.
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.
Dur à dire, qu'est-ce que tu appelles 100% modifiable ?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 ?
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) :
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.
- threedslider
- Messages : 397
- Inscription : dim. 01/juil./2018 22:38
Re: UI Toolkit
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 :
Voilà j'espère être plus clair ? Sinon je vois que tu as skinné ton UI c'est pas mal
Re: UI Toolkit
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.
Il semble bon aussi pour les boutons de la fenêtre. Je ne sais pas ou il faut ajouter pour les Menu!
#
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
#
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é ?
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)
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é ?
Re: UI Toolkit
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)
Re: UI Toolkit
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
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
Re: UI Toolkit
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 !
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
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 !
et je signe, bien sur que ça va être très utile, des gadget skinable etc, donc fonce !
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
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.
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.
Re: UI Toolkit
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.
Je ne passe pas souvent par ici, le plus pratique serait d'ouvrir des bugs et de pull request sur GitHub, directement.
Re: UI Toolkit
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...
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
!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
- threedslider
- Messages : 397
- Inscription : dim. 01/juil./2018 22:38
Re: UI Toolkit
Oui il ressemble à Diablo 3 mais c'est une démonstration qu'on peut skinné cela
Oui merci, je vais voir ça . Sinon Garde toujours ton super project opensource, ça peut toujours servir quoi !