From 92c53aa8a81e132adea4f18995804fc28620fc71 Mon Sep 17 00:00:00 2001 From: Xevion Date: Sun, 10 Jan 2021 12:41:03 -0600 Subject: [PATCH] improve nickname dialog (add text, placeholder), fix > 3 letters check, close dialog with window properly --- client/Nickname.ui | 53 ++++++++++++++++++++++++++++------------------ client/gui.py | 15 +++++++++---- client/nickname.py | 25 +++++++++++++--------- 3 files changed, 58 insertions(+), 35 deletions(-) diff --git a/client/Nickname.ui b/client/Nickname.ui index 0122111..aefcc73 100644 --- a/client/Nickname.ui +++ b/client/Nickname.ui @@ -7,33 +7,14 @@ 0 0 449 - 85 + 98 Dialog - - - - - - - Qt::Vertical - - - QSizePolicy::Maximum - - - - 20 - 10 - - - - - + Qt::Horizontal @@ -56,6 +37,36 @@ + + + + Type your nickname... + + + + + + + Qt::Vertical + + + QSizePolicy::Maximum + + + + 20 + 10 + + + + + + + + Please choose a nickname with 3 or more characters + + + diff --git a/client/gui.py b/client/gui.py index 5ca03f8..5cf5c64 100644 --- a/client/gui.py +++ b/client/gui.py @@ -63,13 +63,14 @@ class MainWindow(QMainWindow, Ui_MainWindow): super(MainWindow, self).__init__(*args, **kwargs) self.setupUi(self) self.show() + self.closed = False # Get Nickname while True: - nicknameDialog = NicknameDialog(self) - nicknameDialog.exec_() - self.nickname = nicknameDialog.lineEdit.text().strip() - if len(self.nickname) > 3: + self.nicknameDialog = NicknameDialog(self) + self.nicknameDialog.exec_() + self.nickname = self.nicknameDialog.lineEdit.text().strip() + if len(self.nickname) >= 3 or self.closed: break # Connect to server @@ -92,6 +93,12 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.messages = [] + def closeEvent(self, event): + if self.nicknameDialog: + self.closed = True + self.nicknameDialog.close() + event.accept() # let the window close + def eventFilter(self, obj, event): if event.type() == QEvent.KeyPress and obj is self.messageBox: if event.key() == Qt.Key_Return and self.messageBox.hasFocus(): diff --git a/client/nickname.py b/client/nickname.py index ad0ebd1..27e5af5 100644 --- a/client/nickname.py +++ b/client/nickname.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file '.\Nickname.ui' +# Form implementation generated from reading ui file 'Nickname.ui' # # Created by: PyQt5 UI code generator 5.15.2 # @@ -14,21 +14,24 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_NicknameDialog(object): def setupUi(self, NicknameDialog): NicknameDialog.setObjectName("NicknameDialog") - NicknameDialog.resize(449, 85) + NicknameDialog.resize(449, 98) self.gridLayout = QtWidgets.QGridLayout(NicknameDialog) self.gridLayout.setObjectName("gridLayout") - self.lineEdit = QtWidgets.QLineEdit(NicknameDialog) - self.lineEdit.setObjectName("lineEdit") - self.gridLayout.addWidget(self.lineEdit, 1, 0, 1, 1) - spacerItem = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) - self.gridLayout.addItem(spacerItem, 2, 0, 1, 1) self.buttonBox = QtWidgets.QDialogButtonBox(NicknameDialog) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") - self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 1) - spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.gridLayout.addItem(spacerItem1, 0, 0, 1, 1) + self.gridLayout.addWidget(self.buttonBox, 6, 0, 1, 1) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem, 0, 0, 1, 1) + self.lineEdit = QtWidgets.QLineEdit(NicknameDialog) + self.lineEdit.setObjectName("lineEdit") + self.gridLayout.addWidget(self.lineEdit, 2, 0, 1, 1) + spacerItem1 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.gridLayout.addItem(spacerItem1, 4, 0, 1, 1) + self.label = QtWidgets.QLabel(NicknameDialog) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 1, 0, 1, 1) self.retranslateUi(NicknameDialog) self.buttonBox.accepted.connect(NicknameDialog.accept) @@ -38,3 +41,5 @@ class Ui_NicknameDialog(object): def retranslateUi(self, NicknameDialog): _translate = QtCore.QCoreApplication.translate NicknameDialog.setWindowTitle(_translate("NicknameDialog", "Dialog")) + self.lineEdit.setPlaceholderText(_translate("NicknameDialog", "Type your nickname...")) + self.label.setText(_translate("NicknameDialog", "Please choose a nickname with 3 or more characters"))