Esempio n. 1
0
    def __init__(self, controller, model):
        '''
        Constructor
        '''
        super(UserInterface, self).__init__()
        self.controller = controller
        self.model = model
        '''
        UserInterface реализует паттерн "Наблюдатель"
        подписываясь на изменения в модели. View НЕ РАЗРЕШАЕТСЯ
        вносить изменения в модель напрямую, только через один
        из контроллеров. В то же время разрешается прямое чтение
        из модели
        '''
        self.model.add_observer(self)
        self._ui = Ui_MainWindow()
        self._ui.setupUi(self)
        # Настройки
        self.settings = {}
        self.settings["oil_density"] = 800
        self.settings["water_density"] = 1000
        self.settings["debug"] = False
        self.settings["lateral"] = True

        # Диалоги и второстепенные окна
        self._progress = ProgressDialog()
        self._prefences = ConfigurationDialog(self.settings)

        # Инициализация логики
        self._init_logic()

        self.show()
Esempio n. 2
0
class UserInterface(QtGui.QMainWindow):
    '''
    classdocs
    '''

    def __init__(self, controller, model):
        '''
        Constructor
        '''
        super(UserInterface, self).__init__()
        self.controller = controller
        self.model = model
        '''
        UserInterface реализует паттерн "Наблюдатель"
        подписываясь на изменения в модели. View НЕ РАЗРЕШАЕТСЯ
        вносить изменения в модель напрямую, только через один
        из контроллеров. В то же время разрешается прямое чтение
        из модели
        '''
        self.model.add_observer(self)
        self._ui = Ui_MainWindow()
        self._ui.setupUi(self)
        # Настройки
        self.settings = {}
        self.settings["oil_density"] = 800
        self.settings["water_density"] = 1000
        self.settings["debug"] = False
        self.settings["lateral"] = True

        # Диалоги и второстепенные окна
        self._progress = ProgressDialog()
        self._prefences = ConfigurationDialog(self.settings)

        # Инициализация логики
        self._init_logic()

        self.show()

    def _init_logic(self):
        self.connect(self._ui.toolButton, QtCore.SIGNAL("clicked()"),
                     self._load_file)
        self.connect(self._ui.pushButton_2, QtCore.SIGNAL("clicked()"),
                     self._ignition)
        self.connect(self._ui.action, QtCore.SIGNAL("triggered()"),
                     self._show_about)
        self.connect(self._ui.action_2, QtCore.SIGNAL("triggered()"),
                     self._open_limit_file)
        self.connect(self._ui.action_3, QtCore.SIGNAL("triggered()"),
                     self._prefences.show)
        self.connect(self._prefences, QtCore.SIGNAL("accepted()"),
                     self._prefences.save_settings)
        self.connect(self._prefences, QtCore.SIGNAL("rejected()"),
                     self._prefences.load_settings)

    def model_is_changed(self, signal):
        """
        Реакция на изменение модели
        Signal - кортеж который содержит в себе информацио о событии,
        например, ('complete',0) подразумевает что расчеты окончены
        без ошибок.
        """
        if signal == ('complete', 0):
            self._progress.close()
#            information_message("Завершено")
        elif signal[0] == 'progress':
            self._progress.setProgress(signal[1])
        elif signal[0] == 'error':
            self._progress.close()
            self.errorMessage("Ошибка")
            self.controller.emergency_shutdown("Ошибка при расчете модели")

    def _ignition(self):
        self.controller.transfer_consts(self.settings)
        if self._openfile:
            self.controller.execute_converter(self._openfile)
        else:
            error_message('Файл для чтения не указан')

    def _load_file(self):
        self._openfile = self.set_open_filename()
        self._ui.lineEdit.setText(self._openfile)

    def _show_about(self):
        about = QtGui.QDialog(self)
        ui = Ui_Form()
        ui.setupUi(about)
        about.show()

    def set_open_filename(self):
        options = QtGui.QFileDialog.Options()
        if not self._ui.native.isChecked():
            options |= QtGui.QFileDialog.DontUseNativeDialog
        filename, unused_filtr = QtGui.QFileDialog.getOpenFileName(
                    self._ui.toolButton,
                    u"Открыть",
                    "",
                    "Eclipse RSM File (*.rsm);;All Files (*)",
                    "",
                    options)
        if filename:
            return filename

    def set_save_filename(self):
        options = QtGui.QFileDialog.Options()
        if not self._ui.native.isChecked():
            options |= QtGui.QFileDialog.DontUseNativeDialog
        filename, unused_ok = QtGui.QFileDialog.getSaveFileName(
                self._ui.pushButton_2,
                u"Сохранить",
                "",
                "Excel File (*.xls);;All Files (*)", "", options)
        if filename:
            return filename

    def _open_limit_file(self):
        options = QtGui.QFileDialog.Options()
        if not self._ui.native.isChecked():
            options |= QtGui.QFileDialog.DontUseNativeDialog
        filename, unused_filtr = QtGui.QFileDialog.getOpenFileName(
                    self._ui.toolButton,
                    u"Открыть",
                    "",
                    "Well limit file (*.ini);;All Files (*)",
                    "",
                    options)
        if filename:
            self.controller.open_limit_file(filename)

    def reset(self):
        self.progress.close()