def initLogFileChooser(self): layout = QHBoxLayout() self.comboBox = QComboBox(self) for f in self.watchFiles: self.comboBox.addItem(f) self.comboBox.setFixedWidth(200) self.comboBox.currentTextChanged.connect(self.refreshLog) self.currentLogFile = self.watchFiles[0] self.lineNumbWidget = QLineEdit() self.lineNumbWidget.setMaximumWidth(100) label = QLabel("NumberLine") self.fullLog = QCheckBox("FullLog", self) self.fullLog.stateChanged.connect(self.refreshLog) self.errors = QCheckBox("Error", self) self.today = QCheckBox("Today", self) self.today.setCheckState(Qt.Checked) self.errors.stateChanged.connect(self.refreshLog) self.today.stateChanged.connect(self.refreshLog) layout.addWidget(self.comboBox) layout.addWidget(self.lineNumbWidget, Qt.AlignRight) layout.addWidget(label) layout.addWidget(self.errors) layout.addWidget(self.today) layout.addWidget(self.fullLog) layout.addSpacerItem( QSpacerItem(10, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) # layout.addSpacing(100) self.layout.addLayout(layout)
class SearchLineEdit(QLineEdit): """创建一个可自定义图片的输入框。""" def __init__(self, parent=None): super(SearchLineEdit, self).__init__() self.setObjectName("SearchLine") self.parent = parent self.setMinimumSize(218, 20) with open('QSS/searchLine.qss', 'r') as f: self.setStyleSheet(f.read()) self.button = QPushButton(self) self.button.setMaximumSize(13, 13) self.button.setCursor(QCursor(Qt.PointingHandCursor)) self.setTextMargins(3, 0, 19, 0) self.spaceItem = QSpacerItem(150, 10, QSizePolicy.Expanding) self.mainLayout = QHBoxLayout() self.mainLayout.addSpacerItem(self.spaceItem) # self.mainLayout.addStretch(1) self.mainLayout.addWidget(self.button) self.mainLayout.addSpacing(10) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.mainLayout) def setButtonSlot(self, funcName): self.button.clicked.connect(funcName)
def AddTableAreaButtons(self, page_layout): from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout, QSpacerItem self.new_summary_button = QPushButton('New Summary') self.new_summary_button.clicked.connect(self.on_new_summary_clicked) self.load_summary_button = QPushButton('Load Summary') self.load_summary_button.clicked.connect(self.on_load_summary_clicked) self.save_summary_button = QPushButton('Save Summary') self.save_summary_button.clicked.connect(self.on_save_summary_clicked) self.export_summary_button = QPushButton('Export Summary') self.export_summary_button.clicked.connect(self.export_summary_clicked) button_layout = QHBoxLayout() button_layout.addWidget(self.new_summary_button) button_layout.addWidget(self.load_summary_button) button_layout.addSpacerItem(QSpacerItem(self.width() / 2.3, 0)) button_layout.addWidget(self.export_summary_button) button_layout.addWidget(self.save_summary_button) page_layout.addLayout(button_layout) return page_layout
def show_pulsantiera(self): # Layout interni utilizzati per l'allineamento dei tre pulsanti layout_pulsanti = QHBoxLayout() layout_pulsanti.setAlignment(Qt.AlignCenter) # Configurazione del pulsante Indietro pulsante_indietro = QPushButton("INDIETRO") pulsante_indietro.setFont(QFont('Times New Roman', 18, 100, True)) pulsante_indietro.setFixedSize(250, 100) pulsante_indietro.setStyleSheet("background-color: orange") pulsante_indietro.clicked.connect(self.indietro) # Configurazione del pulsante Prenota pulsante_prenota = QPushButton("PRENOTA") pulsante_prenota.setFont(QFont('Times New Roman', 18, 100, True)) pulsante_prenota.setFixedSize(250, 100) pulsante_prenota.setStyleSheet("background-color: orange") pulsante_prenota.clicked.connect(self.call_selezione_giorni) # Inserimento e allineamento dei tre pulsanti del layout globale layout_pulsanti.addWidget(pulsante_prenota) layout_pulsanti.addSpacerItem( QSpacerItem(50, 0, QSizePolicy.Fixed, QSizePolicy.Fixed)) layout_pulsanti.addWidget(pulsante_indietro) self.layout_verticale.addLayout(layout_pulsanti)
def __init__(self, suggested, parent=None): super(PythonDetectDialog, self).__init__(parent, Qt.Dialog) self.setMaximumSize(QSize(0, 0)) self.setWindowTitle("Configure Python Path") vbox = QVBoxLayout(self) msg_str = ("We have detected that you are using " "Windows,\nplease choose the proper " "Python application for you:") lblMessage = QLabel(self.tr(msg_str)) vbox.addWidget(lblMessage) self.listPaths = QListWidget() self.listPaths.setSelectionMode(QListWidget.SingleSelection) vbox.addWidget(self.listPaths) hbox = QHBoxLayout() hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) btnCancel = QPushButton(self.tr("Cancel")) btnAccept = QPushButton(self.tr("Accept")) hbox.addWidget(btnCancel) hbox.addWidget(btnAccept) vbox.addLayout(hbox) btnAccept.clicked['bool'].connect(self._set_python_path) btnCancel.clicked['bool'].connect(self.close) for path in suggested: self.listPaths.addItem(path) self.listPaths.setCurrentRow(0)
class FuncMenu(QWidget): def __init__(self): super(FuncMenu, self).__init__() self.__init_ui() def __init_ui(self): style_sheet = """ QPushButton { border:none; padding: 5px 15px; height: 25px; font-size:14px; font-weight: bold; } QPushButton:hover{ background-color: rgb(200, 200, 200) } """ # 支持qss设置背景 self.setAttribute(Qt.WA_StyledBackground, True) self.layout = QHBoxLayout(margin=0) self.setStyleSheet(style_sheet) self.setLayout(self.layout) def addMenu(self, menu): if not isinstance(menu, QPushButton): return self.layout.addWidget(menu) def addSpacer(self): self.layout.addSpacerItem( QSpacerItem(40, 10, QSizePolicy.Expanding, QSizePolicy.Minimum))
def initMainUi(self): role_names = self.parentApplet.dataSelectionApplet.topLevelOperator.DatasetRoles.value self.list_widgets = [] # Create a tab for each role for role_index, role_name in enumerate(role_names): select_button = QPushButton("Select " + role_name + " Files...", clicked=partial(self.select_files, role_index) ) clear_button = QPushButton("Clear " + role_name + " Files", clicked=partial(self.clear_files, role_index) ) button_layout = QHBoxLayout() button_layout.addWidget(select_button) button_layout.addSpacerItem( QSpacerItem(0,0,hPolicy=QSizePolicy.Expanding) ) button_layout.addWidget(clear_button) button_layout.setContentsMargins(0, 0, 0, 0) button_layout_widget = QWidget() button_layout_widget.setLayout(button_layout) button_layout_widget.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum) ) list_widget = QListWidget(parent=self) list_widget.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) ) self.list_widgets.append( list_widget ) tab_layout = QVBoxLayout() tab_layout.setContentsMargins(0, 0, 0, 0) tab_layout.addWidget( button_layout_widget ) tab_layout.addWidget( list_widget ) layout_widget = QWidget(parent=self) layout_widget.setLayout(tab_layout) self.addTab(layout_widget, role_name)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) layout = QHBoxLayout() pm_plus = QIcon('imgs/plus.png') self.newButton = QPushButton() self.newButton.setToolTip("New Link") self.newButton.setIcon(pm_plus) self.newButton.clicked.connect(self.new_button_clicked) pm_plus_more = QIcon('imgs/plus-list.png') self.newMoreButton = QPushButton() self.newMoreButton.setToolTip("New Link (bulk)") self.newMoreButton.setIcon(pm_plus_more) self.newMoreButton.clicked.connect(self.new_button_clicked_bulk) layout.addWidget(self.newButton) layout.addWidget(self.newMoreButton) layout.addSpacerItem( QSpacerItem(0, 0, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum)) pm_nuke = QIcon('imgs/nuke.png') self.clearButton = QPushButton() self.clearButton.setToolTip("Remove All Links") self.clearButton.setIcon(pm_nuke) self.clearButton.clicked.connect(self.nuke_button_clicked) layout.addWidget(self.clearButton) self.setLayout(layout)
def add_display_options_ui_elements(self): """ method used to add the display options to the gui Returns: None """ options_layout = QHBoxLayout() self.limit_view.setToolTip("When checked only show parse type files") self.limit_view.toggled.connect(self.toggle_limit_view) self.limit_view.toggled.connect(self.get_files_from_selected_folder) self.limit_type.setDisabled(True) self.limit_type.setMaximumWidth(77) self.limit_type.editingFinished.connect(self.check_limit_type) self.limit_type.textEdited.connect(self.get_files_from_selected_folder) self.search_text.setDisabled(True) self.search.toggled.connect(self.toggle_search) self.search.toggled.connect(self.get_files_from_selected_folder) self.search_text.editingFinished.connect(self.check_search_str) self.search_text.textEdited.connect( self.get_files_from_selected_folder) options_layout.addWidget(self.limit_view) options_layout.addWidget(self.limit_type) options_layout.addSpacerItem(QSpacerItem(20, 5)) options_layout.addWidget(self.search) options_layout.addWidget(self.search_text) options_layout.addStretch(1) # ADD options_layout TO self.main_layout self.main_layout.addLayout(options_layout)
def __init__(self, parent): super(SchemesManagerWidget, self).__init__(parent, Qt.Dialog) self.setWindowTitle(translations.TR_EDITOR_SCHEMES) self.resize(700, 500) vbox = QVBoxLayout(self) self._tabs = QTabWidget() vbox.addWidget(self._tabs) # Footer hbox = QHBoxLayout() btn_close = QPushButton(self.tr('Close')) btnReload = QPushButton(self.tr("Reload")) hbox.addWidget(btn_close) hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox.addWidget(btnReload) vbox.addLayout(hbox) self.overlay = ui_tools.Overlay(self) self.overlay.show() self._schemes = [] self._loading = True self.downloadItems = [] #Load Themes with Thread #self.connect(btnReload, SIGNAL("clicked()"), self._reload_themes) btnReload.clicked.connect(self._reload_themes) self._thread = ui_tools.ThreadExecution(self.execute_thread) #self.connect(self._thread, SIGNAL("finished()"), self.load_skins_data) self._thread.finished.connect(self.load_skins_data) #self.connect(btn_close, SIGNAL('clicked()'), self.close) btn_close.clicked.connect(self.close) self._reload_themes()
def setup_default_ui(self): self.ui.radio_button_trim.setChecked(True) self.ui.check_box_lkq.setChecked(True) self.ui.radio_button_nc.setChecked(True) work_centers = ['Slitting', 'DTR', 'CPurlin', 'ZPurlin'] self.ui.combo_box_workcenter.addItems(work_centers) v_spacer = QSpacerItem(500, 1) edit_line = QLineEdit() edit_line.setObjectName('edit_line') edit_line.setText(edit_line.objectName()) edit_line.width = 50 self.ui.__dict__['edit_line'] = edit_line search_btn = QPushButton() search_btn.width = 50 search_btn.setText('Search') hbox = QHBoxLayout() hbox.addSpacerItem(v_spacer) hbox.addWidget(edit_line) hbox.addWidget(search_btn) # bb = QPushButton('test', self.ui.verticalLayout) # bb.setObjectName('bb') self.ui.verticalLayout.addLayout(hbox) search_btn.clicked.connect(self.on_search_btn_clicked)
def __init__(self, task): QWidget.__init__(self) panel = QHBoxLayout() self.setLayout(panel) panel.setContentsMargins(2, 2, 2, 2) self.lb_description = QLabel() panel.addWidget(self.lb_description) self.lb_description.setMaximumWidth(description_width) panel.addSpacerItem(QSpacerItem(1, 1, QSizePolicy.MinimumExpanding)) self.update(task) font = QFont() font.setBold(True) font.setPointSize(14) buttons = QHBoxLayout() buttons.setAlignment(Qt.AlignLeft) self.bt_up = SIconButton('↑', font, 'Move up') self.bt_edit = SIconButton('✎', font, 'Edit') self.bt_delete = SIconButton('♻', font, 'Delete') self.bt_add = SIconButton('+', font, 'Add new') self.cb_enable = QCheckBox() self.cb_enable.setChecked(task['is_enabled']) buttons.addWidget(self.bt_up) buttons.addWidget(self.bt_edit) buttons.addWidget(self.bt_delete) buttons.addWidget(self.bt_add) buttons.addWidget(self.cb_enable) panel.addLayout(buttons) self.setLayout(panel)
def __init__(self, line: Line2D, name: str, parent): QWidget.__init__(self, parent) self.parent = parent self.line = line self.name = name self.color_indicator = QWidget() self.color_indicator.setFixedSize(24, 24) self.enterEvent(None) # This sets the color self.visibility_toggle = QCheckBox(" ") self.visibility_toggle.setChecked(True) self.visibility_toggle.toggled.connect(self.__on_visible_check_toggled) self.bold_toggle = QCheckBox(" ") self.bold_toggle.toggled.connect(self.__on_bold_check_toggled) self.bold_toggle.setChecked(False) self.label = QLabel(self.name) layout = QHBoxLayout() layout.addWidget(self.visibility_toggle) layout.addWidget(self.bold_toggle) layout.addWidget(self.color_indicator) layout.addWidget(self.label) layout.addSpacerItem(QSpacerItem(1, 1, QSizePolicy.Expanding, QSizePolicy.Maximum)) self.setLayout(layout)
class SearchLineEdit(QLineEdit): """创建一个可自定义图片的输入框。""" def __init__(self, parent=None): super(SearchLineEdit, self).__init__() self.setObjectName("SearchLine") self.parent = parent self.setMinimumSize(218, 20) with open('QSS/searchLine.qss', 'r') as f: self.setStyleSheet(f.read()) self.button = QPushButton(self) self.button.setMaximumSize(13, 13) self.button.clicked.connect(self.search) self.button.setCursor(QCursor(Qt.PointingHandCursor)) self.setTextMargins(3, 0, 19, 0) self.spaceItem = QSpacerItem(150, 10, QSizePolicy.Expanding) self.mainLayout = QHBoxLayout() self.mainLayout.addSpacerItem(self.spaceItem) # self.mainLayout.addStretch(1) self.mainLayout.addWidget(self.button) self.mainLayout.addSpacing(10) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.mainLayout) def search(self): pass
class BandLegend(QWidget): def __init__(self, band_display_widget: 'BandDisplayWidget'): QWidget.__init__(self) self.setWindowTitle("Band Legend") self.setWindowIcon(program_icon()) self.scroll_area = QScrollArea() self.scroll_area.setLayout(QVBoxLayout()) self.scroll_area.setWidgetResizable(True) self.widget = QWidget() self.scroll_area.setWidget(self.widget) self.widget.setLayout(QVBoxLayout()) self.layout = QVBoxLayout() self.setLayout(self.layout) self.band_display_widget = band_display_widget self.layout.addWidget(self.scroll_area) self.setMouseTracking(True) self.hlayout = QHBoxLayout() self.hlayout.addWidget(QLabel("Visible? ")) self.hlayout.addWidget(QLabel("Bold? ")) self.hlayout.addSpacerItem(QSpacerItem(1, 1, QSizePolicy.Expanding, QSizePolicy.Preferred)) self.widget.layout().addLayout(self.hlayout) def add_bands(self, bands: Dict[str, Line2D], table_name: str): """ Add a set of bands for a specific line list """ self.widget.layout().addWidget(LegendItem(bands, table_name, self)) def update_plot(self): self.band_display_widget.update_plot()
def make_control_layout(self): buttonsLayout = QHBoxLayout() buttonsLayout.setContentsMargins(0, 0, 0, 0) buttonsLayout.addWidget(self.timeBox) buttonsLayout.addWidget(self.slowDownButton) buttonsLayout.addWidget(self.goBackButton) buttonsLayout.addWidget(self.goBack3Button) buttonsLayout.addWidget(self.playButton) buttonsLayout.addWidget(self.adv3Button) buttonsLayout.addWidget(self.advanceButton) buttonsLayout.addWidget(self.speedUpButton) buttonsLayout.addWidget(self.rateBox) cutLayout = QHBoxLayout() cutLayout.setContentsMargins(0, 0, 0, 0) cutLayout.addSpacerItem(QSpacerItem(200, 5, QSizePolicy.Minimum, QSizePolicy.Minimum)) cutLayout.addWidget(self.cutButton) cutLayout.addSpacerItem(QSpacerItem(200, 5, QSizePolicy.Minimum, QSizePolicy.Minimum)) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.positionSlider) layout.addWidget(self.hlightSliderTips) layout.addLayout(buttonsLayout) layout.addLayout(cutLayout) return layout
def __init__(self, parent=None): super().__init__(parent, Qt.WindowStaysOnTopHint) box = QVBoxLayout(self) box.setContentsMargins(0, 0, 0, 0) box.setSpacing(0) # PEP8 self._list_pep8 = QListWidget() self._list_pep8.setWordWrap(True) self._list_pep8.setSortingEnabled(True) hbox = QHBoxLayout() hbox.setContentsMargins(5, 3, 5, 3) if settings.CHECK_STYLE: self._btn_pep8 = QPushButton("PEP8: ON") else: self._btn_pep8 = QPushButton("PEP8: OFF") self._pep8_label = QLabel("PEP8 Errors: %s" % 0) hbox.addWidget(self._pep8_label) hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox.addWidget(self._btn_pep8) box.addLayout(hbox) box.addWidget(self._list_pep8) # Connections self._list_pep8.clicked.connect(self.__on_pep8_item_selected) self._btn_pep8.clicked.connect(self._turn_on_off_pep8) # Register service IDE.register_service("tab_errors", self)
class SearchLineEdit(QLineEdit): searchSignal = pyqtSignal(str) """创建一个可搜索的输入框。""" def __init__(self, parent=None): super().__init__() self.parent = parent self.setMinimumSize(218, 20) self.button = QPushButton(self) self.button.setMaximumSize(16, 16) self.button.setCursor(QCursor(Qt.PointingHandCursor)) self.button.setStyleSheet( "QPushButton{border-image: url(icons/search.png)}") self.setTextMargins(3, 0, 19, 0) self.spaceItem = QSpacerItem(150, 10, QSizePolicy.Expanding) self.mainLayout = QHBoxLayout() self.mainLayout.addSpacerItem(self.spaceItem) # self.mainLayout.addStretch(1) self.mainLayout.addWidget(self.button) self.mainLayout.addSpacing(5) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.mainLayout) self.button.clicked.connect(self.sendSearchSignal) def sendSearchSignal(self): self.searchSignal.emit(self.text())
def changeTileWidth(): '''Change tile width (tile block size) and reset image-scene''' dlg = QDialog(self) dlg.setWindowTitle("Viewer Tile Width") dlg.setModal(True) spinBox = QSpinBox( parent=dlg ) spinBox.setRange( 128, 10*1024 ) spinBox.setValue( self.editor.imageScenes[0].tileWidth() ) ctrl_layout = QHBoxLayout() ctrl_layout.addSpacerItem(QSpacerItem(10, 0, QSizePolicy.Expanding)) ctrl_layout.addWidget( QLabel("Tile Width:") ) ctrl_layout.addWidget( spinBox ) button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, parent=dlg) button_box.accepted.connect( dlg.accept ) button_box.rejected.connect( dlg.reject ) dlg_layout = QVBoxLayout() dlg_layout.addLayout( ctrl_layout ) dlg_layout.addWidget( QLabel("Setting will apply current view immediately,\n" "and all other views upon restart.") ) dlg_layout.addWidget( button_box ) dlg.setLayout( dlg_layout ) if dlg.exec_() == QDialog.Accepted: for s in self.editor.imageScenes: if s.tileWidth != spinBox.value(): s.setTileWidth( spinBox.value() ) s.reset()
def changeTileWidth(): """Change tile width (tile block size) and reset image-scene""" dlg = QDialog(self) dlg.setWindowTitle("Viewer Tile Width") dlg.setModal(True) spinBox = QSpinBox(parent=dlg) spinBox.setRange(128, 10 * 1024) spinBox.setValue(self.editor.imageScenes[0].tileWidth()) ctrl_layout = QHBoxLayout() ctrl_layout.addSpacerItem(QSpacerItem(10, 0, QSizePolicy.Expanding)) ctrl_layout.addWidget(QLabel("Tile Width:")) ctrl_layout.addWidget(spinBox) button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, parent=dlg) button_box.accepted.connect(dlg.accept) button_box.rejected.connect(dlg.reject) dlg_layout = QVBoxLayout() dlg_layout.addLayout(ctrl_layout) dlg_layout.addWidget( QLabel("Setting will apply current view immediately,\n" "and all other views upon restart.") ) dlg_layout.addWidget(button_box) dlg.setLayout(dlg_layout) if dlg.exec_() == QDialog.Accepted: for s in self.editor.imageScenes: if s.tileWidth != spinBox.value(): s.setTileWidth(spinBox.value()) s.reset()
def onActivated(self): current_selection = self.ui.chats_list.currentText() msg_lst = self._connector.select_messages(current_selection) for msg in msg_lst: self.chats.append(msg) self.deleteItems(self.verticalLayout) self.progress.setVisible(True) for i in range(len(self.chats) - 1): label_name = 'q_label_{}'.format(i) check_name = 'q_check_box_{}'.format(i) label = QLabel() check_box = QCheckBox() label.setObjectName(label_name) check_box.setObjectName(check_name) sender = self.chats[i][0] text = self.chats[i][2] label.setText("{}: {}".format(sender, text)) spaceItem = QSpacerItem(100, 10, QSizePolicy.Expanding) label.setWordWrap(True) hor_layout = QHBoxLayout() hor_layout.addWidget(label) hor_layout.addSpacerItem(spaceItem) hor_layout.addWidget(check_box) hor_layout.setContentsMargins(0, 0, 0, 0) check_box.clicked.connect(self.clicked_) self.verticalLayout.addLayout(hor_layout, 0) self.checks.append(check_box) self.labels[label_name] = label self.progress.setValue(100 / len(self.chats) * 0.1) self.progress.setVisible(False) self.chats.clear()
class CurrencySelect(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # ---- Content ---- self.layout = QHBoxLayout() self.layout.setSpacing(80) # Label self.label = QLabel(self.tr("Currency")) self.label.setFont(PreferencesLabelFont()) self.layout.addWidget(self.label) # Languages buttons self.currency_bttns = CurrencyButtonsLayout() self.layout.addLayout(self.currency_bttns) # Spacer self.layout.addSpacerItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Minimum)) self.setLayout(self.layout) # ---- Initialize ---- self.set_initial_currency() def get_current_currency(self): for bttn in self.currency_bttns.bttns: if bttn.isChecked(): return bttn.text() def set_initial_currency(self): initial_curr = confighandler.get_fiat_currency().upper() for bttn in self.currency_bttns.bttns: if bttn.text() == initial_curr: bttn.click()
def __init__(self, parent): super(SchemesManagerWidget, self).__init__(parent, Qt.Dialog) self.setWindowTitle(translations.TR_EDITOR_SCHEMES) self.resize(700, 500) vbox = QVBoxLayout(self) self._tabs = QTabWidget() vbox.addWidget(self._tabs) # Footer hbox = QHBoxLayout() btn_close = QPushButton(self.tr('Close')) btnReload = QPushButton(self.tr("Reload")) hbox.addWidget(btn_close) hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox.addWidget(btnReload) vbox.addLayout(hbox) self.overlay = ui_tools.Overlay(self) self.overlay.show() self._schemes = [] self._loading = True self.downloadItems = [] #Load Themes with Thread btnReload.clicked['bool'].connect(self._reload_themes) self._thread = ui_tools.ThreadExecution(self.execute_thread) self._thread.finished.connect(self.load_skins_data) btn_close.clicked['bool'].connect(self.close) self._reload_themes()
def __init__(self, parent): QDialog.__init__(self, parent, Qt.Dialog) self.setWindowTitle(self.tr("Language Manager")) self.resize(700, 500) vbox = QVBoxLayout(self) self._tabs = QTabWidget() vbox.addWidget(self._tabs) # Footer hbox = QHBoxLayout() btn_close = QPushButton(self.tr('Close')) btnReload = QPushButton(self.tr("Reload")) hbox.addWidget(btn_close) hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox.addWidget(btnReload) vbox.addLayout(hbox) self.overlay = ui_tools.Overlay(self) self.overlay.show() self._languages = [] self._loading = True self.downloadItems = [] # Load Themes with Thread btnReload.clicked.connect(self._reload_languages) self._thread = ui_tools.ThreadExecution(self.execute_thread) self._thread.finished.connect(self.load_languages_data) btn_close.clicked.connect(self.close) self._reload_languages()
def __init__(self, suggested, parent=None): super(PythonDetectDialog, self).__init__(parent, Qt.Dialog) self.setMaximumSize(QSize(0, 0)) self.setWindowTitle("Configure Python Path") vbox = QVBoxLayout(self) lblMessage = QLabel(_translate("PythonDetectDialog", "We have detected that you are using " + "Windows,\nplease choose the proper " + "Python application for you:")) vbox.addWidget(lblMessage) self.listPaths = QListWidget() self.listPaths.setSelectionMode(QListWidget.SingleSelection) vbox.addWidget(self.listPaths) hbox = QHBoxLayout() hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) btnCancel = QPushButton(_translate("PythonDetectDialog", "Cancel")) btnAccept = QPushButton(_translate("PythonDetectDialog", "Accept")) hbox.addWidget(btnCancel) hbox.addWidget(btnAccept) vbox.addLayout(hbox) btnAccept.clicked['bool'].connect(self._set_python_path) btnCancel.clicked['bool'].connect(self.close) for path in suggested: self.listPaths.addItem(path) self.listPaths.setCurrentRow(0)
def __init__(self, listItem, listView, text=DEFAULT_MSG, lr=True, device_name="MSE", ip="127.0.0.1", parent_dialog=None): super(TextItem, self).__init__() self.ip = ip self.device_name = device_name self.parent_dialog = parent_dialog hbox = QHBoxLayout() text = BubbleText(listItem, listView, text, lr) head = LabelHead(device_name) head.setFixedSize(100, 50) if lr is not True: hbox.addSpacerItem( QSpacerItem(1, 1, QSizePolicy.Expanding, QSizePolicy.Preferred)) hbox.addWidget(text) hbox.addWidget(head) else: hbox.addWidget(head) hbox.addWidget(text) hbox.addSpacerItem( QSpacerItem(1, 1, QSizePolicy.Expanding, QSizePolicy.Preferred)) hbox.setContentsMargins(0, 0, 0, 0) self.setLayout(hbox) self.setContentsMargins(0, 0, 0, 0)
class ToolWidget(QWidget): tool_click_signal = pyqtSignal(str) def __init__(self): super(ToolWidget, self).__init__() self.__init_ui() def __init_ui(self): style_sheet = """ ToolWidget { background-color: rgb(240,240,240); } QPushButton{ background-color: #FFFFFF; margin: 0 5px; padding: 3px 5px; font-size:12px; } """ self.setAttribute(Qt.WA_StyledBackground, True) # 设置了才能使用qss设置布局背景色 self.layout = QHBoxLayout(spacing=0, margin=0) self.setLayout(self.layout) self.setStyleSheet(style_sheet) def addTool(self, tool): if not isinstance(tool, QPushButton): return self.layout.addWidget(tool, alignment=Qt.AlignTop) def addSpacer(self): self.layout.addSpacerItem(QSpacerItem( 40, 10, QSizePolicy.Expanding, QSizePolicy.Minimum))
def __init__(self, model, parent): super().__init__(parent=parent) self.setFixedSize(self.parent().size()) self.model = model vbox = QVBoxLayout() vbox.setContentsMargins(0, 0, 0, 0) self.setLayout(vbox) self._matrices = [] self.matrice_grid = QWidget(parent=self) reduced = self.height() - Settings.Settings.progressbar_height self.matrice_grid.setFixedSize(self.width(), reduced) self.matrice_grid.setLayout(QVBoxLayout()) self.matrice_grid.layout().setSpacing(0) self.matrice_grid.setContentsMargins(0, 0, 0, 0) self.progress_bar = QProgressBar() self.progress_bar.setTextVisible(False) self.progress_bar.setFixedHeight(Settings.Settings.progressbar_height) self.progress_bar.setMaximum(1000) self.progress_bar.setMinimum(0) # self.progress_bar.setValue = self.setValue vbox.addWidget(self.matrice_grid) vbox.addWidget(self.progress_bar) matrices = self.model.matrices mat_iter = iter(matrices) for i in range(0, 4): # TODO: Fix hardcoded numbers row = QHBoxLayout() row.addSpacerItem(QSpacerItem(10, 10, QSizePolicy.Expanding)) for j in range(0, 5): # TODO Fix hardcoded values self.addMatrix(row, next(mat_iter)) row.addSpacerItem(QSpacerItem(10, 10, QSizePolicy.Expanding)) self.matrice_grid.layout().addItem(row)
def __init__(self, equipment_item): View.__init__(self) layout = QHBoxLayout() layout.setContentsMargins(5, 1, 1, 1) self.item = equipment_item self.name = equipment_item.ID name_layout = QVBoxLayout() name = QLabel(translate(equipment_item.name)) name_layout.addWidget(name) self.values_layout = QVBoxLayout() cost_layout = QVBoxLayout() cost = QLabel("TODO COST") # TODO cost_layout.addWidget(cost) layout.addLayout(name_layout) layout.addSpacerItem(QSpacerItem(10, 10, QSizePolicy.Expanding, QSizePolicy.Minimum)) layout.addLayout(self.values_layout) layout.addLayout(cost_layout) checkbox_layout = QVBoxLayout() self.equipped_checkbox = QCheckBox() self.equipped_checkbox.setChecked(self.item.equipped_quantity > 0) self.equipped_checkbox.stateChanged.connect(lambda x: self.update_parameters("equipped", x)) checkbox_layout.addWidget(self.equipped_checkbox) layout.addLayout(checkbox_layout) self.setLayout(layout) view = PropertyView(self.item.bonuses) self.values_layout.addWidget(view) # for bonus in : # self.add_header_option("Edit", self.edit) self.setLayout(layout)
def __init__(self, listItem, listView, img=DEFAULT_MSG, lr=True, device_name=DEFAULT_HEAD, ip="127.0.0.1", chat_dialog=None): super(ImageItem, self).__init__() hbox = QHBoxLayout() self.ip = ip self.device_name = device_name self.chat_dialog = chat_dialog img = BubbleImage(listItem, listView, img, lr) head = LabelHead(device_name) head.setFixedSize(100, 50) if lr is not True: hbox.addSpacerItem( QSpacerItem(1, 1, QSizePolicy.Expanding, QSizePolicy.Preferred)) hbox.addWidget(img) hbox.addWidget(head) else: hbox.addWidget(head) hbox.addWidget(img) hbox.addSpacerItem( QSpacerItem(1, 1, QSizePolicy.Expanding, QSizePolicy.Preferred)) hbox.setContentsMargins(0, 0, 0, 0) self.setLayout(hbox) self.setContentsMargins(0, 0, 0, 0)
def create_results_summary(self): summary_layout = QHBoxLayout() back_button = QPushButton() back_button.setFlat(True) back_button.setIcon(QIcon(os.path.join(icons_path, "back.png"))) back_button.setIconSize(QSize(24, 24)) back_button.setCursor(QCursor(Qt.PointingHandCursor)) back_button.clicked.connect(lambda: self.return_to_food_db_signal.emit( "Return to FoodDatabase")) self.results_label = QLabel('Found %s results for "%s"' % (len(self.search_results), self.search)) self.results_label.setFont(QFont("Ariel", 15)) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding) search_bar = QLineEdit() search_bar.setStyleSheet("background-color:white;") search_bar.setPlaceholderText("Search") search_button = QPushButton("Search") search_button.setStyleSheet("background-color: #440D0F;color:white;") search_button.setCursor(QCursor(Qt.PointingHandCursor)) search_button.clicked.connect( lambda: self.search_database(search_bar.text())) search_bar.returnPressed.connect(search_button.click) summary_layout.addWidget(back_button) summary_layout.addWidget(self.results_label) summary_layout.addSpacerItem(spacer) summary_layout.addWidget(search_bar) summary_layout.addWidget(search_button) return summary_layout
class FileSaveLineEdit(QLineEdit): """创建一个可选择文件保存路径的输入框。""" def __init__(self, parent=None, directory="", filter='', **kwargs): super().__init__(**kwargs) self.parent = parent self.directory = directory self.filter = filter self.button = QPushButton(self) self.button.setMaximumSize(16, 16) self.button.setCursor(QCursor(Qt.PointingHandCursor)) self.button.setStyleSheet( "QPushButton{border-image: url(icon/ellipsis.png)}") self.setTextMargins(3, 0, 19, 0) self.mainLayout = QHBoxLayout() # 添加空白区宽150px、高10px,宽度尽可能的缩小、放大 self.spaceItem = QSpacerItem(150, 10, QSizePolicy.Expanding) self.mainLayout.addSpacerItem(self.spaceItem) # self.mainLayout.addStretch(1) self.mainLayout.addWidget(self.button) self.mainLayout.addSpacing(5) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.mainLayout) self.setContextMenuPolicy(Qt.NoContextMenu) self.button.clicked.connect(self.saveFileSelect) def saveFileSelect(self): fileName = QFileDialog.getSaveFileName(self, '', self.directory, self.filter) if fileName[0]: self.setText(fileName[0])
def __init__(self, *args, **kwargs): super(TitleBar, self).__init__(*args, **kwargs) # 支持qss设置背景 self.setAttribute(Qt.WA_StyledBackground, True) self.mPos = None self.iconSize = 16 # 图标的默认大小 # 设置默认背景颜色,否则由于受到父窗口的影响导致透明 self.setAutoFillBackground(True) palette = self.palette() palette.setColor(palette.Window, QColor(240, 240, 240)) self.setPalette(palette) # 布局 layout = QHBoxLayout(self, spacing=0) layout.setContentsMargins(5, 0, 5, 0) # 窗口图标 self.iconLabel = QLabel(self) # self.iconLabel.setScaledContents(True) layout.addWidget(self.iconLabel) # 窗口标题 self.titleLabel = QLabel(self) self.titleLabel.setStyleSheet(''' QLabel {color: #dadada;} ''') self.titleLabel.setObjectName('title_text') self.titleLabel.setMargin(2) layout.addWidget(self.titleLabel) # 中间伸缩条 layout.addSpacerItem( QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) # 利用Webdings字体来显示图标 font = self.font() or QFont() font.setFamily('Webdings') # 最小化按钮 self.buttonMinimum = QPushButton('0', self, clicked=self.windowMinimumed.emit, font=font, objectName='buttonMinimum') layout.addWidget(self.buttonMinimum) # 最大化/还原按钮 self.buttonMaximum = QPushButton('1', self, clicked=self.showMaximized, font=font, objectName='buttonMaximum') layout.addWidget(self.buttonMaximum) # 关闭按钮 self.buttonClose = QPushButton('r', self, clicked=self.windowClosed.emit, font=font, objectName='buttonClose') layout.addWidget(self.buttonClose) # 初始高度 self.setHeight() # 标题栏按钮没必要获取焦点,以便用键盘操作其它控件。由[email protected]添加 self.buttonMaximum.setFocusPolicy(Qt.NoFocus) self.buttonMinimum.setFocusPolicy(Qt.NoFocus) self.buttonClose.setFocusPolicy(Qt.NoFocus)
class OzelListeMaddesi(QWidget): def __init__(self, ebeveyn=None): super(OzelListeMaddesi, self).__init__(ebeveyn) self.ebeveyn = ebeveyn kutu = QVBoxLayout() self.setLayout(kutu) self.mesaj_tipi = QLabel() kutu.addWidget(self.mesaj_tipi) self.gonderen = QLabel() kutu.addWidget(self.gonderen) self.gonderen_onay = QLabel() kutu.addWidget(self.gonderen_onay) self.mesaj = QTextEdit() self.mesaj.setReadOnly(True) kutu.addWidget(self.mesaj) self.alt_kutu = QHBoxLayout() kutu.addLayout(self.alt_kutu) self.tarih = QLabel() self.alt_kutu.addWidget(self.tarih) self.alt_kutu.addSpacerItem( QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Expanding)) self.mesaj.setFixedHeight(125) def okuyucu(self): self.mesaj.setFixedSize(250, 125) self.okunma = QCheckBox() self.okunma.clicked.connect(self.okunma_degistir) self.alt_kutu.addWidget(self.okunma) def mesaj_id_ekle(self, mesaj_id): self.mesaj_id = mesaj_id def mesaj_tipi_ekle(self, mesaj_tipi): self.mesaj_tipi.setText("<b>Mesaj Tipi : </b>" + mesaj_tipi) def mesaj_ekle(self, mesaj): self.mesaj.setText(str(mesaj)) def tarih_ekle(self, tarih): self.tarih.setText("<b>" + tarih + "</b>") def okunma_degistir(self, okunma): if okunma == "okunmadi": self.okunma.setText("okunmadı") elif okunma == "okundu" or self.okunma.isChecked() == True: self.okunma.setText("okundu") self.okunma.setChecked(True) self.okunma.setDisabled(True) self.ebeveyn.okunmus_mesajlar.append(self.mesaj_id) def gonderen_ekle(self, gonderen): self.gonderen.setText("<b>Gönderen : </b>" + gonderen) def gonderen_onay_ekle(self, gonderen_onay): self.gonderen_onay.setText("<b>Onay : </b>" + gonderen_onay)
def __init__(self, parent=None): super(_s_MiscContainer, self).__init__(parent) vbox = QVBoxLayout(self) vbox.setContentsMargins(0, 0, 0, 0) vbox.setSpacing(0) self.__toolbar = QToolBar() self.__toolbar.setObjectName('custom') hbox = QHBoxLayout() vbox.addLayout(hbox) self.stack = StackedWidget() vbox.addWidget(self.stack) self._console = console_widget.ConsoleWidget() self.stack.addWidget(self._console) self._runWidget = run_widget.RunWidget() self.stack.addWidget(self._runWidget) self._web = web_render.WebRender() self.stack.addWidget(self._web) self._findInFilesWidget = find_in_files.FindInFilesWidget( self.parent()) self.stack.addWidget(self._findInFilesWidget) #Last Element in the Stacked widget self._results = results.Results(self) self.stack.addWidget(self._results) self._btnConsole = QPushButton(QIcon(resources.IMAGES['console']), '') self._btnConsole.setToolTip(_translate("_s_MiscContainer", "Console")) self._btnRun = QPushButton(QIcon(resources.IMAGES['play']), '') self._btnRun.setToolTip(_translate("_s_MiscContainer", "Output")) self._btnWeb = QPushButton(QIcon(resources.IMAGES['web']), '') self._btnWeb.setToolTip(_translate("_s_MiscContainer", "Web Preview")) self._btnFind = QPushButton(QIcon(resources.IMAGES['find']), '') self._btnFind.setToolTip(_translate("_s_MiscContainer", "Find in Files")) #Toolbar hbox.addWidget(self.__toolbar) self.__toolbar.addWidget(self._btnConsole) self.__toolbar.addWidget(self._btnRun) self.__toolbar.addWidget(self._btnWeb) self.__toolbar.addWidget(self._btnFind) self.__toolbar.addSeparator() hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) btn_close = QPushButton( self.style().standardIcon(QStyle.SP_DialogCloseButton), '') btn_close.setObjectName('navigation_button') btn_close.setToolTip(_translate("_s_MiscContainer", 'F4: Show/Hide')) hbox.addWidget(btn_close) self._btnConsole.clicked['bool'].connect(lambda: self._item_changed(0)) self._btnRun.clicked['bool'].connect(lambda: self._item_changed(1)) self._btnWeb.clicked['bool'].connect(lambda: self._item_changed(2)) self._btnFind.clicked['bool'].connect(lambda: self._item_changed(3)) btn_close.clicked['bool'].connect(self.hide)
def initOpts(self): layout = QHBoxLayout() self.errors = QCheckBox("Error", self.widget) self.errors.stateChanged.connect(self.refreshLog) layout.addWidget(self.errors) layout.addSpacerItem( QSpacerItem(10, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) self.layout.addLayout(layout) return layout
def __init__(self, parent=None): QDialog.__init__(self, parent, Qt.Dialog | Qt.FramelessWindowHint) self.setWindowTitle(self.tr("About NINJA-IDE")) self.setMaximumSize(QSize(0, 0)) vbox = QVBoxLayout(self) # Create an icon for the Dialog pixmap = QPixmap(":img/icon") self.lblIcon = QLabel() self.lblIcon.setPixmap(pixmap) hbox = QHBoxLayout() hbox.addWidget(self.lblIcon) lblTitle = QLabel( '<h1>NINJA-IDE</h1>\n<i>Ninja-IDE Is Not Just Another IDE<i>') lblTitle.setTextFormat(Qt.RichText) lblTitle.setAlignment(Qt.AlignLeft) hbox.addWidget(lblTitle) vbox.addLayout(hbox) # Add description vbox.addWidget(QLabel( self.tr("""NINJA-IDE (from: "Ninja Is Not Just Another IDE"), is a cross-platform integrated development environment specifically designed to build Python Applications. NINJA-IDE provides the tools necessary to simplify the Python software development process and handles all kinds of situations thanks to its rich extensibility."""))) vbox.addWidget(QLabel(self.tr("Version: %s") % ninja_ide.__version__)) link_ninja = QLabel( self.tr('Website: <a href="%s"><span style=" ' 'text-decoration: underline; color:#ff9e21;">' '%s</span></a>') % (ninja_ide.__url__, ninja_ide.__url__)) vbox.addWidget(link_ninja) link_source = QLabel( self.tr('Source Code: <a href="%s"><span style=" ' 'text-decoration: underline; color:#ff9e21;">%s</span></a>') % (ninja_ide.__source__, ninja_ide.__source__)) vbox.addWidget(link_source) hbox2 = QHBoxLayout() hbox2.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) btn_close = QPushButton(translations.TR_CLOSE) hbox2.addWidget(btn_close) vbox.addLayout(hbox2) # FIXME: setOpenExternalLinks on labels link_ninja.linkActivated['QString'].connect(self.link_activated) link_source.linkActivated['QString'].connect(self.link_activated) btn_close.clicked.connect(self.close)
class HtmlDialog(QDialog): """Generate a more complex HTML Viewer dialog window, with Prin/Close Buttons""" def __init__(self, parent = None): """ Constructor of HtmlDialog :param parent: dialog parent :return: """ super().__init__(parent, QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowMinMaxButtonsHint | QtCore.Qt.WindowCloseButtonHint) self.horzLayout = QHBoxLayout() self.vertLayout = QVBoxLayout() self.spacer = QSpacerItem(1, 1, QSizePolicy.Expanding, QSizePolicy.Fixed) # print button self.btnPrint = QPushButton(self) self.btnPrint.setText(translate("ReportDialog", "Print")) self.btnPrint.setMaximumWidth(100) self.btnClose = QPushButton(self) self.btnClose.setText(translate("ReportDialog", "Close")) self.btnClose.setMaximumWidth(100) # webview for help information self.wv = HtmlView(self) # build structure self.horzLayout.addWidget(self.btnPrint) self.horzLayout.addWidget(self.btnClose) self.horzLayout.addSpacerItem(self.spacer) self.vertLayout.insertLayout(0, self.horzLayout) self.vertLayout.addWidget(self.wv) self.setLayout(self.vertLayout) self.btnPrint.clicked.connect(self.wv.execpreview) self.btnClose.clicked.connect(self.close) def showHtml(self, html): """ Show rendered value of ``html`` :param html: raw html data """ print(html) self.wv.setHtml_(html) self.show()
def setup_ui(self): """Load all the components of the ui during the install process.""" vbox = QVBoxLayout(self) vbox.setContentsMargins(0, 0, 0, 0) vbox.setSpacing(0) self.__toolbar = QToolBar() self.__toolbar.setObjectName('custom') hbox = QHBoxLayout() vbox.addLayout(hbox) self.stack = StackedWidget() vbox.addWidget(self.stack) self._console = console_widget.ConsoleWidget() self._runWidget = run_widget.RunWidget() self._web = web_render.WebRender() self._findInFilesWidget = find_in_files.FindInFilesWidget( self.parent()) # Not Configurable Shortcuts shortEscMisc = QShortcut(QKeySequence(Qt.Key_Escape), self) shortEscMisc.activated.connect(self.hide) #Toolbar hbox.addWidget(self.__toolbar) self.add_to_stack(self._console, ":img/console", translations.TR_CONSOLE) self.add_to_stack(self._runWidget, ":img/play", translations.TR_OUTPUT) self.add_to_stack(self._web, ":img/web", translations.TR_WEB_PREVIEW) self.add_to_stack(self._findInFilesWidget, ":img/find", translations.TR_FIND_IN_FILES) #Last Element in the Stacked widget self._results = results.Results(self) self.stack.addWidget(self._results) self.__toolbar.addSeparator() hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) btn_close = QPushButton( self.style().standardIcon(QStyle.SP_DialogCloseButton), '') btn_close.setIconSize(QSize(24, 24)) btn_close.setObjectName('navigation_button') btn_close.setToolTip('F4: ' + translations.TR_ALL_VISIBILITY) hbox.addWidget(btn_close) btn_close.clicked['bool'].connect(self.hide)
def __init__(self, project, name, actions): super(TabGroup, self).__init__() vbox = QVBoxLayout(self) self.actions = actions self.project = project self.ID = self.project self.name = name self.tabs = [] self.listWidget = QListWidget() hbox = QHBoxLayout() btnExpand = QPushButton(_translate("TabGroup", "Expand this Files")) btnExpandAll = QPushButton(_translate("TabGroup", "Expand all Groups")) hbox.addWidget(btnExpandAll) hbox.addSpacerItem(QSpacerItem(20, 20, QSizePolicy.Expanding)) hbox.addWidget(btnExpand) vbox.addLayout(hbox) vbox.addWidget(self.listWidget) btnExpand.clicked['bool'].connect(self.expand_this) btnExpandAll.clicked['bool'].connect(self.actions.deactivate_tabs_groups)
def __init__(self, parent=None): super(NewProjectManager, self).__init__(parent, Qt.Dialog) self.setWindowTitle(translations.TR_NEW_PROJECT) self.setMinimumHeight(500) vbox = QVBoxLayout(self) vbox.addWidget(QLabel(translations.TR_CHOOSE_TEMPLATE)) vbox.addWidget(QLabel(translations.TR_TAB_PROJECTS)) hbox = QHBoxLayout() self.list_projects = QListWidget() self.list_projects.setProperty("wizard", True) hbox.addWidget(self.list_projects) self.list_templates = QListWidget() self.list_templates.setProperty("wizard", True) hbox.addWidget(self.list_templates) self.text_info = QTextBrowser() self.text_info.setProperty("wizard", True) hbox.addWidget(self.text_info) vbox.addLayout(hbox) hbox2 = QHBoxLayout() cancel = QPushButton(translations.TR_CANCEL) choose = QPushButton(translations.TR_CHOOSE) hbox2.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) hbox2.addWidget(cancel) hbox2.addWidget(choose) vbox.addLayout(hbox2) self.template_registry = IDE.get_service("template_registry") categories = self.template_registry.list_project_categories() for category in categories: self.list_projects.addItem(category) cancel.clicked['bool'].connect(self.close) choose.clicked['bool'].connect(self._start_wizard) self.list_projects.itemSelectionChanged.connect(self._project_selected) self.list_templates.itemSelectionChanged.connect(self._template_selected)
def __init__(self, parent): super(ThemeEditor, self).__init__(parent, Qt.Dialog) vbox = QVBoxLayout(self) hbox = QHBoxLayout() self.line_name = QLineEdit() self.btn_save = QPushButton(translations.TR_SAVE) self.line_name.setPlaceholderText(getuser().capitalize() + "s_theme") hbox.addWidget(self.line_name) hbox.addWidget(self.btn_save) self.edit_qss = QPlainTextEdit() css = 'QPlainTextEdit {color: %s; background-color: %s;' \ 'selection-color: %s; selection-background-color: %s;}' \ % (resources.CUSTOM_SCHEME.get( 'editor-text', resources.COLOR_SCHEME['Default']), resources.CUSTOM_SCHEME.get( 'EditorBackground', resources.COLOR_SCHEME['EditorBackground']), resources.CUSTOM_SCHEME.get( 'EditorSelectionColor', resources.COLOR_SCHEME['EditorSelectionColor']), resources.CUSTOM_SCHEME.get( 'EditorSelectionBackground', resources.COLOR_SCHEME['EditorSelectionBackground'])) self.edit_qss.setStyleSheet(css) self.btn_apply = QPushButton(self.tr("Apply Style Sheet")) hbox2 = QHBoxLayout() hbox2.addSpacerItem(QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) hbox2.addWidget(self.btn_apply) hbox2.addSpacerItem(QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) vbox.addWidget(self.edit_qss) vbox.addLayout(hbox) vbox.addLayout(hbox2) self.btn_apply.clicked['bool'].connect(self.apply_stylesheet) self.btn_save.clicked['bool'].connect(self.save_stylesheet)
def __init__(self, parent): super(PluginsManagerWidget, self).__init__(parent, Qt.Dialog) self.setWindowTitle(translations.TR_PLUGIN_MANAGER) self.resize(700, 600) vbox = QVBoxLayout(self) self._tabs = QTabWidget() vbox.addWidget(self._tabs) self._txt_data = QTextBrowser() self._txt_data.setOpenLinks(False) vbox.addWidget(QLabel(translations.TR_PROJECT_DESCRIPTION)) vbox.addWidget(self._txt_data) # Footer hbox = QHBoxLayout() btn_close = QPushButton(translations.TR_CLOSE) btnReload = QPushButton(translations.TR_RELOAD) hbox.addWidget(btn_close) hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox.addWidget(btnReload) vbox.addLayout(hbox) self.overlay = ui_tools.Overlay(self) self.overlay.hide() self._oficial_available = [] self._community_available = [] self._locals = [] self._updates = [] self._loading = True self._requirements = {} btnReload.clicked['bool'].connect(self._reload_plugins) self.thread = ThreadLoadPlugins(self) self.thread.finished.connect(self._load_plugins_data) self.thread.plugin_downloaded.connect(self._after_download_plugin) self.thread.plugin_manually_installed.connect(self._after_manual_install_plugin) self.thread.plugin_uninstalled.connect(self._after_uninstall_plugin) self._txt_data.anchorClicked['const QUrl&'].connect(self._open_link) btn_close.clicked['bool'].connect(self.close) self.overlay.show() self._reload_plugins()
def __init__(self): super(MigrationWidget, self).__init__() self._migration = {} vbox = QVBoxLayout(self) lbl_title = QLabel(_translate("MigrationWidget", "Current code:")) self.current_list = QListWidget() lbl_suggestion = QLabel(_translate("MigrationWidget", "Suggested changes:")) self.suggestion = QPlainTextEdit() self.suggestion.setReadOnly(True) self.btn_apply = QPushButton(_translate("MigrationWidget", "Apply change!")) hbox = QHBoxLayout() hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox.addWidget(self.btn_apply) vbox.addWidget(lbl_title) vbox.addWidget(self.current_list) vbox.addWidget(lbl_suggestion) vbox.addWidget(self.suggestion) vbox.addLayout(hbox) self.current_list.itemClicked['QListWidgetItem*'].connect(self.load_suggestion) self.btn_apply.clicked['bool'].connect(self.apply_changes)
def __init__(self, parent): super(ManualInstallWidget, self).__init__() self._parent = parent vbox = QVBoxLayout(self) form = QFormLayout() self._txtName = QLineEdit() self._txtName.setPlaceholderText('my_plugin') self._txtVersion = QLineEdit() self._txtVersion.setPlaceholderText('0.1') form.addRow(translations.TR_PROJECT_NAME, self._txtName) form.addRow(translations.TR_VERSION, self._txtVersion) vbox.addLayout(form) hPath = QHBoxLayout() self._txtFilePath = QLineEdit() self._txtFilePath.setPlaceholderText(os.path.join( os.path.expanduser('~'), 'full', 'path', 'to', 'plugin.zip')) self._btnFilePath = QPushButton(QIcon(":img/open"), '') self.completer, self.dirs = QCompleter(self), QDirModel(self) self.dirs.setFilter(QDir.AllEntries | QDir.NoDotAndDotDot) self.completer.setModel(self.dirs) self._txtFilePath.setCompleter(self.completer) hPath.addWidget(QLabel(translations.TR_FILENAME)) hPath.addWidget(self._txtFilePath) hPath.addWidget(self._btnFilePath) vbox.addLayout(hPath) vbox.addSpacerItem(QSpacerItem(0, 1, QSizePolicy.Expanding, QSizePolicy.Expanding)) hbox = QHBoxLayout() hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) self._btnInstall = QPushButton(translations.TR_INSTALL) hbox.addWidget(self._btnInstall) vbox.addLayout(hbox) #Signals self._btnFilePath.clicked['bool'].connect(self._load_plugin_path) self._btnInstall.clicked['bool'].connect(self.install_plugin)
def __init__(self, parent=None): super(Preferences, self).__init__(parent, Qt.Dialog) self.setWindowTitle(translations.TR_PREFERENCES_TITLE) self.setMinimumSize(QSize(900, 600)) vbox = QVBoxLayout(self) hbox = QHBoxLayout() vbox.setContentsMargins(0, 0, 5, 5) hbox.setContentsMargins(0, 0, 0, 0) # self.tree = QTreeWidget() self.tree.header().setHidden(True) self.tree.setSelectionMode(QTreeWidget.SingleSelection) self.tree.setAnimated(True) self.tree.header().setHorizontalScrollMode( QAbstractItemView.ScrollPerPixel) self.tree.header().setSectionResizeMode(0, QHeaderView.ResizeToContents) self.tree.header().setStretchLastSection(False) self.tree.setFixedWidth(200) self.stacked = QStackedLayout() hbox.addWidget(self.tree) hbox.addLayout(self.stacked) vbox.addLayout(hbox) # hbox_footer = QHBoxLayout() self._btnSave = QPushButton(translations.TR_SAVE) self._btnCancel = QPushButton(translations.TR_CANCEL) hbox_footer.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox_footer.addWidget(self._btnCancel) hbox_footer.addWidget(self._btnSave) vbox.addLayout(hbox_footer) # self.tree.itemSelectionChanged.connect(self._change_current) self._btnCancel.clicked['bool'].connect(self.close) self._btnSave.clicked['bool'].connect(self._save_preferences) # self.load_ui() self.tree.setCurrentItem(self.tree.topLevelItem(0))
def __init__(self): super(ErrorsWidget, self).__init__() self.pep8 = None self._outRefresh = True vbox = QVBoxLayout(self) self.listErrors = QListWidget() self.listErrors.setSortingEnabled(True) self.listPep8 = QListWidget() self.listPep8.setSortingEnabled(True) hbox_lint = QHBoxLayout() if settings.FIND_ERRORS: self.btn_lint_activate = QPushButton(_translate("ErrorsWidget", "Lint: ON")) else: self.btn_lint_activate = QPushButton(_translate("ErrorsWidget", "Lint: OFF")) self.errorsLabel = QLabel(_translate("ErrorsWidget", "Static Errors: %s") % 0) hbox_lint.addWidget(self.errorsLabel) hbox_lint.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox_lint.addWidget(self.btn_lint_activate) vbox.addLayout(hbox_lint) vbox.addWidget(self.listErrors) hbox_pep8 = QHBoxLayout() if settings.CHECK_STYLE: self.btn_pep8_activate = QPushButton(_translate("ErrorsWidget", "PEP8: ON")) else: self.btn_pep8_activate = QPushButton(_translate("ErrorsWidget", "PEP8: OFF")) self.pep8Label = QLabel(_translate("ErrorsWidget", "PEP8 Errors: %s") % 0) hbox_pep8.addWidget(self.pep8Label) hbox_pep8.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox_pep8.addWidget(self.btn_pep8_activate) vbox.addLayout(hbox_pep8) vbox.addWidget(self.listPep8) self.listErrors.itemSelectionChanged.connect(self.errors_selected) self.listPep8.itemSelectionChanged.connect(self.pep8_selected) self.btn_lint_activate.clicked['bool'].connect(self.errors_selected) self.btn_pep8_activate.clicked['bool'].connect(self._turn_on_off_pep8)
def __init__(self, parent): super(Theme, self).__init__() self._preferences, vbox = parent, QVBoxLayout(self) vbox.addWidget(QLabel(self.tr("<b>Select Theme:</b>"))) self.list_skins = QListWidget() self.list_skins.setSelectionMode(QListWidget.SingleSelection) vbox.addWidget(self.list_skins) self.btn_delete = QPushButton(self.tr("Delete Theme")) self.btn_preview = QPushButton(self.tr("Preview Theme")) self.btn_create = QPushButton(self.tr("Create Theme")) hbox = QHBoxLayout() hbox.addWidget(self.btn_delete) hbox.addSpacerItem(QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) hbox.addWidget(self.btn_preview) hbox.addWidget(self.btn_create) vbox.addLayout(hbox) self._refresh_list() self.btn_preview.clicked['bool'].connect(self.preview_theme) self.btn_delete.clicked['bool'].connect(self.delete_theme) self.btn_create.clicked['bool'].connect(self.create_theme) self._preferences.savePreferences.connect(self.save)
def __init__(self, parent=None): QDialog.__init__(self, parent) self.setWindowTitle(self.tr("Acerca de Pireal")) vbox = QVBoxLayout(self) # Banner banner = QLabel() banner.setPixmap(QPixmap(":img/icon")) banner.setAlignment(Qt.AlignHCenter) vbox.addWidget(banner) # Version lbl_version = QLabel("{0}".format(gui.__version__)) lbl_version.setAlignment(Qt.AlignHCenter) font = lbl_version.font() font.setPointSize(10) lbl_version.setFont(font) vbox.addWidget(lbl_version) # Description description = QLabel( self.tr("Relational Algebra query evaluator")) description.setAlignment(Qt.AlignHCenter) font = description.font() font.setPointSize(13) description.setFont(font) vbox.addWidget(description) # Web web_lbl = QLabel("<a href='{0}'><span style='color: #3465a4'>" "www.centaurialpha.github.io/pireal</span></a>") web_lbl.setOpenExternalLinks(True) web_lbl.setAlignment(Qt.AlignHCenter) vbox.addWidget(web_lbl) # Copyright copy = QLabel("<br>Copyright © 2015-{year} - " "Gabriel 'gabo' Acosta".format( year=datetime.today().year)) copy.setAlignment(Qt.AlignHCenter) font = copy.font() font.setPointSize(9) copy.setFont(font) vbox.addWidget(copy) # License and source lbl_license_source = QLabel(self.tr("<br>Este software tiene licencia " "<a href='{0}'><span style" "='color: #3465a4'>GNU GPL</span>" "</a> versión 3,<br>el código " "fuente " "está disponible en <a href='{1}'>" "<span style='color: #3465a4'>" "GitHub.</span></a>".format( gui.__license__, gui.__source_code__))) lbl_license_source.setAlignment(Qt.AlignHCenter) lbl_license_source.setOpenExternalLinks(True) font = lbl_license_source.font() font.setPointSize(13) lbl_license_source.setFont(font) vbox.addWidget(lbl_license_source) # Buttons hbox = QHBoxLayout() hbox.addSpacerItem(QSpacerItem(0, 0, QSizePolicy.Expanding)) btn_ok = QPushButton(self.tr("Aceptar")) hbox.addWidget(btn_ok) vbox.addLayout(hbox) btn_ok.clicked.connect(self.close)
def __init__(self, parent): super(EditorGeneral, self).__init__() self._preferences, vbox = parent, QVBoxLayout(self) self.original_style = copy.copy(resources.CUSTOM_SCHEME) self.current_scheme, self._modified_editors = 'default', [] self._font = settings.FONT groupBoxMini = QGroupBox( translations.TR_PREFERENCES_EDITOR_GENERAL_MINIMAP) groupBoxTypo = QGroupBox( translations.TR_PREFERENCES_EDITOR_GENERAL_TYPOGRAPHY) groupBoxScheme = QGroupBox( translations.TR_PREFERENCES_EDITOR_GENERAL_SCHEME) #Minimap formMini = QGridLayout(groupBoxMini) formMini.setContentsMargins(5, 15, 5, 5) self._checkShowMinimap = QCheckBox( translations.TR_PREFERENCES_EDITOR_GENERAL_ENABLE_MINIMAP) self._spinMaxOpacity = QSpinBox() self._spinMaxOpacity.setRange(0, 100) self._spinMaxOpacity.setSuffix("% Max.") self._spinMinOpacity = QSpinBox() self._spinMinOpacity.setRange(0, 100) self._spinMinOpacity.setSuffix("% Min.") self._spinSize = QSpinBox() self._spinSize.setMaximum(100) self._spinSize.setMinimum(0) self._spinSize.setSuffix( translations.TR_PREFERENCES_EDITOR_GENERAL_AREA_MINIMAP) formMini.addWidget(self._checkShowMinimap, 0, 1) formMini.addWidget(QLabel( translations.TR_PREFERENCES_EDITOR_GENERAL_SIZE_MINIMAP), 1, 0, Qt.AlignRight) formMini.addWidget(self._spinSize, 1, 1) formMini.addWidget(QLabel( translations.TR_PREFERENCES_EDITOR_GENERAL_OPACITY), 2, 0, Qt.AlignRight) formMini.addWidget(self._spinMinOpacity, 2, 1) formMini.addWidget(self._spinMaxOpacity, 2, 2) #Typo gridTypo = QGridLayout(groupBoxTypo) gridTypo.setContentsMargins(5, 15, 5, 5) self._btnEditorFont = QPushButton('') gridTypo.addWidget(QLabel( translations.TR_PREFERENCES_EDITOR_GENERAL_EDITOR_FONT), 0, 0, Qt.AlignRight) gridTypo.addWidget(self._btnEditorFont, 0, 1) #Scheme vboxScheme = QVBoxLayout(groupBoxScheme) vboxScheme.setContentsMargins(5, 15, 5, 5) self._listScheme = QListWidget() vboxScheme.addWidget(self._listScheme) hbox = QHBoxLayout() btnDownload = QPushButton( translations.TR_PREFERENCES_EDITOR_DOWNLOAD_SCHEME) btnDownload.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) btnDownload.clicked['bool'].connect(self._open_schemes_manager) hbox.addWidget(btnDownload) btnAdd = QPushButton(QIcon(":img/add"), translations.TR_EDITOR_CREATE_SCHEME) btnAdd.setIconSize(QSize(16, 16)) btnAdd.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) btnAdd.clicked['bool'].connect(self._open_schemes_designer) btnRemove = QPushButton(QIcon(":img/delete"), translations.TR_EDITOR_REMOVE_SCHEME) btnRemove.setIconSize(QSize(16, 16)) btnRemove.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) btnRemove.clicked['bool'].connect(self._remove_scheme) hbox.addSpacerItem(QSpacerItem(1, 0, QSizePolicy.Expanding)) hbox.addWidget(btnAdd) hbox.addWidget(btnRemove) vboxScheme.addLayout(hbox) vbox.addWidget(groupBoxMini) vbox.addWidget(groupBoxTypo) vbox.addWidget(groupBoxScheme) #Settings qsettings = IDE.ninja_settings() qsettings.beginGroup('preferences') qsettings.beginGroup('editor') self._checkShowMinimap.setChecked(settings.SHOW_MINIMAP) if settings.IS_MAC_OS: self._spinMinOpacity.setValue(100) self._spinMaxOpacity.setValue(100) self._spinMinOpacity.setDisabled(True) self._spinMaxOpacity.setDisabled(True) else: self._spinMinOpacity.setValue(settings.MINIMAP_MIN_OPACITY * 100) self._spinMaxOpacity.setValue(settings.MINIMAP_MAX_OPACITY * 100) self._spinSize.setValue(settings.SIZE_PROPORTION * 100) btnText = ', '.join(self._font.toString().split(',')[0:2]) self._btnEditorFont.setText(btnText) self._listScheme.clear() self._listScheme.addItem('default') self._schemes = json_manager.load_editor_skins() for item in self._schemes: self._listScheme.addItem(item) items = self._listScheme.findItems( qsettings.value('scheme', defaultValue='', type='QString'), Qt.MatchExactly) if items: self._listScheme.setCurrentItem(items[0]) else: self._listScheme.setCurrentRow(0) qsettings.endGroup() qsettings.endGroup() #Signals self._btnEditorFont.clicked['bool'].connect(self._load_editor_font) self._listScheme.itemSelectionChanged.connect(self._preview_style) self._preferences.savePreferences.connect(self.save)
def __init__(self, start_server=False): super(IDE, self).__init__() self.setWindowTitle('NINJA-IDE {Ninja-IDE Is Not Just Another IDE}') self.setMinimumSize(750, 500) QToolTip.setFont(QFont(settings.FONT.family(), 10)) #Load the size and the position of the main window self.load_window_geometry() self.__project_to_open = 0 IDE.__instance = self wid = QWidget()#adjustSize wid.setContentsMargins(0, 0, 0, 0) box = QHBoxLayout(wid) box.setContentsMargins(0, 0, 0, 0) # l1 = QLabel("Info Here") # l1.setObjectName("Info") # l1.setStyleSheet("background-color: rgb(88, 255, 85);") # box.addWidget(l1) space = QSpacerItem(10,10, QSizePolicy.Expanding)#, QSizePolicy.Maximum) box.addSpacerItem(space) l2 = QLabel("Tab Size: "+str(settings.INDENT))#int(qsettings.value('preferences/editor/indent', 4, type=int)))) l2.setObjectName("Det1") font = l2.font() font.setPointSize(8) l2.setFont(font) box.addWidget(l2) box.addSpacing(50) l3 = QLabel("Python") l3.setObjectName("Det2") font.setPointSize(9) l3.setFont(font) box.addWidget(l3) box.addSpacing(30) status = self.statusBar() status.setMaximumHeight(20) status.addPermanentWidget(wid) # wid.show() # self.__wid = wid status.reformat() status.showMessage("Info Here") status.setStyleSheet("background-color: rgb(85, 85, 85);") #Editables self.__neditables = {} #Filesystem self.filesystem = nfilesystem.NVirtualFileSystem() #Sessions handler self._session = None #Opacity self.opacity = settings.MAX_OPACITY #ToolBar self.toolbar = QToolBar(self) if settings.IS_MAC_OS: self.toolbar.setIconSize(QSize(36, 36)) else: self.toolbar.setIconSize(QSize(24, 24)) self.toolbar.setToolTip(translations.TR_IDE_TOOLBAR_TOOLTIP) self.toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly) # Set toggleViewAction text and tooltip self.toggleView = self.toolbar.toggleViewAction() self.toggleView.setText(translations.TR_TOOLBAR_VISIBILITY) self.toggleView.setToolTip(translations.TR_TOOLBAR_VISIBILITY) self.addToolBar(settings.TOOLBAR_AREA, self.toolbar) if settings.HIDE_TOOLBAR: self.toolbar.hide() #Notificator self.notification = notification.Notification(self) self.statusBar().messageChanged[str].connect(self.MessageStatusChanged.emit) #Plugin Manager # CHECK ACTIVATE PLUGINS SETTING #services = { #'editor': plugin_services.MainService(), #'toolbar': plugin_services.ToolbarService(self.toolbar), ##'menuApp': plugin_services.MenuAppService(self.pluginsMenu), #'menuApp': plugin_services.MenuAppService(None), #'explorer': plugin_services.ExplorerService(), #'misc': plugin_services.MiscContainerService(self.misc)} #serviceLocator = plugin_manager.ServiceLocator(services) serviceLocator = plugin_manager.ServiceLocator(None) self.plugin_manager = plugin_manager.PluginManager(resources.PLUGINS, serviceLocator) self.plugin_manager.discover() #load all plugins! self.plugin_manager.load_all() #Tray Icon self.trayIcon = updates.TrayIconUpdates(self) self.trayIcon.closeTrayIcon.connect(self._close_tray_icon) self.trayIcon.show() key = Qt.Key_1 for i in range(10): if settings.IS_MAC_OS: short = ui_tools.TabShortcuts( QKeySequence(Qt.CTRL + Qt.ALT + key), self, i) else: short = ui_tools.TabShortcuts( QKeySequence(Qt.ALT + key), self, i) key += 1 short.activated.connect(self._change_tab_index) short = ui_tools.TabShortcuts(QKeySequence(Qt.ALT + Qt.Key_0), self, 10) short.activated.connect(self._change_tab_index) # Register menu categories IDE.register_bar_category(translations.TR_MENU_FILE, 100) IDE.register_bar_category(translations.TR_MENU_EDIT, 110) IDE.register_bar_category(translations.TR_MENU_VIEW, 120) IDE.register_bar_category(translations.TR_MENU_SOURCE, 130) IDE.register_bar_category(translations.TR_MENU_PROJECT, 140) IDE.register_bar_category(translations.TR_MENU_EXTENSIONS, 150) IDE.register_bar_category(translations.TR_MENU_ABOUT, 160) # Register General Menu Items ui_tools.install_shortcuts(self, actions.ACTIONS_GENERAL, self) self.register_service('ide', self) self.register_service('toolbar', self.toolbar) self.register_service('filesystem', self.filesystem) #Register signals connections connections = ( {'target': 'main_container', 'signal_name': 'fileSaved',#(QString) 'slot': self.show_message}, {'target': 'main_container', 'signal_name': 'currentEditorChanged',#(QString) 'slot': self.change_window_title}, {'target': 'main_container', 'signal_name': 'openPreferences',#() 'slot': self.show_preferences}, {'target': 'main_container', 'signal_name': 'allTabsClosed',#() 'slot': self._last_tab_closed}, {'target': 'explorer_container', 'signal_name': 'changeWindowTitle',#(QString) 'slot': self.change_window_title}, {'target': 'explorer_container', 'signal_name': 'projectClosed',#(QString) 'slot': self.close_project}, ) self.register_signals('ide', connections) # Central Widget MUST always exists self.central = IDE.get_service('central_container') print("self.central:", self.central) self.setCentralWidget(self.central) # Install Services for service_name in self.__IDESERVICES: self.install_service(service_name) IDE.__created = True # Place Status Bar main_container = IDE.get_service('main_container') status_bar = IDE.get_service('status_bar') main_container.add_status_bar(status_bar) # Load Menu Bar menu_bar = IDE.get_service('menu_bar') if menu_bar: menu_bar.load_menu(self) #These two are the same service, I think that's ok menu_bar.load_toolbar(self) #Start server if needed self.s_listener = None if start_server: self.s_listener = QLocalServer() self.s_listener.listen("ninja_ide") self.s_listener.newConnection.connect(self._process_connection)
def __init__(self, *args, **kwargs): super(ShortcutManagerDlg, self).__init__(*args, **kwargs) self.setWindowTitle("Shortcut Preferences") self.setMinimumWidth(500) self.setMinimumHeight(500) mgr = ShortcutManager() # Singleton scrollWidget = QWidget(parent=self) tempLayout = QVBoxLayout(scrollWidget) scrollWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) treeWidget = QTreeWidget(parent=scrollWidget) treeWidget.setHeaderLabels(["Action", "Shortcut"]) treeWidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) treeWidget.setColumnWidth(0, 300) treeWidget.setColumnWidth(1, 50) action_descriptions = mgr.get_all_action_descriptions() target_keyseqs = mgr.get_keyseq_reversemap() # Create a LineEdit for each shortcut, # and keep track of them in a dict shortcutEdits = collections.OrderedDict() for group, targets in list(action_descriptions.items()): groupItem = QTreeWidgetItem(treeWidget, [group]) for (name, description) in targets: edit = QLineEdit(target_keyseqs[(group, name)]) shortcutEdits[(group, name)] = edit item = QTreeWidgetItem(groupItem, [description]) item.setText(0, description) treeWidget.setItemWidget(item, 1, edit) tempLayout.addWidget(treeWidget) # Add ok and cancel buttons buttonLayout = QHBoxLayout() cancelButton = QPushButton("Cancel") cancelButton.clicked.connect(self.reject) okButton = QPushButton("OK") okButton.clicked.connect(self.accept) okButton.setDefault(True) buttonLayout.addSpacerItem(QSpacerItem(10, 0, QSizePolicy.Expanding)) buttonLayout.addWidget(cancelButton) buttonLayout.addWidget(okButton) tempLayout.addLayout(buttonLayout) scroll = QScrollArea(parent=self) scroll.setWidget(scrollWidget) scroll.setWidgetResizable(True) scroll.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) dlgLayout = QVBoxLayout() dlgLayout.addWidget(scroll) self.setLayout(dlgLayout) # Show the window result = self.exec_() # Did the user hit 'cancel'? if result != QDialog.Accepted: return for (group, name), edit in list(shortcutEdits.items()): oldKey = target_keyseqs[(group, name)] newKey = str(edit.text()) if oldKey.lower() != newKey.lower() and newKey != "": mgr.change_keyseq(group, name, oldKey, newKey) mgr.store_to_preferences()
def control_layout( label_text, widget ): row_layout = QHBoxLayout() row_layout.addWidget( QLabel(label_text) ) row_layout.addSpacerItem( QSpacerItem(10, 0, QSizePolicy.Expanding) ) row_layout.addWidget(widget) return row_layout