Esempio n. 1
0
    def menuButtonEvent(self, listItem=None):
        if not self._menu:
            self.menuButtonClicked.emit(self)
            return
        # Import here to avoid circular import
        from TermTk.TTkWidgets.list_ import TTkList
        from TermTk.TTkWidgets.resizableframe import TTkResizableFrame

        # Stupid way to find out if I am a submenu
        isSubmenu = not self._border
        frameHeight = len(self._menu) + 2
        frameWidth = self.width()
        if frameHeight > 15: frameHeight = 15
        if frameWidth < 15: frameWidth = 15
        if isSubmenu:
            frame = TTkResizableFrame(layout=TTkHBoxLayout(),
                                      size=(frameWidth, frameHeight))
            pos = (self.width(), -1)
        else:
            frame = TTkResizableFrame(layout=TTkHBoxLayout(),
                                      size=(frameWidth, frameHeight),
                                      title=self.text,
                                      titleAlign=TTkK.LEFT_ALIGN)
            pos = self._menuOffset
        menuListWidget = _TTkMenuListWidget()
        listw = TTkList(parent=frame, listWidget=menuListWidget)
        # listw.textClicked.connect(self._menuCallback)
        # listw.textClicked.connect(self._menuCallback)
        # TTkLog.debug(f"{self._menu}")
        for item in self._menu:
            listw.addItem(item)
        TTkHelper.overlay(self, frame, pos[0], pos[1])
        listw.viewport().setFocus()
        self.update()
Esempio n. 2
0
 def clearFocus(self):
     # TTkLog.debug(f"clearFocus: {self._name} - {self._focus}")
     if not self._focus and self != TTkHelper.getFocus(): return
     TTkHelper.clearFocus()
     self._focus = False
     self.focusChanged.emit(self._focus)
     self.focusOutEvent()
     self.update(repaint=True, updateLayout=False)
Esempio n. 3
0
 def _colorClicked(self):
     colorPicker = TTkColorDialogPicker(pos=(3, 3),
                                        size=(75, 24),
                                        color=self._textColor,
                                        title="Test Color Picker",
                                        border=True)
     colorPicker.colorSelected.connect(self.setColor)
     colorPicker.colorSelected.connect(self.colorSelected.emit)
     TTkHelper.overlay(self, colorPicker, -1, -1)
Esempio n. 4
0
 def keyEvent(self, evt):
     if evt.type == TTkK.SpecialKey:
         if evt.key == TTkK.Key_Left:
             TTkHelper.removeOverlayAndChild(self)
             if self._previous:
                 self._previous.setFocus()
             return True
         elif evt.key == TTkK.Key_Right:
             if self._highlighted and \
                isinstance(self._highlighted,TTkMenuButton) and \
                self._highlighted._menu:
                 self._highlighted.menuButtonEvent()
             return True
     return TTkListWidget.keyEvent(self, evt)
Esempio n. 5
0
 def update(self, repaint=True, updateLayout=False, updateParent=False):
     if repaint:
         TTkHelper.addUpdateBuffer(self)
     TTkHelper.addUpdateWidget(self)
     if updateLayout and self.rootLayout() is not None:
         self.rootLayout().setGeometry(0, 0, self._width, self._height)
         self.layout().setGeometry(self._padl, self._padt,
                                   self._width - self._padl - self._padr,
                                   self._height - self._padt - self._padb)
     if updateParent and self._parent is not None:
         self._parent.update(updateLayout=True)
     if updateLayout and self.rootLayout() is not None:
         if self.rootLayout().update():
             self.layoutUpdated()
Esempio n. 6
0
    def loadTheme(theme):
        TTkTheme.hline     = theme['draw'].TTkTheme.hline
        TTkTheme.vline     = theme['draw'].TTkTheme.vline
        TTkTheme.box       = theme['draw'].TTkTheme.box
        TTkTheme.grid      = theme['draw'].TTkTheme.grid
        TTkTheme.buttonBox = theme['draw'].TTkTheme.buttonBox
        TTkTheme.hscroll   = theme['draw'].TTkTheme.hscroll
        TTkTheme.vscroll   = theme['draw'].TTkTheme.vscroll
        TTkTheme.tree      = theme['draw'].TTkTheme.tree
        TTkTheme.menuBar   = theme['draw'].TTkTheme.menuBar
        TTkTheme.tab       = theme['draw'].TTkTheme.tab
        TTkTheme.braille   = theme['draw'].TTkTheme.braille

        TTkTheme.fileIcon    = theme['file'].FileIcon
        TTkHelper.updateAll()
Esempio n. 7
0
 def __init__(self, *args, **kwargs):
     TTkAbstractListItem.__init__(self, *args, **kwargs)
     self._name = kwargs.get('name', 'TTkMenuButton')
     # signals
     self.menuButtonClicked = pyTTkSignal(TTkButton)
     self._color = kwargs.get('color', TTkCfg.theme.menuButtonColor)
     self._border = kwargs.get('border', TTkCfg.theme.menuButtonColor)
     self._borderColor = kwargs.get('borderColor',
                                    TTkCfg.theme.menuButtonBorderColor)
     self._menuOffset = kwargs.get('menuOffset', (-1, 0))
     self._shortcut = []
     self._menu = []
     while self.text.find('&') != -1:
         index = self.text.find('&')
         shortcut = self.text[index + 1]
         TTkHelper.addShortcut(self, shortcut)
         self._shortcut.append(index)
         self.text = self.text[:index] + self.text[index + 1:]
     txtlen = len(self.text)
     self.resize(txtlen, 1)
     self.setMinimumSize(txtlen + 2, 1)
     self.setMaximumSize(txtlen + 2, 1)
     self.listItemClicked.connect(self.menuButtonEvent)
Esempio n. 8
0
 def setFocus(self):
     # TTkLog.debug(f"setFocus: {self._name} - {self._focus}")
     if self._focus and self == TTkHelper.getFocus(): return
     tmp = TTkHelper.getFocus()
     if tmp == self: return
     if tmp is not None:
         tmp.clearFocus()
     #if not TTkHelper.isOverlay(self):
     #    TTkHelper.removeOverlay(refocus=False)
     TTkHelper.removeOverlayChild(self)
     TTkHelper.setFocus(self)
     self._focus = True
     self.focusChanged.emit(self._focus)
     self.focusInEvent()
Esempio n. 9
0
 def __init__(self, *args, **kwargs):
     TTkListWidget.__init__(self, *args, **kwargs)
     self._name = kwargs.get('name', '_TTkMenuListWidget')
     self._previous = kwargs.get('previous', TTkHelper.getFocus())
Esempio n. 10
0
 def _menuCallback(self, button):
     #self._id = self._list.index(label)
     TTkLog.debug(f"Bind Clicked {button.text}")
     self.menuButtonClicked.emit(button)
     TTkHelper.removeOverlay()
     self.update()
Esempio n. 11
0
 def close(self):
     if self._parent is not None and \
        self._parent.rootLayout() is not None:
         self._parent.rootLayout().removeWidget(self)
     TTkHelper.removeOverlayAndChild(self)