import sys from PyQt5.uic import loadUi from PyQt5 import QtWidgets from PyQt5.QtWidgets import QDialog, QApplication, QWidget, QLabel, QScrollArea, QVBoxLayout, QFrame, QComboBox from PyQt5.QtGui import QPixmap import firebase_admin from firebase_admin import credentials, auth, db, initialize_app import os current_directory = os.path.dirname(os.path.realpath(__file__)) json_path = os.path.join(current_directory, 'chatbot.json') #cred = credentials.Certificate('/home/knight/ChatBot_UI/chatbot.json') cred = credentials.Certificate(json_path) firebase_admin.initialize_app(cred, {'databaseURL': 'https://chatbot-402717-default-rtdb.firebaseio.com/'}) class RoundedVBoxLayout(QVBoxLayout): def __init__(self): super().__init__() self.rounded_frame = QFrame() self.rounded_frame.setStyleSheet("QFrame {border-radius: 50px; background-color: lightgray;}") self.rounded_frame.setLayout(self) def addWidget(self, widget): # Add widgets to the rounded frame super().addWidget(widget) class LoginScreen(QDialog): def __init__(self): super(LoginScreen, self).__init__() loadUi("login.ui",self) self.passwordfield.setEchoMode(QtWidgets.QLineEdit.Password) self.loginButton.clicked.connect(self.loginfunction) #self.loginButton.clicked.connect(self.gotoDashboard) def loginfunction(self): username = self.emailfield.text() password = self.passwordfield.text() if len(username)==0 or len(password)==0: self.labelError.setText("Please input all fields.") else: try: user = auth.get_user_by_email(username) if user: self.gotoDashboard() except: print("Login Failed !") self.labelError.setText("Login Failed Invalid Username or Password") def gotoDashboard(self): dashBoard = DashBoard() widget.addWidget(dashBoard) widget.setCurrentIndex(widget.currentIndex()+1) class DashBoard(QDialog): def __init__(self): super(DashBoard, self).__init__() loadUi('dashboard.ui', self) self.ref = db.reference('/intents_and_questions') self.layout = self.questionLayout self.show_intents_questions() self.get_intents() def update_intent(self): pass def update_question(self): pass def get_intents(self): self.intentCombo.setContentsMargins(40, 140, 0, 0) data = self.ref.get() if data: self.intentCombo.addItems(list(data.keys())) else: self.intentCombo.addItems([]) def show_intents_questions(self): data = self.ref.get() if data: # Assuming data is a dictionary for intent, questions in data.items(): questions_text = '\n'.join(questions) #label_text = f"Intent: {intent}\nQuestions:{questions_text}\n{'-'*50}" label_text = f"INTENT : {intent}\n\nQUESTIONS : \n{questions_text}\n{'-'*50}" label = QLabel(label_text) label.setContentsMargins(20,20,20,20) self.layout.addWidget(label) scroll_area = QScrollArea() scroll_area.setWidgetResizable(True) scroll_widget = QWidget() scroll_widget.setLayout(self.layout) scroll_area.setWidget(scroll_widget) #main_layout = QVBoxLayout() main_layout = RoundedVBoxLayout() main_layout.addWidget(scroll_area) main_layout.setContentsMargins(20, 120, 800, 30) self.setLayout(main_layout) self.setGeometry(300, 300, 400, 200) self.setWindowTitle('Dashboard') self.show() app = QApplication(sys.argv) welcome = LoginScreen() widget = QtWidgets.QStackedWidget() widget.addWidget(welcome) widget.setFixedHeight(800) widget.setFixedWidth(1200) widget.show() try: sys.exit(app.exec_()) except: print("Exiting")