def __init__(self, parent): orientation = Qt.Vertical if config['gui_layout'] == 'narrow': orientation = Qt.Horizontal if is_widescreen() else Qt.Vertical idx = 0 if orientation == Qt.Vertical else 1 size = 300 if orientation == Qt.Vertical else 550 Splitter.__init__(self, 'cover_browser_splitter', _('Cover browser'), I('cover_flow.png'), orientation=orientation, parent=parent, connect_button=not config['separate_cover_flow'], side_index=idx, initial_side_size=size, initial_show=False, shortcut='Shift+Alt+B') quickview_widget = QWidget() parent.quickview_splitter = QuickviewSplitter( parent=self, orientation=Qt.Vertical, qv_widget=quickview_widget) parent.library_view = BooksView(parent) parent.library_view.setObjectName('library_view') stack = QStackedWidget(self) av = parent.library_view.alternate_views parent.pin_container = av.set_stack(stack) parent.grid_view = GridView(parent) parent.grid_view.setObjectName('grid_view') av.add_view('grid', parent.grid_view) parent.quickview_splitter.addWidget(stack) l = QVBoxLayout() l.setContentsMargins(4, 0, 0, 0) quickview_widget.setLayout(l) parent.quickview_splitter.addWidget(quickview_widget) parent.quickview_splitter.hide_quickview_widget() self.addWidget(parent.quickview_splitter)
def build_control_bar(self): # Add control bar control_row_layout = QHBoxLayout(self) control_row_layout.setContentsMargins(0, 0, 0, 0) # DB type combo box db_combo_box = QComboBox(self) for dbname in UI.CONNECTION_STRING_SUPPORTED_DB_NAMES: db_combo_box.addItem(dbname) control_row_layout.addWidget(db_combo_box) # Connection string self.connection_line = QLineEdit(self) self.connection_line.setPlaceholderText( UI.CONNECTION_STRING_PLACEHOLDER) self.connection_line.setText(UI.CONNECTION_STRING_DEFAULT) control_row_layout.addWidget(self.connection_line) # Connection button connection_button = QPushButton(self) connection_button.setText(UI.QUERY_CONTROL_CONNECT_BUTTON_TEXT) connection_button.clicked.connect(self.on_connect_click) control_row_layout.addWidget(connection_button) # Add contol row as a first widget in a column control_row = QWidget(self) control_row.setLayout(control_row_layout) return control_row
def get_text_widget(self): """ Return text QWidget with QTextEdit :return: text QWidget :rtype: QWidget """ text_widget = QWidget() text_widget.setObjectName('dialog') text_layout = QVBoxLayout() text_widget.setLayout(text_layout) self.text_edit.setPlaceholderText(_('type your text...')) self.text_edit.setText(self.old_text) text_layout.addWidget(self.text_edit) # Accept button accept_btn = QPushButton(_('Confirm'), self) accept_btn.clicked.connect(self.accept_text) accept_btn.setObjectName('valid') accept_btn.setMinimumHeight(30) text_layout.addWidget(accept_btn) return text_widget
class MainWindowMixin(object): # {{{ def __init__(self, *args, **kwargs): pass def init_main_window_mixin(self, db): self.setObjectName('MainWindow') self.setWindowIcon(QIcon(I('lt.png'))) self.setWindowTitle(__appname__) self.setContextMenuPolicy(Qt.NoContextMenu) self.centralwidget = QWidget(self) self.setCentralWidget(self.centralwidget) self._central_widget_layout = QVBoxLayout() self.centralwidget.setLayout(self._central_widget_layout) self.resize(1012, 740) self.donate_button = ThrobbingButton() self.location_manager = LocationManager(self) self.iactions['Fetch News'].init_scheduler(db) self.search_bar = SearchBar(self) self.bars_manager = BarsManager(self.donate_button, self.location_manager, self) for bar in self.bars_manager.main_bars: self.addToolBar(Qt.TopToolBarArea, bar) for bar in self.bars_manager.child_bars: self.addToolBar(Qt.BottomToolBarArea, bar) self.bars_manager.update_bars() # This is disabled because it introduces various toolbar related bugs # The width of the toolbar becomes the sum of both toolbars if tweaks['unified_title_toolbar_on_osx']: self.setUnifiedTitleAndToolBarOnMac(True) l = self.centralwidget.layout() l.addWidget(self.search_bar)
def initialize(self): """ Initialize QWidget """ layout = QHBoxLayout() self.setLayout(layout) self.services_title.setObjectName('itemtitle') layout.addWidget(self.services_title) layout.setAlignment(self.services_title, Qt.AlignLeft) icons_widget = QWidget() icons_layout = QHBoxLayout() icons_widget.setLayout(icons_layout) for icon in Service.get_available_icons(): state = icon.replace('services_', '').upper() icon_pixmap = QIcon(settings.get_image(icon)) self.states_btns[state].setIcon(icon_pixmap) self.states_btns[state].setFixedSize(20, 20) self.states_btns[state].setToolTip(state) self.states_btns[state].setCheckable(True) self.states_btns[state].setObjectName('services') icons_layout.addWidget(self.states_btns[state]) self.nb_labels[state].setObjectName(get_icon_name_from_state('service', state)) icons_layout.addWidget(self.nb_labels[state]) layout.addWidget(icons_widget) layout.setAlignment(icons_widget, Qt.AlignRight)
def test(scale=0.25): from PyQt5.Qt import QLabel, QPixmap, QMainWindow, QWidget, QScrollArea, QGridLayout from calibre.gui2 import Application app = Application([]) mi = Metadata('Unknown', ['Kovid Goyal', 'John & Doe', 'Author']) mi.series = 'A series & styles' m = QMainWindow() sa = QScrollArea(m) w = QWidget(m) sa.setWidget(w) l = QGridLayout(w) w.setLayout(l), l.setSpacing(30) scale *= w.devicePixelRatioF() labels = [] for r, color in enumerate(sorted(default_color_themes)): for c, style in enumerate(sorted(all_styles())): mi.series_index = c + 1 mi.title = 'An algorithmic cover [%s]' % color prefs = override_prefs(cprefs, override_color_theme=color, override_style=style) scale_cover(prefs, scale) img = generate_cover(mi, prefs=prefs, as_qimage=True) img.setDevicePixelRatio(w.devicePixelRatioF()) la = QLabel() la.setPixmap(QPixmap.fromImage(img)) l.addWidget(la, r, c) labels.append(la) m.setCentralWidget(sa) w.resize(w.sizeHint()) m.show() app.exec_()
def setup_store_checks(self): first_run = self.config.get('first_run', True) # Add check boxes for each store so the user # can disable searching specific stores on a # per search basis. existing = {} for n in self.store_checks: existing[n] = self.store_checks[n].isChecked() self.store_checks = {} stores_check_widget = QWidget() store_list_layout = QGridLayout() stores_check_widget.setLayout(store_list_layout) icon = QIcon(I('donate.png')) for i, x in enumerate(sorted(self.gui.istores.keys(), key=lambda x: x.lower())): cbox = QCheckBox(x) cbox.setChecked(existing.get(x, first_run)) store_list_layout.addWidget(cbox, i, 0, 1, 1) if self.gui.istores[x].base_plugin.affiliate: iw = QLabel(self) iw.setToolTip('<p>' + _('Buying from this store supports the calibre developer: %s</p>') % self.gui.istores[x].base_plugin.author + '</p>') iw.setPixmap(icon.pixmap(16, 16)) store_list_layout.addWidget(iw, i, 1, 1, 1) self.store_checks[x] = cbox store_list_layout.setRowStretch(store_list_layout.rowCount(), 10) self.store_list.setWidget(stores_check_widget) self.config['first_run'] = False
def beginHorizontal(self, **options): widget = QWidget() h = QHBoxLayout() h.setContentsMargins(*options.get("contentMargin", (0, 0, 0, 0))) widget.setLayout(h) self.layoutStack[-1].addWidget(widget) self.layoutStack.append(h)
def beginVertical(self, **options): widget = QWidget() v = QVBoxLayout() v.setContentsMargins(*options.get("contentMargin", (0, 0, 0, 0))) widget.setLayout(v) self.layoutStack[-1].addWidget(widget) self.layoutStack.append(v)
def setup_store_checks(self): first_run = self.config.get('first_run', True) # Add check boxes for each store so the user # can disable searching specific stores on a # per search basis. existing = {} for n in self.store_checks: existing[n] = self.store_checks[n].isChecked() self.store_checks = {} stores_check_widget = QWidget() store_list_layout = QGridLayout() stores_check_widget.setLayout(store_list_layout) icon = QIcon(I('donate.png')) for i, x in enumerate( sorted(self.gui.istores.keys(), key=lambda x: x.lower())): cbox = QCheckBox(x) cbox.setChecked(existing.get(x, first_run)) store_list_layout.addWidget(cbox, i, 0, 1, 1) if self.gui.istores[x].base_plugin.affiliate: iw = QLabel(self) iw.setToolTip('<p>' + _( 'Buying from this store supports the calibre developer: %s</p>' ) % self.gui.istores[x].base_plugin.author + '</p>') iw.setPixmap(icon.pixmap(16, 16)) store_list_layout.addWidget(iw, i, 1, 1, 1) self.store_checks[x] = cbox store_list_layout.setRowStretch(store_list_layout.rowCount(), 10) self.store_list.setWidget(stores_check_widget) self.config['first_run'] = False
def get_search_widget(self): """ Create and return the search QWidget :return: search QWidget :rtype: QWidget """ widget = QWidget() layout = QHBoxLayout() layout.setSpacing(0) layout.setContentsMargins(5, 20, 5, 10) widget.setLayout(layout) # Search label search_lbl = QLabel(_('Search Problems')) search_lbl.setObjectName('bordertitle') search_lbl.setFixedHeight(25) search_lbl.setToolTip(_('Search Problems')) layout.addWidget(search_lbl) # QLineEdit self.line_search.setFixedHeight(search_lbl.height()) self.line_search.setPlaceholderText(_('Type text to filter problems...')) layout.addWidget(self.line_search) # Refresh button refresh_btn = QPushButton(_('Refresh')) refresh_btn.setObjectName('ok') refresh_btn.setFixedSize(120, search_lbl.height()) refresh_btn.setToolTip(_('Refresh problems')) refresh_btn.clicked.connect(self.update_problems_data) layout.addWidget(refresh_btn) return widget
def make_widgets(self, parent, main_widget_class, extra_label_text=''): w = QWidget(parent) self.widgets = [QLabel('&'+self.col_metadata['name']+':', w), w] l = QHBoxLayout() l.setContentsMargins(0, 0, 0, 0) w.setLayout(l) self.main_widget = main_widget_class(w) l.addWidget(self.main_widget) l.setStretchFactor(self.main_widget, 10) self.a_c_checkbox = QCheckBox(_('Apply changes'), w) l.addWidget(self.a_c_checkbox) self.ignore_change_signals = True # connect to the various changed signals so we can auto-update the # apply changes checkbox if hasattr(self.main_widget, 'editTextChanged'): # editable combobox widgets self.main_widget.editTextChanged.connect(self.a_c_checkbox_changed) if hasattr(self.main_widget, 'textChanged'): # lineEdit widgets self.main_widget.textChanged.connect(self.a_c_checkbox_changed) if hasattr(self.main_widget, 'currentIndexChanged'): # combobox widgets self.main_widget.currentIndexChanged[int].connect(self.a_c_checkbox_changed) if hasattr(self.main_widget, 'valueChanged'): # spinbox widgets self.main_widget.valueChanged.connect(self.a_c_checkbox_changed) if hasattr(self.main_widget, 'dateTimeChanged'): # dateEdit widgets self.main_widget.dateTimeChanged.connect(self.a_c_checkbox_changed)
def get_last_check_widget(self): """ Return QWidget with last check data :return: widget with last check data :rtype: QWidget """ widget = QWidget() layout = QGridLayout() widget.setLayout(layout) # Title check_title = QLabel(_('My last check')) check_title.setObjectName('itemtitle') check_title.setFixedHeight(25) layout.addWidget(check_title, 0, 0, 1, 2) # State state_title = QLabel(_("State:")) state_title.setObjectName('subtitle') layout.addWidget(state_title, 1, 0, 1, 1) layout.addWidget(self.labels['state_icon'], 1, 1, 1, 1) # When last check when_title = QLabel(_("When:")) when_title.setObjectName('subtitle') layout.addWidget(when_title, 2, 0, 1, 1) layout.addWidget(self.labels['ls_last_check'], 2, 1, 1, 1) return widget
def test(scale=0.25): from PyQt5.Qt import QLabel, QApplication, QPixmap, QMainWindow, QWidget, QScrollArea, QGridLayout app = QApplication([]) mi = Metadata('xxx', ['Kovid Goyal', 'John & Doe', 'Author']) mi.series = 'A series of styles' m = QMainWindow() sa = QScrollArea(m) w = QWidget(m) sa.setWidget(w) l = QGridLayout(w) w.setLayout(l), l.setSpacing(30) labels = [] for r, color in enumerate(sorted(default_color_themes)): for c, style in enumerate(sorted(all_styles())): mi.series_index = c + 1 mi.title = 'An algorithmic cover [%s]' % color prefs = override_prefs(cprefs, override_color_theme=color, override_style=style) scale_cover(prefs, scale) img = generate_cover(mi, prefs=prefs, as_qimage=True) la = QLabel() la.setPixmap(QPixmap.fromImage(img)) l.addWidget(la, r, c) labels.append(la) m.setCentralWidget(sa) w.resize(w.sizeHint()) m.show() app.exec_()
def get_search_widget(self): """ Create and return the search QWidget :return: search QWidget :rtype: QWidget """ widget = QWidget() layout = QHBoxLayout() layout.setSpacing(0) widget.setLayout(layout) # Search label search_lbl = QLabel(_('Search Host')) search_lbl.setObjectName('bordertitle') search_lbl.setFixedHeight(25) search_lbl.setToolTip(_('Search Host')) layout.addWidget(search_lbl) # QLineEdit self.line_search.setFixedHeight(search_lbl.height()) layout.addWidget(self.line_search) self.create_line_search([]) return widget
def define_section1(self): """defining section 1: choose file to upload and project """ mywidget = QWidget(self) layout = QHBoxLayout() mywidget.setLayout(layout) mypath = self.settings["raw_files_path"] file_btn = FileButton("Choose XML or Fasta file", mypath, self) self.file_widget = ChoiceSection("Raw File:", [file_btn], self.tree) self.file_widget.choice.connect(self.get_file) mypath = r"H:\Projekte\RnD\24_NeueAllele\3_Veröffentlichung\1.1_xmlExport_NGSengine\HLA-Klasse1\B4_B5\ID11558869.xml" if self.settings["modus"] == "debugging": self.file_widget.field.setText(mypath) layout.addWidget(self.file_widget) proj_btn = QueryButton("Choose a (different) existing project", "SELECT project_name FROM projects where project_status = 'Open' order by project_name desc") new_proj_btn = NewProjectButton("Start a new project", self.log, self.mydb, self.settings) self.proj_widget = ChoiceSection("Project:", [proj_btn, new_proj_btn], self.tree) self.proj_widget.field.setText(self.current_project) proj_btn.change_to_normal(None) new_proj_btn.change_to_normal(None) self.proj_widget.choice.connect(self.get_project) layout.addWidget(self.proj_widget) self.upload_btn = ProceedButton("Load", [self.file_widget.field, self.proj_widget.field], self.log, 0) layout.addWidget(self.upload_btn) self.file_widget.choice.connect(self.upload_btn.check_ready) self.proj_widget.choice.connect(self.upload_btn.check_ready) self.upload_btn.proceed.connect(self.upload_file) self.sections.append(("(1) Upload raw file:", mywidget))
def define_section2(self, initial = True): """defining section 2: choose alleles """ self.log.debug("Setting up section2 of ENASubmissionForm...") mywidget = QWidget(self) layout = QHBoxLayout() mywidget.setLayout(layout) mywidget.setMinimumHeight(250) self.project_info = ProjectInfoTable(self.project, self.log, self) self.project_info.setMaximumWidth(300) self.project_info.setMinimumWidth(200) layout.addWidget(self.project_info) self.project_info.project_info.connect(self.catch_project_info) self.project_files = ENAFileChoiceTable(self.project, self.log, self) layout.addWidget(self.project_files) self.project_files.files_chosen.connect(self.project_info.update_files_chosen) self.project_files.files.connect(self.project_info.update_files) items = [self.project_info.item(3,0)] self.submit_btn = ProceedButton("Submit to ENA", items, self.log, 1, self) self.submit_btn.proceed.connect(self.submit_to_ENA) self.submit_btn.setMinimumWidth(100) layout.addWidget(self.submit_btn) self.project_info.updated.connect(self.submit_btn.check_ready) self.sections.append(("(2) Choose alleles to submit:", mywidget))
def initialize(self): """ Initialize QWidget """ layout = QHBoxLayout() self.setLayout(layout) self.services_title.setObjectName('itemtitle') layout.addWidget(self.services_title) layout.setAlignment(self.services_title, Qt.AlignLeft) icons_widget = QWidget() icons_layout = QHBoxLayout() icons_widget.setLayout(icons_layout) for icon in Service.get_available_icons(): state = icon.replace('services_', '').upper() icon_pixmap = QIcon(settings.get_image(icon)) self.states_btns[state].setIcon(icon_pixmap) self.states_btns[state].setFixedSize(20, 20) self.states_btns[state].setToolTip(state) self.states_btns[state].setCheckable(True) self.states_btns[state].setObjectName('services') icons_layout.addWidget(self.states_btns[state]) self.nb_labels[state].setObjectName( get_icon_name_from_state('service', state)) icons_layout.addWidget(self.nb_labels[state]) layout.addWidget(icons_widget) layout.setAlignment(icons_widget, Qt.AlignRight)
def define_section3(self): """defining section 3: check ENA-file & save allele """ mywidget = QWidget(self) layout = QGridLayout() mywidget.setLayout(layout) #TODO: (future) implement option to display both alleles self.name_lbl = QLabel() self.name_lbl.setStyleSheet(general.label_style_2nd) layout.addWidget(self.name_lbl, 0, 0) self.ENA_widget = QTextEdit(self) self.ENA_widget.textChanged.connect(self.on_text_changed) layout.addWidget(self.ENA_widget, 1,0, 1, 6) self.ENA_widget.setMinimumHeight(500) self.save_btn = ProceedButton("Save new target allele", [self.ENA_widget], self.log, 2, self) layout.addWidget(self.save_btn, 0, 5) self.save_btn.proceed.connect(self.save_allele) self.save_changes_btn = ProceedButton("Save changes!", [self.ENA_widget], self.log, parent = self) layout.addWidget(self.save_changes_btn, 3, 0, 1, 3) self.save_changes_btn.clicked.connect(self.save_changes) self.discard_btn = ProceedButton("Discard changes!", [self.ENA_widget], self.log, parent = self) layout.addWidget(self.discard_btn, 3, 3, 1, 3) self.discard_btn.clicked.connect(self.discard_changes) self.sections.append(("(3) Check ENA file and save allele:", mywidget))
def get_text_widget(self, regexp): """ Return text QWidget with QTextEdit :return: text QWidget :rtype: QWidget """ text_widget = QWidget() text_widget.setObjectName('dialog') text_layout = QVBoxLayout() text_widget.setLayout(text_layout) text_layout.addWidget(self.valid_text) qreg_exp = QRegExp(regexp) self.validator.setRegExp(qreg_exp) self.line_edit.setPlaceholderText(_('type your text...')) self.line_edit.setText(self.old_text) self.line_edit.setValidator(self.validator) self.line_edit.setFixedHeight(25) self.line_edit.textChanged.connect(self.check_text) text_layout.addWidget(self.line_edit) # Accept button accept_btn = QPushButton(_('Confirm'), self) accept_btn.clicked.connect(self.accept_text) accept_btn.setObjectName('valid') accept_btn.setMinimumHeight(30) text_layout.addWidget(accept_btn) return text_widget
def test(scale=0.5): from PyQt5.Qt import QLabel, QApplication, QPixmap, QMainWindow, QWidget, QScrollArea, QGridLayout app = QApplication([]) mi = Metadata('xxx', ['Kovid Goyal', 'John Q. Doe', 'Author']) mi.series = 'A series of styles' m = QMainWindow() sa = QScrollArea(m) w = QWidget(m) sa.setWidget(w) l = QGridLayout(w) w.setLayout(l), l.setSpacing(30) labels = [] for r, color in enumerate(sorted(default_color_themes)): for c, style in enumerate(sorted(all_styles())): mi.series_index = c + 1 mi.title = 'An algorithmic cover [%s]' % color prefs = override_prefs(cprefs, override_color_theme=color, override_style=style) for x in ('cover_width', 'cover_height', 'title_font_size', 'subtitle_font_size', 'footer_font_size'): prefs[x] = int(scale * prefs[x]) img = generate_cover(mi, prefs=prefs, as_qimage=True) la = QLabel() la.setPixmap(QPixmap.fromImage(img)) l.addWidget(la, r, c) labels.append(la) m.setCentralWidget(sa) w.resize(w.sizeHint()) m.show() app.exec_()
def __init__(self, parent): orientation = Qt.Vertical if config['gui_layout'] == 'narrow': orientation = Qt.Horizontal if is_widescreen() else Qt.Vertical idx = 0 if orientation == Qt.Vertical else 1 size = 300 if orientation == Qt.Vertical else 550 Splitter.__init__(self, 'cover_browser_splitter', _('Cover Browser'), I('cover_flow.png'), orientation=orientation, parent=parent, connect_button=not config['separate_cover_flow'], side_index=idx, initial_side_size=size, initial_show=False, shortcut='Shift+Alt+B') quickview_widget = QWidget() parent.quickview_splitter = QuickviewSplitter( parent=self, orientation=Qt.Vertical, qv_widget=quickview_widget) parent.library_view = BooksView(parent) parent.library_view.setObjectName('library_view') stack = QStackedWidget(self) av = parent.library_view.alternate_views av.set_stack(stack) parent.grid_view = GridView(parent) parent.grid_view.setObjectName('grid_view') av.add_view('grid', parent.grid_view) parent.quickview_splitter.addWidget(stack) quickview_widget.setLayout(QVBoxLayout()) parent.quickview_splitter.addWidget(quickview_widget) parent.quickview_splitter.hide_quickview_widget() self.addWidget(parent.quickview_splitter)
def setup_ui(self, parent): cm = self.col_metadata self.make_widgets(parent, DateTimeEdit) self.widgets.append(QLabel("")) w = QWidget(parent) self.widgets.append(w) l = QHBoxLayout() l.setContentsMargins(0, 0, 0, 0) w.setLayout(l) l.addStretch(1) self.today_button = QPushButton(_("Set '%s' to today") % cm["name"], parent) l.addWidget(self.today_button) self.clear_button = QPushButton(_("Clear '%s'") % cm["name"], parent) l.addWidget(self.clear_button) l.addStretch(2) w = self.main_widget format = cm["display"].get("date_format", "") if not format: format = "dd MMM yyyy" w.setDisplayFormat(format) w.setCalendarPopup(True) w.setMinimumDateTime(UNDEFINED_QDATETIME) w.setSpecialValueText(_("Undefined")) self.today_button.clicked.connect(w.set_to_today) self.clear_button.clicked.connect(w.set_to_clear)
def initialise (self, univers): model = QStandardItemModel (3,1) i = 0 for faction in univers.faction_list : item = QStandardItem(faction.name) item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled); item.setData(QtCore.Qt.Unchecked, QtCore.Qt.CheckStateRole); model.setItem(i, 0, item) i = i + 1 combo = QComboBox() combo.setModel(model) list_v = QListView() list_v.setModel(model) table = QTableView() table.setModel(model) container = QWidget() containerLayout = QVBoxLayout() container.setLayout(containerLayout) containerLayout.addWidget(combo) containerLayout.addWidget(list_v) containerLayout.addWidget(table)
def define_section1(self): """defining section 1: choose file to upload and project """ mywidget = QWidget(self) layout = QHBoxLayout() mywidget.setLayout(layout) mypath = self.settings["raw_files_path"] file_btn = FileButton("Choose .csv file with target allele fasta files", mypath, self) self.file_widget = ChoiceSection("Raw File:", [file_btn], self.tree) self.file_widget.choice.connect(self.get_file) if self.settings["modus"] == "debugging": self.file_widget.field.setText(r"H:\Projekte\Bioinformatik\Typeloader\example files\bulk_upload3.csv") layout.addWidget(self.file_widget) proj_btn = QueryButton("Choose a (different) existing project", "SELECT project_name FROM projects where project_status = 'Open' order by project_name desc") new_proj_btn = NewProjectButton("Start a new project", self.log, self.mydb, self.settings) self.proj_widget = ChoiceSection("Project:", [proj_btn, new_proj_btn], self.tree) self.proj_widget.field.setText(self.current_project) proj_btn.change_to_normal(None) new_proj_btn.change_to_normal(None) self.proj_widget.choice.connect(self.get_project) layout.addWidget(self.proj_widget) self.upload_btn = ProceedButton("Upload", [self.file_widget.field, self.proj_widget.field], self.log, 0) layout.addWidget(self.upload_btn) self.file_widget.choice.connect(self.upload_btn.check_ready) self.proj_widget.choice.connect(self.upload_btn.check_ready) self.upload_btn.proceed.connect(self.perform_bulk_upload) self.sections.append(("(1) Upload bulk-submission file:", mywidget))
def layout_using_grid(self): label_1 = QLabel('Our first label') label_2 = QLabel('Another Label') label_span = QLabel('Label spanning columns span') button_1=QPushButton('Click 1') button_2=QPushButton('Click 2') grid_layout = QGridLayout() grid_layout.addWidget(label_1, 0,0) grid_layout.addWidget(button_1, 0,1) grid_layout.addWidget(label_2, 1, 0) grid_layout.addWidget(button_2, 1,1) grid_layout.addWidget(label_span, 2,0,1,3) grid_layout.setAlignment(Qt.AlignTop | Qt.AlignLeft) grid_layout.setAlignment(Qt.AlignBottom) grid_layout.setAlignment(label_1, Qt.AlignRight) grid_layout.setAlignment(label_2, Qt.AlignRight) layout_widget =QWidget() layout_widget.setLayout(grid_layout) self.setCentralWidget(layout_widget)
def setup_ui(self, parent): cm = self.col_metadata self.make_widgets(parent, DateTimeEdit) self.widgets.append(QLabel('')) w = QWidget(parent) self.widgets.append(w) l = QHBoxLayout() l.setContentsMargins(0, 0, 0, 0) w.setLayout(l) l.addStretch(1) self.today_button = QPushButton(_('Set \'%s\' to today')%cm['name'], parent) l.addWidget(self.today_button) self.clear_button = QPushButton(_('Clear \'%s\'')%cm['name'], parent) l.addWidget(self.clear_button) l.addStretch(2) w = self.main_widget format = cm['display'].get('date_format','') if not format: format = 'dd MMM yyyy' w.setDisplayFormat(format) w.setCalendarPopup(True) w.setMinimumDateTime(UNDEFINED_QDATETIME) w.setSpecialValueText(_('Undefined')) self.today_button.clicked.connect(w.set_to_today) self.clear_button.clicked.connect(w.set_to_clear)
class MainWindowMixin(object): # {{{ def __init__(self, *args, **kwargs): pass def init_main_window_mixin(self, db): self.setObjectName('MainWindow') self.setWindowIcon(QIcon(I('lt.png'))) self.setWindowTitle(__appname__) self.setContextMenuPolicy(Qt.NoContextMenu) self.centralwidget = QWidget(self) self.setCentralWidget(self.centralwidget) self._central_widget_layout = QVBoxLayout() self.centralwidget.setLayout(self._central_widget_layout) self.resize(1012, 740) self.donate_button = ThrobbingButton() self.location_manager = LocationManager(self) self.iactions['Fetch News'].init_scheduler(db) self.search_bar = SearchBar(self) self.bars_manager = BarsManager(self.donate_button, self.location_manager, self) for bar in self.bars_manager.main_bars: self.addToolBar(Qt.TopToolBarArea, bar) for bar in self.bars_manager.child_bars: self.addToolBar(Qt.BottomToolBarArea, bar) self.bars_manager.update_bars() # This is disabled because it introduces various toolbar related bugs # The width of the toolbar becomes the sum of both toolbars if tweaks['unified_title_toolbar_on_osx']: try: self.setUnifiedTitleAndToolBarOnMac(True) except AttributeError: pass # PyQt5 seems to be missing this property l = self.centralwidget.layout() # And now, start adding the real widgets l.addWidget(self.search_bar) # Add in the widget for the shutdown messages. It is invisible until a # message is shown smw = self.shutdown_message_widget = QLabel(self) smw.setAlignment(Qt.AlignCenter) smw.setVisible(False) smw.setAutoFillBackground(True) smw.setStyleSheet( 'QLabel { background-color: rgba(200, 200, 200, 200); color: black }' ) def show_shutdown_message(self, message=''): smw = self.shutdown_message_widget smw.setGeometry(0, 0, self.width(), self.height()) smw.setVisible(True) smw.raise_() smw.setText(_('<h2>Shutting down</h2><div>') + message) # Force processing the events needed to show the message QCoreApplication.processEvents()
class MainWindowMixin(object): # {{{ def __init__(self, *args, **kwargs): pass def init_main_window_mixin(self, db): self.setObjectName('MainWindow') self.setWindowIcon(QIcon(I('lt.png'))) self.setWindowTitle(__appname__) self.setContextMenuPolicy(Qt.NoContextMenu) self.centralwidget = QWidget(self) self.setCentralWidget(self.centralwidget) self._central_widget_layout = QVBoxLayout() self.centralwidget.setLayout(self._central_widget_layout) self.resize(1012, 740) self.donate_button = ThrobbingButton() self.location_manager = LocationManager(self) self.iactions['Fetch News'].init_scheduler(db) self.search_bar = SearchBar(self) self.bars_manager = BarsManager(self.donate_button, self.location_manager, self) for bar in self.bars_manager.main_bars: self.addToolBar(Qt.TopToolBarArea, bar) for bar in self.bars_manager.child_bars: self.addToolBar(Qt.BottomToolBarArea, bar) self.bars_manager.update_bars() # This is disabled because it introduces various toolbar related bugs # The width of the toolbar becomes the sum of both toolbars if tweaks['unified_title_toolbar_on_osx']: try: self.setUnifiedTitleAndToolBarOnMac(True) except AttributeError: pass # PyQt5 seems to be missing this property l = self.centralwidget.layout() # Add in the widget for the shutdown messages. It is invisible until a # message is shown smw = self.shutdown_message_widget = QLabel('') smw.setMinimumHeight(200) smw.setAlignment(Qt.AlignCenter) self.shutdown_message_widget.setVisible(False) l.addWidget(smw) # And now, start adding the real widgets l.addWidget(self.search_bar) def show_shutdown_message(self, message): smw = self.shutdown_message_widget smw.setVisible(True) txt = smw.text() txt += '\n' + message smw.setText(txt) # Force processing the events needed to show the message QCoreApplication.processEvents()
def build_query_text_edit(self): # Add layouts query_edit_layout = QVBoxLayout(self) query_edit_layout.setContentsMargins(0, 0, 0, 0) query_control_layout = QHBoxLayout(self) query_control_layout.setContentsMargins(0, 0, 0, 0) # Execute query button self.query_execute_button = QPushButton( UI.QUERY_CONTROL_EXECUTE_BUTTON_TEXT, self) self.query_execute_button.clicked.connect(self.on_execute_click) query_control_layout.addWidget(self.query_execute_button) # Fetch data button self.query_fetch_button = QPushButton( UI.QUERY_CONTROL_FETCH_BUTTON_TEXT, self) self.query_fetch_button.clicked.connect(self.on_fetch_click) self.model.fetch_changed.connect(self.on_fetch_changed) query_control_layout.addWidget(self.query_fetch_button) # Commit button self.query_commit_button = QPushButton( UI.QUERY_CONTROL_COMMIT_BUTTON_TEXT, self) self.query_commit_button.clicked.connect(self.on_connect_click) query_control_layout.addWidget(self.query_commit_button) # Rollback button self.query_rollback_button = QPushButton( UI.QUERY_CONTROL_ROLLBACK_BUTTON_TEXT, self) self.query_rollback_button.clicked.connect(self.on_rollback_click) query_control_layout.addWidget(self.query_rollback_button) # Build control strip widget query_control = QWidget(self) query_control.setLayout(query_control_layout) query_edit_layout.addWidget(query_control) # Initialize query edit document for text editor # and use SQL Highlighter CSS styles for it. self.query_text_edit_document = QTextDocument(self) self.query_text_edit_document.setDefaultStyleSheet( SQLHighlighter.style()) # Initialize query text editor using previously built # text edutir document. self.query_text_edit = QTextEdit(self) self.query_text_edit.setDocument(self.query_text_edit_document) self.query_text_edit.textChanged.connect(self.on_query_changed) self.query_text_edit.setText(UI.QUERY_EDITOR_DEFAULT_TEXT) query_edit_layout.addWidget(self.query_text_edit) # Connect model's connected/disconnected signals self.model.connected.connect(self.on_connected) self.model.disconnected.connect(self.on_disconnected) query_edit = QWidget(self) query_edit.setLayout(query_edit_layout) query_edit.sizePolicy().setVerticalPolicy(QSizePolicy.Minimum) return query_edit
def search_epub_content(self): ''' Search epub content ''' # reset results layout self.search_results.clear() # get search input keyword = self.search_input.text() # search in each book db = self.db.new_api matched_ids = {book_id for book_id in db.all_book_ids() if 'EPUB' in db.formats(book_id)} for book_id in matched_ids: mi = db.get_metadata(book_id, get_cover=False, cover_as_data=False) if prefs['tags'] in mi.tags: title = mi.title filepath = fmt_path = self.gui.current_db.format_abspath(book_id, 'EPUB', index_is_id=True) grep = EpubGrep(keyword) grep.setPreview(True) grep_result = grep.searchin(filepath) #print(grep_result) if grep_result != None and len(grep_result) != 0: widgetLayout = QVBoxLayout() book_button = QPushButton(title, self) book_button.clicked.connect(partial(self.view, book_id, 0)) widgetLayout.addWidget(book_button) widgetLayout.setSizeConstraint(QLayout.SetFixedSize) widget = QWidget() widget.setLayout(widgetLayout) widgetItem = QListWidgetItem() widgetItem.setSizeHint(widget.sizeHint()) self.search_results.addItem(widgetItem) self.search_results.setItemWidget(widgetItem, widget) #matched = result.stdout.decode('utf-8') matched = grep_result search_result_count = 0 if prefs['search_result_count'] == '' else int(prefs['search_result_count']) count = 0 for lines in matched.split('--\n'): # only handles results within limit if search_result_count != 0 and count >= search_result_count: break widgetLayout = QVBoxLayout() qLabel = QLabel(lines.replace(keyword, '<font color=yellow>' + keyword + '</font>').replace('\n\n', '\n').replace('\n','<br/>') + '<br/>') qLabel.setTextFormat(Qt.RichText) qLabel.setStyleSheet(''' font-size: 24px; ''') widgetLayout.addWidget(qLabel) widgetLayout.setSizeConstraint(QLayout.SetFixedSize) widget = QWidget() widget.setLayout(widgetLayout) widgetItem = QListWidgetItem() widgetItem.setSizeHint(widget.sizeHint()) widgetItem.setData(Qt.ItemDataRole.UserRole, (book_id, count)) self.search_results.addItem(widgetItem) self.search_results.setItemWidget(widgetItem, widget) count += 1 self.search_results.itemClicked.connect(self.view_search_result)
def make_menu(self): config_menu = QWidget() self.l = QVBoxLayout() config_menu.setLayout(self.l) # add the menu items for group in config: self.make_submenu(group, self.l) return config_menu
def __init__(self, parent_dialog, plugin_action): self.parent_dialog = parent_dialog self.plugin_action = plugin_action QWidget.__init__(self) self.l = QVBoxLayout() self.setLayout(self.l) label = QLabel(_("If you have custom columns defined, they will be listed below. Choose how you would like these columns handled.")) label.setWordWrap(True) self.l.addWidget(label) self.l.addSpacing(5) scrollable = QScrollArea() scrollcontent = QWidget() scrollable.setWidget(scrollcontent) scrollable.setWidgetResizable(True) self.l.addWidget(scrollable) self.sl = QVBoxLayout() scrollcontent.setLayout(self.sl) self.custcol_dropdowns = {} custom_columns = self.plugin_action.gui.library_view.model().custom_columns grid = QGridLayout() self.sl.addLayout(grid) row=0 for key, column in custom_columns.iteritems(): if column['datatype'] in permitted_values: # logger.debug("\n============== %s ===========\n"%key) # for (k,v) in column.iteritems(): # logger.debug("column['%s'] => %s"%(k,v)) label = QLabel('%s(%s)'%(column['name'],key)) label.setToolTip(_("Set this %s column on new merged books...")%column['datatype']) grid.addWidget(label,row,0) dropdown = QComboBox(self) dropdown.addItem('','none') for md in permitted_values[column['datatype']]: # tags-like column also 'text' if md == 'union' and not column['is_multiple']: continue if md == 'concat' and column['is_multiple']: continue dropdown.addItem(titleLabels[md],md) self.custcol_dropdowns[key] = dropdown if key in prefs['custom_cols']: dropdown.setCurrentIndex(dropdown.findData(prefs['custom_cols'][key])) dropdown.setToolTip(_("How this column will be populated by default.")) grid.addWidget(dropdown,row,1) row+=1 self.sl.insertStretch(-1)
def __init__(self, parent_dialog, plugin_action): self.parent_dialog = parent_dialog self.plugin_action = plugin_action QWidget.__init__(self) self.l = QVBoxLayout() self.setLayout(self.l) label = QLabel(_("If you have custom columns defined, they will be listed below. Choose how you would like these columns handled.")) label.setWordWrap(True) self.l.addWidget(label) self.l.addSpacing(5) scrollable = QScrollArea() scrollcontent = QWidget() scrollable.setWidget(scrollcontent) scrollable.setWidgetResizable(True) self.l.addWidget(scrollable) self.sl = QVBoxLayout() scrollcontent.setLayout(self.sl) self.custcol_dropdowns = {} custom_columns = self.plugin_action.gui.library_view.model().custom_columns grid = QGridLayout() self.sl.addLayout(grid) row=0 for key, column in custom_columns.iteritems(): if column['datatype'] in permitted_values: # print("\n============== %s ===========\n"%key) # for (k,v) in column.iteritems(): # print("column['%s'] => %s"%(k,v)) label = QLabel('%s(%s)'%(column['name'],key)) label.setToolTip(_("Set this %s column on new merged books...")%column['datatype']) grid.addWidget(label,row,0) dropdown = QComboBox(self) dropdown.addItem('','none') for md in permitted_values[column['datatype']]: # tags-like column also 'text' if md == 'union' and not column['is_multiple']: continue if md == 'concat' and column['is_multiple']: continue dropdown.addItem(titleLabels[md],md) self.custcol_dropdowns[key] = dropdown if key in prefs['custom_cols']: dropdown.setCurrentIndex(dropdown.findData(prefs['custom_cols'][key])) dropdown.setToolTip(_("How this column will be populated by default.")) grid.addWidget(dropdown,row,1) row+=1 self.sl.insertStretch(-1)
def setup_sidebar(self): self.sidebar = sidebar = QDockWidget() sidebar.setFixedWidth(120) self.layout = layout = QVBoxLayout() layout.addStretch() if self.data.get('vertices', None): self.add_label(name='label_vertices', text='Vertex size: {0}'.format(self.vertex_size)) self.add_slider(name='slider_vertices', value=self.vertex_size, minimum=0, maximum=100, interval=10, callback=self.vertex_callback) if self.data.get('edges', None) or self.data.get('faces', None): self.add_label(name='label_edges', text='Edge width: {0}'.format(self.edge_width)) self.add_slider(name='slider_edges', value=self.edge_width, minimum=0, maximum=100, interval=10, callback=self.edge_callback) self.add_label(name='label_opacity', text='Opacity: {0}'.format(100)) self.add_slider(name='slider_opacity', value=100, minimum=0, maximum=100, interval=10, callback=self.opacity_callback) if self.data.get('voxels', None) is not None: self.add_label(name='label_gradient', text='Gradient: {0}'.format(0)) self.add_slider(name='slider_gradient', value=0, minimum=0, maximum=100, interval=10, callback=self.gradient_callback) widget = QWidget(self.sidebar) widget.setLayout(layout) self.sidebar.setWidget(widget) self.main.addDockWidget(Qt.LeftDockWidgetArea, sidebar)
class MainWindow(QMainWindow): signal_stop_worker = pyqtSignal() def __init__(self): super(MainWindow, self).__init__() self.top: int = 400 self.left: int = 400 self.width: int = 600 self.height: int = 500 self.setGeometry(self.top, self.left, self.width, self.height) self.layout = QVBoxLayout() self.btn_start = QPushButton() self.btn_start.clicked.connect(self.start_manager) self.btn_start.setText("Start") self.btn_stop = QPushButton() self.btn_stop.clicked.connect(self.stop_manager) self.btn_stop.setText("Stop") self.status_label = QLabel() self.layout.addWidget(self.btn_start) self.layout.addWidget(self.btn_stop) self.layout.addWidget(self.status_label) self.central_widget = QWidget() self.central_widget.setLayout(self.layout) self.setCentralWidget(self.central_widget) self.manager_thread = None self.manager_worker = None @pyqtSlot(ManagerStatus) def manager_status_change(self, status): self.status_label.setText(status.value) def stop_manager(self): self.signal_stop_worker.emit() def start_manager(self): self.manager_thread = QThread() env = { 'DOCKER_CERT_PATH': '', 'DOCKER_HOST': 'tcp://10.0.0.17:2375', 'DOCKER_TLS_VERIFY': '' } self.manager_worker = Manager(env=env) self.manager_thread.setObjectName("Manager Thread") self.manager_worker.signals().status_change.connect( self.manager_status_change) self.signal_stop_worker.connect(self.manager_worker.abort) self.manager_worker.moveToThread(self.manager_thread) self.manager_thread.started.connect(self.manager_worker.run) self.manager_thread.start()
def define_section2(self): """defining section 2: Specify allele details """ mywidget = QWidget(self) layout = QGridLayout() mywidget.setLayout(layout) a1_new = False self.allele1_sec = AlleleSection("Allele 1:", self) layout.addWidget(self.allele1_sec,0,0) a2_new = False self.allele2_sec = AlleleSection("Allele 2:", self) layout.addWidget(self.allele2_sec,0,1) #ToDo: add closest alleles! button_widget = QFrame(self) # contains both-checkbox & proceed-button layout2 = QFormLayout() button_widget.setLayout(layout2) # self.both_cbx = QCheckBox(self) # self.both_cbx.clicked.connect(self.select_both) # self.both_lbl = QLabel("Both alleles?") # self.both_lbl.setStyleSheet(general.label_style_main) # layout2.addRow(self.both_lbl, self.both_cbx) # self.msg = QLabel("When selecting this option, please ensure\nyou have entered details for both alleles.") # self.msg.setStyleSheet(general.label_style_normal) # layout2.addRow(self.msg) layout2.addRow(QLabel("\n\n")) if a1_new: self.allele1_sec.checkbox.setChecked(True) if a2_new: self.allele2_sec.checkbox.setChecked(True) elif a2_new: self.allele2_sec.checkbox.setChecked(True) # self.allele1_sec.checkbox.clicked.connect(self.unselect_both_cbx) self.allele1_sec.checkbox.clicked.connect(self.unselect_other_box) self.allele2_sec.checkbox.clicked.connect(self.unselect_other_box) # self.allele2_sec.checkbox.clicked.connect(self.unselect_both_cbx) self.ok_btn = ProceedButton("Proceed", [self.allele1_sec.checkbox, self.allele2_sec.checkbox], self.log, only1 = True) self.ok_btn.check_ready() self.ok_btn.clicked.connect(self.make_ENA_file) self.allele1_sec.selection_changed.connect(self.ok_btn.check_ready) self.allele2_sec.selection_changed.connect(self.ok_btn.check_ready) layout2.addRow(self.ok_btn) layout.addWidget(button_widget, 0 ,3) layout.setColumnStretch(0,1) layout.setColumnStretch(1,1) layout.setColumnStretch(2,0) self.sections.append(("(2) Specify allele details:", mywidget))
def get_btn_widget(self): """ Return QWidget with spy and host synthesis QPushButtons :return: widget with spy and host button :rtype: QWidget """ widget_btn = QWidget() layout_btn = QHBoxLayout() layout_btn.setContentsMargins(0, 0, 0, 5) widget_btn.setLayout(layout_btn) host_filter = QLabel(_('Filter hosts')) host_filter.setObjectName('subtitle') layout_btn.addWidget(host_filter) self.filter_hosts_btn.initialize() self.filter_hosts_btn.update_btn_state(False) self.filter_hosts_btn.toggle_btn.clicked.connect( lambda: self.update_problems_data('host')) layout_btn.addWidget(self.filter_hosts_btn) service_filter = QLabel(_('Filter services')) service_filter.setObjectName('subtitle') layout_btn.addWidget(service_filter) self.filter_services_btn.initialize() self.filter_services_btn.update_btn_state(False) self.filter_services_btn.toggle_btn.clicked.connect( lambda: self.update_problems_data('service')) layout_btn.addWidget(self.filter_services_btn) layout_btn.addStretch() self.host_btn.setIcon(QIcon(settings.get_image('host'))) self.host_btn.setFixedSize(80, 20) self.host_btn.setEnabled(False) self.host_btn.setToolTip(_('See current item in synthesis view')) layout_btn.addWidget(self.host_btn) self.spy_btn.setIcon(QIcon(settings.get_image('spy'))) self.spy_btn.setFixedSize(80, 20) self.spy_btn.setEnabled(False) self.spy_btn.setToolTip(_('Spy current host')) self.spy_btn.clicked.connect(self.add_spied_host) layout_btn.addWidget(self.spy_btn) self.actions_widget.initialize(None) self.actions_widget.acknowledge_btn.setEnabled(False) self.actions_widget.downtime_btn.setEnabled(False) layout_btn.addWidget(self.actions_widget) layout_btn.setAlignment(Qt.AlignCenter) return widget_btn
def create_donate_widget(button): w = QWidget() w.setLayout(QVBoxLayout()) w.layout().addWidget(button) if isosx: w.setStyleSheet('QWidget, QToolButton {background-color: none; border: none; }') w.layout().setContentsMargins(0,0,0,0) w.setContentsMargins(0,0,0,0) w.filler = QLabel(u'\u00a0') w.layout().addWidget(w.filler) return w
def get_btn_widget(self): """ Return QWidget with spy and host synthesis QPushButtons :return: widget with spy and host button :rtype: QWidget """ widget_btn = QWidget() layout_btn = QHBoxLayout() layout_btn.setContentsMargins(0, 0, 0, 5) widget_btn.setLayout(layout_btn) host_filter = QLabel(_('Filter hosts')) host_filter.setObjectName('subtitle') layout_btn.addWidget(host_filter) self.filter_hosts_btn.initialize() self.filter_hosts_btn.update_btn_state(False) self.filter_hosts_btn.toggle_btn.clicked.connect(lambda: self.update_problems_data('host')) layout_btn.addWidget(self.filter_hosts_btn) service_filter = QLabel(_('Filter services')) service_filter.setObjectName('subtitle') layout_btn.addWidget(service_filter) self.filter_services_btn.initialize() self.filter_services_btn.update_btn_state(False) self.filter_services_btn.toggle_btn.clicked.connect( lambda: self.update_problems_data('service') ) layout_btn.addWidget(self.filter_services_btn) layout_btn.addStretch() self.host_btn.setIcon(QIcon(settings.get_image('host'))) self.host_btn.setFixedSize(80, 20) self.host_btn.setEnabled(False) self.host_btn.setToolTip(_('See current item in synthesis view')) layout_btn.addWidget(self.host_btn) self.spy_btn.setIcon(QIcon(settings.get_image('spy'))) self.spy_btn.setFixedSize(80, 20) self.spy_btn.setEnabled(False) self.spy_btn.setToolTip(_('Spy current host')) self.spy_btn.clicked.connect(self.add_spied_host) layout_btn.addWidget(self.spy_btn) self.actions_widget.initialize(None) self.actions_widget.acknowledge_btn.setEnabled(False) self.actions_widget.downtime_btn.setEnabled(False) layout_btn.addWidget(self.actions_widget) layout_btn.setAlignment(Qt.AlignCenter) return widget_btn
def get_hosts_notif_widget(self): """ Create and return notification QWidget for hosts :return: hosts notification QWidget :rtype: QWidget """ host_notif_widget = QWidget() host_notif_layout = QGridLayout() host_notif_widget.setLayout(host_notif_layout) notif_title = QLabel(_('Hosts notifications configurations')) notif_title.setObjectName('itemtitle') host_notif_layout.addWidget(notif_title, 0, 0, 1, 2) state_title = QLabel(_("Notification enabled:")) state_title.setObjectName("subtitle") host_notif_layout.addWidget(state_title, 1, 0, 1, 1) self.hostnotif_toggle_btn = ToggleQWidgetButton() self.hostnotif_toggle_btn.initialize() self.hostnotif_toggle_btn.update_btn_state( data_manager.database['user'].data['host_notifications_enabled'] ) self.hostnotif_toggle_btn.toggle_btn.clicked.connect(lambda: self.enable_notifications( 'host_notifications_enabled', self.hostnotif_toggle_btn.is_checked() )) self.hostnotif_toggle_btn.setObjectName('host_notifications_enabled') host_notif_layout.addWidget(self.hostnotif_toggle_btn, 1, 1, 1, 1) host_notif_layout.setAlignment(self.hostnotif_toggle_btn, Qt.AlignRight) period_title = QLabel(_('Notification period:')) period_title.setObjectName('subtitle') host_notif_layout.addWidget(period_title, 2, 0, 1, 1) self.labels['host_notification_period'].setText( data_manager.get_period_name( data_manager.database['user'].data['host_notification_period'] ) ) host_notif_layout.addWidget(self.labels['host_notification_period'], 2, 1, 1, 1) option_btn = QPushButton() option_btn.setIcon(QIcon(settings.get_image('options'))) option_btn.setFixedSize(64, 32) option_btn.clicked.connect(lambda: show_options_dialog( 'host', data_manager.database['user'].data['host_notification_options'] )) host_notif_layout.addWidget(option_btn, 3, 0, 1, 2) host_notif_layout.setAlignment(option_btn, Qt.AlignCenter) return host_notif_widget
def create_donate_widget(button): w = QWidget() w.setLayout(QVBoxLayout()) w.layout().addWidget(button) if isosx: w.setStyleSheet( 'QWidget, QToolButton {background-color: none; border: none; }') w.layout().setContentsMargins(0, 0, 0, 0) w.setContentsMargins(0, 0, 0, 0) w.filler = QLabel(u'\u00a0') w.layout().addWidget(w.filler) return w
def create_main_frame(self): page = QWidget() self.button = QPushButton('OK', page) self.textWindow = QTextEdit() vbox1 = QVBoxLayout() vbox1.addWidget(self.textWindow) vbox1.addWidget(self.button) page.setLayout(vbox1) self.setCentralWidget(page) self.button.clicked.connect(self.clicked)
def _setup_ui(self): self.setMinimumSize(1672, 1000) widget = QWidget() layout = QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(ImageViewer()) layout.addWidget(SideMenu()) widget.setLayout(layout) self.setCentralWidget(widget)
def get_item_type_widget(self, item_type, problem_nb, total_nb): """ Create and return QWidget with backend data :param item_type: type of item: host, service, problem :type item_type: str :param problem_nb: number of problems for item type :type problem_nb: int :param total_nb: total number of item type :type total_nb: int :return: widget with its data :rtype: QWidget """ layout = QVBoxLayout() widget = QWidget() widget.setLayout(layout) problem_label = QLabel('%d' % problem_nb) problem_label.setObjectName('ok') problem_label.setToolTip( _('Number of unhandled %s problems') % ( item_type if 'problem' not in item_type else '' ) ) layout.addWidget(problem_label) layout.setAlignment(problem_label, Qt.AlignCenter) icon_label = QLabel() icon_label.setFixedSize(64, 64) icon_label.setScaledContents(True) layout.addWidget(icon_label) layout.setAlignment(icon_label, Qt.AlignCenter) total_label = QLabel('%d' % total_nb) total_label.setObjectName('total') total_label.setToolTip( _('Number of monitored %s') % ( item_type if 'problem' not in item_type else 'items' ) ) layout.addWidget(total_label) layout.setAlignment(total_label, Qt.AlignCenter) self.labels[item_type] = { 'problem': problem_label, 'icon': icon_label, 'total': total_label } return widget
def __init__(self, parent_dialog, plugin_action): QWidget.__init__(self) self.parent_dialog = parent_dialog self.plugin_action = plugin_action self.l = QVBoxLayout() self.setLayout(self.l) label = QLabel(_('Searches to use for:')) label.setWordWrap(True) self.l.addWidget(label) #self.l.addSpacing(5) scrollable = QScrollArea() scrollcontent = QWidget() scrollable.setWidget(scrollcontent) scrollable.setWidgetResizable(True) self.l.addWidget(scrollable) self.sl = QVBoxLayout() scrollcontent.setLayout(self.sl) self.sl.addWidget(QLabel(_("Search for Duplicated Books:"))) self.checkdups_search = QLineEdit(self) self.sl.addWidget(self.checkdups_search) self.checkdups_search.setText(prefs['checkdups_search']) self.checkdups_search.setToolTip(_('Default is %s')%default_prefs['checkdups_search']) self.sl.addSpacing(5) self.sl.addWidget(QLabel(_("Deleted Books (not in Library):"))) self.checknotinlibrary_search = QLineEdit(self) self.sl.addWidget(self.checknotinlibrary_search) self.checknotinlibrary_search.setText(prefs['checknotinlibrary_search']) self.checknotinlibrary_search.setToolTip(_('Default is %s')%default_prefs['checknotinlibrary_search']) self.sl.addSpacing(5) self.sl.addWidget(QLabel(_("Added Books (not on Device):"))) self.checknotondevice_search = QLineEdit(self) self.sl.addWidget(self.checknotondevice_search) self.checknotondevice_search.setText(prefs['checknotondevice_search']) self.checknotondevice_search.setToolTip(_('Default is %s')%default_prefs['checknotondevice_search']) self.sl.insertStretch(-1) self.l.addSpacing(15) restore_defaults_button = QPushButton(_('Restore Defaults'), self) restore_defaults_button.setToolTip(_('Revert all searches to the defaults.')) restore_defaults_button.clicked.connect(self.restore_defaults_button) self.l.addWidget(restore_defaults_button)
def set_qpb_list_item(self, channel_id, lbp): item = QListWidgetItem(self.qpb_list_widget) item.setSizeHint(QSize(400, 80)) widget = QWidget(self.qpb_list_widget) v_layout = QVBoxLayout() label = QLabel(channel_id + "==>>>等待出包...") v_layout.addWidget(label) lbp['label'] = label qpb = QProgressBar(self.qpb_list_widget) v_layout.addWidget(qpb) lbp['qpb'] = qpb widget.setLayout(v_layout) self.qpb_list_widget.addItem(item) self.qpb_list_widget.setItemWidget(item, widget)
def setup_sidebar(self): self.sidebar = sidebar = QDockWidget() sidebar.setFixedWidth(self.sidebar_width) self.layout = layout = QVBoxLayout() layout.addStretch() widget = QWidget(sidebar) widget.setLayout(layout) sidebar.setWidget(widget) self.main.addDockWidget(Qt.LeftDockWidgetArea, sidebar) if self.data.get('vertices', None): self.add_label(name='vertices', text='Vertex size: {0}'.format(self.vertex_size)) self.add_slider(name='vertices', value=self.vertex_size, min=0, max=100, callback=self.vertex_callback) if self.data.get('edges', None) or self.data.get('faces', None): self.add_label(name='edges', text='Edge width: {0}'.format(self.edge_width)) self.add_slider(name='edges', value=self.edge_width, min=0, max=100, callback=self.edge_callback) self.add_label(name='opacity', text='Opacity: {0}'.format(100)) self.add_slider(name='opacity', value=100, min=0, max=100, callback=self.opacity_callback) if self.data.get('voxels', None) is not None: self.add_label(name='gradient', text='Gradient: {0}'.format(0)) self.add_slider(name='gradient', value=0, min=0, max=100, callback=self.gradient_callback) else: self.add_checkbox(name='axes', text='Show axes', checked=True, callback=self.axes_callback)
def define_section3(self): """defining section 3: ENA response """ mywidget = QWidget(self) layout = QHBoxLayout() mywidget.setLayout(layout) self.textbox = QTextEdit(self) layout.addWidget((self.textbox)) self.close_btn = QPushButton("OK", self) layout.addWidget(self.close_btn) self.close_btn.clicked.connect(self.save_to_db) self.sections.append(("(3) Check ENA's response", mywidget))
def beginRootLayout(self, x, y, itemSize, parentGItem): self.itemSize = itemSize widget = QWidget() layout = QVBoxLayout() layout.setContentsMargins(4, 4, 4, 4) widget.setLayout(layout) self.layoutStack = [layout] widget.setFixedSize(itemSize, itemSize) widget.setAttribute(Qt.WA_TranslucentBackground) proxyWidget = self.gScene.addWidget(widget) proxyWidget.setPos(x, y) parentGItem.addToGroup(proxyWidget) self.beginUI(widget)
def define_section2(self): """defining section 2: shows errors """ mywidget = QWidget(self) layout = QHBoxLayout() mywidget.setLayout(layout) self.report_txt = QTextEdit(self) layout.addWidget(self.report_txt) self.ok_btn = QPushButton("Ok", self) layout.addWidget(self.ok_btn) self.ok_btn.clicked.connect(self.close) self.sections.append(("(2) Check results:", mywidget))
def initialize(self): """ Initialize QDialog for PasswordDialog """ center_widget(self) # Main status_layout main_layout = QVBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) self.setLayout(main_layout) main_layout.addWidget(get_logo_widget(self, _('Edit Password'))) pass_title = QLabel(_("Please type a new PASSWORD:"******"Your password must contain at least 5 characters.")) self.help_label.setWordWrap(True) pass_layout.addWidget(self.help_label) # Accept button accept_btn = QPushButton('Confirm', self) accept_btn.clicked.connect(self.handle_confirm) accept_btn.setObjectName('valid') accept_btn.setMinimumHeight(30) pass_layout.addWidget(accept_btn) main_layout.addWidget(pass_widget)