コード例 #1
0
    def create_node(self,
                    file_name: str,
                    size,
                    date: datetime.datetime,
                    folder=False) -> tuple:
        if folder:
            icon = QtWidgets.QFileIconProvider().icon(
                QtWidgets.QFileIconProvider.Folder)
        else:
            file_info = QtCore.QFileInfo(file_name)
            icon = QtWidgets.QFileIconProvider().icon(file_info)
        item_name = QtGui.QStandardItem(icon, self.name(file_name))
        item_date = QtGui.QStandardItem('{:%d.%m.%Y  %H:%M:%S}'.format(date))

        return item_name, item_date
コード例 #2
0
    def handleDirectoryChangedSlot( self, _s_directory ):
        self.ui.directoryListWidget.clear()
        self.s_currentDirectory = os.path.normpath( os.path.abspath( str(_s_directory) ) )
        self.ui.urlLineEdit.setText( self.s_currentDirectory )
        o_qdir = QtCore.QDir( self.s_currentDirectory )

        # Mise a jour liste des repertoires
        #---------------------------------------------------------------
        o_qdir.setFilter( QtCore.QDir.Dirs )
        t_dirList = o_qdir.entryList()

        if len(t_dirList) > 0:
            self.ui.directoryListWidget.setEnabled(True)
            self.ui.directoryListWidget.addItems( t_dirList )
            o_qFileIconProvider = QtWidgets.QFileIconProvider()

            for o_item in self.iterAllDirectories():
                o_item.setIcon( o_qFileIconProvider.icon( QtCore.QFileInfo(o_qdir, o_item.text()) ) )
        else:
            self.ui.directoryListWidget.setEnabled(False)

        # Mise a jour de la liste de tous les fichiers (hors filtre) contenu
        # dans le repertoire courant
        #---------------------------------------------------------------
        o_qdir.setFilter( QtCore.QDir.Files | QtCore.QDir.NoDotAndDotDot )
        self.t_allFilesInCurrentDirectory = o_qdir.entryList()
        self.updateFileListWidget()
コード例 #3
0
    def add_file(self, filename):
        """
        Add a file or directory to this widget.
        """
        if filename not in self.filenames:
            self.filenames.append(filename)

            fileinfo = QtCore.QFileInfo(filename)
            basename = os.path.basename(filename.rstrip('/'))
            ip = QtWidgets.QFileIconProvider()
            icon = ip.icon(fileinfo)

            if os.path.isfile(filename):
                size = helpers.human_readable_filesize(fileinfo.size())
            else:
                size = helpers.human_readable_filesize(
                    helpers.dir_size(filename))
            item_name = '{0:s} ({1:s})'.format(basename, size)
            item = QtWidgets.QListWidgetItem(item_name)
            item.setToolTip(size)

            item.setIcon(icon)
            self.addItem(item)

            self.files_updated.emit()
コード例 #4
0
    def add_file(self, filename):
        """
        Add a file or directory to this widget.
        """
        if filename not in self.filenames:
            if not os.access(filename, os.R_OK):
                Alert(strings._("not_a_readable_file", True).format(filename))
                return

            self.filenames.append(filename)

            fileinfo = QtCore.QFileInfo(filename)
            basename = os.path.basename(filename.rstrip('/'))
            ip = QtWidgets.QFileIconProvider()
            icon = ip.icon(fileinfo)

            if os.path.isfile(filename):
                size = common.human_readable_filesize(fileinfo.size())
            else:
                size = common.human_readable_filesize(
                    common.dir_size(filename))
            item_name = '{0:s} ({1:s})'.format(basename, size)
            item = QtWidgets.QListWidgetItem(item_name)
            item.setToolTip(size)

            item.setIcon(icon)
            self.addItem(item)

            self.files_updated.emit()
コード例 #5
0
ファイル: h5xplorer.py プロジェクト: DeepRank/h5xplorer
    def __init__(self,
                 data_file,
                 res,
                 func_menu,
                 baseimport=None,
                 extended_selection=False,
                 parent=None):

        super(HDF5Browser, self).__init__(parent)

        self.setWindowTitle("h5Xplorer")
        self.data_file = data_file
        self.res = res
        ip = QtWidgets.QFileIconProvider()
        fileinfo = QtCore.QFileInfo(data_file.name)
        icon = ip.icon(QFileIconProvider.Drive)

        # the tree widget
        if func_menu is None:

            def func_menu(a, b, c):
                return None

        self.treeWidget = HDF5TreeWidget(data_file,
                                         res=self.res,
                                         menu=func_menu,
                                         extended_selection=extended_selection,
                                         parent=self)
        self.selection_model = self.treeWidget.selectionModel()

        # push button to load data
        self.load_tree_button = QtWidgets.QPushButton(
        )  # Create a refresh button
        self.load_tree_button.setIcon(icon)
        self.load_tree_button.setIconSize(QtCore.QSize(24, 24))
        self.load_tree_button.clicked.connect(self.load_new_data)

        #  widget that contains the toolbar and the treeview
        self.treelayoutwidget = QtWidgets.QWidget()
        self.treelayoutwidget.setLayout(QtWidgets.QVBoxLayout())
        self.treelayoutwidget.layout().addWidget(self.treeWidget)
        self.treelayoutwidget.layout().addWidget(self.load_tree_button)

        # the Ipython console
        self.ipyConsole = QIPythonWidget(baseimport=baseimport)

        # make the splitt window
        splitter = QtWidgets.QSplitter()
        # Add newly constructed widget (treeview and button) to the splitter
        splitter.addWidget(self.treelayoutwidget)
        splitter.addWidget(self.ipyConsole)
        self.setLayout(QtWidgets.QHBoxLayout())
        self.layout().addWidget(splitter)

        # make the connection between the tree and the iPython console
        self.ipyConsole.import_value(self.treeWidget)
コード例 #6
0
    def __init__(self):
        super().__init__()

        self._fetch_request_count = 0

        self.root_item = FileItem("", True)

        self.columnCount = 4

        icon_provider = QtWidgets.QFileIconProvider()
        self.file_icon = QtGui.QIcon('gui/model_view_components/file.png')
        self.folder_icon = icon_provider.icon(
            QtWidgets.QFileIconProvider.Folder)
コード例 #7
0
    def setPath(self, path):
        self.path = path

        dir_tools = QtCore.QDir(path)
        self.setWindowTitle(dir_tools.absolutePath())
        # print(dir_tools.path())

        #设置行数
        self.tableWidget.setRowCount(0)

        line_number = 0
        files = []
        #遍历目录
        for i in range(dir_tools.count()):
            if (dir_tools[i] == "."):
                continue

            #获取文件信息
            file_info = QtCore.QFileInfo(path + "/" + dir_tools[i])
            icon_provider = QtWidgets.QFileIconProvider()
            icon = icon_provider.icon(file_info)
            file_size = file_info.size() / 1024

            if (file_info.isDir()):
                self.tableWidget.insertRow(line_number)
                item = QtWidgets.QTableWidgetItem(dir_tools[i])
                item.setIcon(icon)
                item.setData(QtCore.Qt.UserRole,
                             dir_tools.absolutePath() + "\\" + dir_tools[i])
                self.tableWidget.setItem(line_number, 0, item)
                line_number += 1
            else:
                obj_file = {}
                obj_file['name'] = dir_tools[i]
                obj_file['path'] = dir_tools.absolutePath(
                ) + "/" + dir_tools[i]
                obj_file['icon'] = icon
                obj_file['file_size'] = file_size
                files.append(obj_file)

        for o in files:
            self.tableWidget.insertRow(line_number)
            item = QtWidgets.QTableWidgetItem(o['name'])
            item.setIcon(o['icon'])
            item.setData(QtCore.Qt.UserRole, o['path'])
            self.tableWidget.setItem(line_number, 0, item)

            item = QtWidgets.QTableWidgetItem("%.2f KB" % o['file_size'])
            self.tableWidget.setItem(line_number, 1, item)

            line_number += 1
コード例 #8
0
    def __init__(self, dirname):
        super().__init__()
        self._name = dirname

        self.setText(self._name)
        self.setToolTip(self._name)

        icon = QtWidgets.QFileIconProvider.Folder
        icon = QtWidgets.QFileIconProvider().icon(icon)
        self.setIcon(icon)

        self.setSelectable(True)
        self.setEditable(False)
        self.setEnabled(True)
コード例 #9
0
ファイル: tool_bar.py プロジェクト: sbuergers/spikely
def create_tool_bar(main_win):
    tool_bar = QtWidgets.QToolBar(main_win)
    tool_bar.setMovable(False)
    tool_bar.setFloatable(False)

    folder_act = QtWidgets.QAction(
        QtWidgets.QFileIconProvider().icon(QtWidgets.QFileIconProvider.Folder),
        'Select Folder', main_win)
    folder_act.setStatusTip(
        'Choose folder and copy path into clipboard '
        'to enable pasting path into an element parameter field')  # noqa: E128
    folder_act.triggered.connect(_perform_folder_action)
    tool_bar.addAction(folder_act)

    file_act = QtWidgets.QAction(
        QtWidgets.QFileIconProvider().icon(QtWidgets.QFileIconProvider.File),
        'Select File', main_win)
    file_act.setStatusTip(
        'Choose file and copy path into clipboard '
        'to enable pasting path into an element parameter field')  # noqa: E128
    file_act.triggered.connect(_perform_file_action)
    tool_bar.addAction(file_act)

    return tool_bar
コード例 #10
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle('Visualizador de logs')
        self.setMinimumSize(1080, 720)

        fileinf = QtCore.QFileInfo(
            QtWidgets.QApplication.instance().arguments()[0])

        self.setWindowIcon(QtWidgets.QFileIconProvider().icon(fileinf))
        self.setWindowIcon(QtGui.QIcon(ICON_FILE))

        self.tabPresenters = []

        self.information = opt.loadConfigFile(CONFIG_FILE)

        menuBar = QtWidgets.QMenuBar(self)

        self.criaMenuArquivo(menuBar)
        self.criaMenuEditar(menuBar)
        self.criaMenuOpcoes(menuBar)
        self.setMenuBar(menuBar)

        self.main_widget = QtWidgets.QWidget(self)

        # Cria tab para configuração do plot
        self.widgetConfigPlot = configWidgets.WidgetConfig(None)
        self.widgetConfigPlot.setWindowFlags(
            QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowMinimizeButtonHint
            | QtCore.Qt.WindowMaximizeButtonHint)

        self.tabWidgetPlots = TabWidget(self)
        # self.tabWidgetPlots.cl
        # Cria o layout
        layout = QtWidgets.QHBoxLayout()
        layout.addWidget(self.tabWidgetPlots)

        self.main_widget.setLayout(layout)
        self.setCentralWidget(self.main_widget)

        pg.setConfigOptions(antialias=True)
        pg.setConfigOption('background', '#FFF')

        # self.widgetConfigPlot.sigRemovePlot.connect(lambda: self.removerPlot(self.widgetConfigPlot.plotPresenter))
        self.widgetConfigPlot.setEnabled(False)

        self.__firstFile__ = True
コード例 #11
0
    def create_information(self):
        self.information_widget = QtWidgets.QWidget()
        self.information_icon_lbl = QtWidgets.QLabel()
        self.information_icon_lbl.setPixmap(QtWidgets.QFileIconProvider().icon(
            QtCore.QFileInfo(self.path)).pixmap(80, 80))
        self.information_icon_lbl.setAlignment(QtCore.Qt.AlignCenter)
        self.information_name_lbl = QtWidgets.QLabel()

        if len(self.file_name) < 25:
            name = '<b>{name}</b>'.format(name=self.file_name)
        else:
            name = '<b>{name:.5}...</b>'.format(name=self.file_name)
            self.information_name_lbl.setToolTip(self.file_name)

        self.information_name_lbl.setText(name)
        self.information_name_lbl.setAlignment(QtCore.Qt.AlignCenter)
        self.information_mimetype_lbl = QtWidgets.QLabel(
            mimetypes.guess_type(self.path)[0])
        self.information_mimetype_lbl.setAlignment(QtCore.Qt.AlignCenter)
コード例 #12
0
    def __init__(self, key_obj):
        super().__init__()
        self._obj = key_obj

        self.setText(self.key)
        self.setToolTip(self.key)

        font = QtGui.QFontDatabase.FixedFont
        font = QtGui.QFontDatabase().systemFont(font)
        self.setFont(font)

        icon = QtWidgets.QFileIconProvider.File
        icon = QtWidgets.QFileIconProvider().icon(icon)
        self.setIcon(icon)

        self.setSelectable(True)
        self.setEditable(False)
        self.setEnabled(True)
        self.setFlags(self.flags() | Qt.Qt.ItemNeverHasChildren)
コード例 #13
0
    def paint(self, painter, option, index):
        filePath = self.model.filePath(index)
        fileName = self.model.fileName(index)
        r = option.rect

        img = QtGui.QPixmap(filePath)
        if img.isNull():
            # If not image file, try to load icon with QFileIconProvider
            # according to file type (extension name).
            # Currently not work as intended.
            fileInfo = self.model.fileInfo(index)
            icon = QtWidgets.QFileIconProvider().icon(fileInfo)
            img = icon.pixmap(QtCore.QSize(32, 32))

        # Scale to height, align center horizontally, align bottom vertically.
        if img.height() > self.thumbHeight:
            img = img.scaledToHeight(self.thumbHeight, Qt.SmoothTransformation)
        if img.width() > self.thumbHeight:
            img = img.scaledToWidth(self.thumbHeight, Qt.SmoothTransformation)
            
        imgLeft = (self.width - img.width()) / 2
        imgTop = self.thumbHeight - img.height()
        painter.drawPixmap(r.left() + imgLeft, r.top() + imgTop, img)

        rect = QtCore.QRect(r.left(), r.top() + self.thumbHeight,
                            self.width, self.nameHeight)
        flag = Qt.AlignHCenter | Qt.TextWrapAnywhere
        
        # get the bounding rectangle of the fileName
        bdRect = painter.boundingRect(rect, flag, fileName)
        if bdRect.height() < rect.height():
            rect = bdRect

        if option.state & QtWidgets.QStyle.State_Selected:
            painter.setBrush(self.parent().palette().highlight())
            painter.drawRoundedRect(rect, 5, 5)
            pen = QtGui.QPen(self.parent().palette().highlightedText(), 1, Qt.SolidLine)
        else:
            pen = QtGui.QPen(self.parent().palette().text(), 1, Qt.SolidLine)

        painter.setPen(pen)
        painter.drawText(rect, flag, fileName)
コード例 #14
0
    def updateFileListWidget( self ):
        self.ui.fileListWidget.clear()
        o_rx = QtCore.QRegExp( self.s_currentFilter )
        o_rx.setPatternSyntax( QtCore.QRegExp.Wildcard )

        # On filtre avec exactMatch (la fonction filter de QStringList n'applique pas un exact match)
        #t_filteredFileList = self.t_allFilesInCurrentDirectory.filter( o_rx )
        t_filteredFileList = [ f for f in self.t_allFilesInCurrentDirectory
                               if o_rx.exactMatch(f)
                               ]

        if len(t_filteredFileList) > 0:
            self.ui.fileListWidget.setEnabled(True)
            self.ui.fileListWidget.addItems( t_filteredFileList )
            o_qdir = QtCore.QDir( self.s_currentDirectory )
            o_qFileIconProvider = QtWidgets.QFileIconProvider()

            for o_item in self.iterAllFiles():
                o_item.setIcon( o_qFileIconProvider.icon( QtCore.QFileInfo(o_qdir, o_item.text()) ) )
        else:
            self.ui.fileListWidget.setEnabled(False)
コード例 #15
0
ファイル: iconfactory.py プロジェクト: cbrunet/ouf
 def __init__(self):
     self.provider = QtWidgets.QFileIconProvider()
コード例 #16
0
    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,
                                      breadcrumbs=self)

        self.__paletteBase = None
        self.__paletteHighlighted = None
        self.updatePalette()

        self.__isHighlighted = False
        self.__hiddenPath = False

        self.__quickRef = None

        self.__iconSize = QtCore.QSize(
            32, 32)  # px, size of generated semi-transparent icons

        self.setPalette(self.__paletteBase)

        self.setFrameShape(self.NoFrame)
        self.layout().setContentsMargins(0, 0, 0, 0)
        self.layout().setSpacing(0)

        self.font = QFont()
        self.font.setPointSize(9)
        self.font.setFamily('DejaVu Sans Mono')

        # A label used to display view name (when view reference is used)
        self.viewName = QtWidgets.QLabel(self)
        self.viewName.setFont(self.font)
        self.viewName.hide()
        self.viewName.mousePressEvent = self.viewName_mousePressEvent

        # Edit presented path textually
        self.line_address = QtWidgets.QLineEdit(self)
        self.line_address.setFrame(False)
        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
        self.line_address.setFont(self.font)
        self.line_address.hide()

        layout.addWidget(self.viewName)
        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)
        menu.setFont(self.font)
        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)
        self.btn_browse.clicked.connect(self.__clicked)
        sp = self.btn_browse.sizePolicy()
        sp.setVerticalPolicy(sp.Minimum)
        self.btn_browse.setSizePolicy(sp)
        layout.addWidget(self.btn_browse)

        # Grum999: remove setMaximumHeight(), consider that sizePolicy of parent will define height
        #self.setMaximumHeight(self.line_address.height())  # FIXME:

        self.ignore_resize = False
        self.path_ = None
        self.set_path(Path())
コード例 #17
0
    def __init__(self, settings, parent, style=None):
        super(Workspace, self).__init__(parent)
        self._settings = settings
        self.header().close()
        self.padding_right = 32

        # QStyle, such as QtWidgets.QStyleFactory.create('windows')
        self.qstyle = style
        # QT BUG, must keep reference or crash
        self.iconProvider = QtWidgets.QFileIconProvider()

        self.setExpandsOnDoubleClick(True)

        self.itemActivated.connect(self.onItemActivated)
        self.currentItemChanged.connect(self.onCurrentItemChanged)
        # popup menu
        g_action = GlobalAction()

        action = QtWidgets.QAction(self.tr('reStructuredText'), self)
        action.triggered.connect(partial(self.onNewFile, '.rst'))
        cmd = g_action.register('new_rst', action)
        cmd.setText(self.tr('reStructuredText'))
        cmd.setShortcut(QtGui.QKeySequence.New)
        cmd.setIcon(QtGui.QIcon.fromTheme('document-new'))

        action = QtWidgets.QAction(self.tr('Markdown'), self)
        action.triggered.connect(partial(self.onNewFile, '.md'))
        cmd = g_action.register('new_md', action)
        cmd.setText(self.tr('Markdown'))

        action = QtWidgets.QAction(self.tr('New &directory'), self)
        action.triggered.connect(self.onNewDirectory)
        cmd = g_action.register('new_dir', action)
        cmd.setText(self.tr('New Directory'))
        cmd.setIcon(QtGui.QIcon.fromTheme('folder-new'))

        action = QtWidgets.QAction(self.tr('&Rename...'), self)
        action.triggered.connect(self.onRename)
        cmd = g_action.register('rename', action)
        cmd.setText(self.tr('Rename...'))

        action = QtWidgets.QAction(self.tr('Delete'), self)
        action.triggered.connect(self.onDelete)
        cmd = g_action.register('delete', action)
        cmd.setText(self.tr('Delete'))

        action = QtWidgets.QAction(self.tr('Refresh'), self)
        action.triggered.connect(self.onRefresh)
        cmd = g_action.register('refresh', action)
        cmd.setText(self.tr('Refresh'))
        cmd.setIcon(QtGui.QIcon.fromTheme('view-refresh'))

        action = QtWidgets.QAction(self.tr('Windows Explorer'), self)
        action.triggered.connect(self.onWindowsExplorer)
        cmd = g_action.register('explorer', action)
        cmd.setText(self.tr('Windows Explorer'))

        action = QtWidgets.QAction(self.tr('Open Workspace'), self)
        action.triggered.connect(self.onOpenWorkspace)
        cmd = g_action.register('open_workspace', action)
        cmd.setText(self.tr('Open Workspace'))
        cmd.setIcon(QtGui.QIcon.fromTheme('folder-open'))

        self.popupMenu = QtWidgets.QMenu(self)

        submenu = self.popupMenu.addMenu(self.tr('New'))
        submenu.addAction(self.action('new_rst'))
        submenu.addAction(self.action('new_md'))
        self.popupMenu.addMenu(submenu)

        self.popupMenu.addAction(self.action('new_dir'))
        self.popupMenu.addSeparator()
        self.popupMenu.addAction(self.action('rename'))
        self.popupMenu.addAction(self.action('delete'))
        self.popupMenu.addSeparator()
        self.popupMenu.addAction(self.action('refresh'))
        self.popupMenu.addAction(self.action('explorer'))
        self.popupMenu.addSeparator()
        # drag & drop
        self.setDragEnabled(True)
        self.setDropIndicatorShown(True)
        self.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
        self.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)

        value = self._settings.value('workspace/workspace', type=str)
        for v in value.split(';'):
            if not v:
                continue
            path, _, expand = v.rpartition(':')
            self.appendRootPath(path, expand == 'True')
        # first root item is currrent item.
        if self.topLevelItemCount() > 0:
            root = self.topLevelItem(0)
            self.setCurrentItem(root)
コード例 #18
0
# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 31 16:23:13 2018

@author: samschott
"""
import sys
import os
import re
import platform
from PyQt5 import QtWidgets, QtCore, QtGui

_root = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))

_icon_provider = QtWidgets.QFileIconProvider()

APP_ICON_PATH = _root + "/Maestral.png"
TRAY_ICON_PATH_SVG = _root + "/maestral-icon-{0}-{1}.svg"
TRAY_ICON_PATH_PNG = _root + "/maestral-icon-{0}-{1}.png"

FACEHOLDER_PATH = _root + "/faceholder.png"

FOLDERS_DIALOG_PATH = _root + "/folders_dialog.ui"
SETUP_DIALOG_PATH = _root + "/setup_dialog.ui"
SETTINGS_WINDOW_PATH = _root + "/settings_window.ui"
UNLINK_DIALOG_PATH = _root + "/unlink_dialog.ui"
RELINK_DIALOG_PATH = _root + "/relink_dialog.ui"
REBUILD_INDEX_DIALOG_PATH = _root + "/rebuild_index_dialog.ui"
SYNC_ISSUES_WINDOW_PATH = _root + "/sync_issues_window.ui"
SYNC_ISSUE_WIDGET_PATH = _root + "/sync_issue_widget.ui"
コード例 #19
0
ファイル: file_selection.py プロジェクト: mfkiwl/onionshare
    def add_file(self, filename):
        """
        Add a file or directory to this widget.
        """
        filenames = []
        for index in range(self.count()):
            filenames.append(self.item(index).filename)

        if filename not in filenames:
            if not os.access(filename, os.R_OK):
                Alert(self.common, strings._("not_a_readable_file").format(filename))
                return

            fileinfo = QtCore.QFileInfo(filename)
            ip = QtWidgets.QFileIconProvider()
            icon = ip.icon(fileinfo)

            if os.path.isfile(filename):
                size_bytes = fileinfo.size()
                size_readable = self.common.human_readable_filesize(size_bytes)
            else:
                size_bytes = self.common.dir_size(filename)
                size_readable = self.common.human_readable_filesize(size_bytes)

            # Create a new item
            item = QtWidgets.QListWidgetItem()
            item.setIcon(icon)
            item.size_bytes = size_bytes

            # Item's filename attribute and size labels
            item.filename = filename
            item_size = QtWidgets.QLabel(size_readable)
            item_size.setStyleSheet(self.common.gui.css["share_file_list_item_size"])

            item.basename = os.path.basename(filename.rstrip("/"))
            # Use the basename as the method with which to sort the list
            metrics = QtGui.QFontMetrics(item.font())
            elided = metrics.elidedText(
                item.basename, QtCore.Qt.ElideRight, self.sizeHint().width()
            )
            item.setData(QtCore.Qt.DisplayRole, elided)

            # Item's delete button
            def delete_item():
                itemrow = self.row(item)
                self.takeItem(itemrow)
                self.files_updated.emit()

            item.item_button = QtWidgets.QPushButton()
            item.item_button.setDefault(False)
            item.item_button.setFlat(True)
            item.item_button.setIcon(
                QtGui.QIcon(self.common.get_resource_path("images/file_delete.png"))
            )
            item.item_button.clicked.connect(delete_item)
            item.item_button.setSizePolicy(
                QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed
            )

            # Item info widget, with a white background
            item_info_layout = QtWidgets.QHBoxLayout()
            item_info_layout.setContentsMargins(0, 0, 0, 0)
            item_info_layout.addWidget(item_size)
            item_info_layout.addWidget(item.item_button)
            item_info = QtWidgets.QWidget()
            item_info.setObjectName("item-info")
            item_info.setLayout(item_info_layout)

            # Create the item's widget and layouts
            item_hlayout = QtWidgets.QHBoxLayout()
            item_hlayout.addStretch()
            item_hlayout.addWidget(item_info)
            widget = QtWidgets.QWidget()
            widget.setLayout(item_hlayout)

            item.setSizeHint(widget.sizeHint())

            self.addItem(item)
            self.setItemWidget(item, widget)

            self.files_updated.emit()
コード例 #20
0
ファイル: Global.py プロジェクト: blackPantherOS/PyCoder
def iconFromPath(path):
    fileInfo = QtCore.QFileInfo(path)
    iconProvider = QtWidgets.QFileIconProvider()
    icon = iconProvider.icon(fileInfo)

    return icon