Пример #1
0
 def sendOnecard(self):
     randomflag = self.randomsend(1)
     subcard = QMdiSubWindow()
     subcard.setWidget(Card(randomflag))
     self.mid.addSubWindow(subcard)
     subcard.setWindowFlags(Qt.WindowMinimizeButtonHint)
     subcard.show()
Пример #2
0
    def CreateWindow(self):

        self.hw.pushButton.clicked.connect(self.vs.showNormal)
        subwindow = QMdiSubWindow()
        subwindow.setWindowFlags(Qt.CustomizeWindowHint | Qt.Tool)
        subwindow.setWidget(self.hw)
        self.mdiArea.addSubWindow(subwindow)
Пример #3
0
 def sendFivecards(self):
     randomflag = self.randomsend(5)
     for card in randomflag:
         subcard = QMdiSubWindow()
         subcard.setWidget(Card(card))
         self.mid.addSubWindow(subcard)
         subcard.setWindowFlags(Qt.WindowMinimizeButtonHint)
         subcard.show()
Пример #4
0
 def add_subwindow(self, unit):
     win = setupwindows.MakeWindows.make_sub_window(unit)
     window = QMdiSubWindow()
     window.setWidget(win)
     window.setWindowFlags(QtCore.Qt.WindowCloseButtonHint
                           | QtCore.Qt.WindowMaximizeButtonHint)
     self.subWindowFrame.addSubWindow(window)
     window.show()
     self.subWindowFrame.tileSubWindows()
Пример #5
0
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = 'Show - Skill Tree'
        self.height = 400
        self.width = 400

        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)

        self.skill_labels = []

        self.skill_window = QMdiSubWindow(self)
        self.skill_window.hide()

        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(400, 400, self.height, self.width)

        self.create_skill_labels(self.skill_window, rage, shatter, destroy,
                                 kill)

        switch_on_off = QPushButton('Show/Hide', self.skill_window)
        switch_on_off.move(150, 100)
        switch_on_off.clicked.connect(self.show_hide)

        self.skill_window.setGeometry(0, 0, self.height, self.width)
        self.skill_window.setWindowFlags(self.skill_window.windowFlags()
                                         | Qt.FramelessWindowHint)
        self.skill_window.show()
        self.show()

    def show_hide(self):
        for label in self.skill_labels:
            # Labels could have their own methods to hide/show for convenience
            if label.visible:
                label.new_label.hide()
                label.visible = False
            else:
                label.new_label.show()
                label.visible = True

    def create_skill_labels(*args):
        window = args[0]
        skill_list = [x for x in args[2:]]
        label_x = 100
        label_y = 100
        for skill in skill_list:
            skill_label = NewLabel(window, skill.name, skill.image, label_x,
                                   label_y)
            label_y += 50
            window.skill_labels.append(skill_label)
Пример #6
0
 def sendOnecard(self):
     '''
     随机一张牌,发出去。
     '''
     randomflag = self.randomsend(1)
     subcard = QMdiSubWindow()
     subcard.setWidget(Card(randomflag))
     self.mid.addSubWindow(subcard)
     subcard.setWindowFlags(Qt.WindowMinimizeButtonHint)
     # 设置窗口属性,让其只显示最小化按钮。
     subcard.resize(150, 200)
     subcard.show()
Пример #7
0
 def sendFivecards(self):
     '''
     随机5张牌
     '''
     randomflag = self.randomsend(5)
     for card in randomflag:
         # 遍历5张牌,发出去。
         subcard = QMdiSubWindow()
         subcard.setWidget(Card(card))
         self.mid.addSubWindow(subcard)
         subcard.setWindowFlags(Qt.WindowMinimizeButtonHint)
         # 设置窗口属性,让其只显示最小化按钮。
         subcard.resize(150, 200)
         subcard.show()
Пример #8
0
def setUpGraphicsViewSubWindow(self):
    """
    This function creates a subwindow with a vertical layout &
    a missing image label.

    Input Parameters
    ****************
    self - an object reference to the WEASEL interface.

    Output Parameters
    *****************
    layout - PyQt5 QVBoxLayout vertical layout box
    lblImageMissing - Label displaying the text 'Missing Image'. Hidden 
                        until WEASEL tries to display a missing image
    subWindow - An QMdiSubWindow subwindow
    """
    try:
        logger.info("DisplayImageDrawRIO.setUpGraphicsViewSubWindow called")
        subWindow = QMdiSubWindow(self)
        subWindow.setObjectName = 'image_viewer'
        subWindow.setWindowFlags(Qt.CustomizeWindowHint
                                 | Qt.WindowCloseButtonHint
                                 | Qt.WindowMinimizeButtonHint)

        height, width = self.getMDIAreaDimensions()
        subWindow.setGeometry(0, 0, width * 0.6, height)
        self.mdiArea.addSubWindow(subWindow)

        layout = QVBoxLayout()
        widget = QWidget()
        widget.setLayout(layout)
        subWindow.setWidget(widget)

        lblImageMissing = QLabel("<h4>Image Missing</h4>")
        lblImageMissing.hide()
        layout.addWidget(lblImageMissing)
        hbox = QHBoxLayout()
        hbox.setContentsMargins(0, 0, 0, 0)
        layout.addLayout(hbox)
        subWindow.show()
        return hbox, layout, lblImageMissing, subWindow
    except Exception as e:
        print('Error in DisplayImageDrawRIO.setUpGraphicsViewSubWindow: ' +
              str(e))
        logger.error(
            'Error in DisplayImageDrawRIO.setUpGraphicsViewSubWindow: ' +
            str(e))
Пример #9
0
class ParentWindow(QMainWindow):
    def __init__(self):
        super(ParentWindow, self).__init__()
        self.main_window_maximized()
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        self.parent_window_layout()
        self.setWindowTitle("Docker Priority Queue - [DoPQ::Version - 1.2]")
        self.screen_height, self.screen_width = self.screen_geometry_details()

        # Initialize Dock Widget variables. It is used as a container, hold a listwidget for displaying information
        self.header_dock = None
        self.dopq_stat_dock = None
        self.user_stats_dock = None
        self.running_containers_dock = None
        self.enqueued_dock = None
        self.history_dock = None
        self.init_subwindows()

        # Init QMdiSubWindow variables. Each contains a QDockWidget and show/update information coming from dopq_server
        self.dopq_stat_subwin = None
        self.user_stat_subwin = None
        self.running_subwin = None
        self.enqueued_subwin = None
        self.history_subwin = None

    def main_window_maximized(self):
        """
        Summary of the function:
        ------------------------
        (a) Set the parent window size , default: full screen

        Parameters:
        -----------
        :arg: None
        :return: None
        """
        self.showMaximized()

    def parent_window_layout(self):
        """
        Summary of the function:
        ------------------------
        (a) Set the layout for the parent window

        Parameters:
        -----------
        :arg: None
        :return: None
        """
        self.setStyleSheet(css_layout.main_window_layout)

    @staticmethod
    def screen_geometry_details():
        """
        Summary of the function:
        ------------------------
        (a) Calculate the display screen's total height and width

        Parameters:
        -----------
        :arg: None
        :return: Screen's {height, width} as a pair
        """
        screen = QGuiApplication.primaryScreen()
        screen_geometry = screen.geometry()
        h = screen_geometry.height()
        w = screen_geometry.width()
        print("Screen_width New: ", w)
        print("Screen_Height New: ", h)
        return h, w

    def init_subwindows(self):
        self.create_dopq_stat_subwindow()
        self.create_userstat_subwindow()
        self.create_history_subwindow()
        self.create_running_subwindow()
        self.create_enqueued_subwindow()

    def create_dopq_stat_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Prepare the DoPQ Status Subwindow.
        (b) Contains the status dock widget inside the QMdiSubWindow

        Parameters:
        -----------
        :arg: None
        :return: None
        """
        self.dopq_stat_dock = self.status_subwindow()
        self.dopq_stat_subwin = QMdiSubWindow()
        self.dopq_stat_subwin.setWindowTitle("DoPQ Status")
        self.dopq_stat_subwin.setFixedHeight(
            (int(self.screen_height * 2.1) // 10))  # 21%
        self.dopq_stat_subwin.setFixedWidth(self.screen_width // 2)
        self.dopq_stat_subwin.setWidget(self.dopq_stat_dock)
        self.dopq_stat_subwin.setMouseTracking(False)
        self.dopq_stat_subwin.setWindowFlags(Qt.CustomizeWindowHint
                                             | Qt.WindowTitleHint)
        self.dopq_stat_subwin.move(0, 0)
        self.mdi.addSubWindow(self.dopq_stat_subwin)

    def create_userstat_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Prepare the DoPQ User Status Subwindow.
        (b) Contains the user stat. dock widget inside the QMdiSubWindow

        Parameters:
        -----------
        :arg: None
        :return: None
        """
        self.user_stats_dock = self.userstats_subwindow()
        self.user_stat_subwin = QMdiSubWindow()
        self.user_stat_subwin.setWindowTitle("User Status")
        self.user_stat_subwin.setFixedHeight(
            (int(self.screen_height * 3.4) // 10))  # 34%
        self.user_stat_subwin.setFixedWidth(self.screen_width // 2)
        self.user_stat_subwin.setWidget(self.user_stats_dock)
        self.user_stat_subwin.setMouseTracking(False)
        self.user_stat_subwin.setWindowFlags(Qt.CustomizeWindowHint
                                             | Qt.WindowTitleHint)
        self.user_stat_subwin.move(0, (int(self.screen_height * 2.11) // 10))
        self.mdi.addSubWindow(self.user_stat_subwin)

    def create_history_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Prepare the DoPQ History Subwindow.
        (b) Contains the history dock widget inside the QMdiSubWindow

        Parameters:
        -----------
        :arg: None
        :return: None
        """
        self.history_dock = self.history_subwindow()
        self.history_subwin = QMdiSubWindow()
        self.history_subwin.setWindowTitle("Completed Containers")
        self.history_subwin.setFixedHeight(
            (int(self.screen_height * 3.9) // 10))  # 37%
        self.history_subwin.setFixedWidth(self.screen_width // 2)
        self.history_subwin.setWidget(self.history_dock)
        self.history_subwin.setMouseTracking(False)
        self.history_subwin.setWindowFlags(Qt.CustomizeWindowHint
                                           | Qt.WindowTitleHint)
        self.history_subwin.move(
            0, (int(self.screen_height * 5.52) // 10))  # Left pan, bottom
        self.mdi.addSubWindow(self.history_subwin)

    def create_running_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Prepare the Running Containers Subwindow.
        (b) Contains the running dock widget inside the QMdiSubWindow

        Parameters:
        -----------
        :arg: None
        :return: None
        """
        self.running_containers_dock = self.running_continers_subwindow()
        self.running_subwin = QMdiSubWindow()
        self.running_subwin.setWindowTitle("Running Containers")
        self.running_subwin.setFixedHeight(
            (int(self.screen_height * 4.8) // 10))  # 48%
        self.running_subwin.setFixedWidth(int(self.screen_width * 4.97) // 10)
        self.running_subwin.setWidget(self.running_containers_dock)
        self.running_subwin.setMouseTracking(False)
        self.running_subwin.setWindowFlags(Qt.CustomizeWindowHint
                                           | Qt.WindowTitleHint)
        self.running_subwin.move(int(self.screen_width * 5.01) // 10,
                                 0)  # Right pan, top
        self.mdi.addSubWindow(self.running_subwin)

    def create_enqueued_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Prepare the Enqueued Subwindow.
        (b) Contains the enqueued dock widget inside the QMdiSubWindow

        Parameters:
        -----------
        :arg: None
        :return: None
        """
        self.enqueued_dock = self.enqueued_containers_subwindow()
        self.enqueued_subwin = QMdiSubWindow()
        self.enqueued_subwin.setWindowTitle("Enqueued Containers")
        self.enqueued_subwin.setFixedHeight(
            (int(self.screen_height * 4.6) // 10))  # 48%
        self.enqueued_subwin.setFixedWidth(int(self.screen_width * 4.97) // 10)
        self.enqueued_subwin.setWidget(self.enqueued_dock)
        self.enqueued_subwin.setMouseTracking(False)
        self.enqueued_subwin.setWindowFlags(Qt.CustomizeWindowHint
                                            | Qt.WindowTitleHint)
        self.enqueued_subwin.move(
            int(self.screen_width * 5.01) // 10,
            (int(self.screen_height * 4.81) // 10))  # Right pan, bottom
        self.mdi.addSubWindow(self.enqueued_subwin)

    @staticmethod
    def subdoc_custom_title_bar(subwin_name):
        """
        Summary of the function:
        ------------------------
        (a) Prepare the title bar for the specific dock widget.

        Parameters:
        -----------
        :subwin_name: str
            The name of the dock_widget
        :return: QLabel object
            The label(With str) for the specific dock widget title bar
        """
        label = QLabel()

        if subwin_name == "userstats":
            label.setText(css_layout.USER_STAT_TITLE_HTML)
            label.setAlignment(Qt.AlignCenter)
            new_font = QFont("Lucida Console", 15, QFont.Bold)
            label.setFont(new_font)
            label.adjustSize()
            label.setStyleSheet(css_layout.userstats_title_bar)

        elif subwin_name == "status":
            label.setText(css_layout.STATUS_TITLE_HTML)
            label.setAlignment(Qt.AlignCenter)
            new_font = QFont("Courgette", 15, QFont.Bold)
            label.setFont(new_font)
            label.adjustSize()
            label.setStyleSheet(css_layout.status_title_bar)

        elif subwin_name == "running":
            label.setText(css_layout.RUNNING_CONT_TITLE_HTML)
            label.setAlignment(Qt.AlignCenter)
            new_font = QFont("Courgette", 15, QFont.Bold)
            label.setFont(new_font)
            label.adjustSize()
            label.setStyleSheet(css_layout.running_cont_title_bar)

        elif subwin_name == "enqueued":
            label.setText(css_layout.ENQUEUED_CONT_TITLE_HTML)
            label.setAlignment(Qt.AlignCenter)
            new_font = QFont("Courgette", 15, QFont.Bold)
            label.setFont(new_font)
            label.adjustSize()
            label.setStyleSheet(css_layout.enqueued_cont_title_bar)

        elif subwin_name == "history":
            label.setText(css_layout.HISTORY_TITLE_HTML)
            label.setAlignment(Qt.AlignCenter)
            new_font = QFont("Courgette", 15, QFont.Bold)
            label.setFont(new_font)
            label.adjustSize()
            label.setStyleSheet(css_layout.history_title_bar)

        return label

    def subdoc_font_customization(self):
        """
        Summary of the function:
        ------------------------
        (a) Font customization for the sub-window/dock-widget

        Parameters:
        -----------
        :arg: None
        :return: A QFont object
        """
        current_font = self.font()
        current_font.setBold(True)
        current_font.setPixelSize(25)
        current_font.setFamily("")
        return current_font

    ################################ Sub Windows ################################
    # Five APIs -> Dock Widget creation for displaying docker containers info   #
    # Initially load with null data.                                            #
    # All dock widget objects contain a list widget to show data                #
    #############################################################################

    def dock_main_menu(self):
        self.menuBar().setStyleSheet(
            "QMenuBar::item { color: rgb(255, 255, 255); }")
        main_menu = self.menuBar()

        file_menu = main_menu.addMenu('DoPQ-Arena')
        file_menu.setStyleSheet("QMenu::item { color: rgb(255, 255, 255); }")

        commands_menu = main_menu.addMenu('Commands')
        commands_menu.setStyleSheet(
            "QMenu::item { color: rgb(255, 255, 255); }")

        viewMenu = main_menu.addMenu('View')
        searchMenu = main_menu.addMenu('Search')
        toolsMenu = main_menu.addMenu('Tools')
        helpMenu = main_menu.addMenu('About DoPQ')

        new_action = QAction(QIcon('new.png'), '&New', self)
        new_action.setShortcut('Ctrl+N')
        new_action.setStatusTip('New Document')
        new_action.triggered.connect(self.new_file_onclick)

        exit_action = QAction(QIcon('exit.png'), '&Exit', self)
        exit_action.setShortcut('Ctrl+Q')
        exit_action.setStatusTip('Exit application')
        exit_action.triggered.connect(self.file_exit_onclick)

        # Define File Menu
        file_menu.addAction(new_action)
        file_menu.addAction(exit_action)

    def dock_toolbar(self):
        toolbar = QToolBar("DoPQ-Toolbar")
        self.addToolBar(toolbar)
        img_home = QIcon('asset_files/home_glossy.png')
        img_command = QIcon('asset_files/code_command.png')

        home_btn = QAction(img_home, "Home", self)
        home_btn.setStatusTip('logo-btn')
        home_btn.triggered.connect(self.btn_onclick_func)
        toolbar.addAction(home_btn)

        toolbar.addSeparator()

        enq_btn = QAction(img_command, "Command Lists", self)
        enq_btn.setStatusTip('Sending-commands-btn')
        enq_btn.triggered.connect(self.btn_onclick_func)
        toolbar.addAction(enq_btn)
        self.setStatusBar(QStatusBar(self))

    """
    def btn_onclick_func(self, s):
        print("This button has been clicked", s)

    # Menu Bar OnClick API definitions
    def new_file_onclick(self):
        print('New')

    def file_exit_onclick(self):
        print('Exit')
    """

    def status_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Defining the sub-window for the priority queue status
        (b) Info would be blank for initial loading
        
        Parameters:
        -----------
        :arg: None
        :return: A dock-widget object
        """
        dock_widget = QDockWidget(self)
        # dock_widget.setTitleBarWidget(self.subdoc_custom_title_bar("status"))
        dock_widget.setTitleBarWidget(QWidget(None))
        dock_widget.setFont(self.subdoc_font_customization())
        dock_widget.setFloating(False)
        dock_widget.setFeatures(dock_widget.NoDockWidgetFeatures)
        dock_widget.setFixedWidth(self.screen_width // 2)
        dock_widget.setFixedHeight(int(self.screen_height * 2.1) //
                                   10)  # 25% of total height
        dock_widget.setStyleSheet(css_layout.dockwidget_layout)
        dock_widget.setAllowedAreas(Qt.LeftDockWidgetArea)
        return dock_widget

    def running_continers_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Defining the sub-window for showing the running containers information

        Parameters:
        -----------
        :arg: None
        :return: A dock-widget object (sub-window)
        """
        dock_widgets = QDockWidget(self)
        # dock_widgets.setTitleBarWidget(self.subdoc_custom_title_bar("running"))
        dock_widgets.setTitleBarWidget(QWidget(None))
        dock_widgets.setFloating(False)
        dock_widgets.setFont(self.subdoc_font_customization())
        dock_widgets.setFeatures(dock_widgets.NoDockWidgetFeatures)
        dock_widgets.setFixedHeight(
            (int(self.screen_height * 4.8) // 10))  # 48%
        dock_widgets.setFixedWidth(int(self.screen_width * 4.97) // 10)

        dock_widgets.setStyleSheet(css_layout.dockwidget_layout)
        dock_widgets.setAllowedAreas(Qt.LeftDockWidgetArea)
        return dock_widgets

    def userstats_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Defining the sub-window for the User Statistics

        Parameters:
        -----------
        :arg: None
        :return: A dock-widget object (sub-window)
        """
        dock_widget = QDockWidget(self)
        # dock_widget.setTitleBarWidget(self.subdoc_custom_title_bar("userstats"))
        dock_widget.setTitleBarWidget(QWidget(None))
        dock_widget.setFloating(False)
        dock_widget.setFont(self.subdoc_font_customization())
        dock_widget.setFeatures(dock_widget.NoDockWidgetFeatures)
        dock_widget.setFixedHeight((int(self.screen_height * 3.4) // 10))
        dock_widget.setFixedWidth(self.screen_width // 2)
        dock_widget.setStyleSheet(css_layout.dockwidget_layout)
        dock_widget.setAllowedAreas(Qt.TopDockWidgetArea)
        return dock_widget

    def enqueued_containers_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Defining the sub-window for showing the enqueued containers information

        Parameters:
        -----------
        :arg: None
        :return: A dock-widget object (sub-window)
        """
        dock_widget = QDockWidget(self)
        # dock_widget.setTitleBarWidget(self.subdoc_custom_title_bar("enqueued"))
        dock_widget.setTitleBarWidget(QWidget(None))
        dock_widget.setFloating(False)
        dock_widget.setFont(self.subdoc_font_customization())
        dock_widget.setFeatures(dock_widget.NoDockWidgetFeatures)
        dock_widget.setFixedHeight(
            (int(self.screen_height * 4.6) // 10))  # 48%
        dock_widget.setFixedWidth(int(self.screen_width * 4.97) // 10)
        dock_widget.setStyleSheet(css_layout.dockwidget_layout)
        dock_widget.setAllowedAreas(Qt.RightDockWidgetArea)
        return dock_widget

    def history_subwindow(self):
        """
        Summary of the function:
        ------------------------
        (a) Defining the sub-window for showing executed docker containers history

        Parameters:
        -----------
        :arg: None
        :return: A dock-widget object (sub-window)
        """
        dock_widget = QDockWidget(self)
        # dock_widget.setTitleBarWidget(self.subdoc_custom_title_bar("history"))
        dock_widget.setTitleBarWidget(QWidget(None))
        dock_widget.setFloating(False)
        dock_widget.setFont(self.subdoc_font_customization())
        dock_widget.setFeatures(dock_widget.NoDockWidgetFeatures)
        dock_widget.setFixedHeight((int(self.screen_height * 3.9) // 10))
        dock_widget.setFixedWidth(self.screen_width // 2)
        dock_widget.setStyleSheet(css_layout.dockwidget_layout)
        dock_widget.setAllowedAreas(Qt.RightDockWidgetArea)
        return dock_widget