示例#1
0
    def __init__(self, parent=None, session=None):
        super(SettingsTab, self).__init__(parent)
        self.session = session
        self.layout = QtGui.QGridLayout()
        self.setLayout(self.layout)

        racers_box = QtGui.QGroupBox("Racer Configuration")
        racers_box_layout = QtGui.QGridLayout()
        racers_box.setLayout(racers_box_layout)
        self.layout.addWidget(racers_box, 0, 0)

        self.racers_table = QtGui.QTableView(self)
        self.racers_table.doubleClicked.connect(self.edit_racer)
        self.racers_table.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)
        self.racers_table.setSelectionMode(
            QtGui.QAbstractItemView.SingleSelection)
        self.racers_table_model = SQLAlchemyTableModel(
            session, Racer, [('name', Racer.name, 'name'),
                             ('hostname', Racer.hostname, 'hostname'),
                             ('location', Racer.location, 'location')])

        self.racers_table_selection_model = QtGui.QItemSelectionModel(
            self.racers_table_model)
        self.racers_table.setModel(self.racers_table_selection_model.model())
        self.racers_table.setSelectionModel(self.racers_table_selection_model)

        racers_box_layout.addWidget(self.racers_table, 0, 0, 1, 3)

        racers_add_button = QtGui.QPushButton("Add")
        racers_add_button.released.connect(self.add_racer)
        racers_box_layout.addWidget(racers_add_button, 1, 0)

        racers_edit_button = QtGui.QPushButton("Edit")
        racers_edit_button.released.connect(self.edit_racer)
        racers_box_layout.addWidget(racers_edit_button, 1, 1)

        racers_delete_button = QtGui.QPushButton("Delete")
        racers_delete_button.released.connect(self.delete_racer)
        racers_box_layout.addWidget(racers_delete_button, 1, 2)
示例#2
0
    def __init__(self, session=None, parent=None):
        super(ExperimentsTab, self).__init__(parent)
        self.session = session
        self.redis_conn = Redis()

        self.current_experiment = None

        self.layout = QtGui.QGridLayout()
        self.setLayout(self.layout)

        # experiments
        self.experiment_box = QtGui.QGroupBox(self, title="Experiments")
        self.experiment_box.setSizePolicy(QtGui.QSizePolicy.Minimum,
                                          QtGui.QSizePolicy.Minimum)
        self.layout.addWidget(self.experiment_box, 0, 0)
        self.experiment_box_layout = QtGui.QGridLayout(self.experiment_box)
        self.experiment_box.setLayout(self.experiment_box_layout)

        self.experiment_list = ExperimentComboBox(session=session)
        self.experiment_list.currentIndexChanged.connect(
            self.update_current_experiment)
        self.experiment_box_layout.addWidget(self.experiment_list, 0, 0)

        self.new_experiment_button = QtGui.QPushButton("New Experiment")
        self.new_experiment_button.released.connect(self.new_experiment)
        self.experiment_box_layout.addWidget(self.new_experiment_button, 0, 1)

        # data sources
        self.data_box = QtGui.QGroupBox(self,
                                        title="Trials for this Experiment")
        self.data_box.setSizePolicy(QtGui.QSizePolicy.Expanding,
                                    QtGui.QSizePolicy.Expanding)
        self.layout.addWidget(self.data_box, 1, 0, 1, 1)

        self.data_box_layout = QtGui.QGridLayout(self.data_box)
        self.data_box.setLayout(self.data_box_layout)

        self.trial_table = QtGui.QTableView(self)
        #        self.trial_table.doubleClicked.connect(self.edit_racer)
        #        self.trial_table.activated.connect(self.update_current_trial)
        self.trial_table.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)
        self.trial_table_model = SQLAlchemyTableModel(
            session, Trial, [('Type', Trial.discriminator, 'discriminator'),
                             ('Name', Trial.name, 'name'),
                             ('Reps', Trial.reps, 'reps'),
                             ('Start', Trial.start_date, 'start_date'),
                             ('End', Trial.end_date, 'end_date')])

        self.trial_table.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.trial_table.customContextMenuRequested.connect(
            self.display_context_menu)
        self.trial_table.doubleClicked.connect(self.edit_trial)
        self.trial_table.setSelectionMode(
            QtGui.QAbstractItemView.SingleSelection)

        self.trial_table_selection_model = QtGui.QItemSelectionModel(
            self.trial_table_model)
        self.trial_table.setModel(self.trial_table_selection_model.model())
        self.trial_table.setSelectionModel(self.trial_table_selection_model)
        self.trial_table_selection_model.selectionChanged.connect(
            self.update_current_trial)

        self.data_box_layout.addWidget(self.trial_table, 0, 0, 2, 1)

        self.add_trial_button = QtGui.QPushButton("New Trial")
        self.data_box_layout.addWidget(self.add_trial_button, 0, 1)
        self.add_trial_button.released.connect(self.new_trial)

        self.trial_details_box = QtGui.QGroupBox("Trial Details")
        self.trial_details_box.setSizePolicy(QtGui.QSizePolicy.Minimum,
                                             QtGui.QSizePolicy.Minimum)
        self.data_box_layout.addWidget(self.trial_details_box, 2, 0, 1, 1)
        self.trial_details_box_layout = QtGui.QGridLayout(
            self.trial_details_box)

        self.echo_trial_details = EchoTrialDetailsWidget()
        self.trial_details_box_layout.addWidget(self.echo_trial_details, 0, 0,
                                                1, 1)
        self.echo_trial_details.hide()

        self.http_trial_details = HttpTrialDetailsWidget()
        self.trial_details_box_layout.addWidget(self.http_trial_details, 0, 0,
                                                1, 1)

        self.racer_settings_widget = RacerDetailsWidget()
        self.trial_details_box_layout.addWidget(self.racer_settings_widget, 1,
                                                0, 1, 1)

        self.trial_status = TrialStatusWidget()
        #        self.trial_status.trial_edit.connect(self.show_edit_dialog)
        self.trial_status.trial_started.connect(self.start_trial)
        self.trial_status.trial_stopped.connect(self.stop_trial)
        self.trial_status.trial_refreshed.connect(self.update_trial_details)
        self.trial_status.trial_edit.connect(self.edit_trial)
        self.trial_details_box_layout.addWidget(self.trial_status, 0, 1, 2, 1)

        self.update_current_experiment(0)
        self.trial_table.resizeColumnsToContents()