<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://respawner.fr/blog/index.php?feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Blog de Guillaume - Mot-clé - java-gnome</title>
  <link>http://respawner.fr/blog/index.php?</link>
  <atom:link href="http://respawner.fr/blog/index.php?feed/tag/java-gnome/rss2" rel="self" type="application/rss+xml"/>
  <description>Tout n'est qu'une question de point de vue.</description>
  <language>fr</language>
  <pubDate>Mon, 03 Jun 2013 11:03:30 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>GNOME Split en version 1.0</title>
    <link>http://respawner.fr/blog/index.php?post/2011/01/24/GNOME-Split-en-version-1.0</link>
    <guid isPermaLink="false">urn:md5:9a8e82c15555bc590527919b2d182d36</guid>
    <pubDate>Mon, 24 Jan 2011 23:37:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>GNOME</category><category>GNOME Split</category><category>GTK</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;astuce.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;astuce.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/astuce.png&quot; /&gt;J’aurais du en parler plus tôt, beaucoup plus tôt même. Le 18 novembre 2010 a été pour moi l’occasion de partager la version &lt;strong&gt;1.0&lt;/strong&gt; de &lt;strong&gt;GNOME Split&lt;/strong&gt;, nom de code &lt;em&gt;Stable Isotope&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Cette version est donc sortie plus ou moins un an après la toute première version tout public de GNOME Split. Elle apporte principalement des corrections de bugs plutôt gênants et qui étaient là depuis pas mal de temps.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;split-view.png&quot; href=&quot;http://respawner.fr/blog/public/GNOMESplit/1.0/split-view.png&quot;&gt;&lt;img title=&quot;split-view.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;split-view.png&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/1.0/.split-view_m.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Comme on peut le voir l’interface n’a pas changé et j’avoue qu’elle me plaît bien comme elle est actuellement. Donc a priori, ça ne devrait pas (ou peu) changer par la suite. Voyons tout de même les corrections et quelques nouveautés qu’apporte la version 1.0 par rapport à la 0.9.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Amélioration des performances : les opérations de découpages et d’assemblages prennent en moyenne 2 fois moins de temps par rapport aux versions précédentes.&lt;/li&gt;
&lt;li&gt;Prise en compte des cas où un ou plusieurs fichiers à assembler ne sont pas disponibles.&lt;/li&gt;
&lt;li&gt;Meilleure gestion des exceptions et des erreurs dans le code.&lt;/li&gt;
&lt;li&gt;Fenêtre de préférences légèrement revue pour la rendre plus compacte.&lt;/li&gt;
&lt;li&gt;Correction générale de l’assistant, les pages ne se dupliquent plus.&lt;/li&gt;
&lt;li&gt;Meilleure gestion de la fermeture des flux de fichiers lors d’un arrêt brutal (CTRL + C par exemple).&lt;/li&gt;
&lt;li&gt;Affichage du pourcentage d’avancement dans le titre de la fenêtre.&lt;/li&gt;
&lt;li&gt;Correction d’un bug qui ne permettait pas de découper des fichiers de plus de 2 Gio.&lt;/li&gt;
&lt;li&gt;Mise à jour des traductions (traduction française complète).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;J’espère que cette nouvelle version répondra aux attentes de beaucoup de personnes. Et nous voilà donc sur le chemin vers la 2.0 qui devra permettre après toutes les versions intermédiaires de &lt;a hreflang=&quot;en&quot; href=&quot;https://blueprints.launchpad.net/gnome-split/+spec/encryption&quot;&gt;découper un fichier en cryptant les données&lt;/a&gt; via mot de passe et aussi d’&lt;a hreflang=&quot;en&quot; href=&quot;https://blueprints.launchpad.net/gnome-split/+spec/upload-services&quot;&gt;uploader des fichiers directement sur des sites web dédiés&lt;/a&gt; afin de les partager.&lt;br /&gt;&lt;br /&gt;Comme toujours, les archives de code sont &lt;a hreflang=&quot;en&quot; href=&quot;http://gnome-split.org/releases/&quot;&gt;là&lt;/a&gt; et le dépôt pour les ubunteros est &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/%7Egnome-split-team/+archive/ppa&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Sortie de GNOME Split 0.8</title>
    <link>http://respawner.fr/blog/index.php?post/2010/06/30/Sortie-de-GNOME-Split-0.8</link>
    <guid isPermaLink="false">urn:md5:693158f46865d40192ae1f153e8e350f</guid>
    <pubDate>Wed, 30 Jun 2010 21:57:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>GNOME</category><category>GNOME Split</category><category>GTK</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;code.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;code.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/code.png&quot; /&gt;Il y a quelques heures, je viens de sortir une nouvelle version de &lt;a hreflang=&quot;fr&quot; href=&quot;https://launchpad.net/gnome-split&quot;&gt;GNOME Split&lt;/a&gt;. Cette dernière est numérotée 0.8 et représente une étape de plus vers la 1.0. Cela fait un an environ que le voyage a commencé après la mort inévitable de gSplit.&lt;br /&gt;&lt;br /&gt;GNOME Split 0.8 tire donc partie de &lt;a hreflang=&quot;fr&quot; href=&quot;http://respawner.fr/blog/index.php?post/2010/06/21/Sortie-de-java-gnome-4.0.16-et-le-futur&quot;&gt;java-gnome 4.0.16&lt;/a&gt; et des dernières nouveautés offertes. Aucune nouveauté géniale n’a été ajoutée. Il s’agit simplement d’une amélioration de l’interface graphique.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;gnome-split-0.8.png&quot; href=&quot;http://respawner.fr/blog/public/GNOMESplit/0.8/gnome-split-0.8.png&quot;&gt;&lt;img title=&quot;gnome-split-0.8.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;gnome-split-0.8.png&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/0.8/gnome-split-0.8.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Au niveau des changements qui ont été effectués, on notera qu’une partie du code a été réécrite, que le fichier de configure (Gentoo, Fedora et ArchLinux, si y’en a qui sont intéressés pour tester hésitez pas) a été mis à jour. Les unités utilisées pour les tailles de fichiers respectent les &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire&quot;&gt;standards&lt;/a&gt; et leur représentation en chaînes de caractères est confiée à GLib. On remarquera aussi l’utilisation des accelerators dans les menus.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;gnome-split-0.8-file.png&quot; href=&quot;http://respawner.fr/blog/public/GNOMESplit/0.8/gnome-split-0.8-file.png&quot;&gt;&lt;img title=&quot;gnome-split-0.8-file.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;gnome-split-0.8-file.png&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/0.8/gnome-split-0.8-file.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Enfin, et en vrac, la nouvelle barre d’information disponible dans GTK+ est utilisée pour montrer les informations et les warnings à l’utilisateur, la fenêtre principale se redimensionne automatiquement si nécessaire, des méthodes dépréciées ont été retirées du code, le curseur change d’état selon l’état de l’interface et des traductions ont été mises à jour et ajoutées.&lt;br /&gt;&lt;br /&gt;Je profite de cet article pour faire le point sur les noms de code que je donne à chaque version. Je ne sais pas si quelqu’un l’aura remarqué mais chaque nom de code est en rapport avec une expression ou une scène de la série &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/The_Big_Bang_Theory&quot;&gt;The Big Bang Theory&lt;/a&gt;. La version 0.8 se nomme Happy Birthday mais ça n’a pas vraiment de rapport avec la série.&lt;br /&gt;&lt;br /&gt;Pour terminer, GNOME Split 0.8 est disponible sur &lt;a hreflang=&quot;en&quot; href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; via le &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/%7Egnome-split-team/+archive/ppa&quot;&gt;PPA&lt;/a&gt; ou avec le &lt;a hreflang=&quot;en&quot; href=&quot;http://gnome-split.org/releases/&quot;&gt;code source&lt;/a&gt; bien évidemment. N’hésitez pas à faire de paquets pour vos distributions favorites et à me donner vos avis et éventuellement à me dire les modifications à apporter.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Sortie de java-gnome 4.0.16 et le futur</title>
    <link>http://respawner.fr/blog/index.php?post/2010/06/21/Sortie-de-java-gnome-4.0.16-et-le-futur</link>
    <guid isPermaLink="false">urn:md5:9495e516600072413524af765ea57407</guid>
    <pubDate>Mon, 21 Jun 2010 18:32:00 +0200</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>GNOME</category><category>GTK</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;java.png, oct. 2008&quot; style=&quot;float: left; margin: 0 1em 1em 0;&quot; alt=&quot;java.png&quot; src=&quot;http://respawner.fr/blog/public/Icones/java.png&quot; /&gt;Il y a quelques jours, le 17 juin 2010 pour être précis, une nouvelle version de &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/&quot;&gt;java-gnome&lt;/a&gt; est sortie. Cette dernière, numérotée 4.0.16, apporte comme toujours son lot d’amélioration. Il y a eu tout de même moins de modifications par rapport à ce que l’on a pu voir précédemment mais quand même. Une nouvelle version apporte toujours un peu de neuf (ou de vieux remis à neuf) et ça fait plaisir.&lt;/p&gt;
&lt;h3&gt;1. Nouvelle version : 4.0.16&lt;/h3&gt;
&lt;p&gt;Ainsi, java-gnome comporte maintenant le support complet pour l’utilisation des “accelerators” (on peut peut-être traduire par “raccourcis”), qui sont des combinaisons de touches permettant d’activer des actions et des entrées dans les menus. Je pense que bon nombre d’entre nous connaissent le très classique CTRL + Q pour quitter un programme. Le coeur de l’API se situe dans la classe &lt;code&gt;AcceleratorGroup&lt;/code&gt; mais il faudra aussi utiliser les méthodes &lt;code&gt;setAccelerator()&lt;/code&gt; des classes &lt;code&gt;MenuItem&lt;/code&gt; et &lt;code&gt;Action&lt;/code&gt;. L’API native étant presque incompréhensible, le travail pour porter tout ça en Java a été assez conséquent.&lt;br /&gt;&lt;br /&gt;&lt;a title=&quot;accelerators.png&quot; href=&quot;http://respawner.fr/blog/public/JavaGnome/accelerators.png&quot;&gt;&lt;img title=&quot;accelerators.png, juin 2011&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;accelerators.png&quot; src=&quot;http://respawner.fr/blog/public/JavaGnome/accelerators.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;De manière plus rapide, le support des opérateurs utilisables avec Cairo a été ajouter avec la classe &lt;code&gt;Operator&lt;/code&gt;. Une bonne quantité d’exemple en image en montre le principe (images bien entendu générées avec java-gnome lors de la construction de la documentation. Le style &lt;code&gt;CENTER&lt;/code&gt; a été ajouté dans la classe &lt;code&gt;ButtonBoxStyle&lt;/code&gt;. Les fichiers .defs on été mis à jour pour prendre en compte les modifications apportées par GTK 2.18 et et le widget InfoBar a été ajouté (effectués par votre serviteur). Les interfaces Activatable et Editable ont reçu quelques changements tout comme la classe Glib qui comporte une nouvelle méthode &lt;code&gt;formatSizeForDisplay()&lt;/code&gt; permettant de formater un taille d’octets en une chaîne de caractères plus lisibles pour nous humains. Enfin, une dernière méthode &lt;code&gt;ensureNative()&lt;/code&gt; a été ajoutée à la classe &lt;code&gt;Window&lt;/code&gt; de GDK.&lt;/p&gt;
&lt;h3&gt;2. Le futur&lt;/h3&gt;
&lt;p&gt;En tant que contributeur et avec les autres personnes travaillant sur java-gnome, nous nous sommes aperçu que maintenir un jeu de fichiers .defs pour générer la partie non publique de l’API commençait à être compliqué. Nous avons alors changer un peu le plan prévu. C’est pourquoi, en ce moment, certains travaillent sur l’utilisation du projet &lt;a hreflang=&quot;en&quot; href=&quot;http://live.gnome.org/GObjectIntrospection&quot;&gt;GObject Introspection&lt;/a&gt; pour générer une partie de l’API. C’est probablement le meilleur moyen d’avoir une source donnée la plus complète et la plus à jour afin de garder les bindings les plus proches des dernières versions des bibliothèques natives. Cependant, la migration vers GObject Introspection demande un travail long et délicat puisqu’il faut réécrire une partie du générateur de code que l’on sait stable puisqu’il commence à prendre de l’âge. J’espère tout de même que l’on aura quelque chose de fonctionnel assez vite afin de tester et stabiliser le code le plus rapidement possible.&lt;br /&gt;&lt;br /&gt;Le futur de java-gnome prévoit de bonnes surprises, c’est certain. Tout ça dans le but d’améliorer encore l’API telle qu’on la connaît et de toucher un public toujours plus grand.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>GNOME Split sort en version 0.3</title>
    <link>http://respawner.fr/blog/index.php?post/2010/01/04/GNOME-Split-sort-en-version-0.3</link>
    <guid isPermaLink="false">urn:md5:44e88726e9c8bb449da27fbd29045196</guid>
    <pubDate>Mon, 04 Jan 2010 00:36:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Ubuntu</category>
        <category>GNOME</category><category>GNOME Split</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category><category>Ubuntu</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;astuce.png, oct. 2008&quot; style=&quot;margin: 0 1em 1em 0; float: left;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Icones/astuce.png&quot; /&gt;Je n'avais pas signalé la sortie de la version 0.2, et bien je vais me rattraper avec celle de la version 0.3. GNOME Split, le logiciel de découpage et assemblage de fichiers, évolue petit à petit. La version 0.1 était une première version plutôt avancée, par conséquent la version 0.2 n'a vu arriver que des corrections de bugs (dont un critique pour les utilisateurs de la version 2.22.3 de glib). Alors qu'est-ce qu'il y a dans cette version ?&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Découpage et assemblage au format GNOME Split,&lt;/li&gt;
&lt;li&gt;Découpage et assemblage au format Xtremsplit,&lt;/li&gt;
&lt;li&gt;Découpage et assemblage sans format spécifique (semblable à la commande &quot;split&quot;, assemblage par &quot;cat&quot; possible),&lt;/li&gt;
&lt;li&gt;Réorganisation de la boîte de dialogue de préférences,&lt;/li&gt;
&lt;li&gt;Optimisation du code de l'interface graphique,&lt;/li&gt;
&lt;li&gt;Ajout d'info bulle sur les boutons de la barre d'outils,&lt;/li&gt;
&lt;li&gt;Correction de bugs divers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le code source peut être récupéré soit via cette &lt;a hreflang=&quot;en&quot; href=&quot;http://respawner.fr/releases/gnome-split/gnome-split-0.3.tar.bz2&quot;&gt;archive&lt;/a&gt;, soit via le dépôt Bazaar. Pour les utilisateurs de &lt;a hreflang=&quot;en&quot; href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu 9.10 Karmic Koala&lt;/a&gt;, un dépôt &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/%7Egnome-split-team/+archive/ppa&quot;&gt;PPA&lt;/a&gt; (dépôt non officiel donc attention hein) est à disposition. Une fois ce dernier ajouté, il ne suffira alors qu'à utiliser la commande :&lt;br /&gt;&lt;code&gt;~$ sudo aptitude install gnome-split&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/GNOMESplit/gnome-split-0.3.png&quot;&gt;&lt;img title=&quot;gnome-split-0.3.png, janv. 2010&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/gnome-split-0.3.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Sortie de java-gnome 4.0.14</title>
    <link>http://respawner.fr/blog/index.php?post/2009/12/16/Sortie-de-java-gnome-4.0.14</link>
    <guid isPermaLink="false">urn:md5:42ce97c2d0b8c059ca91265ddf24bf76</guid>
    <pubDate>Thu, 17 Dec 2009 01:12:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>GNOME</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;img title=&quot;java.png, oct. 2008&quot; style=&quot;margin: 0 1em 1em 0; float: left;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Icones/java.png&quot; /&gt;Une nouvelle version de &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/&quot;&gt;java-gnome&lt;/a&gt; est disponible depuis hier. Il s'agit de la version &lt;strong&gt;4.0.14&lt;/strong&gt; de l'API. Elle apporte notamment une intégration de la correction orthographique via l'API &lt;a hreflang=&quot;en&quot; href=&quot;http://www.abisource.com/projects/enchant/&quot;&gt;Enchant&lt;/a&gt;, une amélioration de la gestion des pointeurs (de souris) grâce à &lt;a hreflang=&quot;en&quot; href=&quot;http://library.gnome.org/devel/gdk/&quot;&gt;GDK&lt;/a&gt;. On voit apparaître de même une meilleure gestion du rendu de texte. Une autre nouveauté est l'apparition du widget &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/4.0/doc/api/org/gnome/gtk/LinkButton.html&quot;&gt;LinkButton&lt;/a&gt; qui offre la possibilité d'ouvrir une URL grâce à un bouton (travail effectué par &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/%7Eserkan-kaba&quot;&gt;Serkan Kaba&lt;/a&gt; et moi-même).&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/JavaGnome/LinkButton.png&quot;&gt;&lt;img title=&quot;LinkButton.png, déc. 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/JavaGnome/LinkButton.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Il est désormais possible de créer ses propres tailles de papier afin de pouvoir utiliser le format &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Portable_Document_Format&quot;&gt;PDF&lt;/a&gt; via &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Cairo_%28informatique%29&quot;&gt;Cairo&lt;/a&gt; même si la taille n'est pas standard. On a également droit à un lot de corrections principalement typographiques. Comme certains le savent ou l'ont remarqué, avec &lt;a hreflang=&quot;en&quot; href=&quot;http://library.gnome.org/misc/release-notes/2.28/&quot;&gt;GNOME 2.28&lt;/a&gt;, les icônes dans les menus peuvent être masquées ou non selon la configuration (elles le sont par défaut). Il est toutefois possible d'en forcer l'affichage maintenant grâce à de nouvelles méthodes dans l'API ou bien de continuer à utiliser les paramètres globaux. Au niveau de la compilation de la bibliothèque, l'utilisation de &lt;a hreflang=&quot;en&quot; href=&quot;http://en.wikipedia.org/wiki/Xvfb&quot;&gt;Xvfb&lt;/a&gt; permet aux packageurs de lancer tout de même la suite de tests et de générer la &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Javadoc&quot;&gt;javadoc&lt;/a&gt;. Enfin, un &lt;a hreflang=&quot;en&quot; href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=603774&quot;&gt;bug&lt;/a&gt; critique a été &lt;del&gt;corrigé&lt;/del&gt; contourné. Ce dernier faisait crasher l'application directement si l'utilisateur utilisait la version 2.22.3 de &lt;a hreflang=&quot;en&quot; href=&quot;http://library.gnome.org/devel/glib/&quot;&gt;glib&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;La news complète de la sortie de java-gnome 4.0.14 est &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/4.0/NEWS.html&quot;&gt;ici&lt;/a&gt;, le téléchargement des sources lui est par &lt;a hreflang=&quot;en&quot; href=&quot;http://ftp.gnome.org/pub/gnome/sources/java-gnome/4.0/&quot;&gt;là&lt;/a&gt;. À noter que &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/gnome-split&quot;&gt;GNOME Split&lt;/a&gt; 0.1 utilise la version 4.0.13 et que GNOME Split 0.2 utilisera la version 4.0.14. La dernière release de java-gnome est déjà disponible sur &lt;a hreflang=&quot;en&quot; href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;, &lt;a hreflang=&quot;en&quot; href=&quot;http://www.archlinux.org/&quot;&gt;Arch Linux&lt;/a&gt;, bientôt pour &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.debian.org/index.fr.html&quot;&gt;Debian&lt;/a&gt;, pour &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.ubuntu-fr.org/&quot;&gt;Ubuntu&lt;/a&gt; ça sera pour &lt;a hreflang=&quot;en&quot; href=&quot;https://wiki.ubuntu.com/LucidLynx&quot;&gt;Lucid Lynx&lt;/a&gt; (mais je vais demander un backport dans &lt;a hreflang=&quot;en&quot; href=&quot;https://wiki.ubuntu.com/KarmicKoala&quot;&gt;Karmic Koala&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;À vos codes.&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>GNOME Split débarque... bientôt</title>
    <link>http://respawner.fr/blog/index.php?post/2009/12/02/GNOME-Split-d%C3%A9barque...-bient%C3%B4t</link>
    <guid isPermaLink="false">urn:md5:2528b65b7da08eed9c71878e9d40fbbb</guid>
    <pubDate>Wed, 02 Dec 2009 20:01:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>GNOME</category><category>GNOME Split</category><category>GTK</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;java.png, oct. 2008&quot; style=&quot;margin: 0 1em 1em 0; float: left;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Icones/java.png&quot; /&gt;Ça faisait longtemps (pour ne pas dire très longtemps) que je n'avais pas parlé de mon projet de découpeur et assembleur de fichiers. En effet, &lt;a href=&quot;http://respawner.fr/blog/index.php?post/2008/12/14/Le-petit-split-illustr%C3%A9&quot;&gt;gSplit&lt;/a&gt; est en arrêt depuis plusieurs semaines (voire mois). J'ai, en fait, décidé de le recoder en partant d'une page &lt;del&gt;d'Eclipse&lt;/del&gt; blanche et au passage de le renommer &lt;strong&gt;GNOME Split&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;De l'ambition ? Oh oui, il en a ! Le but est de faire un découpeur et assembleur de fichiers supportant plusieurs formats (dont le fameux &lt;a hreflang=&quot;fr&quot; href=&quot;http://xtremsplit.fr/&quot;&gt;Xtremsplit&lt;/a&gt; [ce qui est déjà fait]). Pourquoi n'est-il pas tout de suite dans sa première version ? J'ai encore un algorithme de découpage / assemblage à implémenter (j'ai implémenté celui de Xtremsplit avant celui propre à GNOME Split... Qui a dit paradoxal ?), la fonctionnalité d'arrêt en cours d'action et un léger bug à corriger. J'espère que tout ceci sera fait d'ici la fin de semaine pour que le petit outil sorte en version &lt;strong&gt;0.1&lt;/strong&gt;. D'ici là, je vous offre quelques petites captures d'écran.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/GNOMESplit/gnome-split-decoupage.png&quot;&gt;&lt;img title=&quot;gnome-split-decoupage.png, déc. 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/.gnome-split-decoupage_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/GNOMESplit/gnome-split-assemblage.png&quot;&gt;&lt;img title=&quot;gnome-split-assemblage.png, déc. 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/.gnome-split-assemblage_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/GNOMESplit/gnome-split-menu.png&quot;&gt;&lt;img title=&quot;gnome-split-menu.png, déc. 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/.gnome-split-menu_s.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://respawner.fr/blog/public/GNOMESplit/gnome-split-action.png&quot;&gt;&lt;img title=&quot;gnome-split-action.png, déc. 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/.gnome-split-action_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/GNOMESplit/gnome-split-about.png&quot;&gt;&lt;img title=&quot;gnome-split-about.png, déc. 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/GNOMESplit/.gnome-split-about_s.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ah oui, j'oubliais ! Une chose qui serait très sympa serait d'avoir un nouveau logo. Donc si vous en avez l'envie et le temps, n'hésitez pas à m'envoyer vos créations (le must serait que celles-ci respectent les conventions du &lt;a hreflang=&quot;en&quot; href=&quot;http://tango.freedesktop.org/Tango_Desktop_Project&quot;&gt;Tango Desktop Project&lt;/a&gt;). L'auteur du logo retenu aura bien évidemment sa place dans les crédits du projet. Merci d'avance.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>java-gnome 4.0.10 est de sortie</title>
    <link>http://respawner.fr/blog/index.php?post/2009/03/05/java-gnome-4.0.10-est-de-sortie</link>
    <guid isPermaLink="false">urn:md5:f3a23f6991b859de50e365ce99637c74</guid>
    <pubDate>Thu, 05 Mar 2009 14:57:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Programmation</category>
        <category>API</category><category>Code</category><category>GNOME</category><category>GTK</category><category>Java</category><category>java-gnome</category>    
    <description>    &lt;p&gt;&lt;img title=&quot;java.png, oct. 2008&quot; style=&quot;margin: 0 1em 1em 0; float: left;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Icones/java.png&quot; /&gt;Depuis le temps que je l'attendais, et après nous avoir fait patienter avec 3 releases candidates, la version 4.0.10 de &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/&quot;&gt;java-gnome&lt;/a&gt; est enfin disponible. Comme son nom l'indique, le but de cet API est d'offrir la possibilité aux programmeurs utilisant le langage &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Java_%28langage%29&quot;&gt;Java&lt;/a&gt; de développer des applications en profitant d'une interface GTK parfaite pour &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.gnomefr.org/&quot;&gt;GNOME&lt;/a&gt;. Si vous hésitez à vous lancer, il doit y avoir un tutoriel rapide qui traine &lt;a hreflang=&quot;fr&quot; href=&quot;http://respawner.fr/blog/index.php?post/2008/10/27/Programme-GTK-en-Java-avec-l-API-java-gnome&quot;&gt;par ici&lt;/a&gt;. Pour voir les nouveautés, vous pouvez vous diriger &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/4.0/NEWS.html&quot;&gt;sur cette page&lt;/a&gt; qui offre un résumé complet des changements effectués depuis la version 4.0.9. Pour en faire le tour rapidement, on y trouve un support grandissant pour l'utilisation de Cairo, des améliorations au niveau des widgets tels que les vues arborescentes (treeview) ou les vues textes (textview), le support du presse-papier (clipboard) et je passe sur le reste. Je vous rappelle que si vous voulez avoir un exemple d'une application, vous pouvez toujours faire un tour du côté de &lt;a hreflang=&quot;en&quot; href=&quot;http://respawner.fr/gsplit/&quot;&gt;gSplit&lt;/a&gt; en plus de la consultation des &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/4.0/doc/examples/START.html&quot;&gt;exemples&lt;/a&gt; proposés dans l'API. Au niveau du téléchargement, vous pouvez désormais jeter un coup d'oeil sur le &lt;a hreflang=&quot;en&quot; href=&quot;http://ftp.gnome.org/pub/gnome/sources/java-gnome/4.0/&quot;&gt;FTP&lt;/a&gt;, ou alors profiter des paquets déjà disponibles sur mon &lt;a hreflang=&quot;en&quot; href=&quot;https://launchpad.net/%7Erespawneral/+archive/ppa&quot;&gt;PPA&lt;/a&gt; (dépôt non officiel, &lt;del&gt;attention au chien&lt;/del&gt;). En cadeau bonux, un screenshot de gSplit ^^&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/gSplit/gsplit-java-gnome4.0.10.png&quot;&gt;&lt;img title=&quot;gsplit-java-gnome4.0.10.png, mar. 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/gSplit/.gsplit-java-gnome4.0.10_m.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Réalisation d'une application pour son bureau GNOME</title>
    <link>http://respawner.fr/blog/index.php?post/2008/11/13/R%C3%A9alisation-d-une-application-pour-son-bureau-GNOME</link>
    <guid isPermaLink="false">urn:md5:574597a1adb5bcf8bcad639a6f4aa063</guid>
    <pubDate>Thu, 13 Nov 2008 22:55:00 +0100</pubDate>
    <dc:creator>Guillaume Mazoyer</dc:creator>
        <category>Ubuntu</category>
        <category>Glade</category><category>GNOME</category><category>Java</category><category>java-gnome</category><category>Libre</category><category>Linux</category><category>Programmation</category><category>Ubuntu</category>    
    <description>&lt;p&gt;&lt;img title=&quot;java.png, oct. 2008&quot; style=&quot;margin: 0 1em 1em 0; float: left;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/Icones/java.png&quot; /&gt;Lors d&amp;#8217;un de mes précédents billets, j&amp;#8217;avais expliqué brièvement comment réaliser une application pour l&amp;#8217;environnement &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.gnomefr.org/&quot;&gt;GNOME&lt;/a&gt; avec Glade et l&amp;#8217;API &lt;a hreflang=&quot;en&quot; href=&quot;http://java-gnome.sourceforge.net/&quot;&gt;java-gnome&lt;/a&gt;. Pour cela, nous avions réalisé une application très simple avec un bouton et un label. Aujourd&amp;#8217;hui nous allons construire une application complète et vraiment &amp;#8220;utile&amp;#8221;. Pour ne pas trop compliquer ce billet, j&amp;#8217;ai décidé donc que nous allions faire un générateur de mot de passe dont l&amp;#8217;algorithme n&amp;#8217;est pas très complexe. Voyons ceci dès maintenant.&lt;/p&gt;    &lt;h3&gt;1 - Utilisation de java-gnome&lt;/h3&gt;
&lt;p&gt;Je ne vais pas redétailler cette partie, si certain l&amp;#8217;on raté, l&amp;#8217;explication est dans ce &lt;a hreflang=&quot;en&quot; href=&quot;http://respawner.fr/blog/index.php?post/2008/10/27/Programme-GTK-en-Java-avec-l-API-java-gnome&quot;&gt;billet&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;2 - Le projet&lt;/h3&gt;
&lt;p&gt;J&amp;#8217;utilise &lt;a hreflang=&quot;en&quot; href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt; pour mes projets en Java depuis mes débuts. Je vous propose donc de l&amp;#8217;utiliser aussi. Voici l&amp;#8217;arborescence du projet après fin du code.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/PasswordGenerator/EclipseJavaGTK.png&quot;&gt;&lt;img title=&quot;EclipseJavaGTK.png, nov. 2008&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/PasswordGenerator/.EclipseJavaGTK_s.jpg&quot; /&gt;&lt;/a&gt;Vu que je ne vais pas détailler chaque partie de mon code je vous propose le téléchargement du projet directement grâce au fichier &lt;a hreflang=&quot;en&quot; href=&quot;http://respawner.fr/blog/public/PasswordGenerator/PasswordGenerator.tar.bz2&quot;&gt;PasswordGenerator.tar.bz2&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;3 - Algorithme du générateur de mot de passe&lt;/h3&gt;
&lt;p&gt;L&amp;#8217;algorithme que l&amp;#8217;on va utiliser pour générer le mot de passe n&amp;#8217;est pas très complexe à comprendre. Le but est de sélectionner un caractère aléatoirement dans une liste et de l&amp;#8217;ajouter à la chaîne de caractères composant le mot de passe. On veut que le mot de passe soit un minimum modifiable, par conséquent, on va pouvoir via notre interface GTK+ sélectionner les types de caractères que l&amp;#8217;on souhaite. On en distingue 4&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;les majuscules,&lt;/li&gt;
&lt;li&gt;les minusucules,&lt;/li&gt;
&lt;li&gt;les chiffres,&lt;/li&gt;
&lt;li&gt;les caractères spéciaux.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour pouvoir réaliser ceci, on ne va donc pas se contenter d&amp;#8217;une seule liste réunissant tout l&amp;#8217;ensemble mais de 4 listes (en réalité des chaînes de caractères pour ne pas se compliquer la tâche) bien distinctes comportant chacune un type de caractères. Chose important, le nombre aléatoire que l&amp;#8217;on va obtenir ne doit pas dépasser la taille de la liste. C&amp;#8217;est à dire que si la liste comporte 26 caractères, il ne faut pas tomber sur un nombre supérieur à 26. Pour cela, on va réaliser notre propre méthode de génération de nombre aléatoire en utilisant ce que l&amp;#8217;API nous offre déjà. Ce n&amp;#8217;est pas très complexe, je vous laisse regarder le contenu du package nommé &lt;em&gt;random&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Maintenant, voici l&amp;#8217;en-tête de notre méthode de génération du mot de passe.&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static String randomPassword(int length, boolean[] use)&lt;/code&gt;&lt;br /&gt;Le premier argument, &lt;em&gt;length&lt;/em&gt;, qui est un entier, correspond à la taille du mot de passe donc au nombre de caractères qu&amp;#8217;il contiendra. Le deuxième argument est un tableau de booléens. Plus précisément, un tableau de 4 booléens qui va nous permettre de savoir quoi mettre dans le mot de passe. Le premier booléen correspond aux chiffres, le deuxième aux majuscules, le troisième aux minuscules et le dernier aux caractères spéciaux.&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder password = new StringBuilder();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;String lowerChar = &quot;azertyuiopqsdfghjklmwxcvbn&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;String upperChar = &quot;AZERTYUIOPQSDFGHJKLMWXCVBN&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;String digits = &quot;0123456789&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;String specialChar = &quot;&amp;amp;~#{([-|_\\^@)]=}$%*!:/;.?,&amp;lt;&amp;gt; &quot;;&lt;/code&gt;&lt;br /&gt;Voici les suites de caractères à utiliser ainsi que la déclaration de la chaîne &lt;em&gt;password&lt;/em&gt; qui va contenir le mot de passe. On utilise un &lt;strong&gt;StringBuilder&lt;/strong&gt; et non un &lt;strong&gt;String&lt;/strong&gt; basique car il va y avoir plusieurs opérations d&amp;#8217;ajout d&amp;#8217;un seul caractère c&amp;#8217;est donc beaucoup plus propre de le faire ainsi que par des concaténation de chaînes.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int rnd = -1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int charSet = Random.nextInt(4);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (!use[charSet]) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;i--;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/code&gt;&lt;br /&gt;Voici la boucle qui va générer le mot de passe. On initialise une variable qui s&amp;#8217;incrémentera jusqu&amp;#8217;à obtenir la valeur de la taille du mot de passe voulue. L&amp;#8217;entier nommé &lt;em&gt;rnd&lt;/em&gt; correspond à la valeur du nombre aléatoire utilisé pour choisir le caractère et l&amp;#8217;entier nommé &lt;em&gt;charSet&lt;/em&gt; va servir à sélectionner le type de caractères à utiliser. Ici un nombre entier compris entre 0 et 3 (inclus, le 4 est exclu). Le test avec la condition &lt;code&gt;(!use[charSet])&lt;/code&gt; permet de ne pas utiliser un type de caractères dans le cas ou on n&amp;#8217;en voudrait pas. En gros, si la variable charSet prend une valeur qui permettra de sélectionner les chiffres mais que l&amp;#8217;on ne veut pas de chiffres, le on rentrera dans le if qui va décrémenter &lt;em&gt;i&lt;/em&gt; (pour annuler &amp;#8220;l&amp;#8217;effet&amp;#8221; de l&amp;#8217;itération) et lancer une nouvelle itération avec le mot-clé &lt;em&gt;continue&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (charSet) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case 0:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rnd = Random.nextInt(digits.length());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;password.append(digits.charAt(rnd));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/code&gt;&lt;br /&gt;Ici, selon le type de caractères, on va sélectionner le caractère qui va bien et l&amp;#8217;ajouter dans le mot de passe. Pour cela, on choisit un nombre compris entre 0 et la taille de la chaîne contenant le caractère puis on l&amp;#8217;ajoute. Le case 0 correspond au cas des chiffres, on retrouve d&amp;#8217;autres case pour les majuscules, minuscules et caractères spéciaux.&lt;br /&gt;&lt;br /&gt;Enfin, après avoir itérer autant qu&amp;#8217;il a fallut, on retourne le mot de passe sous forme de String. Rappelez-vous dans notre en-tête de méthode, on a bien spécifier que notre méthode retournait une variable de type String.&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return password.toString();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Vous pouvez retrouver tout ce code (en entier c&amp;#8217;est mieux) dans le fichier &lt;em&gt;Password.java&lt;/em&gt;.
&lt;/p&gt;
&lt;h3&gt;4 - Réalisation de l&amp;#8217;interface GTK+&lt;/h3&gt;
&lt;p&gt;Pour ce qui est du design même de l&amp;#8217;interface, on ne va pas s&amp;#8217;embêter et on va utiliser &lt;strong&gt;Glade&lt;/strong&gt;, un outil dans j&amp;#8217;ai parlé plusieurs fois et qui permet de réaliser très simplement son interface. Pour ce qui est de la fenêtre que l&amp;#8217;on va faire on va gagner du temps et utiliser directement une boîte de dialogue qui comporte déjà 2 parties utiles. A savoir, une partie vide ainsi que une spécialement faite pour y mettre des boutons. Réalisons donc une interface ressemblant à ceci, avec une arborescence identique à celle proposée sur l&amp;#8217;image ci-dessous. Le fichier Glade est disponible dans l&amp;#8217;archive et se nomme &lt;em&gt;PasswordGenerator.glade&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/PasswordGenerator/PasswordGladeJavaGTK.png&quot;&gt;&lt;img title=&quot;PasswordGladeJavaGTK.png, nov. 2008&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/PasswordGenerator/.PasswordGladeJavaGTK_s.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Une fois l&amp;#8217;interface réalisé, il faut maintenant l&amp;#8217;exploiter avec le code Java et lui faire réaliser les actions que l&amp;#8217;on souhaite. Tout d&amp;#8217;abord, qu&amp;#8217;est-ce que l&amp;#8217;on voit sur cette interface GTK+&amp;#160;? On remarque qu&amp;#8217;il y a 4 checkboxs correspondant à l&amp;#8217;utilisation (case cochée, par défaut) ou non (case décochée) des types de caractères. On voit aussi une barre pour choisir la taille du mot de passe (valeur par défaut 8). On sait tous qu&amp;#8217;un vrai mot de passe se compose d&amp;#8217;au moins 8 caractères avec alternance majuscules, minuscules, chiffres et caractères spéciaux. Enfin, il y a 3 boutons, un bouton &lt;em&gt;Quitter&lt;/em&gt; (qui veut tout dire), un &lt;em&gt;Actualiser&lt;/em&gt; qui va permettre de générer le mot de passe (qui se situera dans la champ de texte) et un bouton &lt;em&gt;Copier&lt;/em&gt; pour copier le mot de passe dans le presse-papier. Tous ces boutons sont des boutons &amp;#8220;basiques&amp;#8221; dont l&amp;#8217;icône, le label et le mnemonic sont déjà définis. Nous allons donc voir seulement les actions associées à ses boutons pour le reste il vous suffira de voir le code ce n&amp;#8217;est pas très complexe et il y a des commentaires.&lt;br /&gt;&lt;br /&gt;Commençons par le bouton &lt;em&gt;Quitter&lt;/em&gt;. Ce dernier a pour effet de terminer le programme. Voilà comment on code ceci.&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Exit button&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button exitButton = (Button) _glade.getWidget(&quot;exit_button&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exitButton.connect(new Button.Clicked() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClicked(Button source) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Gtk.mainQuit();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/code&gt;&lt;br /&gt;On récupère l&amp;#8217;élément bouton et au clic sur ce bouton on applique l&amp;#8217;action &lt;code&gt;Gtk.mainQuit()&lt;/code&gt; qui termine la boucle lancée par &lt;code&gt;Gtk.main()&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Après ceci, occupons-nous du bouton &lt;em&gt;Actualiser&lt;/em&gt; qui lancera la génération du mot de passe. Idem on récupère le bouton mais au clic on lui applique une autre méthode que l&amp;#8217;on a créé auparavant.&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Refresh button&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button applyButton = (Button) _glade.getWidget(&quot;apply_button&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; applyButton.connect(new Button.Clicked() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClicked(Button source) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GtkInterface.this.generatePassword();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/code&gt;&lt;br /&gt;La méthode &lt;code&gt;generatePassword()&lt;/code&gt; va elle vraiment se charger de récupérer un mot de passe et d&amp;#8217;actualiser le champ de texte de l&amp;#8217;interface.&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void generatePassword() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; boolean[] checks = { _digitCheck.getActive(), _upperCheck.getActive(),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _lowerCheck.getActive(), _specialCheck.getActive() };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int length = (int) _lengthScale.getValue();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!checks[0] &amp;amp;&amp;amp; !checks[1] &amp;amp;&amp;amp; !checks[2] &amp;amp;&amp;amp; !checks[3])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.errorDialog(Languages.ERROR, Languages.CHECKBOX_ERROR);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String password = Password.randomPassword(length, checks);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _passwordEntry.setText(password);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/code&gt;&lt;br /&gt;On récupère la longueur du mot de passe. Et là un test, si on a décoché toutes les cases, on signale une erreur à l&amp;#8217;utilisateur via une fenêtre spéciale appelée par la méthode &lt;code&gt;errorDialog(String title, String text)&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Pour finir, on définit l&amp;#8217;action du bouton &lt;em&gt;Copier&lt;/em&gt;. On va bien entendu copier le mot de passe dans le presse-papier dans le but de le coller plus tard bien entendu.&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Copy button&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button copyButton = (Button) _glade.getWidget(&quot;copy_button&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; copyButton.connect(new Button.Clicked() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClicked(Button source) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GtkInterface.this.copyToClipboard(_passwordEntry.getText());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/code&gt;&lt;br /&gt;C&amp;#8217;est la méthode &lt;code&gt;copyToClipboard(String text)&lt;/code&gt; qui va copier le contenu du champ texte dans le presse-papier si bien entendu l&amp;#8217;environnement le supporte mais ça ne devrait pas poser de problème. Voici le contenu de cette méthode.&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void copyToClipboard(String password) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StringSelection selection = new StringSelection(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; password == null ? &quot;&quot; : password);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Toolkit.getDefaultToolkit().getSystemClipboard().setContents(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; selection, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IllegalStateException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.errorDialog(Languages.ERROR, Languages.COPY_ERROR);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;N&amp;#8217;oubliez pas surtout de regarder tous les autres fichiers pour comprendre le code et tous les appels de méthodes. Et normalement, après compilation (via le script &lt;a hreflang=&quot;en&quot; href=&quot;http://ant.apache.org/&quot;&gt;Ant&lt;/a&gt;), Il ne reste qu&amp;#8217;à dézipper le fichier .zip généré, donner les droits d&amp;#8217;exécution au script shell et le lancer (on peut aussi utiliser le &lt;em&gt;Run&lt;/em&gt; de Eclipse). Après tout ceci, on obtient notre joli générateur de mot de passe sans aucun problème.&lt;br /&gt;&lt;a href=&quot;http://respawner.fr/blog/public/PasswordGenerator/ProgrGTK.png&quot;&gt;&lt;img title=&quot;ProgrGTK.png, nov. 2008&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://respawner.fr/blog/public/PasswordGenerator/.ProgrGTK_s.jpg&quot; /&gt;&lt;/a&gt;Si vous avez des questions, besoin de plus d&amp;#8217;explication, n&amp;#8217;hésitez pas à demander.&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>