Exemple #1
0
    def createIntegerLineEdit(self, minimum=None, maximum=None, placeholder=""):
        line_edit = ClearableLineEdit(placeholder=placeholder)
        validator = QIntValidator()

        if minimum is not None:
            validator.setBottom(minimum)

        if maximum is not None:
            validator.setTop(maximum)

        line_edit.setValidator(validator)
        return line_edit
    def __set_validators(self):
        '''
        set validators for edit fields
        '''

        validator_positive_integer = QIntValidator()
        validator_positive_integer.setBottom(0)

        validator_positive_double = MyDoubleValidator(True, self)
        validator_zero_one = MyZeroOneValidator(self)

        self.edit_specific_data_0.setValidator(validator_positive_double)
        self.edit_specific_data_1.setValidator(validator_positive_double)
        self.edit_specific_data_2.setValidator(validator_positive_double)
        self.edit_geometry_coeficient.setValidator(validator_positive_double)
        self.edit_geometry_type.setValidator(validator_positive_integer)
        self.edit_storativity.setValidator(validator_zero_one)
        self.editl_dual_porosity.setValidator(validator_zero_one)
        self.edit_type.setValidator(validator_positive_integer)
    def __init__(self, parent=None, aptinkerQSettings=None):
        """Constructor"""

        QDialog.__init__(self, parent=parent)

        self.setupUi(self)

        self.setWindowFlags(Qt.Window)  # To add Maximize & Minimize buttons
        self.setWindowTitle('Select Snapshot from Database')

        # Load Startup Preferences for Snapshot Table
        self.default_ss_pref = dict(
            vis_col_key_list=config.DEF_VIS_COL_KEYS['snapshot_DB'][:])
        if osp.exists(PREF_SS_JSON_FILEPATH):
            with open(PREF_SS_JSON_FILEPATH, 'r') as f:
                self.ss_pref = json.load(f)
        else:
            self.ss_pref = self.default_ss_pref

        # Load Startup Preferences for Snapshot Meta Table
        self.default_ss_meta_pref = dict(vis_col_key_list=[
            'ss_id', 'config_id', 'ss_ctime', 'ss_name', 'ss_username'
        ])
        if osp.exists(PREF_SS_META_JSON_FILEPATH):
            with open(PREF_SS_META_JSON_FILEPATH, 'r') as f:
                self.ss_meta_pref = json.load(f)
        else:
            self.ss_meta_pref = self.default_ss_meta_pref

        self.ssDBViewWidget = SnapshotDBViewWidget(self.groupBox_selected_ss,
                                                   DB_selector=True)
        self.tableView_ss = self.ssDBViewWidget.tableView

        self.ssMetaDBViewWidget = SnapshotMetaDBViewWidget(
            self.groupBox_search_result)
        self.tableView_ss_meta = self.ssMetaDBViewWidget.tableView
        self.textEdit_description = \
            self.ssMetaDBViewWidget.textEdit_description

        self.settings = QSettings('APHLA', 'TinkerSSDBSelector')
        self.loadViewSettings()

        self._aptinkerQSettings = aptinkerQSettings

        self.pushButton_search.setIcon(QIcon(':/search.png'))

        all_ctime_operators = [
            self.comboBox_time_created_1.itemText(i)
            for i in range(self.comboBox_time_created_1.count())
        ]
        self.comboBox_time_created_1.setCurrentIndex(
            all_ctime_operators.index(''))
        self.dateTimeEdit_time_created_1.setDateTime(
            QDateTime.currentDateTime())
        self.dateTimeEdit_time_created_2.setDateTime(
            QDateTime.currentDateTime())

        self.search_params = dict(ss_id_1='',
                                  ss_id_2='',
                                  config_id_1='',
                                  config_id_2='',
                                  ss_ref_step_size_1='',
                                  ss_ref_step_size_2='',
                                  ss_name='',
                                  ss_desc='',
                                  ss_username='',
                                  ss_ctime_1='',
                                  ss_ctime_2='',
                                  ss_synced_gruop_weight='',
                                  ss_masar_id_1='',
                                  ss_masar_id_2='')

        db_id_validator = QIntValidator()
        db_id_validator.setBottom(1)
        self.lineEdit_ss_id_1.setValidator(db_id_validator)
        self.lineEdit_ss_id_2.setValidator(db_id_validator)
        self.lineEdit_config_id_1.setValidator(db_id_validator)
        self.lineEdit_config_id_2.setValidator(db_id_validator)
        self.lineEdit_masar_id_1.setValidator(db_id_validator)
        self.lineEdit_masar_id_2.setValidator(db_id_validator)

        self.prev_valid_ref_step_sizes = dict(lineEdit_ref_step_size_1=np.nan,
                                              lineEdit_ref_step_size_2=np.nan)

        # Set up Snapshot Table
        self.ss_model = SnapshotModel(self.ss_pref['vis_col_key_list'])
        self.tableModel_ss = self.ss_model.table
        proxyModel = QSortFilterProxyModel()
        proxyModel.setSourceModel(self.tableModel_ss)
        proxyModel.setDynamicSortFilter(False)
        tbV = self.tableView_ss
        tbV.setModel(proxyModel)
        tbV.setItemDelegate(
            SnapshotDBTableViewItemDelegate(tbV, self.tableModel_ss,
                                            tbV.parent()))

        #self.db = TinkerMainDatabase()
        self.db = self.ss_model.db
        if '[ss_meta_table text view]' not in self.db.getViewNames(
                square_brackets=True):
            self.db.create_temp_ss_meta_table_text_view()

        # Set up Snapshot Meta Table
        self.ss_meta_all_col_keys = self.ssMetaDBViewWidget.all_col_keys
        self.search_result = {k: [] for k in self.ss_meta_all_col_keys}

        self.tableModel_ss_meta = MetaTableModel(self.search_result,
                                                 self.ssMetaDBViewWidget)
        proxyModel = QSortFilterProxyModel()
        proxyModel.setSourceModel(self.tableModel_ss_meta)
        proxyModel.setDynamicSortFilter(False)
        tbV = self.tableView_ss_meta
        tbV.setModel(proxyModel)
        self.selectionModel = QItemSelectionModel(proxyModel)
        tbV.setSelectionModel(self.selectionModel)

        # Apply Visible Column Preference to Snapshot Meta Table
        ss_meta_vis_col_name_list = [
            self.ssMetaDBViewWidget.col_names_wo_desc[
                self.ssMetaDBViewWidget.col_keys_wo_desc.index(k)]
            for k in self.ss_meta_pref['vis_col_key_list']
        ]
        self.ssMetaDBViewWidget.on_column_selection_change(
            ss_meta_vis_col_name_list, force_visibility_update=True)

        # Make connection

        self.connect(self.lineEdit_ref_step_size_1,
                     SIGNAL('editingFinished()'), self.validate_ref_step_size)
        self.connect(self.lineEdit_ref_step_size_2,
                     SIGNAL('editingFinished()'), self.validate_ref_step_size)

        self.connect(self.pushButton_search, SIGNAL('clicked()'),
                     self.update_search)

        self.connect(
            self.selectionModel,
            SIGNAL(
                'currentRowChanged(const QModelIndex &, const QModelIndex &)'),
            self.on_selection_change)
    def __init__(self, parent=None, aptinkerQSettings=None):
        """Constructor"""

        QDialog.__init__(self, parent=parent)

        self.setupUi(self)

        self.setWindowFlags(Qt.Window) # To add Maximize & Minimize buttons
        self.setWindowTitle('Select Snapshot from Database')

        # Load Startup Preferences for Snapshot Table
        self.default_ss_pref = dict(
            vis_col_key_list=config.DEF_VIS_COL_KEYS['snapshot_DB'][:])
        if osp.exists(PREF_SS_JSON_FILEPATH):
            with open(PREF_SS_JSON_FILEPATH, 'r') as f:
                self.ss_pref = json.load(f)
        else:
            self.ss_pref = self.default_ss_pref

        # Load Startup Preferences for Snapshot Meta Table
        self.default_ss_meta_pref = dict(
            vis_col_key_list=['ss_id', 'config_id', 'ss_ctime', 'ss_name',
                              'ss_username'])
        if osp.exists(PREF_SS_META_JSON_FILEPATH):
            with open(PREF_SS_META_JSON_FILEPATH, 'r') as f:
                self.ss_meta_pref = json.load(f)
        else:
            self.ss_meta_pref = self.default_ss_meta_pref

        self.ssDBViewWidget = SnapshotDBViewWidget(self.groupBox_selected_ss,
                                                   DB_selector=True)
        self.tableView_ss = self.ssDBViewWidget.tableView

        self.ssMetaDBViewWidget = SnapshotMetaDBViewWidget(
            self.groupBox_search_result)
        self.tableView_ss_meta = self.ssMetaDBViewWidget.tableView
        self.textEdit_description = \
            self.ssMetaDBViewWidget.textEdit_description

        self.settings = QSettings('APHLA', 'TinkerSSDBSelector')
        self.loadViewSettings()

        self._aptinkerQSettings = aptinkerQSettings

        self.pushButton_search.setIcon(QIcon(':/search.png'))

        all_ctime_operators = [
            self.comboBox_time_created_1.itemText(i)
            for i in range(self.comboBox_time_created_1.count())]
        self.comboBox_time_created_1.setCurrentIndex(
            all_ctime_operators.index(''))
        self.dateTimeEdit_time_created_1.setDateTime(
            QDateTime.currentDateTime())
        self.dateTimeEdit_time_created_2.setDateTime(
            QDateTime.currentDateTime())

        self.search_params = dict(
            ss_id_1='', ss_id_2='', config_id_1='', config_id_2='',
            ss_ref_step_size_1='', ss_ref_step_size_2='',
            ss_name='', ss_desc='', ss_username='', ss_ctime_1='', ss_ctime_2='',
            ss_synced_gruop_weight='', ss_masar_id_1='', ss_masar_id_2='')

        db_id_validator = QIntValidator()
        db_id_validator.setBottom(1)
        self.lineEdit_ss_id_1.setValidator(db_id_validator)
        self.lineEdit_ss_id_2.setValidator(db_id_validator)
        self.lineEdit_config_id_1.setValidator(db_id_validator)
        self.lineEdit_config_id_2.setValidator(db_id_validator)
        self.lineEdit_masar_id_1.setValidator(db_id_validator)
        self.lineEdit_masar_id_2.setValidator(db_id_validator)

        self.prev_valid_ref_step_sizes = dict(
            lineEdit_ref_step_size_1=np.nan, lineEdit_ref_step_size_2=np.nan)

        # Set up Snapshot Table
        self.ss_model = SnapshotModel(self.ss_pref['vis_col_key_list'])
        self.tableModel_ss = self.ss_model.table
        proxyModel = QSortFilterProxyModel()
        proxyModel.setSourceModel(self.tableModel_ss)
        proxyModel.setDynamicSortFilter(False)
        tbV = self.tableView_ss
        tbV.setModel(proxyModel)
        tbV.setItemDelegate(SnapshotDBTableViewItemDelegate(
            tbV, self.tableModel_ss, tbV.parent()))

        #self.db = TinkerMainDatabase()
        self.db = self.ss_model.db
        if '[ss_meta_table text view]' not in self.db.getViewNames(
            square_brackets=True):
            self.db.create_temp_ss_meta_table_text_view()

        # Set up Snapshot Meta Table
        self.ss_meta_all_col_keys = self.ssMetaDBViewWidget.all_col_keys
        self.search_result = {k: [] for k in self.ss_meta_all_col_keys}

        self.tableModel_ss_meta = MetaTableModel(
            self.search_result, self.ssMetaDBViewWidget)
        proxyModel = QSortFilterProxyModel()
        proxyModel.setSourceModel(self.tableModel_ss_meta)
        proxyModel.setDynamicSortFilter(False)
        tbV = self.tableView_ss_meta
        tbV.setModel(proxyModel)
        self.selectionModel = QItemSelectionModel(proxyModel)
        tbV.setSelectionModel(self.selectionModel)

        # Apply Visible Column Preference to Snapshot Meta Table
        ss_meta_vis_col_name_list = [
            self.ssMetaDBViewWidget.col_names_wo_desc[
                self.ssMetaDBViewWidget.col_keys_wo_desc.index(k)]
            for k in self.ss_meta_pref['vis_col_key_list']]
        self.ssMetaDBViewWidget.on_column_selection_change(
            ss_meta_vis_col_name_list, force_visibility_update=True)

        # Make connection

        self.connect(self.lineEdit_ref_step_size_1, SIGNAL('editingFinished()'),
                     self.validate_ref_step_size)
        self.connect(self.lineEdit_ref_step_size_2, SIGNAL('editingFinished()'),
                     self.validate_ref_step_size)

        self.connect(self.pushButton_search, SIGNAL('clicked()'),
                     self.update_search)

        self.connect(
            self.selectionModel,
            SIGNAL(
                'currentRowChanged(const QModelIndex &, const QModelIndex &)'),
            self.on_selection_change
        )
Exemple #5
0
    from PyQt5.QtWidgets import (QActionGroup, QVBoxLayout, QMenu, 
        QFileDialog, QMessageBox, QLineEdit, QGridLayout, QWidget,
        QApplication, QPushButton, QAction, QMainWindow, QTabWidget,
        QTableWidget, QTableWidgetItem, QLabel, QComboBox, QListWidget)
import logging
logger = logging.getLogger(__name__)
sys.path.append('.')
sys.path.append('..')
from strtypes import strlist, BOOL
from daqController import worker, remove_slot
from daqAnalysis import daqCollection
from networking.client import PyClient

double_validator = QDoubleValidator() # floats
int_validator    = QIntValidator()    # integers
int_validator.setBottom(0) # don't allow -ve numbers
bool_validator = QIntValidator(0,1)   # boolean, 0=False, 1=True


def channel_stats(text):
    """Convert a string list of channel settings into an 
    ordered dictionary: "[['Dev2/ai0', '', '1.0', '0.0', '0', '0', '0']]"
    -> OrderedDict([('Dev2/ai0', {'label':'', 'offset':1.0,
        'range':0, 'acquire':0, 'plot':0})])
    """
    d = OrderedDict()
    keys = ['label', 'scale', 'offset', 'range', 'acquire', 'plot']
    types = [str, float, float, float, BOOL, BOOL]
    for channel in map(strlist, re.findall("\[['\w,\s\./]+\]", text)):
        d[channel[0]] = OrderedDict([(keys[i], types[i](val)) 
                for i, val in enumerate(channel[1:])])
    def __init__(self, status, actions):
        super (I2CControlView, self).__init__()
        self.status = status
        self.actions = actions

        f = open(I2C_DESC_LOC, 'r')
        s = f.read()
        f.close()
        s = s.split("DESCRIPTION START")[1]
        s = s.split("DESCRIPTION END")[0]
        #print "s: %s" % s
        i2c_desc = QLabel(s)
        i2c_desc.setMaximumWidth(500)
        i2c_desc.setWordWrap(True)
        i2c_desc.setAlignment(QtCore.Qt.AlignTop)


        run_button = QPushButton("Run")
        run_button.setToolTip("Execute the I2C Transaction")
        run_button.clicked.connect(self.actions.i2c_run)

        reload_button = QPushButton("Reload")
        reload_button.setToolTip("Reload I2C Transactions")
        reload_button.clicked.connect(self.actions.i2c_run)

        pause_button = QPushButton("Pause")
        pause_button.setToolTip("Pause I2C Execution flow")
        pause_button.clicked.connect(self.actions.i2c_pause)

        stop_button = QPushButton("Stop")
        stop_button.setToolTip("Stop I2C Execution")
        stop_button.clicked.connect(self.actions.i2c_stop)

        reset_button = QPushButton("Reset")
        reset_button.setToolTip("Reset the current execution")
        reset_button.clicked.connect(self.actions.i2c_reset)

        step_button = QPushButton("Step")
        step_button.setToolTip("Execute one I2C Transaction")
        step_button.clicked.connect(self.actions.i2c_step)
       
        loop_step_button = QPushButton("Loop Step")
        loop_step_button.setToolTip("Iterate through the I2C Loop one time")
        loop_step_button.clicked.connect(self.actions.i2c_loop_step)

        update_delay_button = QPushButton("Update Delay (ms)")
        update_delay_button.setToolTip("Update the delay in ms between I2C Transactions")
        update_delay_button.clicked.connect(self.update_delay)

        self.delay_le = QLineEdit("100")
        self.delay_le.setAlignment(QtCore.Qt.AlignRight)
        v = QIntValidator()
        v.setBottom(1)


        self.execute_status = QLabel("Idle")

        self.default_slave_addr = QLineEdit()
        self.default_slave_addr.setAlignment(QtCore.Qt.AlignRight)
        self.default_slave_addr.setText("0x10")
        self.default_slave_addr.textChanged.connect(self.custom_validator)
        self.default_slave_addr.returnPressed.connect(self.update_all_slave_addresses)
        self.update_all_slave_addr = QPushButton("Update All Slave Addr")
        self.update_all_slave_addr.clicked.connect(self.update_all_slave_addresses)

        layout = QGridLayout()

        layout.addWidget(i2c_desc, 0, 0, 1, 2)
        #Add Default I2C Address
        default_addr_layout = QGridLayout()

        default_addr_layout.addWidget(QLabel("Default Slave Addr"), 0, 0, 1, 1)
        default_addr_layout.addWidget(self.default_slave_addr, 0, 1, 1, 1)
        default_addr_layout.addWidget(self.update_all_slave_addr, 1, 0, 1, 2)

        #Add Buttons/Status Layout
        layout.addLayout(default_addr_layout,         2, 0, 1, 2)
                                                      

        buttons_layout = QGridLayout()
        buttons_layout.addWidget(run_button,          0, 0, 1, 2)
        buttons_layout.addWidget(reload_button,       1, 0, 1, 2)
        buttons_layout.addWidget(step_button,         2, 0, 1, 2)
        buttons_layout.addWidget(loop_step_button,    3, 0, 1, 2)
        buttons_layout.addWidget(pause_button,        4, 0, 1, 2)
        buttons_layout.addWidget(stop_button,         5, 0, 1, 2)
        buttons_layout.addWidget(reset_button,        6, 0, 1, 2)
        buttons_layout.addWidget(update_delay_button, 7, 0, 1, 1)
        buttons_layout.addWidget(self.delay_le,       7, 1, 1, 1)
        buttons_layout.addWidget(QLabel("Status:"),   8, 0, 1, 1)
        buttons_layout.addWidget(self.execute_status, 8, 1, 1, 1)

        layout.addLayout(buttons_layout,              3, 0, 1, 2)
        self.actions.i2c_execute_status_update.connect(self.status_update)
        self.setLayout(layout)