Un court billet pour annoncer la sortie de ZiK en version 0.17.1.
Cette version apporte uniquement des corrections de bugs.
Non, le développement de ZiK n'est pas stoppé.
Vous devez être identifié pour poster un commentaire.
Le lecteur audio ZiK est sorti en version 0.17.
Les nouveautés sont :
nouveaux icônes créés par J. Kaiden,
fermeture du bug 28638 qui bloquer l'interface graphique,
application du choix de session (multi/unique) sans redémarrage de ZiK,
clôture d'un bug qui empêcher de recharger le navigateur de la session précédente,
lors de l'édition de la liste de lecture le dialogue d'information n'est affichée plus qu'une fois,
lors de l'affichage de la fenêtre ZiK utilise la position précédente,
ajout d'ascenseurs dans l'assistant.
Et pour les modules :
cacher ZiK lors d'un clic sur la croix de la fenêtre (TrayICon),
afficher/cacher ZiK (HotKeys),
clôture d'un bug qui empêcher les sessions multiple (HotKeys),
clôture d'un bug qui prévenait de rapatrier les informations depuis le web (Brainz).
Vous devez être identifié pour poster un commentaire.
Je viens de sortir la version 0.16.2 qui corrige 2 bogues afin d'éviter que ZiK ne plante au démarrage.
Vous devez être identifié pour poster un commentaire.
Les nouveautés sont :
un gem.
l'installation des greffons de GStreamer au besoin (nécessite la future version 0.90.9 de ruby-gnome2),
l'export des fichiers audio de la liste de lecture dans un répertoire.
Cette nouvelle version corrige aussi des bogues.
Vous devez être identifié pour poster un commentaire.
Quelques nouvelles de la version en développement.
En réponse à la demande #28702, il est maintenant possible d'exporter l'ensemble des chansons composant la liste de lecture grâce au menu Liste de lecture/Export songs (à traduire). La liste est écrite, au format local, dans le fichier que vous avez spécifié dans le dialogue. Afin de respecter votre classement par dossier, une option du dialogue permet de recréer l'arborescence utilisée pour les fichier d'origine.
L'ébauche d'un nouveau module fait son apparition dans le dépôt git. Il permettra d'ajouter des entrées dans certains menus afin d'appeler un programme externe. Pour l'instant, seul le menu principal (en haut de la fenêtre ZiK) est concerné. Je pense ajouter la gestion des menus contextuels au niveau de la liste de lecture et du navigateur et la capacité à appeler un programme lors de la lecture d'une nouvelle chanson.
Lien : discussion sur le forum.
Vous devez être identifié pour poster un commentaire.
Cette nouvelle version corrige quelques bugs dont un qui empêche ZiK de fonctionner après une nouvelle installation.
Vous devez être identifié pour poster un commentaire.
Cette version corrige des bogues dans l'assistant and dans le module brainz qui peuvent provoquer la fermeture de ZiK.
L'entrée « éditer » a disparu du menu « liste de lecture » car il provoque un bogue. La liste peut toujours être éditée via le boutton ou le menu contextuel.
Vous devez être identifié pour poster un commentaire.
La version 0.15 de ZiK est sortie.
Un assistant explique le fonctionnement de ZiK lors d'une nouvelle installation. Il permet aussi une configuration rapide du logiciel. Il est disponible via le menu aide.
L'édition de la liste de lecture et la recherche de pistes audio sont maintenant intégrées à la fenêtre principale.
La vue compact permet d'afficher un plus grand nombre de pistes audio dans la liste de lecture.
ZiK supporte maintenant ruby-taglib2 et les nouvelles versions de rghk (0.2) et de gtk (2.22).
La traduction française a été mise à jour.
Pour plus d'informations, voyer le fichier ChangeLog.
Téléchargez ZiK sur developpez.com.
Vous devez être identifié pour poster un commentaire.
Je vais présenter ici quelques fonctions utiles. Pour des questions de faciliter, j'ai créé deux nouvelles méthodes pour le module TagLib bien qu'elles n'aient rien avoir avec taglib.
rb_define_singleton_method(mTagLib, "block", block, 0);
La méthode TagLib.block ne prend aucun paramètre, mais un bloc doit lui être fourni. Elle exécute ce bloc en lui passant comme argument l'objet TagLib et retourne le bloc sous la forme d'un Proc.
$ make
$ irb
> require './lib/taglib2.rb'
=> true
TagLib.block{|a| p a}
TagLib
=> #<Proc:0xb75ba510@(irb):2>
Voici la fonction implémentant ce comportement.
VALUE
block(VALUE self)
{
rb_yield(self);
return rb_block_proc();
}
rb_yield permet d'appeler le bloc passé à la méthode alors que rb_block_proc permet de le manipuler sous la forme d'un Proc.
Je propose d'écrire l'équivalent de code écrit en ruby.
def TagLib.n(tab=["Salut", "Re"])
tab.to_a
tab.each{|s| $stdout.puts s}
tab[0]
end
rb_define_singleton_method(mTagLib, "n", n, -1);
Le dernier argument lors de la déclaration de la méthode TagLib.n vaut -1 ce qui indique que la méthode ne possède pas un nombre d'arguments fixees. La fonction rb_scan_args permet de récupérer de manière propre les paramètres passés à la méthode. Le troisième argument de cette fonction est une chaîne de caractère représentant deux chiffres. Le premier indique le nombre de paramètres obligatoires, le second indique le nombre de paramètres optionnels.
VALUE
n1(VALUE str)
{
return rb_funcall(rb_stdout, rb_intern("puts"), 1, str);
}
VALUE
n(int argc, VALUE* argv, VALUE self)
{
VALUE tab;
rb_scan_args(argc, argv, "01", &tab);
if (NIL_P(tab))
tab=rb_ary_new3(2, rb_str_new2("Salut"), rb_str_new2("Re"));
rb_funcall(tab, rb_intern("to_a"), 0);
rb_iterate(rb_each, tab, n1, Qnil);
return RARRAY(tab)->ptr[0];
}
TagLib.n peut donc être appelée avec un paramètre ou sans. Si aucun argument n'a été passé (tab=nil), tab est initialisé en créant un tableau contenant deux objets String. On vérifie ensuite que tab appartient à la classe Array ou s'en rapproche (duck typing). rb_funcall permet d'appeler une méthode (deuxième argument) d'un objet (premier argument) avec un certain nombre (troisième argument) de paramètres (arguments suivant). rb_intern permet d'obtenir la méthode à partir d'une chaîne de caractères.
La fonction n1 est ensuite appelé pour chacun des éléments du tableau grâce à rb_iterate. LA méthode retourne, finalement, le premier élément de tab, la macro RARRAY permettant d'accéder à la structure interne d'un objet de la classe Array, le champ ptr permettant d'accéder aux éléments.
> TagLib.n
Salut
Re
=> "Salut"
> TagLib.n(["Bonjour"])
Bonjour
=> "Bonjour"
Quelques liens qui m'ont aidé à écrire des extensions pour ruby en C :
le fichier README.EXt fourni avec ruby,
ruby-doc.
En ce qui concerne taglib :
l'exemple dans les sources de taglib,
le fichier bindings/c/tag_c.h.
Le code, présenté dans ces billets, implémentant le module, TagLib est téléchargeable ici.
Cette série d'articles est finie. J'espère qu'ils vous seront utiles.
Vous devez être identifié pour poster un commentaire.
Ce quatrième billet présente comment obtenir une documentation grâce à rdoc : il suffit de commenter les fichiers sources.
Pour documenter les méthodes de la classe TagLib::File, il suffit de commenter les différentes fonctions les implémentant.
La méthode title permet d'obtenir le titre d'une piste. On l'indique en commentaire juste avant la fonction file_get_title.
/*Get track title*/
VALUE
file_get_title(VALUE self)
Par défaut, les paramètres d'une méthode sont nommés p1, p2, .... Pour la méthode title=, on utilise l'instruction call-seq: pour afficher le texte title=title (au lieu de title=(p1)).
/*
call-seq: title=title
Set track title to title
title: a string
*/
VALUE
file_set_title(VALUE self, VALUE title)
La méthode initialize ne devrait jamais être appelée directement depuis un code ruby. On utilise l'instruction :nodoc: pour indiquer que la méthode ne doit pas apparaitre dans la documentation.
/*:nodoc:*/
VALUE
file_init(VALUE self, VALUE path)
J'indique que je ne désire pas commenter le module TagLib en plaçant un commentaire vide afin d'éviter que rdoc utilise un commentaire non-désiré.
/* */
mTagLib=rb_define_module("TagLib");
Dans le fichier lib/raglib2.rb, j'ajoute la directive :main: afin que la page initiale de la documentation pointe sur la classe TagLib::File.
#:main: TagLib::File
module TagLib
Bizarrement, cette directive ne semble pas fonctionner si elle est placée dans le fichier taglib2.c.
rdoc --exclude extconf.rb
Le fichier doc/index.html est créé.

Rendez-vous pour le dernier billet où j'introduirai quelques concepts que je n'ai pas utilisé dans le module TagLib.
Vous devez être identifié pour poster un commentaire.
Cet article fait suite au premier et deuxième billets dans lesquels nous avons vu comment créer un objet de la classe TagLib::File. Cet objet utilise les fonctions de la bibliothèque taglib, écrite en C, afin d'accéder aux tags de fichiers audio. Dans ce billet, nous verrons comment obtenir les valeurs des tags et comment modifier un tag.
Vous devez être identifié pour poster un commentaire.
Cet article fait suite au premier. Il s'intéresse à la classe principale qui permettra de manipuler les tags de fichiers audio.
Vous devez être identifié pour poster un commentaire.
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Copyright © 2000-2012 - www.developpez.com