def __add_comboBox(self, key, name, *items): """this is a helper method to create a comboBox it adds the created widget (as a TitledWidget) to the layout and register a setter and listen to changes """ combo = QtWidgets.QComboBox() combo.addItems(items) combo.currentTextChanged.connect( lambda txt, key=key: self.__update(key, txt)) # Note: those setters may become problematic if # someone use the synonyms (defined in codeeditor/style.py) # i.e. a stylement is of form "linestyle:dashline" # instead of the "linestyle:dashed" self.setters[key] = lambda txt, cmb=combo: cmb.setCurrentText( txt.capitalize()) self.layout.addWidget(TitledWidget(name, combo))
def __init__(self, parent, i): BasePyzoWizardPage.__init__(self, parent, i) # Create label and checkbox t1 = translate("wizard", "This wizard can be opened using 'Help > Pyzo wizard'") # t2 = translate('wizard', "Show this wizard on startup") self._label_info = QtWidgets.QLabel(t1, self) # self._check_show = QtWidgets.QCheckBox(t2, self) # self._check_show.stateChanged.connect(self._setNewUser) # Create language switcher self._langLabel = QtWidgets.QLabel(translate("wizard", "Select language"), self) # self._langBox = QtWidgets.QComboBox(self) self._langBox.setEditable(False) # Fill index, theIndex = -1, -1 cur = pyzo.config.settings.language for lang in sorted(LANGUAGES): index += 1 self._langBox.addItem(lang) if lang == LANGUAGE_SYNONYMS.get(cur, cur): theIndex = index # Set current index if theIndex >= 0: self._langBox.setCurrentIndex(theIndex) # Bind signal self._langBox.activated.connect(self.onLanguageChange) # Init check state # if pyzo.config.state.newUser: # self._check_show.setCheckState(QtCore.Qt.Checked) # Create sublayout layout = QtWidgets.QHBoxLayout() layout.addWidget(self._langLabel, 0) layout.addWidget(self._langBox, 0) layout.addStretch(2) self.layout().addLayout(layout) # Add to layout self.layout().addSpacing(10) self.layout().addWidget(self._label_info)
def __init__(self, parent): QtWidgets.QFrame.__init__(self, parent) # Init config toolId = self.__class__.__name__.lower() self._config = pyzo.config.tools[toolId] if not hasattr(self._config, "zoomFactor"): self._config.zoomFactor = 1.0 if not hasattr(self._config, "bookMarks"): self._config.bookMarks = [] for item in default_bookmarks: if item not in self._config.bookMarks: self._config.bookMarks.append(item) # Get style object (for icons) style = QtWidgets.QApplication.style() # Create some buttons self._back = QtWidgets.QToolButton(self) self._back.setIcon(style.standardIcon(style.SP_ArrowBack)) self._back.setIconSize(QtCore.QSize(16, 16)) # self._forward = QtWidgets.QToolButton(self) self._forward.setIcon(style.standardIcon(style.SP_ArrowForward)) self._forward.setIconSize(QtCore.QSize(16, 16)) # Create address bar # self._address = QtWidgets.QLineEdit(self) self._address = QtWidgets.QComboBox(self) self._address.setEditable(True) self._address.setInsertPolicy(self._address.NoInsert) # for a in self._config.bookMarks: self._address.addItem(a) self._address.setEditText("") # Create web view if imported_qtwebkit: self._view = QtWebKit.QWebView(self) else: self._view = WebView(self) # # self._view.setZoomFactor(self._config.zoomFactor) # settings = self._view.settings() # settings.setAttribute(settings.JavascriptEnabled, True) # settings.setAttribute(settings.PluginsEnabled, True) # Layout self._sizer1 = QtWidgets.QVBoxLayout(self) self._sizer2 = QtWidgets.QHBoxLayout() # self._sizer2.addWidget(self._back, 0) self._sizer2.addWidget(self._forward, 0) self._sizer2.addWidget(self._address, 1) # self._sizer1.addLayout(self._sizer2, 0) self._sizer1.addWidget(self._view, 1) # self._sizer1.setSpacing(2) # set margins margin = pyzo.config.view.widgetMargin self._sizer1.setContentsMargins(margin, margin, margin, margin) self.setLayout(self._sizer1) # Bind signals self._back.clicked.connect(self.onBack) self._forward.clicked.connect(self.onForward) self._address.lineEdit().returnPressed.connect(self.go) self._address.activated.connect(self.go) self._view.loadFinished.connect(self.onLoadEnd) self._view.loadStarted.connect(self.onLoadStart) # Start self._view.show() self.go("http://docs.python.org")
def __init__(self): super().__init__() from pyzo.qt import QtPrintSupport self.printer = QtPrintSupport.QPrinter( QtPrintSupport.QPrinter.HighResolution, ) # To allow pdf export with color self.printer.setColorMode(QtPrintSupport.QPrinter.Color) # Default settings self.show_line_number = True self._enable_syntax_highlighting = True # Set title self.setWindowTitle(translate("menu dialog", "Pdf Export")) # Set dialog size size = 1000, 600 offset = 0 size2 = size[0], size[1] + offset self.resize(*size2) # self.setMinimumSize(*size2) # Button to export to pdf self.validation_button = QtWidgets.QPushButton("Export") self.validation_button.clicked.connect(self._export_pdf) # Button to update the preview self.button_update_preview = QtWidgets.QPushButton( "Update preview", self) self.button_update_preview.clicked.connect(self._update_preview) # Previw widget self.preview = QtPrintSupport.QPrintPreviewWidget(self.printer) # Lines numbers option self.checkbox_line_number = QtWidgets.QCheckBox( "Print line number", self, checked=self.show_line_number) self.checkbox_line_number.stateChanged.connect( self._get_show_line_number) # Make of copy of the editor self.current_editor = pyzo.editors.getCurrentEditor() self.editor_name = self.current_editor.name self.editor_filename = self.current_editor.filename self.editor = pyzo.core.editor.PyzoEditor( pyzo.editors.getCurrentEditor().toPlainText()) # Zoom # The default zoom is the current zoom used by the editor self.original_zoom = pyzo.config.view.zoom self.zoom_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) self.zoom_slider.setMinimum(-10) # Maybe too much ? self.zoom_slider.setMaximum(10) self.zoom_slider.setTickInterval(1) self.zoom_selected = self.original_zoom self.zoom_slider.setValue(self.zoom_selected) self.zoom_value_label = QtWidgets.QLabel() self._zoom_value_changed() self.zoom_slider.valueChanged.connect(self._zoom_value_changed) # Option for syntax highlighting self.checkbox_syntax_highlighting = QtWidgets.QCheckBox( "Enable syntax highlighting", self, checked=self._enable_syntax_highlighting) self.checkbox_syntax_highlighting.stateChanged.connect( self._change_syntax_highlighting_option) self.combobox_file_name = QtWidgets.QComboBox(self) self.combobox_file_name.addItem("Do not print the file name", 0) self.combobox_file_name.addItem("Print with file name", 1) self.combobox_file_name.addItem( "Print with file name and absolute path", 2) self.combobox_file_name.setCurrentIndex(1) self.combobox_file_name.setToolTip( "The title at the top of the document") # Orientation self.combobox_orientation = QtWidgets.QComboBox(self) self.combobox_orientation.addItem("Portrait", 0) self.combobox_orientation.addItem("Landscape", 1) self.combobox_orientation.setToolTip("Orientation of the document") # Layout self.main_layout = QtWidgets.QHBoxLayout() self.setLayout(self.main_layout) self.preview.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) self.right_layout = QtWidgets.QVBoxLayout() self.option_layout = QtWidgets.QFormLayout() self.main_layout.addWidget(self.preview) self.main_layout.addLayout(self.right_layout) self.right_layout.addLayout(self.option_layout) self.option_layout.addRow(self.combobox_file_name) self.option_layout.addRow(self.checkbox_line_number) self.option_layout.addRow(self.checkbox_syntax_highlighting) self.option_layout.addRow(self.zoom_value_label, self.zoom_slider) # self.option_layout.addRow(self.combobox_orientation) # orientation appears to be broken self.bottom_layout = QtWidgets.QHBoxLayout() self.right_layout.addLayout(self.bottom_layout) self.bottom_layout.addStretch() self.bottom_layout.addWidget(self.button_update_preview) self.bottom_layout.addWidget(self.validation_button) self._update_preview()
def __init__(self, themes, *args, editor=None, **kwargs): super().__init__(*args, **kwargs) # dict of themes, a deep copy of pyzo.themes self.themes = themes # We store the key name separate so we can easier track renames self.cur_theme_key = "" # The current theme being changed self.cur_theme = None # If an editor is given, connect to it self.editor = editor if self.editor is not None: self.editor.tokenClicked.connect(self.focusOnStyle) self.styleChanged.connect(self.editor.setStyle) # Display editables style formats in a scroll area self.scrollArea = scrollArea = QtWidgets.QScrollArea() self.scrollArea.setWidgetResizable(True) formLayout = QtWidgets.QFormLayout() self.styleEdits = {} # Add one pair of label and StyleEdit per style element description # to the formLayout and connect the StyleEdit signals to the updatedStyle method for styleDesc in pyzo.codeeditor.CodeEditor.getStyleElementDescriptions( ): label = QtWidgets.QLabel(text=styleDesc.name, toolTip=styleDesc.description) label.setWordWrap(True) styleEdit = StyleEdit(styleDesc, toolTip=styleDesc.description) styleEdit.styleChanged.connect(self.updatedStyle) self.styleEdits[styleDesc.key] = styleEdit formLayout.addRow(label, styleEdit) wrapper = QtWidgets.QWidget() wrapper.setLayout(formLayout) wrapper.setMinimumWidth(650) scrollArea.setWidget(wrapper) # Basic theme I/O curThemeLbl = QtWidgets.QLabel(text="Themes :") self.curThemeCmb = curThemeCmb = QtWidgets.QComboBox() current_index = -1 for i, themeName in enumerate(self.themes.keys()): # We store the themeName in data in case the user renames one curThemeCmb.addItem(themeName, userData=themeName) if themeName == pyzo.config.settings.theme.lower(): current_index = i curThemeCmb.addItem("New...") loadLayout = QtWidgets.QHBoxLayout() loadLayout.addWidget(curThemeLbl) loadLayout.addWidget(curThemeCmb) self.saveBtn = saveBtn = QtWidgets.QPushButton(text="Save") saveBtn.clicked.connect(self.saveTheme) exitBtn = QtWidgets.QPushButton(text="Apply theme") exitBtn.clicked.connect(self.ok) exitLayout = QtWidgets.QHBoxLayout() exitLayout.addWidget(exitBtn) exitLayout.addWidget(saveBtn) # Packing it up mainLayout = QtWidgets.QVBoxLayout() mainLayout.addLayout(loadLayout) mainLayout.addWidget(scrollArea) mainLayout.addLayout(exitLayout) self.setLayout(mainLayout) curThemeCmb.currentIndexChanged.connect(self.indexChanged) curThemeCmb.currentTextChanged.connect(self.setTheme) # Init if current_index >= 0: curThemeCmb.setCurrentIndex(current_index) self.setTheme(pyzo.config.settings.theme)