24 |
24 |
25 class BookmarksImportDialog(QDialog, Ui_BookmarksImportDialog): |
25 class BookmarksImportDialog(QDialog, Ui_BookmarksImportDialog): |
26 """ |
26 """ |
27 Class implementing a dialog for importing bookmarks from other sources. |
27 Class implementing a dialog for importing bookmarks from other sources. |
28 """ |
28 """ |
|
29 |
29 SourcesListIdRole = Qt.ItemDataRole.UserRole |
30 SourcesListIdRole = Qt.ItemDataRole.UserRole |
30 |
31 |
31 def __init__(self, parent=None): |
32 def __init__(self, parent=None): |
32 """ |
33 """ |
33 Constructor |
34 Constructor |
34 |
35 |
35 @param parent reference to the parent widget (QWidget) |
36 @param parent reference to the parent widget (QWidget) |
36 """ |
37 """ |
37 super().__init__(parent) |
38 super().__init__(parent) |
38 self.setupUi(self) |
39 self.setupUi(self) |
39 |
40 |
40 self.filePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
41 self.filePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
41 |
42 |
42 self.sourcesList.setIconSize(QSize(48, 48)) |
43 self.sourcesList.setIconSize(QSize(48, 48)) |
43 for icon, displayText, idText in BookmarksImporters.getImporters(): |
44 for icon, displayText, idText in BookmarksImporters.getImporters(): |
44 itm = QListWidgetItem(icon, displayText, self.sourcesList) |
45 itm = QListWidgetItem(icon, displayText, self.sourcesList) |
45 itm.setData(self.SourcesListIdRole, idText) |
46 itm.setData(self.SourcesListIdRole, idText) |
46 |
47 |
47 self.__currentPage = 0 |
48 self.__currentPage = 0 |
48 self.__selectedSource = "" |
49 self.__selectedSource = "" |
49 self.__topLevelBookmarkNode = None |
50 self.__topLevelBookmarkNode = None |
50 self.__sourceFile = "" |
51 self.__sourceFile = "" |
51 self.__sourceDir = "" |
52 self.__sourceDir = "" |
52 |
53 |
53 self.pagesWidget.setCurrentIndex(self.__currentPage) |
54 self.pagesWidget.setCurrentIndex(self.__currentPage) |
54 self.__enableNextButton() |
55 self.__enableNextButton() |
55 |
56 |
56 def __enableNextButton(self): |
57 def __enableNextButton(self): |
57 """ |
58 """ |
58 Private slot to set the enabled state of the next button. |
59 Private slot to set the enabled state of the next button. |
59 """ |
60 """ |
60 if self.__currentPage == 0: |
61 if self.__currentPage == 0: |
61 self.nextButton.setEnabled( |
62 self.nextButton.setEnabled(len(self.sourcesList.selectedItems()) == 1) |
62 len(self.sourcesList.selectedItems()) == 1) |
|
63 elif self.__currentPage == 1: |
63 elif self.__currentPage == 1: |
64 self.nextButton.setEnabled(self.filePicker.text() != "") |
64 self.nextButton.setEnabled(self.filePicker.text() != "") |
65 |
65 |
66 @pyqtSlot() |
66 @pyqtSlot() |
67 def on_sourcesList_itemSelectionChanged(self): |
67 def on_sourcesList_itemSelectionChanged(self): |
68 """ |
68 """ |
69 Private slot to handle changes of the selection of the import source. |
69 Private slot to handle changes of the selection of the import source. |
70 """ |
70 """ |
71 self.__enableNextButton() |
71 self.__enableNextButton() |
72 |
72 |
73 @pyqtSlot(str) |
73 @pyqtSlot(str) |
74 def on_filePicker_textChanged(self, txt): |
74 def on_filePicker_textChanged(self, txt): |
75 """ |
75 """ |
76 Private slot handling changes of the file to import bookmarks form. |
76 Private slot handling changes of the file to import bookmarks form. |
77 |
77 |
78 @param txt text of the line edit (string) |
78 @param txt text of the line edit (string) |
79 """ |
79 """ |
80 self.__enableNextButton() |
80 self.__enableNextButton() |
81 |
81 |
82 @pyqtSlot() |
82 @pyqtSlot() |
83 def on_nextButton_clicked(self): |
83 def on_nextButton_clicked(self): |
84 """ |
84 """ |
85 Private slot to switch to the next page. |
85 Private slot to switch to the next page. |
86 """ |
86 """ |
87 if self.sourcesList.currentItem() is None: |
87 if self.sourcesList.currentItem() is None: |
88 return |
88 return |
89 |
89 |
90 if self.__currentPage == 0: |
90 if self.__currentPage == 0: |
91 self.__selectedSource = self.sourcesList.currentItem().data( |
91 self.__selectedSource = self.sourcesList.currentItem().data( |
92 self.SourcesListIdRole) |
92 self.SourcesListIdRole |
93 (pixmap, sourceName, self.__sourceFile, info, prompt, |
93 ) |
94 self.__sourceDir) = BookmarksImporters.getImporterInfo( |
94 ( |
95 self.__selectedSource) |
95 pixmap, |
96 |
96 sourceName, |
|
97 self.__sourceFile, |
|
98 info, |
|
99 prompt, |
|
100 self.__sourceDir, |
|
101 ) = BookmarksImporters.getImporterInfo(self.__selectedSource) |
|
102 |
97 self.iconLabel.setPixmap(pixmap) |
103 self.iconLabel.setPixmap(pixmap) |
98 self.importingFromLabel.setText( |
104 self.importingFromLabel.setText( |
99 self.tr("<b>Importing from {0}</b>").format(sourceName)) |
105 self.tr("<b>Importing from {0}</b>").format(sourceName) |
|
106 ) |
100 self.fileLabel1.setText(info) |
107 self.fileLabel1.setText(info) |
101 self.fileLabel2.setText(prompt) |
108 self.fileLabel2.setText(prompt) |
102 self.standardDirLabel.setText( |
109 self.standardDirLabel.setText("<i>{0}</i>".format(self.__sourceDir)) |
103 "<i>{0}</i>".format(self.__sourceDir)) |
110 |
104 |
|
105 self.nextButton.setText(self.tr("Finish")) |
111 self.nextButton.setText(self.tr("Finish")) |
106 |
112 |
107 self.__currentPage += 1 |
113 self.__currentPage += 1 |
108 self.pagesWidget.setCurrentIndex(self.__currentPage) |
114 self.pagesWidget.setCurrentIndex(self.__currentPage) |
109 self.__enableNextButton() |
115 self.__enableNextButton() |
110 |
116 |
111 if self.__selectedSource == "ie": |
117 if self.__selectedSource == "ie": |
112 self.filePicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
118 self.filePicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
113 else: |
119 else: |
114 self.filePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
120 self.filePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
115 if Globals.isMacPlatform(): |
121 if Globals.isMacPlatform(): |
116 fileFilter = "*{0}".format( |
122 fileFilter = "*{0}".format(os.path.splitext(self.__sourceFile)[1]) |
117 os.path.splitext(self.__sourceFile)[1]) |
|
118 else: |
123 else: |
119 fileFilter = self.__sourceFile |
124 fileFilter = self.__sourceFile |
120 self.filePicker.setFilters(fileFilter) |
125 self.filePicker.setFilters(fileFilter) |
121 self.filePicker.setDefaultDirectory(self.__sourceDir) |
126 self.filePicker.setDefaultDirectory(self.__sourceDir) |
122 |
127 |
123 elif self.__currentPage == 1: |
128 elif self.__currentPage == 1: |
124 if self.filePicker.text() == "": |
129 if self.filePicker.text() == "": |
125 return |
130 return |
126 |
131 |
127 importer = BookmarksImporters.getImporter(self.__selectedSource) |
132 importer = BookmarksImporters.getImporter(self.__selectedSource) |
128 importer.setPath(self.filePicker.text()) |
133 importer.setPath(self.filePicker.text()) |
129 if importer.open(): |
134 if importer.open(): |
130 self.__topLevelBookmarkNode = importer.importedBookmarks() |
135 self.__topLevelBookmarkNode = importer.importedBookmarks() |
131 if importer.error(): |
136 if importer.error(): |
132 EricMessageBox.critical( |
137 EricMessageBox.critical( |
133 self, |
138 self, self.tr("Error importing bookmarks"), importer.errorString() |
134 self.tr("Error importing bookmarks"), |
139 ) |
135 importer.errorString()) |
|
136 return |
140 return |
137 |
141 |
138 self.accept() |
142 self.accept() |
139 |
143 |
140 @pyqtSlot() |
144 @pyqtSlot() |
141 def on_cancelButton_clicked(self): |
145 def on_cancelButton_clicked(self): |
142 """ |
146 """ |
143 Private slot documentation goes here. |
147 Private slot documentation goes here. |
144 """ |
148 """ |
145 self.reject() |
149 self.reject() |
146 |
150 |
147 def getImportedBookmarks(self): |
151 def getImportedBookmarks(self): |
148 """ |
152 """ |
149 Public method to get the imported bookmarks. |
153 Public method to get the imported bookmarks. |
150 |
154 |
151 @return top level bookmark (BookmarkNode) |
155 @return top level bookmark (BookmarkNode) |
152 """ |
156 """ |
153 return self.__topLevelBookmarkNode |
157 return self.__topLevelBookmarkNode |