update dialog to accept faker default nickname launch sys.argv, prepare_json fix typehint/arg name, commit sizeof helper func, update launch.py for new client/main.py

This commit is contained in:
Xevion
2021-01-25 12:11:41 -06:00
parent 9c3bc4378a
commit 5f2b2aa733
4 changed files with 30 additions and 14 deletions

View File

@@ -44,10 +44,12 @@ class NicknameDialog(QDialog, Ui_NicknameDialog):
class ConnectionDialog(QDialog, Ui_ConnectionDialog): class ConnectionDialog(QDialog, Ui_ConnectionDialog):
def __init__(self, *args, **kwargs): def __init__(self, nickname: str = None, *args, **kwargs):
super(ConnectionDialog, self).__init__(*args, **kwargs) super(ConnectionDialog, self).__init__(*args, **kwargs)
self.setupUi(self) self.setupUi(self)
if nickname: self.nickname_input.setText(nickname)
self.connect_button.setDisabled(True) self.connect_button.setDisabled(True)
self.server_address_input.textEdited.connect(self.validation) self.server_address_input.textEdited.connect(self.validation)
self.port_input.textEdited.connect(self.validation) self.port_input.textEdited.connect(self.validation)

View File

@@ -9,10 +9,10 @@ from client.gui import MainWindow
logger = logging.getLogger(__file__) logger = logging.getLogger(__file__)
def main(): def main(nickname: str = None):
app = QApplication([]) app = QApplication([])
app.setApplicationName("TCPChat Client") app.setApplicationName("TCPChat Client")
connect_dialog = ConnectionDialog() connect_dialog = ConnectionDialog(nickname=nickname)
app.exec_() app.exec_()
if connect_dialog.connect_pressed: if connect_dialog.connect_pressed:

View File

@@ -1,7 +1,7 @@
import html import html
import json import json
import time import time
from typing import List, Tuple from typing import List, Tuple, Any
import constants import constants
@@ -14,14 +14,14 @@ def prepare(message: str, encoding='utf-8') -> bytes:
return (header + message).encode(encoding) return (header + message).encode(encoding)
def prepare_json(object) -> bytes: def prepare_json(obj: Any) -> bytes:
""" """
Prepares a object for sending as encoded JSON with a header. Prepares a object for sending as encoded JSON with a header.
:param object: A JSON-encodable object :param obj: A JSON-encodable object
:return: Encoded JSON :return: Encoded JSON
""" """
return prepare(json.dumps(object)) return prepare(json.dumps(obj))
def prepare_message(nickname: str, message: str, color: str, message_id: int, timestamp: int = None) -> bytes: def prepare_message(nickname: str, message: str, color: str, message_id: int, timestamp: int = None) -> bytes:
@@ -65,3 +65,11 @@ def formatted_message(message: dict) -> str:
nick_esc = html.escape(message["nickname"]) nick_esc = html.escape(message["nickname"])
msg_esc = html.escape(message["message"]) msg_esc = html.escape(message["message"])
return f'&lt;<span style="color: {message["color"]}">{nick_esc}</span>&gt; {msg_esc}' return f'&lt;<span style="color: {message["color"]}">{nick_esc}</span>&gt; {msg_esc}'
def sizeof_fmt(num, suffix='B'):
for unit in ['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi']:
if abs(num) < 1024.0:
return "%3.1f%s%s" % (num, unit, suffix)
num /= 1024.0
return "%.1f%s%s" % (num, 'Yi', suffix)

View File

@@ -1,18 +1,24 @@
import sys import sys
from faker import Faker
if __name__ == "__main__": if __name__ == "__main__":
if len(sys.argv) != 2: arg_count = len(sys.argv) - 1
if arg_count < 1:
print('Please provide one argument besides the file describing whether to launch the client or server.') print('Please provide one argument besides the file describing whether to launch the client or server.')
print('Client/C/1 to launch the client. Server/S/2 to launch the server.') print('Client/C/1 to launch the client. Server/S/2 to launch the server.')
else: else:
if str(sys.argv[1]).lower() in ['client', 'c', '1']: if str(sys.argv[1]).lower() in ['client', 'c', '1']:
from PyQt5.QtWidgets import QApplication nick = None
from client.gui import MainWindow if arg_count >= 2:
if sys.argv[2] == 'random':
fake = Faker()
nick = fake.user_name()
else:
nick = sys.argv[2]
app = QApplication([]) from client.main import main
app.setApplicationName("TCPChat Client") main(nick)
m = MainWindow()
app.exec_()
elif str(sys.argv[1]).lower() in ['server', 's', '2']: elif str(sys.argv[1]).lower() in ['server', 's', '2']:
from server import main from server import main
main.receive() main.receive()