ImageViewer version 0.8 : drag & drop et plein d’autres !

Au menu de cette nouvelle version, de gros changements. Le plus gros changement vient du code : j’ai implémenté un système qui permet de récupérer les évènements qui se passent sur le disque dur, et de pouvoir enregistrer divers “écouteurs” sur ces évènements, qui reçoivent donc ensuite de manière automatique des évènements du style “ce fichier a été effacé”, etc.

Le premier changement que ça a entrainé, c’est que toutes les fonctions de couper/copier/coller, drag&drop, suppression de fichier sont devenues beaucoup plus simples à gérer : je m’occupe simplement de faire ce qu’il faut d’un fichier, et ensuite l’interface sera automatiquement notifiée du changement par le système, et se mettra à jour automatiquement. Bref, c’est génial. Et donc, côté utilisateur, ça se traduit par les 2 grosses fonctionnalités suivantes :

  • Le nombre d’images d’un répertoire est maintenant toujours synchronisé. C’est à dire que si vous supprimez des images, ou en ajoutez, le nombre se mettra à jour automatiquement, et ce, même si vous supprimez une image depuis le Finder !
  • Sur le même principe, les onglets sont synchro avec le contenu du disque : si des images sont supprimées du disque, l’ImageViewer se met automatiquement à jour, sans perdre votre sélection (sauf si celle-ci a disparut du disque ^^)
  • copier/coller et couper/coller sont de retour, ainsi que le drag & drop : vous pouvez dragger des images depuis la vue par onglet vers un répertoire de votre choix.
  • Rien à voir avec le système dont j’ai parlé, mais grosse amélioration : on peut maintenant enregistrer l’ImageViewer comme application par défaut pour les images, et donc l’ouvrir directement en plein écran en double cliquant sur une image. Ca manquait, c’est réparé ! ^^

Il y a quelques autres fonctionnalités, mais j’ai la flemme de les détailler ici. Donc comme d’habitude, pour le téléchargement du code source et de l’exécutable, c’est ici que ça se passe : http://blog.pcitron.fr/tools/macosx-imageviewer/

ImageViewer version 0.7

La version 0.7 de mon petit image viewer pour Mac est en ligne ! Comme d’habitude, pour le téléchargement, c’est sur cette page : http://blog.pcitron.fr/tools/macosx-imageviewer/

Au programme de cette version, le panneau des préférences est de retour ! On peut paramétrer :

  • la taille des onglets
  • l’affichage ou non du nom des images sous leur onglet
  • la couleur de fond pour les onglets et l’image courante
  • l’intervalle entre 2 slides, lors du mode “slideshow”
  • est-ce que le slideshow boucle ou pas
  • effaçage permanent des images ou utilisation de la corbeille

Et donc, retour aussi du slideshow, qu’on peut lancer et arrêter avec la touche espace ou P, directement en fullscreen ou non. On peut aussi supprimer les images sélectionnées, que ce soit en fullscreen, ou bien plusieurs images directement dans le browser. D’ailleurs, ajout de fonctions + menu + shortcut pour sélectionner / désélectionner toutes les images du browser. Et pour finir, 2 petits bugfix.

Au programme de la version 0.8, je compte ajouter les fonctionnalités suivantes :

  • possibilité d’ouvrir une image depuis le finder directement avec l’ImageViewer
  • support du copier/couper/coller et du drag&drop pour déplacer les images

ImageViewer pour MacOSX

Juste un petit post pour signaler la mise à jour de mon image viewer. Cette version est une refonte du code source, destinée à corriger tous les bugs, problèmes de performances et petits problèmes liés à quelques choix d’implémentation “naïfs”.

Cette version est extrêmement simpliste : pas de fullscreen, pas de slideshow, aucune option. Par contre, la navigation des répertoire est désormais parfaitement fluide, il n’y a plus de fuite mémoire, et surtout, plus aucun bug avec la lecture des gifs animés !

Et bien évidemment, un code source un peu mieux structuré, beaucoup moins de dépendances entre les différentes parties de l’application, ce qui devrait faciliter l’intégration des anciennes options, et éventuellement de nouvelles.

Pour finir, la page est ici : http://blog.pcitron.fr/tools/macosx-imageviewer/ Et à partir de cette version, l’application précompilée est inclue (compilé sous Lion, donc Intel seulement)

Mont Tremblant

Petit post pour raconter ma vie et un WE de trois jours très sympa :) Le WE dernier donc, lundi férié (la fête de la reine) et donc petit WE loin du béton Montréalais, à Mont Tremblant. Petite note sur les jours fériés ici : la plupart sont placé au Nième lundi ou vendredi du mois ! En gros, ici quelque soit l’année et quelque soit le jour férié, ça fait un WE de trois jours assuré :)

Bref. Le mont Tremblant pour ceux qui ne connaissent pas, c’est le “plus haut” mont de la chaîne des Laurentides, une très vieille chaîne montagneuse qui passe au nord ouest de Montréal. Avec l’érosion il ne reste plus grand chose de très haut, mais toute la région est extrêmement vallonnée, ce sont des collines / monts qui s’enchainent à perte de vue. Du coup, aucune grosse ville et de la forêt à plus savoir qu’en faire. Et à quasiment chaque détour de la route, un lac. C’est pas compliqué, la région c’est : des collines et des lacs. Avec quelques petits villages tous mignons.

Donc, arrivée le samedi, on pose les affaires, et on va se balader le long du lac qui est à 2 pas de notre appart’. Grosse farniente au soleil sur un ponton, on profite de l’eau (oui oui, je n’ai pas mis les photos, mais on s’est baigné ! Sophie plus que moi, je croyais que l’eau serait beaucoup plus fraiche :p) puis retour à l’apprart. Première balade avec quand même une bonne grosse boucle.

Le lendemain, direction le mont Tremblant qui est juste à côté ! Passage par l’office du tourisme où on nous dit que les pistes ne sont pas accessibles à la rando pour cause de compétition de descente (VTT) donc on se rabat sur une petit rando … ce qui n’est pas du gout de la miss qui décide donc, armée de son plan, de nous concocter un beau petit parcours ! Et c’est parti pour 7H de marche ! C’était génial. Je ne sais pas exactement combien de km on a fait, autant à plat qu’en dénivelé, mais on en aura fait ! On est passé par des petits sentiers tout mignons, on a remonté les pentes des pistes, puis, après une petite escale arrivés tout en haut, on les a redescendu à moitié en courant. Petite pause le long de la piste de descente et au bas des pistes où c’était la grosse ambiance, et on repart pour la voiture.

Et là on a découvert le “mauvais” côté d’avoir autant de lac : les moustiques ! Des vampires. Mais bon, balade géniale, le coin est vraiment agréable et on a eu de la chance avec le temps ! Du coup le lendemain (lundi) on est allé se balader au village de Mont Tremblant (qu’on n’avait pas eu le temps de bien visiter la veille, on voulait pas trop trainer pour le retour) Et là, deuxième truc moche ici : les berges des lacs sont quasiment totalement des propriétés privées … du coup tu te balades, tu passes devant les maisons, t’aperçois le lac à travers les branches d’arbres des jardins, mais pas touche. Frustrant. Très.

Enfin bon, l’un dans l’autre, excellent WE ! Et je recommande vivement le coin ! C’est pas loin de Montréal, facile d’y aller, et pour les amoureux de la rando (à pied ou à vélo et même en roller pour certaines parties goudronnées) c’est pas loin du paradis :) Voilou. Et les cuisses et les mollets se souviendront longtemps de ce WE :)

IKImageView and kCGErrorIllegalArgument

RAAAHHH !!! Putain de SDK de con ! Bon, belle entrée en matière pour un post qui ne servira probablement qu’à ma petite mémoire défaillante, mais bon, si jamais un jour quelqu’un d’aussi tordu que moi rencontre le même problème, au moins Google devrait lui renvoyer cet article où il y trouvera son bonheur :) (enfin, j’espère !)

Le problème : Vous avez une application qui utilise une IKImageView pour afficher des images, les manipuler, etc. Cet IKImageView, vous l’avez overridé pour lui rajouter quelques fonctionnalités, comme par exemple la possibilité de passer en plein écran. Et là, c’est le drame ! Votre IKImageView marche bien quand il n’est pas en plein écran, mais dès que vous passez en fullscreen, paf, écran blanc uni, avec les laconiques messages d’erreur suivants dans votre log :

<Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
<Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint()
         to catch errors as they are logged.

Hum … petite recherche sur le net, et là, pfff, aucune info (en tout cas à l’heure d’écrire ces lignes) En tout cas, aucun ressemblant de près ou de loin à mon setup.

Solution : Dans mon cas, j’avais un IBoutlet nommé window. J’utilise cet outlet pour faire de mon ImageView le first responder, lorsque je passe en plein écran (ça me permet d’être sur que mon ImageView récupère bien les évènements clavier / souris en fullscreen au lieu d’un autre élément de mon appli en background) Et c’est précisément cet outlet à la con qui posait problème ! Visiblement, IKImageView utilise en interne un window, qui ne correspond pas à celui que moi j’avais setté. Du coup lorsuq’il passait en fullscreen, bah gros problème … Et comme ça break pas, impossible de débugger. Sans compter que le “Set a breakpoint …” j’ai pas réussit à le faire marcher … vive le message d’erreur utile.

Bref, pour conclure, si vous créez une classe héritant de IKImageView, bannissez window de vos noms de variable. Pour ma part, j’utilise myWindow à la place, et je n’ai plus aucun bug !

Image Viewer v0.4

English will follow

Petite mise à jour de ImageViewer sur MacOSX :

  • Correction d’un bug aléatoire qui faisait que la lecture des .gif animés ne marchait pas.
  • Ajout d’une fonction de slide show, configurable via les préférences.

Prochaine mise à jour : J’aimerais ajouter un système permettant à l’ImageViewer de se mettre à jour lorsque le contenu change (par exemple si on supprime ou ajoute une image / un répertoire via le Finder, ImageViewer devrait se mettre automatiquement à jour)

——

Litle update to the MacOSX ImageViewer :

  • Fixed a bug that was breaking animated gif’s playback.
  • Added a slideshow function that you can configure through the preferences panel.

Next release : I want to make it update on file system change (if you add / remove an image via the Finder, the ImageViewer should update itself automatically)

Le code source / The source code : ImageViewer.v0.4