Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
Référence de la classe MainWindow

Fenêtre principale de l'application SimulateurFerroviaire. Plus de détails...

#include <MainWindow.h>

Graphe de collaboration de MainWindow:

Fonctions membres publiques

 MainWindow (HINSTANCE hInstance, const WCHAR *className, const WCHAR *title, int nCmdShow)
 Construit la fenêtre principale (sans la créer physiquement).
 
void create ()
 Crée et affiche la fenêtre Win32, initialise la ProgressBar et charge la ParserConfig depuis le fichier .ini.
 

Fonctions membres publiques statiques

static LRESULT CALLBACK windowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 Procédure de fenêtre statique, point d'entrée imposé par Win32.
 

Fonctions membres privées

LRESULT handleMessage (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 Dispatcher principal des messages de la fenêtre.
 
void onCommand (HWND hWnd, int commandId)
 Gère les commandes menu et boutons (WM_COMMAND).
 
void onProgressUpdate (int progress, std::wstring *label)
 Gère la mise à jour de la progression (WM_PROGRESS_UPDATE).
 
void onParsingSuccess (HWND hWnd)
 Gère la fin réussie du parsing (WM_PARSING_SUCCESS).
 
void onParsingError (HWND hWnd, LPARAM lParam)
 Gère un échec de parsing (WM_PARSING_ERROR).
 
void onParsingCancelled ()
 Gère une annulation propre du parsing (WM_PARSING_CANCELLED).
 
void onFileOpen (HWND hWnd)
 Ouvre le sélecteur de fichier et lance le parsing asynchrone.
 
void onFileExport (HWND hWnd)
 Ouvre le dialogue d'export et déclenche l'export GeoJSON.
 
void onCancelButtonClick ()
 Demande l'annulation du parsing en cours via GeoParsingTask.
 
void onParserSettings ()
 Ouvre le dialogue des paramètres du parser (IDM_PARSER_SETTINGS).
 
void onSizeUpdate ()
 Appelé lors d'un redimensionnement — ajuste WebView et PCCPanel.
 
void onDestroy ()
 Nettoie les ressources avant la destruction (WM_DESTROY).
 
void onWebMessage (const std::string &jsonMessage)
 Dispatcher des messages JSON reçus depuis Leaflet.
 
void onSwitchClick (const std::string &switchId)
 Met à jour l'état d'un SwitchBlock après un clic Leaflet.
 
void onTogglePCC ()
 Bascule la visibilité du panneau PCC (F2 ou IDM_VIEW_PCC).
 

Attributs privés

HWND m_hWnd = nullptr
 
HINSTANCE m_hInstance
 
const WCHAR * m_className
 
const WCHAR * m_title
 
int m_nCmdShow
 
ProgressBar m_progressBar
 
ParserConfig m_parserConfig
 
std::string m_parserIniPath
 
std::optional< GeoParsingTaskm_parserTask
 
Logger m_logger { "HMI" }
 
WebViewPanel m_webViewPanel { m_logger }
 
PCCPanel m_pccPanel { m_logger }
 

Description détaillée

Fenêtre principale de l'application SimulateurFerroviaire.

Responsabilités :

  • Créer et afficher la fenêtre principale.
  • Gérer l'ensemble des messages Win32 entrants via handleMessage.
  • Déclencher l'ouverture d'un fichier GeoJSON et le parsing asynchrone via GeoParsingTask.
  • Mettre à jour la ProgressBar (label + valeur + bouton Cancel) en réponse aux messages inter-threads.

Documentation des constructeurs et destructeur

◆ MainWindow()

MainWindow::MainWindow ( HINSTANCE  hInstance,
const WCHAR *  className,
const WCHAR *  title,
int  nCmdShow 
)

Construit la fenêtre principale (sans la créer physiquement).

Paramètres
hInstanceHandle de l'instance Win32.
classNameNom de la classe enregistrée par Application.
titleTitre affiché dans la barre de la fenêtre.
nCmdShowMode d'affichage (SW_SHOW, SW_HIDE, …).

Documentation des fonctions membres

◆ create()

void MainWindow::create ( )

Crée et affiche la fenêtre Win32, initialise la ProgressBar et charge la ParserConfig depuis le fichier .ini.

Exceptions
std::runtime_errorSi CreateWindowW retourne nullptr.

◆ handleMessage()

LRESULT MainWindow::handleMessage ( HWND  hWnd,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
private

Dispatcher principal des messages de la fenêtre.

◆ onCancelButtonClick()

void MainWindow::onCancelButtonClick ( )
private

Demande l'annulation du parsing en cours via GeoParsingTask.

Appelé quand l'utilisateur clique sur le bouton "Annuler" (IDC_CANCEL_PARSING).

◆ onCommand()

void MainWindow::onCommand ( HWND  hWnd,
int  commandId 
)
private

Gère les commandes menu et boutons (WM_COMMAND).

Traite : IDM_FILE_OPEN, IDM_FILE_EXPORT, IDM_VIEW_PCC, IDM_PARSER_SETTINGS, IDM_ABOUT, IDM_EXIT, IDC_CANCEL_PARSING.

Paramètres
hWndHandle de la fenêtre.
commandIdIdentifiant de la commande (issu de LOWORD(wParam)).

◆ onDestroy()

void MainWindow::onDestroy ( )
private

Nettoie les ressources avant la destruction (WM_DESTROY).

◆ onFileExport()

void MainWindow::onFileExport ( HWND  hWnd)
private

Ouvre le dialogue d'export et déclenche l'export GeoJSON.

Paramètres
hWndHandle de la fenêtre principale.

◆ onFileOpen()

void MainWindow::onFileOpen ( HWND  hWnd)
private

Ouvre le sélecteur de fichier et lance le parsing asynchrone.

Paramètres
hWndHandle de la fenêtre principale.

◆ onParserSettings()

void MainWindow::onParserSettings ( )
private

Ouvre le dialogue des paramètres du parser (IDM_PARSER_SETTINGS).

Si l'utilisateur valide, sauvegarde la config dans m_parserIniPath. Le prochain parsing utilisera les nouveaux paramètres.

◆ onParsingCancelled()

void MainWindow::onParsingCancelled ( )
private

Gère une annulation propre du parsing (WM_PARSING_CANCELLED).

Réinitialise la ProgressBar sans afficher d'erreur.

◆ onParsingError()

void MainWindow::onParsingError ( HWND  hWnd,
LPARAM  lParam 
)
private

Gère un échec de parsing (WM_PARSING_ERROR).

Affiche le message d'erreur transporté par lParam, libère la mémoire allouée par le thread de parsing, puis réinitialise la ProgressBar.

Paramètres
hWndHandle de la fenêtre parente.
lParamPointeur vers un std::wstring alloué par GeoParsingTask.

◆ onParsingSuccess()

void MainWindow::onParsingSuccess ( HWND  hWnd)
private

Gère la fin réussie du parsing (WM_PARSING_SUCCESS).

Injecte le rendu GeoJSON dans le WebView et réinitialise la ProgressBar.

Paramètres
hWndHandle de la fenêtre parente.

◆ onProgressUpdate()

void MainWindow::onProgressUpdate ( int  progress,
std::wstring *  label 
)
private

Gère la mise à jour de la progression (WM_PROGRESS_UPDATE).

Met à jour la barre et le label. Libère le std::wstring* transporté dans lParam, alloué par GeoParsingTask.

Paramètres
progressValeur de progression (0–100), depuis wParam.
labelPointeur vers le label de phase (propriété transférée).

◆ onSizeUpdate()

void MainWindow::onSizeUpdate ( )
private

Appelé lors d'un redimensionnement — ajuste WebView et PCCPanel.

◆ onSwitchClick()

void MainWindow::onSwitchClick ( const std::string &  switchId)
private

Met à jour l'état d'un SwitchBlock après un clic Leaflet.

Paramètres
switchIdIdentifiant du switch (ex. "sw/0").

◆ onTogglePCC()

void MainWindow::onTogglePCC ( )
private

Bascule la visibilité du panneau PCC (F2 ou IDM_VIEW_PCC).

◆ onWebMessage()

void MainWindow::onWebMessage ( const std::string &  jsonMessage)
private

Dispatcher des messages JSON reçus depuis Leaflet.

Paramètres
jsonMessageContenu brut du postMessage (UTF-8).

◆ windowProc()

LRESULT CALLBACK MainWindow::windowProc ( HWND  hWnd,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
static

Procédure de fenêtre statique, point d'entrée imposé par Win32.

Lors du premier message (WM_NCCREATE), stocke le pointeur this dans GWLP_USERDATA, puis délègue chaque message à handleMessage.

Paramètres
hWndHandle de la fenêtre cible.
messageIdentifiant du message Win32.
wParamParamètre mot de message.
lParamParamètre long de message.
Renvoie
Résultat du traitement du message.

Documentation des données membres

◆ m_className

const WCHAR* MainWindow::m_className
private

◆ m_hInstance

HINSTANCE MainWindow::m_hInstance
private

◆ m_hWnd

HWND MainWindow::m_hWnd = nullptr
private

Handle Win32 de la fenêtre physique (valide après create).

◆ m_logger

Logger MainWindow::m_logger { "HMI" }
private

Logger HMI.

◆ m_nCmdShow

int MainWindow::m_nCmdShow
private

◆ m_parserConfig

ParserConfig MainWindow::m_parserConfig
private

Configuration du pipeline GeoParser. Chargée depuis m_parserIniPath au démarrage (create), potentiellement modifiée via onParserSettings.

◆ m_parserIniPath

std::string MainWindow::m_parserIniPath
private

Chemin du fichier .ini de configuration du parser. Initialisé par ParserConfigIni::defaultPath() dans create.

◆ m_parserTask

std::optional<GeoParsingTask> MainWindow::m_parserTask
private

Tâche asynchrone du pipeline GeoParser. Instanciée dans create une fois m_hWnd disponible.

◆ m_pccPanel

PCCPanel MainWindow::m_pccPanel { m_logger }
private

Panneau PCC superposé — togglé via F2 ou IDM_VIEW_PCC.

◆ m_progressBar

ProgressBar MainWindow::m_progressBar
private

Barre de progression affichée lors du parsing.

◆ m_title

const WCHAR* MainWindow::m_title
private

◆ m_webViewPanel

WebViewPanel MainWindow::m_webViewPanel { m_logger }
private

Panneau WebView2 pour l'affichage de la carte ferroviaire.


La documentation de cette classe a été générée à partir des fichiers suivants :