Naissance aujourd'hui de Tikka, un nouveau client!

Un modérateur pourrait-il créer une nouvelle sous-catégorie Tikka dans la catégorie client.
D’avance merci !

1 Like

C’est fait !

(c’est la première fois que je touche aux catégories, j’ai pu sauter un truc)

la description de la catégorie ?

en regardant, les clients sont pas classé par catégorie, mais par étiquettes …

Elle existe, mais je ne peux pas la choisir pour mon sujet… Problème de permissions ?

Les autres catégories de clients n’ont pas toutes une description, et puis à part dire que la catégorie Clients::Tikka est à propos du client Tikka…

Elle a pourtant les mêmes paramètres que les autres, et tout le monde a le droit d’y poster. C’est bizarre.

Non puisqu’en tant qu’admin tu as tous les droits. Il fallait juste recharger la page du sujet (ctrl+F5) pour forcer discourse à reload la liste des catégories :wink:

3 Likes

Des nouvelles de Tikka

Tikka est en « développement intensif » comme disent les anglais.

J’ai adopté une architecture hexagonale (simplifiée).

La partie database et config sur disque sont des adaptateurs.
L’ application utilise ces adaptateurs et fournit des ports à l’interface graphique.

L’interface graphique est découplée de l’application même si c’est sa boucle d’évènement qui est lancée au module de démarrage.

Tikka utilise une petite database sqlite pour la persistence disque (une par monnaie : g1 et g1-test).
Donc il est multi-monnaie (duniter only !) mais c’est à ajouter (facilement) par le développeur.
Le choix de la monnaie se fait en un clique dans la config.

Il gère le multi-compte (on travaille sur un seul compte à la fois cependant).
On peut :

  • ajouter un compte créer ailleurs en donnant simplement la clef publique ou « clef_publique:checksum »
  • créer un compte auto généré avec un mnémonique (protocole DUBPMnemonic)

Il est localisé en français et anglais (configurable dans la config, mais on doit relancer…).

Contributions

J’ai repensé complètement l’interface. Pas de liste de compte permanente, mais en popup.

Quand je serai confiant sur l’architecture choisie et sur l’interface je publierai le projet sur notre GitLab bien évidemment.

To do

  • Sauvegarde en fichier DEWIF (Tikka mémorise le chemin pour le charger en cas de signature).
  • Chargement de fichier DEWIF pour ajouter un compte ou pour le lier à un compte existant (là aussi, Tikka ne chargera le fichier qu’en cas de signature de document).
  • Ajouter la licence dans les deux langues supportées.
  • Publication sur GitLab et appel à contributions pour les pythonistes.
  • Connection à GVA pour afficher plein de choses et faire plein de choses.
  • Support du p2p (nécessite une contribution à GVA).

Thèmes pour l’interface :sleepy:

J’ai échoué à implémenter les thèmes dans Tkinter (rien de prévu).
J’ai voulu basculer sur ttk qui gère les thèmes, mais il ne gère pas tous les widgets, donc faut se coltiner une partie à la main… Sale.
PySimpleGUI gère les thèmes, mais je n’aime pas la documentation. Et je n’ai pas le courage maintenant de migrer sur une nouvelle bibliothèque.
On verra donc ça bien plus tard, si quelqu’un se sent de convertir le code tkinter en PySImpleGUI pour gérer les thèmes.

8 Likes

Top!

Je sais sais pas si PySimpleGUI permet de faire tout ce que tu veux, tout ce que je sais c’est que pour faire une petite interface avec tkinter qui prends 300 lignes de codes, tu feras plus jolie avec PySimpleGUI grâce aux thèmes dispo et pour seulement 20 lignes de codes …

Je suis plongé dans Flutter, qui est en train de me casser la tête, sans ça je me serais lancé là dedans ^^


En tout cas j’ai hâte de tester les early version quand il y aura la gestion DEWIF et que le code sera publié :slight_smile:

2 Likes

Bon ça avance, mais j’ai un eu un problème…

J’ai atteint les limites de Tkinter pour ce projet.

  • Limite des listes de sélection : il me fallait en fait un tableau sélectionnable, avec plusieurs cellules par lignes pour afficher des zolis zîcones. Ce n’est pas possible avec Tkinter. Il faut le faire à la main.
  • Thème : Pas de support des thèmes.
  • Problème dans la barre de menu : celle-ci se désactive et il faut cliquer ailleurs dans la fenêtre pour la réactiver… Pas eu la patience de chercher pourquoi.

J’ai donc pris la décision de changer de cadre d’application pour l’interface.

J’ai testé PysimpleGUI, mais j’ai obtenu la même chose que Tkinter avec les mêmes limites (puisque c’est une surcouche à Tkinter).
Les thèmes fonctionnaient, mais étaient top moches…

J’ai testé Kivy. C’est très bien, mais c’est orienté jeu/mobile. Pas du tout desktop. Et comme Python sur mobile, c’est possible, mais franchement pas conseillé du tout (à moins d’avoir une batterie de Tesla… et un mobile de compète) et que c’est Ğecko et Cesium qui sont déjà sur ce support, j’ai renoncé. Le tuto permet de faire un jeu de Pong en quelque minutes, puisque c’est du OpenGL derrière, on a des sprites et de la 3d, avis aux amateurs de jeu desktop en Python !.

Finalement, j’ai testé wxPython. Et je suis tout à fait satisfait pour l’instant. J’ai la puissance de feu de Qt5, mais avec un look adapté au système d’exploitation. Ainsi, pas de thèmes, car l’application prend le thème de votre bureau. C’est vraiment un gros plus pour s’intégrer dans tous les OS. Je pense qu’une fois la version Linux stable, je ferai des packages Windows et MacOS. Ça n’a pas l’air trop dur.

Capture du 2021-01-25 14-53-05

Capture du 2021-01-25 15-16-03

Capture du 2021-01-25 15-16-27

La bonne nouvelle est que l’architecture du code de l’interface n’est pas modifiée (c’est la même philosophie pour Tkinter et wxPython).

Le nom Tikka

Vous allez me dire que le nom ne rime plus à rien (Tikka → Tkinter) et vous aurez raison. Mais tant pis, il sonne bien, je le garde… :wink:

Utilisateurs cibles de Tikka

J’ai réfléchi à la cible d’une application de bureau. C’est important car cela permet de savoir quoi implémenter dans l’application.
Je veux que l’application soit très « illustrée », avec des icônes et des images très présentes pour que son approche soit ludique et simple.
Mais je veux qu’elle ait un plus par rapport à Cesium et Ğecko. Je pense qu’une fois les fonctions de bases implémentées, je vais me pencher sur les besoins des commerçants. Pourquoi pas ajouter des fonctions de comptabilité (relative si possible) et des graphiques permettant d’avoir des dates précises pour la dévaluation d’une trésorerie en relatif au dessus de la moyenne par exemple. A voir…

To do

Sauvegarde en fichier DEWIF (Tikka mémorise le chemin pour le charger en cas de signature).
Chargement de fichier DEWIF pour ajouter un compte ou pour le lier à un compte existant (là aussi, Tikka ne chargera le fichier qu’en cas de signature de document).
Ajouter la licence Ğ1 dans les deux langues supportées.
Refaire l’interface avec wxPython (en cours)
Connection à GVA pour afficher les transactions
Publication sur GitLab et appel à contributions pour les pythonistes.
Support du p2p (nécessite une contribution à GVA).

9 Likes

Génial, cette TODO me parait super :slight_smile:

1 Like

En plus, wxPython est accessible aux lecteurs d’écran ! (ce qui n’est vraiment pas le cas de toutes les GUI)

3 Likes

3 messages ont été scindés en un nouveau sujet : Propositions de logo pour Tikka

On en est où de Tikka ?

Je fais une pause, car j’attends la requête des Heads et des Peers dans GVA.

J’espère que le Hackathon permettra de coder ce qui, pour moi, est une priorité.
Il faut bien réaliser que l’on a un réseau p2p, mais aucun client ne l’est. :wink:

2 Likes

@vit a ouvert un ticket pour ça le 7 décembre :

Le 9 décembre (2 jours après), j’ai réalisé le travail de fond d’indexation en base de donnée. J’ai fait le plus dur, il ne reste plus qu’à coder le resolver GVA et la fonction de lecture du DbsReader.

Comme je l’ai indiqué dans le ticket :

This easy issue is an excellent 1st potential contribution to accompany a new contributor on GVA, I prefer to stay on the complicated things (if I do the few simple things to do I will never succeed in getting contributors in).

Il me faut justement un sujet par l’atelier GVA du hackathon, ça peut être ce ticket :slight_smile:

Sachant que le but c’est que ce ne soit pas moi que le fasse, mon but est de faire entrer de nouveaux contributeurs pour ne plus être seul sur Duniter. Depuis peu @tuxmain fais des contributions régulières, merci beaucoup à lui, c’est le 1er, j’espère qu’il continuera et que d’autres suivront :smiley:

4 Likes

Si tu veux toujours le faire, tu peux regarder ce commit qui ajoute une requête simple :

Ça permet de voir facilement quels sont les endroits à modifier…

1 Like

Merci @tuxmain !

J’ai déjà regardé tes commits, mais j’ai un peu de mal à les transposer aux heads. Il semble y avoir des conversions de types json/database pour les Heads que je ne maîtrise pas. Serais-tu ok pour m’aider sur un des requêtes au hackathon ? Puis j’essaierai de faire la seconde seul… :wink:

1 Like

Ok, mais je ne serai présent que du 2 au 5. (mais à distance les autres jours) :slight_smile:

Par contre il n’y a pas de conversion JSON à faire, on a directement des struct DunpHeadDbV1 dans la db DunpV1.

Toutes les dbs dans duniter-dbs fonctionnent un peu pareil, tu peux copier le code d’une fonction qui utilise par exemple BcDb ou CmDb, remplacer les noms, ajouter les imports s’il n’est pas content, ça aide un peu.

2 Likes

@vit existe t’il un loqo pour Tikka ? :slight_smile:

Oops, pas partagé, mais oui, je viens de l’ajouter au fil dédié :

2 Likes