#!/usr/bin/env python
# This is only needed for Python v2 but is harmless for Python v3.
import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)
from PyQt4 import QtGui
# XXX change and use some other stuff.
import firstrunwizard_rc
class FirstRunWizard(QtGui.QWizard):
def __init__(self, parent=None, providers=None):
super(FirstRunWizard, self).__init__(parent)
if not providers:
providers = ('springbok',)
self.providers = providers
self.addPage(IntroPage())
self.addPage(SelectProviderPage(providers=providers))
self.addPage(RegisterUserPage(wizard=self))
#self.addPage(GlobalEIPSettings())
self.addPage(LastPage())
self.setPixmap(
QtGui.QWizard.BannerPixmap,
QtGui.QPixmap(':/images/banner.png'))
self.setPixmap(
QtGui.QWizard.BackgroundPixmap,
QtGui.QPixmap(':/images/background.png'))
self.setWindowTitle("First Run Wizard")
def accept(self):
print 'chosen provider: ', self.get_provider()
print 'username: ', self.field('userName')
print 'password: ', self.field('userPassword')
print 'remember password: ', self.field('rememberPassword')
super(FirstRunWizard, self).accept()
# XXX we should emit a completed signal here...
# and pass a dict with options
# XXX unless one exists by default...
def get_provider(self):
provider = self.field('provider_index')
return self.providers[provider]
class IntroPage(QtGui.QWizardPage):
def __init__(self, parent=None):
super(IntroPage, self).__init__(parent)
self.setTitle("First run wizard.")
self.setPixmap(
QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(':/images/watermark1.png'))
label = QtGui.QLabel(
"Now we will guide you through "
"some configuration that is needed before you "
"connect for the first time.
"
"If you ever need to modify this options again, "
"you can access from the 'Settings' menu in the "
"main window of the app.")
label.setWordWrap(True)
layout = QtGui.QVBoxLayout()
layout.addWidget(label)
self.setLayout(layout)
class SelectProviderPage(QtGui.QWizardPage):
def __init__(self, parent=None, providers=None):
super(SelectProviderPage, self).__init__(parent)
self.setTitle("Select Provider")
self.setSubTitle(
"Please select which provider do you want "
"to use for your connection."
)
self.setPixmap(
QtGui.QWizard.LogoPixmap,
QtGui.QPixmap(':/images/logo1.png'))
providerNameLabel = QtGui.QLabel("&Provider:")
providercombo = QtGui.QComboBox()
if providers:
for provider in providers:
providercombo.addItem(provider)
providerNameSelect = providercombo
providerNameLabel.setBuddy(providerNameSelect)
self.registerField('provider_index', providerNameSelect)
layout = QtGui.QGridLayout()
layout.addWidget(providerNameLabel, 0, 0)
layout.addWidget(providerNameSelect, 0, 1)
self.setLayout(layout)
class RegisterUserPage(QtGui.QWizardPage):
def __init__(self, parent=None, wizard=None):
super(RegisterUserPage, self).__init__(parent)
# XXX check for no wizard pased
# getting provider from previous step
provider = wizard.get_provider()
self.setTitle("User registration")
self.setSubTitle(
"Register a new user with provider %s." %
provider)
self.setPixmap(
QtGui.QWizard.LogoPixmap,
QtGui.QPixmap(':/images/logo2.png'))
rememberPasswordCheckBox = QtGui.QCheckBox(
"&Remember password.")
rememberPasswordCheckBox.setChecked(True)
userNameLabel = QtGui.QLabel("User &name:")
self.userNameLineEdit = QtGui.QLineEdit()
userNameLabel.setBuddy(self.userNameLineEdit)
userPasswordLabel = QtGui.QLabel("&Password:")
self.userPasswordLineEdit = QtGui.QLineEdit()
self.userPasswordLineEdit.setEchoMode(
QtGui.QLineEdit.Password)
userPasswordLabel.setBuddy(self.userPasswordLineEdit)
self.registerField('userName', self.userNameLineEdit)
self.registerField('userPassword', self.userPasswordLineEdit)
self.registerField('rememberPassword', rememberPasswordCheckBox)
layout = QtGui.QGridLayout()
layout.setColumnMinimumWidth(0, 20)
layout.addWidget(userNameLabel, 0, 0)
layout.addWidget(self.userNameLineEdit, 0, 3)
layout.addWidget(userPasswordLabel, 1, 0)
layout.addWidget(self.userPasswordLineEdit, 1, 3)
layout.addWidget(rememberPasswordCheckBox, 2, 3, 2, 4)
self.setLayout(layout)
# XXX how to validatioN ----
def initializePage(self):
pass
class LastPage(QtGui.QWizardPage):
def __init__(self, parent=None):
super(LastPage, self).__init__(parent)
self.setTitle("Ready to go!")
self.setPixmap(
QtGui.QWizard.WatermarkPixmap,
QtGui.QPixmap(':/images/watermark2.png'))
self.label = QtGui.QLabel()
self.label.setWordWrap(True)
layout = QtGui.QVBoxLayout()
layout.addWidget(self.label)
self.setLayout(layout)
def initializePage(self):
finishText = self.wizard().buttonText(
QtGui.QWizard.FinishButton)
finishText = finishText.replace('&', '')
self.label.setText(
"Click '%s' to end the wizard and start "
"encrypting your connection." % finishText)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
wizard = FirstRunWizard()
wizard.show()
sys.exit(app.exec_())