def create_toolbar_button(text, parent=None, icon_name=None, icon_size=22, enabled=True, checkable=False, checked=False, shortcut=None, onclick=None): # RJLRJL modified to work with PyQt5 if icon_name: button = QtWidgets.QAction(get_icon(icon_name, size=icon_size), gettext(text), parent) else: button = QtWidgets.QAction(gettext(text), parent) if checkable: button.setCheckable(True) button.setChecked(checked) if not enabled: button.setEnabled(False) if shortcut: button.setShortcut(shortcut) show_shortcut_hint(button) if onclick: if checkable: button.toggled[bool].connect(onclick) else: button.triggered.connect(onclick) return button
def create_refresh_action(self, allow_refresh=True): action = QtWidgets.QAction(get_icon("view-refresh"), gettext("&Refresh"), self) action.setShortcut("Ctrl+R") show_shortcut_hint(action) action.triggered[bool].connect(self.click_refresh) action.setEnabled(allow_refresh) return action
def create_find_action(self): action = QtWidgets.QAction(get_icon("edit-find"), gettext("&Find"), self) action.setShortcut(QtGui.QKeySequence.Find) action.setToolTip(gettext("Find on active panel")) show_shortcut_hint(action) action.setCheckable(True) return action
def create_main_toolbar(self, allow_refresh=True): toolbar = self.addToolBar(gettext("Diff")) toolbar.setMovable (False) toolbar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon) self.show_find = self.create_find_action() toolbar.addAction(self.show_find) toolbar.addAction(self.create_toggle_view_mode()) self.view_refresh = self.create_refresh_action(allow_refresh) if allow_refresh: toolbar.addAction(self.view_refresh) if has_ext_diff(): show_ext_diff_menu = self.create_ext_diff_action() toolbar.addAction(show_ext_diff_menu) widget = toolbar.widgetForAction(show_ext_diff_menu) widget.setPopupMode(QtWidgets.QToolButton.InstantPopup) widget.setShortcut("Alt+E") show_shortcut_hint(widget) show_view_menu = self.create_view_menu() toolbar.addAction(show_view_menu) widget = toolbar.widgetForAction(show_view_menu) widget.setPopupMode(QtWidgets.QToolButton.InstantPopup) widget.setShortcut("Alt+V") show_shortcut_hint(widget) spacer = QtWidgets.QWidget() spacer.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) toolbar.addWidget(spacer) self.throbber = ToolBarThrobberWidget(self) toolbar.addWidget(self.throbber) return toolbar
def create_toggle_view_mode(self): action = QtWidgets.QAction(get_icon("view-split-left-right"), gettext("Unidiff"), self) action.setToolTip(gettext("Toggle between Side by side and Unidiff view modes")) action.setShortcut("Ctrl+U") show_shortcut_hint(action) action.setCheckable(True) action.setChecked(False); action.toggled[bool].connect(self.click_toggle_view_mode) return action
def __init__(self, window, text_edit, show_action): QtWidgets.QToolBar.__init__(self, gettext("Find"), window) self.text_edits = [] if isinstance(text_edit, list) or isinstance(text_edit, tuple): self.set_text_edits(text_edit) else: self.set_text_edits([text_edit]) self.show_action = show_action self.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon) self.setMovable(False) find_label = QtWidgets.QLabel(gettext("Find: "), self) self.addWidget(find_label) self.find_text = QtWidgets.QLineEdit(self) self.addWidget(self.find_text) find_label.setBuddy(self.find_text) self.found_palette = QtGui.QPalette() self.not_found_palette = QtGui.QPalette() self.not_found_palette.setColor(QtGui.QPalette.Active, QtGui.QPalette.Base, QtCore.Qt.red) self.not_found_palette.setColor(QtGui.QPalette.Active, QtGui.QPalette.Text, QtCore.Qt.white) prev = self.addAction(get_icon("go-previous"), gettext("Previous")) prev.setShortcut(QtGui.QKeySequence.FindPrevious) show_shortcut_hint(prev) next = self.addAction(get_icon("go-next"), gettext("Next")) next.setShortcut(QtGui.QKeySequence.FindNext) show_shortcut_hint(next) self.case_sensitive = QtWidgets.QCheckBox(gettext("Case sensitive"), self) self.addWidget(self.case_sensitive) self.whole_words = QtWidgets.QCheckBox(gettext("Whole words"), self) self.addWidget(self.whole_words) close_find = QtWidgets.QAction(self) close_find.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_DialogCloseButton)) self.addAction(close_find) close_find.setShortcut((QtCore.Qt.Key_Escape)) close_find.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut) close_find.setStatusTip(gettext("Close find")) self.show_action.toggled[bool].connect(self.show_action_toggle) close_find.triggered[bool].connect(self.close_triggered) self.find_text.textChanged['QString'].connect(self.find_text_changed) next.triggered[bool].connect(self.find_next) prev.triggered[bool].connect(self.find_prev) self.case_sensitive.stateChanged[int].connect(self.find_text_changed) self.whole_words.stateChanged[int].connect(self.find_text_changed) self.find_text.returnPressed.connect(self.find_next)
def add_toolbar_menu(self, text, menu, icon_name=None, icon_size=0, enabled=True, shortcut=None): button = self.add_toolbar_button(text, icon_name=icon_name, icon_size=icon_size or self.icon_size, enabled=enabled, menu=menu) widget = self.toolbar.widgetForAction(button) widget.setPopupMode(QtWidgets.QToolButton.InstantPopup) if shortcut: widget.setShortcut(shortcut) show_shortcut_hint(widget) return button