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)