From 722da695a340e3e6ff8762237b748a8588ccf026 Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Mon, 26 Aug 2019 17:01:54 +0200 Subject: [PATCH] ZebraMode renamed to PrepareMode Added Nuc/Mag views to Preparemode Added TrueZebraMode (the ability to switch back to WelcomeView) --- prepareView.py | 226 +++++++++++++++++++++++++++++++++++++++++++++++++ zebra.py | 26 ++++-- zebraView.py | 166 ------------------------------------ 3 files changed, 243 insertions(+), 175 deletions(-) create mode 100644 prepareView.py delete mode 100644 zebraView.py diff --git a/prepareView.py b/prepareView.py new file mode 100644 index 0000000..3baa3c5 --- /dev/null +++ b/prepareView.py @@ -0,0 +1,226 @@ + + + +from PyQt5.QtWidgets import QPlainTextEdit, QVBoxLayout, QHBoxLayout, QWidget, QGridLayout, QLabel, QPushButton, QTableWidget, QTableWidgetItem + +from PyQt5.QtGui import QPixmap + + +class PrepareView(QWidget): + + def __init__(self): + ''' Widget containing the entire Zebra Mode view. ''' + super().__init__() + + self.grid = QGridLayout() + + self.setLayout(self.grid) + + + self.define_widgets() + self.showView('none') + self.set_widget_actions() + + + + + def define_widgets(self): + ''' Define widgets such as buttons. This must be done before setting widget actions. + Otherwise a widget action might try to modify a widget that is not defined yet.''' + + # add empty label as spacer after buttons + # this has some side effects (i suspect) : + # + when adding the Buttons20, we really mean for it to span from grid position (3,1) to (3,2) + # but to create the correct visual effect it must span also over the invisible spacder column, + # Thus from (3,1) to (3,3). + self.grid.addWidget(QLabel(), 10,10) + + + # Common items + + + self.buttons00 = Buttons00(self) + self.grid.addWidget(self.buttons00,0,0) + + + + # Zebra Nuc View + + self.nucTable = OneDTable() + self.grid.addWidget(self.nucTable,0,1) + + + self.nucButtons11 = NucButtons11(self) + self.grid.addWidget(self.nucButtons11, 1,1) + + + + + #self.buttons20 = Buttons20() + #self.grid.addWidget(self.buttons20, 2,0) + + #self.buttons30 = Buttons30() + #self.grid.addWidget(self.buttons30, 3,0) + + + + + # Zebra Mag View + + self.magTable = OneDTable() + self.grid.addWidget(self.magTable,0,1) + + self.magButtons11 = MagButtons11(self) + self.grid.addWidget(self.magButtons11,1,1) + + self.magVisual = OneDText() + self.grid.addWidget(self.magVisual, 0,2) + + self.magButtons12 = MagButtons12(self) + self.grid.addWidget(self.magButtons12,1,2) + + + + + + def set_widget_actions(self): + self.sectorNucButton.clicked.connect(lambda: self.showView('nuc')) + self.sectorMagButton.clicked.connect(lambda: self.showView('mag')) + pass + + + + def showView(self,view): + ''' Will hide everything if called with anything besides nuc or mag.''' + self.nucTable.setHidden(True) + self.nucButtons11.setHidden(True) + self.magTable.setHidden(True) + self.magButtons11.setHidden(True) + self.magVisual.setHidden(True) + self.magButtons12.setHidden(True) + + if view == 'nuc': + self.nucTable.setHidden(False) + self.nucButtons11.setHidden(False) + elif view == 'mag': + self.magTable.setHidden(False) + self.magButtons11.setHidden(False) + self.magVisual.setHidden(False) + self.magButtons12.setHidden(False) + else: + pass + + + + +class OneDText(QPlainTextEdit): + def __init__(self): + super().__init__() + self.setMinimumSize(200,200) + self.setPlainText("List of Files:\n+ File 1\n+ File 2") + + + +class OneDTable(QTableWidget): + def __init__(self): + super().__init__() + + self.setSortingEnabled(True) + + self.setRowCount(4) + self.setColumnCount(4) + + self.setMinimumSize(300,200) + + self.setHorizontalHeaderLabels({'h', 'k', 'l'}) + + + +class Buttons00(QWidget): + + def __init__(self, c): + ''' Here c stands for container, thus the main window.''' + super().__init__() + grid = QGridLayout() + self.setLayout(grid) + + c.loadcrystalButton = QPushButton() + c.loadcrystalButton.setText("Load Crystal File") + grid.addWidget(c.loadcrystalButton, 0, 0) + + c.loadInstrumentFileButton = QPushButton() + c.loadInstrumentFileButton.setText('Load Instrument File') + grid.addWidget(c.loadInstrumentFileButton,1,0) + + c.sectorNucButton = QPushButton() + c.sectorNucButton.setText('Sector Nuc') + grid.addWidget(c.sectorNucButton,2,0) + + c.sectorMagButton = QPushButton() + c.sectorMagButton.setText('Sector Mag') + grid.addWidget(c.sectorMagButton,3,0) + + + +class NucButtons11(QWidget): + + def __init__(self,c): + ''' Here c stands for container, thus the main window.\n + The purpose of this notation is to enable access to each button via self in the main window.''' + super().__init__() + grid = QGridLayout() + self.setLayout(grid) + + c.sortNucButton = QPushButton() + c.sortNucButton.setText("Sort") + grid.addWidget(c.sortNucButton,0,0) + + c.optimizeNucButton = QPushButton() + c.optimizeNucButton.setText("Optimize") + grid.addWidget(c.optimizeNucButton,0,1) + + c.saveNucButton = QPushButton() + c.saveNucButton.setText("Save") + grid.addWidget(c.saveNucButton,0,2) + +class MagButtons11(QWidget): + + def __init__(self,c): + super().__init__() + grid = QGridLayout() + self.setLayout(grid) + + c.runMagButton = QPushButton() + c.runMagButton.setText("Run") + grid.addWidget(c.runMagButton,0,0) + +class MagButtons12(QWidget): + + def __init__(self,c): + super().__init__() + grid = QGridLayout() + self.setLayout(grid) + + c.sortMagButton = QPushButton() + c.sortMagButton.setText("Sort") + grid.addWidget(c.sortMagButton,0,0) + + c.optimizeMagButton = QPushButton() + c.optimizeMagButton.setText("Optimize") + grid.addWidget(c.optimizeMagButton,0,1) + + c.saveMagButton = QPushButton() + c.saveMagButton.setText("Save") + grid.addWidget(c.saveMagButton,0,2) + + + + + + + + + + + + diff --git a/zebra.py b/zebra.py index bdb6ed5..ff5f25c 100644 --- a/zebra.py +++ b/zebra.py @@ -4,7 +4,7 @@ from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QGraphicsPix from twoDimView import TwoDimView from oneDimView import OneDimView from welcomeView import WelcomeView -from zebraView import ZebraView +from prepareView import PrepareView @@ -40,9 +40,9 @@ class Zebra(QMainWindow): self.vbox.addWidget(self.welcomeView) self.welcomeView.setHidden(False) - self.zebraView = ZebraView() - self.vbox.addWidget(self.zebraView) - self.zebraView.setHidden(True) + self.prepareView = PrepareView() + self.vbox.addWidget(self.prepareView) + self.prepareView.setHidden(True) self.oneDimView = OneDimView() self.vbox.addWidget(self.oneDimView) @@ -57,8 +57,14 @@ class Zebra(QMainWindow): ''' Set up the main menu.''' self.modeMenu = self.menuBar().addMenu('Mode') - self.zebraMenuEntry = QAction('Zebra') - self.zebraMenuEntry.triggered.connect(lambda: self.showView('zebra')) + + self.welcomeMenuEntry = QAction('Zebra') + self.welcomeMenuEntry.triggered.connect(lambda: self.showView('welcome')) + self.modeMenu.addAction(self.welcomeMenuEntry) + + + self.zebraMenuEntry = QAction('Prepare') + self.zebraMenuEntry.triggered.connect(lambda: self.showView('prepare')) self.modeMenu.addAction(self.zebraMenuEntry) self.oneDMenuEntry = QAction('1D Mode') @@ -73,12 +79,14 @@ class Zebra(QMainWindow): def showView(self, view): self.welcomeView.setHidden(True) - self.zebraView.setHidden(True) + self.prepareView.setHidden(True) self.oneDimView.setHidden(True) self.twoDimView.setHidden(True) - if view == 'zebra': - self.zebraView.setHidden(False) + if view == 'welcome': + self.welcomeView.setHidden(False) + elif view == 'prepare': + self.prepareView.setHidden(False) elif view == '1D': self.oneDimView.setHidden(False) elif view =='2D': diff --git a/zebraView.py b/zebraView.py deleted file mode 100644 index 3d9bc5b..0000000 --- a/zebraView.py +++ /dev/null @@ -1,166 +0,0 @@ - - - -from PyQt5.QtWidgets import QPlainTextEdit, QVBoxLayout, QHBoxLayout, QWidget, QGridLayout, QLabel, QPushButton, QTableWidget, QTableWidgetItem - -from PyQt5.QtGui import QPixmap - - -class ZebraView(QWidget): - - def __init__(self): - ''' Widget containing the entire Zebra Mode view. ''' - super().__init__() - - self.grid = QGridLayout() - - self.setLayout(self.grid) - - - self.define_widgets() - self.set_widget_actions() - - - - - def define_widgets(self): - ''' Define widgets such as buttons. This must be done before setting widget actions. - Otherwise a widget action might try to modify a widget that is not defined yet.''' - - # add empty label as spacer after buttons - # this has some side effects (i suspect) : - # + when adding the Buttons20, we really mean for it to span from grid position (3,1) to (3,2) - # but to create the correct visual effect it must span also over the invisible spacder column, - # Thus from (3,1) to (3,3). - self.grid.addWidget(QLabel(), 10,10) - - - # Common items - - - self.buttons00 = Buttons00() - self.grid.addWidget(self.buttons00,0,0) - - - - # Zebra Nuc View - - self.nucTable = OneDTable() - self.grid.addWidget(self.nucTable,0,1) - - - self.nucButtons11 = NucButtons11() - self.grid.addWidget(self.nucButtons11, 1,1) - - - - - #self.buttons20 = Buttons20() - #self.grid.addWidget(self.buttons20, 2,0) - - #self.buttons30 = Buttons30() - #self.grid.addWidget(self.buttons30, 3,0) - - - - - # Zebra Mag View - - self.magTable = OneDTable() - self.magVisual = OneDText() - - - - - def set_widget_actions(self): - pass - - - def showView(self,view): - self.nucTable.setHidden(True) - self.nucButtons11.setHidden(True) - - - -class OneDText(QPlainTextEdit): - def __init__(self): - super().__init__() - self.setMinimumSize(200,200) - self.setPlainText("List of Files:\n+ File 1\n+ File 2") - - - -class OneDTable(QTableWidget): - def __init__(self): - super().__init__() - - self.setSortingEnabled(True) - - self.setRowCount(4) - self.setColumnCount(4) - - self.setMinimumSize(300,200) - - self.setHorizontalHeaderLabels({'h', 'k', 'l'}) - - - -class Buttons00(QWidget): - - def __init__(self): - super().__init__() - grid = QGridLayout() - self.setLayout(grid) - - self.loadcrystalButton = QPushButton() - self.loadcrystalButton.setText("Load Crystal File") - grid.addWidget(self.loadcrystalButton, 0, 0) - - self.loadInstrumentFileButton = QPushButton() - self.loadInstrumentFileButton.setText('Load Instrument File') - grid.addWidget(self.loadInstrumentFileButton,1,0) - - self.sectorNucButton = QPushButton() - self.sectorNucButton.setText('Sector Nuc') - grid.addWidget(self.sectorNucButton,2,0) - - self.sectorMagButton = QPushButton() - self.sectorMagButton.setText('Sector Mag') - grid.addWidget(self.sectorMagButton,3,0) - - - -class NucButtons11(QWidget): - - def __init__(self): - super().__init__() - grid = QGridLayout() - self.setLayout(grid) - - self.prepareNucButton = QPushButton() - self.prepareNucButton.setText("Prepare") - grid.addWidget(self.prepareNucButton,0,0) - - self.sortNucButton = QPushButton() - self.sortNucButton.setText("Sort") - grid.addWidget(self.sortNucButton,0,1) - - self.optimizeNucButton = QPushButton() - self.optimizeNucButton.setText("Optimize") - grid.addWidget(self.optimizeNucButton,0,2) - - self.saveNucButton = QPushButton() - self.saveNucButton.setText("Save") - grid.addWidget(self.saveNucButton,0,3) - - - - - - - - - - - -