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 | ||
utilisateurs:quent57:tutoriel:singlet_unity_lens [Le 02/02/2013, 15:52] quent57 [Les filtres] |
utilisateurs:quent57:tutoriel:singlet_unity_lens [Le 11/09/2022, 13:13] (Version actuelle) moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
L'idée d'ici est de créer une lense et un scope qui montrent toutes les possibilités à disposition par les lens et scope unity, et au passage de comprendre comment utiliser et comment fonctionne singlet. | L'idée d'ici est de créer une lense et un scope qui montrent toutes les possibilités à disposition par les lens et scope unity, et au passage de comprendre comment utiliser et comment fonctionne singlet. | ||
- | Le projet sera facilement compilable pour pouvoir réellement visualiser et tester toutes les possibilités de des lenses unity. | + | Le projet sera facilement compilable pour pouvoir réellement visualiser et tester toutes les possibilités de des lenses unity. |
Ce tutoriel ne contiendra pas d'images qui risquerai de rapidement devenirs obsolètes. | Ce tutoriel ne contiendra pas d'images qui risquerai de rapidement devenirs obsolètes. | ||
Ligne 15: | Ligne 15: | ||
</code> | </code> | ||
- | Maintenant utilisons cette nouvelle lens : | + | Maintenant utilisons cette nouvelle lens : |
<code bash> | <code bash> | ||
cd tutorial | cd tutorial | ||
Ligne 27: | Ligne 27: | ||
Nous avons actuellement une seul catégorie d'affichée. | Nous avons actuellement une seul catégorie d'affichée. | ||
- | Ouvrir le fichier | + | Ouvrir le fichier |
tutorial/__init__.py | tutorial/__init__.py | ||
- | On observe dans ce fichier | + | On observe dans ce fichier |
example_category = ListViewCategory("Examples", 'help') | example_category = ListViewCategory("Examples", 'help') | ||
Cela correspond donc à cette catégorie. | Cela correspond donc à cette catégorie. | ||
Ligne 36: | Ligne 36: | ||
Nous allons la renommer et ajouter tous les types connus. | Nous allons la renommer et ajouter tous les types connus. | ||
- | La doc officielle des type de catégories ((http://developer.ubuntu.com/api/ubuntu-12.04/python/Unity-5.0.html#Unity.CategoryRenderer)) nous propose 4 types : | + | La doc officielle des type de catégories ((http://developer.ubuntu.com/api/ubuntu-12.04/python/Unity-5.0.html#Unity.CategoryRenderer)) nous propose 4 types : |
* VERTICAL_TILE | * VERTICAL_TILE | ||
* HORIZONTAL_TILE | * HORIZONTAL_TILE | ||
* LIST_TILE | * LIST_TILE | ||
* FLOW | * FLOW | ||
- | Mais singlet que 2 : | + | Mais singlet que 2 : |
- | * IconViewCategory (VERTICAL_TILE) | + | * IconViewCategory (VERTICAL_TILE) |
* ListViewCategory (HORIZONTAL_TILE) | * ListViewCategory (HORIZONTAL_TILE) | ||
- | remplacer cette ligne par ce code, la méthode permet de peupler une catégorie : | + | remplacer cette ligne par ce code, la méthode permet de peupler une catégorie : |
<code python> | <code python> | ||
list_view_category = ListViewCategory("ListViewCategory", 'help') | list_view_category = ListViewCategory("ListViewCategory", 'help') | ||
Ligne 69: | Ligne 69: | ||
</code> | </code> | ||
- | Remplaçons le contenu de la méthode search par : | + | Remplaçons le contenu de la méthode search par : |
<code python> | <code python> | ||
self.populate_category(self.list_view_category, results) | self.populate_category(self.list_view_category, results) | ||
Ligne 75: | Ligne 75: | ||
</code> | </code> | ||
- | Et comme on parle français et qu'on a envie de pouvoir mettre des accents utf-8, ajouter un première ligne du fichier : | + | Et comme on parle français et qu'on a envie de pouvoir mettre des accents utf-8, ajouter un première ligne du fichier : |
<code ptyhon> | <code ptyhon> | ||
# -*-coding:utf-8 -* | # -*-coding:utf-8 -* | ||
Ligne 82: | Ligne 82: | ||
Testez ! | Testez ! | ||
- | Alors ok, ça fonctionne et on observe 2 types de catégorie, essayons quand même les autres (singlet nous le permet, et c'est tant mieux !) ! | + | Alors ok, ça fonctionne et on observe 2 types de catégorie, essayons quand même les autres (singlet nous le permet, et c'est tant mieux !) ! |
<code python> | <code python> | ||
Ligne 93: | Ligne 93: | ||
</code> | </code> | ||
- | Nous ajouterons aussi les 2 imports suivants : | + | Nous ajouterons aussi les 2 imports suivants : |
<code python> | <code python> | ||
from singlet.lens.category import Category | from singlet.lens.category import Category | ||
Ligne 108: | Ligne 108: | ||
En effet, ce sont juste des membre de notre classe ! </note> | En effet, ce sont juste des membre de notre classe ! </note> | ||
- | Il utilise pour cela l'introspection ((singlet/lens.base.py)) : | + | Il utilise pour cela l'introspection ((singlet/lens.base.py)) : |
<code python> | <code python> | ||
for aName, a in attrs.items(): | for aName, a in attrs.items(): | ||
Ligne 132: | Ligne 132: | ||
On vois ici que elif isinstance(a, Unity.Category): trouve toute les catégories de notre classe :) | On vois ici que elif isinstance(a, Unity.Category): trouve toute les catégories de notre classe :) | ||
+ | |||
+ | Le code ci dessus montre aussi pourquoi nous avons accès aux variables de class dans notre object (self.categorie), en réalité ces membres sont injectés dans l'objet (cf code ci dessus), et ce sont uniquement les id des catégories qui sont accessible a travers ces membres ! | ||
Ligne 137: | Ligne 139: | ||
On vas donc essayer de la définir pour afficher nos catégories dans le meme ordre que ci dessus, car ce n'est pas le cas. | On vas donc essayer de la définir pour afficher nos catégories dans le meme ordre que ci dessus, car ce n'est pas le cas. | ||
- | Pour cela, ajouter dans la classe Meta : | + | Pour cela, ajouter dans la classe Meta : |
<code python> | <code python> | ||
category_order=['list_view_category','icon_view_category','list_tile_category','flow_category'] | category_order=['list_view_category','icon_view_category','list_tile_category','flow_category'] | ||
Ligne 147: | Ligne 149: | ||
On vois ci dessus que l'on peux aussi définir des filtres | On vois ci dessus que l'on peux aussi définir des filtres | ||
- | Suivant la doc, voici l'arborescence des classes : | + | Suivant la doc, voici l'arborescence des classes : |
* Unity.Filter | * Unity.Filter | ||
* Unity.RatingsFilter | * Unity.RatingsFilter | ||
Ligne 158: | Ligne 160: | ||
Voila qui est intéressant, testons donc tous ces filtres ! | Voila qui est intéressant, testons donc tous ces filtres ! | ||
- | On ajoutera aussi l'import : | + | On ajoutera aussi l'import : |
<code pyhon> | <code pyhon> | ||
from gi.overrides.Gio import Gio | from gi.overrides.Gio import Gio | ||
Ligne 168: | Ligne 170: | ||
C'est très important car cela signifie que si on ajoute ces filtres en tant que membre de la classe, il *faut* qu'ils aient déja tous leur éléments ! | C'est très important car cela signifie que si on ajoute ces filtres en tant que membre de la classe, il *faut* qu'ils aient déja tous leur éléments ! | ||
- | Donc je propose d'ajouter cette fonction *en dessus* de la classe : | + | Donc je propose d'ajouter cette fonction *en dessus* de la classe : |
<code python> | <code python> | ||
def populate_option_filter(option_filter): | def populate_option_filter(option_filter): | ||
Ligne 176: | Ligne 178: | ||
</code> | </code> | ||
- | ensuite, ajouter en dessous des catégories non filtres : | + | ensuite, ajouter en dessous des catégories non filtres : |
<code python> | <code python> | ||
ratings_filter = Unity.RatingsFilter.new("ratings_filter", | ratings_filter = Unity.RatingsFilter.new("ratings_filter", |