from PySide2.QtWidgets import QDialog, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout,\
QLabel, QCheckBox, QSpinBox, QGroupBox, QFrame, QFormLayout, QGridLayout, QSizePolicy, QFileDialog, QShortcut, QComboBox
from PySide2.QtCore import Qt, Signal
from PySide2.QtGui import QIntValidator, QKeySequence

from matplotlib.backends import qt_compat
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure


class SelectSFGWindow(QDialog):
    ok = Signal()

    def __init__(self, window):
        super(SelectSFGWindow, self).__init__()
        self._window = window
        self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowCloseButtonHint)
        self.setWindowTitle("Select SFG")

        self.dialog_layout = QVBoxLayout()
        self.ok_btn = QPushButton("Ok")
        self.ok_btn.clicked.connect(self.save_properties)
        self.dialog_layout.addWidget(self.ok_btn)
        self.combo_box = QComboBox()

        self.sfg = None
        self.setLayout(self.dialog_layout)
        self.add_sfgs_to_layout()

    def add_sfgs_to_layout(self):
        for sfg in self._window.sfg_dict:
            self.combo_box.addItem(sfg)

        self.dialog_layout.addWidget(self.combo_box)

    def save_properties(self):
        self.sfg = self._window.sfg_dict[self.combo_box.currentText()]
        self.accept()
        self.ok.emit()