eric7/WebBrowser/Tools/WebIconDialog.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to manage the Favicons.
8 """
9
10 from PyQt5.QtCore import pyqtSlot, Qt, QPoint
11 from PyQt5.QtWidgets import QDialog, QListWidgetItem, QMenu
12
13 from .Ui_WebIconDialog import Ui_WebIconDialog
14
15
16 class WebIconDialog(QDialog, Ui_WebIconDialog):
17 """
18 Class implementing a dialog to manage the Favicons.
19 """
20 def __init__(self, iconsDB, parent=None):
21 """
22 Constructor
23
24 @param iconsDB icons database
25 @type dict
26 @param parent reference to the parent widget
27 @type QWidget
28 """
29 super().__init__(parent)
30 self.setupUi(self)
31
32 for url, icon in iconsDB.items():
33 QListWidgetItem(icon, url, self.iconsList)
34 self.iconsList.sortItems(Qt.SortOrder.AscendingOrder)
35
36 self.__setRemoveButtons()
37
38 def __setRemoveButtons(self):
39 """
40 Private method to set the state of the 'remove' buttons.
41 """
42 self.removeAllButton.setEnabled(self.iconsList.count() > 0)
43 self.removeButton.setEnabled(len(self.iconsList.selectedItems()) > 0)
44
45 @pyqtSlot(QPoint)
46 def on_iconsList_customContextMenuRequested(self, pos):
47 """
48 Private slot to show the context menu.
49
50 @param pos cursor position
51 @type QPoint
52 """
53 menu = QMenu()
54 menu.addAction(
55 self.tr("Remove Selected"),
56 self.on_removeButton_clicked).setEnabled(
57 len(self.iconsList.selectedItems()) > 0)
58 menu.addAction(
59 self.tr("Remove All"),
60 self.on_removeAllButton_clicked).setEnabled(
61 self.iconsList.count() > 0)
62
63 menu.exec(self.iconsList.mapToGlobal(pos))
64
65 @pyqtSlot()
66 def on_iconsList_itemSelectionChanged(self):
67 """
68 Private slot handling the selection of entries.
69 """
70 self.__setRemoveButtons()
71
72 @pyqtSlot()
73 def on_removeButton_clicked(self):
74 """
75 Private slot to remove the selected items.
76 """
77 for itm in self.iconsList.selectedItems():
78 row = self.iconsList.row(itm)
79 self.iconsList.takeItem(row)
80 del itm
81
82 @pyqtSlot()
83 def on_removeAllButton_clicked(self):
84 """
85 Private slot to remove all entries.
86 """
87 self.iconsList.clear()
88
89 def getUrls(self):
90 """
91 Public method to get the list of URLs.
92
93 @return list of URLs
94 @rtype list of str
95 """
96 urls = []
97 for row in range(self.iconsList.count()):
98 urls.append(self.iconsList.item(row).text())
99
100 return urls

eric ide

mercurial