def __init__(self, name, plugin, parent=None, options=DEFAULT_OPTIONS): super().__init__(parent=parent) # Attributes # -------------------------------------------------------------------- self._options = options self._is_tab = False self._name = name self._plugin = plugin self._parent = parent self._default_margins = None self.is_maximized = None self.is_visible = None # We create our toggle action instead of using the one that comes with # dockwidget because it was not possible to raise and focus the plugin self.toggle_view_action = None self._widgets = {} self._toolbars = {} # Widgets # -------------------------------------------------------------------- self.windowwidget = None self.dockwidget = None self._central_widget = QWidget(self) self._icon = QIcon() self._spinner = create_waitspinner(size=16, parent=self) self._corner_widget = MainCornerWidget( parent=self, name=PluginMainWidgetWidgets.CornerWidget, )
def __init__(self, parent): super().__init__(parent) self.status_text = QLabel(self) self.spinner = create_waitspinner(parent=self) layout = QHBoxLayout() layout.addWidget(self.spinner) layout.addWidget(self.status_text) self.setLayout(layout)
def set_layout(self): """Set layout for default widgets.""" # Icon if self.show_icon: self._icon = self.get_icon() self._pixmap = None self._icon_size = QSize(16, 16) # Should this be adjustable? self.label_icon = QLabel() self.set_icon() # Label if self.show_label: self.label_value = QLabel() self.set_value('') # See spyder-ide/spyder#9044. self.text_font = QFont(QFont().defaultFamily(), weight=QFont.Normal) self.label_value.setAlignment(Qt.AlignRight | Qt.AlignVCenter) self.label_value.setFont(self.text_font) # Custom widget if self.CUSTOM_WIDGET_CLASS: if not issubclass(self.CUSTOM_WIDGET_CLASS, QWidget): raise SpyderAPIError( 'Any custom status widget must subclass QWidget!') self.custom_widget = self.CUSTOM_WIDGET_CLASS(self._parent) # Spinner if self.show_spinner: self.spinner = create_waitspinner(size=14, parent=self) self.spinner.hide() # Layout setup layout = QHBoxLayout(self) layout.setSpacing(0) # Reduce space between icon and label if self.show_icon: layout.addWidget(self.label_icon) if self.show_label: layout.addWidget(self.label_value) if self.custom_widget: layout.addWidget(self.custom_widget) if self.show_spinner: layout.addWidget(self.spinner) if is_dark_interface(): layout.addSpacing(0) else: layout.addSpacing(10) layout.setContentsMargins(0, 0, 0, 0) layout.setAlignment(Qt.AlignVCenter) # Setup self.update_tooltip()
def __init__(self, parent=None, show_fullpath=True, show_all_files=True, group_cells=True, show_comments=True, sort_files_alphabetically=False, display_variables=False, follow_cursor=True, options_button=None): # TODO: Remove once the OutlineExplorer is migrated self.CONF_SECTION = 'outline_explorer' QWidget.__init__(self, parent) self.treewidget = OutlineExplorerTreeWidget( self, show_fullpath=show_fullpath, show_all_files=show_all_files, group_cells=group_cells, display_variables=display_variables, show_comments=show_comments, sort_files_alphabetically=sort_files_alphabetically, follow_cursor=follow_cursor, ) self.loading_widget = create_waitspinner(size=16, parent=self) self.treewidget.sig_display_spinner.connect(self.loading_widget.start) self.treewidget.sig_hide_spinner.connect(self.loading_widget.stop) self.treewidget.sig_update_configuration.connect( self.sig_update_configuration) self.visibility_action = create_action(self, _("Show/hide outline explorer"), icon='outline_explorer_vis.png', toggled=self.toggle_visibility) self.visibility_action.setChecked(True) btn_layout = QHBoxLayout() for btn in self.setup_buttons(): btn.setAutoRaise(True) btn.setIconSize(QSize(16, 16)) btn_layout.addWidget(btn) if options_button: btn_layout.addStretch() btn_layout.addWidget(self.loading_widget, Qt.AlignRight) btn_layout.addWidget(options_button, Qt.AlignRight) layout = create_plugin_layout(btn_layout, self.treewidget) self.setLayout(layout)
def __init__(self, parent=None, spinner=False): """Status bar widget base.""" super().__init__(parent) # Variables self.value = None self._parent = parent # Widget self._icon = self.get_icon() self._pixmap = None self._icon_size = QSize(16, 16) # Should this be adjustable? self.label_icon = QLabel() self.label_value = QLabel() self.spinner = None if spinner: self.spinner = create_waitspinner(size=14, parent=self) # Layout setup layout = QHBoxLayout(self) layout.setSpacing(0) # Reduce space between icon and label layout.addWidget(self.label_icon) layout.addWidget(self.label_value) if spinner: layout.addWidget(self.spinner) self.spinner.hide() if is_dark_interface(): layout.addSpacing(0) else: layout.addSpacing(10) layout.setContentsMargins(0, 0, 0, 0) # Widget setup self.set_icon() # See spyder-ide/spyder#9044. self.text_font = QFont(QFont().defaultFamily(), weight=QFont.Normal) self.label_value.setAlignment(Qt.AlignRight) self.label_value.setFont(self.text_font) # Setup self.set_value('') self.update_tooltip()
def __init__(self, name, plugin, parent=None): if PYQT5: super().__init__(parent=parent, class_parent=plugin) else: QWidget.__init__(self, parent) SpyderWidgetMixin.__init__(self, class_parent=plugin) # Attributes # -------------------------------------------------------------------- self._is_tab = False self._name = name self._plugin = plugin self._parent = parent self._default_margins = None self.is_maximized = None self.is_visible = None self.dock_action = None self.undock_action = None self.close_action = None self._toolbars_already_rendered = False # Attribute used to access the action, toolbar, toolbutton and menu # registries self.PLUGIN_NAME = name # We create our toggle action instead of using the one that comes with # dockwidget because it was not possible to raise and focus the plugin self.toggle_view_action = None self._toolbars = OrderedDict() self._auxiliary_toolbars = OrderedDict() # Widgets # -------------------------------------------------------------------- self.windowwidget = None self.dockwidget = None self._icon = QIcon() self._spinner = None if self.ENABLE_SPINNER: self._spinner = create_waitspinner(size=16, parent=self) self._corner_widget = MainCornerWidget( parent=self, name=PluginMainWidgetWidgets.CornerWidget, ) self._corner_widget.ID = 'main_corner' self._main_toolbar = MainWidgetToolbar( parent=self, title=_("Main widget toolbar"), ) self._main_toolbar.ID = 'main_toolbar' TOOLBAR_REGISTRY.register_reference( self._main_toolbar, self._main_toolbar.ID, self.PLUGIN_NAME, self.CONTEXT_NAME) self._corner_toolbar = MainWidgetToolbar( parent=self, title=_("Main widget corner toolbar"), ) self._corner_toolbar.ID = 'corner_toolbar', TOOLBAR_REGISTRY.register_reference( self._corner_toolbar, self._corner_toolbar.ID, self.PLUGIN_NAME, self.CONTEXT_NAME) self._corner_toolbar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) self._options_menu = self.create_menu( PluginMainWidgetMenus.Options, title=_('Options menu'), ) # Layout # -------------------------------------------------------------------- # These margins are necessary to give some space between the widgets # inside this widget and the window vertical separator. self._margin_left = 1 self._margin_right = 1 self._main_layout = QVBoxLayout() self._toolbars_layout = QVBoxLayout() self._main_toolbar_layout = QHBoxLayout() self._toolbars_layout.setContentsMargins( self._margin_left, 0, self._margin_right, 0) self._toolbars_layout.setSpacing(0) self._main_toolbar_layout.setContentsMargins(0, 0, 0, 0) self._main_toolbar_layout.setSpacing(0) self._main_layout.setContentsMargins(0, 0, 0, 0) self._main_layout.setSpacing(0) # Add inititals layouts self._main_toolbar_layout.addWidget(self._main_toolbar, stretch=10000) self._main_toolbar_layout.addWidget(self._corner_toolbar, stretch=1) self._toolbars_layout.addLayout(self._main_toolbar_layout) self._main_layout.addLayout(self._toolbars_layout, stretch=1)
def __init__(self, name, plugin, parent=None, options=DEFAULT_OPTIONS): super().__init__(parent=parent) # Attributes # -------------------------------------------------------------------- self._options = options self._is_tab = False self._name = name self._plugin = plugin self._parent = parent self._default_margins = None self.is_maximized = None self.is_visible = None self.dock_action = None self.undock_action = None self.close_action = None self._toolbars_already_rendered = False # We create our toggle action instead of using the one that comes with # dockwidget because it was not possible to raise and focus the plugin self.toggle_view_action = None self._toolbars = OrderedDict() self._auxiliary_toolbars = OrderedDict() # Widgets # -------------------------------------------------------------------- self.windowwidget = None self.dockwidget = None self._icon = QIcon() self._spinner = None if self.ENABLE_SPINNER: self._spinner = create_waitspinner(size=16, parent=self) self._corner_widget = MainCornerWidget( parent=self, name=PluginMainWidgetWidgets.CornerWidget, ) self._main_toolbar = MainWidgetToolbar( parent=self, title=_("Main widget toolbar"), ) self._main_toolbar.ID = 'main_toolbar' self._corner_toolbar = MainWidgetToolbar( parent=self, title=_("Main widget corner toolbar"), ) self._corner_toolbar.ID = 'corner_toolbar', self._corner_toolbar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) self._options_menu = self.create_menu( PluginMainWidgetMenus.Options, title=_('Options menu'), ) # Layout # -------------------------------------------------------------------- self._main_layout = QVBoxLayout() self._toolbars_layout = QVBoxLayout() self._main_toolbar_layout = QHBoxLayout() self._toolbars_layout.setContentsMargins(0, 0, 0, 0) self._toolbars_layout.setSpacing(0) self._main_toolbar_layout.setContentsMargins(0, 0, 0, 0) self._main_toolbar_layout.setSpacing(0) self._main_layout.setContentsMargins(0, 0, 0, 0) self._main_layout.setSpacing(0) # Add inititals layouts self._main_toolbar_layout.addWidget(self._main_toolbar, stretch=10000) self._main_toolbar_layout.addWidget(self._corner_toolbar, stretch=1) self._toolbars_layout.addLayout(self._main_toolbar_layout) self._main_layout.addLayout(self._toolbars_layout, stretch=1)
def setup( self, check_all=None, exclude_private=None, exclude_uppercase=None, exclude_capitalized=None, exclude_unsupported=None, excluded_names=None, exclude_callables_and_modules=None, minmax=None, dataframe_format=None, show_callable_attributes=None, show_special_attributes=None, ): """ Setup the namespace browser with provided settings. Args: dataframe_format (string): default floating-point format for DataFrame editor """ assert self.shellwidget is not None self.check_all = check_all self.exclude_private = exclude_private self.exclude_uppercase = exclude_uppercase self.exclude_capitalized = exclude_capitalized self.exclude_unsupported = exclude_unsupported self.exclude_callables_and_modules = exclude_callables_and_modules self.excluded_names = excluded_names self.minmax = minmax self.dataframe_format = dataframe_format self.show_callable_attributes = show_callable_attributes self.show_special_attributes = show_special_attributes if self.editor is not None: self.editor.setup_menu(minmax) self.editor.set_dataframe_format(dataframe_format) self.exclude_private_action.setChecked(exclude_private) self.exclude_uppercase_action.setChecked(exclude_uppercase) self.exclude_capitalized_action.setChecked(exclude_capitalized) self.exclude_unsupported_action.setChecked(exclude_unsupported) self.exclude_callables_and_modules_action.setChecked( exclude_callables_and_modules) self.refresh_table() return self.editor = RemoteCollectionsEditorTableView( self, data=None, minmax=minmax, shellwidget=self.shellwidget, dataframe_format=dataframe_format, show_callable_attributes=show_callable_attributes, show_special_attributes=show_special_attributes) self.editor.sig_option_changed.connect(self.sig_option_changed.emit) self.editor.sig_files_dropped.connect(self.import_data) self.editor.sig_free_memory.connect(self.sig_free_memory.emit) self.setup_option_actions(exclude_private, exclude_uppercase, exclude_capitalized, exclude_unsupported, exclude_callables_and_modules) # Setup toolbar layout. self.tools_layout = QHBoxLayout() toolbar = self.setup_toolbar() for widget in toolbar: self.tools_layout.addWidget(widget) self.tools_layout.addStretch() # Show loading widget self.loading_widget = create_waitspinner(size=16, parent=self) self.editor.sig_open_editor.connect(self.loading_widget.start) self.editor.sig_editor_shown.connect(self.loading_widget.stop) self.tools_layout.addWidget(self.loading_widget) # Options button actions addition and addition to layout self.setup_options_button() # Setup layout. layout = create_plugin_layout(self.tools_layout, self.editor) # Fuzzy search layout finder_layout = QHBoxLayout() close_button = create_toolbutton(self, triggered=self.show_finder, icon=ima.icon('DialogCloseButton')) text_finder = NamespacesBrowserFinder(self.editor, callback=self.editor.set_regex, main=self, regex_base=VALID_VARIABLE_CHARS) self.editor.finder = text_finder finder_layout.addWidget(close_button) finder_layout.addWidget(text_finder) finder_layout.setContentsMargins(0, 0, 0, 0) self.finder = QWidget(self) self.finder.text_finder = text_finder self.finder.setLayout(finder_layout) self.finder.setVisible(False) layout.addWidget(self.finder) self.setLayout(layout) # Local shortcuts self.shortcuts = self.create_shortcuts() self.sig_option_changed.connect(self.option_changed)