PureIconManager version 2.00 beta 2

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

PureIconManager version 2.00 beta 2

Message par Anonyme2 »

PIM 2.0 beta 2, 29 juillet 2014

Un bug corrigé sur le redimensionnement de la fenêtre. Nouvelle bêta

En 32 bits ici

EN 64 bits ici

Image


PIM 2.0 beta 1, 28 juillet 2014

Depuis le temps que je l'avais sous le coude, voici la version 2 en beta 1

En 32 bits

EN 64 bits

Pour les 2 versions, c'est un zip qui contient l'executable et le fichier d'aide, à placer dans le même dossier.

Compilé en version PB 5.30

Interface modifiée, changement de langue rapide (francais/anglais).

Les conversions en fichier icl 16 bits (format NE) sont supportées (conversion un peu lente à mon goût).
Faites des clics droits à la souris sur un fichier ou groupe(s) d'icônes ou icône(s) pour les conversions rapides, conversions paramétrables (bouton préférences).

Conversion par lots (attention, sur des dossiers complets avec de nombreux fichiers, ma machine plante du fait d'un manque de mémoire, à n'utiliser que si besoin)

Copier/coller d'un chemin d'un dossier disponible.

Différents modes d'affichage pour les fichiers.

On peut mémoriser des favoris (fichiers/dossier).

Presque tout est en ressource sauf les gadgets et menus. Très pratique pour le changement de langue!

Petit logo sur l'icône du groupe si le groupe contient une icône compressée (format introduit sous Vista).

Il y a surement des bugs, alors remontez les infos.

A +

Image


******************************************************************************

PIM beta 2, 29 décembre 2009

Voici une nouvelle beta ici

Les anciennes versions ne sont plus disponibles.

- Changement : ExplorerTreeGadget garde le focus lorsque un dossier est sélectionné avec la souris (au lieu de donner le focus à l'ExplorerListGadget).
- Corrigé : un problème d'affichage avec les nxgadget.
- Corrigé : Le format d'affichage des icônes vista de faible résolution.
- Ajouté : checkbox pour sélectionné le langage par défaut (automatique, français, anglais).
- Ajouté : Une seule instance de PIM peut être exécutée (pas de choix possible).
- Ajouté : Le bouton 'Enregistrer' de la Toolbar fonctionne (popumenu affiché avec la flèche).

Pour infos:
Rien n'est écrit dans le registre, PIM ne crée qu'un fichier préférences (Dossier$ = GetEnvironmentVariable("APPDATA") avec le dossier "PureIconManger" ajouté, fichier : PureIconManger.prefs).
J'ai oublié d'indiquer que l'on peut sélectionner une ou plusieurs icônes avec la touche CTRL enfoncée (la maintenir enfoncée) et avec la souris, on clique sur une image une ou plusieurs fois (multi-sélection possible, que les images soient contigües ou non).


TodoLIst :
- Opérations de suppression d'icônes des fichiers (j'ai toujours des problèmes avec les exe/dll)
- Réduction de la taille des fichiers (ico, dll etc) créés en utilisant les procédures de netmaestro adaptée à PIM (viewtopic.php?f=12&t=39485)
- Utilisation de stream pour les conversions internes des formats PE/NE au lieu d'allocations mémoire.
- Support des fichiers exe compressés.
- Conversion automatique des fichiers par lot (déjà écrit mais je dois encore tester mon code).
- Simplifier le code.
- Ecrire des fonctions en assembleur pour améliorer la vitesse (juste pour celles qui sont beaucoups utilisées)
- Plein de petites modifs...


PIM beta 1, 18 décembre 2009

Voilà, je travaille sur ce projet depuis presque 2 ans avec des arrêts et reprises.

Je donne des explications ici car je n'ai pas fait la doc pour l'instant.

PureIconManager n'est pas un éditeur d'icônes au sens d'ouvrir une icône et de la modifier. Il permet de visualiser les icônes et d'en faire des sauvegardes partielles ou complètes dans le format de son choix.
J'utiliserais peut-être l'abréviation PIM pour désigner PureIconManager.

PIM est gratuit pour le moment, vous l'utilisez à vos risques et périls mais en extractions d'icônes, il n'y a pas vraiment de risques.

Le fichier est ici

OS : A partir de Windows XP SP1

Les droits administrateur: La version est compilé avec la necessité d'avoir les droits administrateurs car on peut créer des fichiers n'importe où.

Les limites :
Certains événements ne sont pas encore pris en compte comme le changement de thèmes (WM_THEMECHANGED), le changement de Langue (si on décide de passer windows dans une autre langue). Depuis Vista, on ne peut pas toujours supprimer des éléments en ressource dans un fichier (cas des icônes du format PE) du fait des limites des fichiers .ln et .mui, voir les remarques ici :
http://msdn.microsoft.com/en-us/library ... S.85).aspx


Il y a peu d'infos sur les icônes, voici quelques sites dont ma base de travail sur le format NE

http://www.codeproject.com/KB/cs/IconLib.aspx

Les seules infos Microsoft disponibles (télécharger l'exe et décompiler)
http://msdn.microsoft.com/en-us/library/ms997538.aspx


Le format PE en général
http://benoit.papillault.free.fr/c/disc2/exefmt.txt
http://www.itee.uq.edu.au/~csmweb/decom ... w_exe.html

Les icônes XP
http://msdn.microsoft.com/fr-fr/library/ms997636.aspx


PureIconManager v1.00 beta 1 permet :
de visualiser les icônes des fichiers ico, des formats PE (format Windows 32 bits) exe, dll, icl, cpl, ocx, scr, des formats NE (format Windows 16 bits ) exe, icl et dll (faut que je controle pour les dll).

PureIconManager v1.00 beta supporte tous les formats d'icônes carrés (honnêtement je ne sais pas ce que ça donne avec des icônes non carrés mais ça causera des problèmes, c'est sur ma Todo list) du monochrome au format Vista compressé, j'ai encore un petit soucis d'affichage pour certaines icônes compressées Vista sans couche alpha. Les noms de groupes sont supportés pour les fichiers Icl s'ils existent.

La fenêtre est séparée en 4 zones qui sont modifiables grâce aux splitterGadget de Srod (Voir le lien sur sa lib opensource dans la fenêtre A propos de). Excellente lib, bien écrite, tests fait correctement, jamais de plantage!

- En haut à gauche, une ExplorerTreegadget qui sert à sélectionner le dossier courant d'affichage.

-En haut à droite, un ExploreListGadget qui n'affiche que des fichiers en fonction du filtre de types de fichiers (combobox située au-dessus de l'ExplorerTreegadget)
Dès que l'on change de dossier soit via l'ExplorerTreegadget soit via la combobox des récents (située au-dessus de l'ExploreListGadget).

- En bas à gauche, une ListiconGadget affichant les groupes d'icônes. Tous les formats sauf les .ico comportent (si le fichier suit les règles Microsoft) des groupes d'icônes et chaque groupe comporte une ou des icônes. Pour être homogène, j'ai traité les .ico comme s'il avaient des groupes, en fait chaque icône est alors un groupe, ce qui fait que l'on aura jamais chez les .ico des groupes comprenant plus d'une icône. L'affichage de l'icône qui représente le groupe est une des icônes du groupe car les groupes n'ont pas à proprement parler d'icônes les représentant. J'utilise des règles (plus grande taille avec meilleur définition etc.) pour afficher cette icône qui "représente le groupe ".
Pour l'instant c'est figé à 48 x 48 pixels.
Si un nom de groupe existe, il est affichée sous le groupe, sinon c'est sa position dans la liste qui est affichée précédé d'un #
Au-dessus de cette ListiconGadget, il y a une Rebar qui affiche le nombre de groupe sélectionné ainsi que le nombre total des icônes de ces groupes sélectionnés.

- En bas à droite, Un ScrollAreaGadget qui affiche l'ensemble des icônes du groupe sélectionné ou si plusieurs groupes sont sélectionnés, les icônes affichées seront ceux du 1er groupe sélectionné.

Les raccourcis claviers :
CTRL A pour sélectionné/désélectionner les groupes d'icônes (ListiconGadget des groupes d'icônes) ou les icônes ( ScrollAreaGadget) en fonction du focus.

CTRL T (toogle) pour inverser la sélection courante des groupes d'icônes (ListiconGadget des groupes d'icônes) ou des icônes ( ScrollAreaGadget) en fonction du focus.

Pour CTRL A et CTRL T, il faut absolument relacher les deux touches pour refaire l'action (sinon j'avais pas un bel affichage du ScrollAreaGadget, comme il se désactive/réactive à l'affichage pour gagner du temps, on a à ce moment là un transition grise qui m'énerve un peu, alors j'ai contourné le problème).

Touche Escape pour désélectionner les groupes d'icônes (ListiconGadget des groupes d'icônes) ou les icônes ( ScrollAreaGadget) en fonction du focus.

La touche supprimer n'est pas encore prise en compte.

Pour la ListiconGadget des groupes et le ScrollAreaGadget, on peut sélectionner en maintenant la touche majuscule enfoncée et en utilisant les flèches haut et bas (ScrollAreaGadget) et les flèches haut, bas, droite et gauche pour la ListiconGadget. Pour le scrollArea, j'ai fixé les règles en fonction de l'image qui a le focus (en fait c'est un pseudo focus que j'ai créé).

Pour le scrollArea on peut se déplacer d'image en image avec les flèches haut et bas à partir du moment ou une image est sélectionnée.

Clavier et souris :
Multi sélection possible dans la ListiconGadget et le ScrollAreaGadget dès lors qu'une image ou plusieurs sont sélectionnées, en maintenant appuyé la touche Majuscule (Shift Gauche ou Droite) et en cliquant sur une image.

Tout ce que je viens de dire pour la sélection sur la ListiconGadget est natif, j'ai tout codé pour le ScrollAreaGadget.

Dans le scrollArea, Une image peut avoir le pseudo focus, elle est entourée par un rectangle pointillée.

Les sauvegardes :
Sur la ListiconGadget ou sur le ScrollAreaGadget, on le même menu (mais avec des couleurs différentes) qui permet de tout sélectionner/déselectionner ou inverser la sélection.

Pour sauvegarder, il faut que soit des groupes soient sélectionnés et que la ListiconGadget ait le focus (les sélections sont en bleu mais ça dépend des thèmes) ou que des icônes du ScrollAreaGadget soient sélectionnées, un clic droit sur le bouton de la souris et le menu apparait.

On peut sauvegarder la sélection au format ico, dll PE (32 bit) ou Icl PE (32 bits) en ayant le choix de décompresser ou non les icônes au format compressé Vista.

Les dll créées ne comportent pas de code exécutable, c'est donc une Dll vide qui ne contient que des icônes. C'est la même chose que les Icl qui ne sont rien d'autre que des Dll vides avec des icônes.
Par contre, les Icl peuvent comporter des noms de groupes que PIM supporte à la lecture et à la création des ICL. Pour l'instant, on copie les noms de groupes, pas d'autre choix.

Suppressions d'icônes :
Pour le format ico, pas de problèmes mais rien n'est fait pour les exe, dll (format PE) car je rencontre des problèmes (assez étrange sous Seven) avec l'API LoadLibraryEx, je suis dessus mais c'est galère .

Il y a des préférences pour l'affichage ou non de fenêtre à la création/suppressions d'icônes que l'on peut gérer par le bouton sur la barre d'outils (le 4ème en partant de la fin, dossier avec des engrenages). Idem lorsque le fichier ne présente pas d'icônes, ce n'est pas forcément une erreur, alors je peux ou non afficher une fenêtre indiquant cela.
De même les fichiers créés peuvent être affichés en lieu et place de celui qui a permis de le créer.
On peut aussi sélectionner le nombre de dossier récents de la combobox.

Les boutons grisés ne fonctionnent pas encore et le bouton enregistre non plus.

Les Langues :
PIM supporte le français et l'anglais, la sélection est faite par programmes, tous les mots utilisés dans chaque langue sont déclarés en ressource.

Les erreurs :
PIM gère environ une centaine d'erreurs, celles-ci sont déclarées en ressource.
Plusieurs erreurs sont fatales, mais ce n'est vrai qu'à l'ouverture de PIM.
Une erreur importante qu'il faut me reporter c'est une erreur dite "interne" qui dépend du contexte, c'est en général un cas qui ne devrait pas arriver, mais rien n'est simple en ce bas monde.

Les problèmes importants rencontrés avec la programmation :

PB souffre malgré les .a et .c, d'un manque de gestion des long non signés. Pour moi c'est un handicap majeur.

L'explorerListGadget est lent, on a pas accès à des événement du type 'PB_ExplorerList_UpDate_Done' indiquant qu'il s'est mis à jour et que l'on peut travailler dessus. Faute de mieux, j'ai mis des While windowevent()/wend mais je ne sais pas quels sont les événement perdus.

Les problèmes de gestion de mémoire, tous les problèmes étaient de ma faute. On s'en sort bien avec le code mis à la disposition sur le blog PB.

Voici quelques aperçus sous Seven:
Image
Le format du fichier est NE avec noms de groupes affichés sous chaque groupe


Image
Fichier NE avec icônes Vista (Axialis IconWorkShop n'ouvre pas correctement ce fichier)


Image
Fichier ico avec popupMenu sur le ScrollareaGadget (1 icône est sélectionnée)
Dernière modification par Anonyme2 le mar. 29/juil./2014 15:48, modifié 13 fois.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: PureIconManager version 1.00 beta 1

Message par Le Soldat Inconnu »

Très joli :)
Ce que je trouve chouette, c'est la barre d'outils en haut.

Tu ne veux pas donner un exemple de comment elle est faite ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: PureIconManager version 1.00 beta 1

Message par jbernard13 »

Denis tu es un dieu tu as crée un programme qui est le top , je suis à genoux devant toi :D :D :D :D
j'ai adopter ton programme
Jbernard13
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: PureIconManager version 1.00 beta 1

Message par Anonyme2 »

jbernard13 a écrit :Denis tu es un dieu tu as crée un programme qui est le top , je suis à genoux devant toi :D :D :D :D
j'ai adopter ton programme

Faut pas en faire trop jbernard13 :mrgreen:

Mon programme comporte encore des erreurs :D
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Re: PureIconManager version 1.00 beta 1

Message par Fred »

Sur le forum anglais, tu dis que l'ExplorerGadget() est lent. Dans quel sens ? Pour l'evennement de MAJ, ca peut se faire, je vais voir avec Timo.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: PureIconManager version 1.00 beta 1

Message par Anonyme2 »

Fred a écrit :Sur le forum anglais, tu dis que l'ExplorerGadget() est lent. Dans quel sens ? Pour l'evennement de MAJ, ca peut se faire, je vais voir avec Timo.
C'est mon impression par comparaison avec l'explorer de Microsoft, pas des mesures.

Par exemple sur dossier que j'ai avec plus de 260 fichiers exe, sur ma machine 4 coeurs avec Seven 32 bits, j'ai le temps de compter jusqu'à 2 pour l'ExporerListGadget, avec celui de MS c'est quasi instantané.
Sur mon autre machine, 2 coeurs, Vista, le même dossier presque 4 secondes pour l'ExporerListGadget et quasi instantané pour celui de MS. J'ai d'ailleurs bloqué les événement en affichage sur l'ExporerListGadget pour aller plus vite
(SendMessage_(GadgetID(Gadget), #WM_SETREDRAW, #False, 0) et SendMessage_(GadgetID(Gadget), #WM_SETREDRAW, #True, 0)).
Comme ça fait longtemps que je travaille sur PIM, il me semble (mais faudrait que je fasse des tests) qu'i y a quelque chose de bizarre que je n'ai pas creusé.
Lorsqu'il n'y avait pas les messages WM_SETREDRAW, la taille de l'ascenseur change en fonction du nombre d'éléments, en étant d'abord très grand pour diminuer ensuite. Mais je me suis rendu compte que j'avais ce phénomène plusieurs fois comme si l'ExporerListGadget chargeait plusieurs fois les choses.
Tu vas me dire que c'est mon code, je te répond peut-être.
Je n'ai pas trop de temps mais si j'en trouve, j'essaye de regarder ça.


Mais c'est pas un reproche, je me demande si Freak utilise les icônes partagées du système ou s'il ajoute à chaque fois les icônes dans la ListImage.

Dans PIM, j'ai besoin de sélectionner par programme un élément de l'ExplorerListGadget (j'ai écrit un petit code pour ça car cela n'existe pas dans PB).

Lorsque je change de dossier avec un setgadgettext(), l'ExplorerListGadget va mettre un certain temps à finir sa mise à jour.
Si je sélectionne un élément immédiatement après le setgadgettext(), ça ne marche pas. J'ai contourné avec un while windowevent() / wend, ça marche mais je ne sais pas ce qu'il se passe exactement. Je vais essayer avec un timer pour voir.
L'idéal est d'avoir un événement qui indique que la mise à jour est terminée.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: PureIconManager version 1.00 beta 2

Message par Anonyme2 »

Nouvelle beta, voir au début du post
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Re: PureIconManager version 1.00 beta 2

Message par cederavic »

Salut Denis,
Je viens d'essayer ton programme, tres bon boulot, c'est prometteur (surtout associé a un editeur d'icon, mais ça c'est une autre histoire...)
Parcontre j'ai eu un message d'erreur sur un icon :
Image

avec cet icon

J'ai pas regarder tout les fichiers present sur mon PC sinon j'en aurais pour quelques mois je pense... Mais si je tombe une autre erreur de ce genre je t'en ferais part 8)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: PureIconManager version 1.00 beta 2

Message par Anonyme2 »

Je vais avoir du mal à développer PureIconManager rapidement, je serais très pris pendant un an.

Cederavic, le message est normal, il y a un problème avec l'icône, je ne sais pas lequel mais le format est incorrect. Donc un message d'erreur. Les erreurs sont nombreuses, je regarderais et je te dirais ce qui cloche dans le fichier mais je pense que PureIconManager fonctionne bien de ce côté là.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: PureIconManager version 1.00 beta 2

Message par Anonyme2 »

cederavic,
Ton fichier est un bitmap avec une extension .ico, donc ce n'est pas une icône
mais un bitmap, non supporté par PureIconManager.
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Re: PureIconManager version 1.00 beta 2

Message par cederavic »

Ah ceci explique cela!
(C'est l'icon de desinstallation de Nikopol, ils se sont pas foulés 8O
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: PureIconManager version 1.00 beta 1

Message par Le psychopathe »

Le Soldat Inconnu a écrit :Très joli :)
Ce que je trouve chouette, c'est la barre d'outils en haut.

Tu ne veux pas donner un exemple de comment elle est faite ?
+1
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: PureIconManager version 1.00 beta 2

Message par Jacobus »

Denis a écrit :Je vais avoir du mal à développer PureIconManager rapidement, je serais très pris pendant un an.
Dommage! Je trouve ce programme très intéressant et comme je suis un gros consommateur d'icônes, j'aimerai bien utiliser PIM pour mes bibliothèques d'*.ico
Bon courage pour la suite... :)
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: PureIconManager version 1.00 beta 2

Message par Anonyme2 »

Salut Jacobus,

j'essaye de trouver le temps de le développer (je ne laisse pas tomber car j'apprend avec PIM).
Encore 2/3 semaines et je pense finir la suppression des icônes des exe/icll/dll 32 bits.
J'ai beaucoup galéré et je me demandait même si j'y arriverais, peu de logiciels proposent ça. Pour l'instant, mes tests sont concluants, je n'ai pas testé sur des exe système, il faudrait que j'installe un système clean juste pour mes tests. Mais la modif des fichiers systèmes peut être interdite par Windows et les fichiers peuvent être réparés automatiquement alors je ne sais pas si la suppression d'icônes sur de tels fichiers est justifiée.
charvista
Messages : 5
Inscription : dim. 13/déc./2009 14:05

Re: PureIconManager version 1.00 beta 2

Message par charvista »

Bonjour Denis,

Superbe ton programme! Vraiment un beau travail et merci de nous l'avoir partagé!

Comme tu t'y connais bien en icônes, peux-tu peut-être m'aider avec un petit code?
Il y a des fichiers *.ico contenant plusieurs icônes, et j'aimerais savoir comment on peut afficher par exemple la troisième icône de la série, pour mon application.
LoadImage() ne contient pas la possibilité d'ouvrir une autre que le premier de la série, alors je suis bloqué.

Je te remercie d'avance!

Charvista
Edit: J'ai trouvé la réponse dans le forum venant du Soldat Inconnu!
http://www.purebasic.fr/french/viewtopi ... c%C3%B4nes
Et j'ai vu que tu avais aussi posé exactement la même question que moi !!!
Dernière modification par charvista le lun. 05/avr./2010 1:45, modifié 1 fois.
Répondre