mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-10-30 18:22:25 -04:00 
			
		
		
		
	When adding the same OPML file, the "replace recipe?" question_dialog will now pop up
until you say "That's enough, mister!"
This commit is contained in:
		
							parent
							
								
									32dbf5dc04
								
							
						
					
					
						commit
						b891882126
					
				| @ -8,13 +8,14 @@ from PyQt4.Qt import (QUrl, QAbstractListModel, Qt, QVariant, QFont) | ||||
| from calibre.web.feeds.recipes import compile_recipe, custom_recipes | ||||
| from calibre.web.feeds.news import AutomaticNewsRecipe | ||||
| from calibre.gui2.dialogs.user_profiles_ui import Ui_Dialog | ||||
| from calibre.gui2.dialogs.message_box import MessageBox | ||||
| from calibre.gui2 import error_dialog, question_dialog, open_url, \ | ||||
|                          choose_files, ResizableDialog, NONE, open_local_file | ||||
|                          choose_files, ResizableDialog, NONE, open_local_file, \ | ||||
|                          info_dialog | ||||
| from calibre.gui2.widgets import PythonHighlighter | ||||
| from calibre.ptempfile import PersistentTemporaryFile | ||||
| from calibre.utils.icu import sort_key | ||||
| from calibre.utils.opml import OPML | ||||
| from calibre.utils.config import JSONConfig | ||||
| 
 | ||||
| class CustomRecipeModel(QAbstractListModel): | ||||
| 
 | ||||
| @ -355,12 +356,14 @@ class %(classname)s(%(base_class)s): | ||||
|             self.clear() | ||||
| 
 | ||||
|     def opml_import(self): | ||||
| 
 | ||||
|         opml_files = choose_files(self, 'OPML chooser dialog', | ||||
|                 _('Select OPML file'), filters=[(_('OPML'), ['opml'])] ) | ||||
| 
 | ||||
|         if not opml_files: | ||||
|             return | ||||
|          | ||||
|         skip_dialog_name='replace_recipes' | ||||
|         opml = OPML(self.oldest_article.value(), self.max_articles.value()); | ||||
|         for opml_file in opml_files: | ||||
|             opml.load(opml_file) | ||||
| @ -380,23 +383,28 @@ class %(classname)s(%(base_class)s): | ||||
|                 except Exception as err: | ||||
|                     error_dialog(self, _('Invalid input'), | ||||
|                             _('<p>Could not create recipe. Error:<br>%s')%str(err)).exec_() | ||||
|                     return | ||||
|                 profile = src | ||||
|                 if self._model.has_title(title): | ||||
|                     if question_dialog(self, _('Replace recipe?'), | ||||
|                         _('A custom recipe named %s already exists. Do you want to ' | ||||
|                             'replace it?')%title): | ||||
|                             'replace it?')%title, | ||||
|                         skip_dialog_name=skip_dialog_name, | ||||
|                         skip_dialog_msg=_('Show dialog again?') | ||||
|                     ): | ||||
|                         self._model.replace_by_title(title, profile) | ||||
|                     else: | ||||
|                         return | ||||
|                 else: | ||||
|                     self.model.add(title, profile) | ||||
|                 nr+=1 | ||||
|         self.clear() | ||||
| 
 | ||||
|         msg_box = MessageBox(MessageBox.INFO, "Finished", "OPML to Recipe conversion complete", parent=self, | ||||
|                     show_copy_button=False) | ||||
|         msg_box.exec_() | ||||
|         # reset the question_dialog | ||||
|         gprefs = JSONConfig('gui') | ||||
|         auto_skip = gprefs.get('questions_to_auto_skip', []) | ||||
|         if skip_dialog_name in auto_skip: | ||||
|             auto_skip.remove(skip_dialog_name) | ||||
|             gprefs.set('questions_to_auto_skip', auto_skip) | ||||
| 
 | ||||
|         info_dialog(self, "Finished", "OPML to Recipe conversion complete", show_copy_button=False, show=True) | ||||
| 
 | ||||
|     def populate_options(self, profile): | ||||
|         self.oldest_article.setValue(profile.oldest_article) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user