diff --git a/src/gui/.gitignore b/src/gui/.gitignore new file mode 100644 index 0000000..a01ee28 --- /dev/null +++ b/src/gui/.gitignore @@ -0,0 +1 @@ +.*.swp diff --git a/src/gui/HACKING.txt b/src/gui/HACKING.txt new file mode 100644 index 0000000..ca87184 --- /dev/null +++ b/src/gui/HACKING.txt @@ -0,0 +1,12 @@ +### Code organization: +* tomblib: a library that wraps on tomb. Meant to be used by various scripts, and every UI +* qt / wx / whatever: directory for different gui implementations + +### QT project: + +status: only create wizard +the graphical part is done through create.ui, which can be edited by designer + +The UI should be (if possible) completely autocontained in this .ui file, and no code (or very few) should be added to make it work. +* ATM, some code has been added for the "password don't match" part. +* Some code need to be added to make the filedialog work diff --git a/src/gui/qt/create.py b/src/gui/qt/create.py new file mode 100755 index 0000000..a3f1265 --- /dev/null +++ b/src/gui/qt/create.py @@ -0,0 +1,29 @@ +import sys, os +from PyQt4.QtGui import QApplication, QWizard +from PyQt4 import QtCore +from ui_create import Ui_Wizard + +parentdir = sys.path[0].split(os.sep)[:-1] +sys.path.append(os.sep.join(parentdir)) +from tomblib import wrapper + +app = QApplication(sys.argv) +window = QWizard() +ui = Ui_Wizard() +ui.setupUi(window) + +def create_tomb(*args, **kwargs): + print 'creating' + wrapper.Tomb.create(1,2,3) + print 'created!' + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + _fromUtf8 = lambda s: s +QtCore.QObject.connect(window, QtCore.SIGNAL(_fromUtf8('finished(int)')), create_tomb) + +window.show() +sys.exit(app.exec_()) + + diff --git a/src/gui/qt/create.ui b/src/gui/qt/create.ui new file mode 100755 index 0000000..418a68d --- /dev/null +++ b/src/gui/qt/create.ui @@ -0,0 +1,481 @@ + + + Wizard + + + + 0 + 0 + 710 + 368 + + + + Wizard + + + QWizard::HaveHelpButton|QWizard::IndependentPages + + + + Tomb + + + tomb creation + + + + + + This wizard will guide you to the creation of a tomb.<br> It will be fun! + + + Qt::RichText + + + true + + + + + + + + + + + Please enter tomb size. Digging the tomb will require some time: usually, one minute per GB, but your mileage may vary. <br>Keep in mind that resizing it in the future is still NOT implemented + + + true + + + + + + + + + Enter tomb size, in MB. 1GB=1000MB) + + + spinBox + + + + + + + 100000 + + + 100 + + + + + + + + + + + + + Where do you want your tomb to be digged? + + + true + + + lineEdit + + + + + + + + + + + + Open file + + + + + + + + + + Key creation + + + Choose the location for your key + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Now, you have to decide where to put the <span style=" font-weight:600;">key</span> for your tomb<br />You should not leave your key at the door, as this will lower security A LOT</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Also, the keyfile is very small (less than a KB), so disk space is not an issue</p></body></html> + + + Qt::RichText + + + true + + + + + + + + + + + On a USB pen (best security) + + + true + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Maximum + + + + 40 + 20 + + + + + + + + If you choose to do so, do not insert it NOW. Do it when you are asked to do so + + + + + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">It will be created as a regular file in the same directory of your tomb.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">It is much easier to use, but also much more <span style=" font-style:italic;">insecure</span>: all your security will be guaranteed by your <span style=" font-weight:600;">password</span>. If you really want to do this, choose a strong password (lot of random/non-dictionary words, spaces, numbers, odd characters)</p></body></html> + + + Near to the tomb itself (this is BAD) + + + + + + + Specify location + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Maximum + + + + 40 + 20 + + + + + + + + false + + + + + + + false + + + Choose location + + + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Help: </span>the key file is very small, so disk usage is not an issue</p></body></html> + + + true + + + + + + + + false + + + Key + + + Password + + + + + + Choose a <b>strong</b> password now + + + + + + + + + Password + + + lineEdit_pass + + + + + + + QLineEdit::Password + + + + + + + Password (again, for confirmation) + + + lineEdit_pass_again + + + + + + + QLineEdit::Password + + + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Warning: password doesn't match</span></p></body></html> + + + + + + + + + + + You successfully created the tomb! + + + + + + + Open the just-created tomb NOW! + + + true + + + false + + + + + + + + + WizardPage_pass + QWizardPage +
wizardpage_pass.h
+ 1 + + password_not_match(bool) + check_password_match() + +
+
+ + + + radioButton_3 + toggled(bool) + lineEdit_2 + setEnabled(bool) + + + 62 + 212 + + + 164 + 243 + + + + + radioButton_3 + toggled(bool) + pushButton_2 + setEnabled(bool) + + + 118 + 212 + + + 677 + 246 + + + + + Wizard + currentIdChanged(int) + label_11 + hide() + + + 181 + 335 + + + 77 + 267 + + + + + Wizard + helpRequested() + label_11 + show() + + + 135 + 356 + + + 117 + 267 + + + + + lineEdit_pass + textChanged(QString) + wizardPage_pass + check_password_match() + + + 339 + 105 + + + 99 + 85 + + + + + wizardPage_pass + password_match(bool) + label_pwd_match + setVisible(bool) + + + 99 + 85 + + + 117 + 152 + + + + + lineEdit_pass_again + textChanged(QString) + wizardPage_pass + check_password_match() + + + 289 + 126 + + + 49 + 70 + + + + + + check_passwords_equal() + +
diff --git a/src/gui/qt/ui_create.py b/src/gui/qt/ui_create.py new file mode 100755 index 0000000..f013726 --- /dev/null +++ b/src/gui/qt/ui_create.py @@ -0,0 +1,226 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'create.ui' +# +# Created: Mon Oct 24 03:26:55 2011 +# by: PyQt4 UI code generator 4.8.5 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + _fromUtf8 = lambda s: s + +class Ui_Wizard(object): + def setupUi(self, Wizard): + Wizard.setObjectName(_fromUtf8("Wizard")) + Wizard.resize(710, 368) + Wizard.setWindowTitle(QtGui.QApplication.translate("Wizard", "Wizard", None, QtGui.QApplication.UnicodeUTF8)) + Wizard.setWizardStyle(QtGui.QWizard.ModernStyle) + Wizard.setOptions(QtGui.QWizard.HaveHelpButton|QtGui.QWizard.IndependentPages) + self.wizardPage_intro = QtGui.QWizardPage() + self.wizardPage_intro.setTitle(QtGui.QApplication.translate("Wizard", "Tomb", None, QtGui.QApplication.UnicodeUTF8)) + self.wizardPage_intro.setSubTitle(QtGui.QApplication.translate("Wizard", "tomb creation", None, QtGui.QApplication.UnicodeUTF8)) + self.wizardPage_intro.setObjectName(_fromUtf8("wizardPage_intro")) + self.verticalLayout = QtGui.QVBoxLayout(self.wizardPage_intro) + self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) + self.label = QtGui.QLabel(self.wizardPage_intro) + self.label.setText(QtGui.QApplication.translate("Wizard", "This wizard will guide you to the creation of a tomb.
It will be fun!", None, QtGui.QApplication.UnicodeUTF8)) + self.label.setTextFormat(QtCore.Qt.RichText) + self.label.setWordWrap(True) + self.label.setObjectName(_fromUtf8("label")) + self.verticalLayout.addWidget(self.label) + Wizard.addPage(self.wizardPage_intro) + self.wizardPage_tomb_size = QtGui.QWizardPage() + self.wizardPage_tomb_size.setObjectName(_fromUtf8("wizardPage_tomb_size")) + self.verticalLayout_2 = QtGui.QVBoxLayout(self.wizardPage_tomb_size) + self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) + self.label_2 = QtGui.QLabel(self.wizardPage_tomb_size) + self.label_2.setText(QtGui.QApplication.translate("Wizard", "Please enter tomb size. Digging the tomb will require some time: usually, one minute per GB, but your mileage may vary.
Keep in mind that resizing it in the future is still NOT implemented", None, QtGui.QApplication.UnicodeUTF8)) + self.label_2.setWordWrap(True) + self.label_2.setObjectName(_fromUtf8("label_2")) + self.verticalLayout_2.addWidget(self.label_2) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.label_3 = QtGui.QLabel(self.wizardPage_tomb_size) + self.label_3.setText(QtGui.QApplication.translate("Wizard", "Enter tomb size, in MB. 1GB=1000MB)", None, QtGui.QApplication.UnicodeUTF8)) + self.label_3.setObjectName(_fromUtf8("label_3")) + self.horizontalLayout.addWidget(self.label_3) + self.spinBox = QtGui.QSpinBox(self.wizardPage_tomb_size) + self.spinBox.setMaximum(100000) + self.spinBox.setProperty("value", 100) + self.spinBox.setObjectName(_fromUtf8("spinBox")) + self.horizontalLayout.addWidget(self.spinBox) + self.verticalLayout_2.addLayout(self.horizontalLayout) + Wizard.addPage(self.wizardPage_tomb_size) + self.wizardPage_tomb_location = QtGui.QWizardPage() + self.wizardPage_tomb_location.setObjectName(_fromUtf8("wizardPage_tomb_location")) + self.verticalLayout_3 = QtGui.QVBoxLayout(self.wizardPage_tomb_location) + self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) + self.label_4 = QtGui.QLabel(self.wizardPage_tomb_location) + self.label_4.setText(QtGui.QApplication.translate("Wizard", "Where do you want your tomb to be digged?", None, QtGui.QApplication.UnicodeUTF8)) + self.label_4.setWordWrap(True) + self.label_4.setObjectName(_fromUtf8("label_4")) + self.verticalLayout_3.addWidget(self.label_4) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.lineEdit = QtGui.QLineEdit(self.wizardPage_tomb_location) + self.lineEdit.setObjectName(_fromUtf8("lineEdit")) + self.horizontalLayout_2.addWidget(self.lineEdit) + self.pushButton = QtGui.QPushButton(self.wizardPage_tomb_location) + self.pushButton.setText(QtGui.QApplication.translate("Wizard", "Open file", None, QtGui.QApplication.UnicodeUTF8)) + self.pushButton.setObjectName(_fromUtf8("pushButton")) + self.horizontalLayout_2.addWidget(self.pushButton) + self.verticalLayout_3.addLayout(self.horizontalLayout_2) + Wizard.addPage(self.wizardPage_tomb_location) + self.wizardPage_key_location = QtGui.QWizardPage() + self.wizardPage_key_location.setTitle(QtGui.QApplication.translate("Wizard", "Key creation", None, QtGui.QApplication.UnicodeUTF8)) + self.wizardPage_key_location.setSubTitle(QtGui.QApplication.translate("Wizard", "Choose the location for your key", None, QtGui.QApplication.UnicodeUTF8)) + self.wizardPage_key_location.setObjectName(_fromUtf8("wizardPage_key_location")) + self.verticalLayout_6 = QtGui.QVBoxLayout(self.wizardPage_key_location) + self.verticalLayout_6.setObjectName(_fromUtf8("verticalLayout_6")) + self.label_5 = QtGui.QLabel(self.wizardPage_key_location) + self.label_5.setText(QtGui.QApplication.translate("Wizard", "\n" +"\n" +"

Now, you have to decide where to put the key for your tomb
You should not leave your key at the door, as this will lower security A LOT

\n" +"

Also, the keyfile is very small (less than a KB), so disk space is not an issue

", None, QtGui.QApplication.UnicodeUTF8)) + self.label_5.setTextFormat(QtCore.Qt.RichText) + self.label_5.setWordWrap(True) + self.label_5.setObjectName(_fromUtf8("label_5")) + self.verticalLayout_6.addWidget(self.label_5) + self.verticalLayout_5 = QtGui.QVBoxLayout() + self.verticalLayout_5.setObjectName(_fromUtf8("verticalLayout_5")) + self.verticalLayout_4 = QtGui.QVBoxLayout() + self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4")) + self.radioButton = QtGui.QRadioButton(self.wizardPage_key_location) + self.radioButton.setText(QtGui.QApplication.translate("Wizard", "On a USB pen (best security)", None, QtGui.QApplication.UnicodeUTF8)) + self.radioButton.setChecked(True) + self.radioButton.setObjectName(_fromUtf8("radioButton")) + self.verticalLayout_4.addWidget(self.radioButton) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem) + self.label_6 = QtGui.QLabel(self.wizardPage_key_location) + self.label_6.setText(QtGui.QApplication.translate("Wizard", "If you choose to do so, do not insert it NOW. Do it when you are asked to do so", None, QtGui.QApplication.UnicodeUTF8)) + self.label_6.setObjectName(_fromUtf8("label_6")) + self.horizontalLayout_4.addWidget(self.label_6) + self.verticalLayout_4.addLayout(self.horizontalLayout_4) + self.verticalLayout_5.addLayout(self.verticalLayout_4) + self.radioButton_2 = QtGui.QRadioButton(self.wizardPage_key_location) + self.radioButton_2.setToolTip(QtGui.QApplication.translate("Wizard", "\n" +"\n" +"

It will be created as a regular file in the same directory of your tomb.

\n" +"

It is much easier to use, but also much more insecure: all your security will be guaranteed by your password. If you really want to do this, choose a strong password (lot of random/non-dictionary words, spaces, numbers, odd characters)

", None, QtGui.QApplication.UnicodeUTF8)) + self.radioButton_2.setText(QtGui.QApplication.translate("Wizard", "Near to the tomb itself (this is BAD)", None, QtGui.QApplication.UnicodeUTF8)) + self.radioButton_2.setObjectName(_fromUtf8("radioButton_2")) + self.verticalLayout_5.addWidget(self.radioButton_2) + self.radioButton_3 = QtGui.QRadioButton(self.wizardPage_key_location) + self.radioButton_3.setText(QtGui.QApplication.translate("Wizard", "Specify location", None, QtGui.QApplication.UnicodeUTF8)) + self.radioButton_3.setObjectName(_fromUtf8("radioButton_3")) + self.verticalLayout_5.addWidget(self.radioButton_3) + self.verticalLayout_6.addLayout(self.verticalLayout_5) + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem1) + self.lineEdit_2 = QtGui.QLineEdit(self.wizardPage_key_location) + self.lineEdit_2.setEnabled(False) + self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2")) + self.horizontalLayout_3.addWidget(self.lineEdit_2) + self.pushButton_2 = QtGui.QPushButton(self.wizardPage_key_location) + self.pushButton_2.setEnabled(False) + self.pushButton_2.setText(QtGui.QApplication.translate("Wizard", "Choose location", None, QtGui.QApplication.UnicodeUTF8)) + self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) + self.horizontalLayout_3.addWidget(self.pushButton_2) + self.verticalLayout_6.addLayout(self.horizontalLayout_3) + self.label_11 = QtGui.QLabel(self.wizardPage_key_location) + self.label_11.setText(QtGui.QApplication.translate("Wizard", "\n" +"\n" +"

Help: the key file is very small, so disk usage is not an issue

", None, QtGui.QApplication.UnicodeUTF8)) + self.label_11.setWordWrap(True) + self.label_11.setObjectName(_fromUtf8("label_11")) + self.verticalLayout_6.addWidget(self.label_11) + Wizard.addPage(self.wizardPage_key_location) + self.wizardPage_pass = WizardPage_pass() + self.wizardPage_pass.setAutoFillBackground(False) + self.wizardPage_pass.setTitle(QtGui.QApplication.translate("Wizard", "Key", None, QtGui.QApplication.UnicodeUTF8)) + self.wizardPage_pass.setSubTitle(QtGui.QApplication.translate("Wizard", "Password", None, QtGui.QApplication.UnicodeUTF8)) + self.wizardPage_pass.setObjectName(_fromUtf8("wizardPage_pass")) + self.verticalLayout_7 = QtGui.QVBoxLayout(self.wizardPage_pass) + self.verticalLayout_7.setObjectName(_fromUtf8("verticalLayout_7")) + self.label_7 = QtGui.QLabel(self.wizardPage_pass) + self.label_7.setText(QtGui.QApplication.translate("Wizard", "Choose a strong password now", None, QtGui.QApplication.UnicodeUTF8)) + self.label_7.setObjectName(_fromUtf8("label_7")) + self.verticalLayout_7.addWidget(self.label_7) + self.formLayout = QtGui.QFormLayout() + self.formLayout.setObjectName(_fromUtf8("formLayout")) + self.label_8 = QtGui.QLabel(self.wizardPage_pass) + self.label_8.setText(QtGui.QApplication.translate("Wizard", "Password", None, QtGui.QApplication.UnicodeUTF8)) + self.label_8.setObjectName(_fromUtf8("label_8")) + self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_8) + self.lineEdit_pass = QtGui.QLineEdit(self.wizardPage_pass) + self.lineEdit_pass.setEchoMode(QtGui.QLineEdit.Password) + self.lineEdit_pass.setObjectName(_fromUtf8("lineEdit_pass")) + self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.lineEdit_pass) + self.label_9 = QtGui.QLabel(self.wizardPage_pass) + self.label_9.setText(QtGui.QApplication.translate("Wizard", "Password (again, for confirmation)", None, QtGui.QApplication.UnicodeUTF8)) + self.label_9.setObjectName(_fromUtf8("label_9")) + self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_9) + self.lineEdit_pass_again = QtGui.QLineEdit(self.wizardPage_pass) + self.lineEdit_pass_again.setEchoMode(QtGui.QLineEdit.Password) + self.lineEdit_pass_again.setObjectName(_fromUtf8("lineEdit_pass_again")) + self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.lineEdit_pass_again) + self.verticalLayout_7.addLayout(self.formLayout) + self.label_pwd_match = QtGui.QLabel(self.wizardPage_pass) + self.label_pwd_match.setText(QtGui.QApplication.translate("Wizard", "\n" +"\n" +"

Warning: password doesn\'t match

", None, QtGui.QApplication.UnicodeUTF8)) + self.label_pwd_match.setObjectName(_fromUtf8("label_pwd_match")) + self.verticalLayout_7.addWidget(self.label_pwd_match) + Wizard.addPage(self.wizardPage_pass) + self.wizardPage_end = QtGui.QWizardPage() + self.wizardPage_end.setObjectName(_fromUtf8("wizardPage_end")) + self.verticalLayout_8 = QtGui.QVBoxLayout(self.wizardPage_end) + self.verticalLayout_8.setObjectName(_fromUtf8("verticalLayout_8")) + self.label_10 = QtGui.QLabel(self.wizardPage_end) + self.label_10.setText(QtGui.QApplication.translate("Wizard", "You successfully created the tomb!", None, QtGui.QApplication.UnicodeUTF8)) + self.label_10.setObjectName(_fromUtf8("label_10")) + self.verticalLayout_8.addWidget(self.label_10) + self.checkBox = QtGui.QCheckBox(self.wizardPage_end) + self.checkBox.setText(QtGui.QApplication.translate("Wizard", "Open the just-created tomb NOW!", None, QtGui.QApplication.UnicodeUTF8)) + self.checkBox.setChecked(True) + self.checkBox.setTristate(False) + self.checkBox.setObjectName(_fromUtf8("checkBox")) + self.verticalLayout_8.addWidget(self.checkBox) + Wizard.addPage(self.wizardPage_end) + self.label_3.setBuddy(self.spinBox) + self.label_4.setBuddy(self.lineEdit) + self.label_8.setBuddy(self.lineEdit_pass) + self.label_9.setBuddy(self.lineEdit_pass_again) + + self.retranslateUi(Wizard) + QtCore.QObject.connect(self.radioButton_3, QtCore.SIGNAL(_fromUtf8("toggled(bool)")), self.lineEdit_2.setEnabled) + QtCore.QObject.connect(self.radioButton_3, QtCore.SIGNAL(_fromUtf8("toggled(bool)")), self.pushButton_2.setEnabled) + QtCore.QObject.connect(Wizard, QtCore.SIGNAL(_fromUtf8("currentIdChanged(int)")), self.label_11.hide) + QtCore.QObject.connect(Wizard, QtCore.SIGNAL(_fromUtf8("helpRequested()")), self.label_11.show) + QtCore.QObject.connect(self.lineEdit_pass, QtCore.SIGNAL(_fromUtf8("textChanged(QString)")), self.wizardPage_pass.check_password_match) + QtCore.QObject.connect(self.wizardPage_pass, QtCore.SIGNAL(_fromUtf8("password_match(bool)")), self.label_pwd_match.setVisible) + QtCore.QObject.connect(self.lineEdit_pass_again, QtCore.SIGNAL(_fromUtf8("textChanged(QString)")), self.wizardPage_pass.check_password_match) + QtCore.QMetaObject.connectSlotsByName(Wizard) + + def retranslateUi(self, Wizard): + pass + +from wizardpage_pass import WizardPage_pass diff --git a/src/gui/qt/wizardpage_pass.py b/src/gui/qt/wizardpage_pass.py new file mode 100755 index 0000000..f7153f5 --- /dev/null +++ b/src/gui/qt/wizardpage_pass.py @@ -0,0 +1,31 @@ +''' +This module provide some methods to enhance the password page +of the wizard. It could have been avoided, but this way make +it easier to do things from the designer. + +Indeed, it's possible to use password_match(bool) signal +and check_password_match(slot) from the designer. +''' + +from PyQt4.QtGui import QWizardPage +from PyQt4 import QtCore, QtGui +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + _fromUtf8 = lambda s: s +class WizardPage_pass(QWizardPage): + password_match = QtCore.pyqtSignal(bool) + def __init__(self, *args, **kwargs): + QWizardPage.__init__(self, *args, **kwargs) + def _password_match(self): + pass1 = self.findChild(QtGui.QLineEdit, _fromUtf8('lineEdit_pass')).text() + pass2 = self.findChild(QtGui.QLineEdit, _fromUtf8('lineEdit_pass_again')).text() + return pass1 == pass2 + def check_password_match(self): + self.password_match.emit(not self._password_match()) + self.completeChanged.emit() + def isComplete(self): #this will make the "Next" button disabled if password doesn't match + return self._password_match() + + + diff --git a/src/gui/tomblib/.wrapper.py.swp b/src/gui/tomblib/.wrapper.py.swp new file mode 100755 index 0000000..59d5d6d Binary files /dev/null and b/src/gui/tomblib/.wrapper.py.swp differ diff --git a/src/gui/tomblib/__init__.py b/src/gui/tomblib/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/src/gui/tomblib/wrapper.py b/src/gui/tomblib/wrapper.py new file mode 100755 index 0000000..b38bdea --- /dev/null +++ b/src/gui/tomblib/wrapper.py @@ -0,0 +1,5 @@ +class Tomb(object): + @staticmethod + def create(tombpath, size, keypath): + print 'I am not implemented' + raise NotImplementedError