class AccountDialog(QDialog): """ Edit an account dialog """ save = pyqtSignal(int, unicode,unicode,unicode, \ unicode,unicode,unicode) delete = pyqtSignal(int) def __init__(self, parent=None,index=0,account=None): super(QDialog, self).__init__(parent) self.index = index self.hostname = QLineEdit(account.hostname) self.hostname.setInputMethodHints(Qt.ImhNoAutoUppercase) self.port = QLineEdit(unicode(account.port)) self.port.setInputMethodHints(Qt.ImhNoAutoUppercase) self.username = QLineEdit(account.username) self.username.setInputMethodHints(Qt.ImhNoAutoUppercase) self.password = QLineEdit(account.password) self.password.setEchoMode(QLineEdit.Password) self.password.setInputMethodHints(Qt.ImhNoPredictiveText | Qt.ImhNoAutoUppercase | Qt.ImhHiddenText) # self.password.setInputMethodHints(Qt.ImhHiddenText) self.local_dir = QLineEdit(account.local_dir) self.local_dir.setInputMethodHints(Qt.ImhNoAutoUppercase) self.remote_dir = QLineEdit(account.remote_dir) self.remote_dir.setInputMethodHints(Qt.ImhNoAutoUppercase) self.save_button = QPushButton('Save') self.delete_button = QPushButton('Delete') gridLayout = QGridLayout() leftLayout = QVBoxLayout() gridLayout.addWidget(QLabel('Hostname'), 0, 0) gridLayout.addWidget(self.hostname, 0, 1) gridLayout.addWidget(QLabel('Port'), 1, 0) gridLayout.addWidget(self.port, 1, 1) gridLayout.addWidget(QLabel('Username'), 2, 0) gridLayout.addWidget(self.username, 2, 1) gridLayout.addWidget(QLabel('Password'), 3, 0) gridLayout.addWidget(self.password, 3, 1) gridLayout.addWidget(QLabel('Local dir'), 4, 0) gridLayout.addWidget(self.local_dir, 4, 1) gridLayout.addWidget(QLabel('Remote dir'), 5, 0) gridLayout.addWidget(self.remote_dir, 5, 1) leftLayout.addLayout(gridLayout) buttonLayout = QVBoxLayout() buttonLayout.addWidget(self.save_button) buttonLayout.addWidget(self.delete_button) buttonLayout.addStretch() mainLayout = QHBoxLayout() mainLayout.addLayout(leftLayout) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) mainLayout.setSizeConstraint( QLayout.SetFixedSize) self.save_button.clicked.connect(self.saveit) self.delete_button.clicked.connect(self.deleteit) self.setWindowTitle("Edit account") def deleteit(self): self.delete.emit(self.index) self.hide() def saveit(self): self.save.emit(self.index, \ self.hostname.text(), \ self.port.text(), \ self.username.text(), self.password.text(), \ self.local_dir.text(), \ self.remote_dir.text()) self.hide()