← retour à la page principale du
projet
Pour les futurs développeurs:
Il est à noter que chaque classe ne commence pas par using
namespace std; donc il faut taper std:: devant les string, les cout,
les endl, etc...
Ne pas oublier d'inclure les librairies évidentes:
<string> pour l'utilisation de std::string; iostream pour
l'utilisation de std::cout & std::endl.
Par ailleurs, ne pas hésiter à abuser de std::cout &
std::endl pour débugger, une alternative serait d'utiliser void
Cosme::afficherStatic(std::string texte).
Je conseille évidemment de se servir de KDevelop. Cela fait
gagner pas mal de temps. Il faudra alors charger le fichier
cosme.kdevelop, & le modifier pour l'adapter à sa propre
arborescence.
Il va falloir passer beaucoup de temps de lecture sur http://doc.trolltech.com/3.3/mainclasses.html
& http://doc.coin3d.org/Coin/hierarchy.html.
Pour utiliser facilement la zone de Coin du programme (& connaitre
la signification des boutons), un petit tour ici
s'impose.
À propos du recrutement d'un candidat à la resprise du
code:
De très bonnes connaissances en C++ sont requises. Il va falloir
relire & assimiler rapidement un code ayant 4 auteurs (Nicolas,
Loïc, Sébastien & Gilles). Ce code est
séparé en quelques classes, & fait appel aux
connaissances généralistes du C++. Il n'y a pas
réellement d'algorithme réellement avancé ou
très complexe, les makefiles ne sont pas d'une complexité
exagérée, mais si le repreneur ne maîtrise pas le
langage, il lui sera nécessaire de se familiariser avec ce
dernier avant de pouvoir prétendre essayer de comprendre le code.
Il faudra également qu'il connaisse suffisamment l'univers Linux
(installation de packages, mode root, utilisation de KDevelop (ou g++),
etc...).
Il devra, si ce n'est déjà fait, comprendre les rudiments
de Qt (qmake, moc, uic, etc...).
Si la personne a déjà travaillé avec (&
maîtrise) Open Inventor ou Coin, c'est la perle rare à ne
pas laisser passer! :) Dans ce cas, la structure du programme lui
paraitra beaucoup plus limpide, & elle pourra notamment corriger
les parties de code utilisant OI que j'éi écrites, qui
sont très largement perfectibles.
TODO list:
faire un load basique: lire le fichier, placer l'organe & l'outil
à leur position après que l'état initial soit
défini, & créer les rings associés
Yannick m'avait fait part de son désir de pouvoir utiliser
plusieurs outils à la fois. En effet, Forge le permet.
Cependant, par manque de temps, & probablement aussi par manque de
compréhension du code à l'époque, cela a
été abandonné. J'avais du créer une map
(liste des outils), avec une fenêtre spéciale
censée charger les outils, & leur associer un nom. Je n'ai
pas supprimé cette partie du code. Il est à noter qu'elle
ne provoque pas de problème, mais qu'elle est inutile pour
l'instant. Elle sera beaucoup plus utile plus tard.
Je pensais qu'il fallait créer une liste d'outils (tool), mais
en fait, à chaque outil, il faut associer un sous arbre dont la
racine est geometryObjects (& donc recréer pour chaque outil
les autres feuilles containTools, tool, etc...). Cela me semble
plutôt facile à faire, en incluant tout ceci dans un gros
objet. Le reste de l'adaptation (adapter le gros programme à
l'utilisation multi objets, & notamment associer chaque ring
à un objet précis, & pouvoir sélectionner un
objet particulier (une partie de ce code est déjà faite)
me semble plus long; prévoir une bonne semaine pour faire tout
cela proprement).
Si vous voulez faire du Qt (fenêtres, boutons, etc...), utilisez
le Qt Designer. Si c'est pour intégrer directement dans Cosme,
alors inspirez-vus du code généré par le Qt
Designer. Si c'est pour faire une fenêtre séparée,
alors faites directement un .ui que qmake se chargera de convertir en
code C++.
Il faudra probablement plus utiliser la barre d'état
(statusBar()->message( tr("Cosme ready."), 2000 );) & la zone de
log (afficher("meuh\n");) dans les prochaines utilisations, je me suis
personnellement trop servi de std::cout...
Petites explications pour le make:
Makefile fait appel à cosme.pro. Ce sont donc 2 fichiers
à ne surtout pas supprimer.