Esempio n. 1
0
    def children_item_update(item, name_list):
        item_type = type(item)

        children_item = list()
        if item_type == QStandardItemModel:
            children_item = item.findItems("", Qt.MatchContains)
        else:
            print("start update item: ", item.text())
            row_cnt = item.rowCount()
            for i in range(row_cnt):
                ic = item.child(i)
                if ic is None:
                    print("child item is None???")
                    continue
                children_item.append(ic)

        children = list()
        for child in children_item:
            child_name = child.text()
            children.append(child_name)
        print("children: ", children)

        for name in children:
            if name not in name_list:
                child_index = children.index(name)
                # print("child name: %s, index: %d" % (name, child_index))
                if item_type == QStandardItemModel:
                    item.takeChild(item.child(child_index))
                else:
                    item.takeChild(child_index)
        for name in name_list:
            if name not in children:
                item.appendRow(QStandardItem(QFileIconProvider().icon(QFileIconProvider.Folder), name))
        print("children item update done")
Esempio n. 2
0
    def data(self, index, role=None):
        if not index.isValid():
            return QVariant()
        if role == Qt.DisplayRole:
            item = self.file_items[index.row()]
            if index.column() == 0:
                return item.file_name
            elif index.column() == 1:
                return item.file_path
            elif index.column() == 2:
                return item.file_size
            elif index.column() == 3:
                if type(item.start_time) is datetime:
                    return item.start_time.strftime(STR_DATE_TIME_FORMAT)
                return "-"
            elif index.column() == 4:
                if type(item.end_time) is datetime:
                    return item.end_time.strftime(STR_DATE_TIME_FORMAT)
                return "-"
            elif index.column() == 5:
                return item.codec
            else:
                return QVariant()

        elif role == Qt.DecorationRole:
            item = self.file_items[index.row()]
            if index.column() == 0:
                return QFileIconProvider().icon(item.file_info)
Esempio n. 3
0
 def file_icon_get(filename: str):
     ext = os.path.splitext(filename)[-1]
     type_file = TYPE_FILE_PATH + ext
     if os.path.exists(type_file) is False:
         type_file = TYPE_FILE_PATH + "unknown"
     file_info = QFileInfo(type_file)
     return QFileIconProvider().icon(file_info)
    def data(self, role=Qt.DisplayRole, *args, **kwargs):
        if role == Qt.DisplayRole:
            value = self.collapsed_format(self.value)
            if isinstance(value, str) and value.isnumeric():
                value = int(value)
            if self.field == 'file':
                value = os.path.basename(value)
            return value

        elif role == Qt.DecorationRole:
            if self.field == 'file':
                icon_type = QFileIconProvider.File
                return QFileIconProvider().icon(icon_type)

        elif role == Qt.ToolTipRole:
            if len(self.value) > 1:
                return json.dumps(self.value)

        elif role == Qt.EditRole:
            return json.dumps(self.value)

        elif role == Qt.FontRole:
            fontdb = QFontDatabase()
            if self.field == 'key':
                return fontdb.systemFont(QFontDatabase.FixedFont)
            else:
                return fontdb.systemFont(QFontDatabase.GeneralFont)

        elif role == Qt.UserRole:
            return self.value
Esempio n. 5
0
def listdir(abs_path, include_conceal=True):
    provider = QFileIconProvider()
    try:
        list_dir = os.listdir(abs_path)
    except Exception as e:
        return []
    list_dir.sort()
    file_list = list()
    for file in list_dir:
        item_file = Dict()
        if file.startswith(".") and not include_conceal:
            continue
        abs_file_path = os.path.join(abs_path, file)
        item_file.name = file
        item_file.type = provider.type(QFileInfo(abs_file_path))
        try:
            mtime = os.path.getmtime(abs_file_path)
            item_file.last_time = time.strftime('%Y-%m-%d %H:%M:%S',
                                                time.localtime(int(mtime)))
        except Exception:
            item_file.last_time = ""
        try:
            if item_file.type in ["File Folder", "Folder"]:
                item_file.size = ""
                item_file.raw_size = 0
            else:
                size, unit, s = file_size(abs_file_path)
                item_file.size = str(size) + " " + unit
        except Exception:
            item_file.raw_size = 0
            item_file.size = ""
        file_list.append(item_file)
    Sort_Dict = {1: "type", 2: "name", 3: "last_time", 4: "raw_size"}
    file_list = sorted(file_list, key=lambda x: x[Sort_Dict[1]], reverse=False)
    return file_list
Esempio n. 6
0
    def __init__(self, gateway, folder_name, data, parent):
        super(HistoryItemWidget, self).__init__()
        self.gateway = gateway
        self.data = data
        self.parent = parent

        self.path = data['path']
        self.size = data['size']
        self.action = data['action']
        self.mtime = data['mtime']
        self._thumbnail_loaded = False

        self.setAutoFillBackground(True)

        directory = self.gateway.get_magic_folder_directory(folder_name)
        if directory:
            self.path = os.path.join(directory, self.path)
        self.basename = os.path.basename(os.path.normpath(self.path))

        self.setToolTip("{}\n\nSize: {}\nModified: {}".format(
            self.path, naturalsize(self.size), time.ctime(self.mtime)))

        self.icon = QLabel()
        self.icon.setPixmap(QFileIconProvider().icon(QFileInfo(
            self.path)).pixmap(48, 48))

        self.basename_label = QLabel(self.basename)
        font = QFont()
        if sys.platform == 'darwin':
            font.setPointSize(15)
        else:
            font.setPointSize(11)
        self.basename_label.setFont(font)

        self.details_label = QLabel()
        font = QFont()
        if sys.platform == 'darwin':
            font.setPointSize(13)
        else:
            font.setPointSize(10)
        self.details_label.setFont(font)
        self.details_label.setStyleSheet('color: grey')

        self.button = QPushButton()
        self.button.setIcon(QIcon(resource('dots-horizontal-triple.png')))
        self.button.setStyleSheet('border: none;')
        self.button.clicked.connect(self.parent.on_right_click)
        self.button.hide()

        self.layout = QGridLayout(self)
        self.layout.addWidget(self.icon, 1, 1, 2, 2)
        self.layout.addWidget(self.basename_label, 1, 3)
        self.layout.addWidget(self.details_label, 2, 3)
        self.layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 4, 4)
        self.layout.addWidget(self.button, 1, 5, 2, 2)

        self.update_text()
        QTimer.singleShot(50, self.load_thumbnail)
Esempio n. 7
0
 def setFileIcon(self, path):
     "每当txtPath的值改变时,就设置快捷方式的图标"
     fi = QFileInfo(path)
     if not fi.exists():
         self.shortcutIcon = QIcon(":/images/unknown.png")
     else:
         ip = QFileIconProvider()
         self.shortcutIcon = ip.icon(fi)
     self.btnFace.setIcon(self.shortcutIcon)
Esempio n. 8
0
    def __init__(self, gateway, folder_name, data, parent):
        super().__init__()
        self.gateway = gateway
        self.data = data
        self.parent = parent

        self.path = data["path"]
        self.size = data["size"]
        self.action = data["action"]
        self.mtime = data["mtime"]
        self._thumbnail_loaded = False

        self.setAutoFillBackground(True)

        directory = self.gateway.get_magic_folder_directory(folder_name)
        if directory:
            self.path = os.path.join(directory, self.path)
        self.basename = os.path.basename(os.path.normpath(self.path))

        self.setToolTip(
            "{}\n\nSize: {}\nModified: {}".format(
                self.path, naturalsize(self.size), time.ctime(self.mtime)
            )
        )

        self.icon = QLabel()
        self.icon.setPixmap(
            QFileIconProvider().icon(QFileInfo(self.path)).pixmap(48, 48)
        )

        self.basename_label = QLabel(self.basename)
        self.basename_label.setFont(Font(11))

        self.details_label = QLabel()
        self.details_label.setFont(Font(10))
        palette = self.palette()
        dimmer_grey = BlendedColor(
            palette.text().color(), palette.base().color(), 0.6
        ).name()
        self.details_label.setStyleSheet("color: {}".format(dimmer_grey))

        self.button = QPushButton()
        self.button.setIcon(QIcon(resource("dots-horizontal-triple.png")))
        self.button.setStyleSheet("border: none;")
        self.button.clicked.connect(self.parent.on_right_click)
        self.button.hide()

        self.layout = QGridLayout(self)
        self.layout.addWidget(self.icon, 1, 1, 2, 2)
        self.layout.addWidget(self.basename_label, 1, 3)
        self.layout.addWidget(self.details_label, 2, 3)
        self.layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, 0), 4, 4)
        self.layout.addWidget(self.button, 1, 5, 2, 2)

        self.update_text()
        QTimer.singleShot(50, self.load_thumbnail)
Esempio n. 9
0
 def parseLocalFile(self, parent, name, path):
     if name[0] == '.':
         return
     tmp = QTreeWidgetItem(parent)
     fileInfo = QFileInfo(path)
     fileIcon = QFileIconProvider()
     icon = QIcon(fileIcon.icon(fileInfo))
     tmp.setIcon(0, QIcon(icon))
     tmp.setText(0, name)
     tmp.setText(1, os.path.split(path)[0])
Esempio n. 10
0
 def update_folder_icon(self, folder_name, folder_path, overlay_file=None):
     items = self.findItems(folder_name)
     if items:
         folder_icon = QFileIconProvider().icon(QFileInfo(folder_path))
         folder_pixmap = folder_icon.pixmap(256, 256)
         if overlay_file:
             pixmap = CompositePixmap(folder_pixmap, resource(overlay_file))
         else:
             pixmap = CompositePixmap(folder_pixmap)
         items[0].setIcon(QIcon(pixmap))
Esempio n. 11
0
def dragFile(widget, filename, icon=None, dropactions=Qt.CopyAction):
    """Starts dragging the given local file from the widget."""
    if icon is None or icon.isNull():
        icon = QFileIconProvider().icon(QFileInfo(filename))
    drag = QDrag(widget)
    data = QMimeData()
    data.setUrls([QUrl.fromLocalFile(filename)])
    drag.setMimeData(data)
    drag.setPixmap(icon.pixmap(32))
    drag.exec_(dropactions)
Esempio n. 12
0
 def CreateTree(self, dirs, root, path):
     for i in dirs:
         path_new = path + '/' + i
         if os.path.isdir(path_new):
             fileInfo = QFileInfo(path_new)
             fileIcon = QFileIconProvider()
             icon = QIcon(fileIcon.icon(fileInfo))
             child = QTreeWidgetItem(root)
             child.setText(0, i)
             child.setIcon(0, QIcon(icon))
             dirs_new = file_name(path_new)
             self.CreateTree(dirs_new, child, path_new)
         else:
             fileInfo = QFileInfo(path_new)
             fileIcon = QFileIconProvider()
             icon = QIcon(fileIcon.icon(fileInfo))
             child = QTreeWidgetItem(root)
             child.setText(0, i)
             child.setIcon(0, QIcon(icon))
Esempio n. 13
0
    def Update(self, file):
        # TODO: wtf is this?
        iconprovider = QFileIconProvider()

        fileinfo = QFileInfo(str(file))

        icon = iconprovider.icon(fileinfo)
        iconsize = QSize(self.x, self.y)

        self.widget = QLabel()
        self.widget.setPixmap(icon.pixmap(iconsize))
Esempio n. 14
0
def icon_types(_file, icon: bool = False):
    file_type = os.path.splitext(os.path.split(_file)[1])[1].strip(".")
    ## set image/video icon
    if file_type in json.load(open(base_dir + "api/icons.json")).get("image"):
        return QIcon(_file)

    ## Default System Icons
    else:
        fileInfo = QFileInfo(_file)
        iconProvider = QFileIconProvider()
        icon = iconProvider.icon(fileInfo)
        return icon
Esempio n. 15
0
 def add_item(row, column, item):
     self.tableWidget_6.setItem(
         row, column, QtWidgets.QTableWidgetItem(str(item)))
     self.tableWidget_6.item(row, column).setTextAlignment(
         Qt.AlignHCenter | Qt.AlignVCenter)
     if column == 1:
         file_info = QFileInfo(str(item))
         iconProvider = QFileIconProvider()
         icon = iconProvider.icon(file_info)
         self.tableWidget_6.item(row, column).setIcon(icon)
         self.tableWidget_6.item(row, column).setTextAlignment(
             Qt.AlignLeft | Qt.AlignVCenter)
Esempio n. 16
0
    def _assign_icon(filename, is_dir):
        if filename.endswith("py"):
            # py and mpy
            icon = Icons().tree_python
        else:
            iconProvider = QFileIconProvider()
            if is_dir:
                fileInfo = iconProvider.Folder
            else:
                fileInfo = QFileInfo(filename)
            icon = iconProvider.icon(fileInfo)

        return icon
Esempio n. 17
0
    def __init__(self, data_group, res, extended_selection):
        """Init the class

        Args:
            data_group (HDF5 grup): HDF5 group
            res (qt resolution): size of the app
            extended_selection (bool): allow multiple selection
        """
        super().__init__()
        self.root_item = None
        self.data_group = data_group
        self.iconProvider = QFileIconProvider()
        self.res = res
        self.extended_selection = extended_selection
Esempio n. 18
0
 def __init__(self, name, conn, path, is_dir, size):
     super(RemoteFileSystemNode, self).__init__(name)
     self._name = name
     self._conn = conn
     self.path = path
     self._is_dir = is_dir
     self._populated = not is_dir
     self._show_hidden_files = False
     self.size_item = QStandardItem(sizeof_fmt(size) if not is_dir else '')
     icon_provider = QFileIconProvider()
     if is_dir:
         self.setData(True, RemoteFileSystem.ExpandableRole)
         self.setIcon(icon_provider.icon(QFileIconProvider.Folder))
     else:
         self.setIcon(icon_provider.icon(QFileIconProvider.File))
Esempio n. 19
0
    def add_file(self, file_objects, clear=True):
        if clear:
            self.listview.clear()
        if not file_objects:
            item = QListWidgetItem("No files has the selected tag")
            item.setFlags(Qt.NoItemFlags)
            self.listview.addItem(item)
        for object in file_objects:
            item = QListWidgetItem(object.file_name)
            item.setData(Qt.UserRole, object)

            fileinfo = QFileInfo(object.file_path + "/" + object.file_name)
            iconprovider = QFileIconProvider()
            icon = iconprovider.icon(fileinfo)
            item.setIcon(icon)
            self.listview.addItem(item)
Esempio n. 20
0
 def check_icon_path(self, item):
     if item["type"] in (2, 4):
         if not os.path.exists(item["ico"]):
             save_path = get_file_realpath(
                 os.path.join("data/image/sysico",
                              os.path.splitext(item["url"])[1][1:] +
                              ".ico"))
             print("save_path:" + save_path)
             provider = QFileIconProvider()
             fi = QFileInfo(item["url"])
             icon = provider.icon(fi)
             icon.pixmap(48).save(save_path)
             item["ico"] = save_path
     if item["type"] == 1:
         if not os.path.exists(item["ico"]):
             item["ico"] = get_file_realpath("data/image/firefox64.png")
Esempio n. 21
0
    def open_files_clicked(self):
        files = QFileDialog.getOpenFileNames(
            self, self.tr("Select files"), "",
            "PDF file (*.pdf) ;; All files (*.*)")[0]
        provider = QFileIconProvider()
        self.list_widget.clear()

        for file_path in files:
            file = QFileInfo(file_path)
            item = QListWidgetItem()
            item.setText(file.baseName())
            item.setData(Qt.UserRole, file_path)
            item.setIcon(provider.icon(file))
            self.list_widget.addItem(item)

        self.label_find.setText(
            self.tr("Schedules: ") + str(self.list_widget.count()))
Esempio n. 22
0
 def set_tree(self):
     self.tree.clear()
     path = read_line(configure_file, 1)[:-1]
     print("+" * 10 + path)
     dirs = file_name(path)
     print(dirs)
     fileInfo = QFileInfo(path)
     fileIcon = QFileIconProvider()
     icon = QIcon(fileIcon.icon(fileInfo))
     root = QTreeWidgetItem(self.tree)
     root.setText(0, path.split('/')[-1])
     root.setIcon(0, QIcon(icon))
     self.CreateTree(dirs, root, path)
     self.tree.expandAll()
     # self.setCentralWidget(self.tree)
     # self.tree.clicked.connect(self.onTreeClicked)
     QApplication.processEvents()
Esempio n. 23
0
 def parseLocalDir(self, parent, name, path):
     tmp = QTreeWidgetItem(parent)
     fileInfo = QFileInfo(path)
     fileIcon = QFileIconProvider()
     icon = QIcon(fileIcon.icon(fileInfo))
     tmp.setIcon(0, QIcon(icon))
     tmp.setText(0, name)
     tmp.setText(1, path)
     new = QTreeWidgetItem(tmp)
     new.setText(0, "<NEW DIR>")
     new.setText(1, path)
     for item in os.listdir(path):
         item_path = os.path.join(path, item)
         if os.path.isdir(item_path):
             self.parseLocalDir(parent=tmp, name=item, path=item_path)
         if os.path.isfile(item_path):
             self.parseLocalFile(parent=tmp, name=item, path=item_path)
Esempio n. 24
0
def getShortcutIcon(shortcut):
    if shortcut["icon"]:
        icon = QIcon(shortcut["icon"])
        if not icon.isNull():
            return icon
    iconProvider = QFileIconProvider()
    if shortcut["path"] == COMPUTER_PATH:
        return QIcon(":/images/user-home.png")
    elif shortcut["path"] == DOCUMENTS_PATH:
        documentsIcon = iconProvider.icon(
            QFileInfo(
                QStandardPaths.writableLocation(
                    QStandardPaths.DocumentsLocation)))
        if documentsIcon.isNull():
            return QIcon(":/images/folder-documents.png")
        else:
            return documentsIcon
    elif shortcut["path"] == MUSIC_PATH:
        musicIcon = iconProvider.icon(
            QFileInfo(
                QStandardPaths.writableLocation(QStandardPaths.MusicLocation)))
        if musicIcon.isNull():
            return QIcon(":/images/folder-sound.png")
        else:
            return musicIcon
    elif shortcut["path"] == PICTURES_PATH:
        picturesIcon = iconProvider.icon(
            QFileInfo(
                QStandardPaths.writableLocation(
                    QStandardPaths.PicturesLocation)))
        if picturesIcon.isNull():
            return QIcon(":/images/folder-image.png")
        else:
            return picturesIcon
    else:
        url = QUrl.fromUserInput(shortcut["path"])
        if url.scheme() == "file":
            if os.path.exists(shortcut["path"]):
                icon = iconProvider.icon(QFileInfo(url.toLocalFile()))
                if not icon.isNull():
                    return icon
            return QIcon(":/images/unknown.png")
        else:
            return QIcon(":/images/httpurl.png")
    return QIcon(":/images/unknown.png")
Esempio n. 25
0
    def __updateRow(self, itm=None):
        """
        Private slot to update a download item.
        
        @param itm reference to the download item (DownloadItem)
        """
        if itm is None:
            itm = self.sender()

        if itm not in self.__downloads:
            return

        row = self.__downloads.index(itm)

        if self.__iconProvider is None:
            self.__iconProvider = QFileIconProvider()

        icon = self.__iconProvider.icon(QFileInfo(itm.fileName()))
        if icon.isNull():
            icon = self.style().standardIcon(QStyle.SP_FileIcon)
        itm.setIcon(icon)

        oldHeight = self.downloadsView.rowHeight(row)
        self.downloadsView.setRowHeight(
            row, max(oldHeight,
                     itm.minimumSizeHint().height() * 1.5))

        remove = False
        globalSettings = QWebSettings.globalSettings()
        if not itm.downloading() and \
           globalSettings.testAttribute(QWebSettings.PrivateBrowsingEnabled):
            remove = True

        if itm.downloadedSuccessfully() and \
           self.removePolicy() == DownloadManager.RemoveSuccessFullDownload:
            remove = True

        if remove:
            self.__model.removeRow(row)

        self.cleanupButton.setEnabled(
            (len(self.__downloads) - self.activeDownloads()) > 0)

        # record the change
        self.changeOccurred()
Esempio n. 26
0
    def insertFiles(self, files):
        self.listfiles.clear()

        if len(files) == 0:
            return

        self.__storeFilePath(files[0])

        fileInfo = QFileInfo(files[0])
        fileIcon = QFileIconProvider()
        icon = QIcon(fileIcon.icon(fileInfo))  #获取文件图标

        for index, item in enumerate(files):

            name = os.path.basename(item)
            value = QListWidgetItem(icon, name)

            self.listfiles.insertItem(index, value)
Esempio n. 27
0
    def data(self, role=Qt.DisplayRole, *args, **kwargs):
        if self.column != 0:
            return self.column_data(role, *args, **kwargs)

        if role == Qt.DisplayRole:
            return os.path.basename(self.path)

        elif role == Qt.DecorationRole:
            icon_type = QFileIconProvider.Folder
            return QFileIconProvider().icon(icon_type)

        elif role == Qt.ToolTipRole:
            if self.path != os.path.basename(self.path):
                return self.path

        elif role == Qt.FontRole:
            fontdb = QFontDatabase()
            return fontdb.systemFont(QFontDatabase.GeneralFont)
    def keyReleaseEvent(self,event):
        key = event.key()
        if event.modifiers()== Qt.ControlModifier and key == Qt.Key_V :
            clipboard = QApplication.clipboard()
            mimeData = clipboard.mimeData()
            if mimeData.hasText():
                print("准备粘贴:" + clipboard.text())
                path = clipboard.text()
                item = {}
                if  not path.startswith("file") :
                    item = self.dl_launch_item_detail.get_url_info(path)
                    item["session_id"] = self.cur_session["id"]
                    item["id"] = app_data.insert_launch_item(item)
                    self.add_launch_item(item)
                    return
                
                path = path.replace("file:///","")
                if os.name == "posix" :
                    path = "/" + path
                provider = QFileIconProvider()
                fi = QFileInfo(path)
                icon = provider.icon(fi)
#                     t = icon.pixmap().toImage().text()
                save_path = join(config_dir ,"data/image/sysico",splitext(path)[0]+".ico")
                print("save_path:" + save_path)
                icon.pixmap(48).save(save_path)
                t = icon.name()
                t1 = icon.themeName()
                t2 = icon.themeSearchPaths()
                print("icon path:" + t+"," + t1,t2)
                if not icon.isNull() :
                    item["ico"] = save_path
                item["name"] = basename(path)
                item["url"] = path
                item["type"] = 2
                if not self.cur_session["id"]:
                    QMessageBox.information(self, "新桌面", "新桌面需重启后才能添加启动项")
                    return
                item["session_id"] = self.cur_session["id"]
                print("add other launch item:" ,item)
                item["id"] = app_data.insert_launch_item(item)
                print(item)
                self.add_launch_item(item)
Esempio n. 29
0
 def changeFileIcon(self):
     "用户点击了更换图标按钮。"
     filename, selectedFilter = QFileDialog.getOpenFileName(
         self, self.windowTitle())
     if not filename:
         return
     image = QImage(filename)
     if not image.isNull():
         self.shortcutIcon = QIcon(QPixmap.fromImage(image))
     else:
         ip = QFileIconProvider()
         shortcutIcon = ip.icon(QFileInfo(filename))
         if shortcutIcon.isNull():
             QMessageBox.information(self, self.tr("更换图标"),
                                     self.tr("您选择的文件不包含任何可以使用的图标。"))
             return
         self.shortcutIcon = shortcutIcon
     self.iconPath = filename
     self.btnFace.setIcon(self.shortcutIcon)
Esempio n. 30
-1
 def __init__(self, rows, columns, parent=None):
     super(Model, self).__init__(parent)
     self.services = QIcon(images_dir + "/services.png")
     self.rc = rows
     self.cc = columns
     self.tree = [Node() for node in range(rows)]
     self.iconProvider = QFileIconProvider()