X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fmainwindow.py;h=a78bbfc4dc71b0b711b33c372759149c1a880c46;hp=153336fdd88c50e8f158e50d972e32d1d347ff96;hb=31f39d4d288e990328172ed778292ba801de8001;hpb=fd26e02e08369351315c100eba0b97ab7030ef00 diff --git a/sface/mainwindow.py b/sface/mainwindow.py index 153336f..a78bbfc 100644 --- a/sface/mainwindow.py +++ b/sface/mainwindow.py @@ -110,7 +110,7 @@ class Status(QLabel): creation_time = os.stat(rspec_file).st_ctime last_update = time.ctime(creation_time) - self.set("Slice data last updated on %s" % last_update, timeout=None) + self.set("Slice data last refreshed on %s" % last_update, timeout=None) def reset(self): self.setText("") @@ -121,8 +121,10 @@ class MainWindow(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) - self.logWindow = LogWindow(self) - self.rspecWindow = RSpecWindow(self) + # These are top-level windows and should be initialized with parent set + # to our parent. Otherwise, getting a segfault on exit in Ubuntu. + self.logWindow = LogWindow(parent) + self.rspecWindow = RSpecWindow(parent) self.pix = QLabel(self) @@ -230,3 +232,17 @@ class MainWindow(QWidget): def nodeSelectionChanged(self, hostname): if self.rspecWindow.isVisible(): self.rspecWindow.showNode(hostname) + + def closeEvent(self, event): + # give the screens an opportunity to veto the close + for screen in self.screenWidgets: + if not screen.canClose(): + event.ignore() + return + + # give the screens an opportunity to close gracefully + for screen in self.screenWidgets: + screen.mainWindowClose() + + QWidget.closeEvent(self, event) +