# example_qt_interface.py
import sys
from PySide6.QtCore import Qt
from PySide6.QtGui import QAction, QIcon
from PySide6.QtWidgets import (
    QApplication, QMainWindow, QWidget, QVBoxLayout,
    QLabel, QMenuBar, QToolBar, QSplitter, QListWidget,
    QTextEdit, QStatusBar, QFileDialog, QPushButton
)


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Example Qt Interface")

        # Create and set up the menu bar.
        menu_bar = QMenuBar(self)
        self.setMenuBar(menu_bar)

        # File menu.
        file_menu = menu_bar.addMenu("File")

        # Create some actions to populate the File menu.
        open_action = QAction("Open", self)
        open_action.triggered.connect(self.open_file)
        file_menu.addAction(open_action)

        save_action = QAction("Save", self)
        save_action.triggered.connect(self.save_file)
        file_menu.addAction(save_action)

        exit_action = QAction("Exit", self)
        exit_action.triggered.connect(self.close)
        file_menu.addAction(exit_action)

        # Create a toolbar and add some actions.
        tool_bar = QToolBar("Main Toolbar", self)
        tool_bar.addAction(open_action)
        tool_bar.addAction(save_action)
        self.addToolBar(Qt.TopToolBarArea, tool_bar)

        # Set up a status bar at the bottom.
        self.setStatusBar(QStatusBar(self))
        self.statusBar().showMessage("Ready")

        # Create your central widget area.
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        layout = QVBoxLayout(central_widget)

        # A splitter as an example container that can hold multiple widgets side-by-side.
        splitter = QSplitter()

        # Left side: a simple list widget.
        self.list_widget = QListWidget()
        self.list_widget.addItem("Item A")
        self.list_widget.addItem("Item B")
        self.list_widget.addItem("Item C")
        splitter.addWidget(self.list_widget)

        # Right side: a text edit widget.
        self.text_edit = QTextEdit()
        self.text_edit.setPlainText("Type here...")
        splitter.addWidget(self.text_edit)

        layout.addWidget(splitter)

        # Example button in the central widget area.
        example_button = QPushButton("Click Me")
        example_button.clicked.connect(self.on_button_clicked)
        layout.addWidget(example_button)

    def open_file(self):
        file_name, _ = QFileDialog.getOpenFileName(self, "Open File", "", "All Files (*.*)")
        if file_name:
            self.statusBar().showMessage(f"Opened: {file_name}")

    def save_file(self):
        file_name, _ = QFileDialog.getSaveFileName(self, "Save File", "", "All Files (*.*)")
        if file_name:
            self.statusBar().showMessage(f"Saved: {file_name}")

    def on_button_clicked(self):
        self.statusBar().showMessage("Button clicked!")


def main():
    app = QApplication(sys.argv)
    window = MainWindow()
    window.resize(800, 600)
    window.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    main()