mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-03 19:17:02 -05:00 
			
		
		
		
	Edit Book: Allow drag and drop of files onto dock icon on OS X
This commit is contained in:
		
							parent
							
								
									e69c4b357d
								
							
						
					
					
						commit
						88a9ce16df
					
				@ -242,6 +242,10 @@ class Boss(QObject):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        :param edit_file: The name of a file inside the newly opened book to start editing. Can also be a list of names.
 | 
					        :param edit_file: The name of a file inside the newly opened book to start editing. Can also be a list of names.
 | 
				
			||||||
        '''
 | 
					        '''
 | 
				
			||||||
 | 
					        if isinstance(path, (list, tuple)) and path:
 | 
				
			||||||
 | 
					            # Can happen from an file_event_hook on OS X when drag and dropping
 | 
				
			||||||
 | 
					            # onto the icon in the dock or using open -a
 | 
				
			||||||
 | 
					            path = path[-1]
 | 
				
			||||||
        if not self._check_before_open():
 | 
					        if not self._check_before_open():
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
        if not hasattr(path, 'rpartition'):
 | 
					        if not hasattr(path, 'rpartition'):
 | 
				
			||||||
 | 
				
			|||||||
@ -25,6 +25,14 @@ files inside the book which will be opened for editing automatically.
 | 
				
			|||||||
    setup_gui_option_parser(parser)
 | 
					    setup_gui_option_parser(parser)
 | 
				
			||||||
    return parser
 | 
					    return parser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class EventAccumulator(object):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        self.events = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __call__(self, ev):
 | 
				
			||||||
 | 
					        self.events.append(ev)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def gui_main(path=None, notify=None):
 | 
					def gui_main(path=None, notify=None):
 | 
				
			||||||
    _run(['ebook-edit', path], notify=notify)
 | 
					    _run(['ebook-edit', path], notify=notify)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -55,6 +63,7 @@ def _run(args, notify=None):
 | 
				
			|||||||
    decouple('edit-book-')
 | 
					    decouple('edit-book-')
 | 
				
			||||||
    override = 'calibre-edit-book' if islinux else None
 | 
					    override = 'calibre-edit-book' if islinux else None
 | 
				
			||||||
    app = Application(args, override_program_name=override, color_prefs=tprefs)
 | 
					    app = Application(args, override_program_name=override, color_prefs=tprefs)
 | 
				
			||||||
 | 
					    app.file_event_hook = EventAccumulator()
 | 
				
			||||||
    app.load_builtin_fonts()
 | 
					    app.load_builtin_fonts()
 | 
				
			||||||
    app.setWindowIcon(QIcon(I('tweak.png')))
 | 
					    app.setWindowIcon(QIcon(I('tweak.png')))
 | 
				
			||||||
    Application.setOrganizationName(ORG_NAME)
 | 
					    Application.setOrganizationName(ORG_NAME)
 | 
				
			||||||
@ -64,6 +73,11 @@ def _run(args, notify=None):
 | 
				
			|||||||
    main.show()
 | 
					    main.show()
 | 
				
			||||||
    if len(args) > 1:
 | 
					    if len(args) > 1:
 | 
				
			||||||
        main.boss.open_book(args[1], edit_file=args[2:], clear_notify_data=False)
 | 
					        main.boss.open_book(args[1], edit_file=args[2:], clear_notify_data=False)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        for path in reversed(app.file_event_hook.events):
 | 
				
			||||||
 | 
					            main.boss.open_book(path)
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        app.file_event_hook = main.boss.open_book
 | 
				
			||||||
    app.exec_()
 | 
					    app.exec_()
 | 
				
			||||||
    # Ensure that the parse worker has quit so that temp files can be deleted
 | 
					    # Ensure that the parse worker has quit so that temp files can be deleted
 | 
				
			||||||
    # on windows
 | 
					    # on windows
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user