Page 1 sur 1
Question sur un concept de programme
Publié : lun. 29/nov./2021 0:31
par Shadow
Bonsoir,
Je suis ici pour vous parler d'un concept de programme, le plus simplement possible, avec des mots simples.
Vous aimeriez avoir un module de code pour PB qui vous permettrait de créer, personnaliser et manipuler des objets sous forme de graphiques dans un éditeur de type "canvas" ?
Ce module serait composé de fonctions simplistes pour créer et interagir avec vos objets, pour les personnaliser, simplement.
Ce module serait capable de manipuler des Objets en groupe si nécessaire, par exemple sélectionner plusieurs Objets avec une fonction ou avec votre souris, puis les déplacer, les redimensionner, ou que sais-je encore !
Il sera également possible d'incorporer des données à chaque Objet comme un nombre ou une chaîne de caractères, ainsi tous vos Objets seront totalement indépendants les uns des autres mais uniques et personnalisables !
Imaginez ces "Objets" un peu comme des gadgets dans PB où chacun est unique et personnalisable, mais attention, ce ne sont pas des "Gadgets" à proprement parler mais des graphismes sous forme d'"Objets", c'est-à-dire qu'ils n'ont pas de caractéristique spécifique, comme un bouton par exemple !
Ce module ne serait pas orienté pour créer des "GUI", en fait il serait orienté pour faire plusieurs choses :
Par exemple vous pourriez avec cet outil, qui est un module de code, (donc vous devez coder avec des fonctions simples), créer différents éditeurs.
Et cela pourrait être :
Des éditeurs de dessin vectoriel.
Éditeurs graphiques
Éditeurs de niveaux de jeu
Éditeurs de programmes visuels (concepteurs)
Éditeurs d'interfaces graphiques
Éditeurs d'organigrammes
...
Ce module se concentre sur la partie graphique du programme, c'est-à-dire sur un canevas contenant des graphiques représentant des objets.
Après cela, c'est à vous de faire ce que vous voulez, ce module ne serait pas destiné à mâcher "TOUT" votre travail, c'est un outil, qui va grandement "faciliter" votre tâche, car ce qui est très difficile à faire dans certains éditeurs, c'est la manipulation de plusieurs Objets, par exemple sélectionner un groupe d'Objets, les déplacer, les redimensionner, etc.
De plus, il serait possible plus tard, d'envisager de mettre une interface graphique sur tout cela, de cette façon vous n'auriez pas à coder trop, il y aurait un éditeur pour créer des éditeurs d'objets (compliqué je sais), mais cela demande beaucoup de travail, ce serait possible mais difficile.
La principale force du module serait la manipulation des Objets.
C'est-à-dire que vous pourriez personnaliser vos Objets comme vous le souhaitez, par exemple en mettant une image dessus (encore plus puissant, votre propre code graphique), personnaliser le curseur de la souris lorsqu'elle passe dessus, personnaliser les poignées de redimensionnement des Objets et ne mettre que ceux qui vous intéressent et même les personnaliser aussi... !
Le gadget Canvas serait utilisé et appelé ici un éditeur, et dans cet éditeur vous incorporez vos Objets et vous les personnalisez et manipulez à votre guise.
Vous pourriez créer plusieurs éditeurs dans le même programme, chaque éditeur aurait ses propres Objets, mais il serait possible de changer les Objets d'un éditeur à un autre.
L'éditeur supporterait la souris et le clavier pour interagir et manipuler vos objets et tout ceci serait bien sûr personnalisable.
Les objets pourraient être sélectionnés, désélectionnés, déplacés, redimensionnés, tournés, avec la souris ou avec des fonctions...
Vous pourriez également contraindre vos Objets à faire certaines choses, par exemple, les limiter en mouvement et en taille, mais aussi en rotation, par exemple :
Pouvoir limiter leur taille minimale et maximale.
Pouvoir choisir un "pas" de redimensionnement, par exemple de 5 à 5 pixels.
Pouvoir les déplacer uniquement dans une certaine zone limitée.
Pouvoir choisir un "pas" de déplacement, par exemple de 5 à 5 pixels.
La force du module serait également de pouvoir savoir à tout moment ce qui est arrivé à vos objets, par exemple :
Un objet a-t-il été déplacé, redimensionné, pivoté ?
A-t-il fait l'objet d'un clic de souris (appui, relâchement, double clic) (gauche, centre, droite) ?
Bien sûr, tout n'a pas été écrit, le module serait capable de faire beaucoup plus mais l'essentiel a été dit.
Le concept vous plaît-il ?
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 8:38
par TazNormand
TL TR;
Je résume la pensée de Shadow : il veut/va réaliser un éditeur NoCode.
@Shadow : te connaissant, tu vas surement demander que des personnes participent à ton projet : pas sur que tu aies beaucoup de candidats, mais bon, les intéressés te répondront.
@ SPH : par pitié ne commences pas à lancer des vannes sur ce topic

Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 9:51
par Micoute
Si j'étais plus jeune, j'aurais été volontaire pour participer, car je crois en ce projet fantastique, mais pharaonique et si chacun en faisait une petite partie, ça pourrait avancer très vite.
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 12:32
par blendman
salut
pourquoi pas, ça pourrait être intéressant.
Tu as déjà commencé quelque chose ?
Une chose qui m'intéresserait, ce serait les transformations entre les objets (ce dont tu parles en disant "sélectionner plusieurs objets, les redimensionner, etc..":
- déplacement, c'est facile
- redimensionnement, c'est déjà moins évident mais c'est faisable
- rotation c'est faisable aussi, mais après ça dépend de comment c'est intégré
On pourrait même imaginer avoir une option "parent" pour chaque objet :
- chaque "enfant" est lié à son parent : déplacement ça ne change presque rien par rapport à au dessus.
- redimensionnement : pareil
- par contre, pour les rotations, c'est peut-être un peu plus particulier, (car chaque enfant doit hériter des rotations de "ses" parents)
Mais je pense que ce serait un module très intéressant.
Ah oui, un dernier truc : quand tu parles de manipuler des objets vectoriel, tu parles de tous les objets vectoriels de purebasic (ellipse, rectangle, curve, line) ou que les images et texte ?
A+
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 12:46
par Ar-S
Moi je ne suis pas intéressé. Curieux oui. Je n'ai même pas réellement pigé ce que tu voulais faire.
ça sent le recyclage de ton "projet" antérieur. Est-ce le cas ?
Juste un conseils. Si tu touches au canvas et donc aux graphismes, prends en compte dès le début la gestion des DPi sinon tu vas avoir de mauvaises surprises.
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 13:50
par Shadow
blendman a écrit : lun. 29/nov./2021 12:32
salut
pourquoi pas, ça pourrait être intéressant.
Tu as déjà commencé quelque chose ?
Une chose qui m'intéresserait, ce serait les transformations entre les objets (ce dont tu parles en disant "sélectionner plusieurs objets, les redimensionner, etc..":
- déplacement, c'est facile
- redimensionnement, c'est déjà moins évident mais c'est faisable
- rotation c'est faisable aussi, mais après ça dépend de comment c'est intégré
On pourrait même imaginer avoir une option "parent" pour chaque objet :
- chaque "enfant" est lié à son parent : déplacement ça ne change presque rien par rapport à au dessus.
- redimensionnement : pareil
- par contre, pour les rotations, c'est peut-être un peu plus particulier, (car chaque enfant doit hériter des rotations de "ses" parents)
Mais je pense que ce serait un module très intéressant.
Ah oui, un dernier truc : quand tu parles de manipuler des objets vectoriel, tu parles de tous les objets vectoriels de purebasic (ellipse, rectangle, curve, line) ou que les images et texte ?
A+
Tu as déjà commencé quelque chose ?
Oui, avec Stargate sur le forum anglais, depuis déjà pas mal de temps, nous avons créer "Editors Factory"
Tous ce que tu parles ici est déjà possible dans Editors Factory et oui sauf un truc.
Pourtant j'en avais parler mais il ne l'as pas implémenté, la rotation des Objets.
Mais ce projet semble atteindre ses limite parce que Stargate n'est plus du tous motivé.
Nous avons pas sue, surtout moi, faire comprendre aux gents ce que ont voulais faire et l'utilité de la chose.
Oui blendman, les Objets sont ici des graphiques, peut importe ce que c'est et oui ça utilise la bibliothèque VectorDrawing de PB !
Pour chaque Objet tu lui attribue une procédure propre à lui ou à ceux que tu veux pour dessiner les graphique dessus.
Exemple simpliste de notre module:
Création d'un Objet (#Objetct1) sur le Canevas (#Canvas), à la position X: 130, Y: 130, Largeur: 205, Hauteur: 205
Code : Tout sélectionner
CreateObject(#Canvas, #Objetct1, 130, 130, 205, 205) ; L'Objet a été crée mais est vide (Gris et sans poignées).
Affectation de la procédure qui va ce charger de dessiner les graphique sur l'objet: #Objetct1
@MyDrawingObject(), c'est la procédure, c'est un CallBack, et l'autre paramètre c'est juste une valeur envoyer à la Callback.
Code : Tout sélectionner
SetObjectDrawingCallback(#Objetct1, @MyDrawingObject(), RGB(64, 128, 192))
La procédure CallBack est de cette forme:
Chaque fois que quelque chose va ce passer sur le Canevas, qu'il faut redessiner, le programme s'en charge automatiquement, t'as rien à faire !
Dans cette procédure, tu dois utiliser des fonction de type VectorDrawing de PB, par exemple, ici un simple carrer avec une bordure:
Code : Tout sélectionner
Procedure MyDrawingObject(Object.i, Width.i, Height.i, iData.i)
AddPathBox(0.5, 0.5, Width-1, Height-1)
VectorSourceColor(iData|$80000000)
FillPath(#PB_Path_Preserve)
VectorSourceColor(iData|$FF000000)
StrokePath(1)
EndProcedure
Une chose qui m'intéresserait, ce serait les transformations entre les objets
Justement, Editors Factory est basé sur la manipulation d'Objets, par des fonctions ou avec la souris et le clavier sur le Canevas, et tout est paramétrable bien sur !
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 13:58
par Shadow
Ar-S a écrit : lun. 29/nov./2021 12:46
Moi je ne suis pas intéressé. Curieux oui. Je n'ai même pas réellement pigé ce que tu voulais faire.
ça sent le recyclage de ton "projet" antérieur. Est-ce le cas ?
Juste un conseils. Si tu touches au canvas et donc aux graphismes, prends en compte dès le début la gestion des DPi sinon tu vas avoir de mauvaises surprises.
Oui, j'ai essayer d'expliquer mais j'ai semble t-il pas réussi à faire comprendre le concept de la chose.
Je pense que je me suis très mal pris, je suis pas doué pour ça.
Oui, le recyclage de mon "projet" antérieur.
Stargate est plus du tous motivé, et pas le temps, il reste pas mal de chose à faire en plus.
Mais pour par exemple la rotation des Objet, vue qu'il ne l'as pas prévue au début, la faut tous refaire, trop ardu !
Donc oui, je cherche à recommencer le projet avec plus de monde impliquer, avec un meilleurs suivie et de meilleurs explications etc...
Et en restructurant mieux le projet, mais c'est déjà un très beau projet que nous avons fait !
Oui j'ai rien codé, car je ne sais pas faire tous ça, qui sais le faire, peut de monde !
Justement le module est fais pour rendre toutes ces manipulations ultra facile, ce qui est utile pour créer des éditeur !
Par contre j'ai fait pleins d'autre truc, test, idées, exemples, traduction...
Bien sur que c'est un projet en quel je crois très fort, car très utile !
Si vous avez des questions hésitez pas !
PS: le Nom de Editors Factory vous a fait penser à quoi, à quoi vous attendiez vous avec ce module ?
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 14:54
par ChrisR
J'ai suivi un peu EditorFactory, en le testant et avec quelques exemples partagés, pour voir comment il pourrait être utiliser dans un GUI Designer.
C'est un très bon projet, et développé de main de maitre par StarGate.
Ensuite, il ne faut pas se voiler la face, tu as eu l'idée initiale et d'autres idées, c'est très bien. Mais il ne fait aucun doute que le boss dans la conception et la réalisation, c'est bien Stargate. En conservant bien sur ta part au projet.
Quand tu dis, "en restructurant mieux le projet", je ne comprends pas bien, il est déjà très structuré, Stargate et un As dans ce genre de chose, cf TabBarGadget.
Des choses peuvent certainement être ajoutées mais le module actuel est déjà très complet.
Pour son utilisation, je pense personnellement qu'il y a un problème avec la licence actuelle:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
NonCommercial — You may not use the material for commercial purposes.
Pas de souci avec la partie Attribution mais la partie Non commerciale est, je pense, un frein important et un NoGo pour ceux qui voudrait l'utiliser dans leurs projets.
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 16:09
par blendman
ChrisR a écrit : lun. 29/nov./2021 14:54
Pour son utilisation, je pense personnellement qu'il y a un problème avec la licence actuelle:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
NonCommercial — You may not use the material for commercial purposes.
Pas de souci avec la partie Attribution mais la partie Non commerciale est, je pense, un frein important et un NoGo pour ceux qui voudrait l'utiliser dans leurs projets.
oui, je suis d'accord.
C'est pour ça que presque personne ne l'utilise.
Faut mettre une licence MIT, c'est l'une des plus permissive et c'est une licence intéressante pour tout le monde.
C'est ce que j'ai fait avec mes logiciels open-source (cartoon, animatoon, etc).
La plupart sont sous licence MIT, donc, une société peut même reprendre le projet, en faire un outil commercial et le vendre, en respectant la licence (je crois qu'ils doivent fournir les sources s'il les modifient, etc).
EDIT : après, je pense qu'il y a un autre soucis, ce sont les exemples.
Pour moi, les exemples sont trop limités.
Il faudrait des exemples avec des ellipses, des curves, et surtout des comportements.
à part sélectionner, bouger ou agrandir des objets, les autres choses ne m'intéressent pas (même si je reconnais que c'est intéressant, je n'ai pas l'utilité des containers, ou de la création d'interface sur le canvas).
Et ce qui m'intéresse, je ne trouve pas comment faire :
- redimensionner plusieurs objets et garder les proportions (autrement dit la distance proportionnelle entre les objets)
- faire la même chose avec les rotations (visiblement, ce n'est pas possible, et c'est vraiment dommage)
- lier des objets à un autre (parent) : position, redimensionnement, rotation.
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 17:22
par Shadow
ChrisR a écrit : lun. 29/nov./2021 14:54
J'ai suivi un peu EditorFactory, en le testant et avec quelques exemples partagés, pour voir comment il pourrait être utiliser dans un GUI Designer.
C'est un très bon projet, et développé de main de maitre par StarGate.
Ensuite, il ne faut pas se voiler la face, tu as eu l'idée initiale et d'autres idées, c'est très bien. Mais il ne fait aucun doute que le boss dans la conception et la réalisation, c'est bien Stargate. En conservant bien sur ta part au projet.
Je suis bien d'accord avec toi, et je ne m'en suis
JAMAIS caché, même Stargate le sais que sans lui ce projet n'aurais surement jamais existé
donc je ne me voile en rien du tout la face, je suis extrêmement reconnaissant pour ce que as fais Stargate, c'est grâce à lui tous ça, et je lui est déjà dis !
Mais j'ai pas rien fais non plus, j'ai participé aussi, a faire le reste !
Le boss c'est Stargate, c'est sont code, il lui appartient, il le sais, nous en avons déjà parlé lui et moi !
ChrisR a écrit : lun. 29/nov./2021 14:54
Quand tu dis, "en restructurant mieux le projet", je ne comprends pas bien, il est déjà très structuré, Stargate et un As dans ce genre de chose, cf TabBarGadget.
Des choses peuvent certainement être ajoutées mais le module actuel est déjà très complet.
Oui je suis d'accord mais ya peut être des choses qui n'ont pas été pris en compte pour la réalisation du projet, notamment la rotation des Objets.
Et peut être d'autre choses.
ChrisR a écrit : lun. 29/nov./2021 14:54
Pour son utilisation, je pense personnellement qu'il y a un problème avec la licence actuelle:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
NonCommercial — You may not use the material for commercial purposes.
Pas de souci avec la partie Attribution mais la partie Non commerciale est, je pense, un frein important et un NoGo pour ceux qui voudrait l'utiliser dans leurs projets.
Oui, c'est vraie, je le comprends, j'ai juste pas envie que certain ce face du fric grâce à notre travail tu comprends ?
Là aussi nous en avons parler avec Stargate, mais c'est plutôt moi ici le frein, pas lui, lui il est de ton avis !
Mais si c'est le seule frein, en refaisant un autre projet, ont peux changer ça.
J'ai juste du mal avec le coté commerciale tu vois.
Genre, tu me ponds un super modules qui me fais tous le travail, je fais 2, 3 choses à coté et je vends tous ça dans un package exe au prix fort de X euro !
Et le créateur du module, qui à tous fait, bha il peut s'assoir sur le fruit de son travail, et donc certain vont se faire du blé sur sont dos et grâce à lui, c'est ça que je veux évité, c'est pour ça que j'ai interdis l'utilisation commerciale de ce module même dans un programme !
Genre je peu prendre le super module TabBar de Stargate, puis me faire mon beau logiciel avec, prendre d'autres code à pompé à droite et à gauche, faire 2, 3 chose à coté et vendre tous ça, c'est tous bénef pour moi qui n'aurais rien foutue et qui va récolté les € !
Re: Question sur un concept de programme
Publié : lun. 29/nov./2021 17:27
par Shadow
blendman a écrit : lun. 29/nov./2021 16:09
ChrisR a écrit : lun. 29/nov./2021 14:54
Pour son utilisation, je pense personnellement qu'il y a un problème avec la licence actuelle:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
NonCommercial — You may not use the material for commercial purposes.
Pas de souci avec la partie Attribution mais la partie Non commerciale est, je pense, un frein important et un NoGo pour ceux qui voudrait l'utiliser dans leurs projets.
oui, je suis d'accord.
C'est pour ça que presque personne ne l'utilise.
Faut mettre une licence MIT, c'est l'une des plus permissive et c'est une licence intéressante pour tout le monde.
C'est ce que j'ai fait avec mes logiciels open-source (cartoon, animatoon, etc).
La plupart sont sous licence MIT, donc, une société peut même reprendre le projet, en faire un outil commercial et le vendre, en respectant la licence (je crois qu'ils doivent fournir les sources s'il les modifient, etc).
EDIT : après, je pense qu'il y a un autre soucis, ce sont les exemples.
Pour moi, les exemples sont trop limités.
Il faudrait des exemples avec des ellipses, des curves, et surtout des comportements.
à part sélectionner, bouger ou agrandir des objets, les autres choses ne m'intéressent pas (même si je reconnais que c'est intéressant, je n'ai pas l'utilité des containers, ou de la création d'interface sur le canvas).
Et ce qui m'intéresse, je ne trouve pas comment faire :
- redimensionner plusieurs objets et garder les proportions (autrement dit la distance proportionnelle entre les objets)
- faire la même chose avec les rotations (visiblement, ce n'est pas possible, et c'est vraiment dommage)
- lier des objets à un autre (parent) : position, redimensionnement, rotation.
Je prends note.
Oui les exemples sont un peu limités c'est vraie.
- Pour redimensionner plusieurs objets et garder les proportions, je te propose d'en faire la demande sur le forum anglais directement dans le topic,
sinon je peux le faire pour toi.
- Pour la rotation je ne comprends pas ce que tu veux dire.
- Pour lier des Objets à un autre parent, c'était justement en court, Stargate y travaillais....