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.
J'utilise régulièrement ruby-taglib. Malheureusement, certains bugs empêchent son utilisation avec ruby 1.9. Après avoir tenté, avec plus ou moins de succès, de corriger ces bugs, j'ai décidé de réécrire cette bibliothèque. La version originale est basée sur ruby/DL, bibliothèque que je n'ai jamais utilisée. Je profite de cette réécriture pour proposer une série d'articles sur la manière d'adapter une bibliothèque C.
Vous devez être identifié pour poster un commentaire.
Suite à ma première contribution directe au projet debian (cf : ci-dessous), j'écris ce billet pour présenter mon expérience avec linux. Je précise que je ne suis pas informaticien de formation.
Suite à quelques utilisations sporadiques de différentes distributions linux, j'ai réellement découvert linux en installant ubuntu 5.10. Après avoir réglé quelques difficultés, je trouve mes marques et retrouve certains logiciels que j'utilisais sous windows. Un seul logiciel me manque vraiment, il s'agit de DéKiBulle un lecteur audio que j'apprécie particulièrement.
Plus pour m'amuser que pour autres choses, en 2007, je commence à développer un petit script, en bash, nommé ZiK qui me permet de lire mes fichiers audio. Puis je décide de développer une interface graphique et un lecteur audio digne de ce nom dans l'idée d'apprendre un langage de programmation. Après avoir hésité entre ruby et python, j'opte pour ruby. Si j'avais su que python est livré en standard dans la plupart des distributions, mon choix aurait peut-être été différent. Cependant, je ne regrette pas mon choix, je trouve ruby plus sexy (avis totalement orienté par mon expérience).
J'ai découvert les paquets debian côté « fabricant » lorsque j'ai voulu distribuer ZiK sous la forme d'un paquet debian.
J'ai procédé en plusieurs étapes.
J'ai tout d'abord, tout simplement, invoquer dpkg-deb --build sur une arborescence locale imageant une installation de ZiK en prenant soin d'ajouter un dossier DEBIAN contenant les fichiers control et changelog.
J'ai ensuite écrit un fichier rules afin de pouvoir publier un paquet sur mon ppa (debuild et pbuilder sont devenus alors très utiles). La qualité de paquets disponibles sur ce dernier laissent à désirer.
La troisième étape implique la création de paquets plus propres qui seront, si possible, intégrés à debian.
Afin de pouvoir définir des raccourcis clavier globaux pour mon application ZiK, je développe une bibliothèque nommée rghk (ruby global hotkeys). La construction de son paquet debian étant relativement aisé, je me suis proposé pour inclure cette bibliothèque. Elle est maintenant disponible pour debian unstable (ainsi que sous ubuntu 10.10) sous le nom libglobalhotkeys-ruby. Elle ne devrait cependant pas être incluse dans squeeze car son arrivée dans les dépôts à précéder le gel seulement de quelques heures.
Je remercie Lucas Nussbaum de l'équipe pkg-ruby-extra pour son aide lors du processus d'inclusion.
Ayant réussi mon galon d'essai, ZiK devrait prochainement rejoindre debian (en version 0.15 ou 0.16).
rghk permet de définir des raccoucrcis clavier globaux (actifs même si l'applications est en arrière plan).
Le code suivant permet d'afficher Binded lorsque les touches control et a sont enfoncées. Un exemple plus détaillé est disponible avec le code source.
require 'globalhotkeys'#Since 0.2.0
#require 'rghk'#for older version
kb=GlobalHotKeys::KeyBinder.new
kb.bind(GlobalHotKeys::KeyVal.from_name('a'), GlobalHotKeys::Modifier::CONTROL_MASK){puts 'Binded'}
#GlobalHotKeys::KeyVal.from_name function is implemented since 0.2.0
kb.unbind
La dernière version de rghk, pas encore disponible sous debian, apporte des changements importants :
l'appel à require a été modifié,
la possibilité d'obtenir la « valeur d'une touche clavier » depuis une chaîne de caractère.
Si vous voulez tester le lecteur audio nommé ZiK, un paquet debian est disponible. Les instructions pour l'installation du paquet sont disponibles sur le wiki.
Pour les utilisateurs d'Ubuntu un ppa permet une installation aisée de ZiK sous ubuntu. L'installation est détaillée sur le wiki.
N'hésitez pas à faire part de vos impressions.
Vous devez être identifié pour poster un commentaire.
Bonjour.
ZiK utilise intensivement le thème de l'utilisateur. Seules quelques images sont fournies directement par le lecteur audio.
J'aimerai personnaliser ces dernières. Cependant, je n'ai pas le talent nécessaire pour créer ces images. Je lance donc un appel à contribution.
Pour l'instant six images sont concernées. On peut les apercevoir au niveau du bouton qui permet de changer de vue. Il faudrait donc des images représentant :
la vue navigateur,
la vue liste de lecture,
la vue générale (navigateur et liste de lecture),
la vue compacte (navigateur et liste de lecture cachés),
la vue cd,
la vue radio.
Par la suite, trois autres images devraient être nécessaires. Elles représenteront :
un dossier,
un fichier audio,
une liste de lecture (fichiers m3u, pls ou xspf...).
Elles seront visibles depuis la partie navigateur.
J'aimerai que les images soient au format svg et sous une licence (Creative Commons ?) permettant leur distribution avec les sources de ZiK ainsi qu'une intégration facile à des distributions linux (ex : debian).
N'hésitez pas à me contacter si vous avez des questions où si vous êtes intéressés pour contribuer à ZiK.
Je remercie d'avance toute personne me contactant à ce sujet.
Vous devez être identifié pour poster un commentaire.
Afin de pouvoir définir des raccourcis clavier globaux, ZiK utilise rghk. rghk est une bibliothèque ruby qui permet de définir raccourcis clavier pour une application graphique fonctionnant même si la fenêtre de l'application n'est pas active.
rghk est maintenant intégré au projet debian. Le paquet source se nomme libglobalhotkeys-ruby. Je ne pose la question si je dois renommer rghk (rglobalhotkeys, ruby-globalhotkeys ?).
Suite à cette première contribution à debian, je compte inclure ZiK (en version 0.15 ?).
Vous devez être identifié pour poster un commentaire.
ZiK version 0.14 est sorti. De nombreuses modifications sont incluses dans cette version.
En sélectionnant l'option session unique dans vos préférences, les fichiers ouverts depuis une application externe (par exemple nautilus) sont ajoutés à la liste de lecture au lieu d'être ouvert dans une nouvelle fenêtre.
Un nouveau module permettant l'édition automatique de vos tags via musicbrainz.org fait son apparition.
La modification des configurations des modules est maintenant permise même si le module n'est pas chargé.
L'affichage de la durée des pistes fonctionne maintenant pour presque tous les formats audio.
Amélioration du support du format xspf
Ajout possible de liste de lecture depuis une application externe.
Résolution de bugs.
Mise à jour de la traduction.
ZiK fonctionne maintenant sous ruby 1.9. De nombreux bugs concernant ce point ont supprimés.
N'hésitez pas à faire part de vos remarques sur le forum ou à commenter ce billet.
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