| 
				
			 | 
			
			 | 
			@@ -0,0 +1,88 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			from PySide2 import QtWidgets as qt | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			from PySide2 import QtCore as qtc | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import configparser, sys, os | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			from datetime import datetime as dt | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			set_debug = False | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			class TextLine: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    def __init__(self, username, textarea, timestamp, logfile): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.username = username | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.label = qt.QLabel("&{}:".format(username)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.message = qt.QLineEdit() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.message.returnPressed.connect(self.pressButton) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.textarea = textarea | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.label.setBuddy(self.message) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.timestamp = timestamp | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.logfile = logfile | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    def pressButton(self): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if self.timestamp: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            t = dt.now() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            o = "[{}] {}: {}".format(t.strftime("%H:%M:%S"), self.username, self.message.text()) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        else: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            o = "{}: {}".format(self.username, self.message.text()) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.textarea.append(o) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if self.logfile != "": | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            with open(self.logfile, "a") as file: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                file.write(o + "\n") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        self.message.clear() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    def toString(self): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        print(self.username) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			def debug(message): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if set_debug: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        print(message) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			def main(): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    debug("Loading config...") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    cfg = config() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    timestamp = True if int(cfg["timestamp"]) == 1 else False | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    debug("Setting up...") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    app = qt.QApplication([]) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    layout = qt.QVBoxLayout() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    debug("Making text area...") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    text_area = qt.QTextEdit() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    text_area.setFocusPolicy(qtc.Qt.NoFocus) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    layout.addWidget(text_area) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    debug("Getting users...") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    users = [x.strip() for x in cfg["users"].split(",")] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    debug("Users are {}".format(users)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    inputs = [] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for user in users: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ipt = TextLine(user, text_area, timestamp, cfg["logfile"]) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        inputs.append(ipt) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for ipt in inputs: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        layout.addWidget(ipt.label) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        layout.addWidget(ipt.message) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    debug("Starting window...") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    window = qt.QWidget() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    window.setLayout(layout) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    window.resize(int(cfg["sizew"]), int(cfg["sizeh"])) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    window.show() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    debug("Starting interactivity...") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    app.exec_() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			def send_message(ipt, text_area): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    debug("Sending message!") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    text_area.append("{}: {}".format(ipt.username, ipt.message.text())) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ipt.message.clear() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			def config(): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    config = configparser.ConfigParser() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if not os.path.isfile('config.ini'): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        print("config.ini is missing!") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        sys.exit(0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    config.read('config.ini') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return config["DEFAULT"] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			if __name__ == "__main__": | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    main() |