TextEditorGadget(), et environnement CustomGadget

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

TextEditorGadget(), et environnement CustomGadget

Message par graph100 »

J'ai commencé depuis quelques jours un code Include pour ajouter des gadgets sympa facilement et d'une manière "à la purebasic"

Le principe :

Un environnement de création des gadgets, géré en interne par l'include. Chaque gadget repose sur une structure globale CustomGadget_Base,
puis viens se greffer la structure propre au gadget en question.

On ajoute dans la boucle de traitement des évènements la procedure :

Code : Tout sélectionner

	CG_ProcessEvent(event, Gadget, event_type) ; c'est une Macro 
Cette procédure traite tout ce qui est relatif aux gadgets (scrolling, rendering ...), et gère le redimensionnement dynamique de tout les Customgadgets selon des paramètres d'ancre et de dock selon les bords de la fenêtre.

Exemple :
Image

Image

Le code comporte plusieurs sections :

- une section de déclaration des Declare, structures, variables et constantes pour chaque gadget, et pour la partie CustomGadget.

- une section CustomGadget, avec toutes les commandes 'publiques' que devrait utiliser le programmeur pour modifier les gadgets, une partie avec les commandes privées

- une section pour chaque gadget, avec les commandes publique de création, ajout spécial de texte, etc.... et une autre partie avec les commandes de gestion internes, souvent appelé par les commandes de customGadget.

Disponible pour le moment :
- Compatible Windows et Linux

- Gestion des évènement des gadget disponibles
- Gestion du redimensionnement dynamique des gadgets selon des ancres et des dock (inscrit dans une fenêtre ou un gadget)

- CanvasButton (repris à einander du fofo anglais, je l'ai ajouté car il étais rapidement transportable sur mon environnement)
- TextEditorGadget (de l'idée de Idle, mais certaines chose ne me convenais pas, donc je suis repartis de 0, avec quelques astuces tirées de son code)
- ImageExGadget (Par moi, car j'en ai besoin pour un projet)
- SplitterGadget (Idem)
- Container (Idem)
- OptionButton (Idem)
- ImageSlide (Idem)
- ListViewEx (Idem, en cours)
- Graphic (Idem)
- DMXSlider (repris à GallyHC)

Lien :

Le code étant trop long, voici le lien de téléchargement : CustomGadgets_5_10.zip (dernière version, code de démo + INCLUDE)

J'ai normalement testé sur window7 et Linux Mandriva (Idle a aussi testé sur Linux), Mais si il y a un bug, signalez le moi.

Si vous avez envie de rajouter un nouveau gadget dans cet environnement, joignez moi par mp.


Remerciement :
- Idle : pour son magnifique TextEditGadgetEx(), ses tests sur linux qui ont permis de virer plusieurs bugs.
- einander : pour son gadget CanvasButton
- luis : pour les routines de rotation d'image
- GallyHC : Pour le design de l'OptionButton, son DMXSlider.

Mots clés : Custom Gadget, gadget personnalisé
Dernière modification par graph100 le lun. 10/juin/2013 19:53, modifié 17 fois.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: TextEditorGadget(), et environnement CustomGadget

Message par graph100 »

################################
Environnement CustomGadget
################################

Statut : En cours de programmation

Fonctions publiques :

Code : Tout sélectionner

CG_ProcessEvent(event, Gadget, event_type) ; c'est une Macro
Declare CG_ResizeGadget(Gadget, x, y, width, height, *adresse_customgadget.ICG_CustomGadget_base = -1)

Declare CG_GetGadgetState(Gadget)
Declare CG_SetGadgetState(Gadget, State.l)

Declare CG_GetGadgetAttribute(Gadget, Attribute)
Declare CG_SetGadgetAttribute(Gadget, Attribute, Value)

Declare CG_DisableGadget(Gadget, State.b)
Declare.b CG_IsDisableGadget(Gadget)

Declare CG_SetGadgetText(Gadget, Text.s)
Declare.s CG_GetGadgetText(Gadget)

Declare CG_AddGadgetItem(Gadget, Position, Text.s, FrontColor.l, Image.l = -1, Redraw.b = #True)

Declare CG_FreeGadget(Gadget)

Declare.i CG_LoadFont(FontName.s = "Arial", FontSize.l = 12, FontStyle.l = #CG_Font_Normal)
Declare.i CG_SetDefaultFont(FontName.s = "Arial", FontSize.l = 12, FontStyle.l = #CG_Font_Normal)
Declare.i CG_SetDefaultColorSet(Index)
Fonctionnalités :

- Gère les évènements des gadgets Customisés
- Gère le redimensionnement dynamique des gadgets selon les modes Anchor et Dock passés en paramètres

- Commande de redimensionnement des gadgets
- Gestion de l'état des gadget (Paramètre ayant une signification particulière pour chaque gadget)
- Gestion de l’inhibition d'un gadget avec DisableCustomGadget()
- Libération des CustomGadgets

- Chargement des Polices de caractère communes à tout les gadgets


A venir :

- Set de commande complet sur les gadgets en général
- Mettre chaque commande à jour pour agir correctement sur les gadget concernés
- Possibilité de changer le set de couleur utilisé pour les gadgets courants
- possibilité de changer le set de couleur pour un gadget en particulier

- plein d'autres choses qui ne me viennent pas en tête maintenant, mais qui seront nécessaires.


Commentaires :

On doit mettre à jour certaines commandes des CustomGadget en même temps que l'on programme un gadget. C'est plus long, mais cela assure du bon fonctionnement de l'ensemble.




################################
TextEditorGadget
################################

Statut : En cours de programmation

Fonctions publiques :

Code : Tout sélectionner

Declare CG_TextEditorGadget(Gadget, x, y, Width, Height, Flag.b = #CG_TextEditor_Flag_Editable, ParentWindow = #CG_ActiveWindow, Anchor.b = #CG_Anchor_None, Dock.b = #CG_Dock_None, IfInGadget_ParentGadget = -1)
Declare CG_TextEditor_AddText(Gadget, Text.s, FontName.s = "", FontSize.l = 12, FontStyle.l = #CG_Font_Normal, Color.l = #Black)
Fonctionnalités :

- Affichage du texte
- Utilisation de Différentes polices, tailles de polices, Styles, couleurs, couleurs d'arrière plan
- Barres de Défilement Automatiques, Horizontale et Verticale
- Curseur de Texte : plaçable à la souris, déplaçable au clavier
- Mode d'édition : Insertion / Écrasement : avec la touche [Insert]
- Sélection de texte
- Saisie du texte
- Sélectionner tout : [CTRL+A]
- Suppression de caractère avec [BackSpace] et [Delete]
- Copier / Couper : [CTRL+V] / [CTRL+X]

A venir :

- Coller avec raccourcis claviers [CTRL+V]
- copier coller entre TextEditorGadget() d'un même programme, avec la mise en forme d'origine
- Choix de la police de la sélection
- Choix de la police d'écriture actuelle
- Sélection de la police avec boite de dialogue
- Commande pour agir sur le texte et le presse papier
- copier coller de texte depuis le presse papier normal


Commentaires :

Pour le moment ce qui est implémenté fonctionne bien. Le rendu est assez fluide, essayez de redimensionner la fenêtre du code de l'exemple, de bouger les barres de défilement.
Dans le Code de démo ,changez le MODE (entre 0 et 8, les modes 4 et 5 nécessitent de changer les noms des fichiers txt chargés).

Essayez le mode 7 en mettant la constante DEBUG_TIME = #True pour obtenir les temps d’exécutions des différentes tâches. Ce mode charge 156 200 caractères (pas tous différents !) et les affiche sans lag :D

Si vous me faites parvenir des résultats de test (DEBUG_TIME = #True), donnez moi votre configuration système (OS ? 64 ou 32 bits ?) et votre configuration matérielle (vitesse processeur, nombre de cœurs, mémoire RAM)
Pour savoir si ça rame sévère sur certaines machines. Je programme sur un pc assez puissant donc je ne suis pas très représentatif des ordis des utilisateurs.




################################
CanvasButtonGadget
################################

Statut : En cours de programmation

Fonctions publiques :

Code : Tout sélectionner

Declare CG_CanvasButtonGadget(Gadget, x, y, Width, Height, Text.s, Flag.b = #CG_CanvasButton_NoFlag, ParentWindow = #CG_ActiveWindow, Anchor.b = #CG_Anchor_None, Dock.b = #CG_Dock_None, IfInGadget_ParentGadget = -1)
Fonctionnalités :

- Affichage des différents états du bouton
- Mode Toggle Bouton
- Gestion des polices avec le système des polices internes aux customgadgets pour une intégration complète.

A venir :

- Mode Bouton normal
- Gestion des évènements sur le bouton (il faut encore déterminer comment faire revenir ces évènements, certainement un retour de la fonction CustomGadget_ProcessEvent(() )
- Images en arrière plan, avec différents états (Normal, survolé, cliqué, enfoncé, enfoncé survolé, désactivé)
- une image pour l'arrière plan, masques avec les couleurs du set de couleur pour faire les états (voir si c'est intéressant ???)


Commentaires :

Ce Gadget est très joli, mais pour le moment on ne peux l'utiliser que en mode ToggleButton. Il faut récupérer son état avec la commande CG_GetGadgetState()




################################
ImageExGadget
################################

Statut : Utilisable Tel quel

Fonctions publiques :

Code : Tout sélectionner

Declare CG_ImageExGadget(Gadget, x, y, Width, Height, ImageId.l, BackColor.l = #CG_Default_BackColor, Flag.b = #CG_ImageEx_Flag_Normal, ParentWindow = #CG_ActiveWindow, Anchor.b = #CG_Anchor_None, Dock.b = #CG_Dock_None, IfInGadget_ParentGadget = -1)
Declare CG_ImageEx_SetFlag(Gadget, Flag.l)
Fonctionnalités :

- Affichage d'une image selon plusieurs options
- Options : Image la plus grande possible, largeur la plus grande, hauteur la plus grande, redimensionnement si l'image est plus grande que le gadget
- Positionnement : centré, à gauche, à droite, sur l'horizontale et la verticale,
- Rotation de l'image affichée : 0°, 90°, 180°, 270°

Commentaires :

L'affichage est très rapide pour de grande image si il n'y a pas besoin de les redimensionner. Plus rapide qu'un ImageGadget() normal (il me semble)




################################
SplitterGadget
################################

Statut : Utilisable Tel quel

Fonctions publiques :

Code : Tout sélectionner

Declare CG_SplitterGadget(Gadget, x, y, Width, Height, Flag.b = #CG_Splitter_Flag_Normal, ParentWindow = #CG_ActiveWindow, Anchor.b = #CG_Anchor_None, Dock.b = #CG_Dock_None, IfInGadget_ParentGadget = -1)
Fonctionnalités :

- Permet d'utiliser un splitter au fonctionnement identique à celui existant nativement sur PB

Commentaires :

Pour modifier ses paramètres, utilisez la commande CG_SetGadgetAttribute() avec les flags :
#CG_Splitter_Attribute_FirstGadget
#CG_Splitter_Attribute_SecondGadget
#CG_Splitter_Attribute_FirstMinimumSize
#CG_Splitter_Attribute_SecondMinimumSize





################################
ContainerGadget
################################

Statut : Utilisable Tel quel

Fonctions publiques :

Code : Tout sélectionner

Declare CG_ContainerGadget(Gadget, x, y, Width, Height, ParentWindow, Anchor.b = #CG_Anchor_None, Dock.b = #CG_Dock_None, IfInGadget_ParentGadget = -1)
Fonctionnalités :

- Permet d'utiliser le gadget container de PB avec les CustomGadgets.

Commentaires :

Pour voir un exemple d'utilisation : CG_EXEMPLE_Splitter_Container_ImageEx.pb (dans l'archive CustomGadget.zip)





################################
OptionButton
################################

Statut : Utilisable Tel quel

Fonctions publiques :

Code : Tout sélectionner

CG_OptionButtonGadget(Gadget, x, y, Width, Height, ParentWindow, Anchor.b = #CG_Anchor_None, Dock.b = #CG_Dock_None, IfInGadget_ParentGadget = -1)
Fonctionnalités :

- Gadget affichant un texte, avec plusieurs onglets possibles, pour permettre par exemple de régler un paramètre avec plusieurs valeurs possibles

Commentaires :

Pour voir un exemple d'utilisation : CG_Test_OptionButton_&_ImageSlide.pb (dans l'archive CustomGadget.zip)





################################
ImageSlide
################################

Statut : Utilisable Tel quel

Fonctions publiques :

Code : Tout sélectionner

CG_ImageSlideGadget(Gadget, x, y, Width, Height, ParentWindow, Anchor.b = #CG_Anchor_None, Dock.b = #CG_Dock_None, IfInGadget_ParentGadget = -1)
Fonctionnalités :

- Gadget affichant des images défillantes, on peut changer d'image sélectionnée avec la roulette et le click gauche

Commentaires :

Pour voir un exemple d'utilisation : CG_Test_OptionButton_&_ImageSlide.pb (dans l'archive CustomGadget.zip)
Dernière modification par graph100 le ven. 26/août/2011 19:05, modifié 15 fois.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: TextEditorGadget(), et environnement CustomGadget

Message par graph100 »

Historique de version

Lien pour la dernière version

05/03/12 : v2.0.1800 :

CustomGadget :

Modification totale de la façon de gérer les gadgets,
On passe en une sorte de programmation objet qui permet de coder les gadget séparément
de la partie Gestion CustomGadget.

-> normalement il devrait être plus faciled d'ajouter des gadgets, sans se pencher sur
le code du projet entier

-> Ajout de 3 nouveaux Gadgets.
- ListViewEx (non exploitable encore)
- Graphic (à finir mais utilisable pour un affichage rapide de tableau simple)
- DMXSlider (à fignoler)

TextEditorGadget :
- correction d'un léger bug d'affichage de la sélection par dessus les scrollbars

26/08/11 : v1.13.1716 :

ImageSlideGadget :

- Modification du pas de glissement des images.
- Correction de la sélection des images.

TextEditorGadget :

- Ajout : Copier : [CTRL + C] / Couper : [CTRL + X]
- Support de CG_GetGadgetText()
- Correction d'un bug lors de la suppression de texte supprimant les scrollbars.
- Mise à jour de la récupération de l'input avec la correction apportée par la maj 4.60beta4 de PB (#pb_canvas_input)

20/08/11 : v1.13.1594 :

CustomGadget :

; - ajout : CG_FREE_CUSTOMGADGET() : à utiliser pour terminer les threads lancés par customgadget
- Ajout : ImageSlideGadget() : Affiche des Images sur une banderolle défilante, on récupère l'image courante avec CG_GetGadgetState()

OptionbuttonGadget :

- Modification : changement de la méthode de dessin pour augmenter la vitesse de dessin d'un grand gadget.

ImageSlideGadget :

- Fonctionne. On peut ajouter des images avec CG_AddGadgetItem()

17/08/11 : v1.12.1516 :

CustomGadget :

- Ajout : OptionButtonGadget : permet de choisir entre plusieurs choix
- Ajout : CG_AddGadgetItem() : ajoute des choix dans le OptionButtonGadget
- Ajout : CG_SetDefaultColorSet(Index) : permet de changer le set de couleur par défaut. Ne modifie pas la couleur des gadgets déjà créés

TextEditorGadget :

- Correction : bug IMA lors d'un effacement de la sélection sans relâcher le bouton de la souris

OptionButtonGadget :

- Ajout : CG_OptionButtonGadget()
- Graphisme : OK


11/08/11 : v1.11.1400 :

CustomGadget :

- Correction pour Linux : les gadgets n'apparaissaient pas sur la fenêtre si la fenêtre n'est pas précisée : ce n'est maintenant plus un paramètre optionnel
- Ajout d'un CG_Gadget : CG_ContainerGadget()
- Ajout : #CG_Anchor_All = #CG_Anchor_Top | #CG_Anchor_Bottom | #CG_Anchor_Left | #CG_Anchor_Right
- Ajout d'un code de Démo supplémentaire "CG_EXEMPLE_Splitter_Container_ImageEx.pb"

SplitterGadget :

- Correction pour Linux : Le splitter ne déplace les gadget que lorsque la souris est relachée.
- Correction : La méthode de position de la barre n'est plus relative, mais absolue (cela générait des problèmes sur Linux)
- Changement : On doit maintenant donner les gadgets à redimensionner lors de la création du splitter. Ne pas en mettre (-1) ne génère pas de bug.

TextEditorGadget :

- Correction : Sélection et souris en dehors du gadget.

ContainerGadget :

- Peut contenir d'autre container, des splitters
- Redimensionnement fonctionnel

ImageExGadget :

- Ajout : #CG_ImageEx_Flag_Center = #CG_ImageEx_Flag_Horizontal_Center | #CG_ImageEx_Flag_Horizontal_Center, c'est plus pratique


10/08/11 : v1.10.1222 :

CustomGadget :

- Mise à jour : CG_FreeGadget() : pour tout les gadgets, CG_SetGadgetText() : pour le TextEditorGadget()

TextEditorGadget :

- Correction : La taille interne de la ScrollBar H est maintenant mise à jour lors de l'edition du texte, de sorte que la barre ai la bonne taille.

ImageExGadget :

- Ajout : Les paramètres de rotation des images sont maintenant fonctionnels


09/08/11 : v1.10.1162 :

CustomGadget :

- Ajout : SplitterGadget()
- Modification : Le code est maintenant un include.
- Modification : Chaque partie de code par gadget doit être activée pour pouvoir être utilisée. Ceci permet de réduire les ressources utilisés par le programme :
#CG_ADDGADGETCODE_TextEditor = #True
#CG_ADDGADGETCODE_CanvasButton = #True
#CG_ADDGADGETCODE_ImageEx = #True
#CG_ADDGADGETCODE_Splitter = #True

- Ajout : ICG_AddCustomGadget(*adr.ICG_CustomGadget_base)
- Ajout : CG_GetGadgetAttribute(Gadget, Attribute) : pour le SplitterGadget()
- Ajout : CG_SetGadgetAttribute(Gadget, Attribute, Value) : pour le SplitterGadget()
- Modification : #CG_ActiveWindow au lieu de "-1", crée le gadget dans la fenêtre active
- Mise à jour : CG_SetGadgetState() fonctionne avec le SplitterGadget()
- Modification : ICG_Color_Percentage() est une Macro maintenant

TextEditorGadget :

- Ajout : fonctionnement correct de la touche [Insert]
- Ajout : Touche [Suppr] : effacement des caractères vers la droite
- Modification : la fonction"CG_AddEditorGadgetText()" est renommée en "CG_TextEditor_AddText()" pour la cohérence avec les autres fonction

ImageExGadget :

- Modification : "ICG_SetImageEx()" est renomée en "ICG_ImageEx_SetImage()"
- Correction : Bug dans le placement de l'image lorsqu'uniquement la scrollbar H est présente

SplitterGadget :

- CG_SplitterGadget(Gadget, x, y, Width, Height, Flag.b = #CG_Splitter_Flag_Normal, ParentWindow = -1, Anchor.b = #CG_Anchor_None, Dock.b = #CG_Dock_None, IfInGadget_ParentGadget = -1)
- Gestion des Flags suivants :
#CG_Splitter_Flag_Normal
#CG_Splitter_Flag_FirstFixed
#CG_Splitter_Flag_SecondFixed
#CG_Splitter_Flag_Horizontal

- Gestion des Attribus suivants :
#CG_Splitter_Attribute_FirstGadget
#CG_Splitter_Attribute_SecondGadget
#CG_Splitter_Attribute_FirstMinimumSize
#CG_Splitter_Attribute_SecondMinimumSize

- correction : défaut dans la position du curseur
- Ajout : Déplacement du curseur à la souris
- Ajout : Dessin du splitter


05/08/11 : v1.03alpha1040 :

TextEditorGadget :

- Correction Mineures pour Linux


05/08/11 : v1.03alpha1033 :

CustomGadget :

- Ajout de l'ImageExGadget

ImageExGadget :

- Fonction ScrollBar automatique
- Fonction redimensionnement de l'image selon des paramètres
- Positionnement de l'image selon des paramètres
- Ajout de la fonction publique : CG_ImageEx_SetFlag(Gadget, Flag.l)


v1.02alpha889 :

TextEditorGadget :

- le terme 'WritingLine' est remplacé par celui plus approprié : 'BaseLine'
- Ajout : l'effacement de caractère / sélection avec la touche [BackSpace] et combinaison avec [CTRL]
- ajout : écrire efface la sélection
- Ajout : raccourci pour tout sélectionner : [CTRL] + A
- Développement : Ajout : Fonction d'affichage des listes de texte pour débogage (#DEBUG_WINDOW = #True)


v1.02alpha709 :

TextEditorGadget :

- Bug corrigé dans l'affichage des lignes de texte lorsqu'elles sont en bas la fenetre d'affichage
- Ajout de la saisie de caractère et du retour à la ligne (attention, bug avec LastElement())

Bug grave : Lors de l'utilisation de splitlist() la fonction LastElement() continue à retourner l'ancien dernier élément, et non le nouveau comme elle devrai, ceci cause des bug dans l'affichage de la sélection et le déplacement du curseur lors d'un retour à la ligne !!!
La solution consiste à utiliser le code suivant à la place de LastElement()

Code : Tout sélectionner

ForEach maliste()
Next
mais imaginez un peu le temps que ça prend !


v1.02alpha629 :

TextEditorGadget :

- Bug corrigé dans le placement du curseur texte à la souris
- Réécriture du système de placement du texte - Bug restant avec le CanvasGadget() sur linux
- Bug corrigé lors du déplacement du curseur texte si il n'est pas visible
- Ajout de la sélection à la souris - Bug restant avec le CanvasGadget()
- Ajout de la sélection au clavier avec la touche [Shift]
- Ajout du déplacement par mot avec [Control] + Flèche Gauche / Droite
- Ajout du déplacement de la scrollBar V avec [Control] + Flèche haut / bas
- Le curseur change sur la sélection de texte

Bug Canvasgadget

- linux : c'est peut etre un comportement normal de Gnome, mais c'est très désagréable.
Lorsqu'il y a un gadget dans la direction de la flèche du clavier que l'on appuie, on ne peux pas répéter cette touche. Le focus passe au gadget dans cette direction.




v1.01alpha498 :

TextEditorGadget :

- Ajout gestion touches [Home] et [End]
- Bug corrigé lors d'un redimensionnement rapide (comme un passage en plein écran)
- simplification du système de position des ScrollBars
- Bug corrigé dans le déplacement du curseur texte avec les touches
- Bug corrigé dans le placement du curseur de texte avec la souris
- Ajout du déplacement des scrollBars pour voir le curseur texte lorsqu'on le déplace manuellement


v1.00alpha427 :

- Les gadgets fonctionnent avec CG_SetDefaultFont()

CanvasButtonGadget :
- Reconstruction de la fonction de dessin
- Prise en compte des polices des CG


v1.00alpha389 :

- Unification des noms de constantes / structures
- rassemblement des variables nécessaires à la gestion de l'environnement CustomGadget
- réorganisation des fonctions par groupe d'appartenance
- renommage des fonctions pour toute les avoir sous le nom de CG_... pour les procédures publiques et ICG_... pour les procédures privées

CustomGadget :
- Ajout : ICG_InitCustomGadget()
- Ajout : CG_SetDefaultFont()

CanvasButtonGadget :
- Modification : il utilise les sets de couleur par défaut


27/07/11 : v1.00alpha341 :

CustomGadget :
- gestion des évènement entrant
- Redimensionnement dynamique fonctionnel par ancre et dock
- commande pour Désactiver les gadgets
- commande pour changer / récupérer l'état des gadgets
- commande pour changer la taille des gadgets (ne supprime pas les ancres et dock)

TextEditorGadget :
- affichage du text
- auto scrolling fonctionnel
- support de gros texte sans ralentir
- Ajout de texte à la fin du gadget avec une police / taille / style / couleur définis ou par défaut
- positionnement du curseur de texte à la souris
- déplacement du curseur de texte avec les touches claviers
- Passage entre les modes Insertion et remplacement avec la touche [Insert]

CanvasButtonGadget :
- Gestion du Toggle Mode
Dernière modification par graph100 le lun. 05/mars/2012 0:09, modifié 17 fois.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
idle
Messages : 63
Inscription : ven. 30/juil./2010 2:31

Re: TextEditorGadget(), et environnement CustomGadget

Message par idle »

It's coming along really well, keep up the effort.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: TextEditorGadget(), et environnement CustomGadget

Message par graph100 »

Alors ? Absolument personne ne veux tester ? (merci Idle!)
C'est à ce point non-intéressant ? Faut'il que je poste le code dans un ultra grand double post ? ou alors c'est l'effet vacances ?

Je sais que je programme mal, mais quand même ! :(
j'ai besoin de savoir si le code tourne correctement (sans ramer ni trop bouffer de proc) sur des machines avec des configs différentes ! Mon pc est récent et n'est pas un bon indicateur pour ça.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: TextEditorGadget(), et environnement CustomGadget

Message par Ar-S »

ça a l'air super intéressant, ne te décourage pas, mais c'est vrai que perso je suis en "grosse production" donc pas trop l'interret immédiat mais j'essayerai ça quand je pourrai. Sans compter l'effet vacances qui doit effectivement avoir son rôle.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
idle
Messages : 63
Inscription : ven. 30/juil./2010 2:31

Re: TextEditorGadget(), et environnement CustomGadget

Message par idle »

ne soyez pas découragés graphe 100 que vous avez fait un excellent travail jusqu'ici.
Hé vous les utilisateurs de Mac de prendre votre main de Steve Jobs "bâton de joie" et tester le code! :twisted:
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: TextEditorGadget(), et environnement CustomGadget

Message par kernadec »

bonjour graph100
merci, pour le partage.
ça fonctionne bien chez moi avec XP SP2
pour le téléchargement via le site, on reçois un code qui est en lecture seule.
et lorsque l'on charge une autre version, il ne peut pas remplacer "PB_EditorOutput.pb"
heureusement ce n'est pas grave, il y à un MessageRequester qui averti du problème.

en tous cas merci, et je t'encourage à poursuivre ton effort comme le dit si bien Idle.
quelquefois trop de posts pollue un tutoriel, alors je m' abstiens pour cela.

Cordialement
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: TextEditorGadget(), et environnement CustomGadget

Message par graph100 »

kernadec a écrit :pour le téléchargement via le site, on reçois un code qui est en lecture seule.
Je n'ai pas tout compris !
le nom de mon fichier est "CustomGadget.pb", il est prévu pour fonctionner avec PureBasic 4.60beta3

J'ai réessayé le téléchargement du fichier, je n'ai pas de problème ;s il est dispo en accès lecture.
kernadec a écrit :et lorsque l'on charge une autre version, il ne peut pas remplacer "PB_EditorOutput.pb"
Euh, une nouvelle version du fichier CustomGadget.pb ? Et je ne sais pas ce qu'est PB_EditorOutput.pb ;s (faut que tu m'explique plus en détails, car là je n'ai pas saisi !

Merci pour vos tests ;)
@Kernadec : Je me demande si j'ai posté dans la bonne section, car ce n'est pas un tutoriel mais un projet ! En ce moment plein de gens font des gadgets qui utilisent le canvasgadget() tout nouveau tout neuf et tout buggé. Donc, ayant fini mon projet précédent, n'ayant pas l'envie de continuer pour le moment mon projet suivant, j'ai commencé à faire un genre d'environnement pour ajouter des gadgets facilement, ce qui signifie que si qqun veut faire un gadget de ce genre il peut l'ajouter dans ce pack (contactez moi par pm pour ce faire).
De mon coté, j'ai besoin de ce projet pour passer à l'étape suivante d'un autre projet : faire une interface customisable avec les mêmes set de couleur (un peu comme winamp).

En tout cas, ici un feedback est toujours le bien venu ! Tout post constructif ou juste informatif est bien acceuilli :) ça fait toujours plaisir de constater que qqun à vu votre boulot.

En plus, comme je met à jours les 3 posts du dessus pour les versions, le topic ne remonte pas, et coule alors qu'il y a des changements ;(

Comme l'a dit Idle : Il faudrait tester le code sur Mac. n'en possédant pas moi même, et Idle non plus, le code n'a pas été testé sur Mac. Il est sensé fonctionner, mais il y a toujours des trucs qu'on ne maitrise pas avant d'avoir testé.
Dernière modification par graph100 le lun. 10/juin/2013 19:56, modifié 1 fois.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: TextEditorGadget(), et environnement CustomGadget

Message par kernadec »

bonjour
:mrgreen: désolé graph100
ce matin, j'ai les paupières lourdes, après la sortie de samedi.
alors pour ton projet, compte tenu des commentaires dans le code, je l'ai rangé des la section tutoriel chez moi!
voila pourquoi ce lapsus... ensuite je me suis planté de sélection du fichier pour le nom du source dans le copié coller,
c'était "CustomGadget.pb" que je pensais avoir collé...
mais ce code je le reçois bien avec l'option lecture seule cochée.

Cordialement
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Re: TextEditorGadget(), et environnement CustomGadget

Message par Good07 »

Bonjour graph100,

J'ai testé ton programme sur mon IMac mais il ne fonctionne pas. :(
Au démarrage j'ai l'erreur suivante:
Ligne 388 Constant not found #CG_Font_Normal
La doc dit ceci:
Note: Seuls #PB_Font_Bold et #PB_Font_Italic sont supportées sur tous les OS. Les autres constantes sont spécifiques à Windows.
J'ai donc essayé de remplacer toutes les occurrences de #CG_Font_Normal par #PB_Font_Bold mais ensuite dès le démarrage j'ai sur la première ligne "Invalid memory access"

Tenir compte aussi que le Mac ne connait pas la police "arial" mais par contre il reconnait la police "Arial" ... 8O

sinon je n'ai pas testé sur PC pour voir le résultat.

Bon courage et merci pour le partage.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: TextEditorGadget(), et environnement CustomGadget

Message par graph100 »

@Good07 : Un grand merci pour avoir tester sur Mac ^^, hélas ça ne fonctionne pas du premier coup apparemment ;'(
C'est bizarre un invalid memory access sur la 1er ligne (de tout le code ? ou du code de test en bas ?).
Si je pouvais faire des tests de mon coté !!

je met une nouvelle version en ligne : 1.02alpha709 : j'ai modifié certain truc pour essayer de fonctionner sur mac, si tu as le temps, essaye à nouveau ^^ (dis moi bien quelle sont les lignes ou ça plante si jamais ça plante :s)

@kernadec : :lol:
kernadec a écrit :alors pour ton projet, compte tenu des commentaires dans le code, je l'ai rangé des la section tutoriel chez moi!
A ce point là ^^, je suis obligé de mettre autant de commentaire, sinon le code serais illisible quand je le reprend pour modifier un truc que je n'ai pas touché depuis longtemps ! Il y a quand même près de 4000 lignes
Pour l'histoire de la lecture seule, ce doit être google qui fait ça ;s chez moi ca ne le fait pas. bizarre mais c'est un moindre mal ^^
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: TextEditorGadget(), et environnement CustomGadget

Message par graph100 »

nouvelle version : v1.02alpha889
L'édition du texte et les écrasements de sélection fonctionnent bien. Je n'ai pas trouvé de bug dans le dernier code que j'ai posté (window / linux)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: TextEditorGadget(), et environnement CustomGadget

Message par venom »

Tiens je n'avais pas trop suivie le sujet,
j'ai testé le code c'est super intéressant tout ça. Je ne me suis pas encore pencher sur le code mais le résultat est la bravo 8)
Continue comme ça c'est sympa.





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: TextEditorGadget(), et environnement CustomGadget

Message par graph100 »

@Venom : merci bcp =)
Le résultat sera encore meilleur quand le canvasGadget sera entièrement débuggé.
Pour le moment il y a des bug d'affichages quand le canvas n'a pas le focus ;(

Nouvelle version : 1.03alpha1033
Ajout d'un nouveau gadget pour afficher des images.
Il dispose de scrollBar automatique si jamais l'image est trop grande. Il y a des options de redimensionnement automatique.
On peut afficher une couleur de fond personnalisée, et positionner l'image selon plusieurs paramètre (centré horizontalement etc ...)

Pour tester sur le code d'exemple : utiliser les raccourcis clavier Pad0 à Pad3 pour changer entre quelques mode
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre