======GUI====== Die Benutzeroberfläche bildet den zentralen Punkt des Programmes. Von hier aus werden andere Teile des Codes aufgerufen und ausgeführt. Der Code für das Gui wird in einen funktionalen und einen strukturellen Part unterteilt.((von J.Zerbian)) Um die GUI zu implementieren haben wir für die Pythonbibliothek ''tkinter'' entschieden. Diese ist standardmäßig bei Python dabei und ist zudem auch mit den gängisten Betriebsystemen kompatibel (Windows, macOS, Linux). Diese Bibliothek bietet sehr viele Möglichkeiten, für GUI Elemente, jedoch darf man die Einarbeitungszeit für den Umgang mit ''tkinter'' nicht unterschätzen. =====Funktionaler Teil===== ====gui_main.py===== Mit dieser Datei startet man das Hauptprogramm. Hier findet die Kommunikation zwischen dem Tracking und der Datenstruktur statt. ===init=== * Initialisieren des Guifensters * Anlegen des Seitenmanager für die einzelnen Tabs ===openVideo=== * liest den Videopfad für das zu trackende Video ein ===openCascade==== * liest den Kaskadenpfad für die automatische Erkennung der Pucks ein ===autoDetect=== * ruft die setup-Methode des Tracker Moduls auf * Initialisieren der Pucks für die Datenstruktur ===manualDetect=== ===outputTable=== * öffnet einen Speicherdialog zum Speichern der Puckdaten aus der Datenstruktur in einer Tabellendatei ===toggle=== * sorgt dafür, dass der Trackingvorgang pausiert und wieder fortgesetzt werden kann. * ruft ''task'' auf, wenn das Tracking fortgesetzt wird ===task=== * ruft die run-Methode des Tracker Moduls auf * übergibt die vom Tracker übergebenen Positionsdaten an die Datenstruktur * ruft ''update_view'' auf ===update_view=== * aktualisiert die Anzeige für: * den Fortschittsbalken * den aktuellen Frame * die verstrichene Zeit * die erwartete verbleibende Zeit ===timeconvert=== * wandelt die in Millisekunden übergebene Zeitspanne in das HH:MM:SS Format um ===close_plot=== * schließt den gezeichneten Plot ===calc_mb=== * übergibt die Positionsdaten aus der Datenstruktur an die ''calculate'' Methode in ''gui_mb'' ===calc_heat=== * übergibt die Positionsdaten aus der Datenstruktur an die ''calculate'' Methode in ''gui_heat'' =====struktureller Teil===== Das Gui ist so programmiert, dass die Tabs jeweils in ihrer eigenen Datei sind. Diese Dateien befinden sich in dem Ordner ''gui_pages''. ====gui_landing==== ist die Startseite des Gui. Hier wird das MintGrün-Logo angezeigt und eine Kurzanleitung zur Benutzung des Programmes. ====gui_input==== zeigt zwei Schaltflächen zum Öffnen des Videos und der Kaskade. (siehe ''openVideo'' oder ''openCascade'') ====gui_setup==== zeigt zwei Schaltflächen zur Ditektierung der Pucks im Video. (siehe ''autoDetect'') ====gui_calc==== verwaltet den Tracking-Prozess. Hier befindet sich die Schaltfläche zum Starten und Pausieren des Trackingprozesses und zeigt den aktuellen Fortschritt an. (siehe ''toggle'' und ''update_view'') ====gui_heat==== zeigt die entsprechende Heatmap zur Aufenthaltswahrscheinlichkeit der Pucks an. (siehe calc_heat) ====gui_mb==== zeigt die Maxwell-Boltzmann-Verteilung für die Pucks an. (siehe calc_mb)