[grisbi-bugs] [Grisbi 0002090]: Avoir des chemins relatifs pour les fichiers d'icones

Grisbi Bug Tracker bugtracker at grisbi.org
Dim 14 Mar 12:33:47 CET 2021


The following issue has been RESOLVED. 
====================================================================== 
https://www.grisbi.org/bugsreports/view.php?id=2090 
====================================================================== 
Reported By:                LudovicRousseau
Assigned To:                LudovicRousseau
====================================================================== 
Project:                    Grisbi
Issue ID:                   2090
Category:                   Main
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     resolved
OS:                         Tous(All) 
Unstable Impact:            Yes 
Version OS:                  
Version GTK:                 
Resolution:                 fixed
Fixed in Version:           development (git)
====================================================================== 
Date Submitted:             2021-01-16 13:04 CET
Last Modified:              2021-03-14 12:33 CET
====================================================================== 
Summary:                    Avoir des chemins relatifs pour les fichiers
d'icones
Description: 
L'idée est d'avoir un chemin de fichier d'icône qui soit relatif au fichier
.gsb qui utilise l'icône.
Comme ça le fichier .gsb et les icônes peuvent être au même endroit et
utilisés par plusieurs système (Linux, macOS, etc.) en partage de fichiers

Steps to Reproduce: 
Assigner une icône à un compte.
Le fichier .gsb contient un truc du genre :
       
Path_icon="/Applications/Grisbi.app/Contents/Resources/share/pixmaps/grisbi/gtk-about-16.png"


Additional Information: 
https://listes.grisbi.org/pipermail/devel/20210116/003208.html

Peut-être que la fonction g_file_get_relative_path () peut nous donner
facilement un chemin relatif.
https://developer.gnome.org/gio/stable/GFile.html#g-file-get-relative-path
====================================================================== 

---------------------------------------------------------------------- 
 (0005893) pbiava (administrator) - 2021-01-16 13:52
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5893 
---------------------------------------------------------------------- 
Je pense qu'on confond deux choses : les icônes fixes de grisbi qui viennent
avec les sources et qui sont toujours accessibles et les icônes des comptes qui
peuvent être situées n'importe où sur le disque de l'utilisateur car il les
choisit dans les préférences.

L'idée que je m'en fait, c'est de copier les icônes sélectionnées dans un
sous-répertoire du répertoire contenant le fichier de comptes et de ne
mémoriser dans le fichier de comptes que le nom de l'icône. On résoudra ainsi
la partie partage des fichiers de compte.

C'est vrai qu'avant on mémorisait les icônes dans le fichier de comptes ce qui
était plus simple mais finissait par prendre beaucoup de place. 

---------------------------------------------------------------------- 
 (0005894) LudovicRousseau (administrator) - 2021-01-16 14:52
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5894 
---------------------------------------------------------------------- 
C'est une solution.
Attention à ne pas écraser un dossier ou fichier existant en copiant l'icône
sélectionné.
Que faire si l'utilisateur choisi l'icône banque.png et qu'il existe déjà un
fichier banque.png dans le sous-dossier des icônes ?
Si les 2 fichiers banque.png sont égaux c'est facile. Mais si ils sont
différents ? Juste un message d'erreur et l'utilisateur renomme son icône ? 

---------------------------------------------------------------------- 
 (0005895) pbiava (administrator) - 2021-01-16 15:12
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5895 
---------------------------------------------------------------------- 
Bonne question.
Aujourd'hui l'option "Path_icon" contient le chemin de l'icône par exemple
Path_icon="/home/pierre/Images/icones/logo_CM2.png". Plusieurs comptes pouvaient
avoir la même icône ce n'était pas gênant car l'utilisateur gérait son
répertoire d'image.

Avec cette nouvelle façon de faire je vois deux possibilités :
- On fait de même dans le répertoire img et les icônes peuvent s'accumuler au
fur et à mesure où on les ajoute.
- On associe l'icône au compte en ajoutant dans le nom de l'icône le nom du
compte. Dans ce cas , si on change d'icône pour un compte, on pourra sans
erreur supprimer l'icône concernée. Au final on aura au plus , autant
d'icônes que de comptes.
Dans le premier cas, pour éviter la prolifération des icônes, on peut faire
un test d'utilisation de l'icône modifiée et la supprimer si elle n'est plus
utilisée. 

---------------------------------------------------------------------- 
 (0005925) pbiava (administrator) - 2021-01-19 21:14
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5925 
---------------------------------------------------------------------- 
Bon j'ai poussé sur mon fork une version de ce pourrait être cette
fonctionnalité. Ça utilise une nouvelle option située dans l'onglet Fichiers.

Ce n'est pas terminé donc dis moi si tu peux faire un package provisoire avec
ça.

Il faudrait faire un test avec un serveur externe pour voir si il y aurait des
erreurs surtout en terme de lecture et d'écriture..  Actuellement je ne gère
pas les erreurs. 

---------------------------------------------------------------------- 
 (0005926) pbiava (administrator) - 2021-01-20 07:35
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5926 
---------------------------------------------------------------------- 
Bon la nuit portant conseil, ce qui ne va pas fonctionner c'est le stockage de
l'adresse de l'icône dans le fichier.

Il faut que je modifie ça.
[EDIT] Il faut que je modifie ça avant tout

 

---------------------------------------------------------------------- 
 (0005927) LudovicRousseau (administrator) - 2021-01-20 08:52
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5927 
---------------------------------------------------------------------- 
Un installeur macOS est facile à faire.
Dis moi quand le code est prèt. 

---------------------------------------------------------------------- 
 (0005928) pbiava (administrator) - 2021-01-20 18:05
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5928 
---------------------------------------------------------------------- 
J'ai poussé la correction. Ça fonctionne sur une clef USB et si on déplace le
fichier et le dossier "icons" tout se passe comme il faut. Par contre avec un
réseau, je ne sais pas comment ça va se passer. 

---------------------------------------------------------------------- 
 (0005929) LudovicRousseau (administrator) - 2021-01-20 20:59
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5929 
---------------------------------------------------------------------- 
Le binaire pour macOS est disponible
http://ludovic.rousseau.free.fr/softwares/grisbi/

J'ai eu un plantage à la première exécution juste en lançant Grisbi. Bien
sûr ça ne le fait plus. 

---------------------------------------------------------------------- 
 (0005930) LudovicRousseau (administrator) - 2021-01-20 21:46
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5930 
---------------------------------------------------------------------- 
Pourquoi imposer à l'utilisateur de déplacer/copier lui même les icônes ? En
cas de conflit ou d'erreur je veux bien mais si rien n’empêche Grisbi de le
faire c'est dommage.
Je ne comprenais pas pourquoi si je clique sur l'option "Put user icons...",
j'ai un message et l'option est de nouveau décochée.

Surtout si le texte est "Put..." et pas "Use user icons from...". Si je demande
à Grisbi de *mettre* les icônes dans une dossier je m'attends à ce qu'il le
fasse.
Sur macOS l'icône peut être dans le bundle de Grisbi donc difficilement
accessible pour un utilisateur normal. 

---------------------------------------------------------------------- 
 (0005931) pbiava (administrator) - 2021-01-21 06:26
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5931 
---------------------------------------------------------------------- 
Ça je peux le modifier facilement puisque c'est ce que je fais quand on
sélectionne directement l'icône pour un compte. Dis moi d'abord comment ça se
comporte avec des icônes qui sont dans un répertoire multi utilisateur et
éventuellement sur un disque externe. 

Pour le plantage initial c'est vraiment un bug de grisbi, sûrement un problème
d'initialisation d'une variable mais laquelle ? 

---------------------------------------------------------------------- 
 (0005932) LudovicRousseau (administrator) - 2021-01-21 09:22
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5932 
---------------------------------------------------------------------- 
Le besoin n'est pas un répertoire multi utilisateur. On risque d'avoir des
problème de droits d'accès si l'icône est lisible par l'utilisateur A mais
pas par B.
Le besoin est qu'un fichier de compte soit utilisable depuis plusieurs machines
et en gardant les icônes.

J'ai testé avec un fichier de compte en local et dans une partition différente
et ça marche.
J'ai copié mon fichier .gsb ailleurs et Grisbi n'a pas râlé qu'il ne trouvait
plus l'icône. À changer.

Puisque les icônes sont liées à un fichier de compte je propose que le
dossier des icônes soit nommé truc.icons pour un fichier truc.gsb. L'idée 
est qu’ils soient côté à côte sur disque quand on liste les fichiers
triés par nom. 

---------------------------------------------------------------------- 
 (0005933) pbiava (administrator) - 2021-01-21 16:10
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5933 
---------------------------------------------------------------------- 
J'avais compris qu'il y avait aussi le besoin, qu'une personne et son conjoint
sur deux machines différentes accèdent au même fichier de compte sur un
disque partagé.
Pour moi quand on met un fichier dans un répertoire multi-utilisateur, c'est
que tous les utilisateurs doivent pouvoir le lire. Il y a effectivement une
gestion des droits à effectuer qui ne me semble pas être du ressort de grisbi.
Cette option doit être disponible avec une gestion d'erreur si il y a erreur.

Quand tu dis ailleurs c'est où ? quel est le format de l'adresse du fichier ?

Sur l'histoire du nom c'est à double tranchant. Si tu n'as qu'un fichier de
comptes cela peut se comprendre. Si tu en as plusieurs tu vas dupliquer
inutilement les icônes. 

---------------------------------------------------------------------- 
 (0005934) LudovicRousseau (administrator) - 2021-01-21 17:57
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5934 
---------------------------------------------------------------------- 
Au départ j'ai :
/machin/truc.gsb
/machin/icons/mon_icone.png
mon_icone.png est utilisée par truc.gsb et tout va bien.

Ensuite je déplace truc.gsb dans le dossier /bidule/
Grisbi ne trouve plus l'icone mon_icone.png puisqu'il la cherche dans
/bidule/icons/. Grisbi n'indique aucun message d'erreur.

Oui, avoir plusieurs dossier d'icones oblige à dupliquer les fichiers.
Mais si les fichiers .gsb sont dans des dossiers différents les icones seront
déjà dupliqués.
Si vraiment la place disque est importante c'est toujours possible d'utiliser
des lien entre les fichiers des icones pour ne pas dupliquer les fichiers. 

---------------------------------------------------------------------- 
 (0005935) pbiava (administrator) - 2021-01-21 18:21
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5935 
---------------------------------------------------------------------- 
Ok je vais ajouter le message d'erreur. Pour ce qui concerne l'erreur elle est
normale car si on change de répertoire le fichier de comptes il faut aussi
changer de place le répertoire icons.

Mon propos concernait juste le cas où tu as plusieurs fichiers de compte dans
le même répertoire. dans ce cas tu dupliques les mêmes icônes dans le
sous-répertoire icons
Faire des liens me parait contraire au principe de mobilité.

Je vais regarder ça. 

---------------------------------------------------------------------- 
 (0005936) pbiava (administrator) - 2021-01-22 09:19
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5936 
---------------------------------------------------------------------- 
Bon là je pense que j'ai à peu prêt tout fait. Il faudra encore traduire les
messages et faire un peu de ménage. 

---------------------------------------------------------------------- 
 (0005937) LudovicRousseau (administrator) - 2021-01-22 10:22
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5937 
---------------------------------------------------------------------- 
- j'ai l'option "Put user icons..." sélectionnée
- le dossier icons n'existe pas encore (ou n'existe plus)
- je sélectionne une icone pour un compte
=> le dossier icons n'est pas crée et l'icone n'est pas  copiée dedans

à la prochaine ouverture du fichier de compte j'ai une erreur que l'icône
n'est pas trouvée. 

---------------------------------------------------------------------- 
 (0005938) pbiava (administrator) - 2021-01-22 12:46
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5938 
---------------------------------------------------------------------- 
J'ai fait une mauvaise interprétation de la commande g_file_copy qui dit  en
particulier :

If the source is a directory and the target does not exist, or
G_FILE_COPY_OVERWRITE is specified and the target is a file, then the
G_IO_ERROR_WOULD_RECURSE error is returned

J'en ai conclu que le répertoire était créé mais ce n'est pas le cas. 

---------------------------------------------------------------------- 
 (0005939) pbiava (administrator) - 2021-01-22 14:26
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5939 
---------------------------------------------------------------------- 
J'ai corrigé en vérifiant que le répertoire existe sinon je le crée. Ça
devrait résoudre une partie du problème.
Je me demande si à l'ouverture suivante de grisbi et si on ouvre les
préférences, je ne devrais pas remettre à zéro l'option "put  user icons..."
  si le répertoire "icons" n'existe ou peut-être juste emmètre un message. 

---------------------------------------------------------------------- 
 (0005940) LudovicRousseau (administrator) - 2021-01-22 17:33
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5940 
---------------------------------------------------------------------- 
Je crois qu'il manque des #include

gsb_select_icon.c:696:14: error: use of undeclared identifier 'S_IRUSR'
                int mode = S_IRUSR | S_IWUSR | S_IXUSR;
                           ^
gsb_select_icon.c:696:24: error: use of undeclared identifier 'S_IWUSR'
                int mode = S_IRUSR | S_IWUSR | S_IXUSR;
                                     ^
gsb_select_icon.c:696:34: error: use of undeclared identifier 'S_IXUSR'
                int mode = S_IRUSR | S_IWUSR | S_IXUSR;
                                               ^
gsb_select_icon.c:698:3: warning: implicit declaration of function 'g_mkdir' is
      invalid in C99 [-Wimplicit-function-declaration]
                g_mkdir (icon_dir, mode);
                ^
gsb_select_icon.c:698:3: warning: this function declaration is not a prototype
      [-Wstrict-prototypes] 

---------------------------------------------------------------------- 
 (0005941) LudovicRousseau (administrator) - 2021-01-22 18:05
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5941 
---------------------------------------------------------------------- 
D'ailleurs je note que les github actions sur ton repo avaient aussi remonter
cette erreur.
https://github.com/pbiava/grisbi/actions/runs/503979371 

---------------------------------------------------------------------- 
 (0005942) pbiava (administrator) - 2021-01-22 22:38
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5942 
---------------------------------------------------------------------- 
Je n'ai plus ces erreurs dans mon code.

En effet il manque ça dans le code de gsb_select_icon.c () sur git 

#include <sys/stat.h>
#include <glib/gstdio.h> 

---------------------------------------------------------------------- 
 (0005943) LudovicRousseau (administrator) - 2021-01-23 15:37
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5943 
---------------------------------------------------------------------- 
Je ne vois pas l'intérêt d'avoir un seul dossier d'icônes si c'est pour que
le même icône banque.png soit renommer compte1_gsb-banque.png et
compte2_gsb-banque.png si 2 fichiers Grisbi utilisent le même icône.

Tu ne voulais pas avoir le dossier d'icône truc.icon pour un fichier truc.gsb
pour ne pas dupliquer les fichiers d'icônes.
Mais avec ta solution les fichiers d'icônes SONT dupliqués et le nom du
dossier d'icônes n'a AUCUN rapport avec le nom du fichier Grisbi.

Un utilisateur qui voit un dossier icons risque de l'effacer ne sachant pas à
quoi il sert. Je maintient l'idée de l'appeler truc.icons pour un fichier
Grisbi truc.gsb. 

---------------------------------------------------------------------- 
 (0005944) pbiava (administrator) - 2021-01-23 19:26
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5944 
---------------------------------------------------------------------- 
On ne s'est pas compris. donc je corrige.

[Edit] en terme de duplication d'icône c'est pareil, si tu as 3 fichiers de
comptes et 4 icônes identiques de banque par fichier tu auras soit un
répertoire avec 12 icônes soit 3 répertoires avec chacun 4 icônes. Dans ma
première version on avait juste 1 répertoire avec 4 icônes.

C'est peut-être plus simple et rapide en terme d'exécution de nommer les
répertoires.

 

---------------------------------------------------------------------- 
 (0005945) pbiava (administrator) - 2021-01-23 21:21
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5945 
---------------------------------------------------------------------- 
C'est fait. 

---------------------------------------------------------------------- 
 (0005946) LudovicRousseau (administrator) - 2021-01-23 21:42
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5946 
---------------------------------------------------------------------- 
Ça me semble bien.
Je propose de voir avec Gérald Niel sur la liste si ça lui convient aussi.
C'est lui qui avait le besoin à la base. 

---------------------------------------------------------------------- 
 (0005947) pbiava (administrator) - 2021-01-24 06:04
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5947 
---------------------------------------------------------------------- 
OK.

Tu donnes un nom particulier à ton package ? 

---------------------------------------------------------------------- 
 (0005949) LudovicRousseau (administrator) - 2021-01-24 13:45
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5949 
---------------------------------------------------------------------- 
Grisbi-2.1.0.dmg dans
https://sourceforge.net/projects/grisbi/files/grisbi%20unstable/2.1.x/2.1.0/ 

---------------------------------------------------------------------- 
 (0005950) pbiava (administrator) - 2021-01-24 15:36
 https://www.grisbi.org/bugsreports/view.php?id=2090#c5950 
---------------------------------------------------------------------- 
Super.

On fera un package si c'est OK 

---------------------------------------------------------------------- 
 (0006122) LudovicRousseau (administrator) - 2021-03-14 12:33
 https://www.grisbi.org/bugsreports/view.php?id=2090#c6122 
---------------------------------------------------------------------- 
Gérald a confirmer que ça devrait répondre à son besoin.
https://listes.grisbi.org/pipermail/devel/2021-February/003231.html 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2021-01-16 13:04 LudovicRousseauNew Issue                                    
2021-01-16 13:04 LudovicRousseauStatus                   new => assigned     
2021-01-16 13:04 LudovicRousseauAssigned To               => LudovicRousseau 
2021-01-16 13:04 LudovicRousseauAdditional Information Updated                  
 
2021-01-16 13:52 pbiava         Note Added: 0005893                          
2021-01-16 14:52 LudovicRousseauNote Added: 0005894                          
2021-01-16 15:12 pbiava         Note Added: 0005895                          
2021-01-19 21:14 pbiava         Note Added: 0005925                          
2021-01-20 07:32 pbiava         Note Added: 0005926                          
2021-01-20 07:35 pbiava         Note Edited: 0005926                         
2021-01-20 08:52 LudovicRousseauNote Added: 0005927                          
2021-01-20 18:05 pbiava         Note Added: 0005928                          
2021-01-20 20:59 LudovicRousseauNote Added: 0005929                          
2021-01-20 21:46 LudovicRousseauNote Added: 0005930                          
2021-01-21 06:26 pbiava         Note Added: 0005931                          
2021-01-21 09:22 LudovicRousseauNote Added: 0005932                          
2021-01-21 16:10 pbiava         Note Added: 0005933                          
2021-01-21 17:57 LudovicRousseauNote Added: 0005934                          
2021-01-21 18:21 pbiava         Note Added: 0005935                          
2021-01-22 09:19 pbiava         Note Added: 0005936                          
2021-01-22 10:22 LudovicRousseauNote Added: 0005937                          
2021-01-22 12:46 pbiava         Note Added: 0005938                          
2021-01-22 14:26 pbiava         Note Added: 0005939                          
2021-01-22 17:33 LudovicRousseauNote Added: 0005940                          
2021-01-22 18:05 LudovicRousseauNote Added: 0005941                          
2021-01-22 22:38 pbiava         Note Added: 0005942                          
2021-01-23 15:37 LudovicRousseauNote Added: 0005943                          
2021-01-23 18:56 pbiava         Note Added: 0005944                          
2021-01-23 19:26 pbiava         Note Edited: 0005944                         
2021-01-23 21:21 pbiava         Note Added: 0005945                          
2021-01-23 21:42 LudovicRousseauNote Added: 0005946                          
2021-01-24 06:04 pbiava         Note Added: 0005947                          
2021-01-24 13:45 LudovicRousseauNote Added: 0005949                          
2021-01-24 15:36 pbiava         Note Added: 0005950                          
2021-03-14 12:33 LudovicRousseauStatus                   assigned => resolved
2021-03-14 12:33 LudovicRousseauResolution               open => fixed       
2021-03-14 12:33 LudovicRousseauFixed in Version          => development (git)
2021-03-14 12:33 LudovicRousseauNote Added: 0006122                          
======================================================================



Plus d'informations sur la liste de diffusion bugsreports