Added some flesh to the Windows Registry class.

bzr-revno: 164
This commit is contained in:
Raoul Snyman 2008-12-02 13:33:52 +00:00
parent 38643f3dbb
commit 9a7c2b42a7
7 changed files with 168 additions and 162 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-4.4.dtd">
<!-- eric4 project file for project openlp.org 2.0 -->
<!-- Saved: 2008-12-01, 21:42:45 -->
<!-- Saved: 2008-12-02, 09:11:09 -->
<!-- Copyright (C) 2008 Raoul Snyman, raoulsnyman@openlp.org -->
<Project version="4.4">
<ProgLanguage mixed="0">Python</ProgLanguage>
@ -82,6 +82,7 @@
<Source>openlp/core/utils/winregistry.py</Source>
<Source>openlp/core/utils/registry.py</Source>
<Source>openlp/core/utils/linregistry.py</Source>
<Source>setup.py</Source>
</Sources>
<Forms>
<Form>resources/forms/bibleimport.ui</Form>

View File

@ -17,8 +17,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA
"""
from registry import Registry
from linregistry import LinRegistry
from winregistry import WinRegistry
from confighelper import ConfigHelper
__all__ = ['Registry', 'LinRegistry', 'WinRegistry', 'ConfigHelper']
__all__ = ['Registry', 'ConfigHelper']

View File

@ -56,3 +56,17 @@ class ConfigHelper(object):
def getBiblePath():
return os.path.join(ConfigHelper.getConfigPath(), "Data","Bibles")
@staticmethod
def getRegistry():
"""
This static method loads the appropriate registry class based on the
current operating system, and returns an instantiation of that class.
"""
reg = None
if os.name == 'nt':
from winregistry import WinRegistry
reg = WinRegistry()
else:
from linregistry import LinRegistry
reg = LinRegistry()
return reg

View File

@ -23,4 +23,55 @@ class Registry(object):
The Registry class is a generic class for the accessing configurations.
"""
def __init__(self):
"""
Initialise the Registry object. Override this to add custom initialisation.
"""
pass
def has_value(self, section, key):
"""
Check if a value exists.
"""
pass
def create_value(self, section, key):
"""
Create a new value in the registry.
"""
pass
def get_value(self, section, key):
"""
Get a single value from the registry.
"""
pass
def set_value(self, section, key, value):
"""
Set a single value in the registry.
"""
pass
def delete_value(self, section, key):
"""
Delete a single value from the registry.
"""
pass
def has_section(self, section):
"""
Check if a section exists.
"""
return False
def create_section(self, section):
"""
Create a new section in the registry.
"""
pass
def delete_section(self, section):
"""
Delete a section (including all values).
"""
pass

View File

@ -17,6 +17,8 @@ You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
"""
import _winreg
import types
from openlp.core.utils import Registry
@ -24,6 +26,75 @@ class WinRegistry(Registry):
"""
The WinRegistry class is a high-level wrapper class for the Windows registry
functions in Python.
Notes:
"""
def __init__(self):
import _winreg
def __init__(self, base_key):
"""
Connection to the Windows registry, and save the handle.
"""
self.reg_handle = _winreg.CreateConnection(None, _winreg.HKEY_CURRENT_USER)
self.base_key = base_key
if not self.base_key.endswith('\\'):
self.base_key = self.base_key + '\\'
def has_value(self, section, key):
"""
Check if a key exists.
"""
return False
def create_value(self, section, key):
"""
Create a new key in the Windows registry.
"""
pass
def get_value(self, section, key):
"""
Get a single value from the Windows registry.
"""
key_handle = _winreg.OpenKey(self.reg_handle, self.base_key + section)
value = _winreg.QueryValueEx(key_handle, key)[0]
_winreg.CloseKey(key_handle)
return value
def set_value(self, section, key, value):
"""
Set a single value in the Windows registry.
"""
reg_type = _winreg.REG_BINARY
if type(value) is types.String:
reg_type = _winreg.REG_SZ
elif type(value) is types.Integer:
reg_type = _winreg.REG_DWORD
key_handle = _winreg.OpenKey(self.reg_handle, self.base_key + section)
_winreg.SetValueEx(key_handle, key, 0, reg_type, value)
_winreg.CloseKey(key_handle)
def delete_value(self, section, key):
"""
Delete a value from the Windows registry.
"""
key_handle = _winreg.OpenKey(self.reg_handle, self.base_key + section)
_winreg.DeleteValue(key_handle, key)
_winreg.CloseKey(key_handle)
def has_section(self, section):
"""
Check if a section exists.
"""
return False
def create_section(self, section):
"""
Create a new section in the Windows registry.
"""
try:
_winreg.CreateKey(self.reg_handle, self.base_key + section)
return True
except EnvironmentError:
return False
def delete_section(self, section):
pass

View File

@ -31,7 +31,7 @@ class BiblePlugin(Plugin):
Plugin.__init__(self, 'Bible', '1.9.0')
self.Weight = -9
#Register the bible Manager
self.biblemanager = BibleManager()
#self.biblemanager = BibleManager()
def getMediaManagerItem(self):
@ -87,7 +87,7 @@ class BiblePlugin(Plugin):
self.listView = QtGui.QListView(self.groupBox)
self.listView.setGeometry(QtCore.QRect(10, 180, 256, 192))
self.listView.setObjectName("listView")
# self.groupBox = QtGui.QGroupBox(self.MediaManagerItem)
# self.groupBox.setGeometry(QtCore.QRect(10, 10, 251, 341))
# self.groupBox.setObjectName("groupBox")
@ -112,8 +112,8 @@ class BiblePlugin(Plugin):
return self.MediaManagerItem
def onBibleNewClick(self):
self.bibleimportform = BibleImportForm(self.biblemanager)
self.bibleimportform.show()
#self.bibleimportform = BibleImportForm(self.biblemanager)
#self.bibleimportform.show()
pass
def onBiblePreviewClick(self):

View File

@ -133,160 +133,32 @@
<string>Credits</string>
</attribute>
<layout class="QVBoxLayout" name="CreditsTabLayout" >
<property name="spacing" >
<number>0</number>
</property>
<property name="margin" >
<number>8</number>
</property>
<item>
<widget class="QScrollArea" name="CreditsScrollArea" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeIncrement" >
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize" >
<size>
<width>372</width>
<height>391</height>
</size>
</property>
<property name="mouseTracking" >
<bool>true</bool>
</property>
<property name="verticalScrollBarPolicy" >
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="widgetResizable" >
<bool>false</bool>
</property>
<property name="alignment" >
<set>Qt::AlignCenter</set>
</property>
<widget class="QWidget" name="CreditsScrollContent" >
<property name="geometry" >
<rect>
<x>6</x>
<y>0</y>
<width>400</width>
<height>760</height>
</rect>
</property>
<property name="sizePolicy" >
<sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="baseSize" >
<size>
<width>400</width>
<height>760</height>
</size>
</property>
<layout class="QVBoxLayout" name="CreditsScrollContentLayout" >
<property name="spacing" >
<number>0</number>
</property>
<property name="margin" >
<number>8</number>
</property>
<item>
<widget class="QLabel" name="CreditsLabel" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize" >
<size>
<width>369</width>
<height>391</height>
</size>
</property>
<property name="sizeIncrement" >
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize" >
<size>
<width>369</width>
<height>760</height>
</size>
</property>
<property name="font" >
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text" >
<string>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<widget class="QLabel" name="CreditsLabel" >
<property name="text" >
<string>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
p, li { white-space: pre-wrap; }
&lt;/style>&lt;/head>&lt;body style=" font-family:'DejaVu Sans'; font-size:12pt; font-weight:400; font-style:normal;">
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;">&lt;span style=" font-size:10pt; font-weight:600; text-decoration: underline;">openlp.org 2.0.0&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Copyright © 2004-2008 openlp.org Foundation&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-weight:600;">- Lead Developer -&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Raoul Snyman&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-weight:600;">- Original Development -&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Tim Ebenezer&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-weight:600;">- Additional Development -&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Derek Scotney&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-weight:600;">- Testing -&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Jonathan Corwin&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Scott Hileard&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Ken Marshall&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Duane Pearce&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Andrew (thealok)&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Les Norbo&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Many others in the community&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-weight:600;">- Documentation -&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Raoul Snyman&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Hannah Snyman&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">David Bunce&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Seth Mayo&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-weight:600;">- Components Used -&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">JCL &amp;amp; JVCL - Project Jedi&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">Mozilla Public License&lt;/span>&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Toolbar2000 - JR Software&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">GNU General Public License&lt;/span>&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">TBX - Alex Denisov&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">Custom Freeware License&lt;/span>&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Graphics 32 - Alex Denisov&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">Mozilla Public License&lt;/span>&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">Saturn Component Pack - Saturn Laboratories&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">Mozilla Public License&lt;/span>&lt;/p>
&lt;p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-weight:600;">- Final Credit -&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">"For God so loved the world that He gave&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">His one and only Son, so that whoever&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">believes in Him will not perish but inherit&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">&lt;span style=" font-style:italic;">eternal life." -- John 3:16&lt;/span>&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">And last but not least, final credit goes to&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">God our Father, for sending His Son to die&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">on the cross, setting us free from sin. We&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">bring this software to you for free because&lt;/p>
&lt;p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;">He has set us free.&lt;/p>&lt;/body>&lt;/html></string>
</property>
</widget>
</item>
</layout>
</widget>
&lt;/style>&lt;/head>&lt;body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Project Lead&lt;/span>&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Raoul Snyman&lt;/p>
&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Developers&lt;/span>&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tim Bentley&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jonathan Corwin&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Raoul Snyman&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Martin Thompson&lt;/p>
&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Carsten Tingaard&lt;/p>&lt;/body>&lt;/html></string>
</property>
<property name="alignment" >
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
@ -340,7 +212,6 @@ p, li { white-space: pre-wrap; }
</action>
</widget>
<tabstops>
<tabstop>CreditsScrollArea</tabstop>
<tabstop>ContributeButton</tabstop>
</tabstops>
<resources>