Skip to content

Commit 8861d1d

Browse files
committed
update GUI - TODO: crash the app when the sim package change during the devsimpy session
1 parent 8c5c128 commit 8861d1d

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed
0 Bytes
Binary file not shown.

devsimpy/PreferencesGUI.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1364,7 +1364,26 @@ def OnApply(self, evt):
13641364
setattr(builtins, 'DEFAULT_DEVS_DIRNAME', self.default_devs_dir)
13651365

13661366
try:
1367-
# Recompile core modules
1367+
# Clear old kernel modules from sys.modules cache
1368+
# This prevents conflicts when switching between PyDEVS, PyPDEVS, BrokerDEVS
1369+
import sys
1370+
import importlib
1371+
kernel_modules_to_remove = []
1372+
for module_name in list(sys.modules.keys()):
1373+
# Remove all DEVSKernel submodules (PyDEVS, PyPDEVS, BrokerDEVS, etc.)
1374+
# Also remove DomainInterface modules as they import kernel classes
1375+
# NOTE: We don't remove Container or Components as they have living instances
1376+
if 'DEVSKernel' in module_name or 'DomainInterface' in module_name:
1377+
kernel_modules_to_remove.append(module_name)
1378+
1379+
for module_name in kernel_modules_to_remove:
1380+
if module_name in sys.modules:
1381+
del sys.modules[module_name]
1382+
1383+
# Invalidate import caches to force fresh module discovery
1384+
importlib.invalidate_caches()
1385+
1386+
# Recompile core modules with clean module cache
13681387
ReloadModule.recompile("DomainInterface.DomainBehavior")
13691388
ReloadModule.recompile("DomainInterface.DomainStructure")
13701389
ReloadModule.recompile("DomainInterface.MasterModel")

devsimpy/SimulationGUI.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,11 @@ def __init__(self, parent, simdia):
107107

108108
self.org_w,self.org_h = self.simdia.GetSize()
109109

110-
self.label1 = _("More settings...")
111-
self.label2 = _("Extra options")
110+
# Get current kernel name for display
111+
kernel_name = DEFAULT_DEVS_DIRNAME
112+
113+
self.label1 = _("More settings... [%s]") % kernel_name
114+
self.label2 = _("Extra options [%s]") % kernel_name
112115

113116
self.cp = wx.CollapsiblePane(self, label=self.label1,
114117
style=wx.CP_DEFAULT_STYLE|wx.CP_NO_TLW_RESIZE)

0 commit comments

Comments
 (0)