def __init__(self, parent, main, app: FastFlixApp, *args, **kwargs): super().__init__(parent, *args, **kwargs) self.main = main self.app = app self.widgets = Box() self.labels = Box() self.opts = Box() self.only_int = QtGui.QIntValidator() self.only_float = QtGui.QDoubleValidator()
def append_more_cb(self): # print("---- append_more_cb()") # self.create_user_param() # self.scrollLayout.addRow(NewUserParam(self)) for idx in range(5): # self.main_layout.addLayout(NewUserParam(self)) hbox = QHBoxLayout() w = QCheckBox("") self.select.append(w) hbox.addWidget(w) w = QLineEdit() self.name.append(w) hbox.addWidget(w) w = QLineEdit() self.value.append(w) w.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(w) w = QLineEdit() w.setFixedWidth(self.units_width) self.units.append(w) hbox.addWidget(w) self.main_layout.addLayout(hbox) hbox = QHBoxLayout() w = QLabel("Desc:") hbox.addWidget(w) w = QLineEdit() self.description.append(w) hbox.addWidget(w) w.setStyleSheet("background-color: lightgray") # units = QLabel("micron^2/min") # units.setFixedWidth(units_width) # hbox.addWidget(units) self.main_layout.addLayout(hbox) self.count = self.count + 1 print(self.count)
def __init__(self): super().__init__() # global self.microenv_params self.param_d = {} # a dict of dicts - rwh/todo, used anymore? # self.substrate = {} self.current_substrate = None self.xml_root = None self.celldef_tab = None self.new_substrate_count = 1 # self.stacked_w = QStackedWidget() # self.stack_w = [] # self.stack_w.append(QStackedWidget()) # self.stacked_w.addWidget(self.stack_w[0]) #--------------- # self.cell_defs = CellDefInstances() self.microenv_hbox = QHBoxLayout() splitter = QSplitter() tree_widget_width = 160 self.tree = QTreeWidget() # tree is overkill; list would suffice; meh. # self.tree.setStyleSheet("background-color: lightgray") self.tree.setFixedWidth(tree_widget_width) # self.tree.currentChanged(self.tree_item_changed_cb) self.tree.itemClicked.connect(self.tree_item_changed_cb) # self.tree.itemSelectionChanged() # self.tree.setColumnCount(1) # self.tree.setCurrentItem(0) # rwh/TODO header = QTreeWidgetItem(["--- Substrate ---"]) self.tree.setHeaderItem(header) # cellname = QTreeWidgetItem(["virus"]) # self.tree.insertTopLevelItem(0,cellname) # cellname = QTreeWidgetItem(["interferon"]) # self.tree.insertTopLevelItem(1,cellname) self.microenv_hbox.addWidget(self.tree) self.scroll_cell_def_tree = QScrollArea() self.scroll_cell_def_tree.setWidget(self.tree) # splitter.addWidget(self.tree) splitter.addWidget(self.scroll_cell_def_tree) #------------------------------------------- # self.tab = QWidget() # self.tabs.resize(200,5) #------------------------------------------- label_width = 150 units_width = 80 # self.scroll = QScrollArea() self.scroll_area = QScrollArea() splitter.addWidget(self.scroll_area) # self.microenv_hbox.addWidget(self.scroll_area) self.microenv_params = QWidget() self.vbox = QVBoxLayout() self.vbox.addStretch(0) # self.microenv_hbox.addWidget(self.) #------------------ controls_hbox = QHBoxLayout() self.new_button = QPushButton("New") self.new_button.clicked.connect(self.new_substrate) controls_hbox.addWidget(self.new_button) self.copy_button = QPushButton("Copy") self.copy_button.clicked.connect(self.copy_substrate) controls_hbox.addWidget(self.copy_button) self.delete_button = QPushButton("Delete") self.delete_button.clicked.connect(self.delete_substrate) controls_hbox.addWidget(self.delete_button) # self.vbox.addLayout(hbox) # self.vbox.addWidget(QHLine()) #------------------ hbox = QHBoxLayout() label = QLabel("Name of substrate:") label.setFixedWidth(180) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.substrate_name = QLineEdit() # Want to validate name, e.g., starts with alpha, no special chars, etc. # self.cycle_trate0_0.setValidator(QtGui.QDoubleValidator()) # self.cycle_trate0_1.enter.connect(self.save_xml) hbox.addWidget(self.substrate_name) self.vbox.addLayout(hbox) #------------------ hbox = QHBoxLayout() label = QLabel("diffusion coefficient") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.diffusion_coef = QLineEdit() self.diffusion_coef.setValidator(QtGui.QDoubleValidator()) self.diffusion_coef.textChanged.connect(self.diffusion_coef_changed) # self.diffusion_coef.enter.connect(self.save_xml) hbox.addWidget(self.diffusion_coef) units = QLabel("micron^2/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("decay rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.decay_rate = QLineEdit() self.decay_rate.setValidator(QtGui.QDoubleValidator()) self.decay_rate.textChanged.connect(self.decay_rate_changed) # self.decay_rate.enter.connect(self.save_xml) hbox.addWidget(self.decay_rate) units = QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("initial condition") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.init_cond = QLineEdit() self.init_cond.setValidator(QtGui.QDoubleValidator()) self.init_cond.textChanged.connect(self.init_cond_changed) # self.init_cond.enter.connect(self.save_xml) hbox.addWidget(self.init_cond) units = QLabel("mmol") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("Dirichlet BC") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.dirichlet_bc = QLineEdit() self.dirichlet_bc.setValidator(QtGui.QDoubleValidator()) self.dirichlet_bc.textChanged.connect(self.dirichlet_bc_changed) # self.bdy_cond.enter.connect(self.save_xml) hbox.addWidget(self.dirichlet_bc) units = QLabel("mmol") units.setFixedWidth(units_width) hbox.addWidget(units) # <Dirichlet_boundary_condition units="dimensionless" enabled="false">0</Dirichlet_boundary_condition> self.dirichlet_bc_enabled = QCheckBox("on/off") self.dirichlet_bc_enabled.stateChanged.connect( self.dirichlet_toggle_cb) # self.motility_enabled.setAlignment(QtCore.Qt.AlignRight) # label.setFixedWidth(label_width) hbox.addWidget(self.dirichlet_bc_enabled) self.vbox.addLayout(hbox) #-------------------------- # <!-- # <Dirichlet_options> # <boundary_value ID="xmin" enabled="false">0</boundary_value> # <boundary_value ID="xmax" enabled="false">0</boundary_value> # <boundary_value ID="ymin" enabled="false">0</boundary_value> # <boundary_value ID="ymax" enabled="false">0</boundary_value> # <boundary_value ID="zmin" enabled="false">1</boundary_value> # <boundary_value ID="zmax" enabled="false">0</boundary_value> # </Dirichlet_options> # --> # </variable> dirichlet_options_bdy = QLabel("Dirichlet options per boundary:") # units.setFixedWidth(units_width) self.vbox.addWidget(dirichlet_options_bdy) #---- hbox = QHBoxLayout() label = QLabel("xmin:") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.dirichlet_xmin = QLineEdit() self.dirichlet_xmin.setValidator(QtGui.QDoubleValidator()) self.dirichlet_xmin.textChanged.connect(self.dirichlet_xmin_changed) hbox.addWidget(self.dirichlet_xmin) self.enable_xmin = QCheckBox("on/off") self.enable_xmin.stateChanged.connect(self.enable_xmin_cb) # self.motility_enabled.setAlignment(QtCore.Qt.AlignRight) # label.setFixedWidth(label_width) hbox.addWidget(self.enable_xmin) self.vbox.addLayout(hbox) #---- hbox = QHBoxLayout() label = QLabel("xmax:") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.dirichlet_xmax = QLineEdit() self.dirichlet_xmax.setValidator(QtGui.QDoubleValidator()) self.dirichlet_xmax.textChanged.connect(self.dirichlet_xmax_changed) hbox.addWidget(self.dirichlet_xmax) self.enable_xmax = QCheckBox("on/off") self.enable_xmax.stateChanged.connect(self.enable_xmax_cb) hbox.addWidget(self.enable_xmax) self.vbox.addLayout(hbox) #--------- hbox = QHBoxLayout() label = QLabel("ymin:") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.dirichlet_ymin = QLineEdit() self.dirichlet_ymin.setValidator(QtGui.QDoubleValidator()) self.dirichlet_ymin.textChanged.connect(self.dirichlet_ymin_changed) hbox.addWidget(self.dirichlet_ymin) self.enable_ymin = QCheckBox("on/off") self.enable_ymin.stateChanged.connect(self.enable_ymin_cb) # self.motility_enabled.setAlignment(QtCore.Qt.AlignRight) # label.setFixedWidth(label_width) hbox.addWidget(self.enable_ymin) self.vbox.addLayout(hbox) #---- hbox = QHBoxLayout() label = QLabel("ymax:") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.dirichlet_ymax = QLineEdit() self.dirichlet_ymax.setValidator(QtGui.QDoubleValidator()) self.dirichlet_ymax.textChanged.connect(self.dirichlet_ymax_changed) hbox.addWidget(self.dirichlet_ymax) self.enable_ymax = QCheckBox("on/off") self.enable_ymax.stateChanged.connect(self.enable_ymax_cb) hbox.addWidget(self.enable_ymax) self.vbox.addLayout(hbox) #--------- hbox = QHBoxLayout() label = QLabel("zmin:") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.dirichlet_zmin = QLineEdit() self.dirichlet_zmin.setValidator(QtGui.QDoubleValidator()) self.dirichlet_zmin.textChanged.connect(self.dirichlet_zmin_changed) hbox.addWidget(self.dirichlet_zmin) self.enable_zmin = QCheckBox("on/off") self.enable_zmin.stateChanged.connect(self.enable_zmin_cb) # self.motility_enabled.setAlignment(QtCore.Qt.AlignRight) # label.setFixedWidth(label_width) hbox.addWidget(self.enable_zmin) self.vbox.addLayout(hbox) #---- hbox = QHBoxLayout() label = QLabel("zmax:") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.dirichlet_zmax = QLineEdit() self.dirichlet_zmax.setValidator(QtGui.QDoubleValidator()) self.dirichlet_zmax.textChanged.connect(self.dirichlet_zmax_changed) hbox.addWidget(self.dirichlet_zmax) self.enable_zmax = QCheckBox("on/off") self.enable_zmax.stateChanged.connect(self.enable_zmax_cb) hbox.addWidget(self.enable_zmax) self.vbox.addLayout(hbox) #------------- # Toggles for overall microenv (all substrates) self.vbox.addWidget(QHLine()) hbox = QHBoxLayout() hbox.addWidget(QLabel("For all substrates: ")) self.gradients = QCheckBox("calculate gradients") # self.gradients.stateChanged.connect(self.gradients_cb) hbox.addWidget(self.gradients) # self.vbox.addLayout(hbox) # hbox = QHBoxLayout() self.track_in_agents = QCheckBox("track in agents") # self.track_in_agents.stateChanged.connect(self.track_in_agents_cb) hbox.addWidget(self.track_in_agents) self.vbox.addLayout(hbox) #-------------------------- # Dummy widget for filler?? # label = QLabel("") # label.setFixedHeight(1000) # # label.setStyleSheet("background-color: orange") # label.setAlignment(QtCore.Qt.AlignCenter) # self.vbox.addWidget(label) #================================================================== # self.vbox.setAlignment(QtCore.Qt.AlignTop) # spacerItem = QSpacerItem(20, 237, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) # spacerItem = QSpacerItem(100,500) # self.vbox.addItem(spacerItem) self.vbox.addStretch() self.microenv_params.setLayout(self.vbox) self.scroll_area.setVerticalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOn) self.scroll_area.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOn) self.scroll_area.setWidgetResizable(True) self.scroll_area.setWidget(self.microenv_params) # self.save_button = QPushButton("Save") # self.text = QLabel("Hello World",alignment=QtCore.Qt.AlignCenter) self.layout = QVBoxLayout(self) self.layout.addLayout(controls_hbox) # self.layout.addWidget(self.tabs) # self.layout.addWidget(QHLine()) # self.layout.addWidget(self.params) # self.layout.addWidget(self.scroll_area) self.layout.addWidget(splitter)
def argument_widget_factory(component: str, title: str = None, optional: bool = True) -> QtWidgets.QWidget: """ Factory function for generating various subclasses of instance `PySide6.QtWidgets.QWidgets` pre-configured for user-input. Parameters ---------- 1. **components** : ``str`` Allowable values: `date`, `decimal`, `currency`, `integer`, `select`, `flag`, `symbols`, `symbol`. If `components=None`, a `PySide6.QtWidgets.QWidget` will be returned. """ widget = atomic_widget_factory(None, None) widget.setObjectName('input-container') if optional: toggle_widget = QtWidgets.QCheckBox() toggle_widget.setObjectName('input-toggle') toggle_widget.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)) label_widget = QtWidgets.QLabel(title) label_widget.setAlignment(QtCore.Qt.AlignBottom) label_widget.setObjectName('input-label') if component == 'date': main_widget = QtWidgets.QDateEdit() main_widget.setDate(QtCore.QDate.currentDate()) main_widget.setMaximumDate(QtCore.QDate.currentDate()) main_widget.setMinimumDate(QtCore.QDate( constants.constants['PRICE_YEAR_CUTOFF'], 1, 1)) main_widget.setObjectName(component) main_widget.setEnabled(False) elif component == 'decimal': main_widget = QtWidgets.QLineEdit() main_widget.setObjectName(component) main_widget.setValidator( QtGui.QDoubleValidator(-100, 100, 5, main_widget)) main_widget.setEnabled(False) main_widget.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)) elif component == 'currency': main_widget = QtWidgets.QLineEdit() main_widget.setObjectName(component) # https://stackoverflow.com/questions/354044/what-is-the-best-u-s-currency-regex main_widget.setValidator(QtGui.QRegularExpressionValidator( r"[+-]?[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]{2})", main_widget)) main_widget.setEnabled(False) main_widget.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)) elif component == 'integer': main_widget = QtWidgets.QLineEdit() main_widget.setObjectName(component) main_widget.setValidator(QtGui.QIntValidator(0, 100, main_widget)) main_widget.setEnabled(False) main_widget.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)) elif component == 'select': return None elif component == 'flag': main_widget = QtWidgets.QRadioButton(title) main_widget.setObjectName(component) main_widget.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)) elif component == 'symbols': main_widget = QtWidgets.QLineEdit() main_widget.setObjectName(component) main_widget.setMaxLength(100) main_widget.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)) elif component == 'symbol': main_widget = QtWidgets.QLineEdit() main_widget.setObjectName(component) main_widget.setMaxLength(100) main_widget.setSizePolicy(QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)) main_widget.setValidator( QtGui.QRegularExpressionValidator(r"[A-Za-z]+", main_widget)) else: main_widget = QtWidgets.QWidget() widget.layout().addWidget(label_widget) widget.layout().addWidget(main_widget) if optional: toggle_widget.stateChanged.connect( lambda: main_widget.setEnabled((not main_widget.isEnabled()))) widget.layout().addWidget(toggle_widget) return widget
def __init__(self): super().__init__() # global self.config_params self.xml_root = None # self.tab = QWidget() # self.tabs.resize(200,5) #------------------------------------------- label_width = 110 domain_value_width = 100 value_width = 60 label_height = 20 units_width = 70 self.scroll = QScrollArea() # might contain centralWidget self.config_params = QWidget() self.vbox = QVBoxLayout() self.vbox.addStretch(0) #============ Domain ================================ label = QLabel("Domain (micron)") label.setFixedHeight(label_height) label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox.addWidget(label) hbox = QHBoxLayout() label = QLabel("Xmin") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.xmin = QLineEdit() self.xmin.setFixedWidth(domain_value_width) self.xmin.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.xmin) label = QLabel("Xmax") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.xmax = QLineEdit() self.xmax.setFixedWidth(domain_value_width) self.xmax.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.xmax) label = QLabel("dx") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.xdel = QLineEdit() self.xdel.setFixedWidth(value_width) self.xdel.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.xdel) self.vbox.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("Ymin") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.ymin = QLineEdit() self.ymin.setFixedWidth(domain_value_width) self.ymin.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.ymin) label = QLabel("Ymax") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.ymax = QLineEdit() self.ymax.setFixedWidth(domain_value_width) self.ymax.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.ymax) label = QLabel("dy") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.ydel = QLineEdit() self.ydel.setFixedWidth(value_width) self.ydel.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.ydel) self.vbox.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("Zmin") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.zmin = QLineEdit() self.zmin.setFixedWidth(domain_value_width) self.zmin.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.zmin) label = QLabel("Zmax") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.zmax = QLineEdit() self.zmax.setFixedWidth(domain_value_width) self.zmax.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.zmax) label = QLabel("dz") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.zdel = QLineEdit() self.zdel.setFixedWidth(value_width) self.zdel.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.zdel) self.vbox.addLayout(hbox) #---------- hbox = QHBoxLayout() self.virtual_walls = QCheckBox("Virtual walls") # self.motility_enabled.setAlignment(QtCore.Qt.AlignRight) # label.setFixedWidth(label_width) hbox.addWidget(self.virtual_walls) self.vbox.addLayout(hbox) # self.vbox.addWidget(QHLine()) #============ Misc ================================ label = QLabel("Misc runtime parameters") label.setFixedHeight(label_height) label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox.addWidget(label) hbox = QHBoxLayout() # hbox.setFixedHeight(label_width) label = QLabel("Max Time") # label_width = 210 label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.max_time = QLineEdit() # self.max_time.setFixedWidth(200) self.max_time.setFixedWidth(domain_value_width) self.max_time.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.max_time) label = QLabel("min") label.setFixedWidth(units_width) label.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(label) self.vbox.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("# threads") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.num_threads = QLineEdit() # self.num_threads.setFixedWidth(value_width) self.num_threads.setFixedWidth(domain_value_width) self.num_threads.setValidator(QtGui.QIntValidator()) hbox.addWidget(self.num_threads) label = QLabel(" ") label.setFixedWidth(units_width) label.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(label) self.vbox.addLayout(hbox) #------------------ hbox = QHBoxLayout() label = QLabel("Save data:") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(label) #------ self.save_svg = QCheckBox("SVG") # self.motility_2D.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(self.save_svg) label = QLabel("every") # label_width = 210 # label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.svg_interval = QLineEdit() self.svg_interval.setFixedWidth(value_width) self.svg_interval.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.svg_interval) label = QLabel("min") # label.setFixedWidth(units_width) label.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(label) #------ self.save_full = QCheckBox("Full") # self.motility_2D.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(self.save_full) label = QLabel("every") # label_width = 210 # label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.full_interval = QLineEdit() self.full_interval.setFixedWidth(value_width) self.full_interval.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.full_interval) label = QLabel("min") # label.setFixedWidth(units_width) label.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(label) self.vbox.addLayout(hbox) #============ Cells IC ================================ label = QLabel("Initial conditions of cells (x,y,z, type)") label.setFixedHeight(label_height) label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox.addWidget(label) self.cells_csv = QCheckBox("config/cells.csv") self.vbox.addWidget(self.cells_csv) #-------------------------- # Dummy widget for filler?? # label = QLabel("") # label.setFixedHeight(1000) # # label.setStyleSheet("background-color: orange") # label.setAlignment(QtCore.Qt.AlignCenter) # self.vbox.addWidget(label) self.vbox.addStretch() #================================================================== self.config_params.setLayout(self.vbox) self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setWidgetResizable(True) self.scroll.setWidget( self.config_params) # self.config_params = QWidget() self.layout = QVBoxLayout(self) self.layout.addWidget(self.scroll)
def tab_cell_defs(self): units_width = 70 label_width = 210 layout = QVBoxLayout() self.params_cell_def = QWidget() layout = QVBoxLayout() self.params_config = QWidget() self.cycle_dropdown = QComboBox() self.cycle_dropdown.setFixedWidth(300) self.cycle_dropdown.currentIndexChanged.connect(self.cycle_changed_cb) # Rf. Section 17 of User Guide self.cycle_dropdown.addItem("live cells") self.cycle_dropdown.addItem("basic Ki67") self.cycle_dropdown.addItem("advanced Ki67") self.cycle_dropdown.addItem("flow cytometry") self.cycle_dropdown.addItem("flow cytometry separated") self.cycle_dropdown.addItem("cycling quiescent") self.cycle_dropdown.addItem("live apoptotic") self.cycle_dropdown.addItem("total cells") layout.addWidget(self.cycle_dropdown) #===== Phenotype #============ Cycle ================================ label = QLabel("Phenotype: cycle") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) layout.addWidget(label) hbox = QHBoxLayout() label = QLabel("Phase 0->0 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate0_0 = QLineEdit() self.cycle_trate0_0.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate0_0) units = QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) layout.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("Phase 0->1 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate0_1 = QLineEdit() self.cycle_trate0_1.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate0_1) units = QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) layout.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("Phase 1->2 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate1_2 = QLineEdit() self.cycle_trate1_2.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate1_2) units = QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) layout.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("Phase 2->3 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate2_3 = QLineEdit() self.cycle_trate2_3.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate2_3) units = QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) layout.addLayout(hbox) #---------- hbox = QHBoxLayout() label = QLabel("Phase 3->0 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate3_0 = QLineEdit() self.cycle_trate3_0.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate3_0) units = QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) layout.addLayout(hbox) #============ Death ================================ label = QLabel("Phenotype: death") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) layout.addWidget(label) # layout.addWidget(QHLine()) #----- label = QLabel("Apoptosis") label.setAlignment(QtCore.Qt.AlignCenter) label.setStyleSheet('background-color: yellow') layout.addWidget(label) hbox = QHBoxLayout() label = QLabel("death rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.death_apop_rate = QLineEdit() self.death_apop_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.death_apop_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("phase 0 duration") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.phase0_duration = QLineEdit() self.phase0_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase0_duration) units = QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("phase 1 duration") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.phase1_duration = QLineEdit() self.phase1_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase1_duration) units = QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("unlysed_fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.apoptosis_unlysed_rate = QLineEdit() self.apoptosis_unlysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_unlysed_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("lysed_fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.apoptosis_lysed_rate = QLineEdit() self.apoptosis_lysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_lysed_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("cytoplasmic_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.apoptosis_cytoplasmic_biomass_change_rate = QLineEdit() self.apoptosis_cytoplasmic_biomass_change_rate.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_cytoplasmic_biomass_change_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("nuclear_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.apoptosis_nuclear_biomass_change_rate = QLineEdit() self.apoptosis_nuclear_biomass_change_rate.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_nuclear_biomass_change_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("calcification_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.calcification_rate = QLineEdit() self.calcification_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.calcification_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("relative_rupture_volume") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.relative_rupture_volume = QLineEdit() self.relative_rupture_volume.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.relative_rupture_volume) units = QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) #----------------------------------------------------------- # layout.addWidget(QHLine()) label = QLabel("Necrosis") label.setAlignment(QtCore.Qt.AlignCenter) label.setStyleSheet('background-color: yellow') layout.addWidget(label) # layout.addWidget(QHLine()) # label_width = 210 # units_width = 45 hbox = QHBoxLayout() label = QLabel("death rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.death_necrosis_rate = QLineEdit() self.death_necrosis_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.death_necrosis_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("phase 0 duration") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.phase0_duration = QLineEdit() self.phase0_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase0_duration) units = QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("phase 1 duration") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.phase1_duration = QLineEdit() self.phase1_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase1_duration) units = QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("unlysed_fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.necrosis_unlysed_rate = QLineEdit() self.necrosis_unlysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.necrosis_unlysed_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("lysed_fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.necrosis_lysed_rate = QLineEdit() self.necrosis_lysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.necrosis_lysed_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("cytoplasmic_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.necrosis_cytoplasmic_biomass_change_rate = QLineEdit() self.necrosis_cytoplasmic_biomass_change_rate.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.necrosis_cytoplasmic_biomass_change_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("nuclear_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.necrosis_nuclear_biomass_change_rate = QLineEdit() self.necrosis_nuclear_biomass_change_rate.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.necrosis_nuclear_biomass_change_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("calcification_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.calcification_rate = QLineEdit() self.calcification_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.calcification_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("relative_rupture_volume") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.relative_rupture_volume = QLineEdit() self.relative_rupture_volume.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.relative_rupture_volume) units = QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) #============ Volume ================================ label = QLabel("Phenotype: volume") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) layout.addWidget(label) hbox = QHBoxLayout() label = QLabel("total") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.volume_total = QLineEdit() self.volume_total.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.volume_total) units = QLabel("micron^3") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("fluid_fraction") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.volume_fluid_fraction = QLineEdit() self.volume_fluid_fraction.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.volume_fluid_fraction) units = QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("nuclear") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.volume_nuclear = QLineEdit() self.volume_nuclear.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.volume_nuclear) units = QLabel("micron^3") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.volume_fluid_change_rate = QLineEdit() self.volume_fluid_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.volume_fluid_change_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("cytoplasmic_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cytoplasmic_biomass_change_rate = QLineEdit() self.cytoplasmic_biomass_change_rate.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.cytoplasmic_biomass_change_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("nuclear_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.nuclear_biomass_change_rate = QLineEdit() self.nuclear_biomass_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.nuclear_biomass_change_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("calcified_fraction") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.calcified_fraction = QLineEdit() self.calcified_fraction.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.calcified_fraction) units = QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("calcified_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.calcified_rate = QLineEdit() self.calcified_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.calcified_rate) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) #============ Mechanics ================================ label = QLabel("Phenotype: mechanics") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) layout.addWidget(label) # layout.addWidget(QHLine()) hbox = QHBoxLayout() label = QLabel("cell_cell_adhesion_strength") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cell_cell_adhesion_strength = QLineEdit() self.cell_cell_adhesion_strength.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cell_cell_adhesion_strength) units = QLabel("micron/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("cell_cell_repulsion_strength") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cell_cell_repulsion_strength = QLineEdit() self.cell_cell_repulsion_strength.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.cell_cell_repulsion_strength) units = QLabel("micron/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("relative_maximum_adhesion_distance") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.relative_maximum_adhesion_distance = QLineEdit() self.relative_maximum_adhesion_distance.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.relative_maximum_adhesion_distance) units = QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("set_relative_equilibrium_distance") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.set_relative_equilibrium_distance = QLineEdit() self.set_relative_equilibrium_distance.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.set_relative_equilibrium_distance) units = QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("set_absolute_equilibrium_distance") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.set_absolute_equilibrium_distance = QLineEdit() self.set_absolute_equilibrium_distance.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.set_absolute_equilibrium_distance) units = QLabel("micron") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) #============ Motility ================================ label = QLabel("Phenotype: motility") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) layout.addWidget(label) # layout.addWidget(QHLine()) hbox = QHBoxLayout() label = QLabel("speed") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.speed = QLineEdit() self.speed.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.speed) units = QLabel("micron/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("persistence_time") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.persistence_time = QLineEdit() self.persistence_time.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.persistence_time) units = QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("migration_bias") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.migration_bias = QLineEdit() self.migration_bias.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.migration_bias) units = QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() self.motility_enabled = QCheckBox("enable") # self.motility_enabled.setAlignment(QtCore.Qt.AlignRight) # label.setFixedWidth(label_width) hbox.addWidget(self.motility_enabled) self.motility_2D = QCheckBox("2D") # self.motility_2D.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(self.motility_2D) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("Chemotaxis") label.setFixedWidth(200) label.setAlignment(QtCore.Qt.AlignCenter) label.setStyleSheet('background-color: yellow') hbox.addWidget(label) self.chemotaxis_enabled = QCheckBox("enabled") # self.motility_2D.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(self.chemotaxis_enabled) layout.addLayout(hbox) self.motility_substrate_dropdown = QComboBox() self.motility_substrate_dropdown.setFixedWidth(300) # self.cycle_dropdown.currentIndex.connect(self.cycle_changed_cb) # self.motility_substrate_dropdown.currentIndexChanged.connect(self.motility_substrate_changed_cb) self.motility_substrate_dropdown.addItem("oxygen") layout.addWidget(self.motility_substrate_dropdown) #============ Secretion ================================ label = QLabel("Phenotype: secretion") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) layout.addWidget(label) label = QLabel("oxygen") label.setStyleSheet('background-color: lightgreen') label.setFixedWidth(150) layout.addWidget(label) hbox = QHBoxLayout() label = QLabel("secretion_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.secretion_rate1 = QLineEdit() self.secretion_rate1.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.secretion_rate1) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("target") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.secretion_target1 = QLineEdit() self.secretion_target1.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.secretion_target1) units = QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("uptake_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.uptake_rate1 = QLineEdit() self.uptake_rate1.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.uptake_rate1) units = QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) hbox = QHBoxLayout() label = QLabel("net_export_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.secretion_net_export_rate = QLineEdit() self.secretion_net_export_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.secretion_net_export_rate) units = QLabel("total/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) layout.addLayout(hbox) #============ Molecular ================================ label = QLabel("Phenotype: molecular") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) layout.addWidget(label) # layout.addWidget(QHLine()) #===== Custom data label = QLabel("Custom data") label.setStyleSheet("background-color: cyan") layout.addWidget(label) #================================================================== self.params_cell_def.setLayout(layout) self.scroll = QtWidgets.QScrollArea() self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setWidgetResizable(True) self.scroll.setWidget(self.params_cell_def) self.layout = QtWidgets.QVBoxLayout(self) self.layout.addWidget(self.scroll)
def __init__(self): super().__init__() # global self.params_cell_def self.tabs = QtWidgets.QTabWidget() self.tab1 = QtWidgets.QWidget() self.tab2 = QtWidgets.QWidget() self.tab3 = QtWidgets.QWidget() self.tab4 = QtWidgets.QWidget() # self.tabs.resize(300,200) self.tabs.resize(200, 5) self.tabs.addTab(self.tab1, "Config") self.tabs.addTab(self.tab2, "Microenv") self.tabs.addTab(self.tab3, "Cell Types") self.tabs.addTab(self.tab4, "User Params") # self.tabs.addTab("tab1") self.tabs.currentChanged.connect(self.tab_changed_cb) #------------------------------------------- self.vbox_config = QtWidgets.QVBoxLayout() self.vbox_microenv = QtWidgets.QVBoxLayout() self.vbox_user_params = QtWidgets.QVBoxLayout() #------------------------------------------- self.scroll = QtWidgets.QScrollArea() # might contain centralWidget self.params_cell_def = QtWidgets.QWidget() self.vbox_cell_def = QtWidgets.QVBoxLayout() self.params_config = QtWidgets.QWidget() self.vbox_config = QtWidgets.QVBoxLayout() self.cycle_dropdown = QtWidgets.QComboBox() self.cycle_dropdown.addItem("advanced Ki67") self.cycle_dropdown.addItem("basic Ki67") self.cycle_dropdown.addItem("flow cytometry") self.cycle_dropdown.addItem("live apoptotic") self.cycle_dropdown.addItem("total cells") self.cycle_dropdown.addItem("live cells") self.cycle_dropdown.addItem("flow cytometry separated") self.cycle_dropdown.addItem("cycling quiescent") self.vbox_cell_def.addWidget(self.cycle_dropdown) #===== Phenotype #============ Cycle ================================ label = QtWidgets.QLabel("Phenotype: cycle") label.setStyleSheet("background-color: orange") self.vbox_cell_def.addWidget(label) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 0->0 transition rate") hbox.addWidget(label) self.cycle_trate0_0 = QtWidgets.QLineEdit() # self.cycle_trate0_1.setValidator(QtGui.QIntValidator()) self.cycle_trate0_0.setValidator(QtGui.QDoubleValidator()) # self.cycle_trate0_1.enter.connect(self.save_xml) hbox.addWidget(self.cycle_trate0_0) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 0->1 transition rate") hbox.addWidget(label) self.cycle_trate0_1 = QtWidgets.QLineEdit() # self.cycle_trate0_1.setValidator(QtGui.QIntValidator()) self.cycle_trate0_1.setValidator(QtGui.QDoubleValidator()) # self.cycle_trate0_1.enter.connect(self.save_xml) hbox.addWidget(self.cycle_trate0_1) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 1->2 transition rate") hbox.addWidget(label) self.cycle_trate1_2 = QtWidgets.QLineEdit() self.cycle_trate1_2.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate1_2) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 2->3 transition rate") hbox.addWidget(label) self.cycle_trate2_3 = QtWidgets.QLineEdit() self.cycle_trate2_3.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate2_3) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 3->4 transition rate") hbox.addWidget(label) self.cycle_trate3_4 = QtWidgets.QLineEdit() self.cycle_trate3_4.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate3_4) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # self.vbox_cell_def.addWidget(QHLine()) #-------------------------- # hbox = QtWidgets.QHBoxLayout() # label = QtWidgets.QLabel("Phase0->Phase0 transition rate") # hbox.addWidget(label) # self.cycle_trate0_0 = QtWidgets.QLineEdit() # self.cycle_trate0_0.setValidator(QtGui.QDoubleValidator()) # hbox.addWidget(self.cycle_trate0_0) # units = QtWidgets.QLabel("1/min") # hbox.addWidget(units) # self.vbox_cell_def.addLayout(hbox) #-------------------------- # self.vbox_cell_def.addWidget(QHLine()) # self.vbox_cell_def.addLayout(hbox) #---------- #============ Death ================================ label = QtWidgets.QLabel("Phenotype: death") label.setStyleSheet("background-color: orange") self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #----- label = QtWidgets.QLabel("Apoptosis") label.setStyleSheet('background-color: yellow') self.vbox_cell_def.addWidget(label) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("death rate") hbox.addWidget(label) self.death_apop_rate = QtWidgets.QLineEdit() self.death_apop_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.death_apop_rate) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("phase 0 duration") hbox.addWidget(label) self.phase0_duration = QtWidgets.QLineEdit() self.phase0_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase0_duration) units = QtWidgets.QLabel("min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <phase_durations units="min"> # <duration index="0" fixed_duration="true">516</duration> # <unlysed_fluid_change_rate units="1/min">0.05</unlysed_fluid_change_rate> # <lysed_fluid_change_rate units="1/min">0</lysed_fluid_change_rate> # <cytoplasmic_biomass_change_rate units="1/min">1.66667e-02</cytoplasmic_biomass_change_rate> # <nuclear_biomass_change_rate units="1/min">5.83333e-03</nuclear_biomass_change_rate> # <calcification_rate units="1/min">0</calcification_rate> # <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("unlysed_fluid_change_rate") hbox.addWidget(label) self.apoptosis_unlysed_rate = QtWidgets.QLineEdit() self.apoptosis_unlysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_unlysed_rate) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("lysed_fluid_change_rate") hbox.addWidget(label) self.apoptosis_lysed_rate = QtWidgets.QLineEdit() self.apoptosis_lysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_lysed_rate) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("cytoplasmic_biomass_change_rate") hbox.addWidget(label) self.apoptosis_cytoplasmic_biomass_change_rate = QtWidgets.QLineEdit() self.apoptosis_cytoplasmic_biomass_change_rate.setValidator( QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_cytoplasmic_biomass_change_rate) units = QtWidgets.QLabel("1/min") hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #----- # self.vbox_cell_def.addWidget(QHLine()) label = QtWidgets.QLabel("Necrosis") label.setStyleSheet('background-color: yellow') self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #============ Volume ================================ label = QtWidgets.QLabel("Phenotype: volume") label.setStyleSheet("background-color: orange") self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #============ Mechanics ================================ label = QtWidgets.QLabel("Phenotype: mechanics") label.setStyleSheet("background-color: orange") self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #============ Motility ================================ label = QtWidgets.QLabel("Phenotype: motility") label.setStyleSheet("background-color: orange") self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #============ Secretion ================================ label = QtWidgets.QLabel("Phenotype: secretion") label.setStyleSheet("background-color: orange") self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #============ Molecular ================================ label = QtWidgets.QLabel("Phenotype: molecular") label.setStyleSheet("background-color: orange") self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #===== Custom data label = QtWidgets.QLabel("Custom data") label.setStyleSheet("background-color: cyan") self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #================================================================== self.params_cell_def.setLayout(self.vbox_cell_def) self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setWidgetResizable(True) self.scroll.setWidget(self.params_cell_def) self.save_button = QtWidgets.QPushButton("Save") # self.text = QtWidgets.QLabel("Hello World",alignment=QtCore.Qt.AlignCenter) self.layout = QtWidgets.QVBoxLayout(self) # self.layout.addWidget(self.tabs) # self.layout.addWidget(QHLine()) # self.layout.addWidget(self.params) self.layout.addWidget(self.scroll) # self.layout.addWidget(self.vbox_cell_def) # self.layout.addWidget(self.text) self.layout.addWidget(self.save_button) self.save_button.clicked.connect(self.save_xml)
def itemMeshing(self): self.form_mesh_airfoil = QtWidgets.QFormLayout() label = QtWidgets.QLabel(u'Gridpoints along airfoil') label.setToolTip('Number of points as derived from splining') points = 0 self.points_on_airfoil = QtWidgets.QLineEdit(str(points)) self.points_on_airfoil.setEnabled(False) self.form_mesh_airfoil.addRow(label, self.points_on_airfoil) label = QtWidgets.QLabel(u'Divisions normal to airfoil') label.setToolTip('Number of points in the mesh which is constructed ' + ' normal to the airfoil contour') self.points_n = QtWidgets.QSpinBox() self.points_n.setSingleStep(1) self.points_n.setRange(1, 500) self.points_n.setValue(15) self.form_mesh_airfoil.addRow(label, self.points_n) label = QtWidgets.QLabel('1st cell layer thickness (m)') label.setToolTip( 'Thickness of 1st cell layer perpendicular to the airfoil') self.normal_thickness = QtWidgets.QDoubleSpinBox() self.normal_thickness.setSingleStep(0.001) self.normal_thickness.setRange(1.e-10, 1.e10) self.normal_thickness.setDecimals(8) self.normal_thickness.setValue(0.00400) self.form_mesh_airfoil.addRow(label, self.normal_thickness) label = QtWidgets.QLabel('Cell growth rate (-)') label.setToolTip('Rate at which 1st cell layer grows') self.ratio = QtWidgets.QDoubleSpinBox() self.ratio.setSingleStep(0.01) self.ratio.setRange(1., 100.) self.ratio.setValue(1.05) self.ratio.setDecimals(3) self.form_mesh_airfoil.addRow(label, self.ratio) self.form_mesh_TE = QtWidgets.QFormLayout() label = QtWidgets.QLabel(u'Divisions at trailing edge') label.setToolTip( 'Number of subdivisions along the vertical part of the TE') self.te_div = QtWidgets.QSpinBox() self.te_div.setSingleStep(1) self.te_div.setRange(1, 20) self.te_div.setValue(3) self.form_mesh_TE.addRow(label, self.te_div) label = QtWidgets.QLabel(u'Divisions downstream') label.setToolTip( 'Number of subdivisions downstream within the TE block') self.points_te = QtWidgets.QSpinBox() self.points_te.setSingleStep(1) self.points_te.setRange(1, 100) self.points_te.setValue(15) self.form_mesh_TE.addRow(label, self.points_te) label = QtWidgets.QLabel('1st cell layer thickness (m)') label.setToolTip( 'Thickness of first cell layer in downstream direction') self.length_te = QtWidgets.QDoubleSpinBox() self.length_te.setSingleStep(0.001) self.length_te.setRange(1.e-10, 1.e10) self.length_te.setDecimals(8) self.length_te.setValue(0.00400) self.form_mesh_TE.addRow(label, self.length_te) label = QtWidgets.QLabel('Cell growth rate (-)') label.setToolTip( 'Rate at which 1st cell layer downstream the TE grows') self.ratio_te = QtWidgets.QDoubleSpinBox() self.ratio_te.setSingleStep(0.01) self.ratio_te.setRange(1., 100.) self.ratio_te.setValue(1.05) self.ratio_te.setDecimals(3) self.form_mesh_TE.addRow(label, self.ratio_te) self.form_mesh_tunnel = QtWidgets.QFormLayout() label = QtWidgets.QLabel('Windtunnel Height (chords)') label.setToolTip('The height of the windtunnel in units ' + 'of chord length') self.tunnel_height = QtWidgets.QDoubleSpinBox() self.tunnel_height.setSingleStep(0.1) self.tunnel_height.setRange(0.1, 100.) self.tunnel_height.setValue(3.5) self.tunnel_height.setDecimals(1) self.form_mesh_tunnel.addRow(label, self.tunnel_height) label = QtWidgets.QLabel(u'Divisions of Tunnel Height') self.divisions_height = QtWidgets.QSpinBox() self.divisions_height.setSingleStep(10) self.divisions_height.setRange(1, 1000) self.divisions_height.setValue(100) self.form_mesh_tunnel.addRow(label, self.divisions_height) label = QtWidgets.QLabel('Cell Thickness ratio (-)') self.ratio_height = QtWidgets.QDoubleSpinBox() self.ratio_height.setSingleStep(1.0) self.ratio_height.setRange(0.1, 100.) self.ratio_height.setValue(10.0) self.ratio_height.setDecimals(1) self.form_mesh_tunnel.addRow(label, self.ratio_height) label = QtWidgets.QLabel('Distribution biasing') self.dist = QtWidgets.QComboBox() self.dist.addItems(['symmetric', 'lower', 'upper']) self.dist.setCurrentIndex(0) self.form_mesh_tunnel.addRow(label, self.dist) self.form_mesh_wake = QtWidgets.QFormLayout() label = QtWidgets.QLabel('Windtunnel Wake (chords)') label.setToolTip('The length of the wake of the windtunnel in ' + 'units of chord length') self.tunnel_wake = QtWidgets.QDoubleSpinBox() self.tunnel_wake.setSingleStep(0.1) self.tunnel_wake.setRange(0.1, 100.) self.tunnel_wake.setValue(7.0) self.tunnel_wake.setDecimals(1) self.form_mesh_wake.addRow(label, self.tunnel_wake) label = QtWidgets.QLabel(u'Divisions in the wake') self.divisions_wake = QtWidgets.QSpinBox() self.divisions_wake.setSingleStep(10) self.divisions_wake.setRange(1, 1000) self.divisions_wake.setValue(100) self.form_mesh_wake.addRow(label, self.divisions_wake) label = QtWidgets.QLabel('Cell Thickness ratio (-)') label.setToolTip('Thickness of the last cell vs. the first cell in ' + 'the wake mesh block') self.ratio_wake = QtWidgets.QDoubleSpinBox() self.ratio_wake.setSingleStep(0.1) self.ratio_wake.setRange(0.01, 100.0) self.ratio_wake.setValue(15.0) self.ratio_wake.setDecimals(1) self.form_mesh_wake.addRow(label, self.ratio_wake) label = QtWidgets.QLabel('Equalize vertical wake line at (%)') label.setToolTip('Equalize the wake line vertically. ' + 'Homogeneous vertical distribution at x% downstream') self.spread = QtWidgets.QDoubleSpinBox() self.spread.setSingleStep(5.0) self.spread.setRange(10.0, 90.0) self.spread.setValue(30.0) self.spread.setDecimals(1) self.form_mesh_wake.addRow(label, self.spread) # smoothing parameters label = QtWidgets.QLabel('Smoothing') label.setToolTip('Specify algorithm and parameters for smoothing') self.btn_smoother_1 = QtWidgets.QRadioButton('Simple (fast)') self.btn_smoother_2 = QtWidgets.QRadioButton('Elliptic (medium)') self.btn_smoother_3 = QtWidgets.QRadioButton('Angle based (slow)') # initialize simple smoother self.btn_smoother_1.setChecked(True) self.smoothing_algorithm = 'simple' self.btn_smoother_1.clicked.connect(self.smoother_btn_clicked) self.btn_smoother_2.clicked.connect(self.smoother_btn_clicked) self.btn_smoother_3.clicked.connect(self.smoother_btn_clicked) smoother_settings = QtWidgets.QFormLayout() label = QtWidgets.QLabel('Iterations') self.smoother_iterations = QtWidgets.QSpinBox() self.smoother_iterations.setValue(20) self.smoother_iterations.setSingleStep(5) self.smoother_iterations.setRange(0, 1000) self.smoother_iterations.setEnabled(False) smoother_settings.addRow(label, self.smoother_iterations) label = QtWidgets.QLabel('Tolerance') self.smoother_tolerance = QtWidgets.QLineEdit() self.onlyFloat = QtGui.QDoubleValidator() self.smoother_tolerance.setValidator(self.onlyFloat) self.smoother_tolerance.setText('1.e-5') self.onlyFloat.setRange(1.e-8, 1.0) self.onlyFloat.setDecimals(8) self.smoother_tolerance.setEnabled(False) smoother_settings.addRow(label, self.smoother_tolerance) hbox_smoothing = QtWidgets.QHBoxLayout() vbox1 = QtWidgets.QVBoxLayout() vbox2 = QtWidgets.QVBoxLayout() vbox1.addWidget(self.btn_smoother_1) vbox1.addWidget(self.btn_smoother_2) vbox1.addWidget(self.btn_smoother_3) vbox2.addLayout(smoother_settings) hbox_smoothing.addLayout(vbox1) hbox_smoothing.addLayout(vbox2) vbox = QtWidgets.QVBoxLayout() vbox.addLayout(self.form_mesh_airfoil) box_airfoil = QtWidgets.QGroupBox('Airfoil contour mesh') box_airfoil.setLayout(vbox) vbox = QtWidgets.QVBoxLayout() vbox.addLayout(self.form_mesh_TE) box_TE = QtWidgets.QGroupBox('Airfoil trailing edge mesh') box_TE.setLayout(vbox) vbox = QtWidgets.QVBoxLayout() vbox.addLayout(self.form_mesh_tunnel) box_tunnel = QtWidgets.QGroupBox('Windtunnel mesh (around airfoil)') box_tunnel.setLayout(vbox) vbox = QtWidgets.QVBoxLayout() vbox.addLayout(self.form_mesh_wake) box_wake = QtWidgets.QGroupBox('Windtunnel mesh (wake)') box_wake.setLayout(vbox) box_smoothing = QtWidgets.QGroupBox('Smoothing') box_smoothing.setLayout(hbox_smoothing) self.createMeshButton = QtWidgets.QPushButton('Create Mesh') hbl_cm = QtWidgets.QHBoxLayout() hbl_cm.addStretch(stretch=1) hbl_cm.addWidget(self.createMeshButton, stretch=4) hbl_cm.addStretch(stretch=1) # export menu and boundary definitions self.form_bnd = QtWidgets.QFormLayout() label = QtWidgets.QLabel('Boundary name for airfoil') label.setToolTip('Name of the boundary definition for the airfoil') self.lineedit_airfoil = QtWidgets.QLineEdit('Airfoil') self.form_bnd.addRow(label, self.lineedit_airfoil) label = QtWidgets.QLabel('Boundary name for inlet') label.setToolTip('Name of the boundary definition for the inlet flow') self.lineedit_inlet = QtWidgets.QLineEdit('Inlet') self.form_bnd.addRow(label, self.lineedit_inlet) label = QtWidgets.QLabel('Boundary name for outlet') label.setToolTip('Name of the boundary definition for the outlet flow') self.lineedit_outlet = QtWidgets.QLineEdit('Outlet') self.form_bnd.addRow(label, self.lineedit_outlet) label = QtWidgets.QLabel('Boundary name for symmetry') label.setToolTip('Name of the boundary definition for the symmetry') self.lineedit_symmetry = QtWidgets.QLineEdit('Symmetry') self.form_bnd.addRow(label, self.lineedit_symmetry) self.check_FIRE = QtWidgets.QCheckBox('AVL FIRE') self.check_SU2 = QtWidgets.QCheckBox('SU2') self.check_GMSH = QtWidgets.QCheckBox('GMSH') self.check_VTK = QtWidgets.QCheckBox('VTK') self.check_CGNS = QtWidgets.QCheckBox('CGNS') self.check_ABAQUS = QtWidgets.QCheckBox('ABAQUS') self.check_FIRE.setChecked(True) self.check_SU2.setChecked(True) self.check_GMSH.setChecked(False) self.check_VTK.setChecked(True) self.check_CGNS.setChecked(False) self.check_ABAQUS.setChecked(False) label = QtWidgets.QLabel('Export format:') label.setToolTip('Check format to be exported') grid = QtWidgets.QGridLayout() grid.addWidget(label, 0, 0) grid.addWidget(self.check_FIRE, 0, 1) grid.addWidget(self.check_SU2, 0, 2) grid.addWidget(self.check_GMSH, 0, 3) grid.addWidget(self.check_VTK, 1, 1) grid.addWidget(self.check_CGNS, 1, 2) grid.addWidget(self.check_ABAQUS, 1, 3) exportMeshButton = QtWidgets.QPushButton('Export Mesh') hbl = QtWidgets.QHBoxLayout() hbl.addStretch(stretch=1) hbl.addWidget(exportMeshButton, stretch=4) hbl.addStretch(stretch=1) vbl1 = QtWidgets.QVBoxLayout() vbl1.addLayout(self.form_bnd) vbl1.addLayout(grid) vbl1.addLayout(hbl) self.box_meshexport = QtWidgets.QGroupBox('Mesh Export') self.box_meshexport.setLayout(vbl1) self.box_meshexport.setEnabled(False) vbl = QtWidgets.QVBoxLayout() vbl.addStretch(1) vbl.addWidget(box_airfoil) vbl.addWidget(box_TE) vbl.addWidget(box_tunnel) vbl.addWidget(box_wake) vbl.addWidget(box_smoothing) vbl.addLayout(hbl_cm) vbl.addStretch(1) vbl.addWidget(self.box_meshexport) vbl.addStretch(10) self.item_msh = QtWidgets.QWidget() self.item_msh.setLayout(vbl) self.createMeshButton.clicked.connect(self.generateMesh) exportMeshButton.clicked.connect(self.exportMesh)
def __init__(self): super().__init__() # global self.params_cell_def # self.cell_defs = CellDefInstances() self.cell_def_horiz_layout = QtWidgets.QHBoxLayout() splitter = QtWidgets.QSplitter() self.tree = QtWidgets.QTreeWidget() self.tree.setStyleSheet("background-color: lightgray") # self.tree.setColumnCount(1) header = QTreeWidgetItem(["--- Cell Types ---"]) self.tree.setHeaderItem(header) cellname = QTreeWidgetItem(["epi cell"]) self.tree.insertTopLevelItem(0,cellname) cellname = QTreeWidgetItem(["macrophage"]) self.tree.insertTopLevelItem(1,cellname) # cities = QTreeWidgetItem(treeWidget) # titem = QtWidgets.QTreeWidgetItem # titem.setText(0,'ttt') # header.setText(0,"epithelial cell") # header.setText(1,"macrophage") # self.tree.addTopLevelItem(QTreeWidgetItem("foo")) items = [] model = QtCore.QStringListModel() model.setStringList(["aaa","bbb"]) # self.tree.insertTopLevelItems(None, model) # slist = QtCore.QStringList() # for i in range(10): # items.append(QTreeWidgetItem(None, QtGui.QStringList(QString("item: %1").arg(i)))) # self.tree.insertTopLevelItems(None, items) # self.log_widget.setHeaderItem(QtWidgets.QTreeWidgetItem(["date", "origin", "type", "message"])) self.cell_def_horiz_layout.addWidget(self.tree) self.scroll_cell_def_tree = QtWidgets.QScrollArea() self.scroll_cell_def_tree.setWidget(self.tree) # splitter.addWidget(self.tree) splitter.addWidget(self.scroll_cell_def_tree) #------------------------------------------- # self.tab = QtWidgets.QWidget() # self.tabs.resize(200,5) #------------------------------------------- label_width = 210 units_width = 70 self.scroll = QtWidgets.QScrollArea() splitter.addWidget(self.scroll) # self.cell_def_horiz_layout.addWidget(self.scroll) self.params_cell_def = QtWidgets.QWidget() self.vbox_cell_def = QtWidgets.QVBoxLayout() # self.cell_def_horiz_layout.addWidget(self.) #------------------ hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Name of cell type:") label.setFixedWidth(110) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cell_type_name = QLineEdit() # Want to validate name, e.g., starts with alpha, no special chars, etc. # self.cycle_trate0_0.setValidator(QtGui.QDoubleValidator()) # self.cycle_trate0_1.enter.connect(self.save_xml) hbox.addWidget(self.cell_type_name) self.vbox_cell_def.addLayout(hbox) #------------------ self.cycle_dropdown = QtWidgets.QComboBox() self.cycle_dropdown.setFixedWidth(300) # self.cycle_dropdown.currentIndex.connect(self.cycle_changed_cb) self.cycle_dropdown.currentIndexChanged.connect(self.cycle_changed_cb) # Rf. Section 17 of User Guide self.cycle_dropdown.addItem("live cells") self.cycle_dropdown.addItem("basic Ki67") self.cycle_dropdown.addItem("advanced Ki67") self.cycle_dropdown.addItem("flow cytometry") self.cycle_dropdown.addItem("flow cytometry separated") self.cycle_dropdown.addItem("cycling quiescent") self.cycle_dropdown.addItem("live apoptotic") self.cycle_dropdown.addItem("total cells") self.vbox_cell_def.addWidget(self.cycle_dropdown) #===== Phenotype #============ Cycle ================================ label = QtWidgets.QLabel("Phenotype: cycle") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox_cell_def.addWidget(label) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 0->0 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate0_0 = QtWidgets.QLineEdit() # self.cycle_trate0_1.setValidator(QtGui.QIntValidator()) self.cycle_trate0_0.setValidator(QtGui.QDoubleValidator()) # self.cycle_trate0_1.enter.connect(self.save_xml) hbox.addWidget(self.cycle_trate0_0) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 0->1 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate0_1 = QtWidgets.QLineEdit() # self.cycle_trate0_1.setValidator(QtGui.QIntValidator()) self.cycle_trate0_1.setValidator(QtGui.QDoubleValidator()) # self.cycle_trate0_1.enter.connect(self.save_xml) hbox.addWidget(self.cycle_trate0_1) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 1->2 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate1_2 = QtWidgets.QLineEdit() self.cycle_trate1_2.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate1_2) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 2->3 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate2_3 = QtWidgets.QLineEdit() self.cycle_trate2_3.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate2_3) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Phase 3->0 transition rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cycle_trate3_0 = QtWidgets.QLineEdit() self.cycle_trate3_0.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cycle_trate3_0) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #============ Death ================================ label = QtWidgets.QLabel("Phenotype: death") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #----- label = QtWidgets.QLabel("Apoptosis") label.setAlignment(QtCore.Qt.AlignCenter) label.setStyleSheet('background-color: yellow') self.vbox_cell_def.addWidget(label) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("death rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.death_apop_rate = QtWidgets.QLineEdit() self.death_apop_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.death_apop_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("phase 0 duration") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.phase0_duration = QtWidgets.QLineEdit() self.phase0_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase0_duration) units = QtWidgets.QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("phase 1 duration") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.phase1_duration = QtWidgets.QLineEdit() self.phase1_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase1_duration) units = QtWidgets.QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <phase_durations units="min"> # <duration index="0" fixed_duration="true">516</duration> # <unlysed_fluid_change_rate units="1/min">0.05</unlysed_fluid_change_rate> # <lysed_fluid_change_rate units="1/min">0</lysed_fluid_change_rate> # <cytoplasmic_biomass_change_rate units="1/min">1.66667e-02</cytoplasmic_biomass_change_rate> # <nuclear_biomass_change_rate units="1/min">5.83333e-03</nuclear_biomass_change_rate> # <calcification_rate units="1/min">0</calcification_rate> # <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("unlysed_fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.apoptosis_unlysed_rate = QtWidgets.QLineEdit() self.apoptosis_unlysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_unlysed_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("lysed_fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.apoptosis_lysed_rate = QtWidgets.QLineEdit() self.apoptosis_lysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_lysed_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("cytoplasmic_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.apoptosis_cytoplasmic_biomass_change_rate = QtWidgets.QLineEdit() self.apoptosis_cytoplasmic_biomass_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_cytoplasmic_biomass_change_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <nuclear_biomass_change_rate units="1/min">5.83333e-03</nuclear_biomass_change_rate> # <calcification_rate units="1/min">0</calcification_rate> # <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("nuclear_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.apoptosis_nuclear_biomass_change_rate = QtWidgets.QLineEdit() self.apoptosis_nuclear_biomass_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.apoptosis_nuclear_biomass_change_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("calcification_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.calcification_rate = QtWidgets.QLineEdit() self.calcification_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.calcification_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("relative_rupture_volume") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.relative_rupture_volume = QtWidgets.QLineEdit() self.relative_rupture_volume.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.relative_rupture_volume) units = QtWidgets.QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #----------------------------------------------------------- # self.vbox_cell_def.addWidget(QHLine()) label = QtWidgets.QLabel("Necrosis") label.setAlignment(QtCore.Qt.AlignCenter) label.setStyleSheet('background-color: yellow') self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) # label_width = 210 # units_width = 45 hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("death rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.death_necrosis_rate = QtWidgets.QLineEdit() self.death_necrosis_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.death_necrosis_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("phase 0 duration") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.phase0_duration = QtWidgets.QLineEdit() self.phase0_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase0_duration) units = QtWidgets.QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("phase 1 duration") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.phase1_duration = QtWidgets.QLineEdit() self.phase1_duration.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.phase1_duration) units = QtWidgets.QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <phase_durations units="min"> # <duration index="0" fixed_duration="true">516</duration> # <unlysed_fluid_change_rate units="1/min">0.05</unlysed_fluid_change_rate> # <lysed_fluid_change_rate units="1/min">0</lysed_fluid_change_rate> # <cytoplasmic_biomass_change_rate units="1/min">1.66667e-02</cytoplasmic_biomass_change_rate> # <nuclear_biomass_change_rate units="1/min">5.83333e-03</nuclear_biomass_change_rate> # <calcification_rate units="1/min">0</calcification_rate> # <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("unlysed_fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.necrosis_unlysed_rate = QtWidgets.QLineEdit() self.necrosis_unlysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.necrosis_unlysed_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("lysed_fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.necrosis_lysed_rate = QtWidgets.QLineEdit() self.necrosis_lysed_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.necrosis_lysed_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("cytoplasmic_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.necrosis_cytoplasmic_biomass_change_rate = QtWidgets.QLineEdit() self.necrosis_cytoplasmic_biomass_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.necrosis_cytoplasmic_biomass_change_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <nuclear_biomass_change_rate units="1/min">5.83333e-03</nuclear_biomass_change_rate> # <calcification_rate units="1/min">0</calcification_rate> # <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("nuclear_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.necrosis_nuclear_biomass_change_rate = QtWidgets.QLineEdit() self.necrosis_nuclear_biomass_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.necrosis_nuclear_biomass_change_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("calcification_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.calcification_rate = QtWidgets.QLineEdit() self.calcification_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.calcification_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("relative_rupture_volume") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.relative_rupture_volume = QtWidgets.QLineEdit() self.relative_rupture_volume.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.relative_rupture_volume) units = QtWidgets.QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #============ Volume ================================ label = QtWidgets.QLabel("Phenotype: volume") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox_cell_def.addWidget(label) # <total units="micron^3">2494</total> # <fluid_fraction units="dimensionless">0.75</fluid_fraction> # <nuclear units="micron^3">540</nuclear> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("total") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.volume_total = QtWidgets.QLineEdit() self.volume_total.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.volume_total) units = QtWidgets.QLabel("micron^3") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("fluid_fraction") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.volume_fluid_fraction = QtWidgets.QLineEdit() self.volume_fluid_fraction.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.volume_fluid_fraction) units = QtWidgets.QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("nuclear") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.volume_nuclear = QtWidgets.QLineEdit() self.volume_nuclear.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.volume_nuclear) units = QtWidgets.QLabel("micron^3") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <fluid_change_rate units="1/min">0.05</fluid_change_rate> # <cytoplasmic_biomass_change_rate units="1/min">0.0045</cytoplasmic_biomass_change_rate> # <nuclear_biomass_change_rate units="1/min">0.0055</nuclear_biomass_change_rate> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("fluid_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.volume_fluid_change_rate = QtWidgets.QLineEdit() self.volume_fluid_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.volume_fluid_change_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("cytoplasmic_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cytoplasmic_biomass_change_rate = QtWidgets.QLineEdit() self.cytoplasmic_biomass_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cytoplasmic_biomass_change_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("nuclear_biomass_change_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.nuclear_biomass_change_rate = QtWidgets.QLineEdit() self.nuclear_biomass_change_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.nuclear_biomass_change_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <calcified_fraction units="dimensionless">0</calcified_fraction> # <calcification_rate units="1/min">0</calcification_rate> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("calcified_fraction") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.calcified_fraction = QtWidgets.QLineEdit() self.calcified_fraction.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.calcified_fraction) units = QtWidgets.QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("calcified_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.calcified_rate = QtWidgets.QLineEdit() self.calcified_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.calcified_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <relative_rupture_volume units="dimensionless">2.0</relative_rupture_volume> # self.vbox_cell_def.addWidget(QHLine()) #============ Mechanics ================================ label = QtWidgets.QLabel("Phenotype: mechanics") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) # <cell_cell_adhesion_strength units="micron/min">0.4</cell_cell_adhesion_strength> # <cell_cell_repulsion_strength units="micron/min">10.0</cell_cell_repulsion_strength> # <relative_maximum_adhesion_distance units="dimensionless">1.25</relative_maximum_adhesion_distance> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("cell_cell_adhesion_strength") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cell_cell_adhesion_strength = QtWidgets.QLineEdit() self.cell_cell_adhesion_strength.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cell_cell_adhesion_strength) units = QtWidgets.QLabel("micron/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("cell_cell_repulsion_strength") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cell_cell_repulsion_strength = QtWidgets.QLineEdit() self.cell_cell_repulsion_strength.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.cell_cell_repulsion_strength) units = QtWidgets.QLabel("micron/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("relative_maximum_adhesion_distance") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.relative_maximum_adhesion_distance = QtWidgets.QLineEdit() self.relative_maximum_adhesion_distance.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.relative_maximum_adhesion_distance) units = QtWidgets.QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <options> # <set_relative_equilibrium_distance enabled="false" units="dimensionless">1.8</set_relative_equilibrium_distance> # <set_absolute_equilibrium_distance enabled="false" units="micron">15.12</set_absolute_equilibrium_distance> # </options> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("set_relative_equilibrium_distance") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.set_relative_equilibrium_distance = QtWidgets.QLineEdit() self.set_relative_equilibrium_distance.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.set_relative_equilibrium_distance) units = QtWidgets.QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("set_absolute_equilibrium_distance") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.set_absolute_equilibrium_distance = QtWidgets.QLineEdit() self.set_absolute_equilibrium_distance.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.set_absolute_equilibrium_distance) units = QtWidgets.QLabel("micron") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #============ Motility ================================ label = QtWidgets.QLabel("Phenotype: motility") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) # <speed units="micron/min">1</speed> # <persistence_time units="min">1</persistence_time> # <migration_bias units="dimensionless">.75</migration_bias> hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("speed") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.speed = QtWidgets.QLineEdit() self.speed.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.speed) units = QtWidgets.QLabel("micron/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("persistence_time") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.persistence_time = QtWidgets.QLineEdit() self.persistence_time.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.persistence_time) units = QtWidgets.QLabel("min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("migration_bias") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.migration_bias = QtWidgets.QLineEdit() self.migration_bias.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.migration_bias) units = QtWidgets.QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) # <options> # <enabled>false</enabled> # <use_2D>true</use_2D> # <chemotaxis> # <enabled>false</enabled> # <substrate>virus</substrate> # <direction>1</direction> # </chemotaxis> # </options> hbox = QtWidgets.QHBoxLayout() self.motility_enabled = QtWidgets.QCheckBox("enable") # self.motility_enabled.setAlignment(QtCore.Qt.AlignRight) # label.setFixedWidth(label_width) hbox.addWidget(self.motility_enabled) self.motility_2D = QtWidgets.QCheckBox("2D") # self.motility_2D.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(self.motility_2D) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Chemotaxis") label.setFixedWidth(200) label.setAlignment(QtCore.Qt.AlignCenter) label.setStyleSheet('background-color: yellow') hbox.addWidget(label) self.chemotaxis_enabled = QtWidgets.QCheckBox("enabled") # self.motility_2D.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(self.chemotaxis_enabled) self.vbox_cell_def.addLayout(hbox) self.motility_substrate_dropdown = QtWidgets.QComboBox() self.motility_substrate_dropdown.setFixedWidth(300) # self.cycle_dropdown.currentIndex.connect(self.cycle_changed_cb) # self.motility_substrate_dropdown.currentIndexChanged.connect(self.motility_substrate_changed_cb) self.motility_substrate_dropdown.addItem("oxygen") self.vbox_cell_def.addWidget(self.motility_substrate_dropdown) #============ Secretion ================================ label = QtWidgets.QLabel("Phenotype: secretion") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) # <substrate name="virus"> # <secretion_rate units="1/min">0</secretion_rate> # <secretion_target units="substrate density">1</secretion_target> # <uptake_rate units="1/min">10</uptake_rate> # <net_export_rate units="total substrate/min">0</net_export_rate> # </substrate> # <substrate name="interferon"> # <secretion_rate units="1/min">0</secretion_rate> # <secretion_target units="substrate density">1</secretion_target> # <uptake_rate units="1/min">0</uptake_rate> # <net_export_rate units="total substrate/min">0</net_export_rate> # </substrate> label = QtWidgets.QLabel("oxygen") label.setStyleSheet('background-color: lightgreen') label.setFixedWidth(150) self.vbox_cell_def.addWidget(label) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("secretion_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.secretion_rate1 = QtWidgets.QLineEdit() self.secretion_rate1.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.secretion_rate1) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("target") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.secretion_target1 = QtWidgets.QLineEdit() self.secretion_target1.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.secretion_target1) units = QtWidgets.QLabel("") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("uptake_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.uptake_rate1 = QtWidgets.QLineEdit() self.uptake_rate1.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.uptake_rate1) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("net_export_rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.secretion_net_export_rate = QtWidgets.QLineEdit() self.secretion_net_export_rate.setValidator(QtGui.QDoubleValidator()) hbox.addWidget(self.secretion_net_export_rate) units = QtWidgets.QLabel("total/min") units.setFixedWidth(units_width) units.setAlignment(QtCore.Qt.AlignLeft) hbox.addWidget(units) self.vbox_cell_def.addLayout(hbox) #============ Molecular ================================ label = QtWidgets.QLabel("Phenotype: molecular") label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #===== Custom data label = QtWidgets.QLabel("Custom data") label.setStyleSheet("background-color: cyan") self.vbox_cell_def.addWidget(label) # self.vbox_cell_def.addWidget(QHLine()) #================================================================== self.params_cell_def.setLayout(self.vbox_cell_def) self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setWidgetResizable(True) self.scroll.setWidget(self.params_cell_def) self.save_button = QtWidgets.QPushButton("Save") # self.text = QtWidgets.QLabel("Hello World",alignment=QtCore.Qt.AlignCenter) self.layout = QtWidgets.QVBoxLayout(self) # self.layout.addWidget(self.tabs) # self.layout.addWidget(QHLine()) # self.layout.addWidget(self.params) # self.layout.addWidget(self.scroll) self.layout.addWidget(splitter)
def __init__(self): super().__init__() # self.current_param = None self.xml_root = None self.count = 0 #------------------------------------------- self.label_width = 150 self.units_width = 90 self.scroll_area = QScrollArea() # splitter.addWidget(self.scroll) # self.cell_def_horiz_layout.addWidget(self.scroll) self.custom_data_params = QWidget() self.main_layout = QVBoxLayout() # self.main_layout.addStretch(0) #------------------ controls_hbox = QHBoxLayout() # self.new_button = QPushButton("New") self.new_button = QPushButton("Append 5 more rows") controls_hbox.addWidget(self.new_button) self.new_button.clicked.connect(self.append_more_cb) # self.copy_button = QPushButton("Copy") # controls_hbox.addWidget(self.copy_button) self.clear_button = QPushButton("Clear selected rows") controls_hbox.addWidget(self.clear_button) self.clear_button.clicked.connect(self.clear_rows_cb) #------------------ # <random_seed type="int" units="dimensionless">0</random_seed> # <cargo_signal_D type="double" units="micron/min^2">1e3</cargo_signal_D> # Fixed names for columns: hbox = QHBoxLayout() # self.select = QCheckBox("") col1 = QLabel("Name (required)") col1.setAlignment(QtCore.Qt.AlignCenter) hbox.addWidget(col1) # col2 = QLabel("Type") # col2.setAlignment(QtCore.Qt.AlignCenter) # hbox.addWidget(col2) col3 = QLabel("Default Value (floating point)") col3.setAlignment(QtCore.Qt.AlignCenter) hbox.addWidget(col3) col4 = QLabel("Units") col4.setFixedWidth(self.units_width) col4.setAlignment(QtCore.Qt.AlignCenter) hbox.addWidget(col4) # label.setFixedWidth(180) self.main_layout.addLayout(hbox) #------------------ # Create lists for the various input boxes self.select = [] self.name = [] # self.type = [] self.value = [] self.units = [] self.description = [] # self.type_dropdown = QComboBox() # self.type_dropdown.setFixedWidth(300) # # self.type_dropdown.currentIndexChanged.connect(self.cycle_changed_cb) # self.type_dropdown.addItem("int") # self.type_dropdown.addItem("double") # self.type_dropdown.addItem("bool") # self.type_dropdown.addItem("text") for idx in range(25): # self.main_layout.addLayout(NewUserParam(self)) hbox = QHBoxLayout() w = QCheckBox("") self.select.append(w) hbox.addWidget(w) w = QLineEdit() self.name.append(w) # self.name.setValidator(QtGui.QDoubleValidator()) # self.diffusion_coef.enter.connect(self.save_xml) hbox.addWidget(w) # if idx == 0: # w.setText("random_seed") # w = QComboBox() # # xml2jupyter: {"double":"FloatText", "int":"IntText", "bool":"Checkbox", "string":"Text", "divider":""} # w.addItem("double") # w.addItem("int") # w.addItem("bool") # w.addItem("string") # if idx == 0: # w.setCurrentIndex(1) # self.type.append(w) # hbox.addWidget(w) w = QLineEdit() w.setText("0.0") self.value.append(w) w.setValidator(QtGui.QDoubleValidator()) # if idx == 0: # w.setText("0") hbox.addWidget(w) w = QLineEdit() w.setFixedWidth(self.units_width) self.units.append(w) hbox.addWidget(w) # units = QLabel("micron^2/min") # units.setFixedWidth(units_width) # hbox.addWidget(units) self.main_layout.addLayout(hbox) #----- hbox = QHBoxLayout() w = QLabel("Desc:") hbox.addWidget(w) w = QLineEdit() self.description.append(w) hbox.addWidget(w) w.setStyleSheet("background-color: lightgray") # w.setStyleSheet("background-color: #e4e4e4") self.main_layout.addLayout(hbox) #----- # self.vbox.addLayout(hbox) self.count = self.count + 1 # print(self.count) #================================================================== self.custom_data_params.setLayout(self.main_layout) self.scroll_area.setVerticalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOn) self.scroll_area.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOn) self.scroll_area.setWidgetResizable(True) self.scroll_area.setWidget(self.custom_data_params) self.layout = QVBoxLayout(self) self.layout.addLayout(controls_hbox) self.layout.addWidget(self.scroll_area)
def __init__(self): super().__init__() # global self.params_cell_def # self.cell_defs = CellDefInstances() self.cell_def_horiz_layout = QtWidgets.QHBoxLayout() splitter = QtWidgets.QSplitter() self.tree = QtWidgets.QTreeWidget() self.tree.setStyleSheet("background-color: lightgray") # self.tree.setColumnCount(1) header = QTreeWidgetItem(["--- Substrate or Signal---"]) self.tree.setHeaderItem(header) cellname = QTreeWidgetItem(["virus"]) self.tree.insertTopLevelItem(0, cellname) cellname = QTreeWidgetItem(["interferon"]) self.tree.insertTopLevelItem(1, cellname) self.cell_def_horiz_layout.addWidget(self.tree) self.scroll_cell_def_tree = QtWidgets.QScrollArea() self.scroll_cell_def_tree.setWidget(self.tree) # splitter.addWidget(self.tree) splitter.addWidget(self.scroll_cell_def_tree) #------------------------------------------- # self.tab = QtWidgets.QWidget() # self.tabs.resize(200,5) #------------------------------------------- label_width = 150 units_width = 70 self.scroll = QtWidgets.QScrollArea() splitter.addWidget(self.scroll) # self.cell_def_horiz_layout.addWidget(self.scroll) self.params_cell_def = QtWidgets.QWidget() self.vbox = QtWidgets.QVBoxLayout() self.vbox.addStretch(0) # self.cell_def_horiz_layout.addWidget(self.) #------------------ hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Name of substrate or signal:") label.setFixedWidth(180) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.cell_type_name = QLineEdit() # Want to validate name, e.g., starts with alpha, no special chars, etc. # self.cycle_trate0_0.setValidator(QtGui.QDoubleValidator()) # self.cycle_trate0_1.enter.connect(self.save_xml) hbox.addWidget(self.cell_type_name) self.vbox.addLayout(hbox) #------------------ hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("diffusion coefficient") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.diffusion_coef = QtWidgets.QLineEdit() self.diffusion_coef.setValidator(QtGui.QDoubleValidator()) # self.diffusion_coef.enter.connect(self.save_xml) hbox.addWidget(self.diffusion_coef) units = QtWidgets.QLabel("micron^2/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("decay rate") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.decay_rate = QtWidgets.QLineEdit() self.decay_rate.setValidator(QtGui.QDoubleValidator()) # self.decay_rate.enter.connect(self.save_xml) hbox.addWidget(self.decay_rate) units = QtWidgets.QLabel("1/min") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("initial condition") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.init_cond = QtWidgets.QLineEdit() self.init_cond.setValidator(QtGui.QDoubleValidator()) # self.init_cond.enter.connect(self.save_xml) hbox.addWidget(self.init_cond) units = QtWidgets.QLabel("mmol") units.setFixedWidth(units_width) hbox.addWidget(units) self.vbox.addLayout(hbox) #---------- hbox = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Dirichlet BC") label.setFixedWidth(label_width) label.setAlignment(QtCore.Qt.AlignRight) hbox.addWidget(label) self.bdy_cond = QtWidgets.QLineEdit() self.bdy_cond.setValidator(QtGui.QDoubleValidator()) # self.bdy_cond.enter.connect(self.save_xml) hbox.addWidget(self.bdy_cond) units = QtWidgets.QLabel("mmol") units.setFixedWidth(units_width) hbox.addWidget(units) self.dirichlet_bc_enabled = QtWidgets.QCheckBox("on/off") # self.motility_enabled.setAlignment(QtCore.Qt.AlignRight) # label.setFixedWidth(label_width) hbox.addWidget(self.dirichlet_bc_enabled) self.vbox.addLayout(hbox) #------------- hbox = QtWidgets.QHBoxLayout() self.gradients = QtWidgets.QCheckBox("calculate gradients") hbox.addWidget(self.gradients) self.vbox.addLayout(hbox) hbox = QtWidgets.QHBoxLayout() self.track_in_agents = QtWidgets.QCheckBox("track in agents") hbox.addWidget(self.track_in_agents) self.vbox.addLayout(hbox) #-------------------------- # Dummy widget for filler?? label = QLabel("") label.setFixedHeight(300) # label.setStyleSheet("background-color: orange") label.setAlignment(QtCore.Qt.AlignCenter) self.vbox.addWidget(label) #================================================================== self.params_cell_def.setLayout(self.vbox) self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setWidgetResizable(True) self.scroll.setWidget(self.params_cell_def) # self.save_button = QtWidgets.QPushButton("Save") # self.text = QtWidgets.QLabel("Hello World",alignment=QtCore.Qt.AlignCenter) self.layout = QtWidgets.QVBoxLayout(self) # self.layout.addWidget(self.tabs) # self.layout.addWidget(QHLine()) # self.layout.addWidget(self.params) # self.layout.addWidget(self.scroll) self.layout.addWidget(splitter)