def __init__(self, *args, parent=None): super(MainWindow, self).__init__() self.dbPhotos = args[0] ''' :type DbPhotos''' self.dbTags = args[2] self.dbThumbs = args[3] loadUi('data/mainwindow.ui', self) leftToolbarButtons = [SideBarButton('Albums', 1, 'image'), SideBarButton('Tags', 2, 'image')] rightToolbarButtons = [SideBarButton('Properties', 1, 'image'), SideBarButton('Metadata', 2, 'image')] self.leftSideToolbar = GSideToolbar(leftToolbarButtons) self.leftSideToolbar.selectionChanged.connect(self.onLeftSideToolChange) self.rightSideToolbar = GSideToolbar(rightToolbarButtons) self.centralLayout.insertWidget(-1, self.rightSideToolbar) self.centralLayout.insertWidget(0, self.leftSideToolbar) self.thumbView = ThumbView() self.thumbView.needThumb.connect(self.onThumbViewNeedThumb, Qt.QueuedConnection) self.splitterThumbs.addWidget(self.thumbView) self.stackLeftActivateAlbums() self.albumsTreeData = self.dbPhotos.getAlbumTree() self.treeAlbums.headerItem().setText(0, 'Albums') self.fillTreeWidget(self.treeAlbums, self.albumsTreeData) self.treeAlbums.itemActivated.connect(self.onTreeAlbumsItemActivated) self.thumbReader = ThumbReader(self.dbThumbs) self.thumbReader.thumbReady.connect(self.thumbView.updateThumb)
class MainWindow(QMainWindow): def __init__(self, *args, parent=None): super(MainWindow, self).__init__() self.dbPhotos = args[0] ''' :type DbPhotos''' self.dbTags = args[2] self.dbThumbs = args[3] loadUi('data/mainwindow.ui', self) leftToolbarButtons = [SideBarButton('Albums', 1, 'image'), SideBarButton('Tags', 2, 'image')] rightToolbarButtons = [SideBarButton('Properties', 1, 'image'), SideBarButton('Metadata', 2, 'image')] self.leftSideToolbar = GSideToolbar(leftToolbarButtons) self.leftSideToolbar.selectionChanged.connect(self.onLeftSideToolChange) self.rightSideToolbar = GSideToolbar(rightToolbarButtons) self.centralLayout.insertWidget(-1, self.rightSideToolbar) self.centralLayout.insertWidget(0, self.leftSideToolbar) self.thumbView = ThumbView() self.thumbView.needThumb.connect(self.onThumbViewNeedThumb, Qt.QueuedConnection) self.splitterThumbs.addWidget(self.thumbView) self.stackLeftActivateAlbums() self.albumsTreeData = self.dbPhotos.getAlbumTree() self.treeAlbums.headerItem().setText(0, 'Albums') self.fillTreeWidget(self.treeAlbums, self.albumsTreeData) self.treeAlbums.itemActivated.connect(self.onTreeAlbumsItemActivated) self.thumbReader = ThumbReader(self.dbThumbs) self.thumbReader.thumbReady.connect(self.thumbView.updateThumb) @pyqtSlot(int, str) def onThumbViewNeedThumb(self, thumbNumber : int, path : str): self.thumbReader.add(thumbNumber, path) def onThumbReaderThumbReady(self, path : str, pic : QPixmap): print('MW: thumb ready: ', path) def onTreeAlbumsItemActivated(self, item : QTreeWidgetItem, column : int): def getTreePath(item : QTreeWidgetItem, root : str): path = [] while item is not None: path.append(item.text(0)) item = item.parent() path.reverse() for f in path: root = os.path.join(root, f) return root root = self.albumsTreeData.parent.name treePath = getTreePath(item, root) print('Album item activated', treePath) photos = self.dbPhotos.getPhotosByPath(treePath) self.thumbView.setItems(photos) def setAlbumsTree(self): pass def stackLeftActivateAlbums(self): self.stackLeft.setCurrentWidget(self.treeAlbums) def stackLeftActivateTags(self): self.stackLeft.setCurrentWidget(self.treeTags) def fillTreeWidget(self, widget : QTreeWidget, tree : Tree): def helper(t : Tree, parent): item = QTreeWidgetItem() item.setText(0, t.name) item.setIcon(0, QIcon('data/gfx/folder.png')) if type(parent) == QTreeWidget: parent.insertTopLevelItem(0, item) else: parent.addChild(item) for ch in t.children: helper(ch, item) widget.setColumnCount(1) helper(tree, widget) def onLeftSideToolChange(self, buttonId): if buttonId == 'Albums': print('Albums!!') items = [i for i in range(100)] self.thumbView.setItems(items) else: print('Button clicked: ', buttonId) @staticmethod def start(*args): app = QApplication(sys.argv) w = MainWindow(*args) w.show() sys.exit(app.exec_())