# Portage Grisbi en Cocoa



## bananafighter (1 Septembre 2008)

Bonjour,

Depuis quelques mois,  j'utilise Grisbi, un logiciel de gestion de compte bancaires gratuit (GPL). Il est très bien foutu, et il est écrit GTK/C pour des raisons de portabilité.

Qui dit GTK dit boutons gris et vilaines icones.
Grisbi est donc parfaitement utilisable, mais très "moche", surtout sous Mac OS. 

Comme je m'intéresse aussi depuis peu à la programmation en objective C, j'ai fait quelques essais de maquettes avec XCode qui rendent plutôt pas mal. Je ne connais pas encore trop les mécanismes Mac OS X et Cocoa, mais ça viens vite.

J'aimerai savoir si certains d'entre vous seraient intéressés par un portage du logiciel Grisbi en Cocoa/objective C.


Pour rappel voici l'adresse du site officiel de Grisbi :
http://www.grisbi.org/index.fr.html


----------



## tatouille (1 Septembre 2008)

bananafighter a dit:


> Bonjour,
> 
> Depuis quelques mois,  j'utilise Grisbi, un logiciel de gestion de compte bancaires gratuit (GPL). Il est très bien foutu, et il est écrit GTK/C pour des raisons de portabilité.
> 
> ...



quel est ton background en prog, methode de travail ecetera?

svn, diff,


----------



## bananafighter (1 Septembre 2008)

tatouille a dit:


> quel est ton background en prog, methode de travail ecetera?
> 
> svn, diff,



Tu serai intéressé ?

Perso je pense pas avoir encore le niveau suffisant pour attaquer seul de front, mais je ça va venir doucement. Niveau prog je touche un peu à tout. J'ai fait pas mal ce C/C++ et des langages objets comme java ou eiffel.
ça fait un certain temps que je n'ai pas développé partage de sources, alors cvs, svn, peu importe du moment que c'est pas sourcesafe (mauvais souvenirs).

En gros, j'ai des bases correctes, et je suis open.

PS: j'adore ton avatar. ça me rappelle des souvenirs, disons... des bons souvenirs.


----------



## bananafighter (2 Septembre 2008)

Après réflexion je pense que Sourceforge est une bonne solution pour le dépot de code source.
Apparemment ça fonctionne sans problème avec XCode (voir plus bas).
Par contre je n'ai encore jamais utilisé Sourceforge, donc si tu as déjà un peu d'expérience ça m'intéresse beaucoup !

J'ai fait une demande de création de projet sous le nom de iGrisbi.
_
_


----------



## tatouille (2 Septembre 2008)

bananafighter a dit:


> Après réflexion je pense que Sourceforge est une bonne solution pour le dépot de code source.
> Apparemment ça fonctionne sans problème avec XCode (voir plus bas).
> Par contre je n'ai encore jamais utilisé Sourceforge, donc si tu as déjà un peu d'expérience ça m'intéresse beaucoup !
> 
> ...



je te conseille google-code ou GNA


----------



## bananafighter (4 Septembre 2008)

Le projet iGrisbi est officiellement lancé. Avis aux amateurs de Cocoa et d'Objective C : la porte leur est grande ouverte !

Pour ce qui est du dépôt de sources, j'ai passé ma soirée et une partie de la nuit à essayer de comprendre les fonctionnements de CVS et SVN dans XCode. *Subversion *est largement mieux intégré et offre plus de souplesse d'utilisation; en plus c'est supporté par Sourceforge, donc c'est la solution que j'ai mis en place pour le projet.

Si ça vous intéresse, n'hésitez pas à faire un tour sur la page du projet.


----------



## Eul Mulot (4 Septembre 2008)

T'in, c'est balot, tu serais venu 3 mois avant j'aurais pu te filer un coup de main là dessus. J'avais l'année dernière créé un vulgaire soft Cocoatisé pour mes comptes, mais là je viens de reprendre les cours, et d'installer iCompta qui marche super bien et il est assez bien foutu.

J'utilisais aussi Grisbi sous Tiger, mais depuis que je suis sous Leo et que X11 merde (pas envie d'y toucher), j'ai opté pour la laziness de prendre iCompta.

En tout cas bonne chance pour ce projet, et je te tiendrais au courant si jamais j'ai le courage de me lancer là dedans (pas que je sois pas motivé de coder en sortant de cours mais bon  ).


----------



## bananafighter (4 Septembre 2008)

Eul Mulot a dit:


> T'in, c'est balot, tu serais venu 3 mois avant j'aurais pu te filer un coup de main là dessus. J'avais l'année dernière créé un vulgaire soft Cocoatisé pour mes comptes, mais là je viens de reprendre les cours, et d'installer iCompta qui marche super bien et il est assez bien foutu.
> 
> J'utilisais aussi Grisbi sous Tiger, mais depuis que je suis sous Leo et que X11 merde (pas envie d'y toucher), j'ai opté pour la laziness de prendre iCompta.
> 
> En tout cas bonne chance pour ce projet, et je te tiendrais au courant si jamais j'ai le courage de me lancer là dedans (pas que je sois pas motivé de coder en sortant de cours mais bon  ).



Merci pour ton soutient. En tout cas si tu as des idées pour une meilleure intégration Mac (spotlight, aide des menus, choix des controles...) fait moi signe !


----------



## Eul Mulot (4 Septembre 2008)

Okay, pas de problème. 

Déjà il va falloir repenser entièrement le système des onglets et de l'ajout/édition d'opérations qui était un peu merdique. 

Après le truc qui était sympa, c'était au niveau de l'auto complétion des champs lors de la saisie, et une fois le nom de l'opération saisie, le choix automatique du mode de paiement et du montant de la dernière opération ayant ce nom, je trouve ça bien pratique. (Genre pour les billets de trains ou les achats ou abonnements divers).

Ce qui manque aussi a Grisbi c'est un petit outil statistique graphique simple et paramétrable (pour une période donnée, pour certains types d'opérations etc..).

Ensuite intégrer spotlight et des véritables tri sur les colonnes ça c'est pas super compliqué avec les Binds, et ça permet un bon gain de temps pour l'utilisateur.

Element présent dans d'autres softs de compta, le fait qu'une opération soit validée ou non (influe sur le solde réel du compte en fait): du genre je fais un chèque le 3 Mars, je le rentre dans le iGrisbi au 3 Mars mais il n'est pas en état validé donc le solde n'en tient pas compte. 

Je sais que dans le "Money Organizer" que j'avais fait, j'avais inclus la date de l'opération, et la date de valeur, et en fait j'avais deux soldes (ouai j'aime bien faire des trucs chelouds avec mes sous). Donc en gros j'avais le solde réel courant, et si j'ajoutais par exemple mon loyer du mois suivant qui serait débité 3 jours plus tard, j'avais "en attente" dans le second sole le montant de mon loyer. Ça permettait de voir si y'avait des agios ou pas !

Si ça trouve ça existe surement sous Grisbi mais j'ai jamais cherché tellement ce soft me fait vomir visuellement parlant.

Si d'autres éléments me reviennent je t'en ferai part, MP moi si t'as questions ou si tu comprends pas ce que je veux dire (je m'exprime très mal en effet).


----------



## bananafighter (5 Septembre 2008)

En fait c'est un portage. Pour les idées je pensais plus "comment traduire une appli GTK en Cocoa", c'est-à-dire quels composants utiliser, comment les agencer pour que l'ergonomie soit identique tout en s'intégrant au mieux à OS X.

J'aurai aussi besoin d'un designer pour refaire l'icône à la sauce Mac (en vectoriel si possible). Sujet imposé : 
-au premier plan : un gros chapeau haut-de-forme. le chapeau doit être en bas à gauche et de bonne taille
-en arrrière plan : des symboles monétaires (euro, dollar, livre st., etc.) et/ou des billets et/ou des piles de pièces de monnaies.

Vous pouvez utiliser DrawBerry, un logiciel gratos pour le dessin vectoriel.

A vos crayons !


----------



## Céroce (5 Septembre 2008)

bananafighter a dit:


> En fait c'est un portage. Pour les idées je pensais plus "comment traduire une appli GTK en Cocoa", c'est-à-dire quels composants utiliser, comment les agencer pour que l'ergonomie soit identique tout en s'intégrant au mieux à OS X.



Si tu adaptes vraiment le logiciel au Mac, alors l'ergonomie ne sera pas identique, ne serait-ce que parce que les habitudes y sont différentes des autres plateformes: l'icône avec une disquette pour enregistrer, tu oublies. De même, on ne quitte pas l'application quand on ferme le document. Ce sont deux exemples courants de ce qu'on voit souvent dans les portages (qui a dit "Guitar Pro" ?)

Il y a d'autres choses qui sont courantes sur Mac, comme le glisser-déposer généralisé, ou l'utilisation d'inspecteurs, mais c'est vrai qu'il arrive un moment où on se demande s'il est bien utile de faire un portage plutôt qu'une appli nouvelle !

Pour tes premières lectures, je te conseille l'Apple Human Interface Guidelines
Tu verras que l'icône que tu proposes n'est déjà pas bien réglementaire !


----------



## bananafighter (5 Septembre 2008)

Céroce a dit:


> Si tu adaptes vraiment le logiciel au Mac, alors l'ergonomie ne sera pas identique, ne serait-ce que parce que les habitudes y sont différentes des autres plateformes: l'icône avec une disquette pour enregistrer, tu oublies. De même, on ne quitte pas l'application quand on ferme le document. Ce sont deux exemples courants de ce qu'on voit souvent dans les portages (qui a dit "Guitar Pro" ?)



Justement, c'est sur ce genre de détails que iGrisbi se différenciera de son homologue.
Par exemple la barre de menu n'est plus intégrée à la fenêtre (comme sous windows) mais commune à toutes les fenêtres. Le fait de fermer les fenetres ne ferme pas l'appli. Ce genre de choses...




Céroce a dit:


> Il y a d'autres choses qui sont courantes sur Mac, comme le glisser-déposer généralisé, ou l'utilisation d'inspecteurs, mais c'est vrai qu'il arrive un moment où on se demande s'il est bien utile de faire un portage plutôt qu'une appli nouvelle !



Là encore c'est une chose que je compte implémenter. Le tout n'est pas de développer de nouvelles fonctionnalités, mais de les intégrer au mieux dans l'OS.
Ajouter le glisser-déposer, inclure un plugin spotlight pour retrouver les opérations sur un compte, utiliser les devises et autres paramètres de localisation de l'utilisateur, etc. 




Céroce a dit:


> Pour tes premières lectures, je te conseille l'Apple Human Interface Guidelines
> Tu verras que l'icône que tu proposes n'est déjà pas bien réglementaire !



Euh, j'ai bien lu en détail le GuideLine concernant les icones, et je ne vois pas où est le problème ?
- Le chapeau haut-de-forme est un rappel à la version originale Grisbi
- Les devises, billets de banque, piles de pièces rappellent la gestion d'argent
Bref, comme il est est dit dans le Guideline : _"Mac OS X user application icons should be vibrant and inviting, and should immediately convey the application&#8217;s purpose."_
Je ne vois pas comment représenter plus clairement le contenu de l'application.

En tout cas merci pour le lien.


----------



## Céroce (5 Septembre 2008)

C'est juste que l'idée générale c'est de mettre en fond le document (des devises), et devant l'outil pour l'éditer (euh un châpeau ?). Mais franchement, c'est un détail, des tas d'applications (ex. Firefox) n'en ont cure.


----------



## tatouille (5 Septembre 2008)

et les gas les icones plus tard?
il y a des graphistes ici laisser leur leur job

un rappel il va falloir binder et deconnecter 
pas mal de methodes GTK avec les xib ou nib

il ne faut garder que les sequences de calcule et l'export document, 
il y a un boulot de ouf, je connais bien GTK et ca ne fait pas bon menage avec Cocoa

alors la premiere etape serait de faire l'interface complete avec un TODO
pour dire qui fait quoi et quoi fait qui outlet inlet

puis de cette etape voir ce que tu gardes du core de grisbi, diff ecetera


----------



## bananafighter (5 Septembre 2008)

tatouille a dit:


> et les gas les icones plus tard?
> il y a des graphistes ici laisser leur leur job
> 
> un rappel il va falloir binder et deconnecter
> ...



Pour les imports/exports de doc, ce sont des librairies toutes prêtes en C qui sont utilisées.
Il y aura peut être une recherche à faire à ce niveau, et au pire, un portage 

J'ai commencé l'interface. Restent à faire quelques popups et l'écran des préférences.
Par contre j'ai un soucis concernant la nomenclature des fichiers : comme les sources originales sont en "bon français", je pense tout passer en anglais. Problème : je ne sais pas quelles règles utiliser pour nommer les classes et fichiers des controlleurs, les outlets etc.

L'un d'entre vous aurait-il une expérience pro en objective C pour m'indiquer les règles de nommage standard en objective C ? ça concerne autant le nom des fichiers que les variables ou les classes.

C'est clair que c'est un projet qui s'annonce rude, mais qui promet d'être bien gratifiant !


----------



## tatouille (5 Septembre 2008)

cherche dans la doc 
*Ownership Policy*


telecharge ca http://www.objc-substrate.org/
et lis les classes pour comprendre

- (id)initWith
+ (id)objectWith
+ (MYObject *)alias

soit verbeux, separe tes methodes en plusieurs interfaces ca rend le code plus claire surtout quand les classes grossissent


```
@interface MyObject : NSObject <protocol1, protocol2>

- (BOOL)flag;

@end

@interface MyObject (MyObjectCreation)

- (id)initWithUrl:(NSURL *)url;
- (id)initWithUrlString:(NSString *)URLString;
- (id)initWithData:(NSData *)data;

ou
@optional
- (id)initWithUrl:(NSURL *)url;
- (id)initWithUrl:(NSString *)URLString;

@end

@interface MyObject (MyObjectAccessor)

- (NSString *)title;

@end
```


```
#import <ApplicationUtility/AUDateFormatterAddition.h>

@implementation NSDateFormatter (AUDateFormatterAddition)

- (NSDate *)dateFromRFC3339DateTimeString:(NSString *)dateTimeString 
{
    NSDate *date;
    NSError *error;
    NSString *date_string_format = @"yyyy-MM-ddTkk:mm:ss";
    NSString *format = @"yyyy-MM-dd'T'kk:mm:ss";
    NSRange range = NSMakeRange(0, [date_string_format length]);
    
    [self setDateFormat:format];
    if ( [self getObjectValue:&date forString:dateTimeString range:&range error:&error] ) {
        return date;
    }
    return nil;
}

- (NSDate *)dateFromRFC1123DateTimeString:(NSString *)dateTimeString 
{
    NSDate *date;
    NSError *error;
    NSString *date_string_format = @"EEE, dd MMM yyyy HH:mm:ss zzz";
    NSString *format = @"EEE, dd MMM yyyy HH:mm:ss zzz";
    NSRange range = NSMakeRange(0, [date_string_format length]);
    
    [self setDateFormat:format];
    if ( [self getObjectValue:&date forString:dateTimeString range:&range error:&error] ) {
        return date;
    }
    return nil;
}

- (BOOL)isValidRFC3339DateTimeString:(NSString *)dateTimeString 
{
    NSDate *date;
    if (nil != (date = [self dateFromRFC3339DateTimeString:dateTimeString])) {
        [date release];
        return YES;
    }
    return NO;
}

- (BOOL)isValidRFC1123DateTimeString:(NSString *)dateTimeString 
{
    NSDate *date;
    if (nil != (date = [self dateFromRFC1123DateTimeString:dateTimeString])) {
        [date release];
        return YES;
    }
    return NO;
}

@end
   
/* EOF */
```



bananafighter a dit:


> Pour les imports/exports de doc, ce sont des librairies toutes prêtes en C qui sont utilisées.
> Il y aura peut être une recherche à faire à ce niveau, et au pire, un portage
> 
> J'ai commencé l'interface. Restent à faire quelques popups et l'écran des préférences.
> ...


----------



## ntx (5 Septembre 2008)

bananafighter a dit:


> L'un d'entre vous aurait-il une expérience pro en objective C pour m'indiquer les règles de nommage standard en objective C ? ça concerne autant le nom des fichiers que les variables ou les classes.


Ce sont les mêmees qu'en C++ ou Java :
- noms de classes commencent par un majuscule, puis majuscule à chaque mot sans '_' entre les mots comme c'est fait dans GTK.
- variables et fonctions idem sauf que le nom commence par une minuscule. Tu peux préfixer les noms des variables en utilisant la notation polonaise.
- constantes tout en majuscule avec '_' entre les mots

Si tu manques d'inspiration, copie ce que fait Apple dans ses API. :rateau:

Pour les import/export en XML, soit tu utilises les mêmes librairies que l'original, soit tu utilises les fonctions disponibles dans Cocoa mais tu passes alors en objet et les modifications seront plus importantes.

Je sens qu'à la fin il n'y aura plus que les formats de fichier de sauvegarde en commun avec le Grisbi original  Mais c'est l'essentiel.


----------



## bananafighter (5 Septembre 2008)

ntx a dit:


> Pour les import/export en XML, soit tu utilises les mêmes librairies que l'original, soit tu utilises les fonctions disponibles dans Cocoa mais tu passes alors en objet et les modifications seront plus importantes.
> 
> Je sens qu'à la fin il n'y aura plus que les formats de fichier de sauvegarde en commun avec le Grisbi original  Mais c'est l'essentiel.



Bah au contraire, apparement toutes les sauvegardes se font au format xml, donc portabilité maximale ! 

En tout cas merci à tous pour vos précieux conseils, je vais cogiter tout ça tranquillement.

PS: je suis en plein design du panel d'imputation des transactions ("Opérations").


----------



## bananafighter (8 Septembre 2008)

Eul Mulot a dit:


> T'in, c'est balot, tu serais venu 3 mois avant j'aurais pu te filer un coup de main là dessus. J'avais l'année dernière créé un vulgaire soft Cocoatisé pour mes comptes, mais là je viens de reprendre les cours, et d'installer iCompta qui marche super bien et il est assez bien foutu.
> 
> J'utilisais aussi Grisbi sous Tiger, mais depuis que je suis sous Leo et que X11 merde (pas envie d'y toucher), j'ai opté pour la laziness de prendre iCompta.
> 
> En tout cas bonne chance pour ce projet, et je te tiendrais au courant si jamais j'ai le courage de me lancer là dedans (pas que je sois pas motivé de coder en sortant de cours mais bon  ).



J'ai installé iCompta, juste comme ça pour tester, et... Rhaaaaa ! ça marche trop bien !
Simple à utiliser, avec gestion des opérations mensuelles, graphes de synthèse, gestion des fichiers Money/Quicken...
Du coup bah ça me plombe bien le moral pour le dev d'iGrisbi , mais d'un autre côté j'ai trouvé mon bonheur, alors pourquoi réinventer la roue ? 

En tout cas merci à Eul Mulot pour le toyau


----------



## Eul Mulot (10 Septembre 2008)

Tu peux me remercier ou me traiter d'avoir fait plonger ton projet ! 
Sinon moi mon appli que j'ai faite était avant tout pour apprendre à utilsier Cocoa, donc j'aurai jamais eu le moral de faire ce portage car je connaissais des dizaines d'appli monétaires supra mieux faites et plus complètes que la mienne.


----------



## angelo95 (31 Janvier 2009)

Les mecs,

Juste pour vous dire merci et bon courage. Je suis incapable d'aider pour tout cela mais je suis un utilisateur de Grisbi et je suis très interessé par ce que vous faites car c'est un super soft !

Tenez-nous au courant svp !


----------



## tatouille (1 Février 2009)

angelo95 a dit:


> Les mecs,
> 
> Juste pour vous dire merci et bon courage. Je suis incapable d'aider pour tout cela mais je suis un utilisateur de Grisbi et je suis très interessé par ce que vous faites car c'est un super soft !
> 
> Tenez-nous au courant svp !



 je crois qu il a abandonne avant d'avoir commence


----------



## angelo95 (1 Février 2009)

Ah zut... je croyais que c'était lui ça :
http://goddess-gate.com/dc2/index.php/post/356

Bon je vais suivre ce projet et au pire il restera X11 car j'aime vraiment ce soft. Simple et robuste...


----------

