def __init__(self, parent, *args, **kwargs): super(QGraphicsSceneExtend, self).__init__(parent, *args, **kwargs) self.m = parent.m self.config = ConfigManager() # These config settings are transient (ie. not stored between sessions) self.config.set_defaults({ 'mode': EDITOR_MODE_NORMAL, 'font-family': 'Arial', 'font-size': '12', 'text-bold': False, 'text-italic': False, 'text-underline': False, 'text-color': '#000000', 'color-border': None, # '#000000', 'color-background': None, }) # Pre-set these values (will be used by default) self.config.set('color-background', '#5555ff') self.background_image = QImage( os.path.join(utils.scriptdir, 'icons', 'grid100.png')) if settings.get('Editor/Show_grid'): self.showGrid() else: self.hideGrid() self.mode = EDITOR_MODE_NORMAL self.mode_current_object = None self.annotations = []
def test_hook_inherited(): class MyLineEdit(QLineEdit): pass widget = MyLineEdit() config = ConfigManager() assert config._get_hook(widget) == QLineEdit
def __init__(self, parent, *args, **kwargs): super(ToolBase, self).__init__(parent, *args, **kwargs) self.config = ConfigManager() self.config.hooks.update(custom_pyqtconfig_hooks.items()) self.config.set_defaults({ 'is_active': True, 'auto_run_on_config_change': True }) self.config.updated.connect(self.auto_run_on_config_change) self.buttonBar = QWidget() self.configPanels = QWidget() self.configLayout = QVBoxLayout() self.configLayout.setContentsMargins(0, 0, 0, 0) self.configPanels.setLayout(self.configLayout) self._previous_config_backup_ = {} self._worker_thread_ = None self._worker_thread_lock_ = False self.data = { 'spc': None, } self.current_status = 'ready' self.current_progress = 0 self.progress.connect(self.progress_callback) self.status.connect(self.status_callback)
def __init__(self, *args, **kwargs): self.LUXEMBOURG = "LUXEMBOURG" self.MONACO = "MONACO" self.NASSAU = "NASSAU" self.GERMANY = "GERMANY" QtWidgets.QMainWindow.__init__(self, *args, **kwargs) self.title = "ARIS - JIRA Interface GUI" self.left, self.top, self.width, self.height = (0, 30, 1600, 480) self.config = ConfigManager() self.aris_config = self.open_conf_lux() self.apps = os.path.join(os.path.dirname(os.getcwd()), self.aris_config["apps"][0]) self.aris_config_no_tooltips = { key: val[0] for (key, val) in self.aris_config.items() } self.aris_config_list = [(key, value[1]) for key, value in self.aris_config.items()] self.initUI(self) self.statusBar().showMessage("Ready.") self.scrape_ARIS_widget.clicked.connect(self.scrape_ARIS) self.create_TC_widget.clicked.connect(self.create_TC) self.sync_TC_widget.clicked.connect(self.sync_TC) self.config.updated.connect(self.show_config) self.config.updated.connect(self.save_config) self.cmb.activated[str].connect(self.load_preconfigured_json) self.event_stop = threading.Event() QtWidgets.QShortcut("Ctrl+C", self, activated=self.end_button_func)
def __init__(self, parent, **kwargs): super(dialogPluginManagement, self).__init__(parent, **kwargs) self.setWindowTitle(tr("Manage Plugins")) self.config = ConfigManager() self.config.defaults = { 'Plugins/Paths': settings.get('Plugins/Paths'), 'Plugins/Disabled': settings.get('Plugins/Disabled'), } self.m = parent self.setFixedSize(self.sizeHint()) self.plugins_lw = QListWidget() self.plugins_lw.setSelectionMode(QAbstractItemView.ExtendedSelection) self.plugins_lw.setItemDelegate(pluginListDelegate(self.plugins_lw)) self.plugins_lw.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel) page = QWidget() box = QGridLayout() paths = QHBoxLayout() self.pathlist = QLineEdit() self.config.add_handler( 'Plugins/Paths', self.pathlist, (lambda x: x.split(';'), lambda x: ';'.join(x))) paths.addWidget(QLabel('Search Paths:')) paths.addWidget(self.pathlist) box.addLayout(paths, 0, 0) box.addWidget(self.plugins_lw, 1, 0) buttons = QVBoxLayout() refresh_btn = QPushButton('Refresh') refresh_btn.clicked.connect(self.onRefresh) buttons.addWidget(refresh_btn) activate_btn = QPushButton('Activate') activate_btn.clicked.connect(self.onActivate) buttons.addWidget(activate_btn) deactivate_btn = QPushButton('Dectivate') deactivate_btn.clicked.connect(self.onDeactivate) buttons.addWidget(deactivate_btn) buttons.addStretch() box.addLayout(buttons, 1, 1) page.setLayout(box) self.layout.addWidget(page) # Stack it all up, with extra buttons self.dialogFinalise() # Refresh the list of available plugins self._init_timer = QTimer.singleShot(0, self.onRefresh)
def test_hook_inherited_direct(): class MyLineEdit(QLineEdit): pass widget = MyLineEdit() config = ConfigManager() config.add_hooks(MyLineEdit, (_get_QLineEdit, _set_QLineEdit, _event_QLineEdit)) assert config._get_hook(widget) == MyLineEdit
def test_no_hook(): class MyTestClass: pass o = MyTestClass() config = ConfigManager() with pytest.raises(TypeError) as e: assert config._get_hook(o) assert "No handler-functions available for this" in str(e)
def __init__(self, parent, config=None, *args, **kwargs): super(AnnotateClasses, self).__init__(parent, *args, **kwargs) self.setWindowTitle('Annotate Classes') if config: # Copy in starting state self.config = ConfigManager() self.config.hooks.update(custom_pyqtconfig_hooks.items()) self.config.set_defaults(config) self.fwd_map_cache = {} # Correlation variables gb = QGroupBox('Sample classes') vbox = QVBoxLayout() # Populate the list boxes self.lw_classes = QListWidgetAddRemove() self.lw_classes.setSelectionMode(QAbstractItemView.ExtendedSelection) vbox.addWidget(self.lw_classes) vboxh = QHBoxLayout() self.add_label = QLineEdit() self.add_class = QLineEdit() addc = QPushButton('Add') addc.clicked.connect(self.onClassAdd) remc = QPushButton('Remove selected') remc.clicked.connect(self.onClassAdd) loadc = QPushButton('Import from file') loadc.setIcon( QIcon( os.path.join(utils.scriptdir, 'icons', 'folder-open-document.png'))) loadc.clicked.connect(self.onClassImport) vboxh.addWidget(self.add_label) vboxh.addWidget(self.add_class) vboxh.addWidget(addc) vbox.addWidget(remc) vbox.addLayout(vboxh) vboxh.addWidget(loadc) gb.setLayout(vbox) self.layout.addWidget(gb) self.config.add_handler('annotation/sample_classes', self.lw_classes, (self.map_list_fwd, self.map_list_rev)) self.dialogFinalise()
def __init__(self, parent, config=None, *args, **kwargs): super(Preferences, self).__init__(parent, *args, **kwargs) if config: # Copy in starting state self.config = ConfigManager() self.config.hooks.update(custom_pyqtconfig_hooks.items()) self.config.set_defaults(config) self.dialogFinalise()
def __init__(self): super(MainWindow, self).__init__() self.setWindowTitle('PyQtConfig Demo') self.config = ConfigManager() CHOICE_A = 1 CHOICE_B = 2 CHOICE_C = 3 CHOICE_D = 4 map_dict = { 'Choice A': CHOICE_A, 'Choice B': CHOICE_B, 'Choice C': CHOICE_C, 'Choice D': CHOICE_D, } self.config.set_defaults({ 'number': 13, 'text': 'hello', 'active': True, 'combo': CHOICE_C, }) gd = QGridLayout() sb = QSpinBox() gd.addWidget(sb, 0, 1) self.config.add_handler('number', sb) te = QLineEdit() gd.addWidget(te, 1, 1) self.config.add_handler('text', te) cb = QCheckBox() gd.addWidget(cb, 2, 1) self.config.add_handler('active', cb) cmb = QComboBox() cmb.addItems(map_dict.keys()) gd.addWidget(cmb, 3, 1) self.config.add_handler('combo', cmb, mapper=map_dict) self.current_config_output = QTextEdit() gd.addWidget(self.current_config_output, 0, 3, 3, 1) self.config.updated.connect(self.show_config) self.show_config() self.window = QWidget() self.window.setLayout(gd) self.setCentralWidget(self.window)
def __init__(self, position=None, *args, **kwargs): super(BaseAnnotationItem, self).__init__(*args, **kwargs) # Config for each annotation item, holding the settings (styles, etc) # update-control via the toolbar using add_handler linking self.config = ConfigManager() self.config.updated.connect(self.applyStyleConfig) self.setFlag(QGraphicsItem.ItemIsMovable) self.setFlag(QGraphicsItem.ItemIsSelectable) self.setFlag(QGraphicsItem.ItemIsFocusable) if position: self.setPos(position) self.setZValue(-1)
def __init__(self, config_in, ncols=2, captions=None, hide_keys=None, horizontal=False, show_captions=True, accept_button=False, config_manager=None, radiobuttons=None, dropdownboxes=None): """ :param config_in: dictionary :param ncols: :param captions: :param radiobuttons: {"name_of_radiobutton": [ ["orig_caption_1", orig_caption_2], default_value] ] } """ super(DictWidget, self).__init__() if captions is None: captions = {} if hide_keys is None: hide_keys = [] self.config_in = config_in self.ncols = ncols self.captions = captions self.accept_button = accept_button self.hide_keys = copy.copy(hide_keys) self.horizontal = horizontal self.show_captions = show_captions if radiobuttons is None: radiobuttons = {} self.radiobuttons = radiobuttons if dropdownboxes is None: dropdownboxes = {} self.dropdownboxes = dropdownboxes # hide also temp keys for lists and ndarrays # due to load default params self._get_tmp_composed_keys(config_in) self.hide_keys.extend(self._tmp_composed_keys_list) if config_manager is None: self.config = ConfigManager() self.config.set_defaults(config_in) else: self.config = config_manager self.mainLayout = QGridLayout(self) self.setLayout(self.mainLayout) self.widgets = {} self.grid_i = 0 self.init_ui()
def __init__(self, settings, parent=None): super().__init__(parent) self.settings = settings self.serialports = [] # port self.portLabel = QLabel(self.tr("COM Port:")) self.portComboBox = QComboBox() self.portLabel.setBuddy(self.portComboBox) self.refresh_comports(self.portComboBox) # baudrate self.baudrateLabel = QLabel(self.tr("Baudrate:")) self.baudrateComboBox = QComboBox() self.baudrateLabel.setBuddy(self.baudrateComboBox) for br in BAUDRATES: self.baudrateComboBox.addItem(str(br), br) # buttons self.dlgbuttons = QDialogButtonBox( QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal) self.dlgbuttons.rejected.connect(self.reject) self.dlgbuttons.accepted.connect(self.accept) # layout layout = QGridLayout() layout.addWidget(self.portLabel, 0, 0) layout.addWidget(self.portComboBox, 0, 1) layout.addWidget(self.baudrateLabel, 1, 0) layout.addWidget(self.baudrateComboBox, 1, 1) layout.addWidget(self.dlgbuttons, 2, 0, 1, 2) self.setLayout(layout) self.setWindowTitle(self.tr("Serial Settings")) # settings defaults = { PORT_SETTING: "", BAUDRATE_SETTING: "115200" } self.tmp_settings = ConfigManager() self.tmp_settings.set_defaults(defaults) self.tmp_settings.set_many( {key: self.settings.get(key) for key in defaults.keys()} ) self.tmp_settings.add_handler(PORT_SETTING, self.portComboBox) self.tmp_settings.add_handler(BAUDRATE_SETTING, self.baudrateComboBox)
def __init__(self, *args, **kwargs): super(Automaton, self).__init__(*args, **kwargs) self.setData(self, Qt.UserRole) self.watcher = QFileSystemWatcher() self.timer = QTimer() self.watch_window = {} self.latest_run = {} self.is_running = False self.config = ConfigManager() self.config.set_defaults({ 'mode': MODE_WATCH_FOLDER, 'is_active': True, 'trigger_hold': 1, 'notebook_paths': '', 'output_path': '{home}/{notebook_filename}_{datetime}_', 'output_format': 'html', 'watched_files': [], 'watched_folder': '', 'watch_window': 15, 'iterate_watched_folder': True, 'iterate_wildcard': '.csv', 'timer_seconds': 60, }) self.runner = None self.lock = None self.latest_run = { 'timestamp': None, 'success': None, } # Set up all the triggers self.watcher.fileChanged.connect(self.file_trigger_accumulator) self.watcher.directoryChanged.connect(self.trigger) self.timer.timeout.connect(self.trigger)
def __init__(self, parent, config=None, *args, **kwargs): super(AnnotatePeaks, self).__init__(parent, *args, **kwargs) self.setWindowTitle('Annotate Peaks') if config: # Copy in starting state self.config = ConfigManager() self.config.hooks.update(custom_pyqtconfig_hooks.items()) self.config.set_defaults(config) self.fwd_map_cache = {} # Correlation variables gb = QGroupBox('Peaks') vbox = QVBoxLayout() # Populate the list boxes self.lw_peaks = QListWidgetAddRemove() self.lw_peaks.setSelectionMode(QAbstractItemView.ExtendedSelection) vbox.addWidget(self.lw_peaks) vboxh = QHBoxLayout() self.add_label = QLineEdit() self.add_start = QDoubleSpinBox() self.add_start.setRange(-1, 12) self.add_start.setDecimals(3) self.add_start.setSuffix('ppm') self.add_start.setSingleStep(0.001) self.add_end = QDoubleSpinBox() self.add_end.setRange(-1, 12) self.add_end.setDecimals(3) self.add_end.setSuffix('ppm') self.add_end.setSingleStep(0.001) addc = QPushButton('Add') addc.clicked.connect(self.onPeakAdd) remc = QPushButton('Remove selected') remc.clicked.connect(self.onPeakAdd) loadc = QPushButton("Import from file") loadc.setIcon( QIcon( os.path.join(utils.scriptdir, 'icons', 'folder-open-document.png'))) loadc.clicked.connect(self.onPeakImport) metabh = QPushButton("Auto match via MetaboHunter") metabh.setIcon( QIcon(os.path.join(utils.scriptdir, 'icons', 'metabohunter.png'))) metabh.clicked.connect(self.onPeakImportMetabohunter) vboxh.addWidget(self.add_label) vboxh.addWidget(self.add_start) vboxh.addWidget(self.add_end) vboxh.addWidget(addc) vbox.addWidget(remc) vbox.addLayout(vboxh) vbox.addWidget(loadc) vbox.addWidget(metabh) gb.setLayout(vbox) self.layout.addWidget(gb) self.config.add_handler('annotation/peaks', self.lw_peaks, (self.map_list_fwd, self.map_list_rev)) self.dialogFinalise()
def __init__(self, *args, **kwargs): super(MetaboHunter, self).__init__(*args, **kwargs) self.setWindowTitle('MetaboHunter') # Copy in starting state self.config = ConfigManager() self.config.hooks.update(custom_pyqtconfig_hooks.items()) self.config.set_defaults({ 'Metabotype': 'All', 'Database Source': 'HMDB', 'Sample pH': 'ph7', 'Solvent': 'water', 'Frequency': 'all', 'Method': 'HighestNumberNeighbourhood', 'Noise Threshold': 0.0001, 'Confidence Threshold': 0.5, 'Tolerance': 0.1, 'convert_hmdb_ids_to_names': True, }) self.lw_combos = {} for o in [ 'Metabotype', 'Database Source', 'Sample pH', 'Solvent', 'Frequency', 'Method' ]: row = QVBoxLayout() cl = QLabel(o) cb = QComboBox() cb.addItems(list(self.options[o].keys())) row.addWidget(cl) row.addWidget(cb) self.config.add_handler(o, cb, self.options[o]) self.layout.addLayout(row) row = QGridLayout() self.lw_spin = {} for n, o in enumerate( ['Noise Threshold', 'Confidence Threshold', 'Tolerance']): cl = QLabel(o) cb = QDoubleSpinBox() cb.setDecimals(4) cb.setRange(0, 1) cb.setSingleStep(0.01) cb.setValue(float(self.config.get(o))) row.addWidget(cl, 0, n) row.addWidget(cb, 1, n) self.config.add_handler(o, cb) self.layout.addLayout(row) row = QHBoxLayout() row.addWidget(QLabel("Convert HMDB IDs to chemical names?")) conv = QCheckBox() self.config.add_handler('convert_hmdb_ids_to_names', conv) row.addWidget(conv) self.layout.addLayout(row) self.dialogFinalise()
def __init__(self, parent, **kwargs): super(AutomatonDialog, self).__init__(parent, **kwargs) self.setWindowTitle("Edit Automaton") self.config = ConfigManager() gb = QGroupBox('IPython notebook(s) (*.ipynb)') grid = QGridLayout() notebook_path_le = QLineEdit() self.config.add_handler('notebook_paths', notebook_path_le, mapper=(lambda x: x.split(";"), lambda x: ";".join(x))) grid.addWidget(notebook_path_le, 0, 0, 1, 2) notebook_path_btn = QToolButton() notebook_path_btn.setIcon( QIcon( os.path.join(utils.scriptdir, 'icons', 'document-attribute-i.png'))) notebook_path_btn.clicked.connect( lambda: self.onNotebookBrowse(notebook_path_le)) grid.addWidget(notebook_path_btn, 0, 2, 1, 1) gb.setLayout(grid) self.layout.addWidget(gb) gb = QGroupBox('Automaton mode') grid = QGridLayout() mode_cb = QComboBox() mode_cb.addItems(self.mode_options.keys()) mode_cb.currentIndexChanged.connect(self.onChangeMode) self.config.add_handler('mode', mode_cb, mapper=self.mode_options) grid.addWidget(QLabel('Mode'), 0, 0) grid.addWidget(mode_cb, 0, 1) grid.addWidget(QLabel('Hold trigger'), 1, 0) fwatcher_hold_sb = QSpinBox() fwatcher_hold_sb.setRange(0, 60) fwatcher_hold_sb.setSuffix(' secs') self.config.add_handler('trigger_hold', fwatcher_hold_sb) grid.addWidget(fwatcher_hold_sb, 1, 1) gb.setLayout(grid) self.layout.addWidget(gb) self.watchfile_gb = QGroupBox('Watch files') grid = QGridLayout() watched_path_le = QLineEdit() grid.addWidget(watched_path_le, 0, 0, 1, 2) self.config.add_handler('watched_files', watched_path_le, mapper=(lambda x: x.split(";"), lambda x: ";".join(x))) watched_path_btn = QToolButton() watched_path_btn.setIcon( QIcon(os.path.join(utils.scriptdir, 'icons', 'document-copy.png'))) watched_path_btn.setStatusTip('Add file(s)') watched_path_btn.clicked.connect( lambda: self.onFilesBrowse(watched_path_le)) grid.addWidget(watched_path_btn, 0, 2, 1, 1) grid.addWidget(QLabel('Watch window'), 1, 0) watch_window_sb = QSpinBox() watch_window_sb.setRange(0, 60) watch_window_sb.setSuffix(' secs') self.config.add_handler('watch_window', watch_window_sb) grid.addWidget(watch_window_sb, 1, 1) self.watchfile_gb.setLayout(grid) self.layout.addWidget(self.watchfile_gb) self.watchfolder_gb = QGroupBox('Watch folder') grid = QGridLayout() watched_path_le = QLineEdit() grid.addWidget(watched_path_le, 0, 0, 1, 3) self.config.add_handler('watched_folder', watched_path_le) watched_path_btn = QToolButton() watched_path_btn.setIcon( QIcon( os.path.join(utils.scriptdir, 'icons', 'folder-horizontal-open.png'))) watched_path_btn.setStatusTip('Add folder') watched_path_btn.clicked.connect( lambda: self.onFolderBrowse(watched_path_le)) grid.addWidget(watched_path_btn, 0, 3, 1, 1) grid.addWidget(QLabel('Iterate files in folder'), 3, 0) loop_folder_sb = QCheckBox() self.config.add_handler('iterate_watched_folder', loop_folder_sb) grid.addWidget(loop_folder_sb, 3, 1) loop_wildcard_le = QLineEdit() self.config.add_handler('iterate_wildcard', loop_wildcard_le) grid.addWidget(loop_wildcard_le, 3, 2) self.watchfolder_gb.setLayout(grid) self.layout.addWidget(self.watchfolder_gb) self.timer_gb = QGroupBox('Timer') grid = QGridLayout() grid.addWidget(QLabel('Run every'), 0, 0) watch_timer_sb = QSpinBox() watch_timer_sb.setRange(0, 60) watch_timer_sb.setSuffix(' secs') self.config.add_handler('timer_seconds', watch_timer_sb) grid.addWidget(watch_timer_sb, 0, 1) self.timer_gb.setLayout(grid) self.layout.addWidget(self.timer_gb) self.manual_gb = QGroupBox('Manual') # No show grid = QGridLayout() grid.addWidget(QLabel('No configuration'), 0, 0) self.manual_gb.setLayout(grid) self.layout.addWidget(self.manual_gb) gb = QGroupBox('Output') grid = QGridLayout() output_path_le = QLineEdit() self.config.add_handler('output_path', output_path_le) grid.addWidget(output_path_le, 0, 0, 1, 2) notebook_path_btn = QToolButton() notebook_path_btn.setIcon( QIcon( os.path.join(utils.scriptdir, 'icons', 'folder-horizontal-open.png'))) notebook_path_btn.clicked.connect( lambda: self.onFolderBrowse(notebook_path_le)) grid.addWidget(notebook_path_btn, 0, 2, 1, 1) export_cb = QComboBox() export_cb.addItems(IPyexporter_map.keys()) self.config.add_handler('output_format', export_cb) grid.addWidget(QLabel('Notebook output format'), 1, 0) grid.addWidget(export_cb, 1, 1) gb.setLayout(grid) self.layout.addWidget(gb) self.layout.addStretch() self.finalise() self.onChangeMode(mode_cb.currentIndex())
# ReadTheDocs ON_RTD = os.environ.get('READTHEDOCS', None) == 'True' if not ON_RTD: # Application settings settings = QSettingsManager() settings.set_defaults({ 'core/is_setup': False, 'core/current_version': '0.0.1', 'core/latest_version': '0.0.1', 'core/last_time_version_checked': 0, 'core/offered_registration': False, }) # GLobal processing settings (e.g. peak annotations, class groups, etc.) config = ConfigManager() config.set_defaults({ 'annotation/peaks': [], # [(label, peak, tolerance) 'annotation/sample_classes': {}, # {'sample_id': 'class_name' } 'annotation/class_colors': {}, # {'class_name': color } }) STATUS_QCOLORS = { 'ready': QColor(255, 255, 255), 'active': QColor(255, 165, 0), 'error': QColor(255, 0, 0), 'inactive': QColor(255, 255, 255), 'complete': QColor(0, 255, 0), }
def __init__(self, config_in, ncols=2): super(DictGui, self).__init__() self.setWindowTitle('Lisa Config') self.config = ConfigManager() self.ncols = ncols # used with other module. If it is set, lisa config is deleted self.reset_config = False CHOICE_A = "{pairwise_alpha_per_mm2: 45, return_only_object_with_seeds: true}" # CHOICE_A = 23 CHOICE_B = 2 CHOICE_C = 3 CHOICE_D = 4 map_dict = { 'Graph-Cut': CHOICE_A, 'Choice B': CHOICE_B, 'Choice C': CHOICE_C, 'Choice D': CHOICE_D, } config_def = { 'working_voxelsize_mm': 2.0, 'save_filetype': 'pklz', # 'manualroi': True, 'segparams': CHOICE_A, } config_def.update(config_in) self.config.set_defaults(config_def) gd = QGridLayout() gd_max_i = 0 for key, value in config_in.items(): if type(value) is int: sb = QSpinBox() sb.setRange(-100000, 100000) elif type(value) is float: sb = QDoubleSpinBox() elif type(value) is str: sb = QLineEdit() elif type(value) is bool: sb = QCheckBox() else: logger.error("Unexpected type in config dictionary") row = gd_max_i / self.ncols col = (gd_max_i % self.ncols) * 2 gd.addWidget(QLabel(key), row, col + 1) gd.addWidget(sb, row, col + 2) self.config.add_handler(key, sb) gd_max_i += 1 # gd.addWidget(QLabel("save filetype"), 1, 1) # te = QLineEdit() # gd.addWidget(te, 1, 2) # self.config.add_handler('save_filetype', te) # # gd.addWidget(QLabel("segmentation parameters"), 2, 1) # te = QLineEdit() # gd.addWidget(te, 2, 2) # self.config.add_handler('segparams', te) # cb = QCheckBox() # gd.addWidget(cb, 2, 2) # self.config.add_handler('active', cb) # gd.addWidget(QLabel("segmentation parameters"), 3, 1) # cmb = QComboBox() # cmb.addItems(map_dict.keys()) # gd.addWidget(cmb, 3, 2) # self.config.add_handler('segparams', cmb, mapper=map_dict) self.current_config_output = QTextEdit() # rid.setColumnMinimumWidth(3, logo.width()/2) text_col = (self.ncols * 2) + 3 gd.setColumnMinimumWidth(text_col, 500) gd.addWidget(self.current_config_output, 1, text_col, (gd_max_i / 2) - 1, 1) btn_reset_config = QPushButton("Default", self) btn_reset_config.clicked.connect(self.btnResetConfig) gd.addWidget(btn_reset_config, 0, text_col) btn_save_config = QPushButton("Ok", self) btn_save_config.clicked.connect(self.btnSaveConfig) gd.addWidget(btn_save_config, (gd_max_i / 2), text_col) self.config.updated.connect(self.show_config) self.show_config() # my line self.setLayout(gd)
def test_hook_direct(): widget = QLineEdit() config = ConfigManager() assert config._get_hook(widget) == QLineEdit