Context menus for all views
This commit is contained in:
		
							
								
								
									
										28
									
								
								__main__.py
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								__main__.py
									
									
									
									
									
								
							| @@ -219,6 +219,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): | ||||
|         self.listView.verticalScrollBar().setSingleStep(9) | ||||
|         self.listView.doubleClicked.connect(self.library_doubleclick) | ||||
|         self.listView.setItemDelegate(LibraryDelegate(self.temp_dir.path(), self)) | ||||
|         self.listView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) | ||||
|         self.listView.customContextMenuRequested.connect(self.generate_library_context_menu) | ||||
|         self.listView.verticalScrollBar().valueChanged.connect(self.start_culling_timer) | ||||
|  | ||||
|         self.listView.setStyleSheet( | ||||
| @@ -240,6 +242,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): | ||||
|         self.tableView.horizontalHeader().setStretchLastSection(True) | ||||
|         self.tableView.horizontalHeader().sectionClicked.connect( | ||||
|             self.lib_ref.table_proxy_model.sort_table_columns) | ||||
|         self.tableView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) | ||||
|         self.tableView.customContextMenuRequested.connect(self.generate_library_context_menu) | ||||
|  | ||||
|         # Keyboard shortcuts | ||||
|         self.ks_close_tab = QtWidgets.QShortcut(QtGui.QKeySequence('Ctrl+W'), self) | ||||
| @@ -257,6 +261,30 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): | ||||
|         if self.settings['scan_library']: | ||||
|             self.settings_dialog.start_library_scan() | ||||
|  | ||||
|     def generate_library_context_menu(self, position): | ||||
|         # TODO | ||||
|         # The library might have multiple items selected | ||||
|         # Make sure the context menu actions are carried out on each | ||||
|  | ||||
|         index = self.sender().indexAt(position) | ||||
|         if not index.isValid(): | ||||
|             return | ||||
|  | ||||
|         context_menu = QtWidgets.QMenu() | ||||
|  | ||||
|         openAction = context_menu.addAction( | ||||
|             QtGui.QIcon.fromTheme('view-readermode'), 'Start reading') | ||||
|         editAction = context_menu.addAction( | ||||
|             QtGui.QIcon.fromTheme('edit-rename'), 'Edit') | ||||
|         deleteAction = context_menu.addAction( | ||||
|             QtGui.QIcon.fromTheme('trash-empty'), 'Delete') | ||||
|         readAction = context_menu.addAction( | ||||
|             QtGui.QIcon.fromTheme('vcs-normal'), 'Mark read') | ||||
|         unreadAction = context_menu.addAction( | ||||
|             QtGui.QIcon.fromTheme('emblem-unavailable'), 'Mark unread') | ||||
|  | ||||
|         action = context_menu.exec_(self.sender().mapToGlobal(position)) | ||||
|  | ||||
|     def open_books_at_startup(self): | ||||
|         # Last open books and command line books aren't being opened together | ||||
|         # so that command line books are processed last and therefore retain focus | ||||
|   | ||||
| @@ -19,7 +19,7 @@ | ||||
| import os | ||||
| import pickle | ||||
| import pathlib | ||||
| from PyQt5 import QtGui, QtCore | ||||
| from PyQt5 import QtGui, QtCore, QtWidgets | ||||
|  | ||||
| import database | ||||
| from models import TableProxyModel, ItemProxyModel | ||||
|   | ||||
							
								
								
									
										29
									
								
								widgets.py
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								widgets.py
									
									
									
									
									
								
							| @@ -106,6 +106,9 @@ class Tab(QtWidgets.QWidget): | ||||
|         self.dockListView.setMaximumWidth(350) | ||||
|         self.dockListView.setItemDelegate(BookmarkDelegate(self.dockListView)) | ||||
|         self.dockListView.setUniformItemSizes(True) | ||||
|         self.dockListView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) | ||||
|         self.dockListView.customContextMenuRequested.connect( | ||||
|             self.generate_bookmark_context_menu) | ||||
|         self.dockListView.clicked.connect(self.navigate_to_bookmark) | ||||
|         self.dockWidget.setWidget(self.dockListView) | ||||
|  | ||||
| @@ -299,6 +302,9 @@ class Tab(QtWidgets.QWidget): | ||||
|             self.dockWidget.show() | ||||
|  | ||||
|     def add_bookmark(self): | ||||
|         # TODO | ||||
|         # Start dockListView.edit(index) when something new is added | ||||
|  | ||||
|         identifier = uuid.uuid4().hex[:10] | ||||
|         description = 'New bookmark' | ||||
|  | ||||
| @@ -366,6 +372,29 @@ class Tab(QtWidgets.QWidget): | ||||
|         self.proxy_model.setFilterFixedString( | ||||
|             self.window().bookToolBar.searchBar.text()) | ||||
|  | ||||
|     def generate_bookmark_context_menu(self, position): | ||||
|         index = self.dockListView.indexAt(position) | ||||
|         if not index.isValid(): | ||||
|             return | ||||
|  | ||||
|         bookmark_menu = QtWidgets.QMenu() | ||||
|         editAction = bookmark_menu.addAction( | ||||
|             QtGui.QIcon.fromTheme('edit-rename'), 'Edit') | ||||
|         deleteAction = bookmark_menu.addAction( | ||||
|             QtGui.QIcon.fromTheme('trash-empty'), 'Delete') | ||||
|  | ||||
|         action = bookmark_menu.exec_(self.dockListView.mapToGlobal(position)) | ||||
|  | ||||
|         if action == editAction: | ||||
|             self.dockListView.edit(index) | ||||
|  | ||||
|         if action == deleteAction: | ||||
|             row = index.row() | ||||
|             delete_uuid = self.bookmark_model.item(row).data(QtCore.Qt.UserRole + 2) | ||||
|  | ||||
|             self.metadata['bookmarks'].pop(delete_uuid) | ||||
|             self.bookmark_model.removeRow(index.row()) | ||||
|  | ||||
|     def hide_mouse(self): | ||||
|         self.contentView.setCursor(QtCore.Qt.BlankCursor) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user