1- #!/usr/bin/env python3
2-
31import copy
42from functools import partial
53import os
6- from pathlib import Path
74import pickle
8- import signal
9- import sys
105from threading import Thread
116
127from PySide2 import QtCore , QtGui
138from PySide2 .QtGui import QKeyEvent
149from PySide2 .QtWidgets import (QApplication , QLabel , QSizePolicy , QMainWindow ,
15- QScrollArea , QMessageBox , QAction ,
16- QFileDialog , QColorDialog , QInputDialog ,
17- QSplashScreen , QWidget , QGestureEvent )
10+ QScrollArea , QMessageBox , QAction , QFileDialog ,
11+ QColorDialog , QInputDialog , QWidget ,
12+ QGestureEvent )
13+
1814import openmc
1915import openmc .lib
2016
2420except ImportError :
2521 _HAVE_VTK = False
2622
27- from plotmodel import PlotModel , DomainTableModel
28- from plotgui import PlotImage , ColorDialog
29- from docks import DomainDock , TallyDock
30- from overlays import ShortcutsOverlay
31- from tools import ExportDataDialog
23+ from . plotmodel import PlotModel , DomainTableModel
24+ from . plotgui import PlotImage , ColorDialog
25+ from . docks import DomainDock , TallyDock
26+ from . overlays import ShortcutsOverlay
27+ from . tools import ExportDataDialog
3228
3329
3430def _openmcReload ():
@@ -41,9 +37,11 @@ def _openmcReload():
4137
4238
4339class MainWindow (QMainWindow ):
44- def __init__ (self ):
40+ def __init__ (self , font = QtGui . QFontMetrics ( QtGui . QFont ()), screen_size = QtCore . QSize () ):
4541 super ().__init__ ()
4642
43+ self .screen = screen_size
44+ self .font_metric = font
4745 self .setWindowTitle ('OpenMC Plot Explorer' )
4846
4947 def loadGui (self ):
@@ -68,24 +66,23 @@ def loadGui(self):
6866 self .plotIm = PlotImage (self .model , self .frame , self )
6967 self .frame .setWidget (self .plotIm )
7068
71- font_metric = QtGui .QFontMetricsF (app .font ())
7269 # Dock
73- self .dock = DomainDock (self .model , font_metric , self )
70+ self .dock = DomainDock (self .model , self . font_metric , self )
7471 self .dock .setObjectName ("Domain Options Dock" )
7572 self .addDockWidget (QtCore .Qt .RightDockWidgetArea , self .dock )
7673
7774 # Tally Dock
78- self .tallyDock = TallyDock (self .model , font_metric , self )
75+ self .tallyDock = TallyDock (self .model , self . font_metric , self )
7976 self .tallyDock .update ()
8077 self .tallyDock .setObjectName ("Tally Options Dock" )
8178 self .addDockWidget (QtCore .Qt .RightDockWidgetArea , self .tallyDock )
8279
8380 # Color DialogtallyDock
84- self .colorDialog = ColorDialog (self .model , font_metric , self )
81+ self .colorDialog = ColorDialog (self .model , self . font_metric , self )
8582 self .colorDialog .hide ()
8683
8784 # Tools
88- self .exportDataDialog = ExportDataDialog (self .model , font_metric , self )
85+ self .exportDataDialog = ExportDataDialog (self .model , self . font_metric , self )
8986
9087 # Restore Window Settings
9188 self .restoreWindowSettings ()
@@ -436,7 +433,6 @@ def updateWindowMenu(self):
436433 self .mainWindowAction .setChecked (self .isActiveWindow ())
437434
438435 # Menu and shared methods
439-
440436 def loadModel (self , reload = False ):
441437 if reload :
442438 self .resetModels ()
@@ -455,7 +451,7 @@ def loadModel(self, reload=False):
455451 loader_thread .start ()
456452 while loader_thread .is_alive ():
457453 self .statusBar ().showMessage ("Reloading model..." )
458- app .processEvents ()
454+ QApplication .processEvents ()
459455
460456 self .plotIm .model = self .model
461457 self .applyChanges ()
@@ -1088,7 +1084,6 @@ def updateRelativeBases(self):
10881084 self .zBasis = 3 - (self .xBasis + self .yBasis )
10891085
10901086 def adjustWindow (self ):
1091- self .screen = app .primaryScreen ().size ()
10921087 self .setMaximumSize (self .screen .width (), self .screen .height ())
10931088
10941089 def onRatioChange (self ):
@@ -1158,52 +1153,3 @@ def saveSettings(self):
11581153 def exportTallyData (self ):
11591154 # show export tool dialog
11601155 self .showExportDialog ()
1161-
1162- if __name__ == '__main__' :
1163-
1164- path_icon = str (Path (__file__ ).parent / 'assets/openmc_logo.png' )
1165- path_splash = str (Path (__file__ ).parent / 'assets/splash.png' )
1166-
1167- app = QApplication (sys .argv )
1168- app .setOrganizationName ("OpenMC" )
1169- app .setOrganizationDomain ("openmc.org" )
1170- app .setApplicationName ("OpenMC Plot Explorer" )
1171- app .setWindowIcon (QtGui .QIcon (path_icon ))
1172- app .setAttribute (QtCore .Qt .AA_DontShowIconsInMenus , True )
1173-
1174- splash_pix = QtGui .QPixmap (path_splash )
1175- splash = QSplashScreen (splash_pix , QtCore .Qt .WindowStaysOnTopHint )
1176- splash .setMask (splash_pix .mask ())
1177- splash .show ()
1178- app .processEvents ()
1179- splash .setMask (splash_pix .mask ())
1180- splash .showMessage ("Loading Model..." ,
1181- QtCore .Qt .AlignHCenter | QtCore .Qt .AlignBottom )
1182- app .processEvents ()
1183- # load OpenMC model on another thread
1184- loader_thread = Thread (target = _openmcReload )
1185- loader_thread .start ()
1186- # while thread is working, process app events
1187- while loader_thread .is_alive ():
1188- app .processEvents ()
1189-
1190- splash .clearMessage ()
1191- splash .showMessage ("Starting GUI..." ,
1192- QtCore .Qt .AlignHCenter | QtCore .Qt .AlignBottom )
1193- app .processEvents ()
1194-
1195- mainWindow = MainWindow ()
1196- # connect splashscreen to main window, close when main window opens
1197- mainWindow .loadGui ()
1198- mainWindow .show ()
1199- splash .close ()
1200-
1201- # connect interrupt signal to close call
1202- signal .signal (signal .SIGINT , lambda * args : mainWindow .close ())
1203- # create timer that interrupts the Qt event loop
1204- # to check for a signal
1205- timer = QtCore .QTimer ()
1206- timer .start (500 )
1207- timer .timeout .connect (lambda : None )
1208-
1209- sys .exit (app .exec_ ())
0 commit comments