Cette partie décrit, de manière générale, la façon dont est organisée le code de ToolMap.
La classe ToolMapApp sert de point d’entrée du programme. Elle crée et appelle la classe ToolMapFrame qui est le point central dans ToolMap. Dans ToolMapFrame sont traités les événements suivants:
C’est également cette classe qui construit l’interface utilisateur (cf ). et C’est également ToolMapFrame qui initialise les différents “Managers” avec les données dont ils ont besoin.
Les différentes fenêtres d’outils de ToolMap (TOC, Panneau des raccourcis clavier, Snapping, etc.) sont des panneaux basés sur la classe wxAui. Ils sont illustrés en jaune dans la . Ces panneaux contiennent une autre classe en charge de la gestion du contenu (illustrés en blanc). Il s’agit en général d’une liste ou d’un contrôle de type arbre. La fenêtre centrale est gérée par la classe tmRenderer (dérivée de wxScrolledWindow). La classe tmDrawer est chargée de dessiner les données SIG dans une image qui sera ensuite affichée dans tmRenderer.
Afin d’éviter de surcharger ToolMapFrame des classes “Managers” ont été crées. Ceux-ci servent principalement à séparer les fonctionnalités par domaines. Les principaux “Managers” sont listés ci-dessous
D’autres “managers” sont également disponibles et leur nom est en général relativement clair pour que l’on puisse se faire une bonne idée de leur utilité (par exemple BackupManager). Historiquement la communication entre ToolMapFrame, les “Managers” et d’autres classes étaient effectués par messages. Pour simplifier le déboguage et clarifier l’ordre d’appel des fonctions, nous avons plutôt choisi d’appeler directement des fonctions plutôt que d’envoyer des messages.
Lors de l’ouverture d’un projet, celui-ci est chargé depuis la base de donnée (DatabaseTM) dans une structure hiérarchique de diverses classes. En effet il serait trop long d’interroger la BDD chaque fois qu’une information sur le projet est nécessaire. La structure hiérarchique est décrite ci-dessous et est illustrée à la .
La table des matières (TOC) est gérée par la classe tmTOCCtrl. Pour chaque entrée dans la TOC un objet tmLayerProperties est associé. Cette classe contient toutes les informations sur un thème SIG : nom, visibilité, type spatial, classe de symbologie associée, etc. Lors du dessin, la classe tmLayerManager va parcourir cette liste de tmLayerProperties. Pour chaque thème visible il sera demandé à tmDrawer de dessiner ce thème dans une image puis finalement l’image sera passée à tmRenderer pour affichage.