mirror of
https://github.com/Llewellynvdm/Tomb.git
synced 2024-12-23 18:48:59 +00:00
3eb93acc18
This commit re-organizes all the source distribution contents to present users with the simple script, while moving the rest in extras. Also autoconf/automake scripts were removed, back to minimalism. The rationale of this change is that Tomb really only consists of a script and users with no extra needs should just be presented with it with no need for anything else. Any other thing on top of the Tomb script is an extra and can be even distributed separately or integrated in distributions.
110 lines
3.8 KiB
Python
110 lines
3.8 KiB
Python
import sys
|
|
|
|
from PyQt4 import QtCore, QtGui
|
|
|
|
from ui_open_tombfile import Ui_tombfile
|
|
from ui_open_keymethod import Ui_keymethod
|
|
from ui_open_success import Ui_success
|
|
|
|
from tomblib.tomb import Tomb
|
|
from tomblib.undertaker import Undertaker
|
|
|
|
try:
|
|
_fromUtf8 = QtCore.QString.fromUtf8
|
|
except AttributeError:
|
|
_fromUtf8 = lambda s: s
|
|
|
|
class TombfilePage(QtGui.QWizardPage):
|
|
def __init__(self, *args, **kwargs):
|
|
QtGui.QWizardPage.__init__(self, *args)
|
|
self.ui = Ui_tombfile()
|
|
self.ui.setupUi(self)
|
|
if 'tombfile' in kwargs and kwargs['tombfile'] is not None:
|
|
self.ui.tomb_line.setText(kwargs['tombfile'])
|
|
self.ui.tomb_browse.clicked.connect(self.on_tomb_location_clicked)
|
|
def on_tomb_location_clicked(self, *args, **kwargs):
|
|
filename = QtGui.QFileDialog.getOpenFileName(self, 'Select Tomb',
|
|
filter="Tomb (*.tomb)")
|
|
self.ui.tomb_line.setText(filename)
|
|
|
|
class MethodPage(QtGui.QWizardPage):
|
|
def __init__(self, *args, **kwargs):
|
|
QtGui.QWizardPage.__init__(self, *args, **kwargs)
|
|
self.ui = Ui_keymethod()
|
|
self.ui.setupUi(self)
|
|
self.group = group = QtGui.QButtonGroup()
|
|
for radio in self.children():
|
|
if type(radio) == QtGui.QRadioButton:
|
|
group.addButton(radio)
|
|
|
|
def initializePage(self):
|
|
self.found = Undertaker.check( str('near://' + self.wizard().get_tombfile()) ) or []
|
|
box = self.ui.radio_layout
|
|
|
|
for key in self.found:
|
|
radio = QtGui.QRadioButton('Automatically found: ' + key, parent=self)
|
|
radio.setChecked(True)
|
|
radio.setProperty('path', key)
|
|
box.insertWidget(0, radio)
|
|
self.group.addButton(radio)
|
|
|
|
|
|
def nextId(self):
|
|
'''Virtual method reimplemented to decide next page'''
|
|
if self.ui.fs.isChecked():
|
|
keyfile = QtGui.QFileDialog.getOpenFileName(self.wizard(), 'Key file',
|
|
filter="Tomb keys (*.tomb.key);;Buried keys (*.jpeg)")
|
|
if keyfile:
|
|
#TODO: check if this really is a success :)
|
|
if Tomb.open(self.wizard().get_tombfile(), keyfile): #bugs when wrong password
|
|
return TombOpenWizard.SUCCESS_PAGE
|
|
#else: #TODO: should alert the user that we failed
|
|
return TombOpenWizard.METHOD_PAGE
|
|
if self.ui.usb.isChecked():
|
|
return TombOpenWizard.USB_PAGE
|
|
print self.group.checkedButton().property('path').toPyObject()
|
|
return TombOpenWizard.SUCCESS_PAGE
|
|
|
|
class SuccessPage(QtGui.QWizardPage):
|
|
def __init__(self, *args, **kwargs):
|
|
QtGui.QWizardPage.__init__(self, *args, **kwargs)
|
|
self.ui = Ui_success()
|
|
self.ui.setupUi(self)
|
|
|
|
class TombOpenWizard(QtGui.QWizard):
|
|
TOMBFILE_PAGE=1
|
|
METHOD_PAGE=2
|
|
SUCCESS_PAGE=99
|
|
USB_PAGE=20
|
|
def __init__(self, *args, **kwargs):
|
|
QtGui.QWizard.__init__(self, *args)
|
|
self.setPage(TombOpenWizard.TOMBFILE_PAGE,
|
|
TombfilePage(self, tombfile = kwargs['tombfile']
|
|
if 'tombfile' in kwargs else None))
|
|
self.setPage(TombOpenWizard.METHOD_PAGE, MethodPage(self))
|
|
self.setPage(TombOpenWizard.SUCCESS_PAGE, SuccessPage(self))
|
|
if 'tombfile' in kwargs and kwargs['tombfile'] is not None:
|
|
self.setStartId(TombOpenWizard.METHOD_PAGE)
|
|
|
|
def get_tombfile(self):
|
|
page = self.page(TombOpenWizard.TOMBFILE_PAGE)
|
|
return page.ui.tomb_line.text()
|
|
|
|
|
|
|
|
def run_open_wizard():
|
|
app = QtGui.QApplication(sys.argv)
|
|
window = TombOpenWizard(tombfile=sys.argv[1] if len(sys.argv) > 1 else None)
|
|
window.show()
|
|
sys.exit(app.exec_())
|
|
|
|
if __name__ == '__main__':
|
|
Undertaker.undertakerexec = '/home/davide/coding/projects/tomb/src/undertaker'
|
|
run_open_wizard()
|
|
|
|
|
|
|
|
|
|
|
|
|