|  | 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")
 |