def __init__(self, parent=None, metadata: Dict[str, Any] = None):
        super().__init__(parent)
        super().setWindowFlags(QtCore.Qt.Window
                               | QtCore.Qt.WindowCloseButtonHint)
        self.setWindowTitle(self.TITLE)

        if metadata is None:
            self._metadata = {"author": None, "licence": None}
        else:
            self._metadata = copy.deepcopy(metadata)

        self._main_layout = QtWidgets.QFormLayout(self)
        self._author = QtWidgets.QLineEdit()
        self._author.setText("" if (self._metadata.get("author", None) is None
                                    ) else self._metadata["author"])

        self._licence_text = QtWidgets.QTextEdit()
        self._licence_text.setText("" if (
            self._metadata.get("licence", None) is None
        ) else self._metadata["licence"])

        self._licence_btn = QtWidgets.QPushButton("From File")

        self._submit_btns = QtWidgets.QDialogButtonBox(
            QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QDialogButtonBox.Ok)

        self._main_layout.addRow("Author:", self._author)
        self._main_layout.addRow("Licence:", self._licence_btn)
        self._main_layout.addRow(self._licence_text)
        self._main_layout.addRow(self._submit_btns)

        self._licence_btn.clicked.connect(self._on_file_req)
        self._submit_btns.accepted.connect(self._on_accept)
        self._submit_btns.rejected.connect(self.reject)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
    def __init__(self, parent=None, name=""):
        super().__init__(parent)
        super().setWindowFlags(QtCore.Qt.Window
                               | QtCore.Qt.WindowCloseButtonHint)
        self.setWindowTitle(name)
        self._result = None

        self._form_layout = QtWidgets.QFormLayout(self)
        self._hbox_layout = QtWidgets.QHBoxLayout()

        self._button = QtWidgets.QPushButton("Select")
        self._text = QtWidgets.QLineEdit("")
        self._text.setReadOnly(True)
        self._hbox_layout.addWidget(self._button)
        self._hbox_layout.addWidget(self._text)

        self._theme_text = QtWidgets.QLineEdit()

        self._form_layout.addRow("Theme Name:", self._theme_text)
        self._form_layout.addRow("Theme Directory:", self._hbox_layout)

        self._submit_btns = QtWidgets.QDialogButtonBox(
            QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QDialogButtonBox.Ok)
        self._submit_btns.button(
            QtWidgets.QDialogButtonBox.Ok).setEnabled(False)
        self._form_layout.addRow(self._submit_btns)

        self.setLayout(self._form_layout)

        self._button.clicked.connect(self.open_dir)

        self._submit_btns.rejected.connect(self.reject)
        self._submit_btns.accepted.connect(self.accept)
        self._theme_text.textChanged.connect(lambda a: self.validate())

        self.accepted.connect(self.on_submit_stuff)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)