Ejemplo n.º 1
0
class CommandDialog(QDialog):
    def __init__(self,
                 text=str(),
                 cmd=str(),
                 cmdType=str(CommandType.PYTHON),
                 parent=None):
        super(CommandDialog, self).__init__(parent=parent)
        self.cmd = cmd
        self.cmdType = cmdType
        self.text = text
        self.initUI()

    def initUI(self):
        mainLayout = QGridLayout(self)
        mainLayout.setAlignment(Qt.AlignLeft | Qt.AlignTop)
        mainLayout.setColumnStretch(0, 0)
        mainLayout.setColumnStretch(1, 1)
        mainLayout.setColumnStretch(2, 1)
        mainLayout.setColumnStretch(3, 1)
        self.setLayout(mainLayout)

        nameText = QLabel('Name:')
        nameText.setAlignment(Qt.AlignRight)
        self.nameIn = QLineEdit()
        self.nameIn.setText(self.text)
        mainLayout.addWidget(nameText, 0, 0)
        mainLayout.addWidget(self.nameIn, 0, 1, 1, 3)

        langText = QLabel('Language:')
        langText.setAlignment(Qt.AlignRight)
        self.pyCheck = QRadioButton(CommandType.PYTHON)
        if self.cmdType == self.pyCheck.text():
            self.pyCheck.setChecked(True)
        self.melCheck = QRadioButton(CommandType.MEL)
        if self.cmdType == self.melCheck.text():
            self.melCheck.setChecked(True)
        mainLayout.addWidget(langText, 1, 0)
        mainLayout.addWidget(self.pyCheck, 1, 1)
        mainLayout.addWidget(self.melCheck, 1, 3)

        cmdText = QLabel('Command:')
        cmdText.setAlignment(Qt.AlignRight | Qt.AlignTop)
        self.cmdIn = QTextEdit()
        self.cmdIn.setPlainText(self.cmd)
        mainLayout.addWidget(cmdText, 2, 0)
        mainLayout.addWidget(self.cmdIn, 2, 1, 1, 3)

        okBtn = QPushButton("OK")
        okBtn.clicked.connect(self.accept)
        testBtn = QPushButton("Test")
        testBtn.clicked.connect(self.onTest)
        cancelBtn = QPushButton("Cancel")
        cancelBtn.clicked.connect(self.reject)

        mainLayout.addWidget(okBtn, 3, 1, 1, 1)
        mainLayout.addWidget(testBtn, 3, 2, 1, 1)
        mainLayout.addWidget(cancelBtn, 3, 3, 1, 1)
        self.setWindowTitle("Edit Command")
        self.setWindowFlags(Qt.WindowStaysOnTopHint)

    def onTest(self):
        cmdType = self.pyCheck.text() if self.pyCheck.isChecked(
        ) == True else self.melCheck.text()
        cmd = self.cmdIn.toPlainText()
        name = self.nameIn.text()
        if cmdType == CommandType.PYTHON:
            runPython(cmd)
        elif cmdType == CommandType.MEL:
            runMel(cmd)

    def get_raw(self):
        cmdType = self.pyCheck.text() if self.pyCheck.isChecked(
        ) == True else self.melCheck.text()
        cmd = self.cmdIn.toPlainText()
        name = self.nameIn.text()
        return {
            PIIButton.TEXT: name,
            PIIButton.COMMAND: cmd,
            PIIButton.COMMANDTYPE: cmdType
        }

    Raw = property(get_raw)
Ejemplo n.º 2
0
class PetrophysicsOptions(QWidget):
    polymorphic_states = {
        'DParsons': {'param1': 'Coeficiente de Dykstra-Parsons', 'param2': 'Grau de heterogenêidade', 'param3': '', 'param4': '', 'prop1': ['Permeabilidade (mD)'], 'prop2': ['Permeabilidade (mD)'], 'prop3': '', 'prop4': ''},
        'Winland': {'param1': 'Garganta de Poro (Winland R35)', 'param2': '', 'param3': '', 'param4': '', 'prop1': ['Permeabilidade (mD)', 'Porosidade (%)'], 'prop2': 'Porosidade (%)', 'prop3': '', 'prop4': ''},
        'Lucia': {'param1': 'Classificação de Lucia (Gráfico de classes carbonáticas)', 'param2': '', 'param3': '', 'param4': '', 'prop1': ['Permeabilidade (mD)', 'Porosidade Interpartícula (%)'], 'prop2': '', 'prop3': '', 'prop4': ''},
        'RQIFZI':  {'param1': 'RQI (μm)', 'param2': 'FZI (gráfico)', 'param3': '', 'param4': '', 'prop1': ['Permeabilidade', 'Porosidade (%)'], 'prop2': ['Permeabilidade', 'Porosidade (%)'], 'prop3': [], 'prop4': []},
        'TCoates':  {'param1': 'FFI', 'param2': 'BVI', 'param3': 'Permeabilidade (mD)', 'param4': 'Swir (%)', 'prop1': ['Swir (%)', 'Porosidade (%)'], 'prop2': ['Swir (%)', 'Porosidade (%)'], 'prop3': ['Swir (%)', 'Porosidade (%)'], 'prop4': ['Permeabilidade (mD)', 'Porosidade (%)']},
        'KCarman': {'param1': 'Permeabilidade (mD)', 'param2': 'SVgr (cm-1)', 'param3': '', 'param4': '', 'prop1': ['Porosidade (%)', 'SVgr (cm-1)'], 'prop2': ['Permeabilidade (mD)', 'Porosidade (%)'], 'prop3': ['Permeabilidade (cm²)', 'Porosidade (decimal)'], 'prop4': []}
    }
    ready2calculate = Signal(bool)

    def __init__(self, _mode='KCarman'):
        super().__init__()

        self.mode = _mode

        self.subtitle = QLabel('Calcular:')

        self.label1 = QLabel()
        self.label2 = QLabel()
        self.label3 = QLabel()
        self.label4 = QLabel()

        self.labels = [self.label1, self.label2, self.label3, self.label4]

        for l in self.labels:
            l.setWordWrap(True)

        self.param1 = QRadioButton()
        self.param2 = QRadioButton()
        self.param3 = QRadioButton()
        self.param4 = QRadioButton()

        self.x_column = QLineEdit()
        self.y_column = QLineEdit()
        self.z_column = QLineEdit()
        self.destination_column = QLineEdit()

        self.results_l = QLabel('Resultados da análise: ')
        self.results = QTextEdit()

        self.unit_selector = Dropdown.Dropdown(['Darcy', 'SI'])

        self.run = QPushButton('Começar Análise')

        self.connections()
        self.changeMode(_mode)
        self.buildLayout()

        self.property_to_calculate = self.property_to_calculate = self.polymorphic_states[self.mode]['param1']
        self.payload = {}

        stly_sheet = "QRadioButton::indicator {width: 13px; height: 13px;} QRadioButton::indicator::unchecked {image: url(:/images/radiobutton_unchecked.png)} QRadioButton::indicator:unchecked:hover {image: url(:/images/radiobutton_unchecked_hover.png);}"

        self.subtitle.setStyleSheet('color: white')
        self.label1.setStyleSheet('color: white')
        self.label2.setStyleSheet('color: white')
        self.label3.setStyleSheet('color: white')
        self.label4.setStyleSheet('color: white')
        self.param1.setStyleSheet('color: white')
        self.param2.setStyleSheet('color: white')
        self.param3.setStyleSheet('color: white')
        self.param4.setStyleSheet('color: white')
        self.x_column.setStyleSheet('background-color: white; color: black')
        self.y_column.setStyleSheet('background-color: white; color: black')
        self.z_column.setStyleSheet('background-color: white; color: black')
        self.results.setStyleSheet('background-color: white; color: black')
        self.setStyleSheet('color:white; font-family: Bahnschrift SemiLight Condensed; font-size: 14px;')


    def buildLayout(self):
        layout = QFormLayout()

        a = self.polymorphic_states[self.mode]['prop1']
        b = self.polymorphic_states[self.mode]['prop2']
        c = self.polymorphic_states[self.mode]['prop3']
        d = self.polymorphic_states[self.mode]['prop4']

        layout.addWidget(self.subtitle)

        if len(self.param1.text()) != 0:
            layout.addWidget(self.param1)
        if len(self.param2.text()) != 0:
            layout.addWidget(self.param2)
        if len(self.param3.text()) != 0:
            layout.addWidget(self.param3)
        if len(self.param4.text()) != 0:
            layout.addWidget(self.param4)

        if len(self.label1.text()) != 0:
            layout.addWidget(self.label1)
            layout.addWidget(self.x_column)
        if len(self.label2.text()) != 0:
            layout.addWidget(self.label2)
            layout.addWidget(self.y_column)
        if len(self.label3.text()) != 0:
            layout.addWidget(self.label3)
            layout.addWidget(self.z_column)
        #if len(self.label4.text()) != 0:
            #layout.addWidget(self.label4)
            #layout.addWidget(self.destination_column)

        if self.mode == 'RQIFZI':
            layout.addWidget(QLabel('Sistema de Unidades: '))
            layout.addWidget(self.unit_selector)

        layout.addWidget(self.run)

        if self.mode == 'DParsons':
            layout.addWidget(self.results_l)
            layout.addWidget(self.results)
        if self.mode == 'Lucia':
            layout.addWidget(self.results_l)
            layout.addWidget(self.results)

        self.setLayout(layout)

    def connections(self):
        self.param1.clicked.connect(self.param1Active)
        self.param2.clicked.connect(self.param2Active)
        self.param3.clicked.connect(self.param3Active)
        self.param4.clicked.connect(self.param4Active)
        self.run.clicked.connect(self.collectPayload)

    def changeMode(self, _mode):
        self.mode = _mode
        self.param1.setText(self.polymorphic_states[self.mode]['param1'])
        self.param1.click()
        self.param2.setText(self.polymorphic_states[self.mode]['param2'])
        self.param3.setText(self.polymorphic_states[self.mode]['param3'])
        self.param4.setText(self.polymorphic_states[self.mode]['param4'])

    def param1Active(self):
        self.label1.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop1'][0])
        try:
            self.label2.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop1'][1])
        except IndexError:
            self.label2.setText('')
        try:
            self.label3.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop1'][2])
        except IndexError:
            self.label3.setText('')
        self.label4.setText('Selecione a coluna para os valores de ' + self.polymorphic_states[self.mode]['param1'])
        self.property_to_calculate = self.polymorphic_states[self.mode]['param1']

    def param2Active(self):
        self.label1.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop2'][0])
        try:
            self.label2.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop2'][1])
        except IndexError:
            self.label2.setText('')
        try:
            self.label3.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop2'][2])
        except IndexError:
            self.label3.setText('')
        self.label4.setText('Selecione a coluna para os valores de ' + self.polymorphic_states[self.mode]['param2'])
        self.property_to_calculate = self.polymorphic_states[self.mode]['param2']

    def param3Active(self):
        self.label1.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop3'][0])
        try:
            self.label2.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop3'][1])
        except IndexError:
            self.label2.setText('')
        try:
            self.label3.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop3'][2])
        except IndexError:
            self.label3.setText('')
        self.label4.setText('Selecione a coluna para os valores de ' + self.polymorphic_states[self.mode]['param3'])
        self.property_to_calculate = self.polymorphic_states[self.mode]['param3']

    def param4Active(self):
        self.label1.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop4'][0])
        try:
            self.label2.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop4'][1])
        except IndexError:
            self.label2.setText('')
        try:
            self.label3.setText('Selecione a coluna com os valores de ' + self.polymorphic_states[self.mode]['prop4'][2])
        except IndexError:
            self.label3.setText('')
        self.label4.setText('Selecione a coluna para os valores de ' + self.polymorphic_states[self.mode]['param4'])
        self.property_to_calculate = self.polymorphic_states[self.mode]['param4']

    def collectPayload(self):
        payload = {
            'calculate': self.property_to_calculate,
            'x_column': self.x_column.text(),
            'y_column': self.y_column.text(),
            'z_column': self.z_column.text(),
            'column_range': self.unit_selector.currentText(),
            'output_selection': None,
            'output_column': self.destination_column.text()
        }
        self.payload = payload
        print(payload)
        self.ready2calculate.emit(True)