def data(self, index, role=Qt.DisplayRole): """Cell content""" if not index.isValid(): return QVariant() value = self.get_value(index) if index.column() == 3 and self.remote: value = value['view'] display = value_to_display(value, truncate=index.column() == 3 and self.truncate, minmax=self.minmax, collvalue=self.collvalue or index.column() != 3) if role == Qt.DisplayRole: return QVariant(display) elif role == Qt.EditRole: return QVariant(value_to_display(value)) elif role == Qt.TextAlignmentRole: if index.column() == 3: if len(display.splitlines()) < 3: return QVariant(int(Qt.AlignLeft|Qt.AlignVCenter)) else: return QVariant(int(Qt.AlignLeft|Qt.AlignTop)) else: return QVariant(int(Qt.AlignLeft|Qt.AlignVCenter)) elif role == Qt.BackgroundColorRole: return QVariant( self.get_bgcolor(index) ) elif role == Qt.FontRole: if index.column() < 3: return QVariant(get_font('dicteditor_header')) else: return QVariant(get_font('dicteditor')) return QVariant()
def data(self, index, role=Qt.DisplayRole): """Cell content""" if not index.isValid(): return QVariant() value = self.get_value(index) if index.column() == 3 and self.remote: value = value['view'] display = value_to_display(value, truncate=index.column() == 3 and self.truncate, minmax=self.minmax, collvalue=self.collvalue or index.column() != 3) if role == Qt.DisplayRole: return QVariant(display) elif role == Qt.EditRole: return QVariant(value_to_display(value)) elif role == Qt.TextAlignmentRole: if index.column() == 3: if len(display.splitlines()) < 3: return QVariant(int(Qt.AlignLeft | Qt.AlignVCenter)) else: return QVariant(int(Qt.AlignLeft | Qt.AlignTop)) else: return QVariant(int(Qt.AlignLeft | Qt.AlignVCenter)) elif role == Qt.BackgroundColorRole: return QVariant(self.get_bgcolor(index)) elif role == Qt.FontRole: if index.column() < 3: return QVariant(get_font('dicteditor_header')) else: return QVariant(get_font('dicteditor')) return QVariant()
def createEditor(self, parent, option, index): """Overriding method createEditor""" if index.column() < 3: return None value = self.get_value(index) key = index.model().get_key(index) readonly = isinstance(value, tuple) or self.parent().readonly #---editor = DictEditor if isinstance(value, (list, tuple, dict)) and not self.inplace: editor = DictEditor(value, key, icon=self.parent().windowIcon(), readonly=readonly) if editor.exec_() and not readonly: self.set_value(index, editor.get_copy()) return None #---editor = ArrayEditor elif isinstance(value, ndarray) and ndarray is not FakeObject \ and not self.inplace: if value.size == 0: return None editor = ArrayEditor(parent) if editor.setup_and_check(value, title=key, readonly=readonly): if editor.exec_(): # Only necessary for child class RemoteDictDelegate: # (ArrayEditor does not make a copy of value) self.set_value(index, value) return None #---editor = QDateTimeEdit elif isinstance(value, datetime.datetime) and not self.inplace: editor = QDateTimeEdit(value, parent) editor.setCalendarPopup(True) editor.setFont(get_font('dicteditor')) self.connect(editor, SIGNAL("returnPressed()"), self.commitAndCloseEditor) return editor #---editor = QDateEdit elif isinstance(value, datetime.date) and not self.inplace: editor = QDateEdit(value, parent) editor.setCalendarPopup(True) editor.setFont(get_font('dicteditor')) self.connect(editor, SIGNAL("returnPressed()"), self.commitAndCloseEditor) return editor #---editor = QTextEdit elif isinstance(value, (str, unicode)) and len(value) > 40: editor = TextEditor(value, key) if editor.exec_() and not readonly: conv = str if isinstance(value, str) else unicode self.set_value(index, conv(editor.get_copy())) return None #---editor = QLineEdit else: editor = QLineEdit(parent) editor.setFont(get_font('dicteditor')) editor.setAlignment(Qt.AlignLeft) self.connect(editor, SIGNAL("returnPressed()"), self.commitAndCloseEditor) return editor
def setup(self): """Configure QTextEdit""" # Calltips self.calltip_size = CONF.get('shell_appearance', 'calltips/size') self.calltip_font = get_font('shell_appearance', 'calltips') # Completion self.completion_size = CONF.get('shell_appearance', 'completion/size') self.completion_font = get_font('shell_appearance', 'completion')
def createEditor(self, parent, option, index): """Overriding method createEditor""" if index.column()<3: return None value = self.get_value(index) key = index.model().get_key(index) readonly = isinstance(value, tuple) or self.parent().readonly #---editor = DictEditor if isinstance(value, (list, tuple, dict)) and not self.inplace: editor = DictEditor(value, key, icon=self.parent().windowIcon(), readonly=readonly) if editor.exec_() and not readonly: self.set_value(index, editor.get_copy()) return None #---editor = ArrayEditor elif isinstance(value, ndarray) and ndarray is not FakeObject \ and not self.inplace: if value.size == 0: return None editor = ArrayEditor(parent) if editor.setup_and_check(value, title=key, readonly=readonly): if editor.exec_(): # Only necessary for child class RemoteDictDelegate: # (ArrayEditor does not make a copy of value) self.set_value(index, value) return None #---editor = QDateTimeEdit elif isinstance(value, datetime.datetime) and not self.inplace: editor = QDateTimeEdit(value, parent) editor.setCalendarPopup(True) editor.setFont(get_font('dicteditor')) self.connect(editor, SIGNAL("returnPressed()"), self.commitAndCloseEditor) return editor #---editor = QDateEdit elif isinstance(value, datetime.date) and not self.inplace: editor = QDateEdit(value, parent) editor.setCalendarPopup(True) editor.setFont(get_font('dicteditor')) self.connect(editor, SIGNAL("returnPressed()"), self.commitAndCloseEditor) return editor #---editor = QTextEdit elif isinstance(value, (str, unicode)) and len(value)>40: editor = TextEditor(value, key) if editor.exec_() and not readonly: conv = str if isinstance(value, str) else unicode self.set_value(index, conv(editor.get_copy())) return None #---editor = QLineEdit else: editor = QLineEdit(parent) editor.setFont(get_font('dicteditor')) editor.setAlignment(Qt.AlignLeft) self.connect(editor, SIGNAL("returnPressed()"), self.commitAndCloseEditor) return editor
def setup(self): """Configure QPlainTextEdit""" # Calltips self.calltip_size = CONF.get('shell_appearance', 'calltips/size') self.calltip_font = get_font('shell_appearance', 'calltips') # Completion size = CONF.get('shell_appearance', 'completion/size') font = get_font('shell_appearance', 'completion') self.completion_widget.setup_appearance(size, font)
def __init__(self, parent, history_filename, debug=False, profile=False): """ parent : specifies the parent widget """ ConsoleBaseWidget.__init__(self, parent) # Prompt position: tuple (line, index) self.current_prompt_pos = None self.new_input_line = True # History self.histidx = None self.hist_wholeline = False assert isinstance(history_filename, (str, unicode)) self.history_filename = history_filename self.history = self.load_history() # Session self.historylog_filename = CONF.get('main', 'historylog_filename', get_conf_path('history.log')) # Context menu self.menu = None self.setup_context_menu() # Debug mode self.debug = debug # Simple profiling test self.profile = profile # Buffer to increase performance of write/flush operations self.__buffer = [] self.__timestamp = 0.0 self.__flushtimer = QTimer(self) self.__flushtimer.setSingleShot(True) self.connect(self.__flushtimer, SIGNAL('timeout()'), self.flush) # Give focus to widget self.setFocus() # Calltips calltip_size = CONF.get('shell_appearance', 'calltips/size') calltip_font = get_font('shell_appearance', 'calltips') self.setup_calltips(calltip_size, calltip_font) # Completion completion_size = CONF.get('shell_appearance', 'completion/size') completion_font = get_font('shell_appearance', 'completion') self.completion_widget.setup_appearance(completion_size, completion_font) # Cursor width self.setCursorWidth( CONF.get('shell_appearance', 'cursor/width') )
def change_font(self): """Change font""" font, valid = QFontDialog.getFont(get_font(self.ID), self, translate("Pylint", "Select a new font")) if valid: self.set_font(font) set_font(font, self.ID)
def change_font(self): """Change console font""" font, valid = QFontDialog.getFont(get_font(self.ID), self, self.tr("Select a new font")) if valid: self.shell.set_font(font) set_font(font, self.ID)
def __init__(self, text, title='', font=None, parent=None, readonly=False, size=(400, 300)): super(TextEditor, self).__init__(parent) self.layout = QVBoxLayout() self.setLayout(self.layout) # Text edit self.edit = QTextEdit(parent) self.edit.setReadOnly(readonly) self.edit.setPlainText(text) if font is None: font = get_font('texteditor') self.edit.setFont(font) self.layout.addWidget(self.edit) # Buttons configuration buttons = QDialogButtonBox.Ok if not readonly: buttons = buttons | QDialogButtonBox.Cancel bbox = QDialogButtonBox(buttons) self.connect(bbox, SIGNAL("accepted()"), SLOT("accept()")) self.connect(bbox, SIGNAL("rejected()"), SLOT("reject()")) self.layout.addWidget(bbox) # Make the dialog act as a window self.setWindowFlags(Qt.Window) self.setWindowIcon(get_icon('edit.png')) self.setWindowTitle(self.tr("Text editor") + \ "%s" % (" - "+str(title) if str(title) else "")) self.resize(size[0], size[1])
def change_font(self): """Change console font""" font, valid = QFontDialog.getFont(get_font(self.ID), self, translate("Editor", "Select a new font")) if valid: self.editor.set_font(font) set_font(font, self.ID)
def __init__(self, parent): PluginWidget.__init__(self, parent) # Read-only editor self.editor = QsciEditor(self) self.editor.setup_editor(linenumbers=False, language='py', code_folding=True) self.connect(self.editor, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) self.editor.setReadOnly(True) self.editor.set_font( get_font(self.ID) ) self.editor.toggle_wrap_mode( CONF.get(self.ID, 'wrap') ) # Add entries to read-only editor context-menu font_action = create_action(self, translate("Editor", "&Font..."), None, 'font.png', translate("Editor", "Set font style"), triggered=self.change_font) wrap_action = create_action(self, translate("Editor", "Wrap lines"), toggled=self.toggle_wrap_mode) wrap_action.setChecked( CONF.get(self.ID, 'wrap') ) self.editor.readonly_menu.addSeparator() add_actions(self.editor.readonly_menu, (font_action, wrap_action)) # Find/replace widget self.find_widget = FindReplace(self) self.find_widget.set_editor(self.editor) self.find_widget.hide()
def __init__(self, parent=None): PylintWidget.__init__(self, parent=parent, max_entries=CONF.get(self.ID, 'max_entries')) PluginMixin.__init__(self, parent) self.set_font(get_font(self.ID))
def change_font(self): """Change font""" font, valid = QFontDialog.getFont( get_font(self.ID), self, translate("Pylint", "Select a new font")) if valid: self.set_font(font) set_font(font, self.ID)
def add_history(self, filename): """ Add new history tab Slot for SIGNAL('add_history(QString)') emitted by shell instance """ filename = encoding.to_unicode(filename) if filename in self.filenames: return editor = CodeEditor(self) if osp.splitext(filename)[1] == '.py': language = 'py' icon = get_icon('python.png') else: language = 'bat' icon = get_icon('cmdprompt.png') editor.setup_editor(linenumbers=False, language=language, code_folding=True, scrollflagarea=False) self.connect(editor, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) editor.setReadOnly(True) editor.set_font( get_font(self.ID) ) editor.toggle_wrap_mode( CONF.get(self.ID, 'wrap') ) text, _ = encoding.read(filename) editor.set_text(text) editor.set_cursor_position('eof') self.editors.append(editor) self.filenames.append(filename) self.icons.append(icon) index = self.tabwidget.addTab(editor, osp.basename(filename)) self.find_widget.set_editor(editor) self.tabwidget.setTabToolTip(index, filename) self.tabwidget.setTabIcon(index, icon) self.tabwidget.setCurrentIndex(index)
def change_font(self): """Change console font""" font, valid = QFontDialog.getFont(get_font(self.CONF_SECTION), self, _("Select a new font")) if valid: self.set_plain_text_font(font) set_font(font, self.CONF_SECTION)
def change_font(self): """Change console font""" font, valid = QFontDialog.getFont(get_font(self.ID), self, self.tr("Select a new font")) if valid: for index in range(self.tabwidget.count()): self.tabwidget.widget(index).shell.set_font(font) set_font(font, self.ID)
def change_font(self): """Change console font""" font, valid = QFontDialog.getFont(get_font(self.ID), self, self.tr("Select a new font")) if valid: for editor in self.editors: editor.set_font(font) set_font(font, self.ID)
def __init__(self, parent=None, path=None): ExplorerWidget.__init__(self, parent=parent, path=path, name_filters=CONF.get(self.ID, 'name_filters'), valid_types=CONF.get(self.ID, 'valid_filetypes'), show_all=CONF.get(self.ID, 'show_all'), show_toolbar=CONF.get(self.ID, 'show_toolbar'), show_icontext=CONF.get(self.ID, 'show_icontext')) PluginMixin.__init__(self, parent) self.set_font(get_font(self.ID)) self.connect(self, SIGNAL("open_file(QString)"), self.open_file)
def __init__(self, parent=None): ExplorerWidget.__init__(self, parent=parent, path=CONF.get(self.ID, 'path', None), name_filters=CONF.get(self.ID, 'name_filters'), valid_types=CONF.get(self.ID, 'valid_filetypes'), show_all=CONF.get(self.ID, 'show_all'), show_toolbar=CONF.get(self.ID, 'show_toolbar'), show_icontext=CONF.get(self.ID, 'show_icontext')) SpyderPluginMixin.__init__(self, parent) self.editor_valid_types = None self.set_font(get_font(self.ID)) self.connect(self, SIGNAL("open_file(QString)"), self.open_file)
def headerData(self, section, orientation, role=Qt.DisplayRole): """Overriding method headerData""" if role != Qt.DisplayRole: if role == Qt.FontRole: return QVariant(get_font('dicteditor_header')) else: return QVariant() i_column = int(section) if orientation == Qt.Horizontal: headers = (self.header0, translate("DictEditor", "Type"), translate("DictEditor", "Size"), translate("DictEditor", "Value")) return QVariant(headers[i_column]) else: return QVariant()
def createEditor(self, parent, option, index): """Create editor widget""" model = index.model() if model._data.dtype.name == "bool": value = not model.get_value(index) model.setData(index, QVariant(value)) return else: editor = QLineEdit(parent) editor.setFont(get_font('arrayeditor')) editor.setAlignment(Qt.AlignCenter) if is_number(self.dtype): editor.setValidator(QDoubleValidator(editor)) self.connect(editor, SIGNAL("returnPressed()"), self.commitAndCloseEditor) return editor
def data(self, index, role=Qt.DisplayRole): """Cell content""" if not index.isValid(): return QVariant() value = self.get_value(index) if role == Qt.DisplayRole: return QVariant(self._format % value) elif role == Qt.TextAlignmentRole: return QVariant(int(Qt.AlignCenter|Qt.AlignVCenter)) elif role == Qt.BackgroundColorRole and self.bgcolor_enabled: hue = self.hue0+self.dhue*(self.vmax-value)/(self.vmax-self.vmin) color = QColor.fromHsvF(hue, self.sat, self.val, self.alp) return QVariant(color) elif role == Qt.FontRole: return QVariant(get_font('arrayeditor')) return QVariant()
def __init__(self, parent=None, path=None): ExplorerWidget.__init__( self, parent=parent, path=path, name_filters=CONF.get(self.ID, "name_filters"), valid_types=CONF.get(self.ID, "valid_filetypes"), show_all=CONF.get(self.ID, "show_all"), show_toolbar=CONF.get(self.ID, "show_toolbar"), show_icontext=CONF.get(self.ID, "show_icontext"), ) PluginMixin.__init__(self, parent) self.set_font(get_font(self.ID)) self.connect(self, SIGNAL("open_file(QString)"), self.open_file)
def headerData(self, section, orientation, role=Qt.DisplayRole): """Overriding method headerData""" if role != Qt.DisplayRole: if role == Qt.FontRole: return QVariant(get_font('dicteditor_header')) else: return QVariant() i_column = int(section) if orientation == Qt.Horizontal: headers = (self.header0, translate("DictEditor", "Type"), translate("DictEditor", "Size"), translate("DictEditor", "Value")) return QVariant( headers[i_column] ) else: return QVariant()
def data(self, index, role=Qt.DisplayRole): """Cell content""" if not index.isValid(): return QVariant() value = self.get_value(index) if role == Qt.DisplayRole: return QVariant(self._format % value) elif role == Qt.TextAlignmentRole: return QVariant(int(Qt.AlignCenter | Qt.AlignVCenter)) elif role == Qt.BackgroundColorRole and self.bgcolor_enabled: hue = self.hue0 + self.dhue * (self.vmax - value) / (self.vmax - self.vmin) color = QColor.fromHsvF(hue, self.sat, self.val, self.alp) return QVariant(color) elif role == Qt.FontRole: return QVariant(get_font('arrayeditor')) return QVariant()
def __init__(self, parent=None): self.new_project_action = None include = CONF.get(self.ID, 'include', '.') exclude = CONF.get(self.ID, 'exclude', r'\.pyc$|\.pyo$|\.orig$|^\.') show_all = CONF.get(self.ID, 'show_all', False) ProjectExplorerWidget.__init__(self, parent=parent, include=include, exclude=exclude, show_all=show_all) SpyderPluginMixin.__init__(self, parent) self.editor_valid_types = None self.set_font(get_font(self.ID)) if osp.isfile(self.DATAPATH): self.load_config() self.connect(self, SIGNAL("open_file(QString)"), self.open_file)
def __init__(self, parent): self.interpreter = None self.namespace = None self.filename = None truncate = CONF.get(self.ID, 'truncate') inplace = CONF.get(self.ID, 'inplace') minmax = CONF.get(self.ID, 'minmax') collvalue = CONF.get(self.ID, 'collvalue') DictEditorTableView.__init__(self, parent, None, names=True, truncate=truncate, inplace=inplace, minmax=minmax, collvalue=collvalue) PluginMixin.__init__(self, parent) self.setup_io() self.load_temp_namespace() self.setFont(get_font(self.ID))
def __init__(self, parent=None, namespace=None, commands=None, message="", debug=False, exitfunc=None, profile=False): # Shell self.shell = InteractiveShell(parent, namespace, commands, message, get_font(self.ID), debug, exitfunc, profile) self.connect( self.shell, SIGNAL('status(QString)'), lambda msg: self.emit(SIGNAL('show_message(QString,int)'), msg, 0)) self.connect(self.shell, SIGNAL("go_to_error(QString)"), self.go_to_error) self.connect(self.shell, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) # Redirecting some SIGNALs: self.connect( self.shell, SIGNAL('redirect_stdio(bool)'), lambda state: self.emit(SIGNAL('redirect_stdio(bool)'), state)) PluginWidget.__init__(self, parent) # Find/replace widget self.find_widget = FindReplace(self) self.find_widget.set_editor(self.shell) self.find_widget.hide() # Main layout layout = QVBoxLayout() layout.addWidget(self.shell) layout.addWidget(self.find_widget) self.setLayout(layout) # Parameters self.shell.toggle_wrap_mode(CONF.get(self.ID, 'wrap')) self.connect(self, SIGNAL("executing_command(bool)"), self.change_cursor) # Accepting drops self.setAcceptDrops(True)
def __init__(self, text, title='', font=None, parent=None, readonly=False, size=(400, 300)): QDialog.__init__(self, parent) # Destroying the C++ object right after closing the dialog box, # otherwise it may be garbage-collected in another QThread # (e.g. the editor's analysis thread in Spyder), thus leading to # a segmentation fault on UNIX or an application crash on Windows self.setAttribute(Qt.WA_DeleteOnClose) self.text = None self._conv = str if isinstance(text, str) else unicode self.layout = QVBoxLayout() self.setLayout(self.layout) # Text edit self.edit = QTextEdit(parent) self.connect(self.edit, SIGNAL('textChanged()'), self.text_changed) self.edit.setReadOnly(readonly) self.edit.setPlainText(text) if font is None: font = get_font('texteditor') self.edit.setFont(font) self.layout.addWidget(self.edit) # Buttons configuration buttons = QDialogButtonBox.Ok if not readonly: buttons = buttons | QDialogButtonBox.Cancel bbox = QDialogButtonBox(buttons) self.connect(bbox, SIGNAL("accepted()"), SLOT("accept()")) self.connect(bbox, SIGNAL("rejected()"), SLOT("reject()")) self.layout.addWidget(bbox) # Make the dialog act as a window self.setWindowFlags(Qt.Window) self.setWindowIcon(get_icon('edit.png')) self.setWindowTitle(_("Text editor") + \ "%s" % (" - "+str(title) if str(title) else "")) self.resize(size[0], size[1])
def setup(self): """Configure Scintilla""" # UTF-8 self.setUtf8(True) # Indentation self.setAutoIndent(True) self.setIndentationsUseTabs(False) self.setIndentationWidth(4) self.setTabIndents(True) self.setBackspaceUnindents(True) self.setTabWidth(4) # Enable brace matching self.setBraceMatching(QsciScintilla.SloppyBraceMatch) self.setMatchedBraceBackgroundColor(Qt.yellow) # Calltips self.calltip_size = CONF.get('shell_appearance', 'calltips/size') self.calltip_font = get_font('shell_appearance', 'calltips')
def __init__(self, parent=None, namespace=None, commands=None, message="", debug=False, exitfunc=None, profile=False): # Shell self.shell = InteractiveShell(parent, namespace, commands, message, get_font(self.ID), debug, exitfunc, profile) self.connect(self.shell, SIGNAL('status(QString)'), lambda msg: self.emit(SIGNAL('show_message(QString,int)'), msg, 0)) self.connect(self.shell, SIGNAL("go_to_error(QString)"), self.go_to_error) self.connect(self.shell, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) # Redirecting some SIGNALs: self.connect(self.shell, SIGNAL('redirect_stdio(bool)'), lambda state: self.emit(SIGNAL('redirect_stdio(bool)'), state)) PluginWidget.__init__(self, parent) # Find/replace widget self.find_widget = FindReplace(self) self.find_widget.set_editor(self.shell) self.find_widget.hide() # Main layout layout = QVBoxLayout() layout.addWidget(self.shell) layout.addWidget(self.find_widget) self.setLayout(layout) # Parameters self.shell.toggle_wrap_mode( CONF.get(self.ID, 'wrap') ) self.connect(self, SIGNAL("executing_command(bool)"), self.change_cursor) # Accepting drops self.setAcceptDrops(True)
def data(self, index, role=Qt.DisplayRole): """Cell content""" if not index.isValid(): return to_qvariant() value = self.get_value(index) if role == Qt.DisplayRole: if value is np.ma.masked: return '' else: return to_qvariant(self._format % value) elif role == Qt.TextAlignmentRole: return to_qvariant(int(Qt.AlignCenter|Qt.AlignVCenter)) elif role == Qt.BackgroundColorRole and self.bgcolor_enabled\ and value is not np.ma.masked: hue = self.hue0+\ self.dhue*(self.vmax-self.color_func(value))\ /(self.vmax-self.vmin) hue = float(np.abs(hue)) color = QColor.fromHsvF(hue, self.sat, self.val, self.alp) return to_qvariant(color) elif role == Qt.FontRole: return to_qvariant(get_font('arrayeditor')) return to_qvariant()
def add_history(self, filename): """ Add new history tab Slot for SIGNAL('add_history(QString)') emitted by shell instance """ filename = encoding.to_unicode(filename) if filename in self.filenames: return editor = QsciEditor(self) if osp.splitext(filename)[1] == '.py': language = 'py' icon = get_icon('python.png') else: language = 'bat' icon = get_icon('cmdprompt.png') editor.setup_editor(linenumbers=False, language=language, code_folding=True) self.connect(editor, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) editor.setReadOnly(True) editor.set_font(get_font(self.ID)) editor.toggle_wrap_mode(CONF.get(self.ID, 'wrap')) text, _ = encoding.read(filename) editor.set_text(text) editor.set_cursor_position('eof') self.editors.append(editor) self.filenames.append(filename) self.icons.append(icon) index = self.tabwidget.addTab(editor, osp.basename(filename)) self.find_widget.set_editor(editor) self.tabwidget.setTabToolTip(index, filename) self.tabwidget.setTabIcon(index, icon) self.tabwidget.setCurrentIndex(index)
def start(self, fname, wdir=None, ask_for_arguments=False, interact=False, debug=False, python=True): """Start new console""" # Note: fname is None <=> Python interpreter fname = unicode(fname) if isinstance(fname, QString) else fname wdir = unicode(wdir) if isinstance(wdir, QString) else wdir if fname is not None and fname in self.filenames: index = self.filenames.index(fname) if CONF.get(self.ID, 'single_tab'): old_shell = self.shells[index] if old_shell.is_running(): answer = QMessageBox.question(self, self.get_widget_title(), self.tr("%1 is already running in a separate process.\n" "Do you want to kill the process before starting " "a new one?").arg(osp.basename(fname)), QMessageBox.Yes | QMessageBox.Cancel) if answer == QMessageBox.Yes: old_shell.process.kill() old_shell.process.waitForFinished() else: return self.close_console(index) else: index = 0 # Creating a new external shell if python: shell = ExternalPythonShell(self, fname, wdir, self.commands, interact, debug, path=self.main.path) else: shell = ExternalSystemShell(self, wdir) shell.shell.set_font( get_font(self.ID) ) shell.shell.toggle_wrap_mode( CONF.get(self.ID, 'wrap') ) shell.shell.set_calltips( CONF.get(self.ID, 'calltips') ) shell.shell.set_codecompletion( CONF.get(self.ID, 'autocompletion/enabled') ) shell.shell.set_codecompletion_enter(CONF.get(self.ID, 'autocompletion/enter-key')) if python: shell.shell.set_docviewer(self.docviewer) self.historylog.add_history(shell.shell.history_filename) self.connect(shell.shell, SIGNAL('append_to_history(QString,QString)'), self.historylog.append_to_history) self.connect(shell.shell, SIGNAL("go_to_error(QString)"), self.go_to_error) self.connect(shell.shell, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) if python: if fname is None: name = "Python" icon = get_icon('python.png') else: name = osp.basename(fname) icon = get_icon('run.png') else: name = "Command Window" icon = get_icon('cmdprompt.png') self.shells.insert(index, shell) self.filenames.insert(index, fname) self.icons.insert(index, icon) if index is None: index = self.tabwidget.addTab(shell, name) else: self.tabwidget.insertTab(index, shell, name) self.connect(shell, SIGNAL("started()"), lambda sid=id(shell): self.process_started(sid)) self.connect(shell, SIGNAL("finished()"), lambda sid=id(shell): self.process_finished(sid)) self.find_widget.set_editor(shell.shell) self.tabwidget.setTabToolTip(index, fname if wdir is None else wdir) self.tabwidget.setCurrentIndex(index) if self.dockwidget and not self.ismaximized: self.dockwidget.setVisible(True) self.dockwidget.raise_() # Start process and give focus to console shell.start(ask_for_arguments) shell.shell.setFocus()
def start(self, fname, wdir=None, ask_for_arguments=False, interact=False, debug=False, python=True): """Start new console""" # Note: fname is None <=> Python interpreter fname = unicode(fname) if isinstance(fname, QString) else fname wdir = unicode(wdir) if isinstance(wdir, QString) else wdir if fname is not None and fname in self.filenames: index = self.filenames.index(fname) if CONF.get(self.ID, 'single_tab'): old_shell = self.shells[index] if old_shell.is_running(): answer = QMessageBox.question( self, self.get_widget_title(), self.tr( "%1 is already running in a separate process.\n" "Do you want to kill the process before starting " "a new one?").arg(osp.basename(fname)), QMessageBox.Yes | QMessageBox.Cancel) if answer == QMessageBox.Yes: old_shell.process.kill() old_shell.process.waitForFinished() else: return self.close_console(index) else: index = 0 # Creating a new external shell if python: shell = ExternalPythonShell(self, fname, wdir, self.commands, interact, debug, path=self.main.path) else: shell = ExternalSystemShell(self, wdir) shell.shell.set_font(get_font(self.ID)) shell.shell.toggle_wrap_mode(CONF.get(self.ID, 'wrap')) shell.shell.set_calltips(CONF.get(self.ID, 'calltips')) shell.shell.set_codecompletion( CONF.get(self.ID, 'autocompletion/enabled')) shell.shell.set_codecompletion_enter( CONF.get(self.ID, 'autocompletion/enter-key')) if python: shell.shell.set_docviewer(self.docviewer) self.historylog.add_history(shell.shell.history_filename) self.connect(shell.shell, SIGNAL('append_to_history(QString,QString)'), self.historylog.append_to_history) self.connect(shell.shell, SIGNAL("go_to_error(QString)"), self.go_to_error) self.connect(shell.shell, SIGNAL("focus_changed()"), lambda: self.emit(SIGNAL("focus_changed()"))) if python: if fname is None: name = "Python" icon = get_icon('python.png') else: name = osp.basename(fname) icon = get_icon('run.png') else: name = "Command Window" icon = get_icon('cmdprompt.png') self.shells.insert(index, shell) self.filenames.insert(index, fname) self.icons.insert(index, icon) if index is None: index = self.tabwidget.addTab(shell, name) else: self.tabwidget.insertTab(index, shell, name) self.connect(shell, SIGNAL("started()"), lambda sid=id(shell): self.process_started(sid)) self.connect(shell, SIGNAL("finished()"), lambda sid=id(shell): self.process_finished(sid)) self.find_widget.set_editor(shell.shell) self.tabwidget.setTabToolTip(index, fname if wdir is None else wdir) self.tabwidget.setCurrentIndex(index) if self.dockwidget and not self.ismaximized: self.dockwidget.setVisible(True) self.dockwidget.raise_() # Start process and give focus to console shell.start(ask_for_arguments) shell.shell.setFocus()
def set_statusbar(self): """Set status bar""" statusbar = QLabel('') statusbar.setFont(get_font(self.ID, 'statusbar')) return statusbar
def __change_font(self, section): font, valid = QFontDialog.getFont(get_font(section), self, self.tr("Select a new font")) if valid: set_font(font, section)
def get_plugin_font(self, option=None): """Return plugin font option""" return get_font(self.CONF_SECTION, option)