File indexing completed on 2024-04-14 03:59:08
0001 # -*- coding: utf-8 -*- 0002 0003 """ 0004 Copyright (C) 2008-2016 Wolfgang Rohdewald <wolfgang@rohdewald.de> 0005 0006 partially based on C++ code from: 0007 Copyright (C) 2006 Mauricio Piacentini <mauricio@tabuleiro.com 0008 0009 SPDX-License-Identifier: GPL-2.0 0010 0011 """ 0012 0013 from common import Internal 0014 0015 from qt import Qt, QWidget, QSlider, QHBoxLayout, QLabel 0016 from qt import QVBoxLayout, QSpacerItem, QSizePolicy, QCheckBox 0017 0018 from kde import KConfigDialog 0019 from mi18n import i18n, i18nc 0020 0021 from statesaver import StateSaver 0022 from tilesetselector import TilesetSelector 0023 from backgroundselector import BackgroundSelector 0024 0025 __all__ = ['ConfigDialog'] 0026 0027 0028 class PlayConfigTab(QWidget): 0029 0030 """Display Config tab""" 0031 0032 def __init__(self, parent): 0033 super().__init__(parent) 0034 self.setupUi() 0035 0036 def setupUi(self): 0037 """layout the window""" 0038 self.setContentsMargins(0, 0, 0, 0) 0039 vlayout = QVBoxLayout(self) 0040 vlayout.setContentsMargins(0, 0, 0, 0) 0041 sliderLayout = QHBoxLayout() 0042 self.kcfg_showShadows = QCheckBox(i18n('Show tile shadows'), self) 0043 self.kcfg_showShadows.setObjectName('kcfg_showShadows') 0044 self.kcfg_rearrangeMelds = QCheckBox( 0045 i18n('Rearrange undisclosed tiles to melds'), self) 0046 self.kcfg_rearrangeMelds.setObjectName('kcfg_rearrangeMelds') 0047 self.kcfg_showOnlyPossibleActions = QCheckBox(i18n( 0048 'Show only possible actions')) 0049 self.kcfg_showOnlyPossibleActions.setObjectName( 0050 'kcfg_showOnlyPossibleActions') 0051 self.kcfg_propose = QCheckBox(i18n('Propose what to do')) 0052 self.kcfg_propose.setObjectName('kcfg_propose') 0053 self.kcfg_animationSpeed = QSlider(self) 0054 self.kcfg_animationSpeed.setObjectName('kcfg_animationSpeed') 0055 self.kcfg_animationSpeed.setOrientation(Qt.Horizontal) 0056 self.kcfg_animationSpeed.setSingleStep(1) 0057 lblSpeed = QLabel(i18n('Animation speed:')) 0058 lblSpeed.setBuddy(self.kcfg_animationSpeed) 0059 sliderLayout.addWidget(lblSpeed) 0060 sliderLayout.addWidget(self.kcfg_animationSpeed) 0061 self.kcfg_useSounds = QCheckBox(i18n('Use sounds if available'), self) 0062 self.kcfg_useSounds.setObjectName('kcfg_useSounds') 0063 self.kcfg_uploadVoice = QCheckBox(i18n( 0064 'Let others hear my voice'), self) 0065 self.kcfg_uploadVoice.setObjectName('kcfg_uploadVoice') 0066 pol = QSizePolicy() 0067 pol.setHorizontalPolicy(QSizePolicy.Expanding) 0068 pol.setVerticalPolicy(QSizePolicy.Expanding) 0069 spacerItem = QSpacerItem( 0070 20, 20, QSizePolicy.Minimum, QSizePolicy.Expanding) 0071 vlayout.addWidget(self.kcfg_showShadows) 0072 vlayout.addWidget(self.kcfg_rearrangeMelds) 0073 vlayout.addWidget(self.kcfg_showOnlyPossibleActions) 0074 vlayout.addWidget(self.kcfg_propose) 0075 vlayout.addWidget(self.kcfg_useSounds) 0076 vlayout.addWidget(self.kcfg_uploadVoice) 0077 vlayout.addLayout(sliderLayout) 0078 vlayout.addItem(spacerItem) 0079 self.setSizePolicy(pol) 0080 self.retranslateUi() 0081 0082 def retranslateUi(self): 0083 """translate to current language""" 0084 0085 0086 class ConfigDialog(KConfigDialog): # pylint: disable=too-many-public-methods 0087 0088 """configuration dialog with several pages""" 0089 0090 def __init__(self, parent, name): 0091 # pylint: disable=super-init-not-called 0092 KConfigDialog.__init__( 0093 self, parent, name, Internal.Preferences) 0094 StateSaver(self) 0095 self.pages = [ 0096 self.addPage( 0097 PlayConfigTab(self), 0098 i18nc('kajongg', 'Play'), "arrow-right"), 0099 self.addPage( 0100 TilesetSelector(self), 0101 i18n("Tiles"), "games-config-tiles"), 0102 self.addPage( 0103 BackgroundSelector(self), 0104 i18n("Backgrounds"), "games-config-background")] 0105 0106 def keyPressEvent(self, event): 0107 """The four tabs can be selected with CTRL-1 .. CTRL-4""" 0108 mod = event.modifiers() 0109 key = chr(event.key() % 128) 0110 if Qt.ControlModifier | mod and key in '123456789'[:len(self.pages)]: 0111 self.setCurrentPage(self.pages[int(key) - 1]) 0112 return 0113 KConfigDialog.keyPressEvent(self, event)