def setup_ui(self): self.l = l = QGridLayout(self) self.setLayout(l) self.bb.setStandardButtons(self.bb.Close) self.rearrange_button = b = self.bb.addButton( _('Re-arrange favorites'), self.bb.ActionRole) b.setCheckable(True) b.setChecked(False) b.setVisible(False) b.setDefault(True) self.splitter = s = QSplitter(self) s.setFocusPolicy(Qt.NoFocus) s.setChildrenCollapsible(False) self.search = h = HistoryLineEdit2(self) h.setToolTip( textwrap.fill( _('Search for unicode characters by using the English names or nicknames.' ' You can also search directly using a character code. For example, the following' ' searches will all yield the no-break space character: U+A0, nbsp, no-break' ))) h.initialize('charmap_search') h.setPlaceholderText(_('Search by name, nickname or character code')) self.search_button = b = QPushButton(_('&Search')) b.setFocusPolicy(Qt.NoFocus) h.returnPressed.connect(self.do_search) b.clicked.connect(self.do_search) self.clear_button = cb = QToolButton(self) cb.setIcon(QIcon(I('clear_left.png'))) cb.setFocusPolicy(Qt.NoFocus) cb.setText(_('Clear search')) cb.clicked.connect(self.clear_search) l.addWidget(h), l.addWidget(b, 0, 1), l.addWidget(cb, 0, 2) self.category_view = CategoryView(self) self.category_view.setFocusPolicy(Qt.NoFocus) l.addWidget(s, 1, 0, 1, 3) self.char_view = CharView(self) self.char_view.setFocusPolicy(Qt.NoFocus) self.rearrange_button.toggled[bool].connect( self.set_allow_drag_and_drop) self.category_view.category_selected.connect(self.show_chars) self.char_view.show_name.connect(self.show_char_info) self.char_view.char_selected.connect(self.char_selected) s.addWidget(self.category_view), s.addWidget(self.char_view) self.char_info = la = QLabel('\xa0') la.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) l.addWidget(la, 2, 0, 1, 3) self.rearrange_msg = la = QLabel( _('Drag and drop characters to re-arrange them. Click the re-arrange button again when you are done.' )) la.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) la.setVisible(False) l.addWidget(la, 3, 0, 1, 3) l.addWidget(self.bb, 4, 0, 1, 3) self.char_view.setFocus(Qt.OtherFocusReason)
def __init__(self, parent=None): QWidget.__init__(self, parent) self.l = l = QVBoxLayout() self.setLayout(l) l.setContentsMargins(0, 0, 0, 0) self.view = WebView(self) self.view._page.bridge.request_sync.connect(self.request_sync) self.view._page.bridge.request_split.connect(self.request_split) self.view._page.bridge.live_css_data.connect(self.live_css_data) self.view._page.loadFinished.connect(self.load_finished) self.view.render_process_restarted.connect( self.render_process_restarted) self.pending_go_to_anchor = None self.inspector = self.view.inspector l.addWidget(self.view) self.bar = QToolBar(self) l.addWidget(self.bar) ac = actions['auto-reload-preview'] ac.setCheckable(True) ac.setChecked(True) ac.toggled.connect(self.auto_reload_toggled) self.auto_reload_toggled(ac.isChecked()) self.bar.addAction(ac) ac = actions['sync-preview-to-editor'] ac.setCheckable(True) ac.setChecked(True) ac.toggled.connect(self.sync_toggled) self.sync_toggled(ac.isChecked()) self.bar.addAction(ac) self.bar.addSeparator() ac = actions['split-in-preview'] ac.setCheckable(True) ac.setChecked(False) ac.toggled.connect(self.split_toggled) self.split_toggled(ac.isChecked()) self.bar.addAction(ac) ac = actions['reload-preview'] ac.triggered.connect(self.refresh) self.bar.addAction(ac) actions['preview-dock'].toggled.connect(self.visibility_changed) self.current_name = None self.last_sync_request = None self.refresh_timer = QTimer(self) self.refresh_timer.timeout.connect(self.refresh) parse_worker.start() self.current_sync_request = None self.search = HistoryLineEdit2(self) self.search.initialize('tweak_book_preview_search') self.search.setPlaceholderText(_('Search in preview')) self.search.returnPressed.connect(self.find_next) self.bar.addSeparator() self.bar.addWidget(self.search) for d in ('next', 'prev'): ac = actions['find-%s-preview' % d] ac.triggered.connect(getattr(self, 'find_' + d)) self.bar.addAction(ac)
def __init__(self, parent, clear_msg): HistoryLineEdit2.__init__(self, parent) self.disable_popup = tprefs['disable_completion_popup_for_search'] self.clear_msg = clear_msg
def setup_ui(self): self.setWindowIcon(QIcon(I('diff.png'))) self.stacks = st = QStackedLayout(self) self.busy = BusyWidget(self) self.w = QWidget(self) st.addWidget(self.busy), st.addWidget(self.w) self.setLayout(st) self.l = l = QGridLayout() self.w.setLayout(l) self.view = v = DiffView(self, show_open_in_editor=self.show_open_in_editor) l.addWidget(v, l.rowCount(), 0, 1, -1) r = l.rowCount() self.bp = b = QToolButton(self) b.setIcon(QIcon(I('back.png'))) b.clicked.connect(partial(self.view.next_change, -1)) b.setToolTip(_('Go to previous change') + ' [p]') b.setText(_('&Previous change')), b.setToolButtonStyle( Qt.ToolButtonTextBesideIcon) l.addWidget(b, r, 0) self.bn = b = QToolButton(self) b.setIcon(QIcon(I('forward.png'))) b.clicked.connect(partial(self.view.next_change, 1)) b.setToolTip(_('Go to next change') + ' [n]') b.setText(_('&Next change')), b.setToolButtonStyle( Qt.ToolButtonTextBesideIcon) l.addWidget(b, r, 1) self.search = s = HistoryLineEdit2(self) s.initialize('diff_search_history') l.addWidget(s, r, 2) s.setPlaceholderText(_('Search for text')) s.returnPressed.connect(partial(self.do_search, False)) self.sbn = b = QToolButton(self) b.setIcon(QIcon(I('arrow-down.png'))) b.clicked.connect(partial(self.do_search, False)) b.setToolTip(_('Find next match')) b.setText(_('Next &match')), b.setToolButtonStyle( Qt.ToolButtonTextBesideIcon) l.addWidget(b, r, 3) self.sbp = b = QToolButton(self) b.setIcon(QIcon(I('arrow-up.png'))) b.clicked.connect(partial(self.do_search, True)) b.setToolTip(_('Find previous match')) b.setText(_('P&revious match')), b.setToolButtonStyle( Qt.ToolButtonTextBesideIcon) l.addWidget(b, r, 4) self.lb = b = QRadioButton(_('Left panel'), self) b.setToolTip(_('Perform search in the left panel')) l.addWidget(b, r, 5) self.rb = b = QRadioButton(_('Right panel'), self) b.setToolTip(_('Perform search in the right panel')) l.addWidget(b, r, 6) b.setChecked(True) self.pb = b = QToolButton(self) b.setIcon(QIcon(I('config.png'))) b.setText(_('&Options')), b.setToolButtonStyle( Qt.ToolButtonTextBesideIcon) b.setToolTip(_('Change how the differences are displayed')) b.setPopupMode(b.InstantPopup) m = QMenu(b) b.setMenu(m) cm = self.cm = QMenu(_('Lines of context around each change')) for i in (3, 5, 10, 50): cm.addAction( _('Show %d lines of context') % i, partial(self.change_context, i)) cm.addAction(_('Show all text'), partial(self.change_context, None)) self.beautify_action = m.addAction('', self.toggle_beautify) self.set_beautify_action_text() m.addMenu(cm) l.addWidget(b, r, 7) self.hl = QHBoxLayout() l.addLayout(self.hl, l.rowCount(), 0, 1, -1) self.names = QLabel('') self.hl.addWidget(self.names, r) self.bb.setStandardButtons(self.bb.Close) if self.revert_button_msg is not None: self.rvb = b = self.bb.addButton(self.revert_button_msg, self.bb.ActionRole) b.setIcon(QIcon(I('edit-undo.png'))), b.setAutoDefault(False) b.clicked.connect(self.revert_requested) b.clicked.connect(self.reject) self.bb.button(self.bb.Close).setDefault(True) self.hl.addWidget(self.bb, r) self.view.setFocus(Qt.OtherFocusReason)
def __init__(self, parent=None): QWidget.__init__(self, parent) self.l = l = QVBoxLayout() self.setLayout(l) l.setContentsMargins(0, 0, 0, 0) self.stack = QStackedLayout(l) self.stack.setStackingMode(self.stack.StackAll) self.current_sync_retry_count = 0 self.view = WebView(self) self.view._page.bridge.request_sync.connect(self.request_sync) self.view._page.bridge.request_split.connect(self.request_split) self.view._page.bridge.live_css_data.connect(self.live_css_data) self.view._page.bridge.bridge_ready.connect(self.on_bridge_ready) self.view._page.loadFinished.connect(self.load_finished) self.view._page.loadStarted.connect(self.load_started) self.view.render_process_restarted.connect(self.render_process_restarted) self.pending_go_to_anchor = None self.inspector = self.view.inspector self.stack.addWidget(self.view) self.cover = c = QLabel(_('Loading preview, please wait...')) c.setWordWrap(True) c.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) c.setStyleSheet('QLabel { background-color: palette(window); }') c.setAlignment(Qt.AlignmentFlag.AlignCenter) self.stack.addWidget(self.cover) self.stack.setCurrentIndex(self.stack.indexOf(self.cover)) self.bar = QToolBar(self) l.addWidget(self.bar) ac = actions['auto-reload-preview'] ac.setCheckable(True) ac.setChecked(True) ac.toggled.connect(self.auto_reload_toggled) self.auto_reload_toggled(ac.isChecked()) self.bar.addAction(ac) ac = actions['sync-preview-to-editor'] ac.setCheckable(True) ac.setChecked(True) ac.toggled.connect(self.sync_toggled) self.sync_toggled(ac.isChecked()) self.bar.addAction(ac) self.bar.addSeparator() ac = actions['split-in-preview'] ac.setCheckable(True) ac.setChecked(False) ac.toggled.connect(self.split_toggled) self.split_toggled(ac.isChecked()) self.bar.addAction(ac) ac = actions['reload-preview'] ac.triggered.connect(self.refresh) self.bar.addAction(ac) actions['preview-dock'].toggled.connect(self.visibility_changed) self.current_name = None self.last_sync_request = None self.refresh_timer = QTimer(self) self.refresh_timer.timeout.connect(self.refresh) parse_worker.start() self.current_sync_request = None self.search = HistoryLineEdit2(self) self.search.initialize('tweak_book_preview_search') self.search.setPlaceholderText(_('Search in preview')) self.search.returnPressed.connect(self.find_next) self.bar.addSeparator() self.bar.addWidget(self.search) for d in ('next', 'prev'): ac = actions['find-%s-preview' % d] ac.triggered.connect(getattr(self, 'find_' + d)) self.bar.addAction(ac)
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(872, 610) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(I("store.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) Dialog.setWindowIcon(icon) Dialog.setSizeGripEnabled(True) self.gridLayout = QtWidgets.QGridLayout(Dialog) self.gridLayout.setObjectName("gridLayout") self.search_title = HistoryLineEdit2(Dialog) self.search_title.setClearButtonEnabled(True) self.search_title.setObjectName("search_title") self.gridLayout.addWidget(self.search_title, 0, 2, 1, 1) self.label_3 = QtWidgets.QLabel(Dialog) self.label_3.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 1, 0, 1, 2) self.search_author = HistoryLineEdit2(Dialog) self.search_author.setClearButtonEnabled(True) self.search_author.setObjectName("search_author") self.gridLayout.addWidget(self.search_author, 1, 2, 1, 1) self.adv_search_button = QtWidgets.QToolButton(Dialog) self.adv_search_button.setObjectName("adv_search_button") self.gridLayout.addWidget(self.adv_search_button, 2, 0, 1, 1) self.label = QtWidgets.QLabel(Dialog) self.label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 2, 1, 1, 1) self.search_edit = HistoryLineEdit2(Dialog) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.search_edit.sizePolicy().hasHeightForWidth()) self.search_edit.setSizePolicy(sizePolicy) self.search_edit.setClearButtonEnabled(True) self.search_edit.setObjectName("search_edit") self.gridLayout.addWidget(self.search_edit, 2, 2, 1, 1) self.store_splitter = QtWidgets.QSplitter(Dialog) self.store_splitter.setOrientation(QtCore.Qt.Horizontal) self.store_splitter.setObjectName("store_splitter") self.groupBox = QtWidgets.QGroupBox(self.store_splitter) self.groupBox.setObjectName("groupBox") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setSpacing(0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.store_list = QtWidgets.QScrollArea(self.groupBox) self.store_list.setWidgetResizable(True) self.store_list.setObjectName("store_list") self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 205, 147)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.store_list.setWidget(self.scrollAreaWidgetContents) self.verticalLayout_2.addWidget(self.store_list) self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setSpacing(0) self.verticalLayout.setObjectName("verticalLayout") self.select_all_stores = QtWidgets.QPushButton(self.groupBox) self.select_all_stores.setObjectName("select_all_stores") self.verticalLayout.addWidget(self.select_all_stores) self.select_invert_stores = QtWidgets.QPushButton(self.groupBox) self.select_invert_stores.setObjectName("select_invert_stores") self.verticalLayout.addWidget(self.select_invert_stores) self.select_none_stores = QtWidgets.QPushButton(self.groupBox) self.select_none_stores.setObjectName("select_none_stores") self.verticalLayout.addWidget(self.select_none_stores) self.verticalLayout_2.addLayout(self.verticalLayout) self.verticalLayoutWidget = QtWidgets.QWidget(self.store_splitter) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout_4 = QtWidgets.QVBoxLayout( self.verticalLayoutWidget) self.verticalLayout_4.setContentsMargins(0, 0, 0, 0) self.verticalLayout_4.setObjectName("verticalLayout_4") self.results_view = ResultsView(self.verticalLayoutWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.results_view.sizePolicy().hasHeightForWidth()) self.results_view.setSizePolicy(sizePolicy) self.results_view.setMinimumSize(QtCore.QSize(0, 0)) self.results_view.setAlternatingRowColors(True) self.results_view.setIconSize(QtCore.QSize(32, 32)) self.results_view.setRootIsDecorated(False) self.results_view.setUniformRowHeights(False) self.results_view.setItemsExpandable(False) self.results_view.setSortingEnabled(True) self.results_view.setExpandsOnDoubleClick(False) self.results_view.setObjectName("results_view") self.results_view.header().setStretchLastSection(False) self.verticalLayout_4.addWidget(self.results_view) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.configure = QtWidgets.QToolButton(self.verticalLayoutWidget) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(I("config.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.configure.setIcon(icon1) self.configure.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon) self.configure.setObjectName("configure") self.horizontalLayout.addWidget(self.configure) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.open_external = QtWidgets.QCheckBox(self.verticalLayoutWidget) self.open_external.setObjectName("open_external") self.horizontalLayout.addWidget(self.open_external) self.verticalLayout_4.addLayout(self.horizontalLayout) self.gridLayout.addWidget(self.store_splitter, 3, 0, 1, 4) self.label_4 = QtWidgets.QLabel(Dialog) self.label_4.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.label_4.setObjectName("label_4") self.gridLayout.addWidget(self.label_4, 0, 1, 1, 1) self.button_layout = QtWidgets.QVBoxLayout() self.button_layout.setObjectName("button_layout") self.widget = QtWidgets.QWidget(Dialog) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.widget.sizePolicy().hasHeightForWidth()) self.widget.setSizePolicy(sizePolicy) self.widget.setBaseSize(QtCore.QSize(24, 24)) self.widget.setObjectName("widget") self.button_layout.addWidget(self.widget) self.search = QtWidgets.QPushButton(Dialog) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(I("search.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.search.setIcon(icon2) self.search.setObjectName("search") self.button_layout.addWidget(self.search) self.gridLayout.addLayout(self.button_layout, 0, 3, 3, 1) self.bottom_layout = QtWidgets.QHBoxLayout() self.bottom_layout.setObjectName("bottom_layout") self.label_2 = QtWidgets.QLabel(Dialog) self.label_2.setObjectName("label_2") self.bottom_layout.addWidget(self.label_2) self.total = QtWidgets.QLabel(Dialog) self.total.setObjectName("total") self.bottom_layout.addWidget(self.total) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.bottom_layout.addItem(spacerItem1) self.close = QtWidgets.QPushButton(Dialog) self.close.setObjectName("close") self.bottom_layout.addWidget(self.close) self.gridLayout.addLayout(self.bottom_layout, 4, 0, 1, 4) self.label_3.setBuddy(self.search_author) self.label.setBuddy(self.search_edit) self.label_4.setBuddy(self.search_title) self.retranslateUi(Dialog) self.close.clicked.connect(Dialog.accept) QtCore.QMetaObject.connectSlotsByName(Dialog) Dialog.setTabOrder(self.search_title, self.search_author) Dialog.setTabOrder(self.search_author, self.adv_search_button) Dialog.setTabOrder(self.adv_search_button, self.search_edit) Dialog.setTabOrder(self.search_edit, self.search) Dialog.setTabOrder(self.search, self.store_list) Dialog.setTabOrder(self.store_list, self.select_all_stores) Dialog.setTabOrder(self.select_all_stores, self.select_invert_stores) Dialog.setTabOrder(self.select_invert_stores, self.select_none_stores) Dialog.setTabOrder(self.select_none_stores, self.results_view) Dialog.setTabOrder(self.results_view, self.configure) Dialog.setTabOrder(self.configure, self.open_external) Dialog.setTabOrder(self.open_external, self.close)
def setup_ui(self): self.l = l = QGridLayout(self) self.setLayout(l) self.bb.setStandardButtons(QDialogButtonBox.StandardButton.Close) self.rearrange_button = b = self.bb.addButton( _('Re-arrange favorites'), QDialogButtonBox.ButtonRole.ActionRole) b.setCheckable(True) b.setChecked(False) b.setVisible(False) b.setDefault(True) self.splitter = s = QSplitter(self) s.setFocusPolicy(Qt.FocusPolicy.NoFocus) s.setChildrenCollapsible(False) self.search = h = HistoryLineEdit2(self) h.setToolTip( textwrap.fill( _('Search for Unicode characters by using the English names or nicknames.' ' You can also search directly using a character code. For example, the following' ' searches will all yield the no-break space character: U+A0, nbsp, no-break' ))) h.initialize('charmap_search') h.setPlaceholderText(_('Search by name, nickname or character code')) self.search_button = b = QPushButton(_('&Search')) b.setFocusPolicy(Qt.FocusPolicy.NoFocus) h.returnPressed.connect(self.do_search) b.clicked.connect(self.do_search) self.clear_button = cb = QToolButton(self) cb.setIcon(QIcon(I('clear_left.png'))) cb.setFocusPolicy(Qt.FocusPolicy.NoFocus) cb.setText(_('Clear search')) cb.clicked.connect(self.clear_search) l.addWidget(h), l.addWidget(b, 0, 1), l.addWidget(cb, 0, 2) self.category_view = CategoryView(self) self.category_view.setFocusPolicy(Qt.FocusPolicy.NoFocus) l.addWidget(s, 1, 0, 1, 3) self.char_view = CharView(self) self.char_view.setFocusPolicy(Qt.FocusPolicy.NoFocus) self.rearrange_button.toggled[bool].connect( self.set_allow_drag_and_drop) self.category_view.category_selected.connect(self.show_chars) self.char_view.show_name.connect(self.show_char_info) self.char_view.char_selected.connect(self.char_selected) s.addWidget(self.category_view), s.addWidget(self.char_view) self.char_info = la = QLabel('\xa0') la.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) l.addWidget(la, 2, 0, 1, 3) self.rearrange_msg = la = QLabel( _('Drag and drop characters to re-arrange them. Click the "Re-arrange" button again when you are done.' )) la.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) la.setVisible(False) l.addWidget(la, 3, 0, 1, 3) self.h = h = QHBoxLayout() h.setContentsMargins(0, 0, 0, 0) self.match_any = mm = QCheckBox(_('Match any word')) mm.setToolTip( _('When searching return characters whose names match any of the specified words' )) mm.setChecked(tprefs.get('char_select_match_any', True)) connect_lambda( mm.stateChanged, self, lambda self: tprefs.set( 'char_select_match_any', self.match_any.isChecked())) h.addWidget(mm), h.addStretch(), h.addWidget(self.bb) l.addLayout(h, 4, 0, 1, 3) self.char_view.setFocus(Qt.FocusReason.OtherFocusReason)
def __init__(self, parent=None): QWidget.__init__(self, parent) self.l = l = QGridLayout(self) l.setContentsMargins(0, 0, 0, 0) self.setLayout(l) self.fl = fl = QLabel(_('&Find:')) fl.setAlignment(Qt.AlignRight | Qt.AlignCenter) self.find_text = ft = HistoryLineEdit2(self) ft.initialize('tweak_book_find_edit') ft.returnPressed.connect(lambda: self.search_triggered.emit('find')) fl.setBuddy(ft) l.addWidget(fl, 0, 0) l.addWidget(ft, 0, 1) self.rl = rl = QLabel(_('&Replace:')) rl.setAlignment(Qt.AlignRight | Qt.AlignCenter) self.replace_text = rt = HistoryLineEdit2(self) rt.initialize('tweak_book_replace_edit') rl.setBuddy(rt) l.addWidget(rl, 1, 0) l.addWidget(rt, 1, 1) l.setColumnStretch(1, 10) self.fb = fb = PushButton(_('&Find'), 'find', self) self.rfb = rfb = PushButton(_('Replace a&nd Find'), 'replace-find', self) self.rb = rb = PushButton(_('&Replace'), 'replace', self) self.rab = rab = PushButton(_('Replace &all'), 'replace-all', self) l.addWidget(fb, 0, 2) l.addWidget(rfb, 0, 3) l.addWidget(rb, 1, 2) l.addWidget(rab, 1, 3) self.ml = ml = QLabel(_('&Mode:')) self.ol = ol = QHBoxLayout() ml.setAlignment(Qt.AlignRight | Qt.AlignCenter) l.addWidget(ml, 2, 0) l.addLayout(ol, 2, 1, 1, 3) self.mode_box = mb = QComboBox(self) mb.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) mb.addItems([_('Normal'), _('Regex')]) mb.setToolTip('<style>dd {margin-bottom: 1.5ex}</style>' + _('''Select how the search expression is interpreted <dl> <dt><b>Normal</b></dt> <dd>The search expression is treated as normal text, calibre will look for the exact text.</dd> <dt><b>Regex</b></dt> <dd>The search expression is interpreted as a regular expression. See the User Manual for more help on using regular expressions.</dd> </dl>''')) ml.setBuddy(mb) ol.addWidget(mb) self.where_box = wb = QComboBox(self) wb.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) wb.addItems([ _('Current file'), _('All text files'), _('All style files'), _('Selected files'), _('Marked text') ]) wb.setToolTip('<style>dd {margin-bottom: 1.5ex}</style>' + _(''' Where to search/replace: <dl> <dt><b>Current file</b></dt> <dd>Search only inside the currently opened file</dd> <dt><b>All text files</b></dt> <dd>Search in all text (HTML) files</dd> <dt><b>All style files</b></dt> <dd>Search in all style (CSS) files</dd> <dt><b>Selected files</b></dt> <dd>Search in the files currently selected in the Files Browser</dd> <dt><b>Marked text</b></dt> <dd>Search only within the marked text in the currently opened file. You can mark text using the Search menu.</dd> </dl>''')) ol.addWidget(wb) self.direction_box = db = QComboBox(self) db.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) db.addItems([_('Down'), _('Up')]) db.setToolTip('<style>dd {margin-bottom: 1.5ex}</style>' + _(''' Direction to search: <dl> <dt><b>Down</b></dt> <dd>Search for the next match from your current position</dd> <dt><b>Up</b></dt> <dd>Search for the previous match from your current position</dd> </dl>''')) ol.addWidget(db) self.cs = cs = QCheckBox(_('&Case sensitive')) cs.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) ol.addWidget(cs) self.wr = wr = QCheckBox(_('&Wrap')) wr.setToolTip('<p>' + _( 'When searching reaches the end, wrap around to the beginning and continue the search' )) wr.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) ol.addWidget(wr) self.da = da = QCheckBox(_('&Dot all')) da.setToolTip('<p>' + _( "Make the '.' special character match any character at all, including a newline" )) da.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) ol.addWidget(da) self.mode_box.currentIndexChanged[int].connect(self.da.setVisible) ol.addStretch(10)