Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 28/01/2013, 07:20]
quent57
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 12: Ligne 12:
  
 <code bash> <code bash>
-quickly create unity-lens ​ubuntu-fr-tutorial+quickly create unity-lens tutorial
 </​code>​ </​code>​
  
-Maintenant utilisons cette nouvelle lens : +Maintenant utilisons cette nouvelle lens :
 <code bash> <code bash>
-cd ubuntu-fr-tutorial+cd tutorial
 sudo quickly install sudo quickly install
 quickly run quickly run
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 ​ubuntu_fr_tutorial/​__init__.py+Ouvrir le fichier 
 +  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 35: 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 68: 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 74: 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 81: 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 92: 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 107: 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 131: 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 136: 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 146: 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 157: 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
 </​code>​ </​code>​
  
 +Alors, quelques éléments a savoir a propos des filtres, je n'ai aucune référence pour ces affirmations a pars mes propres essais :
 +  - On ne peux pas ajouter d'​entré a un filtre après l'​avoir ajouté en tant que filtre ! 
 +
 +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 :
 +<code python>
 +def populate_option_filter(option_filter):​
 +    for i in xrange(3):
 +        title="​Filtre"​+str(i)
 +        option_filter.add_option(title,​title,​ Gio.ThemedIcon.new("​input-keyboard-symbolic"​))
 +</​code>​
 +
 +ensuite, ajouter en dessous des catégories non filtres :
 +<code python>
 +    ratings_filter = Unity.RatingsFilter.new("​ratings_filter",​
 +                                         "​Unity.RatingsFilter",​
 +                                         ​Gio.ThemedIcon.new("​input-keyboard-symbolic"​),​
 +                                         True)
 +    radio_option_filter = Unity.RadioOptionFilter.new("​radio_option_filter",​
 +                                         "​Unity.RadioOptionFilter",​
 +                                         ​Gio.ThemedIcon.new("​input-keyboard-symbolic"​),​
 +                                         True)
 +    check_option_compact_filter = Unity.CheckOptionFilterCompact.new("​check_option_compact_filter",​
 +                                         "​Unity.CheckOptionFilterCompact",​
 +                                         ​Gio.ThemedIcon.new("​input-keyboard-symbolic"​),​
 +                                         True)
 +    check_option_filter = Unity.CheckOptionFilter.new("​check_option_filter",​
 +                                         "​Unity.CheckOptionFilter",​
 +                                         ​Gio.ThemedIcon.new("​input-keyboard-symbolic"​),​
 +                                         True)
 +    multi_range_filter = Unity.MultiRangeFilter.new("​multi_range_filter",​
 +                                         "​Unity.MultiRangeFilter",​
 +                                         ​Gio.ThemedIcon.new("​input-keyboard-symbolic"​),​
 +                                         True)
 +    populate_option_filter(radio_option_filter)
 +    populate_option_filter(check_option_compact_filter)  ​
 +    populate_option_filter(check_option_filter)  ​
 +    populate_option_filter(multi_range_filter) ​    
 +    #rating no need to be fillful
 +</​code>​
 +
 +Ok, on peux observer les différence :)
 +
 +Pour récupérer les valeurs des filtres et pour en ajouter a posteriori, singlet n'est pas encore pres, nous allons donc devoir attendre un peu.
  • utilisateurs/quent57/tutoriel/singlet_unity_lens.1359354011.txt.gz
  • Dernière modification: Le 28/01/2013, 07:20
  • par quent57