Ejemplo n.º 1
0
    def dropEvent(self, event: QtGui.QDropEvent):
        super().dropEvent(event)
        if event.mimeData().hasFormat("text/uri-list"):
            pos = QtCore.QRect()
            pos.setX(int(event.pos().x()))
            pos.setY(int(event.pos().y()))
            pos.setWidth(200)  # TODO find a better way to set default width
            db = QtCore.QMimeDatabase()
            if "image" in db.mimeTypeForUrl(event.mimeData().urls()[0]).name():
                image = event.mimeData().urls()[0].url()
                id = self._next_id("Image")
                item = PageItem(id, pos, img=image, height_from_width=True)
                self._add_item(item)
            elif "application/octet-stream" in db.mimeTypeForUrl(
                    event.mimeData().urls()[0]).name():
                # If it's a stream, we need to download it. However, that could be arbitrarily huge
                # For now, we're going to base the decision on the file extension.
                url = event.mimeData().urls()[0].url()
                if url.endswith(".png") or url.endswith(
                        ".jpg") or url.endswith(".jpeg") or url.endswith(
                            ".gif"):
                    id = self._next_id("Image")
                    item = PageItem(id, pos, img=url, height_from_width=True)
                    self._add_item(item)

        event.accept()
Ejemplo n.º 2
0
    def __init__(self, parent, img_url, width: int, asset_name=None, **extra):
        super().__init__(parent)

        self._play_btn = None
        self._toolbar = None
        # The name of the asset file once saved to disk
        self.asset_name = str(uuid.uuid4())
        if asset_name is not None:
            self.asset_name = asset_name
        # asset URLs, when they are local files, are relative paths, not absolute
        # for portability reasons. When we are restoring from a saved state. So, we should
        # set our working directory to the asset directory
        # URLs for files dragged in should be absolute anyway and not affected.
        old_wd = getcwd()
        chdir(settings.asset_dir)
        data = urlopen(img_url).read()
        chdir(old_wd)
        self.setStyleSheet("background: transparent;")

        orig_pixmap = QtGui.QPixmap()
        orig_pixmap.loadFromData(data)
        pixmap = orig_pixmap.scaledToWidth(width)
        # orig pixmap is an asset that gets saved to disk
        self._orig_pixmap = orig_pixmap
        if "transform" in extra:
            self._rotation = extra['transform']['rotation']
        else:
            self._rotation = 0

        self._mimedb = QtCore.QMimeDatabase()
        if self._mimedb.mimeTypeForData(data).name() == "image/gif":
            self._mimetype = "GIF"
            # If this is a qmovie, we need to write the bytes to disk ourselves, the QMovie object doesn't save()
            self._data = data
            self.save_asset()
            movie = QtGui.QMovie(self.asset_file_fq)
            self._movie = movie
            self.setMovie(self._movie)
            self._movie.start()
            self._playing = True
        else:
            self.setPixmap(pixmap)
            self._mimetype = "PNG"
Ejemplo n.º 3
0
 def __init__(self):
     super().__init__()
     self.playButton: QtWidgets.QToolButton
     self.prevButton: QtWidgets.QToolButton
     self.nextButton: QtWidgets.QToolButton
     self.playbackModeButton: QtWidgets.QToolButton
     self.progressSlider: MyQSlider
     self.progressLabel: QtWidgets.QLabel
     self.volumeDial: QtWidgets.QDial
     self.playlistWidget: QtWidgets.QTableWidget
     self.lyricWrapper: QtWidgets.QScrollArea
     self.lyricLabel: MyQLabel
     self.progressDialog: QtWidgets.QProgressDialog
     self.myPlaylist: MyPlaylist = MyPlaylist()
     self.loadPlaylistTask = LoadPlaylistTask()
     self.musics: List[MusicEntry] = list()
     self.lyric: Dict[int, str] = dict()
     self.prevLyricIndex = -1
     self.config: Config
     self.realRow = -1
     self.mimeDb = QtCore.QMimeDatabase()
     self.setupLayout()
     self.setupEvents()
     self.setupPlayer()