def __init__(self, fileInfo, _parent = None):
        """Initializes data for the model."""

        self._noteFile = QFileInfo(fileInfo)
        q = QFileIconProvider()
        self._icon = q.icon(self._noteFile)
        self._parent = _parent
Esempio n. 2
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. 3
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. 4
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. 5
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. 6
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. 7
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. 8
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. 9
0
	def get_external_file_icon():
		if gui_constants._REFRESH_EXTERNAL_VIEWER:
			if os.path.exists(gui_constants.GALLERY_EXT_ICO_PATH):
				os.remove(gui_constants.GALLERY_EXT_ICO_PATH)
			info = QFileInfo(gui_constants.EXTERNAL_VIEWER_PATH)
			icon =  QFileIconProvider().icon(info)
			pixmap = icon.pixmap(QSize(32, 32))
			pixmap.save(gui_constants.GALLERY_EXT_ICO_PATH, quality=100)
			gui_constants._REFRESH_EXTERNAL_VIEWER = False

		return QIcon(gui_constants.GALLERY_EXT_ICO_PATH)
Esempio n. 10
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. 11
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. 12
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. 13
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. 14
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. 15
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. 16
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. 17
0
    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. 18
0
 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()
Esempio n. 19
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)
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 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. 22
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. 23
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. 24
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. 25
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()))
    def __init__(self, dirPath):
        """Initialize data for the model."""

        self._notebookDir = QFileInfo(dirPath)  #store path to the notebook as a 'QFileInfo' for added flexibility
        q = QFileIconProvider()                 #objec used to create model display icon
        self._icon = q.icon(self._notebookDir)  #create model display icon
        self._notes = []                        #initialize empty list of notes

        notebookPath = self._notebookDir.absoluteFilePath() #get the absolute path to the notebook

        #load all the notes inside this notebook
        for item in sorted(os.listdir(notebookPath)):               #for every item in the notebook

            itemPath = os.path.join(notebookPath, item)         #get absolute path to the item

            if os.path.isfile(itemPath):                        #if the item is a file/note
                self._notes.append( QuarkNoteModel(itemPath, self) )    #append a new note to the notes list
Esempio n. 27
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. 28
0
	def refresh_default_icon():

		if os.path.exists(gui_constants.GALLERY_DEF_ICO_PATH):
			os.remove(gui_constants.GALLERY_DEF_ICO_PATH)

		def get_file(n):
			gallery = gallerydb.GalleryDB.get_gallery_by_id(n)
			if not gallery:
				return False
			file = ""
			if gallery.path.endswith(tuple(ARCHIVE_FILES)):
				zip = ArchiveFile(gallery.path)
				for name in zip.namelist():
					if name.endswith(tuple(IMG_FILES)):
						folder = os.path.join(
							gui_constants.temp_dir,
							'{}{}'.format(name, n))
						zip.extract(name, folder)
						file = os.path.join(
							folder, name)
						break;
			else:
				for name in os.listdir(gallery.chapters[0]):
					if name.endswith(tuple(IMG_FILES)):
						file = os.path.join(
							gallery.chapters[0], name)
						break;
			return file

		# TODO: fix this! (When there are no ids below 300? (because they go deleted))
		for x in range(1, 300):
			try:
				file = get_file(x)
				break
			except FileNotFoundError:
				continue
			except CreateZipFail:
				continue

		if not file:
			return None
		icon = QFileIconProvider().icon(QFileInfo(file))
		pixmap = icon.pixmap(QSize(32, 32))
		pixmap.save(gui_constants.GALLERY_DEF_ICO_PATH, quality=100)
		return True
Esempio n. 29
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. 30
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. 31
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. 32
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. 33
0
    def __init__(self, view):
        super().__init__(0, 5)
        self.view = view
        self.gui = self.view.gui
        self.gateway = self.view.gateway
        self.monitor = self.gateway.monitor
        self.status_dict = {}
        self.members_dict = {}
        self.grid_status = ""
        self.available_space = 0
        self.setHeaderData(0, Qt.Horizontal, "Name")
        self.setHeaderData(1, Qt.Horizontal, "Status")
        self.setHeaderData(2, Qt.Horizontal, "Last modified")
        self.setHeaderData(3, Qt.Horizontal, "Size")
        self.setHeaderData(4, Qt.Horizontal, "")

        self.icon_blank = QIcon()
        self.icon_up_to_date = QIcon(resource("checkmark.png"))
        self.icon_user = QIcon(resource("user.png"))
        self.icon_folder = QFileIconProvider().icon(QFileInfo(config_dir))
        composite_pixmap = CompositePixmap(
            self.icon_folder.pixmap(256, 256), overlay=None, grayout=True
        )
        self.icon_folder_gray = QIcon(composite_pixmap)
        self.icon_cloud = QIcon(resource("cloud-icon.png"))
        self.icon_action = QIcon(resource("dots-horizontal-triple.png"))

        self.monitor.connected.connect(self.on_connected)
        self.monitor.disconnected.connect(self.on_disconnected)
        self.monitor.nodes_updated.connect(self.on_nodes_updated)
        self.monitor.space_updated.connect(self.on_space_updated)
        self.monitor.status_updated.connect(self.set_status)
        self.monitor.mtime_updated.connect(self.set_mtime)
        self.monitor.size_updated.connect(self.set_size)
        self.monitor.members_updated.connect(self.on_members_updated)
        self.monitor.sync_started.connect(self.on_sync_started)
        self.monitor.sync_finished.connect(self.on_sync_finished)
        self.monitor.files_updated.connect(self.on_updated_files)
        self.monitor.check_finished.connect(self.update_natural_times)
        self.monitor.remote_folder_added.connect(self.add_remote_folder)
        self.monitor.transfer_progress_updated.connect(
            self.set_transfer_progress
        )
Esempio n. 34
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)
    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. 36
0
    def update(self):
        # Update files.
        self._ui.project_tree.clear()
        items = []
        icon_provider = QFileIconProvider()

        for cur_file in self.project.files:
            file_info = QFileInfo(cur_file)
            item = QTreeWidgetItem(None, [
                os.path.relpath(cur_file, self.project.proj_dir), 
                "N/A",
            ])
            item.setData(0, Qt.UserRole, Project.file_to_idb(cur_file))
            item.setIcon(0, icon_provider.icon(file_info))
            items.append(item)

        self._ui.project_tree.insertTopLevelItems(0, items)

        # Update other stuff.
        self._ui.project_path.setText(self.project.proj_dir)
Esempio n. 37
0
    def open_folder_clicked(self):
        path = QFileDialog.getExistingDirectory(self, self.tr("Select folder"))

        provider = QFileIconProvider()
        self.list_widget.clear()

        for dir_path, dir_names, file_names in os.walk(path):
            for file_name in file_names:
                if file_name.endswith(".pdf"):
                    item = QListWidgetItem()
                    item.setText(file_name[0:-4])
                    item.setData(Qt.UserRole, dir_path + os.sep + file_name)
                    item.setIcon(
                        provider.icon(QFileInfo(dir_path + os.sep +
                                                file_name)))

                    self.list_widget.addItem(item)

        self.label_find.setText(
            self.tr("Schedules: ") + str(self.list_widget.count()))
Esempio n. 38
0
    def add_item_on_file_table(cls, package):
        """
        像指定表格对象添加指定的特定格式数据数据
        """

        for index, file_obj in enumerate(package.data.listdir):
            file_obj = Dict(file_obj)
            # 插入空行
            package.widget.insertRow(index)

            # =============文件图标
            item0 = QTableWidgetItem()
            item0.setText(file_obj.name)
            provider = QFileIconProvider()
            item0.setIcon(
                provider.icon(
                    QFileInfo(
                        ICO.FILE_TYPE_ICO.get(file_obj.type, "ico/txt.txt"))))
            # f_t_widget.setRowHeight(index, 20)
            package.widget.setItem(index, 0, item0)

            # =============文件大小
            item3 = QTableWidgetItem()
            # item3.setFont(self.fileInfoWidget.global_row_font)
            item3.setText(file_obj.size)
            package.widget.setItem(index, 1, item3)

            # =============文件类型
            item2 = QTableWidgetItem()
            # item2.setFont(self.fileInfoWidget.global_row_font)
            # fileType = provider.type(QFileInfo(abs_file_path))
            item2.setText(file_obj.type)
            package.widget.setItem(index, 2, item2)

            # ============最后修改时间
            item1 = QTableWidgetItem()
            # item1.setFont(self.fileInfoWidget.global_row_font)
            # mtime = os.path.getmtime(abs_file_path)
            item1.setText(file_obj.last_time)
            package.widget.setItem(index, 3, item1)
        return True
    def fromPath(cls, path):
        # type: (str) -> ImportItem
        """
        Create a `ImportItem` from a local file system path.
        """
        iconprovider = QFileIconProvider()
        basename = os.path.basename(path)
        item = cls()
        item.setText(basename)
        item.setToolTip(path)
        finfo = QFileInfo(path)
        if finfo.exists():
            item.setIcon(iconprovider.icon(finfo))
        else:
            item.setIcon(iconprovider.icon(QFileIconProvider.File))

        item.setData(path, ImportItem.PathRole)
        if not os.path.isfile(path):
            item.setEnabled(False)
            item.setToolTip(item.toolTip() + " (missing from filesystem)")
        return item
Esempio n. 40
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. 41
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. 42
0
class DownloadManager(QDialog, Ui_DownloadManager):
    """
    Class implementing the download manager.
    """
    RemoveNever = 0
    RemoveExit = 1
    RemoveSuccessFullDownload = 2
    
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget (QWidget)
        """
        super(DownloadManager, self).__init__(parent)
        self.setupUi(self)
        
        self.__saveTimer = AutoSaver(self, self.save)
        
        self.__model = DownloadModel(self)
        self.__manager = Helpviewer.HelpWindow.HelpWindow\
            .networkAccessManager()
        
        self.__iconProvider = None
        self.__downloads = []
        self.__downloadDirectory = ""
        self.__loaded = False
        
        self.setDownloadDirectory(Preferences.getUI("DownloadPath"))
        
        self.downloadsView.setShowGrid(False)
        self.downloadsView.verticalHeader().hide()
        self.downloadsView.horizontalHeader().hide()
        self.downloadsView.setAlternatingRowColors(True)
        self.downloadsView.horizontalHeader().setStretchLastSection(True)
        self.downloadsView.setModel(self.__model)
        self.downloadsView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.downloadsView.customContextMenuRequested.connect(
            self.__customContextMenuRequested)
        
        self.__load()
    
    def __customContextMenuRequested(self, pos):
        """
        Private slot to handle the context menu request for the bookmarks tree.
        
        @param pos position the context menu was requested (QPoint)
        """
        menu = QMenu()
        
        selectedRowsCount = len(
            self.downloadsView.selectionModel().selectedRows())
        
        if selectedRowsCount == 1:
            row = self.downloadsView.selectionModel().selectedRows()[0].row()
            itm = self.__downloads[row]
            if itm.downloadCanceled():
                menu.addAction(
                    UI.PixmapCache.getIcon("restart.png"),
                    self.tr("Retry"), self.__contextMenuRetry)
            else:
                if itm.downloadedSuccessfully():
                    menu.addAction(
                        UI.PixmapCache.getIcon("open.png"),
                        self.tr("Open"), self.__contextMenuOpen)
                elif itm.downloading():
                    menu.addAction(
                        UI.PixmapCache.getIcon("stopLoading.png"),
                        self.tr("Cancel"), self.__contextMenuCancel)
                    menu.addSeparator()
                menu.addAction(
                    self.tr("Open Containing Folder"),
                    self.__contextMenuOpenFolder)
            menu.addSeparator()
            menu.addAction(
                self.tr("Go to Download Page"),
                self.__contextMenuGotoPage)
            menu.addAction(
                self.tr("Copy Download Link"),
                self.__contextMenuCopyLink)
            menu.addSeparator()
        menu.addAction(self.tr("Select All"), self.__contextMenuSelectAll)
        if selectedRowsCount > 1 or \
           (selectedRowsCount == 1 and
            not self.__downloads[
                self.downloadsView.selectionModel().selectedRows()[0].row()]
                .downloading()):
            menu.addSeparator()
            menu.addAction(
                self.tr("Remove From List"),
                self.__contextMenuRemoveSelected)
        
        menu.exec_(QCursor.pos())
    
    def shutdown(self):
        """
        Public method to stop the download manager.
        """
        self.__saveTimer.changeOccurred()
        self.__saveTimer.saveIfNeccessary()
        self.close()
    
    def activeDownloads(self):
        """
        Public method to get the number of active downloads.
        
        @return number of active downloads (integer)
        """
        count = 0
        
        for download in self.__downloads:
            if download.downloading():
                count += 1
        return count
    
    def allowQuit(self):
        """
        Public method to check, if it is ok to quit.
        
        @return flag indicating allowance to quit (boolean)
        """
        if self.activeDownloads() > 0:
            res = E5MessageBox.yesNo(
                self,
                self.tr(""),
                self.tr("""There are %n downloads in progress.\n"""
                        """Do you want to quit anyway?""", "",
                        self.activeDownloads()),
                icon=E5MessageBox.Warning)
            if not res:
                self.show()
                return False
        return True
    
    def download(self, requestOrUrl, requestFileName=False, mainWindow=None):
        """
        Public method to download a file.
        
        @param requestOrUrl reference to a request object (QNetworkRequest)
            or a URL to be downloaded (QUrl)
        @keyparam requestFileName flag indicating to ask for the
            download file name (boolean)
        @keyparam mainWindow reference to the main window (HelpWindow)
        """
        request = QNetworkRequest(requestOrUrl)
        if request.url().isEmpty():
            return
        self.handleUnsupportedContent(
            self.__manager.get(request),
            requestFileName=requestFileName,
            download=True,
            mainWindow=mainWindow)
    
    def handleUnsupportedContent(self, reply, requestFileName=False,
                                 webPage=None, download=False,
                                 mainWindow=None):
        """
        Public method to handle unsupported content by downloading the
        referenced resource.
        
        @param reply reference to the reply object (QNetworkReply)
        @keyparam requestFileName indicating to ask for a filename
            (boolean)
        @keyparam webPage reference to the web page (HelpWebPage)
        @keyparam download flag indicating a download request (boolean)
        @keyparam mainWindow reference to the main window (HelpWindow)
        """
        if reply is None or reply.url().isEmpty():
            return
        
        size = reply.header(QNetworkRequest.ContentLengthHeader)
        if size == 0:
            return
        
        from .DownloadItem import DownloadItem
        itm = DownloadItem(
            reply=reply, requestFilename=requestFileName,
            webPage=webPage, download=download, parent=self,
            mainWindow=mainWindow)
        self.__addItem(itm)
        
        if itm.canceledFileSelect():
            return
        
        if not self.isVisible():
            self.show()
        
        self.activateWindow()
        self.raise_()
    
    def __addItem(self, itm):
        """
        Private method to add a download to the list of downloads.
        
        @param itm reference to the download item (DownloadItem)
        """
        itm.statusChanged.connect(self.__updateRow)
        itm.downloadFinished.connect(self.__finished)
        
        row = len(self.__downloads)
        self.__model.beginInsertRows(QModelIndex(), row, row)
        self.__downloads.append(itm)
        self.__model.endInsertRows()
        
        self.downloadsView.setIndexWidget(self.__model.index(row, 0), itm)
        icon = self.style().standardIcon(QStyle.SP_FileIcon)
        itm.setIcon(icon)
        self.downloadsView.setRowHeight(row, itm.sizeHint().height() * 1.5)
        # just in case the download finished before the constructor returned
        self.__updateRow(itm)
        self.changeOccurred()
        self.__updateActiveItemCount()
    
    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()
    
    def removePolicy(self):
        """
        Public method to get the remove policy.
        
        @return remove policy (integer)
        """
        return Preferences.getHelp("DownloadManagerRemovePolicy")
    
    def setRemovePolicy(self, policy):
        """
        Public method to set the remove policy.
        
        @param policy policy to be set
            (DownloadManager.RemoveExit, DownloadManager.RemoveNever,
             DownloadManager.RemoveSuccessFullDownload)
        """
        assert policy in (DownloadManager.RemoveExit,
                          DownloadManager.RemoveNever,
                          DownloadManager.RemoveSuccessFullDownload)
        
        if policy == self.removePolicy():
            return
        
        Preferences.setHelp("DownloadManagerRemovePolicy", self.policy)
    
    def save(self):
        """
        Public method to save the download settings.
        """
        if not self.__loaded:
            return
        
        Preferences.setHelp("DownloadManagerSize", self.size())
        Preferences.setHelp("DownloadManagerPosition", self.pos())
        if self.removePolicy() == DownloadManager.RemoveExit:
            return
        
        downloads = []
        for download in self.__downloads:
            downloads.append(download.getData())
        Preferences.setHelp("DownloadManagerDownloads", downloads)
    
    def __load(self):
        """
        Private method to load the download settings.
        """
        if self.__loaded:
            return
        
        size = Preferences.getHelp("DownloadManagerSize")
        if size.isValid():
            self.resize(size)
        pos = Preferences.getHelp("DownloadManagerPosition")
        self.move(pos)
        
        downloads = Preferences.getHelp("DownloadManagerDownloads")
        for download in downloads:
            if not download[0].isEmpty() and \
               download[1] != "":
                from .DownloadItem import DownloadItem
                itm = DownloadItem(parent=self)
                itm.setData(download)
                self.__addItem(itm)
        self.cleanupButton.setEnabled(
            (len(self.__downloads) - self.activeDownloads()) > 0)
        
        self.__loaded = True
        self.__updateActiveItemCount()
    
    def cleanup(self):
        """
        Public slot to cleanup the downloads.
        """
        self.on_cleanupButton_clicked()
    
    @pyqtSlot()
    def on_cleanupButton_clicked(self):
        """
        Private slot cleanup the downloads.
        """
        if len(self.__downloads) == 0:
            return
        
        self.__model.removeRows(0, len(self.__downloads))
        if len(self.__downloads) == 0 and \
           self.__iconProvider is not None:
            self.__iconProvider = None
        
        self.changeOccurred()
        self.__updateActiveItemCount()
    
    def __updateItemCount(self):
        """
        Private method to update the count label.
        """
        count = len(self.__downloads)
        self.countLabel.setText(self.tr("%n Download(s)", "", count))
    
    def __updateActiveItemCount(self):
        """
        Private method to update the window title.
        """
        count = self.activeDownloads()
        if count > 0:
            self.setWindowTitle(
                self.tr("Downloading %n file(s)", "", count))
        else:
            self.setWindowTitle(self.tr("Downloads"))
    
    def __finished(self):
        """
        Private slot to handle a finished download.
        """
        self.__updateActiveItemCount()
        if self.isVisible():
            QApplication.alert(self)
    
    def setDownloadDirectory(self, directory):
        """
        Public method to set the current download directory.
        
        @param directory current download directory (string)
        """
        self.__downloadDirectory = directory
        if self.__downloadDirectory != "":
            self.__downloadDirectory += "/"
    
    def downloadDirectory(self):
        """
        Public method to get the current download directory.
        
        @return current download directory (string)
        """
        return self.__downloadDirectory
    
    def count(self):
        """
        Public method to get the number of downloads.
        
        @return number of downloads (integer)
        """
        return len(self.__downloads)
    
    def downloads(self):
        """
        Public method to get a reference to the downloads.
        
        @return reference to the downloads (list of DownloadItem)
        """
        return self.__downloads
    
    def changeOccurred(self):
        """
        Public method to signal a change.
        """
        self.__saveTimer.changeOccurred()
        self.__updateItemCount()
    
    ###########################################################################
    ## Context menu related methods below
    ###########################################################################
    
    def __currentItem(self):
        """
        Private method to get a reference to the current item.
        
        @return reference to the current item (DownloadItem)
        """
        index = self.downloadsView.currentIndex()
        if index and index.isValid():
            row = index.row()
            return self.__downloads[row]
        
        return None
    
    def __contextMenuRetry(self):
        """
        Private method to retry of the download.
        """
        itm = self.__currentItem()
        if itm is not None:
            itm.retry()
    
    def __contextMenuOpen(self):
        """
        Private method to open the downloaded file.
        """
        itm = self.__currentItem()
        if itm is not None:
            itm.openFile()
    
    def __contextMenuOpenFolder(self):
        """
        Private method to open the folder containing the downloaded file.
        """
        itm = self.__currentItem()
        if itm is not None:
            itm.openFolder()
    
    def __contextMenuCancel(self):
        """
        Private method to cancel the current download.
        """
        itm = self.__currentItem()
        if itm is not None:
            itm.cancelDownload()
    
    def __contextMenuGotoPage(self):
        """
        Private method to open the download page.
        """
        itm = self.__currentItem()
        if itm is not None:
            url = itm.getPageUrl()
            Helpviewer.HelpWindow.HelpWindow.mainWindow().openUrl(url, "")
    
    def __contextMenuCopyLink(self):
        """
        Private method to copy the download link to the clipboard.
        """
        itm = self.__currentItem()
        if itm is not None:
            url = itm.getPageUrl().toString()
            QApplication.clipboard().setText(url)
    
    def __contextMenuSelectAll(self):
        """
        Private method to select all downloads.
        """
        self.downloadsView.selectAll()
    
    def __contextMenuRemoveSelected(self):
        """
        Private method to remove the selected downloads from the list.
        """
        self.downloadsView.removeSelected()
Esempio n. 43
0
class Model(QAbstractItemModel):
    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()

    def index(self, row, column, parent):
        if row < self.rc and row >= 0 and column < self.cc and column >= 0:
            parentNode = parent.internalPointer()
            childNode = self.node(row, parentNode)
            if childNode is not None:
                return self.createIndex(row, column, childNode)
        return QModelIndex()

    def parent(self, child):
        if isinstance(child, QModelIndex):
            # parent of QModelIndex child
            if child.isValid():
                childNode = child.internalPointer()
                parentNode = self.parent(childNode)
                if parentNode:
                    return self.createIndex(self.row(parentNode), 0, parentNode)
            return QModelIndex()
        else:
            # parent of Node
            if child:
                return child.parent

    def rowCount(self, parent):
        if parent.isValid() and parent.column() != 0:
            return 0
        return self.rc

    def columnCount(self, parent):
        return self.cc

    def data(self, index, role):
        if not index.isValid():
            return None
        elif role == Qt.DisplayRole:
            return "Item %d:%s" % (index.row(), index.column())
        elif role == Qt.DecorationRole:
            if index.column() == 0:
                return self.iconProvider.icon(QFileIconProvider.Folder)
            return self.iconProvider.icon(QFileIconProvider.File)
        return None

    def headerData(self, section, orientation, role):
        if role == Qt.DisplayRole:
            return str(section)
        if role == Qt.DecorationRole:
            return self.services
        return super(Model, self).headerData(section, orientation, role)

    def hasChildren(self, parent):
        if parent.isValid() and parent.column() != 0:
            return False
        return self.rc > 0 and self.cc > 0

    def flags(self, index):
        if not index.isValid():
            return 0
        return Qt.ItemIsDragEnabled | super(Model, self).flags(index)

    def node(self, row, parent):
        if parent and not parent.children:
            parent.children = [Node(parent) for node in range(self.rc)]
        if parent:
            return parent.children[row]
        else:
            return self.tree[row]

    def row(self, node):
        if node.parent:
            return node.parent.children.index(node)
        else:
            return self.tree.index(node)
Esempio n. 44
-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()