コード例 #1
0
 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()
コード例 #2
0
    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')
コード例 #3
0
ファイル: test_openlyricsexport.py プロジェクト: jkunle/paul
    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))))
コード例 #4
0
    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)
コード例 #5
0
 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()
コード例 #6
0
ファイル: mediaitem.py プロジェクト: feitianyiren/openlp
 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()