From 46e4c88f2ab95487db45c7cfae3a2c79812cc184 Mon Sep 17 00:00:00 2001 From: mukesh2006 Date: Fri, 11 Oct 2013 21:35:09 +0400 Subject: [PATCH] Menu File Backup/Restore your data --- .gitignore | 3 +- src/bitmessageqt/__init__.py | 188 ++++++++++- src/bitmessageqt/backuprestore.py | 114 +++++++ src/bitmessageqt/backuprestore.ui | 500 ++++++++++++++++++++++++++++++ src/bitmessageqt/bitmessageui.py | 29 +- src/bitmessageqt/bitmessageui.ui | 10 +- src/bitmessageqt/treedirectory.ui | 74 +++++ 7 files changed, 879 insertions(+), 39 deletions(-) create mode 100644 src/bitmessageqt/backuprestore.py create mode 100644 src/bitmessageqt/backuprestore.ui create mode 100644 src/bitmessageqt/treedirectory.ui diff --git a/.gitignore b/.gitignore index 8e9f9031..4310f0a5 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ src/build src/dist src/.project src/.pydevproject -src/.settings/ \ No newline at end of file +src/.settings/ +src/bitmessageqt/treedirectory.ui \ No newline at end of file diff --git a/src/bitmessageqt/__init__.py b/src/bitmessageqt/__init__.py index d87b5b02..48192148 100644 --- a/src/bitmessageqt/__init__.py +++ b/src/bitmessageqt/__init__.py @@ -26,7 +26,6 @@ from help import * from iconglossary import * from connect import * import sys -import shutil from time import strftime, localtime, gmtime import time import os @@ -38,6 +37,8 @@ from debug import logger import subprocess import datetime from helper_sql import * +from backuprestore import * +import shutil try: from PyQt4 import QtCore, QtGui @@ -126,10 +127,8 @@ class MyForm(QtGui.QMainWindow): # FILE MENU and other buttons QtCore.QObject.connect(self.ui.actionExit, QtCore.SIGNAL( "triggered()"), self.quit) - #mj QtCore.QObject.connect(self.ui.actionBackup, QtCore.SIGNAL( "triggered()"), self.click_actionBackup) - #mj QtCore.QObject.connect(self.ui.actionManageKeys, QtCore.SIGNAL( "triggered()"), self.click_actionManageKeys) QtCore.QObject.connect(self.ui.actionDeleteAllTrashedMessages, QtCore.SIGNAL( @@ -1129,14 +1128,13 @@ class MyForm(QtGui.QMainWindow): sqlStoredProcedure('deleteandvacuume') def click_actionBackup(self): - #mj - #d = os.path.dirname(f) - if not os.path.exists('./Backup'): - os.makedirs('./Backup') - - shutil.copyfile('C:\\Users\\mjha\\Dropbox\\semester Three\\software_engineering\\paper\\1988Hare.pdf','./Backup/1988.pdf') - return - + self.backuprestoreDilaugeInstance = NewBackupRestoreDialog(self) + if self.backuprestoreDilaugeInstance.exec_(): + pass + #queryreturn = sqlQuery('''DETACH BackupDB;''') + #load the inbox and sendbox after restoring data + #self.loadInbox() + #self.loadSent() def click_actionRegenerateDeterministicAddresses(self): self.regenerateAddressesDialogInstance = regenerateAddressesDialog( @@ -1388,7 +1386,7 @@ class MyForm(QtGui.QMainWindow): if ripe == toRipe: self.ui.tableWidgetSent.item(i, 3).setToolTip(textToDisplay) try: - newlinePosition = textToDisplay.indexOf('\n') + newlinePosition = textToDisplay.indexOf('\n') except: # If someone misses adding a "_translate" to a string before passing it to this function, this function won't receive a qstring which will cause an exception. newlinePosition = 0 if newlinePosition > 1: @@ -2316,6 +2314,9 @@ class MyForm(QtGui.QMainWindow): currentInboxRow, 0).data(Qt.UserRole).toPyObject()) fromAddressAtCurrentInboxRow = str(self.ui.tableWidgetInbox.item( currentInboxRow, 1).data(Qt.UserRole).toPyObject()) + Date = self.ui.tableWidgetInbox.item( + currentInboxRow, 3).data(Qt.UserRole).toPyObject() + if toAddressAtCurrentInboxRow == self.str_broadcast_subscribers: self.ui.labelFrom.setText('') elif not shared.config.has_section(toAddressAtCurrentInboxRow): @@ -3166,7 +3167,6 @@ class newChanDialog(QtGui.QDialog): self.ui.groupBoxCreateChan.setHidden(True) QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self)) - class iconGlossaryDialog(QtGui.QDialog): def __init__(self, parent): @@ -3307,3 +3307,165 @@ def run(): if shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'): myapp.showConnectDialog() # ask the user if we may connect sys.exit(app.exec_()) + +class NewBackupRestoreDialog(QtGui.QDialog): + + def __init__(self, parent): + QtGui.QWidget.__init__(self, parent) + self.ui = Ui_BackupRestore() + self.ui.setupUi(self) + self.parent = parent + self.RestorePath = 'None' + QtCore.QObject.connect(self.ui.BackupRestorebuttonBox, QtCore.SIGNAL("accepted()"), self.BackupRestoreaccepted) + QtCore.QObject.connect(self.ui.pushButton_browse, QtCore.SIGNAL("clicked()"), self.selectDirectory) + + def verify_form(self): + if not self.ui.checkBox_Default_directory.isChecked() and str(self.ui.lineEdit_directory_name.text())== '' : + QtGui.QMessageBox.information( + self, 'Message', 'Please Select the default direcotry checkbox or provide the directory of your choice', QtGui.QMessageBox.Ok) + self.parent.click_actionBackup() #call the backup function again + return False + elif (self.ui.radioButton_Backup.isChecked() or self.ui.radioButton_Restore.isChecked()): + if not (self.ui.checkBox_inbox_only.isChecked() or self.ui.checkBox_messages.isChecked() or self.ui.checkBox_keys.isChecked()): + QtGui.QMessageBox.information( + self, 'Message', 'Please select at least one of the files to backup/restore', QtGui.QMessageBox.Ok) + self.parent.click_actionBackup() #call the backup function again + return False + else: + return True + elif self.ui.radioButton_DeleteBackup.isChecked(): + return True + + + def checkPermission(self): #check permission to execute in directory + if self.ui.radioButton_Backup or self.ui.radioButton_DeleteBackup: + #check for permission to execute in directory + try: + if not os.access(self.RestorePath, os.X_OK): + QtGui.QMessageBox.information( + self, 'Message', 'No Execute Permission for ' + self.RestorePath + 'directory. Please check your permissions of your direcotry', QtGui.QMessageBox.Ok) + except ValueError, e: + QtGui.QMessageBox.information(self, 'Message', 'Error : ' + e, QtGui.QMessageBox.Ok) + return True + elif self.ui.radioButton_Restore: + #check for Read permission of the directory where user has specified + try: + if not os.access(self.RestorePath, os.R_OK): + QtGui.QMessageBox.information( + self, 'Message', 'No Execute Permission for ' + self.RestorePath + 'directory. Please check your permissions of your direcotry', QtGui.QMessageBox.Ok) + except ValueError, e: + QtGui.QMessageBox.information(self, 'Message', 'Error : ' + e, QtGui.QMessageBox.Ok) + #if none of the previous condition satisfy just return false + return False + + def BackupRestoreaccepted(self): + if self.verify_form(): #verify if the form was correctly filled by the user or not + #get the valid path: + if self.ui.checkBox_Default_directory.isChecked(): + #self.RestorePath = shared.lookupAppdataFolder() + 'backup' + os.altsep + self.RestorePath = '.'+ os.altsep + 'backup' + os.altsep + else: + if not os.path.exists(str(self.ui.lineEdit_directory_name.text())): + QtGui.QMessageBox.information(self, 'Message', 'The Given Directory Does not Exist', QtGui.QMessageBox.Ok) + return + else: + self.RestorePath = str(self.ui.lineEdit_directory_name.text())+ os.altsep + if self.RestorePath == shared.appdata: + QtGui.QMessageBox.information(self, 'Message', 'You provided the directory which is currently being used for live *.dat files. Please provide other directory', QtGui.QMessageBox.Ok) + #self.parent.click_actionBackup() #call the backup function again + return +# if self.checkPermission(): can be implemented in future to check the permissions as the number of data-files grow + # Creating Backup + if self.ui.radioButton_Backup.isChecked(): + if not os.path.exists(self.RestorePath): + try: + reply = QtGui.QMessageBox.question(self, 'Message', 'Provided directory does not exist. Do you want Pybitmessage to create it? ', QtGui.QMessageBox.Yes , QtGui.QMessageBox.No) + if reply == QtGui.QMessageBox.Yes: + os.makedirs(self.RestorePath) + else: + return + except ValueError, e: + QtGui.QMessageBox.information(self, 'Info Message', 'Unable to create backup directory. Error: ' + e ,QMessageBox.Ok) + if self.ui.checkBox_keys.isChecked(): + try: + shutil.copyfile(shared.appdata + 'keys.dat' , self.RestorePath + 'keys.dat',) + except IOError, e: + QtGui.QMessageBox.information(self, 'Message', 'Unable to Backup keys.dat Error' + e, QtGui.QMessageBox.Ok) + if self.ui.checkBox_messages.isChecked(): + try: + shutil.copyfile(shared.appdata + 'messages.dat', self.RestorePath + 'messages.dat') + except IOError, e: + QtGui.QMessageBox.information(self, 'Message', 'Unable to backup messages.dat' + e, QtGui.QMessageBox.Ok) + + #Restoring files + elif self.ui.radioButton_Restore.isChecked(): + if not os.path.exists(self.RestorePath): + QtGui.QMessageBox.information(self, 'Message', 'No backup exists to be restored.', QtGui.QMessageBox.Ok) + else: + try: + if self.ui.checkBox_keys.isChecked(): + if not os.path.exists(self.RestorePath + 'keys.dat'): + QtGui.QMessageBox.information(self, 'Message', 'No Keys.dat exists to be restored.', QtGui.QMessageBox.Ok) + else: + try: + shutil.copyfile(self.RestorePath + 'keys.dat', shared.appdata + 'keys.dat') + except IOError, e: + QtGui.QMessageBox.information(self, 'Message', 'Unable to restore keys.dat Error: ' + e, QtGui.QMessageBox.Ok) + + if self.ui.checkBox_messages.isChecked() and self.ui.checkBox_messages.isEnabled(): # need to provide functionality to restore the inbox only or sent only + if not os.path.exists(self.RestorePath + 'keys.dat'): + QtGui.QMessageBox.information(self, 'Message', 'No messages.dat exists to be restored.', QtGui.QMessageBox.Ok) + else: + try: + shutil.copyfile(self.RestorePath + 'messages.dat', shared.appdata + 'messages.dat') + except IOError, e: + QtGui.QMessageBox.information(self, 'Message', 'Unable to restore message.dat Error' + e, QtGui.QMessageBox.Ok) + # load the inbox and sent after loading the data + self.parent.loadInbox(); + self.parent.loadSent(); + + elif self.ui.checkBox_inbox_only.isChecked() and self.ui.checkBox_inbox_only.isEnabled(): # checkbox_messages and checkBox_inbox_only are mutually exclusive restoration + try: + if not os.path.exists(self.RestorePath + 'messages.dat'): + QtGui.QMessageBox.information(self, 'Message', 'No messages.dat exists to be restored.', QtGui.QMessageBox.Ok) + else: + queryreturn1 = sqlQuery('''ATTACH DATABASE ? AS BackupDB;''', self.RestorePath + 'messages.dat') + queryreturn2 = sqlExecute('''delete from inbox;''') + queryreturn3 = sqlQuery('''INSERT INTO inbox SELECT * FROM BackupDB.inbox;''') + queryreturn4 = sqlQuery('''DETACH BackupDB;''') + except ValueError, e: + QtGui.QMessageBox.information(self, 'Message', 'Unable to restore inbox. Error : ' + e, QtGui.QMessageBox.Ok) + # load only inbox and not the sent + self.parent.loadInbox(); + + except Exception, e: + sys.stderr.write('Write error: ' + e) + self.statusBar().showMessage(_translate("MainWindow", "Write error.")) + QtGui.QMessageBox.information(self, 'Message', 'Restore Error: ' + e, QtGui.QMessageBox.Ok) + + #Deleting Backup + elif self.ui.radioButton_DeleteBackup.isChecked(): + if not os.path.exists(self.RestorePath): + QtGui.QMessageBox.information(self, 'Message', 'No backup exists to be Deleted.', QtGui.QMessageBox.Ok) + else: + try: + if os.path.isfile(self.RestorePath + 'messages.dat'): + os.remove(self.RestorePath + 'messages.dat') + else: + QtGui.QMessageBox.information(self, 'Message', 'Keys.dat does not exists in the given folder', QtGui.QMessageBox.Ok) + if os.path.isfile(self.RestorePath + 'keys.dat'): + os.remove(self.RestorePath + 'keys.dat') + else: + QtGui.QMessageBox.information(self, 'Message', 'messages.dat does not exists in the given folder.', QtGui.QMessageBox.Ok) + except OSError, e: # # if failed, report it back to the user ## + sys.stderr.write('Write error: ' + e) + self.statusBar().showMessage(_translate("MainWindow", "Write error.")) + QtGui.QMessageBox.information(self, 'Message', 'Delete Backup Error: ' + e, QtGui.QMessageBox.Ok) + # shutil.rmtree('./backup') + + def selectDirectory(self): + dialog = QFileDialog(self) + dialog.setFileMode(QFileDialog.DirectoryOnly) + if dialog.exec_(): + fileNames = dialog.selectedFiles() + self.ui.lineEdit_directory_name.setText(fileNames[0]) diff --git a/src/bitmessageqt/backuprestore.py b/src/bitmessageqt/backuprestore.py new file mode 100644 index 00000000..dc729562 --- /dev/null +++ b/src/bitmessageqt/backuprestore.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'C:\Users\mjha\Documents\GitHub\PyBitmessage\src\bitmessageqt\backuprestore.ui' +# +# Created: Tue Oct 08 12:25:23 2013 +# by: PyQt4 UI code generator 4.10.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_BackupRestore(object): + def setupUi(self, BackupRestore): + BackupRestore.setObjectName(_fromUtf8("BackupRestore")) + BackupRestore.setEnabled(True) + BackupRestore.resize(359, 250) + self.BackupRestorebuttonBox = QtGui.QDialogButtonBox(BackupRestore) + self.BackupRestorebuttonBox.setGeometry(QtCore.QRect(-90, 210, 341, 32)) + self.BackupRestorebuttonBox.setOrientation(QtCore.Qt.Horizontal) + self.BackupRestorebuttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) + self.BackupRestorebuttonBox.setObjectName(_fromUtf8("BackupRestorebuttonBox")) + self.radioButton_Restore = QtGui.QRadioButton(BackupRestore) + self.radioButton_Restore.setGeometry(QtCore.QRect(30, 20, 82, 17)) + self.radioButton_Restore.setChecked(True) + self.radioButton_Restore.setObjectName(_fromUtf8("radioButton_Restore")) + self.radioButton_Backup = QtGui.QRadioButton(BackupRestore) + self.radioButton_Backup.setGeometry(QtCore.QRect(130, 20, 82, 17)) + self.radioButton_Backup.setChecked(False) + self.radioButton_Backup.setObjectName(_fromUtf8("radioButton_Backup")) + self.checkBox_keys = QtGui.QCheckBox(BackupRestore) + self.checkBox_keys.setEnabled(True) + self.checkBox_keys.setGeometry(QtCore.QRect(40, 140, 70, 20)) + self.checkBox_keys.setObjectName(_fromUtf8("checkBox_keys")) + self.checkBox_messages = QtGui.QCheckBox(BackupRestore) + self.checkBox_messages.setEnabled(True) + self.checkBox_messages.setGeometry(QtCore.QRect(40, 160, 171, 17)) + self.checkBox_messages.setObjectName(_fromUtf8("checkBox_messages")) + self.label = QtGui.QLabel(BackupRestore) + self.label.setEnabled(True) + self.label.setGeometry(QtCore.QRect(30, 120, 111, 20)) + self.label.setObjectName(_fromUtf8("label")) + self.checkBox_inbox_only = QtGui.QCheckBox(BackupRestore) + self.checkBox_inbox_only.setEnabled(True) + self.checkBox_inbox_only.setGeometry(QtCore.QRect(40, 180, 167, 17)) + self.checkBox_inbox_only.setCheckable(True) + self.checkBox_inbox_only.setObjectName(_fromUtf8("checkBox_inbox_only")) + self.radioButton_DeleteBackup = QtGui.QRadioButton(BackupRestore) + self.radioButton_DeleteBackup.setGeometry(QtCore.QRect(240, 20, 101, 17)) + self.radioButton_DeleteBackup.setObjectName(_fromUtf8("radioButton_DeleteBackup")) + self.label_2 = QtGui.QLabel(BackupRestore) + self.label_2.setEnabled(True) + self.label_2.setGeometry(QtCore.QRect(30, 50, 321, 20)) + self.label_2.setObjectName(_fromUtf8("label_2")) + self.lineEdit_directory_name = QtGui.QLineEdit(BackupRestore) + self.lineEdit_directory_name.setEnabled(True) + self.lineEdit_directory_name.setGeometry(QtCore.QRect(40, 90, 211, 20)) + self.lineEdit_directory_name.setObjectName(_fromUtf8("lineEdit_directory_name")) + self.pushButton_browse = QtGui.QPushButton(BackupRestore) + self.pushButton_browse.setEnabled(True) + self.pushButton_browse.setGeometry(QtCore.QRect(270, 90, 75, 23)) + self.pushButton_browse.setObjectName(_fromUtf8("pushButton_browse")) + self.checkBox_Default_directory = QtGui.QCheckBox(BackupRestore) + self.checkBox_Default_directory.setEnabled(True) + self.checkBox_Default_directory.setGeometry(QtCore.QRect(40, 70, 221, 17)) + self.checkBox_Default_directory.setObjectName(_fromUtf8("checkBox_Default_directory")) + + self.retranslateUi(BackupRestore) + QtCore.QObject.connect(self.radioButton_Restore, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_keys.setEnabled) + QtCore.QObject.connect(self.radioButton_Restore, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_messages.setEnabled) + QtCore.QObject.connect(self.radioButton_Backup, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_keys.setEnabled) + QtCore.QObject.connect(self.radioButton_Backup, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_messages.setEnabled) + QtCore.QObject.connect(self.radioButton_Backup, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_inbox_only.setEnabled) + QtCore.QObject.connect(self.radioButton_Restore, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_inbox_only.setEnabled) + QtCore.QObject.connect(self.radioButton_Backup, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_inbox_only.setEnabled) + QtCore.QObject.connect(self.checkBox_messages, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_inbox_only.setDisabled) + QtCore.QObject.connect(self.checkBox_inbox_only, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_messages.setDisabled) + QtCore.QObject.connect(self.radioButton_DeleteBackup, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_keys.setDisabled) + QtCore.QObject.connect(self.radioButton_DeleteBackup, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_messages.setDisabled) + QtCore.QObject.connect(self.radioButton_DeleteBackup, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_inbox_only.setDisabled) + QtCore.QObject.connect(self.radioButton_Backup, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_inbox_only.setHidden) + QtCore.QObject.connect(self.radioButton_Restore, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.checkBox_inbox_only.setVisible) + QtCore.QObject.connect(self.checkBox_Default_directory, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.lineEdit_directory_name.setDisabled) + QtCore.QObject.connect(self.BackupRestorebuttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), BackupRestore.accept) + QtCore.QObject.connect(self.BackupRestorebuttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), BackupRestore.reject) + QtCore.QObject.connect(self.checkBox_Default_directory, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.pushButton_browse.setDisabled) + QtCore.QMetaObject.connectSlotsByName(BackupRestore) + + def retranslateUi(self, BackupRestore): + BackupRestore.setWindowTitle(_translate("BackupRestore", "Dialog", None)) + self.radioButton_Restore.setText(_translate("BackupRestore", "Restore Files", None)) + self.radioButton_Backup.setText(_translate("BackupRestore", "Backup Files", None)) + self.checkBox_keys.setText(_translate("BackupRestore", "Keys.dat", None)) + self.checkBox_messages.setText(_translate("BackupRestore", "Complete messages.dat", None)) + self.label.setText(_translate("BackupRestore", "Please select the files", None)) + self.checkBox_inbox_only.setText(_translate("BackupRestore", "Restore Only Inbox Messages", None)) + self.radioButton_DeleteBackup.setText(_translate("BackupRestore", "Delete Backup", None)) + self.label_2.setText(_translate("BackupRestore", "Provide Directory Location to Restore/Backup/Delete ", None)) + self.pushButton_browse.setText(_translate("BackupRestore", "Browse", None)) + self.checkBox_Default_directory.setText(_translate("BackupRestore", "use default directory location \".\\backup\"", None)) + diff --git a/src/bitmessageqt/backuprestore.ui b/src/bitmessageqt/backuprestore.ui new file mode 100644 index 00000000..f70ad975 --- /dev/null +++ b/src/bitmessageqt/backuprestore.ui @@ -0,0 +1,500 @@ + + + BackupRestore + + + true + + + + 0 + 0 + 359 + 250 + + + + Dialog + + + + + -90 + 210 + 341 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + 30 + 20 + 82 + 17 + + + + Restore Files + + + true + + + + + + 130 + 20 + 82 + 17 + + + + Backup Files + + + false + + + + + true + + + + 40 + 140 + 70 + 20 + + + + Keys.dat + + + + + true + + + + 40 + 160 + 171 + 17 + + + + Complete messages.dat + + + + + true + + + + 30 + 120 + 111 + 20 + + + + Please select the files + + + + + true + + + + 40 + 180 + 167 + 17 + + + + Restore Only Inbox Messages + + + true + + + + + + 240 + 20 + 101 + 17 + + + + Delete Backup + + + + + true + + + + 30 + 50 + 321 + 20 + + + + Provide Directory Location to Restore/Backup/Delete + + + + + true + + + + 40 + 90 + 211 + 20 + + + + + + true + + + + 270 + 90 + 75 + 23 + + + + Browse + + + + + true + + + + 40 + 70 + 221 + 17 + + + + use default directory location ".\backup" + + + + + + + radioButton_Restore + clicked(bool) + checkBox_keys + setEnabled(bool) + + + 154 + 28 + + + 82 + 172 + + + + + radioButton_Restore + clicked(bool) + checkBox_messages + setEnabled(bool) + + + 132 + 27 + + + 46 + 191 + + + + + radioButton_Backup + clicked(bool) + checkBox_keys + setEnabled(bool) + + + 60 + 25 + + + 102 + 168 + + + + + radioButton_Backup + clicked(bool) + checkBox_messages + setEnabled(bool) + + + 106 + 28 + + + 121 + 193 + + + + + radioButton_Backup + clicked(bool) + checkBox_inbox_only + setEnabled(bool) + + + 58 + 28 + + + 152 + 212 + + + + + radioButton_Restore + clicked(bool) + checkBox_inbox_only + setEnabled(bool) + + + 150 + 27 + + + 62 + 208 + + + + + radioButton_Backup + clicked(bool) + checkBox_inbox_only + setEnabled(bool) + + + 58 + 22 + + + 206 + 204 + + + + + checkBox_messages + clicked(bool) + checkBox_inbox_only + setDisabled(bool) + + + 168 + 189 + + + 168 + 201 + + + + + checkBox_inbox_only + clicked(bool) + checkBox_messages + setDisabled(bool) + + + 44 + 210 + + + 45 + 186 + + + + + radioButton_DeleteBackup + clicked(bool) + checkBox_keys + setDisabled(bool) + + + 240 + 36 + + + 106 + 176 + + + + + radioButton_DeleteBackup + clicked(bool) + checkBox_messages + setDisabled(bool) + + + 262 + 34 + + + 210 + 194 + + + + + radioButton_DeleteBackup + clicked(bool) + checkBox_inbox_only + setDisabled(bool) + + + 286 + 30 + + + 203 + 213 + + + + + radioButton_Backup + clicked(bool) + checkBox_inbox_only + setHidden(bool) + + + 91 + 33 + + + 109 + 208 + + + + + radioButton_Restore + clicked(bool) + checkBox_inbox_only + setVisible(bool) + + + 136 + 32 + + + 81 + 213 + + + + + checkBox_Default_directory + clicked(bool) + lineEdit_directory_name + setDisabled(bool) + + + 204 + 75 + + + 246 + 102 + + + + + BackupRestorebuttonBox + accepted() + BackupRestore + accept() + + + 118 + 230 + + + 157 + 138 + + + + + BackupRestorebuttonBox + rejected() + BackupRestore + reject() + + + 186 + 230 + + + 272 + 138 + + + + + checkBox_Default_directory + clicked(bool) + pushButton_browse + setDisabled(bool) + + + 214 + 82 + + + 325 + 92 + + + + + diff --git a/src/bitmessageqt/bitmessageui.py b/src/bitmessageqt/bitmessageui.py index 2def4e07..1e906d71 100644 --- a/src/bitmessageqt/bitmessageui.py +++ b/src/bitmessageqt/bitmessageui.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'bitmessageui.ui' # -# Created: Tue Sep 03 15:17:26 2013 -# by: PyQt4 UI code generator 4.10.2 +# Created: Tue Oct 01 16:47:57 2013 +# by: PyQt4 UI code generator 4.10.3 # # WARNING! All changes made in this file will be lost! @@ -26,7 +26,7 @@ except AttributeError: class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) - MainWindow.resize(885, 580) + MainWindow.resize(795, 580) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/newPrefix/images/can-icon-24px.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) @@ -439,7 +439,7 @@ class Ui_MainWindow(object): self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 795, 18)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 795, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName(_fromUtf8("menuFile")) @@ -457,21 +457,16 @@ class Ui_MainWindow(object): self.actionManageKeys = QtGui.QAction(MainWindow) self.actionManageKeys.setCheckable(False) self.actionManageKeys.setEnabled(True) - #mj - self.actionBackup = QtGui.QAction(MainWindow) - self.actionBackup.setCheckable(False) - self.actionBackup.setEnabled(True) - #mj end icon = QtGui.QIcon.fromTheme(_fromUtf8("dialog-password")) self.actionManageKeys.setIcon(icon) self.actionManageKeys.setObjectName(_fromUtf8("actionManageKeys")) - #mj + self.actionBackup = QtGui.QAction(MainWindow) + self.actionBackup.setCheckable(False) + self.actionBackup.setEnabled(True) icon = QtGui.QIcon.fromTheme(_fromUtf8("dialog-password")) self.actionBackup.setIcon(icon) self.actionBackup.setObjectName(_fromUtf8("actionBackup")) self.actionExit = QtGui.QAction(MainWindow) - #mj end - self.actionExit = QtGui.QAction(MainWindow) icon = QtGui.QIcon.fromTheme(_fromUtf8("application-exit")) self.actionExit.setIcon(icon) self.actionExit.setObjectName(_fromUtf8("actionExit")) @@ -499,10 +494,8 @@ class Ui_MainWindow(object): icon = QtGui.QIcon.fromTheme(_fromUtf8("contact-new")) self.actionJoinChan.setIcon(icon) self.actionJoinChan.setObjectName(_fromUtf8("actionJoinChan")) - #mj - self.menuFile.addAction(self.actionBackup) - #mj self.menuFile.addAction(self.actionManageKeys) + self.menuFile.addAction(self.actionBackup) self.menuFile.addAction(self.actionDeleteAllTrashedMessages) self.menuFile.addAction(self.actionRegenerateDeterministicAddresses) self.menuFile.addAction(self.actionJoinChan) @@ -644,10 +637,8 @@ class Ui_MainWindow(object): self.menuSettings.setTitle(_translate("MainWindow", "Settings", None)) self.menuHelp.setTitle(_translate("MainWindow", "Help", None)) self.actionImport_keys.setText(_translate("MainWindow", "Import keys", None)) - self.actionManageKeys.setText(_translate("MainWindow", "Manage keys", None)) - #mj - self.actionBackup.setText(_translate("MainWindow", "Backup/Restore", None)) - #mj + self.actionManageKeys.setText(_translate("MainWindow", "Manage Keys", None)) + self.actionBackup.setText(_translate("MainWindow", "Backup / Restore", None)) self.actionExit.setText(_translate("MainWindow", "Quit", None)) self.actionExit.setShortcut(_translate("MainWindow", "Ctrl+Q", None)) self.actionHelp.setText(_translate("MainWindow", "Help", None)) diff --git a/src/bitmessageqt/bitmessageui.ui b/src/bitmessageqt/bitmessageui.ui index 3bae494f..48c10d1c 100644 --- a/src/bitmessageqt/bitmessageui.ui +++ b/src/bitmessageqt/bitmessageui.ui @@ -1055,7 +1055,7 @@ p, li { white-space: pre-wrap; } 0 0 795 - 18 + 21 @@ -1112,11 +1112,10 @@ p, li { white-space: pre-wrap; } - Manage keys + Manage Keys - - + false @@ -1129,10 +1128,9 @@ p, li { white-space: pre-wrap; } - Manage keys + Backup / Restore - diff --git a/src/bitmessageqt/treedirectory.ui b/src/bitmessageqt/treedirectory.ui new file mode 100644 index 00000000..2d8f31f1 --- /dev/null +++ b/src/bitmessageqt/treedirectory.ui @@ -0,0 +1,74 @@ + + + TreeDirectoryDialog + + + + 0 + 0 + 357 + 297 + + + + Dialog + + + + true + + + + 20 + 240 + 81 + 20 + + + + Selected Folder: + + + + + true + + + + 110 + 240 + 231 + 20 + + + + + + + + + + 160 + 270 + 75 + 23 + + + + Ok + + + + + + 21 + 11 + 321 + 221 + + + + + + +