Petits programmes PB

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: ACME Software

Message par Zorro »

pour tes fichiers important, tu peux essayer ceci ?

Code : Tout sélectionner

Fichier$ = OpenFileRequester("open_file","*.txt", "", 0)

If ReadFile(0, Fichier$)
    Size = FileSize(Fichier$)
    *Buffer = AllocateMemory(Size)
    
    If *Buffer
        ReadData(0,*Buffer, Size)
        CloseFile(0)
    EndIf
EndIf

;=== Test ===
Repeat
    Debug PeekS(*Buffer + Lng, 100)
    Lng + 100
Until Lng >= Size

FreeMemory(*Buffer) 
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: ACME Software

Message par Marc56 »

Merci :)
Mais c'est moins bon (7 secondes contre 2)
En fait le temps, c'est surtout le chargement du gadget.
Et y a un problème avec l'encodage (ça peut se résoudre)

Code : Tout sélectionner

 EnableExplicit

Define File_Source.s = "C:\Program Files\PureBasic\Compilers\APIFunctionListing.txt" ; 7249 lignes
Define Start.q
Define Stop.q

OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(1, 0, 0, 800, 600, #PB_Editor_ReadOnly)

If Not ReadFile(0, File_Source)
     Debug "Fichier non trouvé. END"
     End
EndIf

; Debug "Méthode standard (ajout dans le gadget)" Trop lent
; Start = ElapsedMilliseconds()
; While Not Eof(0)
;      AddGadgetItem(1, -1, ReadString(0))
; Wend
; Stop = ElapsedMilliseconds()
; Debug Str((Stop - Start) / 1000) + " Secondes"
; CloseFile(0)
; SetGadgetText(1, "")
; ClearGadgetItems(1)



ReadFile(0, File_Source)
Debug  #CRLF$ + "Méthode 1"
Start = ElapsedMilliseconds()
Define Full_Text.s
While Not Eof(0)
     Full_Text + ReadString(0) + #CRLF$
Wend
SetGadgetText(1, Full_Text)
Stop = ElapsedMilliseconds()
Debug Str((Stop - Start) / 1000) + " Secondes"
CloseFile(0)
Delay(2000)
ClearGadgetItems(1)



Debug #CRLF$ + "Méthode 2"
Define Size
Define *Buffer
Define Lng
Start = ElapsedMilliseconds()
If ReadFile(0, File_Source)
    Size = FileSize(File_Source)
    *Buffer = AllocateMemory(Size)
    If *Buffer
        ReadData(0,*Buffer, Size)
        CloseFile(0)
    EndIf
EndIf
Repeat
     ; Debug PeekS(*Buffer + Lng, 100)
     AddGadgetItem(1, -1, PeekS(*Buffer + Lng, 100))
    Lng + 100
Until Lng >= Size
Stop = ElapsedMilliseconds()
Debug Str((Stop - Start) / 1000) + " Secondes"

FreeMemory(*Buffer)

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
J'ai aussi essayé en affectant le texte en mémoire d'un coup dans le gadget (avec SetGadgetText() (comme préconisé par Fred sur un topic identique sur le forum us il y a quelques temps) mais il y a des problèmes de saut de lignes.

:wink:
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: ACME Software

Message par Zorro »

en fait dans le code que je t'ai donné , a la place du repeat until , il faut faire :
(je reprends le code entier , la modif est dans le commentaire )

Code : Tout sélectionner

If ReadFile(0, NomFichier$)
	
		Size = FileSize(NomFichier$)
		
		*Buffer = AllocateMemory(Size) 
		If *Buffer 			
			ReadData(0,*Buffer, Size)
			CloseFile(0)
		EndIf
		
		buuf$= buuf$+PeekS(*Buffer, Size,Format_file)  ; <<< ça remplace la boucle le text  du fichier COMPLET  est dans "buuf$"
		; "Format_file" est la constante style #Pb_Ascii ,#pb_uft8 etc ...
Endif

;un simple settext() dans un editeur Gadget fera le boulot
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: ACME Software

Message par Marc56 »

@Zorro: Excellent! 100 x + rapide :!:
(22 ms contre 2347 pour le fichier utilisé)

Code : Tout sélectionner

Debug #CRLF$ + "Méthode 2"
Define File_Type.c
Define Size
Define *Buffer
Start = ElapsedMilliseconds()

If ReadFile(0, File_Source)
    File_Type = ReadStringFormat(0)     ; Récupération type d'encodage (UTF-8, ASCII, Unicode etc)
    Size = FileSize(File_Source)        ; Récupération taille du fichier
    *Buffer = AllocateMemory(Size)      ; Réservation place mémoire
    If *Buffer
        ReadData(0,*Buffer, Size)       ; Lecture en binaire de tout le fichier
        CloseFile(0)
    EndIf
EndIf
; Remplissage du GadgetEditor en une seule passe avec prise en comte de l'encodage
SetGadgetText(1, PeekS(*Buffer, Size, File_Type))

Stop = ElapsedMilliseconds()
Debug Str(Stop - Start) + " ms"
J'ai dû mettre le chrono en ms plutôt que s tellement c'est rapide :mrgreen:

Comme ReadStringFormat() retourne le format sous forme de constante,
cela rend même inutile l'utilisation de Select()

Merci
:wink:
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: ACME Software

Message par Zorro »

:)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: ACME Software

Message par Marc56 »

8O ...et voilà, encore une idée qui m'est venue :o (faut que j'arrête le chocolat: ça me doppe)

Tant qu'à avoir un visualiseur de fichier texte, pourquoi ne pas en faire aussi un mini éditeur ?
Comme c'est un EditorGadget(), il m'a suffit de mettre un bouton pour basculer le mode lecture seule,
ajouter une fonction pour enregistrer sous, mettre tout ça dans une barre de bouton, c'est mieux.

Donc, aidé du Form Designer interne de PB qui se charge de la basse besogne:
  • Créer la barre d'état avec calcul des zones
  • Créer les boutons
  • Charger les images dedans
  • Créer les lignes pénibles auxquelles je pige que pouic (IncludeBinary, CatchImage ...)
  • Créer la procédure de resize des gadgets pour suivre la fenêtre
    (dès qu'on a changé au moins un ancrage, il fait le reste)
En 1 heure c'est plié sans stress 8)
(Suis content de voir que mes neurones de 54 balais ne sont pas encore trop rouillés et le codage (PB) aide considérablement à l'entretien :P )

Image

Pour Info: Les 18 formulaires de cette application sont réalisés avec le PBF interne,
une fois qu'on a compris son mode de fonctionnement et qu'on sait éviter son bug magistral (facile à reprendre)
on gagne un temps considérable. Il n'est pas plus compliqué que les générateurs de code d'autres langages. :)

J'espère que si de nouveaux forms designers aboutissent il sauront aussi faire tout ce que fait l'actuel
(Code standard + Menus + code d'intégration des images + gadgets imbriqués (tab, spliters, fentres filles etc))
J'adopterais volontiers, car c'est très long de gérer des interfaces graphiques complexes à la main.

Version 3.10 à l'endroit habituel.

Enjoy
:wink:

PS. L'EditorGadget a une grande capacité, supporte le drag'n'drop au point d'insertion, les raccourcis claviers classiques (ctrl+c, v, x)
Mais curieusement impossible de lui faire détecter le clic droit :?:
Donc impossible de déclencher un menu popup :cry:
Dernière modification par Marc56 le dim. 09/juil./2017 7:40, modifié 1 fois.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

MD ACME Software - EVM

Message par Marc56 »

Ce weekend, j'ai voulu m'intéresser au MDIGagdet que je n'avais jamais utilisé
(ni en PB ni son équivalent dans d'autres langages).

Super intéressant ce gadget, ça fait (presque) tout, tout seul 8O
J'ai fais un mixage entre l'exemple fourni dans la doc et mon éditeur de texte.
Puis j'ai ajouté des fonctions de drag and drop.
(Les fonctions sont basiques pour l'instant, mais ça fonctionne)

Ça a donné ça:
Image
En seulement 360 lignes :!:

Plus de détails et téléchargement sur la page betas

:wink:
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: MD ACME Software

Message par JohnJohnsonSHERMAN »

Vachement sympa ce truc :)
Merci
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: MD ACME Software

Message par Marc56 »

Ce qui est génial dans ce gadget est qu'il fait tout seul l'arrangement des fenêtres (cascade, mosaïque horizontale, verticale, fermeture de tout) et qu'il gère dynamiquement le menu de la liste des fenêtres.

:wink:
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: MD ACME Software

Message par Marc56 »

Nouvelle version d'ACME Desk : 3.15

Seul changement apparent: ajout d'une fonction qui affiche un bloc-note rapide.
(C'est le prélude à l'intégration d'ACME TreeNote 3, quand il sera au point car le dnd avec sous-branches sur le treegadget ne fonctionne jamais bien à tous les coups :? )

Image

Changement non-apparent: migration du site de free.fr vers gandi.net
(plus de fonctions, notamment PHP 7 par rapport au vieux PHP 4 de free.fr)
Ceci a imposé un certain nombre de modifications (changement des url pour mise à jour auto)
Je vais aussi devoir modifier mon automate de mise à jour car gandi.net ne supporte que le SFTP et PB uniquement le FTP

Adresse du nouveau site: mdacme.com
(J'ai mis en place une redirection pour les anciennes url)

:wink:
Dernière modification par Marc56 le dim. 09/juil./2017 7:40, modifié 1 fois.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: MD ACME Software

Message par Marc56 »

Pas beaucoup de topics, de moins en moins de programmes alors je meuble... :cry:

Nouvelle version ACME Desk 3.15.1
Juste des correctifs pour la partie Notes
  • Icone manquante (note)
  • Nouvelles icônes dans le menu note
  • Bug icône Mute non-barrée
  • Option Nouvelle (note)
  • Des corrections de bugs
Image

:arrow: À noter: cette copie d'écran est réalisée sous Windows 10 :!:
Le look Windows 7 (Vista) est réalisé par WindowBlind (produit suggéré par Zorro il y a quelques temps)
Fini l'affreuse interface laminée de Windows 10 :)
(Bon, il y a bien quelque bidouilles à faire car certains gadgets peuvent ne pas bien s'aligner à droite lors de la visualisation alors qu'ils sont ok à la conception)

Cette petite fenêtre est comme le reste de l'application entièrement réalisée avec le Form Designer interne. Il se charge: de la fenêtre, de la procédure de resize (dès qu'un gadget est ancré ailleurs qu'en haut à gauche, la procédure est créée automatiquement pour tout), du menu, de la transformation des chemins des icônes en ligne Catchimage.
Point essentiel quand on gère plusieurs fenêtres avec le FD: penser à nommer tous les objets et ne pas laisser les noms par défaut (sinon on peut avoir un même ID pour plusieurs gadgets Image_0, Image_1 etc). Perso, je prefixe, par exemple #Win_Edition_Liste, #Win_Edition_Btn_OK etc.
Il y a 24 fichiers .pbf dans mon application (pour 9955 lignes) et les débuts n'ont pas étés faciles, mais ce serait très pénible à faire "à la main" :wink:
Merci à Fred et Polo pour cet outil qui a dû demander beaucoup de travail.

Téléchargement

8)
Dernière modification par Marc56 le dim. 09/juil./2017 7:41, modifié 1 fois.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: MD ACME Software

Message par Marc56 »

Une petite fonctionnalité demandée: une horloge à aiguille.

Donc nouvelle version d'ACME Desk: 3.16

Image

Pour l'instant, l'affichage est rustique
Les couleurs ne sont pas remplaçables car le gadget ColorRequester ne gère que les couleurs RGB et pas RGBA et la pendule est tracée avec la lib vector qui ne gère que le RGBA. :|
Je vais faire un petit truc par la suite.

Activation avec le menu principal
Les déplacements et taille sont sauvegardés

Tout PureBasic :!: la fenêtre sans bordure et recouverte d'un Canvas, c'est celui-ci qui permet de la déplacer quelque soit la position de la souris, sans utiliser l'API SendMessage_

Téléchargement: adresse en signature.

:wink:
Dernière modification par Marc56 le dim. 09/juil./2017 7:41, modifié 1 fois.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: MD ACME Software

Message par Marc56 »

Version 3.16.4

Quelques amélioration de l'horloge à aiguilles:
  • Graduation des heures à la place d'un simple cercle
  • Gestion de la transparence (ici 50%)
  • Option pour rester ou non au premier plan.
  • Option pour afficher ou non les secondes (appel de la fonction une fois par minute contre 60)
    (Option non affichée sur la copie d'écran car pas présente dans la 3.16.3)
Image

Téléchargement: voir signature.
Installation toujours par dessus l'éventuelle ancienne version.
10300 lignes rien que du PureBasic (sauf la DLL pour écouter les Webradios)

En chantier: Un utilitaire pour déplacer plus facilement les icônes entre les 3 pages.

:wink:
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: MD ACME Software

Message par Marc56 »

Mise à jour: 3.15.16
  • Correction de bugs
  • Remplacement du jeu d'icônes (16x16) pour des icône plus "parlantes"
Image

Ce très beau jeu de mini-cônes (3922!) est réalisé par un Designer freelance Japonais: Yusuke Kamiyamane.
http://p.yusukekamiyamane.com/
:idea: Utile pour la barre de menu de l'IDE qui n'a pas certaines icône pour certaines fonctions.
Beaucoup d'autre lots d'icônes sont dérivés de ses réalisations, dont le précédent Led Icon Set que j'utilisais avant. (Lui-même dérivant des Silk Icon)

L'utilisation est libre de droit à condition de mettre une mention aux crédits. (Exemple)
Image
(Splash screen qui mélange dessin vectoriel et 2D pour avoir un trait de 1px)

:wink:
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: MD ACME Software

Message par Marc56 »

Une mise à jour d'ACME Desk
v3.16.7
  • Bugfix: Le système de vérification de disponibilité vérifiait sur l'ancien serveur et j'avais aussi oublié de mettre un message si pas de fichier :oops:
  • Bugfix: Le "PostIt" ne sauvegardait pas systématiquement
  • Bugfix: Les raccourcis de Webradio n'étaient pas mis à jour
  • Bugfix: Certaines icônes (beaucoup) avaient un nom de fichier absolu et n'étaient donc pas présentes.
    (J'avais oublié de vérifier le "manager d'images" dans le "form designer", qui se charge des lignes "catchimage")
  • Bugfix: Plein d'autres
Note: La vérification de mise à jour ne se fait pour l'instant que sur demande 'menu principal ou boite about, bouton "Check").
À venir: vérification (optionnelle) une fois par jour.

Tout cela modifié en une heure, au retour de vacances.
:arrow: C'est beau l'élégante simplicité de codage en PureBasic

8)
Répondre