from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QDialog  
from PyQt5.QtCore import Qt, QRect  

class KetWidget(QWidget) :
    def __init__(self, parent) :
        super().__init__()
        self.initUI()
        self.parent = parent

    def initUI(self) :
        btn_box = QVBoxLayout()
        
        self.float_button1 = QPushButton("↑", self)
        self.float_button1.move(self.width() - 200, self.height() - 200)
        self.float_button1.setFixedSize(90, 90)
        self.float_button1.clicked.connect(self.focus_do_inscrease)

        self.float_button2 = QPushButton("↓", self)
        self.float_button2.move(self.width() - 200, self.height() - 100)
        self.float_button2.setFixedSize(90, 90)
        self.float_button2.clicked.connect(self.focus_do_decrease)

        self.float_button3 = QPushButton("enter", self)
        self.float_button3.move(self.width() - 100, self.height() - 200)
        self.float_button3.setFixedSize(90, 90)
        self.float_button3.clicked.connect(self.focus_do_action)

        self.float_button4 = QPushButton("esc", self)
        self.float_button4.move(self.width() - 100, self.height() - 100)
        self.float_button4.setFixedSize(90, 90)
        self.float_button4.clicked.connect(self.focus_do_escape)

        self.show_hide_button = QPushButton("show/hide", self)
        self.show_hide_button.move(self.width()-10, self.height() - 100)
        self.show_hide_button.setFixedSize(90, 90)
        self.show_hide_button.clicked.connect(self.focus_show_hide)

        btn_box.addWidget(self.float_button1)
        btn_box.addWidget(self.float_button2)
        btn_box.addWidget(self.float_button3)
        btn_box.addWidget(self.float_button4)

    
    def focus_do_inscrease(self) :
        if hasattr(self.parent, 'stack'):
            self.parent.stack.currentWidget().key_decrease_parameter()
        else :
            self.parent.key_increase_parameter()

    def focus_do_decrease(self) :
        if hasattr(self.parent, 'stack'):
            self.parent.stack.currentWidget().key_increase_parameter()
        else :
            self.parent.key_decrease_parameter()

    def focus_do_action(self) :
        if hasattr(self.parent, 'stack'):
            self.parent.stack.currentWidget().key_enter_process()
        else :
            self.parent.key_enter_process()

    def focus_do_escape(self) :
        if hasattr(self.parent, 'stack'):
            self.parent.stack.currentWidget().key_escape_process()
        else :
            self.parent.key_escape_process()

    def focus_show_hide(self) :
        if self.float_button1.isHidden() :
            self.float_button1.show()
            self.float_button2.show()
            self.float_button3.show()
            self.float_button4.show()
        else :
            self.float_button1.hide()
            self.float_button2.hide()
            self.float_button3.hide()
            self.float_button4.hide()

    def showEvent(self, event):  
        super().showEvent(event)  
        # 获取屏幕大小  
        screen = QApplication.primaryScreen()  
        screen_rect = screen.geometry()  
        # 计算窗口在屏幕右下角的位置  
        width, height = self.width(), self.height()  
        x = screen_rect.width() - width  
        y = screen_rect.height() - height  
        # 设置窗口位置  
        self.move(x, y)  