def add_subject(self, setup=None, subject=None):
     '''Add row to table allowing extra subject to be specified.'''
     setup_cbox = QtGui.QComboBox()
     setup_cbox.addItems(self.available_setups if self.
                         available_setups else ['select setup'])
     setup_cbox.activated.connect(self.update_available_setups)
     remove_button = QtGui.QPushButton('remove')
     ind = QtCore.QPersistentModelIndex(self.model().index(
         self.n_subjects, 2))
     remove_button.clicked.connect(lambda: self.remove_subject(ind.row()))
     add_button = QtGui.QPushButton('add')
     add_button.clicked.connect(self.add_subject)
     self.setCellWidget(self.n_subjects, 0, setup_cbox)
     self.setCellWidget(self.n_subjects, 2, remove_button)
     self.insertRow(self.n_subjects + 1)
     self.setCellWidget(self.n_subjects + 1, 2, add_button)
     if setup:
         cbox_set_item(setup_cbox, setup)
     if subject:
         subject_item = QtGui.QTableWidgetItem()
         subject_item.setText(subject)
         self.setItem(self.n_subjects, 1, subject_item)
     self.n_subjects += 1
     self.update_available_setups()
     null_resize(self)
 def connect_buttons(self, row):
     ind = QtCore.QPersistentModelIndex(self.model().index(row, 2))
     self.cellWidget(row, 0).clicked.connect(
         lambda: self.swap_with_above(ind.row()))  # up arrow connection
     self.cellWidget(row, 1).clicked.connect(
         lambda: self.swap_with_below(ind.row()))  # down arrow connection
     self.cellWidget(row, 10).clicked.connect(
         lambda: self.remove_row(ind.row()))  # remove button connection
 def add_variable(self, var_dict=None):
     '''Add a row to the variables table.'''
     variable_cbox = QtGui.QComboBox()
     variable_cbox.activated.connect(self.update_available)
     subject_cbox = QtGui.QComboBox()
     subject_cbox.activated.connect(self.update_available)
     persistent = TableCheckbox()
     summary = TableCheckbox()
     remove_button = QtGui.QPushButton('remove')
     ind = QtCore.QPersistentModelIndex(self.model().index(
         self.n_variables, 2))
     remove_button.clicked.connect(lambda: self.remove_variable(ind.row()))
     remove_button.setIcon(QtGui.QIcon("gui/icons/remove.svg"))
     add_button = QtGui.QPushButton('   add   ')
     add_button.setIcon(QtGui.QIcon("gui/icons/add.svg"))
     add_button.clicked.connect(self.add_variable)
     self.insertRow(self.n_variables + 1)
     self.setCellWidget(self.n_variables, 0, variable_cbox)
     self.setCellWidget(self.n_variables, 1, subject_cbox)
     self.setCellWidget(self.n_variables, 3, persistent)
     self.setCellWidget(self.n_variables, 4, summary)
     self.setCellWidget(self.n_variables, 5, remove_button)
     self.setCellWidget(self.n_variables + 1, 5, add_button)
     if var_dict:  # Set cell values from provided dictionary.
         variable_cbox.addItems([var_dict['name']])
         subject_cbox.addItems([var_dict['subject']])
         value_item = QtGui.QTableWidgetItem()
         value_item.setText(var_dict['value'])
         self.setItem(self.n_variables, 2, value_item)
         persistent.setChecked(var_dict['persistent'])
         summary.setChecked(var_dict['summary'])
     else:
         variable_cbox.addItems(['select variable'] +
                                self.available_variables)
         if self.n_variables > 0:  # Set variable to previous variable if available.
             v_name = str(
                 self.cellWidget(self.n_variables - 1, 0).currentText())
             if v_name in self.available_variables:
                 cbox_set_item(variable_cbox, v_name)
                 subject_cbox.addItems(self.available_subjects(v_name))
     self.n_variables += 1
     self.update_available()
     null_resize(self)
 def add_subject(self, setup=None, subject=None, do_run=None):
     '''Add row to table allowing extra subject to be specified.'''
     setup_cbox = QtGui.QComboBox()
     setup_cbox.addItems(self.available_setups if self.
                         available_setups else ['select setup'])
     if self.unallocated_setups:
         setup_cbox.setCurrentIndex(
             self.available_setups.index(self.unallocated_setups[0]))
     setup_cbox.activated.connect(self.update_available_setups)
     remove_button = QtGui.QPushButton('remove')
     remove_button.setIcon(QtGui.QIcon("gui/icons/remove.svg"))
     ind = QtCore.QPersistentModelIndex(self.model().index(
         self.n_subjects, 2))
     remove_button.clicked.connect(lambda: self.remove_subject(ind.row()))
     add_button = QtGui.QPushButton('add')
     add_button.setIcon(QtGui.QIcon("gui/icons/add.svg"))
     add_button.clicked.connect(self.add_subject)
     run_checkbox = TableCheckbox()
     if do_run == None:
         run_checkbox.setChecked(
             True)  #new subjects are set to "Run" by default
     else:
         run_checkbox.setChecked(do_run)
     self.setCellWidget(self.n_subjects, 0, run_checkbox)
     self.setCellWidget(self.n_subjects, 1, setup_cbox)
     self.setCellWidget(self.n_subjects, 3, remove_button)
     self.insertRow(self.n_subjects + 1)
     self.setCellWidget(self.n_subjects + 1, 3, add_button)
     if setup:
         cbox_set_item(setup_cbox, setup)
     if subject:
         subject_item = QtGui.QTableWidgetItem()
         subject_item.setText(subject)
         self.setItem(self.n_subjects, 2, subject_item)
     self.n_subjects += 1
     self.update_available_setups()
     null_resize(self)