Example #1
0
 def save(self):
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('background color', self.background_color)
     settings.endGroup()
     if self.initial_color != self.background_color:
         self.settings_form.register_post_process('images_config_updated')
Example #2
0
 def save(self):
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('background color', self.background_color)
     settings.endGroup()
     if self.initial_color != self.background_color:
         self.settings_form.register_post_process('images_config_updated')
Example #3
0
def check_latest_version(current_version):
    """
    Check the latest version of OpenLP against the version file on the OpenLP
    site.

    **Rules around versions and version files:**

    * If a version number has a build (i.e. -bzr1234), then it is a nightly.
    * If a version number's minor version is an odd number, it is a development release.
    * If a version number's minor version is an even number, it is a stable release.

    :param current_version: The current version of OpenLP.
    """
    version_string = current_version['full']
    # set to prod in the distribution config file.
    settings = Settings()
    settings.beginGroup('core')
    last_test = settings.value('last version test')
    this_test = str(datetime.now().date())
    settings.setValue('last version test', this_test)
    settings.endGroup()
    if last_test != this_test:
        if current_version['build']:
            req = urllib.request.Request(
                'http://www.openlp.org/files/nightly_version.txt')
        else:
            version_parts = current_version['version'].split('.')
            if int(version_parts[1]) % 2 != 0:
                req = urllib.request.Request(
                    'http://www.openlp.org/files/dev_version.txt')
            else:
                req = urllib.request.Request(
                    'http://www.openlp.org/files/version.txt')
        req.add_header(
            'User-Agent', 'OpenLP/{version} {system}/{release}; '.format(
                version=current_version['full'],
                system=platform.system(),
                release=platform.release()))
        remote_version = None
        retries = 0
        while True:
            try:
                remote_version = str(
                    urllib.request.urlopen(
                        req, None,
                        timeout=CONNECTION_TIMEOUT).read().decode()).strip()
            except (urllib.error.URLError, ConnectionError):
                if retries > CONNECTION_RETRIES:
                    log.exception(
                        'Failed to download the latest OpenLP version file')
                else:
                    retries += 1
                    time.sleep(0.1)
                    continue
            break
        if remote_version:
            version_string = remote_version
    return version_string
Example #4
0
 def save(self):
     """
     Save the Dialog settings
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('display footer', self.display_footer)
     settings.setValue('add custom from service', self.update_load)
     settings.endGroup()
     if self.tab_visited:
         self.settings_form.register_post_process('custom_config_updated')
     self.tab_visited = False
Example #5
0
 def save(self):
     """
     Save the Dialog settings
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('display footer', self.display_footer)
     settings.setValue('add custom from service', self.update_load)
     settings.endGroup()
     if self.tab_visited:
         self.settings_form.register_post_process('custom_config_updated')
     self.tab_visited = False
Example #6
0
 def save(self):
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('display songbar', self.tool_bar)
     settings.setValue('update service on edit', self.update_edit)
     settings.setValue('add song from service', self.update_load)
     settings.setValue('display songbook', self.display_songbook)
     settings.setValue('display written by', self.display_written_by)
     settings.setValue('display copyright symbol', self.display_copyright_symbol)
     settings.endGroup()
     if self.tab_visited:
         self.settings_form.register_post_process('songs_config_updated')
     self.tab_visited = False
Example #7
0
def check_latest_version(current_version):
    """
    Check the latest version of OpenLP against the version file on the OpenLP
    site.

    **Rules around versions and version files:**

    * If a version number has a build (i.e. -bzr1234), then it is a nightly.
    * If a version number's minor version is an odd number, it is a development release.
    * If a version number's minor version is an even number, it is a stable release.

    :param current_version: The current version of OpenLP.
    """
    version_string = current_version["full"]
    # set to prod in the distribution config file.
    settings = Settings()
    settings.beginGroup("core")
    last_test = settings.value("last version test")
    this_test = str(datetime.now().date())
    settings.setValue("last version test", this_test)
    settings.endGroup()
    if last_test != this_test:
        if current_version["build"]:
            req = urllib.request.Request("http://www.openlp.org/files/nightly_version.txt")
        else:
            version_parts = current_version["version"].split(".")
            if int(version_parts[1]) % 2 != 0:
                req = urllib.request.Request("http://www.openlp.org/files/dev_version.txt")
            else:
                req = urllib.request.Request("http://www.openlp.org/files/version.txt")
        req.add_header(
            "User-Agent", "OpenLP/%s %s/%s; " % (current_version["full"], platform.system(), platform.release())
        )
        remote_version = None
        retries = 0
        while True:
            try:
                remote_version = str(
                    urllib.request.urlopen(req, None, timeout=CONNECTION_TIMEOUT).read().decode()
                ).strip()
            except (urllib.error.URLError, ConnectionError):
                if retries > CONNECTION_RETRIES:
                    log.exception("Failed to download the latest OpenLP version file")
                else:
                    retries += 1
                    time.sleep(0.1)
                    continue
            break
        if remote_version:
            version_string = remote_version
    return version_string
Example #8
0
 def save(self):
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('display songbar', self.tool_bar)
     settings.setValue('update service on edit', self.update_edit)
     settings.setValue('add song from service', self.update_load)
     settings.setValue('display songbook', self.display_songbook)
     settings.setValue('display copyright symbol',
                       self.display_copyright_symbol)
     settings.setValue('show song author', self.display_author)
     settings.endGroup()
     if self.tab_visited:
         self.settings_form.register_post_process('songs_config_updated')
     self.tab_visited = False
Example #9
0
 def save(self):
     """
     Save the settings
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('background color', self.background_color)
     settings.endGroup()
     old_players, override_player = get_media_players()
     if self.used_players != old_players:
         # clean old Media stuff
         set_media_players(self.used_players, override_player)
         self.settings_form.register_post_process('mediaitem_suffix_reset')
         self.settings_form.register_post_process('mediaitem_media_rebuild')
         self.settings_form.register_post_process('config_screen_changed')
Example #10
0
 def save(self):
     """
     Save the settings
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('background color', self.background_color)
     settings.endGroup()
     old_players, override_player = get_media_players()
     if self.used_players != old_players:
         # clean old Media stuff
         set_media_players(self.used_players, override_player)
         self.settings_form.register_post_process('mediaitem_suffix_reset')
         self.settings_form.register_post_process('mediaitem_media_rebuild')
         self.settings_form.register_post_process('config_screen_changed')
Example #11
0
 def save(self):
     """
     Save the shortcuts. **Note**, that we do not have to load the shortcuts, as they are loaded in
     :class:`~openlp.core.utils.ActionList`.
     """
     settings = Settings()
     settings.beginGroup('shortcuts')
     for category in self.action_list.categories:
         # Check if the category is for internal use only.
         if category.name is None:
             continue
         for action in category.actions:
             if action in self.changed_actions:
                 old_shortcuts = list(map(self.get_shortcut_string, action.shortcuts()))
                 action.setShortcuts(self.changed_actions[action])
                 self.action_list.update_shortcut_map(action, old_shortcuts)
             settings.setValue(action.objectName(), action.shortcuts())
     settings.endGroup()
Example #12
0
 def save(self):
     """
     Save the shortcuts. **Note**, that we do not have to load the shortcuts, as they are loaded in
     :class:`~openlp.core.utils.ActionList`.
     """
     settings = Settings()
     settings.beginGroup('shortcuts')
     for category in self.action_list.categories:
         # Check if the category is for internal use only.
         if category.name is None:
             continue
         for action in category.actions:
             if action in self.changed_actions:
                 old_shortcuts = list(map(self.get_shortcut_string, action.shortcuts()))
                 action.setShortcuts(self.changed_actions[action])
                 self.action_list.update_shortcut_map(action, old_shortcuts)
             settings.setValue(action.objectName(), action.shortcuts())
     settings.endGroup()
Example #13
0
File: tab.py Project: jkunle/paul
 def save(self):
     """
     Save the projector settings
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('connect on start', self.connect_on_startup.isChecked())
     settings.setValue('socket timeout', self.socket_timeout_spin_box.value())
     settings.setValue('poll time', self.socket_poll_spin_box.value())
     settings.setValue('source dialog type', self.dialog_type_combo_box.currentIndex())
     settings.endGroup
Example #14
0
 def save(self):
     """
     Save the projector settings
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('connect on start', self.connect_on_startup.isChecked())
     settings.setValue('socket timeout', self.socket_timeout_spin_box.value())
     settings.setValue('poll time', self.socket_poll_spin_box.value())
     settings.setValue('source dialog type', self.dialog_type_combo_box.currentIndex())
     settings.endGroup()
Example #15
0
 def save_options(self):
     """
     Save the settings and close the dialog.
     """
     # Save the settings for this dialog.
     settings = Settings()
     settings.beginGroup('advanced')
     settings.setValue('print slide text', self.slide_text_check_box.isChecked())
     settings.setValue('add page break', self.page_break_after_text.isChecked())
     settings.setValue('print file meta data', self.meta_data_check_box.isChecked())
     settings.setValue('print notes', self.notes_check_box.isChecked())
     settings.endGroup()
Example #16
0
 def save_options(self):
     """
     Save the settings and close the dialog.
     """
     # Save the settings for this dialog.
     settings = Settings()
     settings.beginGroup('advanced')
     settings.setValue('print slide text',
                       self.slide_text_check_box.isChecked())
     settings.setValue('add page break',
                       self.page_break_after_text.isChecked())
     settings.setValue('print file meta data',
                       self.meta_data_check_box.isChecked())
     settings.setValue('print notes', self.notes_check_box.isChecked())
     settings.endGroup()
Example #17
0
 def display_size_changed(self, display):
     """
     The Zoom Combo box has changed so set up the size.
     """
     if display == ZoomSize.Page:
         self.preview_widget.fitInView()
     elif display == ZoomSize.Width:
         self.preview_widget.fitToWidth()
     elif display == ZoomSize.OneHundred:
         self.preview_widget.fitToWidth()
         self.preview_widget.zoomIn(1)
     elif display == ZoomSize.SeventyFive:
         self.preview_widget.fitToWidth()
         self.preview_widget.zoomIn(0.75)
     elif display == ZoomSize.Fifty:
         self.preview_widget.fitToWidth()
         self.preview_widget.zoomIn(0.5)
     elif display == ZoomSize.TwentyFive:
         self.preview_widget.fitToWidth()
         self.preview_widget.zoomIn(0.25)
     settings = Settings()
     settings.beginGroup('advanced')
     settings.setValue('display size', display)
     settings.endGroup()
Example #18
0
 def display_size_changed(self, display):
     """
     The Zoom Combo box has changed so set up the size.
     """
     if display == ZoomSize.Page:
         self.preview_widget.fitInView()
     elif display == ZoomSize.Width:
         self.preview_widget.fitToWidth()
     elif display == ZoomSize.OneHundred:
         self.preview_widget.fitToWidth()
         self.preview_widget.zoomIn(1)
     elif display == ZoomSize.SeventyFive:
         self.preview_widget.fitToWidth()
         self.preview_widget.zoomIn(0.75)
     elif display == ZoomSize.Fifty:
         self.preview_widget.fitToWidth()
         self.preview_widget.zoomIn(0.5)
     elif display == ZoomSize.TwentyFive:
         self.preview_widget.fitToWidth()
         self.preview_widget.zoomIn(0.25)
     settings = Settings()
     settings.beginGroup('advanced')
     settings.setValue('display size', display)
     settings.endGroup()
Example #19
0
 def save(self):
     """
     Save the settings
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('theme level', self.theme_level)
     settings.setValue('global theme', self.global_theme)
     settings.setValue('wrap footer', self.wrap_footer_check_box.isChecked())
     settings.endGroup()
     self.renderer.set_theme_level(self.theme_level)
     if self.tab_visited:
         self.settings_form.register_post_process('theme_update_global')
     self.tab_visited = False
Example #20
0
 def save(self):
     """
     Save the settings
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('theme level', self.theme_level)
     settings.setValue('global theme', self.global_theme)
     settings.setValue('wrap footer',
                       self.wrap_footer_check_box.isChecked())
     settings.endGroup()
     self.renderer.set_theme_level(self.theme_level)
     if self.tab_visited:
         self.settings_form.register_post_process('theme_update_global')
     self.tab_visited = False
Example #21
0
 def save(self):
     """
     Save the settings from the form
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('monitor', self.monitor_combo_box.currentIndex())
     settings.setValue('display on monitor',
                       self.display_on_monitor_check.isChecked())
     settings.setValue('blank warning', self.warning_check_box.isChecked())
     settings.setValue('auto open', self.auto_open_check_box.isChecked())
     settings.setValue('show splash',
                       self.show_splash_check_box.isChecked())
     settings.setValue('update check',
                       self.check_for_updates_check_box.isChecked())
     settings.setValue('save prompt',
                       self.save_check_service_check_box.isChecked())
     settings.setValue('auto unblank',
                       self.auto_unblank_check_box.isChecked())
     settings.setValue('auto preview',
                       self.auto_preview_check_box.isChecked())
     settings.setValue('loop delay', self.timeout_spin_box.value())
     settings.setValue('ccli number', self.number_edit.displayText())
     settings.setValue('songselect username',
                       self.username_edit.displayText())
     settings.setValue('songselect password',
                       self.password_edit.displayText())
     settings.setValue('x position', self.custom_X_value_edit.value())
     settings.setValue('y position', self.custom_Y_value_edit.value())
     settings.setValue('height', self.custom_height_value_edit.value())
     settings.setValue('width', self.custom_width_value_edit.value())
     settings.setValue('override position',
                       self.override_radio_button.isChecked())
     settings.setValue('audio start paused',
                       self.start_paused_check_box.isChecked())
     settings.setValue('audio repeat list',
                       self.repeat_list_check_box.isChecked())
     settings.endGroup()
     # On save update the screens as well
     self.post_set_up(True)
Example #22
0
 def save(self):
     """
     Save the settings from the form
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('monitor', self.monitor_combo_box.currentIndex())
     settings.setValue('display on monitor', self.display_on_monitor_check.isChecked())
     settings.setValue('blank warning', self.warning_check_box.isChecked())
     settings.setValue('auto open', self.auto_open_check_box.isChecked())
     settings.setValue('show splash', self.show_splash_check_box.isChecked())
     settings.setValue('update check', self.check_for_updates_check_box.isChecked())
     settings.setValue('save prompt', self.save_check_service_check_box.isChecked())
     settings.setValue('auto unblank', self.auto_unblank_check_box.isChecked())
     settings.setValue('auto preview', self.auto_preview_check_box.isChecked())
     settings.setValue('loop delay', self.timeout_spin_box.value())
     settings.setValue('ccli number', self.number_edit.displayText())
     settings.setValue('songselect username', self.username_edit.displayText())
     settings.setValue('songselect password', self.password_edit.displayText())
     settings.setValue('x position', self.custom_X_value_edit.value())
     settings.setValue('y position', self.custom_Y_value_edit.value())
     settings.setValue('height', self.custom_height_value_edit.value())
     settings.setValue('width', self.custom_width_value_edit.value())
     settings.setValue('override position', self.override_radio_button.isChecked())
     settings.setValue('audio start paused', self.start_paused_check_box.isChecked())
     settings.setValue('audio repeat list', self.repeat_list_check_box.isChecked())
     settings.endGroup()
     # On save update the screens as well
     self.post_set_up(True)
Example #23
0
 def save(self):
     """
     Save settings to disk.
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('default service enabled', self.service_name_check_box.isChecked())
     service_name = self.service_name_edit.text()
     preset_is_valid = self.generate_service_name_example()[0]
     if service_name == UiStrings().DefaultServiceName or not preset_is_valid:
         settings.remove('default service name')
         self.service_name_edit.setText(service_name)
     else:
         settings.setValue('default service name', service_name)
     settings.setValue('default service day', self.service_name_day.currentIndex())
     settings.setValue('default service hour', self.service_name_time.time().hour())
     settings.setValue('default service minute', self.service_name_time.time().minute())
     settings.setValue('recent file count', self.recent_spin_box.value())
     settings.setValue('save current plugin', self.media_plugin_check_box.isChecked())
     settings.setValue('double click live', self.double_click_live_check_box.isChecked())
     settings.setValue('single click preview', self.single_click_preview_check_box.isChecked())
     settings.setValue('expand service item', self.expand_service_item_check_box.isChecked())
     settings.setValue('enable exit confirmation', self.enable_auto_close_check_box.isChecked())
     settings.setValue('hide mouse', self.hide_mouse_check_box.isChecked())
     settings.setValue('alternate rows', self.alternate_rows_check_box.isChecked())
     settings.setValue('default color', self.default_color)
     settings.setValue('default image', self.default_file_edit.text())
     settings.setValue('slide limits', self.slide_limits)
     if self.x11_bypass_check_box.isChecked() != settings.value('x11 bypass wm'):
         settings.setValue('x11 bypass wm', self.x11_bypass_check_box.isChecked())
         self.settings_form.register_post_process('config_screen_changed')
     self.settings_form.register_post_process('slidecontroller_update_slide_limits')
     settings.setValue('search as type', self.is_search_as_you_type_enabled)
     settings.endGroup()
Example #24
0
 def save(self):
     """
     Save the changes on exit of the Settings dialog.
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     # Check value has changed as no event handles this field
     if settings.value("location") != self.vertical_combo_box.currentIndex():
         self.changed = True
     settings.setValue("background color", self.background_color)
     settings.setValue("font color", self.font_color)
     settings.setValue("font size", self.font_size)
     self.font_face = self.font_combo_box.currentFont().family()
     settings.setValue("font face", self.font_face)
     settings.setValue("timeout", self.timeout)
     self.location = self.vertical_combo_box.currentIndex()
     settings.setValue("location", self.location)
     settings.endGroup()
     if self.changed:
         self.settings_form.register_post_process("update_display_css")
     self.changed = False
Example #25
0
 def save(self):
     """
     Save settings to disk.
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('default service enabled', self.service_name_check_box.isChecked())
     service_name = self.service_name_edit.text()
     preset_is_valid = self.generate_service_name_example()[0]
     if service_name == UiStrings().DefaultServiceName or not preset_is_valid:
         settings.remove('default service name')
         self.service_name_edit.setText(service_name)
     else:
         settings.setValue('default service name', service_name)
     settings.setValue('default service day', self.service_name_day.currentIndex())
     settings.setValue('default service hour', self.service_name_time.time().hour())
     settings.setValue('default service minute', self.service_name_time.time().minute())
     settings.setValue('recent file count', self.recent_spin_box.value())
     settings.setValue('save current plugin', self.media_plugin_check_box.isChecked())
     settings.setValue('double click live', self.double_click_live_check_box.isChecked())
     settings.setValue('single click preview', self.single_click_preview_check_box.isChecked())
     settings.setValue('single click service preview', self.single_click_service_preview_check_box.isChecked())
     settings.setValue('expand service item', self.expand_service_item_check_box.isChecked())
     slide_max_height_index = self.slide_max_height_combo_box.currentIndex()
     slide_max_height_value = self.slide_max_height_combo_box.itemData(slide_max_height_index)
     settings.setValue('slide max height', slide_max_height_value)
     settings.setValue('autoscrolling', self.autoscroll_map[self.autoscroll_combo_box.currentIndex()])
     settings.setValue('enable exit confirmation', self.enable_auto_close_check_box.isChecked())
     settings.setValue('hide mouse', self.hide_mouse_check_box.isChecked())
     settings.setValue('alternate rows', self.alternate_rows_check_box.isChecked())
     settings.setValue('slide limits', self.slide_limits)
     if self.x11_bypass_check_box.isChecked() != settings.value('x11 bypass wm'):
         settings.setValue('x11 bypass wm', self.x11_bypass_check_box.isChecked())
         self.settings_form.register_post_process('config_screen_changed')
     self.settings_form.register_post_process('slidecontroller_update_slide_limits')
     settings.setValue('search as type', self.is_search_as_you_type_enabled)
     settings.endGroup()
Example #26
0
 def save(self):
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('is verse number visible',
                       self.is_verse_number_visible)
     settings.setValue('display new chapter', self.show_new_chapters)
     settings.setValue('display brackets', self.display_style)
     settings.setValue('verse layout style', self.layout_style)
     settings.setValue('second bibles', self.second_bibles)
     settings.setValue('bible theme', self.bible_theme)
     if self.verse_separator_check_box.isChecked():
         settings.setValue('verse separator',
                           self.verse_separator_line_edit.text())
     else:
         settings.remove('verse separator')
     if self.range_separator_check_box.isChecked():
         settings.setValue('range separator',
                           self.range_separator_line_edit.text())
     else:
         settings.remove('range separator')
     if self.list_separator_check_box.isChecked():
         settings.setValue('list separator',
                           self.list_separator_line_edit.text())
     else:
         settings.remove('list separator')
     if self.end_separator_check_box.isChecked():
         settings.setValue('end separator',
                           self.end_separator_line_edit.text())
     else:
         settings.remove('end separator')
     update_reference_separators()
     if self.language_selection != settings.value('book name language'):
         settings.setValue('book name language', self.language_selection)
         self.settings_form.register_post_process('bibles_load_list')
     settings.endGroup()
     if self.tab_visited:
         self.settings_form.register_post_process('bibles_config_updated')
     self.tab_visited = False
Example #27
0
 def save(self):
     """
     Save the changes on exit of the Settings dialog.
     """
     settings = Settings()
     settings.beginGroup(self.settings_section)
     # Check value has changed as no event handles this field
     if settings.value('location') != self.vertical_combo_box.currentIndex():
         self.changed = True
     settings.setValue('background color', self.background_color)
     settings.setValue('font color', self.font_color)
     settings.setValue('font size', self.font_size)
     self.font_face = self.font_combo_box.currentFont().family()
     settings.setValue('font face', self.font_face)
     settings.setValue('timeout', self.timeout)
     self.location = self.vertical_combo_box.currentIndex()
     settings.setValue('location', self.location)
     settings.endGroup()
     if self.changed:
         self.settings_form.register_post_process('update_display_css')
     self.changed = False
Example #28
0
def main(args=None):
    """
    The main function which parses command line options and then runs

    :param args: Some args
    """
    args = parse_options(args)
    qt_args = []
    if args and args.loglevel.lower() in ['d', 'debug']:
        log.setLevel(logging.DEBUG)
    elif args and args.loglevel.lower() in ['w', 'warning']:
        log.setLevel(logging.WARNING)
    else:
        log.setLevel(logging.INFO)
    if args and args.style:
        qt_args.extend(['-style', args.style])
    # Throw the rest of the arguments at Qt, just in case.
    qt_args.extend(args.rargs)
    # Bug #1018855: Set the WM_CLASS property in X11
    if not is_win() and not is_macosx():
        qt_args.append('OpenLP')
    # Initialise the resources
    qInitResources()
    # Now create and actually run the application.
    application = OpenLP(qt_args)
    application.setOrganizationName('OpenLP')
    application.setOrganizationDomain('openlp.org')
    application.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)
    application.setAttribute(QtCore.Qt.AA_DontCreateNativeWidgetSiblings, True)
    if args and args.portable:
        application.setApplicationName('OpenLPPortable')
        Settings.setDefaultFormat(Settings.IniFormat)
        # Get location OpenLPPortable.ini
        application_path = AppLocation.get_directory(AppLocation.AppDir)
        set_up_logging(
            os.path.abspath(os.path.join(application_path, '..', '..',
                                         'Other')))
        log.info('Running portable')
        portable_settings_file = os.path.abspath(
            os.path.join(application_path, '..', '..', 'Data', 'OpenLP.ini'))
        # Make this our settings file
        log.info('INI file: %s', portable_settings_file)
        Settings.set_filename(portable_settings_file)
        portable_settings = Settings()
        # Set our data path
        data_path = os.path.abspath(
            os.path.join(
                application_path,
                '..',
                '..',
                'Data',
            ))
        log.info('Data path: %s', data_path)
        # Point to our data path
        portable_settings.setValue('advanced/data path', data_path)
        portable_settings.setValue('advanced/is portable', True)
        portable_settings.sync()
    else:
        application.setApplicationName('OpenLP')
        set_up_logging(AppLocation.get_directory(AppLocation.CacheDir))
    Registry.create()
    Registry().register('application', application)
    application.setApplicationVersion(get_application_version()['version'])
    # Check if an instance of OpenLP is already running. Quit if there is a running instance and the user only wants one
    if application.is_already_running():
        sys.exit()
    # If the custom data path is missing and the user wants to restore the data path, quit OpenLP.
    if application.is_data_path_missing():
        application.shared_memory.detach()
        sys.exit()
    # Remove/convert obsolete settings.
    Settings().remove_obsolete_settings()
    # First time checks in settings
    if not Settings().value('core/has run wizard'):
        if not FirstTimeLanguageForm().exec():
            # if cancel then stop processing
            sys.exit()
    # i18n Set Language
    language = LanguageManager.get_language()
    translators = LanguageManager.get_translator(language)
    for translator in translators:
        if not translator.isEmpty():
            application.installTranslator(translator)
    if not translators:
        log.debug('Could not find translators.')
    if args and not args.no_error_form:
        sys.excepthook = application.hook_exception
    sys.exit(application.run(qt_args))
Example #29
0
 def save(self):
     settings = Settings()
     settings.beginGroup(self.settings_section)
     settings.setValue('is verse number visible', self.is_verse_number_visible)
     settings.setValue('display new chapter', self.show_new_chapters)
     settings.setValue('display brackets', self.display_style)
     settings.setValue('verse layout style', self.layout_style)
     settings.setValue('second bibles', self.second_bibles)
     settings.setValue('bible theme', self.bible_theme)
     if self.verse_separator_check_box.isChecked():
         settings.setValue('verse separator', self.verse_separator_line_edit.text())
     else:
         settings.remove('verse separator')
     if self.range_separator_check_box.isChecked():
         settings.setValue('range separator', self.range_separator_line_edit.text())
     else:
         settings.remove('range separator')
     if self.list_separator_check_box.isChecked():
         settings.setValue('list separator', self.list_separator_line_edit.text())
     else:
         settings.remove('list separator')
     if self.end_separator_check_box.isChecked():
         settings.setValue('end separator', self.end_separator_line_edit.text())
     else:
         settings.remove('end separator')
     update_reference_separators()
     if self.language_selection != settings.value('book name language'):
         settings.setValue('book name language', self.language_selection)
         self.settings_form.register_post_process('bibles_load_list')
     settings.setValue('reset to combined quick search', self.reset_to_combined_quick_search)
     settings.setValue('hide combined quick error', self.hide_combined_quick_error)
     settings.setValue('is search while typing enabled', self.bible_search_while_typing)
     settings.endGroup()
     if self.tab_visited:
         self.settings_form.register_post_process('bibles_config_updated')
     self.tab_visited = False
Example #30
0
def main(args=None):
    """
    The main function which parses command line options and then runs

    :param args: Some args
    """
    (options, args) = parse_options(args)
    qt_args = []
    if options.loglevel.lower() in ['d', 'debug']:
        log.setLevel(logging.DEBUG)
    elif options.loglevel.lower() in ['w', 'warning']:
        log.setLevel(logging.WARNING)
    else:
        log.setLevel(logging.INFO)
    if options.style:
        qt_args.extend(['-style', options.style])
    # Throw the rest of the arguments at Qt, just in case.
    qt_args.extend(args)
    # Bug #1018855: Set the WM_CLASS property in X11
    if not is_win() and not is_macosx():
        qt_args.append('OpenLP')
    # Initialise the resources
    qInitResources()
    # Now create and actually run the application.
    application = OpenLP(qt_args)
    application.setOrganizationName('OpenLP')
    application.setOrganizationDomain('openlp.org')
    if options.portable:
        application.setApplicationName('OpenLPPortable')
        Settings.setDefaultFormat(Settings.IniFormat)
        # Get location OpenLPPortable.ini
        application_path = AppLocation.get_directory(AppLocation.AppDir)
        set_up_logging(os.path.abspath(os.path.join(application_path, '..', '..', 'Other')))
        log.info('Running portable')
        portable_settings_file = os.path.abspath(os.path.join(application_path, '..', '..', 'Data', 'OpenLP.ini'))
        # Make this our settings file
        log.info('INI file: %s', portable_settings_file)
        Settings.set_filename(portable_settings_file)
        portable_settings = Settings()
        # Set our data path
        data_path = os.path.abspath(os.path.join(application_path, '..', '..', 'Data',))
        log.info('Data path: %s', data_path)
        # Point to our data path
        portable_settings.setValue('advanced/data path', data_path)
        portable_settings.setValue('advanced/is portable', True)
        portable_settings.sync()
    else:
        application.setApplicationName('OpenLP')
        set_up_logging(AppLocation.get_directory(AppLocation.CacheDir))
    Registry.create()
    Registry().register('application', application)
    application.setApplicationVersion(get_application_version()['version'])
    # Instance check
    if application.is_already_running():
        sys.exit()
    # Remove/convert obsolete settings.
    Settings().remove_obsolete_settings()
    # First time checks in settings
    if not Settings().value('core/has run wizard'):
        if not FirstTimeLanguageForm().exec_():
            # if cancel then stop processing
            sys.exit()
    # i18n Set Language
    language = LanguageManager.get_language()
    application_translator, default_translator = LanguageManager.get_translator(language)
    if not application_translator.isEmpty():
        application.installTranslator(application_translator)
    if not default_translator.isEmpty():
        application.installTranslator(default_translator)
    else:
        log.debug('Could not find default_translator.')
    if not options.no_error_form:
        sys.excepthook = application.hook_exception
    sys.exit(application.run(qt_args))