#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: Bertrand256
# Created on: 2018-01
from PyQt5.QtCore import pyqtSlot, QStringListModel
from PyQt5.QtWidgets import QDialog, QLayout, QCompleter
from wnd_utils import WndUtils
from ui import ui_hw_word_dlg


class HardwareWalletWordDlg(QDialog, ui_hw_word_dlg.Ui_HardwareWalletWordDlg, WndUtils):
    def __init__(self, message, wordlist):
        QDialog.__init__(self)
        WndUtils.__init__(self, app_config=None)
        ui_hw_word_dlg.Ui_HardwareWalletWordDlg.__init__(self)
        self.wordlist = wordlist
        self.message = message
        self.word = ''
        self.setupUi()

    def setupUi(self):
        ui_hw_word_dlg.Ui_HardwareWalletWordDlg.setupUi(self, self)
        self.setWindowTitle('')
        self.lblWord.setText(self.message)
        self.setWindowTitle('Get word')
        model = QStringListModel()
        model.setStringList(self.wordlist)
        self.completer = QCompleter()
        self.completer.setModel(model)
        self.edtWord.setCompleter(self.completer)
        self.layout().setSizeConstraint(QLayout.SetFixedSize)

    @pyqtSlot(bool)
    def on_btnEnter_clicked(self):
        text = self.edtWord.text()
        if not text:
            WndUtils.errorMsg('Word cannot be empty.')
        elif text not in self.wordlist:
            WndUtils.errorMsg('Word is not in the allowed wordlist.')
        else:
            self.accept()

    def get_word(self):
        return self.edtWord.text()