def close(self): """ Remove registered function on close. """ if self.is_live: if is_macosx(): # Block signals so signal we are disconnecting can't get called while we disconnect it self.blockSignals(True) if self.screens.current['primary']: self.application.focusWindowChanged.disconnect() self.blockSignals(False) Registry().remove_function('live_display_hide', self.hide_display) Registry().remove_function('live_display_show', self.show_display) Registry().remove_function('update_display_css', self.css_changed) self.close_display = True super().close()
def screen_count_changed(self, changed_screen=-1): """ Called when a screen has been added or removed. ``changed_screen`` The screen's number which has been (un)plugged. """ # Do not log at start up. if changed_screen != -1: log.info('screen_count_changed %d' % self.desktop.screenCount()) # Remove unplugged screens. for screen in copy.deepcopy(self.screen_list): if screen['number'] == self.desktop.screenCount(): self.remove_screen(screen['number']) # Add new screens. for number in range(self.desktop.screenCount()): if not self.screen_exists(number): self.add_screen({ 'number': number, 'size': self.desktop.screenGeometry(number), 'primary': (self.desktop.primaryScreen() == number) }) # We do not want to send this message at start up. if changed_screen != -1: # Reload setting tabs to apply possible changes. Registry().execute('config_screen_changed')
def export_same_filename_test(self): """ Test that files is not overwritten if songs has same title and author """ # GIVEN: A mocked song_to_xml, 2 mocked songs, a mocked application and an OpenLyricsExport instance with patch( 'openlp.plugins.songs.lib.openlyricsexport.OpenLyrics.song_to_xml' ) as mocked_song_to_xml: mocked_song_to_xml.return_value = '<?xml version="1.0" encoding="UTF-8"?>\n<empty/>' author = MagicMock() author.display_name = 'Test Author' song = MagicMock() song.authors = [author] song.title = 'Test Title' parent = MagicMock() parent.stop_export_flag = False mocked_application_object = MagicMock() Registry().register('application', mocked_application_object) ol_export = OpenLyricsExport(parent, [song, song], self.temp_folder) # WHEN: Doing the export ol_export.do_export() # THEN: The exporter should have created 2 files self.assertTrue( os.path.exists( os.path.join( self.temp_folder, '%s (%s).xml' % (song.title, author.display_name)))) self.assertTrue( os.path.exists( os.path.join( self.temp_folder, '%s (%s)-1.xml' % (song.title, author.display_name))))
def __init__(self, parent, **kwargs): """ The constructor loads up the database and creates and initialises the tables if the database doesn't exist. :param parent: :param kwargs: ``path`` The path to the bible database file. ``name`` The name of the database. This is also used as the file name for SQLite databases. """ log.info('BibleDB loaded') self.bible_plugin = parent self.session = None if 'path' not in kwargs: raise KeyError('Missing keyword argument "path".') if 'name' not in kwargs and 'file' not in kwargs: raise KeyError('Missing keyword argument "name" or "file".') self.stop_import_flag = False if 'name' in kwargs: self.name = kwargs['name'] if not isinstance(self.name, str): self.name = str(self.name, 'utf-8') self.file = clean_filename(self.name) + '.sqlite' if 'file' in kwargs: self.file = kwargs['file'] Manager.__init__(self, 'bibles', init_schema, self.file, upgrade) if self.session and 'file' in kwargs: self.get_name() if 'path' in kwargs: self.path = kwargs['path'] self.wizard = None Registry().register_function('openlp_stop_wizard', self.stop_import)
def initialise(self): log.info('SongUsage Initialising') super(SongUsagePlugin, self).initialise() Registry().register_function('slidecontroller_live_started', self.display_song_usage) Registry().register_function('print_service_started', self.print_song_usage) self.song_usage_active = Settings().value(self.settings_section + '/active') # Set the button and checkbox state self.set_button_state() action_list = ActionList.get_instance() action_list.add_action(self.song_usage_status, translate('SongUsagePlugin', 'Song Usage')) action_list.add_action(self.song_usage_delete, translate('SongUsagePlugin', 'Song Usage')) action_list.add_action(self.song_usage_report, translate('SongUsagePlugin', 'Song Usage')) self.song_usage_delete_form = SongUsageDeleteForm(self.manager, self.main_window) self.song_usage_detail_form = SongUsageDetailForm(self, self.main_window) self.song_usage_menu.menuAction().setVisible(True) self.song_usage_active_button.show()
def setup_item(self): """ Do some additional setup. """ self.media_go_live.connect(self.go_live_remote) self.media_add_to_service.connect(self.add_to_service_remote) self.single_service_item = False self.has_search = True self.media_object = None # self.display_controller = DisplayController(self.parent()) Registry().register_function('video_background_replaced', self.video_background_replaced) Registry().register_function('mediaitem_media_rebuild', self.rebuild_players) # Allow DnD from the desktop self.list_view.activateDnD()