def main(): import sys app = QApplication(sys.argv) QQuickWindow.setDefaultAlphaBuffer(True) QCoreApplication.setApplicationName("Photosurface") QCoreApplication.setOrganizationName("QtProject") QCoreApplication.setApplicationVersion(__qt_version__) parser = QCommandLineParser() parser.setApplicationDescription("Qt Quick Demo - Photo Surface") parser.addHelpOption() parser.addVersionOption() parser.addPositionalArgument("directory", "The image directory or URL to show.") parser.process(app) initialUrl = QUrl() if parser.positionalArguments(): initialUrl = QUrl.fromUserInput( parser.positionalArguments()[0], QDir.currentPath(), QUrl.AssumeLocalFile ) if not initialUrl.isValid(): print( 'Invalid argument: "', parser.positionalArguments()[0], '": ', initialUrl.errorString(), ) sys.exit(1) nameFilters = imageNameFilters() engine = QQmlApplicationEngine() context: QQmlContext = engine.rootContext() picturesLocationUrl = QUrl.fromLocalFile(QDir.homePath()) picturesLocations = QStandardPaths.standardLocations( QStandardPaths.PicturesLocation ) if picturesLocations: picturesLocationUrl = QUrl.fromLocalFile(picturesLocations[0]) if not initialUrl and QDir(picturesLocations[0]).entryInfoList( nameFilters, QDir.Files ): initialUrl = picturesLocationUrl context.setContextProperty("contextPicturesLocation", picturesLocationUrl) context.setContextProperty("contextInitialUrl", initialUrl) context.setContextProperty("contextImageNameFilters", nameFilters) engine.load(QUrl("qrc:///photosurface.qml")) if not engine.rootObjects(): sys.exit(-1) sys.exit(app.exec_())
def from_file(cls, file, **data): """Construct from file path. Args: file (str): qml file path. data (dict, optional): Data will be used in qml as `DATA`. """ ret = Notify() context = ret.rootContext() context.setContextProperty('DATA', data) context.setContextProperty('VIEW', ret) ret.setSource(QUrl.fromLocalFile(file)) QApplication.processEvents() return ret
def startDrag(self, supported_actions): """ Function that is called when we start dragging an item This function set ups the mime data and creates a copy of the image of the item that is show in cursor position while dragging action is enabled """ index = self.currentIndex() model = self.model() item = model.itemFromIndex(index) drag = QDrag(self) mime_data = QMimeData() mime_data.setData('item_text', QByteArray(str(item.text()))) mime_data.setData('item_size', QByteArray('%.1f %.1f' % (item.size.width(), item.size.height()))) url = QUrl.fromLocalFile(item.text()) mime_data.setUrls(url) drag.setMimeData(mime_data) pixmap = item.icon().pixmap(50, 50) drag.setDragCursor(pixmap, Qt.CopyAction) drag.start()