Exemplo n.º 1
0
    def __createToolbar(self):
        self.buttons = {}

        toolbar = QToolBar("bottom toolbar")
        toolbar.setOrientation(Qt.Horizontal)
        toolbar.setAllowedAreas(Qt.BottomToolBarArea)
        toolbar.setIconSize(QSize(32, 32))

        button1 = QPushButton("Show All")
        toolbar.addWidget(button1)
        toolbar.addSeparator()

        button2 = QPushButton("Play")
        toolbar.addWidget(button2)
        toolbar.addSeparator()

        button3 = QPushButton("Stop")
        toolbar.addWidget(button3)
        toolbar.addSeparator()

        button4 = QPushButton("Record")
        toolbar.addWidget(button4)
        toolbar.addSeparator()

        self.addToolBar(Qt.BottomToolBarArea, toolbar)
class BufferSelectToolbar(object):
    def __init__(self, selectTool):
        super(BufferSelectToolbar, self).__init__()
        # references
        self.selectTool = selectTool
        self.result = None
        self.debug = self.selectTool.debug
        self.id = id
        self.config = self.selectTool.config
        self.info = Info(self)
        try:
            self.gtomain = self.selectTool.gtomain
            self.helper = self.gtomain.helper
            self.metadata = self.gtomain.metadata
            self.iface = self.gtomain.iface
            self.canvas = self.iface.mapCanvas()
            # tool data
            self.toolbar_dock = self.config.get("toolbar_dock", 4)
            self.toolbar_height = self.gtomain.toolbar_height
            # widget
            self.toolbar = None
            # load toolbar
            objName = "gtoTB_" + __name__ + str(id)
            self.toolbar = self.gtomain.helper.findToolbar(self.iface, objName)
            if self.toolbar is None:
                if self.debug: self.info.log("load", objName)
                self.toolbar = QToolBar()
                self.toolbar.setObjectName(objName)
                self.toolbar.setWindowTitle(u'GTO Buffer Selection')
                self.toolbar.setAllowedAreas(Qt.BottomToolBarArea
                                             | Qt.TopToolBarArea)
                self.iface.mainWindow().addToolBarBreak(self.toolbar_dock)
                self.iface.addToolBar(self.toolbar, self.toolbar_dock)
                # set the iconsize=> changed when self.iface.addToolBar :S
                if self.toolbar_height is not None:
                    self.toolbar.setMaximumHeight(self.gtomain.toolbar_height)
                    self.toolbar.setMinimumHeight(self.gtomain.toolbar_height)
            else:
                self.toolbar.clear()
            self.wid = Widget(self)
            self.toolbar.addWidget(self.wid)
            self.wid.setIconSizes(self.iface.iconSize(False))
            self.wid.geometry_changed.connect(self.getGeometry)
            self.toolbar.setHidden(False)
        except Exception as e:
            self.info.err(e)

    # from mActionbufferselectxy
    def setHidden(self, a0):
        self.toolbar.setHidden(a0)

    def setGeometry(self, geo, isValid, isCircle=False, isRectangle=False):
        self.toolbar.setHidden(False)
        if self.debug:
            self.info.log("setGeometry", geo.isEmpty(), isValid, isCircle,
                          isRectangle)
        self.wid.setOriginalGeometry(geo, isValid, isCircle, isRectangle)

    def getGeometry(self, geo):
        self.selectTool.setGeometryToMapTool(geo)
Exemplo n.º 3
0
    def setup_toobar(self):
        logo = QPixmap('src/_assets/images/logo.png')
        logo = logo.scaled(64, 64)
        label_logo = QLabel()
        label_logo.setPixmap(logo)

        self.btn_price = QToolButton()
        self.btn_price.setText("Preços")

        self.btn_controler = QToolButton()
        self.btn_controler.setText("Controle")

        self.btn_report = QToolButton()
        self.btn_report.setText("Relatório")

        toolbar = QToolBar()
        toolbar.addWidget(label_logo)
        toolbar.addWidget(self.btn_price)
        toolbar.addWidget(self.btn_controler)
        toolbar.addWidget(self.btn_report)

        self.btn_price.setStyleSheet(STYLES.active_tool_button)
        self.btn_report.setStyleSheet(STYLES.tool_button)
        self.btn_controler.setStyleSheet(STYLES.tool_button)

        self.btn_controler.clicked.connect(self.controller_handle_click)
        self.btn_report.clicked.connect(self.report_handle_click)
        self.btn_price.clicked.connect(self.price_handle_click)

        toolbar.setAllowedAreas(Qt.TopToolBarArea)
        toolbar.setStyleSheet(STYLES.toolbar)

        self.addToolBar(toolbar)

        label_logo.setStyleSheet('margin-left: 10px; margin-right: 10px;')
Exemplo n.º 4
0
class run(QObject):  # gtoAction
    def __init__(self, id, gtoTool, config, debug):
        super(run, self).__init__()
        # references
        self.debug = debug
        self.id = id
        self.config = config
        self.info = gtoTool.info

        try:
            self.action = gtoTool.action
            self.action.setCheckable(True)
            self.gtomain = gtoTool.gtomain
            self.helper = self.gtomain.helper
            self.metadata = self.gtomain.metadata
            self.iface = self.gtomain.iface
            self.canvas = self.iface.mapCanvas()
            if not self.config.get("is_widgetaction", False):
                # tool data
                self.toolbar_dock = self.config.get("toolbar_dock", 4)
                # widget
                self.toolbar = None

                # load toolbar
                self.objName = "gtoTB_" + gtoTool.action.objectName() + str(id)
                self.toolbar = self.gtomain.helper.findToolbar(self.iface, self.objName)
                if self.toolbar is None:
                    if self.debug: self.info.log("load", self.objName)
                    self.toolbar = QToolBar()
                    self.toolbar.setObjectName(self.objName)
                    self.toolbar.setWindowTitle(u'GTO Coordinate')
                    self.toolbar.setAllowedAreas(Qt.BottomToolBarArea | Qt.TopToolBarArea)
                    self.iface.mainWindow().addToolBarBreak(self.toolbar_dock)
                    self.iface.addToolBar(self.toolbar, self.toolbar_dock)
                else:
                    self.toolbar.clear()
                self.wid = GTOPointWidget(self.gtomain, self.toolbar)
                self.toolbar.addWidget(self.wid)
                if self.config.get("spacer", False):
                    spacer = QWidget()
                    spacer.setObjectName('spacer')
                    spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
                    spacer.setStyleSheet("QWidget{background: transparent;}")
                    self.toolbar.addWidget(spacer)
                self.wid.set_parent_widget(self)
                self.wid.isActive.connect(self.set_status)  # not always(?) working?
                self.wid.setConfig(self.config)
                self.wid.added()
                self.wid.setMapTool()
                self.toolbar.show()
        except Exception as e:
            self.info.err(e)

    def set_status(self, isActive):
        try:
            self.action.setChecked(isActive)
            self.toolbar.setHidden(not isActive)
        except Exception as e:
            self.info.err(e)
Exemplo n.º 5
0
class run(object):
    def __init__(self, id, gtoTool, config, debug):
        super(run, self).__init__()
        try:
            # references
            self.result = None
            self.debug = debug
            self.id = id
            self.config = config
            self.info = gtoTool.info
            self.gtomain = gtoTool.gtomain
            self.helper = self.gtomain.helper
            self.metadata = self.gtomain.metadata
            self.iface = self.gtomain.iface

            # tool data widegt
            self.toolbar_dock = self.config.get("toolbar_dock", None)
            # widget
            self.toolbar = None
            self.wid = Widget(self, self.iface.mainWindow())
            if self.toolbar_dock is not None:
                # load toolbar
                objName = "gtoTB_" + gtoTool.action.objectName()
                self.toolbar = self.gtomain.helper.findToolbar(
                    self.iface, objName)
                if self.toolbar is None:
                    if self.debug: self.info.log("load", objName)
                    self.toolbar = QToolBar()
                    self.toolbar.setObjectName(objName)
                    self.toolbar.setWindowTitle(u'GTO Suche')
                    self.toolbar.setAllowedAreas(Qt.BottomToolBarArea
                                                 | Qt.TopToolBarArea)
                    self.iface.mainWindow().addToolBarBreak(self.toolbar_dock)
                    self.iface.addToolBar(self.toolbar, self.toolbar_dock)
                else:
                    self.toolbar.clear()
                    self.toolbar.setHidden(False)
            else:
                self.toolbar = self.gtomain.gtotb
            self.toolbar.addWidget(self.wid)
            if self.config.get("show_hide_button", False):
                self.helper.addToolbarClose(self.toolbar)
            self.toolbar.visibilityChanged.connect(self.reset)
        except Exception as e:
            self.info.err(e)

    def reset(self, *args):  # from (gto)toolbar hidden/shown
        try:
            if self.debug: self.info.log("gtoAction reset")
            self.wid.reset()
        except Exception as e:
            self.info.err(e)
Exemplo n.º 6
0
    def createToolBar(self) -> QToolBar:
        navigationBar = QToolBar(self.tr("Navigation"))
        navigationBar.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea)
        navigationBar.toggleViewAction().setEnabled(False)

        self.m_historyBackAction = QAction(self)
        backShortcuts = QKeySequence.keyBindings(QKeySequence.Back)
        for i, x in enumerate(reversed(backShortcuts)):
            if x[0] == Qt.Key_Backspace:
                # Chromium already handles navigate on backspace when appropriate.
                backShortcuts.pop(i)

        # For some reason Qt doesn't bind the dedicated Back key to Back.
        backShortcuts.append(QKeySequence(Qt.Key_Back))
        self.m_historyBackAction.setShortcuts(backShortcuts)
        self.m_historyBackAction.setIconVisibleInMenu(False)
        self.m_historyBackAction.setIcon(QIcon(":go-previous.png"))
        self.m_historyBackAction.triggered.connect(
            lambda: self.m_tabWidget.triggerWebPageAction(QWebEnginePage.Back))
        navigationBar.addAction(self.m_historyBackAction)

        self.m_historyForwardAction = QAction(self)
        fwdShortcuts = QKeySequence.keyBindings(QKeySequence.Forward)
        for i, x in enumerate(reversed(fwdShortcuts)):
            if x[0] & Qt.Key_unknown == Qt.Key_Backspace:
                fwdShortcuts.pop(i)
        fwdShortcuts.append(QKeySequence(Qt.Key_Forward))
        self.m_historyForwardAction.setShortcuts(fwdShortcuts)
        self.m_historyForwardAction.setIconVisibleInMenu(False)
        self.m_historyForwardAction.setIcon(QIcon(":go-next.png"))
        self.m_historyForwardAction.triggered.connect(
            lambda: self.m_tabWidget.triggerWebPageAction(QWebEnginePage.
                                                          Forward))
        navigationBar.addAction(self.m_historyForwardAction)

        self.m_stopReloadAction = QAction(self)
        self.m_stopReloadAction.triggered.connect(
            lambda: self.m_tabWidget.triggerWebPageAction(
                QWebEnginePage.WebAction(self.m_stopReloadAction.data())))
        navigationBar.addAction(self.m_stopReloadAction)
        navigationBar.addWidget(self.m_urlLineEdit)
        size = self.m_urlLineEdit.sizeHint().height()
        navigationBar.setIconSize(QSize(size, size))
        return navigationBar
Exemplo n.º 7
0
    def __init__(self, style='default'):
        super(QRibbonWindow, self).__init__()
        self.style = style
        self.setObjectName('QRibbonWindow')

        self.tabs = []
        self.groups = []

        # 设置样式
        self.default = default
        if self.style == 'default':
            _default = default.replace("{{margin}}", str(self.margin))
            self.setStyleSheet(_default + '\n' + self.styleSheet())
        # 去除右键菜单
        self.setContextMenuPolicy(Qt.NoContextMenu)
        # 添加工具栏
        toolBar = QToolBar(self)
        toolBar.setMouseTracking(True)
        self.ribbonWidget = QRibbonWidget(toolBar)
        toolBar.addWidget(self.ribbonWidget)
        toolBar.setAllowedAreas(Qt.NoToolBarArea)
        toolBar.setMovable(False)
        toolBar.setFloatable(False)
        self.addToolBar(toolBar)
        # 添加中心控件
        self.centralWidget = QWidget(self)
        self.centralWidget.setMouseTracking(True)
        self.centralWidget.setObjectName("centralWidget")
        self.setCentralWidget(self.centralWidget)
        # 安装时间过滤器
        self.installEventFilter(self)
        self.ribbonWidget.tabPanel.installEventFilter(self)
        self.minButton.installEventFilter(self)
        self.maxButton.installEventFilter(self)
        self.closeButton.installEventFilter(self)
        # 最小化、最大化、关闭按钮事件
        self.minButton.clicked.connect(self.showMinimized)
        self.maxButton.clicked.connect(self.toggle_max)
        self.closeButton.clicked.connect(self.close)
Exemplo n.º 8
0
    def initUI(self):
        self.tboard = Board(self)
        self.tboard.setDraught(self)
        self.setCentralWidget(self.tboard)

        mainMenu = self.menuBar()
        gameMenu = mainMenu.addMenu(" Game")

        resetAction = QAction("Reset", self)
        resetAction.setShortcut("Ctrl+R")

        pvp = QAction("Player vs Player", self)
        pvp.setShortcut("Ctrl+P")

        pve = QAction("Player vs Ai", self)
        pve.setShortcut("Ctrl+A")

        gameMenu.addAction(resetAction)
        gameMenu.addAction(pvp)
        gameMenu.addAction(pve)

        resetAction.triggered.connect(self.resetGame)
        pvp.triggered.connect(self.playerGame)
        pve.triggered.connect(self.aiGame)

        self.statusbar = self.statusBar()
        self.tboard.msg2Statusbar[str].connect(self.statusbar.showMessage)

        toolbar = QToolBar()
        toolbar.setAllowedAreas(Qt.RightToolBarArea)
        toolbar.setIconSize(QSize(40, 40))
        toolbar.setFloatable(False)
        toolbar.setMovable(False)

        magicWidget = QWidget()
        self.grid = QGridLayout()

        myFont = QFont()
        myFont.setBold(True)
        myFont.setPixelSize(15)

        self.playerLabel = QLabel("Player")
        self.playerLabel.setFont(myFont)
        self.playerTurn = self.turnLabel()

        self.opponentLabel = QLabel("Opponent")
        self.opponentLabel.setFont(myFont)
        self.opponentLabel.setContentsMargins(0, 30, 0, 0)
        self.opponentTurn = self.turnLabel()
        self.opponentTurn.setContentsMargins(0, 30, 0, 0)

        self.playerPawnLeft = QLabel(str(self.tboard.players[0].pawnLeft))
        self.opponentPawnLeft = QLabel(str(self.tboard.players[1].pawnLeft))

        self.playerPawnKilled = QLabel(str(self.tboard.players[0].pawnKilled))
        self.opponentPawnKilled = QLabel(str(
            self.tboard.players[1].pawnKilled))

        self.grid.addWidget(self.playerLabel, 0, 0)
        self.grid.addWidget(self.playerTurn, 0, 1)
        self.grid.addWidget(self.remainingLabel(), 1, 0)
        self.grid.addWidget(self.playerPawnLeft, 1, 1)
        self.grid.addWidget(self.killedLabel(), 2, 0)
        self.grid.addWidget(self.playerPawnKilled, 2, 1)

        self.grid.addWidget(self.opponentLabel, 3, 0)
        self.grid.addWidget(self.opponentTurn, 3, 1)
        self.grid.addWidget(self.remainingLabel(), 4, 0)
        self.grid.addWidget(self.opponentPawnLeft, 4, 1)
        self.grid.addWidget(self.killedLabel(), 5, 0)
        self.grid.addWidget(self.opponentPawnKilled, 5, 1)

        magicWidget.setLayout(self.grid)

        toolbar.addWidget(magicWidget)

        self.updateTurnLabel()

        self.addToolBar(Qt.RightToolBarArea, toolbar)

        self.resize(550, 400)
        self.center()
        self.setWindowTitle('Draught')
        self.show()
Exemplo n.º 9
0
class MainWindow(QMainWindow, Ui_MainWindow):
    """
    Main window class representing the main window of app.
    """
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setupUi(self)

        self.central_ide_widget = CentralIDEWidget(self)
        self.code_editor = self.central_ide_widget.code_editor_widget
        self.horizontal_layout.addWidget(self.central_ide_widget)
        self.vertical_layout.addLayout(self.horizontal_layout)

        self.bottom_tool_bar = QToolBar(self)
        self.bottom_tool_bar.setMovable(False)
        self.bottom_tool_bar.setAllowedAreas(Qt.BottomToolBarArea)
        self.addToolBar(Qt.BottomToolBarArea, self.bottom_tool_bar)
        self.bottom_tool_bar.addAction("bottom tool bar")

        self.statusbar_widget = StatusBarWidget(self.statusbar)
        self.statusbar.addPermanentWidget(self.statusbar_widget, 1)

        self.trigger_menu_actions()

    def trigger_menu_actions(self) -> None:
        """
        Trigger all actions in menu
        """
        self.actionNew.triggered.connect(self.new_file)
        self.actionOpen.triggered.connect(self.open_file)
        self.actionSave.triggered.connect(self.save_file)
        self.actionSave_as.triggered.connect(self.save_file_as)
        self.actionExit.triggered.connect(self.exit_application)

    def set_new_cursor_position(self, cursor: QTextCursor) -> None:
        """
        Set new cursor position in main status bar

        Args:
            cursor(QTextCursor): active cursor of code editor in active tab
        """
        self.statusbar_widget.set_line_and_column(
            cursor.block().blockNumber() + 1,
            cursor.positionInBlock() + 1)

    def new_file(self) -> None:
        """
        Create new tab / file
        """
        self.code_editor.new_file()

    def open_file(self) -> None:
        """
        Open file in new tab.
        """
        file_path, _ = QFileDialog.getOpenFileName(
            self, "Open file", ".",
            FILE_TYPES_SEPARATOR.join((PYTHON_FILES, ALL_FILES)))

        if not file_path:
            return
        try:
            self.code_editor.open_file(file_path)
        except PermissionError:
            #  TODO: logovani
            ErrorDialog("Permission error",
                        "Can't open this file: permission denied",
                        self).show()
        except FileNotFoundError:
            ErrorDialog("File not found",
                        "Can't open this file: file not found", self).show()
        except Exception:
            ErrorDialog("Unknown error", "Can't open this file: unknown error",
                        self).show()

    def save_file(self) -> None:
        """
        Save file in active tab.
        """
        if not self.code_editor.opened_tabs:
            return

        if not self.code_editor.is_file_saved():
            return self.save_file_as()

        try:
            self.code_editor.save_file()
        except PermissionError:
            ErrorDialog("Permission error",
                        "Can't save this file: permission denied",
                        self).show()
        except Exception as e:
            ErrorDialog("Unknown error", "Can't save this file: unknown error",
                        self).show()

    def save_file_as(self) -> None:
        """
        Save as file in active tab
        """
        if not self.code_editor.opened_tabs:
            return

        file_path, _ = QFileDialog.getSaveFileName(
            self, "Save file", ".",
            FILE_TYPES_SEPARATOR.join((PYTHON_FILES, ALL_FILES)))

        if not file_path:
            return

        try:
            self.code_editor.save_file(file_path)
        except PermissionError:
            ErrorDialog("Permission error",
                        "Can't save this file: permission denied",
                        self).show()
        except Exception:
            ErrorDialog("Unknown error", "Can't save this file: unknown error",
                        self).show()

    def exit_application(self) -> None:
        """
        Close app
        """
        self.close()
Exemplo n.º 10
0
    def setupTextActions(self):
        tb = QToolBar(self)
        tb.setWindowTitle("Format Actions")
        self.addToolBar(tb)

        menu = QMenu("F&ormat", self)
        self.menuBar().addMenu(menu)

        self.actionTextBold = QAction(QIcon.fromTheme(
            'format-text-bold', QIcon(rsrcPath + '/textbold.png')),
                                      "&Bold",
                                      self,
                                      priority=QAction.LowPriority,
                                      shortcut=Qt.CTRL + Qt.Key_B,
                                      triggered=self.textBold,
                                      checkable=True)
        bold = QFont()
        bold.setBold(True)
        self.actionTextBold.setFont(bold)
        tb.addAction(self.actionTextBold)
        menu.addAction(self.actionTextBold)

        self.actionTextItalic = QAction(QIcon.fromTheme(
            'format-text-italic', QIcon(rsrcPath + '/textitalic.png')),
                                        "&Italic",
                                        self,
                                        priority=QAction.LowPriority,
                                        shortcut=Qt.CTRL + Qt.Key_I,
                                        triggered=self.textItalic,
                                        checkable=True)
        italic = QFont()
        italic.setItalic(True)
        self.actionTextItalic.setFont(italic)
        tb.addAction(self.actionTextItalic)
        menu.addAction(self.actionTextItalic)

        self.actionTextUnderline = QAction(QIcon.fromTheme(
            'format-text-underline', QIcon(rsrcPath + '/textunder.png')),
                                           "&Underline",
                                           self,
                                           priority=QAction.LowPriority,
                                           shortcut=Qt.CTRL + Qt.Key_U,
                                           triggered=self.textUnderline,
                                           checkable=True)
        underline = QFont()
        underline.setUnderline(True)
        self.actionTextUnderline.setFont(underline)
        tb.addAction(self.actionTextUnderline)
        menu.addAction(self.actionTextUnderline)

        menu.addSeparator()

        grp = QActionGroup(self, triggered=self.textAlign)

        # Make sure the alignLeft is always left of the alignRight.
        if QApplication.isLeftToRight():
            self.actionAlignLeft = QAction(
                QIcon.fromTheme('format-justify-left',
                                QIcon(rsrcPath + '/textleft.png')), "&Left",
                grp)
            self.actionAlignCenter = QAction(
                QIcon.fromTheme('format-justify-center',
                                QIcon(rsrcPath + '/textcenter.png')),
                "C&enter", grp)
            self.actionAlignRight = QAction(
                QIcon.fromTheme('format-justify-right',
                                QIcon(rsrcPath + '/textright.png')), "&Right",
                grp)
        else:
            self.actionAlignRight = QAction(
                QIcon.fromTheme('format-justify-right',
                                QIcon(rsrcPath + '/textright.png')), "&Right",
                grp)
            self.actionAlignCenter = QAction(
                QIcon.fromTheme('format-justify-center',
                                QIcon(rsrcPath + '/textcenter.png')),
                "C&enter", grp)
            self.actionAlignLeft = QAction(
                QIcon.fromTheme('format-justify-left',
                                QIcon(rsrcPath + '/textleft.png')), "&Left",
                grp)

        self.actionAlignJustify = QAction(
            QIcon.fromTheme('format-justify-fill',
                            QIcon(rsrcPath + '/textjustify.png')), "&Justify",
            grp)

        self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L)
        self.actionAlignLeft.setCheckable(True)
        self.actionAlignLeft.setPriority(QAction.LowPriority)

        self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E)
        self.actionAlignCenter.setCheckable(True)
        self.actionAlignCenter.setPriority(QAction.LowPriority)

        self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R)
        self.actionAlignRight.setCheckable(True)
        self.actionAlignRight.setPriority(QAction.LowPriority)

        self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J)
        self.actionAlignJustify.setCheckable(True)
        self.actionAlignJustify.setPriority(QAction.LowPriority)

        tb.addActions(grp.actions())
        menu.addActions(grp.actions())
        menu.addSeparator()

        pix = QPixmap(16, 16)
        pix.fill(Qt.black)
        self.actionTextColor = QAction(QIcon(pix),
                                       "&Color...",
                                       self,
                                       triggered=self.textColor)
        tb.addAction(self.actionTextColor)
        menu.addAction(self.actionTextColor)

        tb = QToolBar(self)
        tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea)
        tb.setWindowTitle("Format Actions")
        self.addToolBarBreak(Qt.TopToolBarArea)
        self.addToolBar(tb)

        comboStyle = QComboBox(tb)
        tb.addWidget(comboStyle)
        comboStyle.addItem("Standard")
        comboStyle.addItem("Bullet List (Disc)")
        comboStyle.addItem("Bullet List (Circle)")
        comboStyle.addItem("Bullet List (Square)")
        comboStyle.addItem("Ordered List (Decimal)")
        comboStyle.addItem("Ordered List (Alpha lower)")
        comboStyle.addItem("Ordered List (Alpha upper)")
        comboStyle.addItem("Ordered List (Roman lower)")
        comboStyle.addItem("Ordered List (Roman upper)")
        comboStyle.activated.connect(self.textStyle)

        self.comboFont = QFontComboBox(tb)
        tb.addWidget(self.comboFont)
        self.comboFont.activated[str].connect(self.textFamily)

        self.comboSize = QComboBox(tb)
        self.comboSize.setObjectName("comboSize")
        tb.addWidget(self.comboSize)
        self.comboSize.setEditable(True)

        db = QFontDatabase()
        for size in db.standardSizes():
            self.comboSize.addItem("%s" % (size))

        self.comboSize.activated[str].connect(self.textSize)
        self.comboSize.setCurrentIndex(
            self.comboSize.findText("%s" % (QApplication.font().pointSize())))
Exemplo n.º 11
0
    def setupTextActions(self):
        tb = QToolBar(self)
        tb.setWindowTitle("Format Actions")
        self.addToolBar(tb)

        menu = QMenu("F&ormat", self)
        self.menuBar().addMenu(menu)

        self.actionTextBold = QAction(
                QIcon.fromTheme('format-text-bold',
                        QIcon(rsrcPath + '/textbold.png')),
                "&Bold", self, priority=QAction.LowPriority,
                shortcut=Qt.CTRL + Qt.Key_B, triggered=self.textBold,
                checkable=True)
        bold = QFont()
        bold.setBold(True)
        self.actionTextBold.setFont(bold)
        tb.addAction(self.actionTextBold)
        menu.addAction(self.actionTextBold)

        self.actionTextItalic = QAction(
                QIcon.fromTheme('format-text-italic',
                        QIcon(rsrcPath + '/textitalic.png')),
                "&Italic", self, priority=QAction.LowPriority,
                shortcut=Qt.CTRL + Qt.Key_I, triggered=self.textItalic,
                checkable=True)
        italic = QFont()
        italic.setItalic(True)
        self.actionTextItalic.setFont(italic)
        tb.addAction(self.actionTextItalic)
        menu.addAction(self.actionTextItalic)

        self.actionTextUnderline = QAction(
                QIcon.fromTheme('format-text-underline',
                        QIcon(rsrcPath + '/textunder.png')),
                "&Underline", self, priority=QAction.LowPriority,
                shortcut=Qt.CTRL + Qt.Key_U, triggered=self.textUnderline,
                checkable=True)
        underline = QFont()
        underline.setUnderline(True)
        self.actionTextUnderline.setFont(underline)
        tb.addAction(self.actionTextUnderline)
        menu.addAction(self.actionTextUnderline)

        menu.addSeparator()

        grp = QActionGroup(self, triggered=self.textAlign)

        # Make sure the alignLeft is always left of the alignRight.
        if QApplication.isLeftToRight():
            self.actionAlignLeft = QAction(
                    QIcon.fromTheme('format-justify-left',
                            QIcon(rsrcPath + '/textleft.png')),
                    "&Left", grp)
            self.actionAlignCenter = QAction(
                    QIcon.fromTheme('format-justify-center',
                            QIcon(rsrcPath + '/textcenter.png')),
                    "C&enter", grp)
            self.actionAlignRight = QAction(
                    QIcon.fromTheme('format-justify-right',
                            QIcon(rsrcPath + '/textright.png')),
                    "&Right", grp)
        else:
            self.actionAlignRight = QAction(
                    QIcon.fromTheme('format-justify-right',
                            QIcon(rsrcPath + '/textright.png')),
                    "&Right", grp)
            self.actionAlignCenter = QAction(
                    QIcon.fromTheme('format-justify-center',
                            QIcon(rsrcPath + '/textcenter.png')),
                    "C&enter", grp)
            self.actionAlignLeft = QAction(
                    QIcon.fromTheme('format-justify-left',
                            QIcon(rsrcPath + '/textleft.png')),
                    "&Left", grp)
 
        self.actionAlignJustify = QAction(
                QIcon.fromTheme('format-justify-fill',
                        QIcon(rsrcPath + '/textjustify.png')),
                "&Justify", grp)

        self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L)
        self.actionAlignLeft.setCheckable(True)
        self.actionAlignLeft.setPriority(QAction.LowPriority)

        self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E)
        self.actionAlignCenter.setCheckable(True)
        self.actionAlignCenter.setPriority(QAction.LowPriority)

        self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R)
        self.actionAlignRight.setCheckable(True)
        self.actionAlignRight.setPriority(QAction.LowPriority)

        self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J)
        self.actionAlignJustify.setCheckable(True)
        self.actionAlignJustify.setPriority(QAction.LowPriority)

        tb.addActions(grp.actions())
        menu.addActions(grp.actions())
        menu.addSeparator()

        pix = QPixmap(16, 16)
        pix.fill(Qt.black)
        self.actionTextColor = QAction(QIcon(pix), "&Color...", self,
                triggered=self.textColor)
        tb.addAction(self.actionTextColor)
        menu.addAction(self.actionTextColor)

        tb = QToolBar(self)
        tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea)
        tb.setWindowTitle("Format Actions")
        self.addToolBarBreak(Qt.TopToolBarArea)
        self.addToolBar(tb)

        comboStyle = QComboBox(tb)
        tb.addWidget(comboStyle)
        comboStyle.addItem("Standard")
        comboStyle.addItem("Bullet List (Disc)")
        comboStyle.addItem("Bullet List (Circle)")
        comboStyle.addItem("Bullet List (Square)")
        comboStyle.addItem("Ordered List (Decimal)")
        comboStyle.addItem("Ordered List (Alpha lower)")
        comboStyle.addItem("Ordered List (Alpha upper)")
        comboStyle.addItem("Ordered List (Roman lower)")
        comboStyle.addItem("Ordered List (Roman upper)")
        comboStyle.activated.connect(self.textStyle)

        self.comboFont = QFontComboBox(tb)
        tb.addWidget(self.comboFont)
        self.comboFont.activated[str].connect(self.textFamily)

        self.comboSize = QComboBox(tb)
        self.comboSize.setObjectName("comboSize")
        tb.addWidget(self.comboSize)
        self.comboSize.setEditable(True)

        db = QFontDatabase()
        for size in db.standardSizes():
            self.comboSize.addItem("%s" % (size))

        self.comboSize.activated[str].connect(self.textSize)
        self.comboSize.setCurrentIndex(
                self.comboSize.findText(
                        "%s" % (QApplication.font().pointSize())))
Exemplo n.º 12
0
class TfrmBase(QMainWindow, TScreenStates):

    recordCount = 0

    def __init__(self, parent=None):
        super(TfrmBase, self).__init__()

        self.FOnStateChange = self.onStateChange
        self.activeState = self.ssInactive
        self._defaultSettings()
        self._createWidgets()
        self._setEvents()

    def _defaultSettings(self):
        self.setObjectName("frmBase")
        self.resize(640, 480)
        self.setMinimumSize(QSize(640, 480))

    def _createWidgets(self):
        self._createLayout()
        self._createMenus()
        self._createToolBar()
        self._createStatusBar()
        self._createPages()
        self._setLayouts()

    def _createLayout(self):
        self.clientArea = QWidget()
        self.clientArea.setSizePolicy(
            QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
        self.clientArea.setMinimumSize(QSize(640, 400))
        self.clientArea.setBaseSize(QSize(640, 400))
        self.clientArea.setLayoutDirection(Qt.LeftToRight)
        self.clientArea.setObjectName("clientArea")
        self.gridLayout = QGridLayout(self.clientArea)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName("gridLayout")

    def _createMenus(self):
        # Create a Menu Bar
        self.mnMenu = self.menuBar()
        self.mnMenu.setObjectName("mnMenu")
        # Create all Top Menus
        self.mnApp = QMenu('&Aplicação')
        self.mnApp.setObjectName('mnApp')
        self.mnOpe = QMenu('&Operação')
        self.mnOpe.setObjectName("mnOperations")
        self.mnNav = QMenu('&Navegação')
        self.mnNav.setObjectName("mnNav")
        # Set Menus to MenuBar
        self.mnMenu.addMenu(self.mnNav)
        self.mnMenu.addMenu(self.mnOpe)
        self.mnMenu.addMenu(self.mnApp)
        # Crealte all Actions to Application Menu
        self._createAppActions()
        self._createOpeActions()
        self._setMenuActions()
        self.mnMenu.addAction(self.mnApp.menuAction())
        self.mnMenu.addAction(self.mnOpe.menuAction())
        self.mnMenu.addAction(self.mnNav.menuAction())
        self._settingActionsEvents()

    def _createAppActions(self):
        # Exit Program Action
        self.acExit = QAction(
            self.getIcon("./resources/exit.ico", QSize(32, 32)), '&Sair')
        self.acExit.setObjectName("acExit")
        self.acExit.setShortcut('Ctrl+Q')
        self.acExit.setStatusTip('Finalizar o Programa')
        self.acExit.triggered.connect(self.closeApp)

    def _createOpeActions(self):
        # Search Action
        self.acSearch = QAction(
            self.getIcon("./resources/Search.ico", QSize(32, 32)),
            '&Pesquisar')
        self.acSearch.setObjectName("acSearch")
        self.acSearch.setShortcut('F5,Ctrl+P')
        self.acSearch.setStatusTip(
            'Preenche o Filtro para Selecionar Registros')
        # List Action
        self.acList = QAction(
            self.getIcon("./resources/list.ico", QSize(32, 32)), '&Listar')
        self.acList.setShortcut('Ctrl+L')
        self.acList.setStatusTip('Listar todos os Registros')
        self.acList.setObjectName("acList")
        # Insert Action
        self.acInsert = QAction(
            self.getIcon("./resources/db_add.ico", QSize(32, 32)), '&Inserir')
        self.acInsert.setShortcut('F2,Ins')
        self.acInsert.setStatusTip('Incluir Novo Registros')
        self.acInsert.setObjectName("acInsert")
        # Update Action
        self.acUpdate = QAction(
            self.getIcon("./resources/db_update.ico", QSize(32, 32)),
            '&Editar')
        self.acUpdate.setShortcut('Ctrl+U')
        self.acUpdate.setStatusTip('Editar o Registro Atual')
        self.acUpdate.setObjectName("acUpdate")
        # Delete Action
        self.acDelete = QAction(
            self.getIcon("./resources/db_remove.ico", QSize(32, 32)),
            '&Excluir')
        self.acDelete.setShortcut('Ctrl+Del')
        self.acDelete.setStatusTip('Exclui o Registro Atual')
        self.acDelete.setObjectName("acDelete")
        # Save Action
        self.acSave = QAction(
            self.getIcon("./resources/db_commit.ico", QSize(32, 32)),
            '&Salvar')
        self.acSave.setShortcut('F10,Ctrl+S')
        self.acSave.setStatusTip('Salva as Alterações do Registro')
        self.acSave.setObjectName("acSave")
        # Cancel Action
        self.acCancel = QAction(
            self.getIcon("./resources/cancel.ico", QSize(32, 32)), '&Cancelar')
        self.acCancel.setShortcut('Esc')
        self.acCancel.setStatusTip('Cancela as Alterações do Registro')
        self.acCancel.setObjectName("acCancel")
        # First Action
        self.acFirst = QAction(
            self.getIcon("./resources/start.ico", QSize(32, 32)), '&Início')
        self.acFirst.setShortcut('Ctrl+Left')
        self.acFirst.setStatusTip('Vai para o Primeiro Registro')
        self.acFirst.setObjectName("acFirst")
        # Prior Action
        self.acPrior = QAction(
            self.getIcon("./resources/left.ico", QSize(32, 32)), '&Anterior')
        self.acPrior.setShortcut('Left')
        self.acPrior.setStatusTip('Vai para o Registro Anterior')
        self.acPrior.setObjectName("acPrior")
        # Next Action
        self.acNext = QAction(
            self.getIcon("./resources/right.ico", QSize(32, 32)), '&Próximo')
        self.acNext.setShortcut('Right')
        self.acNext.setStatusTip('Vai para o Próximo Registro')
        self.acNext.setObjectName("acNext")
        # Last Action
        self.acLast = QAction(
            self.getIcon("./resources/end.ico", QSize(32, 32)), '&Último')
        self.acLast.setShortcut('Ctrl+Right')
        self.acLast.setStatusTip('Vai para o Último Registro')
        self.acLast.setObjectName("acLast")
        # Form Title Action
        self.dcTitle = QAction()
        font = QFont()
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.dcTitle.setFont(font)
        self.dcTitle.setObjectName("dcTitle")

    def getIcon(self, res: str, size: QSize) -> QIcon:
        icon = QIcon()
        icon.addPixmap(
            QPixmap(res).scaled(size.width(), size.height(),
                                Qt.KeepAspectRatio), QIcon.Active, QIcon.On)
        return icon

    def _setMenuActions(self):
        # Set Menu Application Actions
        self.mnApp.addAction(self.acExit)
        # Set Menu Operations Actions
        self.mnOpe.addAction(self.acSearch)
        self.mnOpe.addAction(self.acList)
        self.mnOpe.addSeparator()
        self.mnOpe.addAction(self.acInsert)
        self.mnOpe.addAction(self.acUpdate)
        self.mnOpe.addAction(self.acDelete)
        self.mnOpe.addSeparator()
        self.mnOpe.addAction(self.acSave)
        self.mnOpe.addAction(self.acCancel)
        # Set Menu Navigation Actions
        self.mnNav.addAction(self.acFirst)
        self.mnNav.addAction(self.acPrior)
        self.mnNav.addAction(self.acNext)
        self.mnNav.addAction(self.acLast)

    def _settingActionsEvents(self):
        # Set Menu Operations Trigger onClick
        self.acSearch.triggered.connect(
            lambda: self.setFormStatus(self.ssSearch))
        self.acList.triggered.connect(
            lambda: self.setFormStatus(self.ssSearchAll))
        self.acInsert.triggered.connect(
            lambda: self.setFormStatus(self.ssInsert))
        self.acUpdate.triggered.connect(
            lambda: self.setFormStatus(self.ssUpdate))
        self.acDelete.triggered.connect(
            lambda: self.setFormStatus(self.ssDelete))
        self.acSave.triggered.connect(lambda: self.setFormStatus(self.ssPost))
        self.acCancel.triggered.connect(
            lambda: self.setFormStatus(self.ssCancel))
        # Set Menu Navigation Trigger onClick
        self.acFirst.triggered.connect(
            lambda: self.setFormStatus(self.ssFirst))
        self.acPrior.triggered.connect(
            lambda: self.setFormStatus(self.ssPrior))
        self.acNext.triggered.connect(lambda: self.setFormStatus(self.ssNext))
        self.acLast.triggered.connect(lambda: self.setFormStatus(self.ssLast))

    def _createToolBar(self):
        # Create a tbActions ToolBar
        self.tbActions = QToolBar()
        self.tbActions.setMinimumSize(QSize(300, 34))
        self.tbActions.setMaximumSize(QSize(16777215, 34))
        self.tbActions.setBaseSize(QSize(300, 34))
        self.tbActions.setAcceptDrops(False)
        self.tbActions.setToolTipDuration(3)
        self.tbActions.setAllowedAreas(Qt.TopToolBarArea)
        self.tbActions.setObjectName("tbActions")
        self.addToolBar(Qt.TopToolBarArea, self.tbActions)
        # Create a tbTitle ToolBar
        self.tbTitle = QToolBar()
        self.tbTitle.setMinimumSize(QSize(340, 34))
        self.tbTitle.setMaximumSize(QSize(16777215, 34))
        self.tbTitle.setBaseSize(QSize(341, 34))
        self.tbTitle.setAllowedAreas(Qt.TopToolBarArea)
        self.tbTitle.setToolButtonStyle(Qt.ToolButtonTextOnly)
        self.tbTitle.setFloatable(False)
        self.tbTitle.setObjectName("tbTitle")
        # self.tbTitle.setLabelAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self.addToolBar(Qt.TopToolBarArea, self.tbTitle)
        # Call Add Actions to ToolBar
        self._setToolBarActions()

    def _setToolBarActions(self):
        # Set ToolBar Actions
        self.tbActions.addAction(self.acSearch)
        self.tbActions.addAction(self.acInsert)
        self.tbActions.addAction(self.acUpdate)
        self.tbActions.addAction(self.acDelete)
        self.tbActions.addSeparator()
        self.tbActions.addAction(self.acSave)
        self.tbActions.addAction(self.acExit)
        self.tbTitle.addAction(self.dcTitle)

    def _createStatusBar(self):
        self.sbStatus = QStatusBar()
        self.sbStatus.setMaximumHeight(24)
        self.sbStatus.setObjectName("sbStatus")
        self.sbStatus.setStyleSheet("""
            .QLabel {
                background-color: #FFFFFF;
                color: #000000;
            }
        """)
        self.lbStatus = QLabel(self.sbStatus)
        self.lbStatus.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self.lbStatus.setText('Inactive')
        self.lbStatus.setMinimumSize(QSize(130, 15))
        self.lbStatus.setFrameShape(QFrame.Panel)
        self.lbStatus.setFrameShadow(QFrame.Sunken)
        self.sbStatus.addPermanentWidget(self.lbStatus)
        self.setStatusBar(self.sbStatus)

    def _createPages(self):
        self.tabMain = QTabWidget(self.clientArea)
        self.tabMain.setSizePolicy(
            QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
        self.tabMain.setTabPosition(QTabWidget.South)
        self.tabMain.setObjectName("tabMain")
        self.pgList = QWidget(self.tabMain)
        self.pgList.setObjectName("pgList")
        self.pgDetail = QWidget(self.tabMain)
        self.pgDetail.setObjectName("pgDetail")
        self.tabMain.addTab(self.pgList, "")
        self.tabMain.addTab(self.pgDetail, "")
        self._createPageListContent()

    def _createPageListContent(self):
        self.treeWidget = QTreeWidget(self.pgList)
        self.treeWidget.setSizePolicy(
            QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
        self.treeWidget.setFrameShape(QFrame.NoFrame)
        self.treeWidget.setFrameShadow(QFrame.Plain)
        self.treeWidget.setColumnCount(3)
        self.treeWidget.setObjectName("treeWidget")
        self.treeWidget.headerItem().setText(0, "Campo")
        self.treeWidget.headerItem().setText(1, "Campo")
        self.treeWidget.headerItem().setText(2, "Campo")
        self.treeWidget.setGeometry(QRect(0, 0, 640, 370))
        self.treeWidget.setMinimumSize(QSize(640, 370))
        self.tabMain.setCurrentIndex(0)

    def _setLayouts(self):
        self.gridLayout.addWidget(self.tabMain, 0,
                                  Qt.AlignBottom | Qt.AlignRight, 1, 1)
        self.setCentralWidget(self.clientArea)

    def translateForm(self):
        self._translate = QCoreApplication.translate
        self.setWindowTitle(
            self._translate("TfrmBase", "Tela de Básica de Cadastros"))
        self.mnApp.setTitle(self._translate("TfrmBase", "Aplicação"))
        self.mnOpe.setTitle(self._translate("TfrmBase", "Operações"))
        self.mnNav.setTitle(self._translate("TfrmBase", "Navegação"))
        self.sbStatus.setToolTip(self._translate("TfrmBase",
                                                 "Barra de Status"))
        self.tbActions.setWindowTitle(
            self._translate("TfrmBase", "Ferramentas"))
        self.tbActions.setToolTip(
            self._translate("TfrmBase", "Barra de Ferramentas"))
        self.tbTitle.setWindowTitle(self._translate("TfrmBase", "Descrição"))
        self.acExit.setText(self._translate("TfrmBase", "&Sair"))
        self.acExit.setToolTip(self._translate("TfrmBase", "Sair do Programa"))
        self.acSearch.setText(self._translate("TfrmBase", "&Pesquisar"))
        self.acSearch.setStatusTip(
            self._translate("TfrmBase", "Procurar Por um Registro"))
        self.acList.setText(self._translate("TfrmBase", "&Listar Todos"))
        self.acList.setStatusTip(
            self._translate("TfrmBase", "Lista todos os Registros"))
        self.acInsert.setText(self._translate("TfrmBase", "&Inserir"))
        self.acInsert.setStatusTip(
            self._translate("TfrmBase", "Adicionar Registro"))
        self.acUpdate.setText(self._translate("TfrmBase", "&Editar"))
        self.acUpdate.setStatusTip(
            self._translate("TfrmBase", "Editar Registro"))
        self.acDelete.setText(self._translate("TfrmBase", "E&xcluir"))
        self.acDelete.setStatusTip(
            self._translate("TfrmBase", "Excluir Registro"))
        self.acSave.setText(self._translate("TfrmBase", "&Salvar"))
        self.acSave.setToolTip(self._translate("TfrmBase", "Salvar Registro"))
        self.acCancel.setText(self._translate("TfrmBase", "&Cancelar"))
        self.acCancel.setToolTip(
            self._translate("TfrmBase", "Cencelar Alterações"))
        self.dcTitle.setText(
            self._translate("TfrmBase", "Título da Tela de Cadastros"))
        self.dcTitle.setToolTip(
            self._translate("TfrmBase", "Título da Tela de Cadastros"))
        self.tabMain.setTabText(
            self.tabMain.indexOf(self.pgList),
            self._translate("TfrmBase", "Lista dos Registros"))
        self.tabMain.setTabToolTip(
            self.tabMain.indexOf(self.pgList),
            self._translate("TfrmBase", "Listagem das Ferramentas"))
        self.tabMain.setTabText(
            self.tabMain.indexOf(self.pgDetail),
            self._translate("TfrmBase", "Detalhes do Registro Selecionando"))

    @property
    def activeState(self):
        return self._activeValue

    @property
    def activeStateColor(self):
        return self.activeValue['FG']

    @property
    def activeStateBackgroud(self):
        return self.activeValue['BG']

    @activeState.setter  # Seta a Propriedade _activeState
    def activeState(self, value: int):
        self.workValue = value
        self._activeState = value

    def setScreenState(self, stt: int):
        self.acExit.setEnabled(self.inBrowse(stt))
        # Set Menu Operations Actions
        self.acSearch.setEnabled((self.inBrowse(stt)
                                  or (self.recordCount == 0)))
        self.acList.setEnabled((self.inBrowse(stt) or (self.recordCount == 0)))
        self.acInsert.setEnabled(self.inBrowse(stt))
        self.acUpdate.setEnabled((self.inBrowse(stt)
                                  and (self.recordCount > 0)))
        self.acDelete.setEnabled((self.inBrowse(stt)
                                  and (self.recordCount > 0)))
        self.acSave.setEnabled(self.inUpdate(stt))
        self.acCancel.setEnabled(self.inUpdate(stt))
        # Set Menu Navigation Actions
        self.acFirst.setEnabled((self.inBrowse(stt)
                                 and (self.recordCount > 0)))
        self.acPrior.setEnabled((self.inBrowse(stt)
                                 and (self.recordCount > 0)))
        self.acNext.setEnabled((self.inBrowse(stt) and (self.recordCount > 0)))
        self.acLast.setEnabled((self.inBrowse(stt) and (self.recordCount > 0)))
        # Set tab Main if state in Browse enabled
        self.tabMain.setEnabled(self.inBrowse(stt))

    def _layoutWidgets(self):
        return (self.frmLayout.itemAt(i)
                for i in range(self.frmLayout.count()))

    def _getAllFields(self):
        arrFields = []
        for w in self._layoutWidgets():
            if (not (isinstance(w, QLabel))):
                arrFields.append(w)
        return arrFields

    def setEnableFields(self, enable: bool = True):
        # Enable All Fields
        for controls in self._layoutWidgets():
            QWidget(controls).setEnabled(enable)

    def clearFields(self):
        # cliar content of all fileds
        for controls in self._getAllFields():
            QWidget(controls).setText('')

    def setColorFields(self):
        # cliar content of all fileds
        style = ".QWidget { backgroud-color: " + self.activeStateBackgroud + "; }"
        for controls in self._getAllFields():
            QWidget(controls).setStyle(style)

    def showDataDetails(self):
        # move data of selected record to fileds
        if (self.tabMain.currentIndex() == 0):
            self.tabMain.setCurrentIndex(1)

    def filterRecord(self):
        raise NotImplementedError(500)

    def getFirstRecord(self):
        raise NotImplementedError(500)

    def getPriorRecord(self):
        raise NotImplementedError(500)

    def getNextRecord(self):
        raise NotImplementedError(500)

    def getLastRecord(self):
        raise NotImplementedError(500)

    def insertRecord(self):
        raise NotImplementedError(500)

    def deleteRecord(self):
        raise NotImplementedError(500)

    def updateRecord(self):
        raise NotImplementedError(500)

    def postRecord(self):
        raise NotImplementedError(500)

    def execOpertations(self, state: int):
        if ((state == self.ssFilter) or (state == self.ssSearchAll)):
            self.filterRecord()
        elif (state == self.ssFirst):
            self.getFirstRecord()
        elif (state == self.ssPrior):
            self.getPriorRecord()
        elif (state == self.ssNext):
            self.getNextRecord()
        elif (state == self.ssLast):
            self.getLastRecord()
        elif (state == self.ssInsert):
            self.insertRecord()
        elif (state == self.ssDelete):
            self.deleteRecord()
        elif (state == self.ssUpdate):
            self.updateRecord()
        elif (state == self.ssPost):
            self.postRecord()
        else:
            raise NotImplementedError(401, 'Operação não suportada')

    @pyqtSlot(int)
    def setFormStatus(self, state: int):
        if ((state == self.ssSearch) and (self.activeState != state)):
            self.clearFields()
            self.setColorFields()
            self.showDataDetails()

        if (self.activeState != state):
            self.activeState = state
            if (state == self.ssCancel):
                self.activeState = self.ssBrowse

    @pyqtSlot(int, int, dict, str)
    def onStateChange(self,
                      NewState: int,
                      OldState: int,
                      Result: dict = {},
                      Err: str = ''):
        try:
            # show screen state on status bar
            state = self.getStateProperties(NewState)
            style = '.QLabel { background-color: ' + state[
                'BG'] + '; color: ' + state['FG'] + '; }'
            self.sbStatus.setStyleSheet(style)
            self.lbStatus.setText(state['Descr'])

            # call operation into child screen
            self.execOpertations(NewState)
            # change buttons states
            self.setScreenState(NewState)
            # set result status code and result satatus Message
            self.setResultStatusCode = 200
            self.setResultStatusMessage = ''
        except Exception as e:
            self.ResultStatusCode = 200
            self.ResultStatusMessage = str(e)
            QMessageBox.critical(self, self.windowTitle(),
                                 self.ResultStatusMessage)
        return self.result

    @pyqtSlot()
    def tabMainChanged(self):
        self.sbStatus.showMessage('TabMain change tabIndex to (' +
                                  str(self.tabMain.currentIndex()) + ')!')
        if (self.tabMain.currentIndex() == 1):
            self.showDataDetails()

    @pyqtSlot()
    def InsertData(self):
        # self.sbStatus.showMessage('Prepare to insert data....')
        pass

    def _setEvents(self):
        self.tabMain.blockSignals(
            True)  # just for not showing the initial message
        self.tabMain.currentChanged.connect(self.tabMainChanged)  # changed!
        self.tabMain.blockSignals(False)  # wait signals now

    @pyqtSlot()
    def closeApp(self):
        self.close()
Exemplo n.º 13
0
    def initUI(self):
        ### Instantitate the board class
        self.tboard = Board(self)
        self.tboard.setDraught(self)
        self.setCentralWidget(self.tboard)

        ### Create the menu and action
        mainMenu = self.menuBar()
        gameMenu = mainMenu.addMenu(" Game")

        resetAction = QAction("Reset", self)
        resetAction.setShortcut("Ctrl+R")

        pvp = QAction("Player vs Player", self)
        pvp.setShortcut("Ctrl+P")

        pve = QAction("Player vs Ai", self)
        pve.setShortcut("Ctrl+A")

        gameMenu.addAction(resetAction)
        gameMenu.addAction(pvp)
        gameMenu.addAction(pve)

        resetAction.triggered.connect(self.resetGame)
        pvp.triggered.connect(self.playerGame)
        pve.triggered.connect(self.aiGame)

        ### Toolbar that will contain information about the game,
        toolbar = QToolBar()
        toolbar.setAllowedAreas(Qt.RightToolBarArea)
        toolbar.setIconSize(QSize(40, 40))
        toolbar.setFloatable(False)
        toolbar.setMovable(False)

        magicWidget = QWidget()
        self.grid = QGridLayout()

        myFont = QFont()
        myFont.setBold(True)
        myFont.setPixelSize(15)

        ### Label of both player
        self.playerLabel = QLabel("Player 1")
        self.playerLabel.setFont(myFont)
        self.playerTurn = self.turnLabel()

        self.opponentLabel = QLabel("Player 2")
        self.opponentLabel.setFont(myFont)
        self.opponentLabel.setContentsMargins(0, 30, 0, 0)
        self.opponentTurn = self.turnLabel()
        self.opponentTurn.setContentsMargins(0, 30, 0, 0)

        self.playerPawnLeft = QLabel(str(self.tboard.players[0].pawnLeft))
        self.opponentPawnLeft = QLabel(str(self.tboard.players[1].pawnLeft))

        self.playerPawnKilled = QLabel(str(self.tboard.players[0].pawnKilled))
        self.opponentPawnKilled = QLabel(str(
            self.tboard.players[1].pawnKilled))

        ### Putting all widget in grid
        self.grid.addWidget(self.playerLabel, 0, 0)
        self.grid.addWidget(self.playerTurn, 0, 1)
        self.grid.addWidget(self.remainingLabel(), 1, 0)
        self.grid.addWidget(self.playerPawnLeft, 1, 1)
        self.grid.addWidget(self.killedLabel(), 2, 0)
        self.grid.addWidget(self.playerPawnKilled, 2, 1)

        self.grid.addWidget(self.opponentLabel, 3, 0)
        self.grid.addWidget(self.opponentTurn, 3, 1)
        self.grid.addWidget(self.remainingLabel(), 4, 0)
        self.grid.addWidget(self.opponentPawnLeft, 4, 1)
        self.grid.addWidget(self.killedLabel(), 5, 0)
        self.grid.addWidget(self.opponentPawnKilled, 5, 1)

        magicWidget.setLayout(self.grid)
        ###Putting the grid in a toolbar
        toolbar.addWidget(magicWidget)

        ### Update the label every turn
        self.updateTurnLabel()

        self.addToolBar(Qt.RightToolBarArea, toolbar)

        self.resize(550, 400)
        self.center()
        self.setWindowTitle('Draught')
        self.show()