def qfileicon(self, path): """ desc: Gets an filetype icon for a file. arguments: path: The full path to the file. The file must exist. returns: type: QIcon """ try: import fileinspector except ImportError: return QtWidgets.QFileIconProvider().icon(QtCore.QFileInfo(path)) filetype = fileinspector.determine_type(path, output='xdg') if filetype is None: filetype = u'text-x-generic' category = fileinspector.determine_category(filetype) if category is None: fallback = u'text-x-generic' else: fallback = category + u'-x-generic' return QtGui.QIcon.fromTheme(filetype, fallback=QtGui.QIcon.fromTheme(fallback))
def __init__(self, parent, recent_files_manager=None, title='Recent files', icon_provider=None, clear_icon=None): """ :param organisation: name of your organisation as used for your own QSettings :param application: name of your application as used for your own QSettings :param parent: parent object :param icon_provider: Object that provides icon based on the file path. :type icon_provider: QtWidgets.QFileIconProvider :param clear_icon: Clear action icon. This parameter is a tuple made up of the icon theme name and the fallback icon path (from your resources). Default is None, clear action has no icons. """ super(MenuRecentFiles, self).__init__(title, parent) if icon_provider is None: self.icon_provider = QtWidgets.QFileIconProvider() else: self.icon_provider = icon_provider self.clear_icon = clear_icon #: Recent files manager self.manager = recent_files_manager #: List of recent files actions self.recent_files_actions = [] self.update_actions()
def save_current(self, path=None): """ Save current editor content. Leave file to None to erase the previous file content. If the current editor's file_path is None and path is None, the function will call ``QtWidgets.QFileDialog.getSaveFileName`` to get a valid save filename. :param path: path of the file to save, leave it None to overwrite existing file. """ try: if not path and not self._current.file.path: path, filter = QtWidgets.QFileDialog.getSaveFileName( self, _('Choose destination path')) if not path: return False old_path = self._current.file.path code_edit = self._current self._save_editor(code_edit, path) path = code_edit.file.path # path (and icon) may have changed if path and old_path != path: self._ensure_unique_name(code_edit, code_edit.file.name) self.setTabText(self.currentIndex(), code_edit._tab_name) ext = os.path.splitext(path)[1] old_ext = os.path.splitext(old_path)[1] if ext != old_ext or not old_path: icon = QtWidgets.QFileIconProvider().icon( QtCore.QFileInfo(code_edit.file.path)) self.setTabIcon(self.currentIndex(), icon) return True except AttributeError: # not an editor widget pass return False
def __init__(self, filter_=None, fs_engine='qt', icon_provider='internal'): super().__init__() self.current_path = None self.fs_engine = fs_engine self.filter = filter_ if icon_provider == 'internal': self.icons = QtWidgets.QFileIconProvider() self.icon_provider = self.get_icon else: self.icon_provider = icon_provider
def icon(self, type_or_info): if 'linux' in sys.platform: if isinstance(type_or_info, QtCore.QFileInfo): if type_or_info.isDir(): return QtGui.QIcon.fromTheme('folder') else: ret_val = self.mimetype_icon( type_or_info.absoluteFilePath()) return ret_val else: map = { FileIconProvider.File: QtGui.QIcon.fromTheme('text-x-generic'), FileIconProvider.Folder: QtGui.QIcon.fromTheme('folder'), } try: return map[type_or_info] except KeyError: return super().icon(type_or_info) else: return QtWidgets.QFileIconProvider().icon(type_or_info)
def __init__(self, parent=None): super().__init__(parent) layout = QtWidgets.QHBoxLayout(self) self.file_ico_prov = QtWidgets.QFileIconProvider() self.fs_model = FilenameModel('dirs', icon_provider=self.get_icon) pal = self.palette() pal.setColor(QtGui.QPalette.Background, pal.color(QtGui.QPalette.Base)) self.setPalette(pal) self.setAutoFillBackground(True) self.setFrameShape(self.StyledPanel) self.layout().setContentsMargins(4, 0, 0, 0) self.layout().setSpacing(0) # Edit presented path textually self.line_address = QtWidgets.QLineEdit(self) self.line_address.setFrame(False) self.line_address.hide() self.line_address.keyPressEvent_super = self.line_address.keyPressEvent self.line_address.keyPressEvent = self.line_address_keyPressEvent self.line_address.focusOutEvent = self.line_address_focusOutEvent self.line_address.contextMenuEvent_super = self.line_address.contextMenuEvent self.line_address.contextMenuEvent = self.line_address_contextMenuEvent layout.addWidget(self.line_address) # Add QCompleter to address line completer = self.init_completer(self.line_address, self.fs_model) completer.activated.connect(self.set_path) # Container for `btn_crumbs_hidden`, `crumbs_panel`, `switch_space` self.crumbs_container = QtWidgets.QWidget(self) crumbs_cont_layout = QtWidgets.QHBoxLayout(self.crumbs_container) crumbs_cont_layout.setContentsMargins(0, 0, 0, 0) crumbs_cont_layout.setSpacing(0) layout.addWidget(self.crumbs_container) # Hidden breadcrumbs menu button self.btn_crumbs_hidden = QtWidgets.QToolButton(self) self.btn_crumbs_hidden.setAutoRaise(True) self.btn_crumbs_hidden.setPopupMode(QtWidgets.QToolButton.InstantPopup) self.btn_crumbs_hidden.setArrowType(Qt.LeftArrow) self.btn_crumbs_hidden.setStyleSheet("QToolButton::menu-indicator {" "image: none;}") self.btn_crumbs_hidden.setMinimumSize( self.btn_crumbs_hidden.minimumSizeHint()) self.btn_crumbs_hidden.hide() crumbs_cont_layout.addWidget(self.btn_crumbs_hidden) menu = QtWidgets.QMenu(self.btn_crumbs_hidden) # FIXME: menu.aboutToShow.connect(self._hidden_crumbs_menu_show) self.btn_crumbs_hidden.setMenu(menu) # Container for breadcrumbs self.crumbs_panel = QtWidgets.QWidget(self) crumbs_layout = LeftHBoxLayout(self.crumbs_panel) crumbs_layout.widget_state_changed.connect(self.crumb_hide_show) crumbs_layout.setContentsMargins(0, 0, 0, 0) crumbs_layout.setSpacing(0) crumbs_cont_layout.addWidget(self.crumbs_panel) # Clicking on empty space to the right puts the bar into edit mode self.switch_space = QtWidgets.QWidget(self) # s_policy = self.switch_space.sizePolicy() # s_policy.setHorizontalStretch(1) # self.switch_space.setSizePolicy(s_policy) self.switch_space.mouseReleaseEvent = self.switch_space_mouse_up # crumbs_cont_layout.addWidget(self.switch_space) crumbs_layout.set_space_widget(self.switch_space) self.btn_browse = QtWidgets.QToolButton(self) self.btn_browse.setAutoRaise(True) self.btn_browse.setText("...") self.btn_browse.setToolTip("Browse for folder") self.btn_browse.clicked.connect(self._browse_for_folder) layout.addWidget(self.btn_browse) self.setMaximumHeight(self.line_address.height()) # FIXME: self.ignore_resize = False self.path_ = None self.set_path(Path())
def _add_file(self, path): icon = QtWidgets.QFileIconProvider().icon(QtCore.QFileInfo(path)) item = QtWidgets.QListWidgetItem(icon, path) self.listWidget.addItem(item)
def _get_icon(self): return QtWidgets.QFileIconProvider().icon(QtCore.QFileInfo(self.path))
def __init__(self, parent=None): super().__init__(parent) self.os_type = platform.system() self.style_crumbs = StyleProxy( QtWidgets.QStyleFactory.create( QtWidgets.QApplication.instance().style().objectName()), QtGui.QPixmap("iconfinder_icon-ios7-arrow-right_211607.png")) layout = QtWidgets.QHBoxLayout(self) self.file_ico_prov = QtWidgets.QFileIconProvider() self.fs_model = FilenameModel('dirs', icon_provider=self.get_icon) pal = self.palette() pal.setColor(QtGui.QPalette.Background, pal.color(QtGui.QPalette.Base)) self.setPalette(pal) self.setAutoFillBackground(True) self.setFrameShape(self.StyledPanel) self.layout().setContentsMargins(4, 0, 0, 0) self.layout().setSpacing(0) self.path_icon = QtWidgets.QLabel(self) layout.addWidget(self.path_icon) # Edit presented path textually self.line_address = QtWidgets.QLineEdit(self) self.line_address.setFrame(False) self.line_address.hide() self.line_address.keyPressEvent = self.line_address_keyPressEvent self.line_address.focusOutEvent = self.line_address_focusOutEvent self.line_address.contextMenuEvent = self.line_address_contextMenuEvent layout.addWidget(self.line_address) # Add QCompleter to address line completer = self.init_completer(self.line_address, self.fs_model) completer.activated.connect(self.set_path) # Container for `btn_crumbs_hidden`, `crumbs_panel`, `switch_space` self.crumbs_container = QtWidgets.QWidget(self) crumbs_cont_layout = QtWidgets.QHBoxLayout(self.crumbs_container) crumbs_cont_layout.setContentsMargins(0, 0, 0, 0) crumbs_cont_layout.setSpacing(0) layout.addWidget(self.crumbs_container) # Monitor breadcrumbs under cursor and switch popup menus self.mouse_pos_timer = QtCore.QTimer(self) self.mouse_pos_timer.timeout.connect(self.mouse_pos_timer_event) # Hidden breadcrumbs menu button self.btn_root_crumb = QtWidgets.QToolButton(self) self.btn_root_crumb.setAutoRaise(True) self.btn_root_crumb.setPopupMode(QtWidgets.QToolButton.InstantPopup) self.btn_root_crumb.setArrowType(Qt.RightArrow) self.btn_root_crumb.setStyleSheet(style_root_toolbutton) self.btn_root_crumb.setMinimumSize( self.btn_root_crumb.minimumSizeHint()) crumbs_cont_layout.addWidget(self.btn_root_crumb) menu = QtWidgets.QMenu(self.btn_root_crumb) # FIXME: menu.aboutToShow.connect(self._hidden_crumbs_menu_show) menu.aboutToHide.connect(self.mouse_pos_timer.stop) self.btn_root_crumb.setMenu(menu) self.init_rootmenu_places(menu) # Desktop, Home, Downloads... self.update_rootmenu_devices() # C:, D:... # Container for breadcrumbs self.crumbs_panel = QtWidgets.QWidget(self) crumbs_layout = LeftHBoxLayout(self.crumbs_panel) crumbs_layout.widget_state_changed.connect(self.crumb_hide_show) crumbs_layout.setContentsMargins(0, 0, 0, 0) crumbs_layout.setSpacing(0) crumbs_cont_layout.addWidget(self.crumbs_panel) # Clicking on empty space to the right puts the bar into edit mode self.switch_space = QtWidgets.QWidget(self) # s_policy = self.switch_space.sizePolicy() # s_policy.setHorizontalStretch(1) # self.switch_space.setSizePolicy(s_policy) self.switch_space.mouseReleaseEvent = self.switch_space_mouse_up # crumbs_cont_layout.addWidget(self.switch_space) crumbs_layout.set_space_widget(self.switch_space) self.btn_browse = QtWidgets.QToolButton(self) self.btn_browse.setAutoRaise(True) self.btn_browse.setText("...") self.btn_browse.setToolTip("Browse for folder") self.btn_browse.clicked.connect(self._browse_for_folder) layout.addWidget(self.btn_browse) self.setMaximumHeight(self.line_address.height()) # FIXME: self.ignore_resize = False self.path_ = None self.set_path(Path())
# -*- coding: utf-8 -*- import os import re from qtpy import QtCore, QtGui, QtWidgets from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.automap import automap_base from sqlalchemy.schema import Column, Table, MetaData from sqlalchemy.types import Integer, String, Boolean from sqlalchemy.orm import sessionmaker from sqlalchemy.sql import text, select, and_, or_, not_ # from sqlalchemy_views import CreateView, DropView Base = declarative_base() echo = False icon_provider = QtWidgets.QFileIconProvider() class ProgressBar(QtWidgets.QProgressBar): ''' プログレスバー ''' __idx = 0 app = QtWidgets.QApplication def __init__(self, maximum, parent=None): super(ProgressBar, self).__init__(parent) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint) self.setWindowTitle('Search files...')