Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
precise-creer-unity-lens [Le 24/11/2012, 14:57] 93.13.52.1 |
precise-creer-unity-lens [Le 07/06/2017, 14:01] (Version actuelle) L'Africain tag, et note intro |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>unity programmation python À_RECYCLER}} | ||
+ | |||
====== Créer une loupe Unity ====== | ====== Créer une loupe Unity ====== | ||
+ | <note warning>Quickly étant abandonné cette page est obsolète, il serait utile tout de même de la recycler pour proposer une autre methode pour créer des loupes</note> | ||
Le Dash Unity propose une manière simple et conviviale de visionner du contenu intéressant. À l'aide des Loupes, il est désormais possible de rechercher une information en local et sur le Web. Dans cet article, nous apprendrons à construire facilement une loupe permettant de chercher confortablement un article de Wikipédia, directement depuis votre Bureau. | Le Dash Unity propose une manière simple et conviviale de visionner du contenu intéressant. À l'aide des Loupes, il est désormais possible de rechercher une information en local et sur le Web. Dans cet article, nous apprendrons à construire facilement une loupe permettant de chercher confortablement un article de Wikipédia, directement depuis votre Bureau. | ||
Ligne 7: | Ligne 10: | ||
===== Prérequis ===== | ===== Prérequis ===== | ||
Pour suivre ce tutoriel, vous aurez besoin de : | Pour suivre ce tutoriel, vous aurez besoin de : | ||
- | * [[precise|Ubuntu 12.04 LTS (« The Precise Pangolin »)]] | + | * [[precise|Ubuntu 12.04]] (ou version ultérieure: 12.10,13.04,...) |
- | * [[quickly|Quickly]] | + | |
- | * [[quickly-unity-lens-template|Quickly Unity Lens Template]] | + | |
- | + | ||
- | Vous pouvez installer ces deux derniers en un clic **[[apt>quickly,quickly-unity-lens-template|ici]]**. | + | |
===== Créer la loupe Wikipédia ===== | ===== Créer la loupe Wikipédia ===== | ||
Ligne 19: | Ligne 18: | ||
quickly edit</code> | quickly edit</code> | ||
La dernière ligne de code ouvre Gedit avec trois fichiers. Nous ne nous occuperons que de ''<nowiki>__init__</nowiki>.py'', fermez les deux autres. | La dernière ligne de code ouvre Gedit avec trois fichiers. Nous ne nous occuperons que de ''<nowiki>__init__</nowiki>.py'', fermez les deux autres. | ||
+ | |||
+ | Si vous préférez éditer votre projet avec votre éditeur préféré ou un IDE il vous suffit de remplacer les lignes ci dessus par les suivantes : | ||
+ | |||
+ | <code> quickly create unity-lens wikipedia | ||
+ | cd wikipedia/wikipedia | ||
+ | emacs __init__.py</code> | ||
+ | |||
+ | en remplaçant emacs par votre éditeur préféré . | ||
La première chose que nous verrons est la classe Meta. Elle définit le comportement de la loupe : | La première chose que nous verrons est la classe Meta. Elle définit le comportement de la loupe : | ||
Ligne 61: | Ligne 68: | ||
</code> | </code> | ||
...sauf que nous, on veut des résultats provenant de Wikipédia ! | ...sauf que nous, on veut des résultats provenant de Wikipédia ! | ||
- | |||
===== Chercher sur Wikipédia ===== | ===== Chercher sur Wikipédia ===== | ||
Créons une nouvelle fonction permettant la recherche Wikipédia, que nous incorporerons ensuite dans le code. | Créons une nouvelle fonction permettant la recherche Wikipédia, que nous incorporerons ensuite dans le code. | ||
Ligne 99: | Ligne 105: | ||
<code=python>return results[1]</code> | <code=python>return results[1]</code> | ||
- | Notre fonction ''wikipedia_query'' devrait ressembler au code ci-dessous. On a ici ajouté un ''try'' et un ''except'' afin de prendre en compte des éventuelles erreurs qui pourraient survenir (erreur de réseau, erreur de transmission des résultats, etc.). S'il y a une erreur, un message s'affichera dans la console et une liste de résultats vide sera renvoyée. | + | Notre fonction ''wikipedia_query'' devrait ressembler au code ci-dessous. On a ici ajouté un ''try'' et un ''except'' afin de prendre en compte des éventuelles erreurs qui pourraient survenir (erreur de réseau, erreur de transmission des résultats, etc.). S'il y a une erreur, un message s'affichera dans la console et une liste de résultats vide sera renvoyée: |
+ | <code=python>def wikipedia_query(self,search): | ||
+ | try: | ||
+ | search = search.replace(" ", "|") | ||
+ | url = ("%s/w/api.php?action=opensearch&limit=25&format=json&search=%s" % (self.wiki, search)) | ||
+ | results = simplejson.loads(urllib2.urlopen(url).read()) | ||
+ | print "Searching Wikipedia" | ||
+ | return results[1] | ||
+ | except (IOError, KeyError, urllib2.URLError, urllib2.HTTPError, simplejson.JSONDecodeError): | ||
+ | print "Error : Unable to search Wikipedia" | ||
+ | return []</code> | ||
**Dès lors, tout ce que nous aurons à faire est de « brancher » cette nouvelle fonction à la fonction ''search'' définie plus haut.** | **Dès lors, tout ce que nous aurons à faire est de « brancher » cette nouvelle fonction à la fonction ''search'' définie plus haut.** | ||
Ligne 114: | Ligne 130: | ||
pass | pass | ||
</code> | </code> | ||
- | On pourrait traduire ce code par : « À chaque résultat renvoyé renvoyé par la fonction ''wikipedia_query'', ajouter un article à la loupe ». | + | On pourrait traduire ce code par : « À chaque résultat renvoyé par la fonction ''wikipedia_query'', ajouter un article à la loupe ». |
Ce qui se passe dans ''results.append'' est très important pour comprende ce que nous pourront afficher dans une loupe. Voici ce dont nous avons besoin pour passer les résultats à Unity (**ne copiez pas ce code, il ne fonctionnera pas !**) : | Ce qui se passe dans ''results.append'' est très important pour comprende ce que nous pourront afficher dans une loupe. Voici ce dont nous avons besoin pour passer les résultats à Unity (**ne copiez pas ce code, il ne fonctionnera pas !**) : | ||
<code=python> | <code=python> | ||
Ligne 129: | Ligne 145: | ||
===== Utiliser votre loupe ===== | ===== Utiliser votre loupe ===== | ||
Vous pouvez maintenant faire apparaître votre loupe dans le Dash en tapant la commande suivante dans le Terminal : | Vous pouvez maintenant faire apparaître votre loupe dans le Dash en tapant la commande suivante dans le Terminal : | ||
- | <code>sudo quickly install</code> | + | <code>sudo quickly install</code> (l'écran devrait clignoter 2-3 fois, ne pas s'inquiéter, c'est juste Unity qui se relance pour prendre en compte la nouvelle loupe fraîchement crée) |
...et le démarrer en tapant : | ...et le démarrer en tapant : | ||
- | <code>quickly run</code> | + | <code>quickly run</code><note>Il est possible que vous obteniez cette erreur en lançant cette commande:<code>Traceback (most recent call last): |
+ | File "bin/wikipedia", line 30, in <module> | ||
+ | from wikipedia import WikipediaLens | ||
+ | File "/home/user/wikipedia/wikipedia/__init__.py", line 41 | ||
+ | SyntaxError: Non-ASCII character '\xc3' in file /home/user/wikipedia/wikipedia/__init__.py on line 41, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details</code>Pour y remedier, il suffit juste d'ajouter la ligne suivante au début du fichier (juste avant les 'import'):<code=python># -*- coding:utf-8 -*-</code>... et de relancer la commande suivante: <code>sudo quickly install && quickly run</code></note> | ||
{{http://developer.ubuntu.com/wp-content/uploads/2012/04/Screenshot-from-2012-03-30-172604-700x359.png}}\\ | {{http://developer.ubuntu.com/wp-content/uploads/2012/04/Screenshot-from-2012-03-30-172604-700x359.png}}\\ | ||
Il fait ce qu'il a à faire, c'est bien, voyons maintenant comment l'améliorer… | Il fait ce qu'il a à faire, c'est bien, voyons maintenant comment l'améliorer… |