Attempt to successfully import the settings we can now export.

* QSettings exports the 'general' group as '%General' but appears in some circumstances (Linux?) to struggle to import this again. Try and compensate.

* If you run 2.1, even if just the once, it'll create a [players] settings group. If you later go back to 2.0 it'll load this group (even if it doesn't use it) and so it'll be exported. However the import considers the group invalid so fails. I've therefore changed the import to be more forgiving and just ignore unknown groups. A basic sanity test is done earlier instead.

bzr-revno: 2125
This commit is contained in:
Jonathan Corwin 2013-01-02 20:10:37 +00:00
commit 0377c8ad26

View File

@ -982,6 +982,22 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
settings = Settings() settings = Settings()
import_settings = Settings(import_file_name, import_settings = Settings(import_file_name,
Settings.IniFormat) Settings.IniFormat)
# Lets do a basic sanity check. If it contains this string we can
# assume it was created by OpenLP and so we'll load what we can
# from it, and just silently ignore anything we don't recognise
if import_settings.value(u'SettingsImport/type').toString() \
!= u'OpenLP_settings_export':
QtGui.QMessageBox.critical(self,
translate('OpenLP.MainWindow', 'Import settings'),
translate('OpenLP.MainWindow',
'The file you selected does appear to be a valid OpenLP '
'settings file.\n\n'
'Section [%s] is not valid \n\n'
'Processing has terminated and no changed have been made.'
).replace('%s', u'SettingsImport'),
QtGui.QMessageBox.StandardButtons(
QtGui.QMessageBox.Ok))
return
import_keys = import_settings.allKeys() import_keys = import_settings.allKeys()
for section_key in import_keys: for section_key in import_keys:
# We need to handle the really bad files. # We need to handle the really bad files.
@ -991,22 +1007,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
section = u'unknown' section = u'unknown'
key = u'' key = u''
# Switch General back to lowercase. # Switch General back to lowercase.
if section == u'General': if section == u'General' or section == u'%General':
section = u'general' section = u'general'
section_key = section + "/" + key section_key = section + "/" + key
# Make sure it's a valid section for us. # Make sure it's a valid section for us.
if not section in setting_sections: if not section in setting_sections:
QtGui.QMessageBox.critical(self, continue
translate('OpenLP.MainWindow', 'Import settings'),
translate('OpenLP.MainWindow',
'The file you selected does appear to be a valid OpenLP '
'settings file.\n\n'
'Section [%s] is not valid \n\n'
'Processing has terminated and no changed have been made.'
).replace('%s', section),
QtGui.QMessageBox.StandardButtons(
QtGui.QMessageBox.Ok))
return
# We have a good file, import it. # We have a good file, import it.
for section_key in import_keys: for section_key in import_keys:
value = import_settings.value(section_key) value = import_settings.value(section_key)