diff --git a/src/python/dm/aps_beamline_tools/gui/daqsTab.py b/src/python/dm/aps_beamline_tools/gui/daqsTab.py index 29e5e4ffbd047e87aa8c6956262ced58791127fa..7d824749300ff7aa07b1acabe3366d80c8db48fd 100644 --- a/src/python/dm/aps_beamline_tools/gui/daqsTab.py +++ b/src/python/dm/aps_beamline_tools/gui/daqsTab.py @@ -1,12 +1,13 @@ #!/usr/bin/env python -import wx +from PyQt4.QtGui import * +from PyQt4.QtCore import * from dmApiFactory import DmApiFactory # Define the DAQs tab content: -class DaqsTab(wx.ListCtrl): +class DaqsTab(QObject): def __init__(self, stationName, parent, id=-1): - wx.ListCtrl.__init__(self, parent, id, style=wx.LC_REPORT) + super(DaqsTab, self).__init__(parent) self.stationName = stationName self.experimentDaqApi = DmApiFactory.getInstance().getExperimentDaqApi() @@ -32,5 +33,5 @@ class DaqsTab(wx.ListCtrl): self.SetItemBackgroundColour(i, '#e6f1f5') i += 1 - + diff --git a/src/python/dm/aps_beamline_tools/gui/dmStationUi.py b/src/python/dm/aps_beamline_tools/gui/dmStationUi.py index bd2926cca7bc582bc1dc12718bf981dc573140be..dc53a71b549366374917a0a08097b27f4fd51d97 100755 --- a/src/python/dm/aps_beamline_tools/gui/dmStationUi.py +++ b/src/python/dm/aps_beamline_tools/gui/dmStationUi.py @@ -1,7 +1,8 @@ #!/usr/bin/env python import sys -import wx +from PyQt4.QtCore import * +from PyQt4.QtGui import QMainWindow, QStackedLayout, QApplication, QWidget from dm.common.constants import dmStatus from dm.common.exceptions.dmException import DmException @@ -12,31 +13,37 @@ from dm.common.utility.configurationManager import ConfigurationManager from experimentsTab import ExperimentsTab from daqsTab import DaqsTab from uploadsTab import UploadsTab - -class DmStationUi(wx.Frame): +from initialTab import InitialTab + + +class DmStationUi(QMainWindow): def __init__(self): self.__configure() self.logger.debug('Starting UI for DM Station: %s' % self.stationName) - wx.Frame.__init__(self, None, title='DM Station: %s' % self.stationName, size=(900,500)) + super(DmStationUi, self).__init__() + + self.setWindowTitle('DM Station: %s' % self.stationName) + self.setGeometry(0, 0, 800, 400) - # Create a panel and notebook (tabs holder) - p = wx.Panel(self) - nb = wx.Notebook(p) + # Create a stacked layout to connect the various pages + self.stackedLayout = QStackedLayout() # Create the tab windows - experimentsTab = ExperimentsTab(self.stationName, nb) - daqsTab = DaqsTab(self.stationName, nb) - uploadsTab = UploadsTab(self.stationName, nb) - - # Add the windows to tabs and name them. - nb.AddPage(experimentsTab, "Experiments") - nb.AddPage(daqsTab, "Real Time DAQs") - nb.AddPage(uploadsTab, "Data Uploads") + initialTab = InitialTab(self.stationName, self.stackedLayout) + experimentsTab = ExperimentsTab(self.stationName, self.stackedLayout) + #daqsTab = DaqsTab(self.stationName, self.stackedLayout) + #uploadsTab = UploadsTab(self.stationName, self.stackedLayout) - # Set noteboook in a sizer to create the layout - sizer = wx.BoxSizer() - sizer.Add(nb, 1, wx.EXPAND) - p.SetSizer(sizer) + # Add the windows to the stack. + self.stackedLayout.addWidget(initialTab) + self.stackedLayout.addWidget(experimentsTab) + #self.stackedLayout.addWidget(daqsTab) + #self.stackedLayout.addWidget(uploadsTab) + + # Set a central widget to hold everything + self.centralWidget = QWidget() + self.centralWidget.setLayout(self.stackedLayout) + self.setCentralWidget(self.centralWidget) def __configure(self): self.logger = LoggingManager.getInstance().getLogger(self.__class__.__name__) @@ -47,7 +54,7 @@ class DmStationUi(wx.Frame): if __name__ == "__main__": try: - app = wx.App() + app = QApplication(sys.argv) DmStationUi().Show() app.MainLoop() except DmException, ex: diff --git a/src/python/dm/aps_beamline_tools/gui/experimentsTab.py b/src/python/dm/aps_beamline_tools/gui/experimentsTab.py index a4b28474f6ccd87ff88398c1e5f160e27bd464c8..d925fbc4b25e3776ce038ae41c86e7282d3e5818 100644 --- a/src/python/dm/aps_beamline_tools/gui/experimentsTab.py +++ b/src/python/dm/aps_beamline_tools/gui/experimentsTab.py @@ -1,22 +1,17 @@ #!/usr/bin/env python -import wx +from PyQt4.QtGui import * +from PyQt4.QtCore import QObject from dmApiFactory import DmApiFactory # Define the experiments tab content: -class ExperimentsTab(wx.ListCtrl): +class ExperimentsTab(QObject): def __init__(self, stationName, parent, id=-1): - wx.ListCtrl.__init__(self, parent, id, style=wx.LC_REPORT) + super(ExperimentsTab, self).__init__(parent) self.stationName = stationName self.experimentDsApi = DmApiFactory.getInstance().getExperimentDsApi() - self.InsertColumn(0, 'Name') - self.InsertColumn(1, 'Description') - self.InsertColumn(2, 'Start Date') - self.SetColumnWidth(0, 150) - self.SetColumnWidth(1, 500) - self.SetColumnWidth(2, 250) self.updateList() diff --git a/src/python/dm/aps_beamline_tools/gui/initialTab.py b/src/python/dm/aps_beamline_tools/gui/initialTab.py new file mode 100644 index 0000000000000000000000000000000000000000..7fca1d8f632aed5f6214bdfae7d9fd7ff1c3f2b3 --- /dev/null +++ b/src/python/dm/aps_beamline_tools/gui/initialTab.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +from PyQt4.QtGui import QGridLayout, QSpacerItem, QSizePolicy, QPushButton, QWidget, QFont, QLabel +from PyQt4.QtCore import QObject, Qt + + +# Define the experiments tab content: +class InitialTab(QObject): + def __init__(self, stationName, parent, id=-1): + super(InitialTab, self).__init__(parent) + self.stationName = stationName + self.parent = parent + + def initialTabLayout(self): + grid = QGridLayout() + + labelFont = QFont("Arial", 18, QFont.Bold) + lbl = QLabel(self.stationName + " DM Tool", self) + lbl.setAlignment(Qt.AlignCenter) + lbl.setFont(labelFont) + grid.addWidget(lbl, 1, 1, 1, 3) + + grid.addItem(QSpacerItem(20, 130, QSizePolicy.Expanding), 2, 1) + + grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 1) + manageBtn = QPushButton("Manage Experiments", self) + manageBtn.clicked.connect(self.setTab(1)) + grid.addWidget(manageBtn, 3, 2) + grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 3) + viewBtn = QPushButton("View Experiments", self) + viewBtn.clicked.connect(self.setTab(2)) + grid.addWidget(viewBtn, 3, 4) + grid.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding), 3, 5) + + grid.addItem(QSpacerItem(20, 130, QSizePolicy.Expanding), 4, 1) + + self.initialTabWidget = QWidget() + self.initialTabWidget.setLayout(grid) + + def setTab(self, tab): + self.parent.setCurrentIndex(tab) diff --git a/src/python/dm/aps_beamline_tools/gui/uploadsTab.py b/src/python/dm/aps_beamline_tools/gui/uploadsTab.py index 1ed425d15af08663199cfca3e67e9b067c9570cf..a5654bacd9dc9da9b4358379a67b8c323673d9e7 100644 --- a/src/python/dm/aps_beamline_tools/gui/uploadsTab.py +++ b/src/python/dm/aps_beamline_tools/gui/uploadsTab.py @@ -1,12 +1,13 @@ #!/usr/bin/env python -import wx +from PyQt4.QtGui import * +from PyQt4.QtCore import * from dmApiFactory import DmApiFactory # Define the experiments tab content: -class UploadsTab(wx.ListCtrl): +class UploadsTab(QObject): def __init__(self, stationName, parent, id=-1): - wx.ListCtrl.__init__(self, parent, id, style=wx.LC_REPORT) + super(UploadsTab, self).__init__(parent) self.stationName = stationName self.experimentDaqApi = DmApiFactory.getInstance().getExperimentDaqApi() @@ -31,5 +32,6 @@ class UploadsTab(wx.ListCtrl): if (i % 2) == 0: self.SetItemBackgroundColour(i, '#e6f1f5') i += 1 - + +