Bonjour à tous,
Ce journal s'inscrit dans la série des journaux TapTempo. Je vous présente : TapTempo en Slint !
Pour ceux qui ne connaissent pas encore Slint, c’est un toolkit pour créer des interfaces graphiques natives. Je suis l'un des développeurs, et j’en ai déjà parlé dans ce journal et cette dépêche.
Dans ce portage de TapTempo, j'ai décidé de tout coder directement en Slint. Normalement, Slint sert principalement à construire l'interface utilisateur (UI), et la logique du programme est écrite dans le langage de programmation.
Mais pour ce journal, j'ai intégré toute la logique directement en Slint.
Pour réaliser cela, j'ai détourné la fonction animation-tick()
pour mesurer le temps. Ce n’est pas la méthode la plus orthodoxe, je vous l'accorde, mais… ça fonctionne !
Voici le code :
import { Slider, HorizontalBox } from "std-widgets.slint";
export component TapTempo inherits Window {
property <int> touch-count;
property <[duration]> last_samples: [0ms, 0ms, 0ms, 0ms, 0ms, 0ms, 0ms, 0ms, 0ms, 0ms];
property <int> sample-size: 5;
property <int> bpm;
preferred-height: 200px;
preferred-width: 600px;
forward-focus: fs;
VerticalLayout {
padding: 0.5rem;
text := Text {
text: @tr("Hit enter key for each beat");
wrap: word-wrap;
horizontal-alignment: left;
vertical-alignment: center;
font-size: 2rem;
vertical-stretch: 1;
}
HorizontalBox {
spacing: 1rem;
Text {
text: @tr("Sample size: {}", sample-size);
vertical-alignment: center;
}
Slider {
value: sample-size;
minimum: 1;
maximum: last_samples.length;
changed(value) => {
touch-count = 0;
text.text = @tr("Hit enter key for each beat");
sample-size = value;
fs.focus();
}
}
}
}
fs := FocusScope {
key-pressed(e) => {
if (e.text == "\n" || e.text == " ") {
if (touch-count == 0) {
text.text = @tr("Hit enter key one more time to start bpm computation...");
} else {
if (touch-count < sample-size) {
bpm = 60s / ((animation-tick() - last_samples[0]) / touch-count);
} else {
bpm = 60s / ((animation-tick() - last_samples[mod(touch-count, sample-size)]) / sample-size);
}
text.text = @tr("Tempo: {} bpm", bpm);
}
last_samples[mod(touch-count, sample-size)] = animation-tick();
touch-count += 1;
return accept;
} else if (e.text == "q") {
touch-count = 0;
bpm = 0;
text.text = @tr("Bye Bye!");
return accept;
}
reject
}
}
}
Et si vous voulez essayer, vous pouvez le faire directement en ligne grâce à SlintPad, notre éditeur/preview en ligne.
Lien vers SlintPad
# slint
Posté par devnewton 🍺 (site web personnel) . Évalué à -10 (+4/-18).
C'est dommage que slint ne soit pas vraiment libre (il y a Pricing sur la page d'accueil) !
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: slint
Posté par Gof (site web personnel) . Évalué à 10 (+14/-0).
Depuis quand un logiciel libre ne peut-il pas être vendu ? 😉 Slint est sous licences multiples, dont la GPL, et reste donc entièrement libre.
[^] # Re: slint
Posté par devnewton 🍺 (site web personnel) . Évalué à -5 (+3/-11).
J'applique des heuristiques pour éviter de perdre du temps :-)
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: slint
Posté par steph1978 . Évalué à 10 (+11/-0).
J'appelle pas ça une heuristique, j'appelle ça de la flemme.
heuristique : site web -> logo github en haut à droite -> voir si le repo propose bien à priori le code du produit et pas des SDK, ou juste une gestion d'issues -> chercher License
[^] # Re: slint
Posté par barmic 🦦 . Évalué à 0 (+1/-3). Dernière modification le 07 novembre 2024 à 07:32.
La flemme c'est de sauter sur des conclusions hâtives, mais ensuite colporter cette hypothèse comme il le fait c'est du FUD, de la fake news, etc.
C'est vraiment un comportement que je ne comprends pas qu'il soit admissible ici.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: slint
Posté par Jean-Philippe Garcia Ballester (site web personnel) . Évalué à 4 (+2/-0).
Personnellement je l'ai pris comme un bon gros troll. J'avoue que l'absurdité du raccourci m'a fait rire.
[^] # Re: slint
Posté par devnewton 🍺 (site web personnel) . Évalué à 2 (+1/-2).
J'ai juste oublié de mettre un smiley :-(
Sur le fond, il manque une manière de marquer clairement une solution comme vraiment libre sans entourloupe…
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: slint
Posté par Christophe . Évalué à 10 (+10/-1).
Et on appellerait ça une licence ?…
Il est important de dénoncer les solutions qui se prétendent "libres" mais ne le sont pas, mais il est tout aussi important de ne pas se planter quand on fait une telle accusation, sinon c'est contre-productif.
[^] # Re: slint
Posté par devnewton 🍺 (site web personnel) . Évalué à 6 (+4/-1).
Ce n'est pas si simple avec les produits qui ont une version ou un cœur opensource, mais seule la version entreprise avec tous les greffons privateurs n'est réellement utilisable en prod.
Il y a aussi les logiciels libres, mais avec des données privatrices ou qui dépendent de services dont le code n'est pas public…
Bref la licence ne suffit plus.
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: slint
Posté par Thomas Douillard . Évalué à 4 (+1/-0).
La FSF et l'OSI pourraient vendre des tampons "OSI approved" avec un audit (et des concours "élu meilleur logiciel de listage des fichiers dans un répertoire par un panel de développeurs")
[^] # Re: slint
Posté par barmic 🦦 . Évalué à 3 (+1/-0). Dernière modification le 07 novembre 2024 à 12:57.
Certaines fondations font ce genre de travail. Quand tu vois un projet qui est "Apache Bidule", tu as un certains nombre de garanties sur le projet la licence mais pas que (l'organisation du projet, un certains nombre d'aspect légaux, le fait que la disparition d'un contributeur principal ne fasse pas perdre tous les accès, un outillage standard au sein de la fondation, etc). D'ailleurs la fondation Apache par exemple a tout un aspect pour empêche un projet de se fermer.
Tu peux aller aussi loin que tu veux par ce genre de procédé. C'est je trouve super utile. Je trouve extrêmement dommage que GNU ne soit pas plus clair et cherche à aller plus loin. Il est difficile de savoir ce que signifie qu'un projet est GNU. Je n'ai trouvé que les prérequis pour être hébergé sur savannah (mais c'est pas clair que hébergé sur savannah == GNU) qui se contente globalement à dire qu'il faut être libre, sans dépendance à du code non libre https://savannah.gnu.org/register/requirements.php
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: slint
Posté par BAud (site web personnel) . Évalué à 2 (+1/-1).
comme un peu tout le monde qui commence à comprendre le comportement de devnewton< et le maniement du 2nd degré par barmic< :p (pfff yen a encore pas mal à tomber dans le panneau /o\)
# wiki TapTempo à jour
Posté par BAud (site web personnel) . Évalué à 6 (+4/-0). Dernière modification le 07 novembre 2024 à 17:00.
J'en ai profité pour actualiser le wiki pour TapTempo ainsi que trier la liste par ordre alphabétique du langage.
Peut-être ajouter une liste de candidats restants (et intéressants !). Yaurait àmha HyperCard du formidable Bill Atkinson qui manque, mais ça va être compliqué de trouver quelqu'un qui connaît encore :/ (et qui aurait un Apple IIGS ou un Macintosh en MacOS 9, j'ai pas ça dans notre fablab :/ peut-être en image QEMU ?)
J'ai bien trouvé liste de langages de programmation mais ça me semble un peu trop long /o\
[^] # Re: wiki TapTempo à jour
Posté par vitanix . Évalué à 1 (+0/-0).
Il y a aussi une implémentation en Java. Comme ça, les 10 langages les plus utilisés sont référencés.
[^] # Re: wiki TapTempo à jour
Posté par BAud (site web personnel) . Évalué à 2 (+0/-0).
rien ne t'empêche de l'ajouter : le wiki est éditable par tout inscrit :-)
# cool
Posté par ckiller . Évalué à 2 (+0/-0).
sympathique framework
PS: tu as un lien mort sur ta page https://slint.dev/demos
qui devrait mener sur
https://github.com/slint-ui/slint/tree/master/examples/weather-demo
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.