diff --git a/Furious/Backends/Xray/AssetListWidget.py b/Furious/Backends/Xray/AssetListWidget.py index b0f7c30e..4d04b47d 100644 --- a/Furious/Backends/Xray/AssetListWidget.py +++ b/Furious/Backends/Xray/AssetListWidget.py @@ -85,20 +85,7 @@ class XrayAssetListWidget(Mixins.ThemeAware, AppQListView): logger.info(f'Xray-core asset dir is \'{XRAY_ASSET_DIR}\'') - contextMenuActions = [ - AppQAction( - _('Delete'), - callback=lambda: self.deleteSelectedItem(), - ), - ] - - self.contextMenu = AppQMenu(*contextMenuActions) - - # Add actions to self in order to activate shortcuts - self.addActions(self.contextMenu.actions()) - - self.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.CustomContextMenu) - self.customContextMenuRequested.connect(self.handleCustomContextMenuRequested) + self.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.NoContextMenu) def showEvent(self, event): """Recalculate item geometry after the view receives its display style.""" @@ -106,11 +93,6 @@ class XrayAssetListWidget(Mixins.ThemeAware, AppQListView): self.scheduleDelayedItemsLayout() - @QtCore.Slot(QtCore.QPoint) - def handleCustomContextMenuRequested(self, point): - """Handle custom context menu requested.""" - self.contextMenu.exec(self.viewport().mapToGlobal(point)) - def flushItemByTheme(self, theme: str): """Refresh item by theme.""" self.assetModel.clear() @@ -135,7 +117,7 @@ class XrayAssetListWidget(Mixins.ThemeAware, AppQListView): '%Y-%m-%d %H:%M:%S' ) - item = QStandardItem(f'{filename:{maxlen + 6}}{mdate}') + item = QStandardItem(f'{filename:{maxlen + 5}}{mdate}') item.setData(filename, QtCore.Qt.ItemDataRole.UserRole) item.setFont(QFont(AppFontName())) diff --git a/Furious/Backends/Xray/AssetWindow.py b/Furious/Backends/Xray/AssetWindow.py index fd237695..4e8f43a1 100644 --- a/Furious/Backends/Xray/AssetWindow.py +++ b/Furious/Backends/Xray/AssetWindow.py @@ -45,8 +45,9 @@ class XrayAssetWindow(AppQMainWindow): self.setWindowTitle(_('Xray-core Asset File')) - self.xrayAssetViewerWidget = XrayAssetListWidget(parent=self) - self.setCentralWidget(self.xrayAssetViewerWidget) + centralWidget = QWidget(parent=self) + + self.xrayAssetViewerWidget = XrayAssetListWidget(parent=centralWidget) if versionToValue(PYSIDE6_VERSION) <= versionToValue('6.1.3'): openAssetDirectoryActions = [] @@ -55,22 +56,16 @@ class XrayAssetWindow(AppQMainWindow): openAssetDirectoryActions = [ AppQAction( _('Open Asset Directory'), + icon=bootstrapIcon('folder2-open.svg'), callback=lambda: self.openAssetDirectory(), - shortcut=QtCore.QKeyCombination( - QtCore.Qt.KeyboardModifier.ControlModifier, - QtCore.Qt.Key.Key_O, - ), ), + AppQSeparator(), ] self.fileMenu = AppQMenu( AppQAction( _('Refresh'), callback=lambda: self.flushItem(), - shortcut=QtCore.QKeyCombination( - QtCore.Qt.KeyboardModifier.ControlModifier, - QtCore.Qt.Key.Key_R, - ), ), AppQSeparator(), *openAssetDirectoryActions, @@ -78,25 +73,56 @@ class XrayAssetWindow(AppQMainWindow): _('Import From File...'), callback=lambda: self.appendNewItem(), ), - AppQSeparator(), - AppQAction( - _('Exit'), - callback=lambda: self.close(), - ), title=_('File'), - parent=self.menuBar(), + parent=self, ) - self.menuBar().addMenu(self.fileMenu) + self.fileButton = AppQMenuPushButton( + _('File'), + icon=bootstrapIcon('file-earmark.svg'), + popupMenu=self.fileMenu, + ) + + self.deleteButton = AppQPushButton( + _('Delete'), + icon=bootstrapIcon('trash.svg'), + ) + self.deleteButton.clicked.connect(self.deleteSelectedItem) + + self.closeWindowButton = AppQPushButton( + _('Close Window'), + icon=bootstrapIcon('window-x.svg'), + ) + self.closeWindowButton.clicked.connect(self.close) + + actionLayout = QHBoxLayout() + actionLayout.setContentsMargins(0, 0, 0, 0) + actionLayout.setSpacing(8) + actionLayout.addWidget(self.fileButton) + actionLayout.addWidget(self.deleteButton) + actionLayout.addStretch(1) + actionLayout.addWidget(self.closeWindowButton) + + contentLayout = QVBoxLayout(centralWidget) + contentLayout.setContentsMargins(10, 10, 10, 8) + contentLayout.setSpacing(10) + contentLayout.addLayout(actionLayout) + contentLayout.addWidget(self.xrayAssetViewerWidget, 1) + + self.setCentralWidget(centralWidget) + self.menuBar().hide() def setWidthAndHeight(self): """Apply the default size for the Xray asset viewer window.""" - self.resize(360, 360 * GOLDEN_RATIO) + self.resize(380, 380 * GOLDEN_RATIO) def flushItem(self): """Refresh item.""" self.xrayAssetViewerWidget.flushItem() + def deleteSelectedItem(self): + self.xrayAssetViewerWidget.deleteSelectedItem() + @staticmethod def openAssetDirectory(): """Open asset directory."""