Пример #1
0
    def showImageDialog(self, callBack):
        fname, _ = QtGui.QFileDialog.getOpenFileName(
            self,
            localizer.translate(
                'classSettingsWidget', 'chooseBackground'),
            '~', localizer.translate(
                'classSettingsWidget', 'chooseBackgroundFiles')
            )

        if (len(fname) != 0):
            callBack(fname)
Пример #2
0
    def showMusicDialog(self, callBack):
        fname, _ = QtGui.QFileDialog.getOpenFileName(
            self,
            localizer.translate(
                'classSettingsWidget', 'showMusicDialogChoose'),
            '~', localizer.translate(
                'classSettingsWidget', 'showMusicDialogFiles')
            )

        if (len(fname) != 0):
            self.musicTextEdit.setText(fname.split("/")[-1])
            callBack(fname)
Пример #3
0
    def setItemUseType(self, typeIndex):
        self.useTypeCombo.setCurrentIndex(typeIndex)

        self.updateUseTargetCombobox(typeIndex, self.useTargetCombo)

        # Show extra options when selecting use on other object
        if (typeIndex == 1):
            self.useConsumeCheckbox.setText(
                localizer.translate(
                    'classSettingsWidget', 'vanishDuringUse')
            )
            self.useConsumeCheckbox.show()
            self.outcomeLabel.show()
            self.outcomeCombobox.show()
        else:
            self.useConsumeCheckbox.hide()
            self.outcomeLabel.hide()
            self.outcomeCombobox.hide()

        # When no use, hide and clear elements
        if (typeIndex == 0):
            self.useTargetCombo.hide()
            self.useTextLabel.hide()
            self.useTextEdit.hide()
            self.useTextEdit.clear()
            self.changeUseText()
            self.allTextsButton.hide()

            self.currentObject.clearTarget()
        else:
            self.useTargetCombo.show()
            self.useTextLabel.show()
            self.useTextEdit.show()
            self.allTextsButton.show()
Пример #4
0
 def updateOutcomeCombobox(self):
     self.updateItemCombobox(
         self.outcomeCombobox, localizer.translate(
             'classSettingsWidget', 'notSelected'),
         ("object", "item"), ("object", "item"),
         noChoiceMethod=self.clearOutcome,
         connectTo=self.changeOutcome)
Пример #5
0
    def __init__(self, parent=None):
        super(SettingsWidget, self).__init__(parent)

        self.currentObject = None
        self.lastObjectType = None

       ## TODO: change to translation file
        self.useTypes = {
            0: localizer.translate('classSettingsWidget', 'noUse'),
            1: localizer.translate('classSettingsWidget', 'useToOtherObject'),
            2: localizer.translate('classSettingsWidget', 'openSth'),
            3: localizer.translate('classSettingsWidget', 'putSmwh'),
            4: localizer.translate('classSettingsWidget', 'deleteObstacle')
        }

        self.fadeTypes = {0: localizer.translate(
            'classSettingsWidget', 'instantly'), 1: localizer.translate(
            'classSettingsWidget', 'fade')}

        self.layout = QtGui.QVBoxLayout()
        self.setLayout(self.layout)

        self.setSizePolicy(QtGui.QSizePolicy(
            QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed))

        self.editor = parent
        self.imageCache = ImageCache()

        self.createOptionFields()
Пример #6
0
    def __init__(self, titleLabelText, nameLabelText, canBeLocked=False, lockedText=None, parent=None):
        super(ObjectImageSettings, self).__init__(parent)

        self.layout = QtGui.QVBoxLayout()
        self.setLayout(self.layout)

        self.parent = parent

        self.labelLine = self.parent.createSeparator()
        self.titleLabel = QtGui.QLabel(titleLabelText)
        self.nameLabel = QtGui.QLabel(nameLabelText)
        self.nameEdit = QtGui.QLineEdit()
        self.nameEdit.focusOutEvent = lambda s: self.changeNameEdit()

        self.image = QtGui.QLabel(self)
        self.image.mousePressEvent = lambda s: self.parent.showImageDialog(
            lambda imagePath: self.changeImage(imagePath)
        )

        # self.clickLabel = QtGui.QLabel("Teksti klikatessa")
        self.clickLabel = QtGui.QLabel(localizer.translate("ObjectImageSettings", "textAsClicked"))
        self.clickEdit = QtGui.QTextEdit()
        self.clickEdit.setMaximumHeight(50)
        self.clickEdit.focusOutEvent = lambda s: self.changeClickEdit()

        self.layout.addWidget(self.labelLine)
        self.layout.addWidget(self.titleLabel)

        self.canBeLocked = canBeLocked
        if self.canBeLocked:
            # TODO: Texts need to be set from outside
            self.lockedCheckbox = QtGui.QCheckBox(lockedText)
            self.lockedCheckbox.clicked.connect(self.changeLocked)
            self.keyLabel = QtGui.QLabel(localizer.translate("ObjectImageSettings", "whatOpens"))
            self.keyCombo = self.parent.createCombobox()

            self.layout.addWidget(self.lockedCheckbox)
            self.layout.addWidget(self.keyLabel)
            self.layout.addWidget(self.keyCombo)

        self.layout.addWidget(self.nameLabel)
        self.layout.addWidget(self.nameEdit)
        self.layout.addWidget(self.image)
        self.layout.addWidget(self.clickLabel)
        self.layout.addWidget(self.clickEdit)
Пример #7
0
    def populateRoomCombobox(self, combobox, addChoice=True):
        if (addChoice):
            imgPixmap = self.imageCache.createPixmap(self.editor.newIconPath)
            combobox.addItem(imgPixmap, localizer.translate(
                'classSettingsWidget', 'addRoom'))

        for room in self.editor.getRoomObjects():
            # TODO model to eliminate redundancy from getName/roomName patterns
            roomName = room.getName()
            if not (roomName):
                roomName = localizer.translate(
                    'classSettingsWidget', 'roomHasNoName')
            imgPixmap = self.imageCache.createPixmap(
                room.getRepresentingImage().getRepresentingImage()
                .absoluteImagePath)

            roomIcon = QtGui.QIcon(imgPixmap)
            combobox.addItem(roomIcon, roomName, userData=room)
Пример #8
0
 def updateComboboxes(self, objectType):
     objectType = objectType.lower()
     if objectType == "item":
         self.parent.updateItemCombobox(
             self.keyCombo,
             localizer.translate("ObjectImageSettings", "keyWasNotSelected"),
             ("item",),
             ("item",),
             self.clearKey,
             self.changeKey,
         )
Пример #9
0
    def changeName(self, textEdit=None, gameObject=None):

        if not (gameObject):
            gameObject = self.currentObject

        if (textEdit):
            text = textEdit.text()
        else:
            text = self.objectNameEdit.text()

        if (len(text) == 0):
            text = localizer.translate(
                'classSettingsWidget', 'objectHasNoName')

        gameObject.setName(text)
        self.updateParent()
Пример #10
0
    def updateUseTargetCombobox(self, useType, combobox):
        if (useType == 0):
            objectTypes = ()
        elif (useType == 1):
            objectTypes = ("item", "object")
        elif (useType == 2):
            objectTypes = ("door", "container")
        elif (useType == 3):
            objectTypes = ("container",)
        elif (useType == 4):
            objectTypes = ("obstacle",)

        self.populateCombobox(
            objectTypes, combobox, localizer.translate(
                'classSettingsWidget', 'notSelected'),
            objectTypes, self.clearUseTarget)
Пример #11
0
    def setObjectName(self, gameObject=None, textStart="Object",
                      textEdit=None, overrideText=None):
        if not (gameObject):
            gameObject = self.currentObject

        if (overrideText):
            name = overrideText
        else:
            # Given image may be None
            try:
                name = gameObject.getName()
            except AttributeError:
                name = ""

            if (name is None):
                name = localizer.translate(
                    'classSettingsWidget', 'objectHasNoName')

        # If textEdit is defined, set its text instead
        if (textEdit):
            textEdit.setText(name)
        else:
            self.objectNameEdit.setText(name)
Пример #12
0
 def updateWhatComesCombo(self):
     self.updateItemCombobox(
         self.whatComesCombo, localizer.translate(
             'classSettingsWidget', 'noNothing'),
         ("item",), ("item",),
         connectTo=self.changeWhatComes)
Пример #13
0
 def updateObstacleBlocksCombo(self):
     self.updateItemCombobox(
         self.obstacleBlocksCombo, localizer.translate(
             'classSettingsWidget', 'noNothing'), ("door",), ("door",),
         noChoiceMethod=self.clearObstacleBlock,
         connectTo=self.changeObstacleBlock)
Пример #14
0
 def updateDoorTransitionCombo(self):
     self.updateItemCombobox(
         self.doorTransitionCombo, localizer.translate(
             'classSettingsWidget', 'notAnywhere'),
         "room", connectTo=self.changeDoorTransition)
Пример #15
0
    def populateCombobox(self, objectTypes, combobox, noChoiceText=None,
                         addChoices=None, noChoiceMethod=None):
        combobox.clear()

        itemCounter = 0

        # Add the given string as the first item
        if (noChoiceText):
            imgPixmap = self.imageCache.createPixmap(
                self.editor.noChoiceIconPath)
            combobox.addItem(imgPixmap, noChoiceText, userData=noChoiceMethod)
            itemCounter = 1

        # Add items to add given types of objects
        if (addChoices):
            imgPixmap = self.imageCache.createPixmap(self.editor.newIconPath)
            for choice in addChoices:
                combobox.addItem(
                    imgPixmap, localizer.translate(
                        'classSettingsWidget', 'addNewChoice'),
                    userData=choice)
                itemCounter += 1

        for objType in objectTypes:
            objRooms = self.editor.getObjectsByType(objType)

            # Combobox has rooms with their obstacles under them
            for room in objRooms:
                roomObject = room["room"]
                roomName = roomObject.getName()
                if not (roomName):
                    roomName = localizer.translate(
                        'classSettingsWidget', 'roomHasNoName')
                imgPixmap = self.imageCache.createPixmap(
                    roomObject.getRepresentingImage().getRepresentingImage()
                    .absoluteImagePath)

                roomIcon = QtGui.QIcon(imgPixmap)

                # Add room to the combobox and disallow choosing it
                combobox.addItem(roomIcon, roomName)
                combobox.setItemData(itemCounter, 0, QtCore.Qt.UserRole - 1)
                itemCounter += 1

                # TODO: Indendation of objects in the combobox
                # Add objects under the room
                for obj in room["objects"]:
                    # Don't display the triggering item itself
                    if (obj == self.currentObject):
                        continue
                    if (obj.getClassname() == "Text"):
                        continue

                    imageObject = obj.getRepresentingImage()\
                        .getRepresentingImage()
                    imgPixmap = self.imageCache.createPixmap(
                        imageObject.absoluteImagePath)
                    targetIcon = QtGui.QIcon(imgPixmap)

                    objectName = obj.getName()
                    if not (objectName):
                        objectName = localizer.translate(
                            'classSettingsWidget', 'objectHasNoName')
                    combobox.addItem(targetIcon, objectName, userData=obj)
                    itemCounter += 1
Пример #16
0
    def createOptionFields(self):
        # Name
        self.nameLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'name'))
        self.objectNameEdit = QtGui.QLineEdit()
        self.objectNameEdit.editingFinished.connect(self.changeName)

        # General image
        self.imgTextLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'image'))
        self.objectImage = QtGui.QLabel(self)
        self.objectImage.mousePressEvent =\
            lambda s: self.showImageDialog(self.changeObjectImage)

        self.useTextEdit = QtGui.QTextEdit()
        self.useTextEdit.setMaximumHeight(50)
        self.useTextEdit.focusOutEvent = lambda s: self.changeUseText()

        # Ending checkbox
        self.endingCheckbox = QtGui.QCheckBox()  # Set text afterwards
        self.endingCheckbox.setText(localizer.translate(
            'classSettingsWidget', 'gameEndsIfClicked'))
        self.endingCheckbox.stateChanged.connect(self.changeEndingCheckbox)

        # Music
        self.musicLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'music'))

        self.musicBtn = QtGui.QPushButton(localizer.translate(
            'classSettingsWidget', 'browse'), self)
        self.musicBtn.setToolTip(localizer.translate(
            'classSettingsWidget', 'chooseMusicFile'))
        self.musicBtn.resize(self.musicBtn.sizeHint())
        self.musicBtn.clicked.connect(
            lambda: self.showMusicDialog(self.changeMusic))

        self.musicTextEdit = QtGui.QLineEdit()
        self.musicTextEdit.setReadOnly(True)

        self.musicClear = QtGui.QPushButton(localizer.translate(
            'classSettingsWidget', 'noMusic'), self)
        self.musicClear.clicked.connect(self.clearMusic)

        # Where from dropdown box
        # self.whereFromLabel = QtGui.QLabel(
            # "Mistä kulkureiteistä tänne pääsee?")
        # TODO: whereFromCombo

        self.examineTextLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'textAsClicked'))
        self.examineTextEdit = QtGui.QTextEdit()
        self.examineTextEdit.setMaximumHeight(50)
        self.examineTextEdit.focusOutEvent = lambda s: self.changeExamineText()

        # Pickup text section
        self.pickupLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'picked'))
        self.pickupLabelLine = self.createSeparator()
        self.pickupLabelLine.setFrameStyle(
            QtGui.QFrame.HLine | QtGui.QFrame.Raised)
        self.pickupTextLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'textIfPicked'))

        self.pickupTextEdit = QtGui.QTextEdit()
        self.pickupTextEdit.setMaximumHeight(50)
        self.pickupTextEdit.focusOutEvent = lambda s: self.changePickupText()

        # Object usage
        self.useLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'usage'))
        self.useLabelLine = self.createSeparator()

        # Object type of usage
        self.useTypeCombo = QtGui.QComboBox(self)
        for i in self.useTypes:
            self.useTypeCombo.addItem(self.useTypes[i])
        self.useTypeCombo.activated.connect(self.changeItemUseType)

        self.useTextLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'textIfUsed'))

        # Use target
        self.useTargetCombo = self.createCombobox()
        self.updateUseTargetCombo()

        self.allTextsButton = QtGui.QPushButton(localizer.translate(
            'classSettingsWidget', 'theseAndOtherTexts'))
        self.allTextsButton.clicked.connect(self.showAllTexts)

        # Door widgets
        self.doorTransitionLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'whereItGoes'))
        self.doorTransitionCombo = self.createCombobox()
        self.updateDoorTransitionCombo()

        self.doorInitialStateLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'spaceAtStart'))
        self.doorInitialStateCombo = QtGui.QComboBox(self)
        self.doorInitialStateCombo.addItem(localizer.translate(
            'classSettingsWidget', 'shut'))
        self.doorInitialStateCombo.addItem(localizer.translate(
            'classSettingsWidget', 'open'))
        self.doorInitialStateCombo.activated.connect(
            lambda s: self.objectComboboxHandler(
                self.doorInitialStateCombo, self.changeDoorInitialState))

        self.openDoorImage = ObjectImageSettings(
            localizer.translate(
                'classSettingsWidget', 'openDoor'),
            localizer.translate('classSettingsWidget', 'openDoorName'),
            parent=self)
        self.closedDoorImage = ObjectImageSettings(
            localizer.translate(
                'classSettingsWidget', 'closedDoor'),
            localizer.translate(
                'classSettingsWidget', 'closedDoorName'),
            parent=self)
        self.lockedDoorImage = ObjectImageSettings(
            localizer.translate(
                'classSettingsWidget', 'lockedDoor'),
            localizer.translate(
                'classSettingsWidget', 'lockedDoorName'),
            True,
            localizer.translate('classSettingsWidget', 'locked'),
            parent=self)

        # Container widgets
        self.lockedContainerImage = ObjectImageSettings(
            localizer.translate(
                'classSettingsWidget', 'lockedContainer'),
            localizer.translate(
                'classSettingsWidget', 'lockedContainerName'),
            True,
            localizer.translate(
                'classSettingsWidget', 'locked'),
            parent=self)
        self.fullContainerImage = ObjectImageSettings(
            localizer.translate(
                'classSettingsWidget', 'openContainer'),
            localizer.translate(
                'classSettingsWidget', 'openContainerName'),
            parent=self)
        self.emptyContainerImage = ObjectImageSettings(
            localizer.translate(
                'classSettingsWidget', 'emptyContainer'),
            localizer.translate(
                'classSettingsWidget', 'emptyContainerName'),
            parent=self)

        # Obstacle widgets
        self.obstacleImage = ObjectImageSettings(
            None, localizer.translate(
                'classSettingsWidget', 'whatObstructs'),
            False, parent=self)
        self.obstacleBlocksLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'whatObstructs'))
        self.obstacleBlocksCombo = self.createCombobox()
        self.updateObstacleBlocksCombo()

        self.whatGoesLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'whatGoesToContainer'))
        self.whatGoesCombo = self.createCombobox()
        self.updateWhatGoesCombo()

        self.whatComesLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'whatComesFromContainer')
        )
        self.whatComesCombo = self.createCombobox()
        self.updateWhatComesCombo()

        self.useConsumeCheckbox = QtGui.QCheckBox()  # Set text afterwards
        self.useConsumeCheckbox.stateChanged.connect(self.changeUseConsume)

        self.outcomeLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'endResult')
        )
        self.outcomeCombobox = self.createCombobox()
        self.updateOutcomeCombobox()

        # Sequence
        self.sequenceTimeLabel = QtGui.QLabel(
            localizer.translate(
                'classSettingsWidget', 'imageShowTime'))
        self.sequenceTimeEdit = QtGui.QLineEdit()
        self.sequenceTimeEdit.setInputMask("9,9")
        self.sequenceTimeEdit.focusOutEvent =\
            lambda s: self.changeSequenceTime()

        self.sequenceFadeLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'fadeType'))
        self.sequenceFadeCombo = QtGui.QComboBox(self)
        for i in self.fadeTypes:
            self.sequenceFadeCombo.addItem(self.fadeTypes[i])
        self.sequenceFadeCombo.activated.connect(self.changeSequenceFadeCombo)

        # End
        self.textObjectTextLabel = QtGui.QLabel(localizer.translate(
            'classSettingsWidget', 'text'))
        self.textObjectTextEdit = QtGui.QLineEdit()
        self.textObjectTextEdit.focusOutEvent =\
            lambda s: self.changeTextObjectText()

        self.layout.addWidget(self.textObjectTextLabel)
        self.layout.addWidget(self.textObjectTextEdit)

        self.layout.addWidget(self.nameLabel)
        self.layout.addWidget(self.objectNameEdit)
        self.layout.addWidget(self.imgTextLabel)
        self.layout.addWidget(self.objectImage)

        self.layout.addWidget(self.musicLabel)
        self.layout.addWidget(self.musicTextEdit)
        self.layout.addWidget(self.musicBtn)
        self.layout.addWidget(self.musicClear)
        #self.layout.addWidget(self.whereFromLabel)

        self.layout.addWidget(self.endingCheckbox)

        self.layout.addWidget(self.examineTextLabel)
        self.layout.addWidget(self.examineTextEdit)
        self.layout.addWidget(self.pickupLabelLine)
        self.layout.addWidget(self.pickupLabel)
        self.layout.addWidget(self.pickupTextLabel)
        self.layout.addWidget(self.pickupTextEdit)

        self.layout.addWidget(self.useLabelLine)
        self.layout.addWidget(self.useLabel)
        self.layout.addWidget(self.useTypeCombo)
        self.layout.addWidget(self.useTargetCombo)

        self.layout.addWidget(self.useConsumeCheckbox)
        self.layout.addWidget(self.outcomeLabel)
        self.layout.addWidget(self.outcomeCombobox)

        self.layout.addWidget(self.useTextLabel)
        self.layout.addWidget(self.useTextEdit)
        self.layout.addWidget(self.allTextsButton)

        #self.layout.addWidget(self.doorTransitionLabelLine)
        self.layout.addWidget(self.doorTransitionLabel)
        self.layout.addWidget(self.doorTransitionCombo)

        self.layout.addWidget(self.doorInitialStateLabel)
        self.layout.addWidget(self.doorInitialStateCombo)

        self.layout.addWidget(self.openDoorImage)
        self.layout.addWidget(self.lockedDoorImage)
        self.layout.addWidget(self.closedDoorImage)

        self.layout.addWidget(self.whatGoesLabel)
        self.layout.addWidget(self.whatGoesCombo)
        self.layout.addWidget(self.whatComesLabel)
        self.layout.addWidget(self.whatComesCombo)

        self.layout.addWidget(self.fullContainerImage)
        self.layout.addWidget(self.lockedContainerImage)
        self.layout.addWidget(self.emptyContainerImage)

        self.layout.addWidget(self.obstacleBlocksLabel)
        self.layout.addWidget(self.obstacleBlocksCombo)
        self.layout.addWidget(self.obstacleImage)

        self.layout.addWidget(self.sequenceTimeLabel)
        self.layout.addWidget(self.sequenceTimeEdit)
        self.layout.addWidget(self.sequenceFadeLabel)
        self.layout.addWidget(self.sequenceFadeCombo)

        # Removebuttons
        self.removeObjectButton = QtGui.QPushButton(
            localizer.translate(
                'classSettingsWidget', 'removeObject'))
        self.layout.addWidget(self.removeObjectButton)
        self.removeObjectButton.clicked.connect(lambda: self.removeObject())
        self.removeViewButton = QtGui.QPushButton(
            localizer.translate(
                'classSettingsWidget', 'removeView'))
        self.layout.addWidget(self.removeViewButton)
        self.removeViewButton.clicked.connect(lambda: self.removeView())

        # Which widgets are shown with each object
        self.itemSettings = {
            "Room": [
                self.imgTextLabel,
                self.objectImage,
                self.nameLabel,
                self.objectNameEdit,
                self.musicLabel,
                self.musicTextEdit,
                self.musicBtn,
                self.musicClear,
                self.removeViewButton
                #self.whereFromLabel
                # TODO: doorCombo for "where from" values
            ],
            "Sequence": [
                self.nameLabel,
                self.objectNameEdit,
                self.musicLabel,
                self.musicTextEdit,
                self.musicBtn,
                self.musicClear,
                self.removeViewButton
            ],
            "SequenceImage": [
                self.imgTextLabel,
                self.objectImage,
                self.sequenceTimeLabel,
                self.sequenceTimeEdit,
                self.sequenceFadeLabel,
                self.sequenceFadeCombo,
                self.removeViewButton
            ],
            "End": [
                self.imgTextLabel,
                self.objectImage,
                self.nameLabel,
                self.objectNameEdit,
                self.musicLabel,
                self.musicTextEdit,
                self.musicBtn,
                self.musicClear,
            ],
            "Text": [
                self.textObjectTextLabel,
                self.textObjectTextEdit
            ],
            "BeginningImage": [
                self.imgTextLabel,
                self.objectImage,
            ],
            "JSONImage": [
                self.imgTextLabel,
                self.objectImage,
            ],
            "Start": [
                self.musicLabel,
                self.musicTextEdit,
                self.musicBtn,
                self.musicClear,
            ],
            "MenuImage": [
                self.imgTextLabel,
                self.objectImage,
            ],
            "Item": [
                self.nameLabel,
                self.objectNameEdit,
                self.imgTextLabel,
                self.objectImage,
                self.examineTextLabel,
                self.examineTextEdit,
                self.pickupLabelLine,
                self.pickupLabel,
                self.pickupTextLabel,
                self.pickupTextEdit,
                self.useLabelLine,
                self.useLabel,
                self.useTypeCombo,
                self.useTargetCombo,
                self.useTextLabel,
                self.useTextEdit,
                self.allTextsButton,
                self.useConsumeCheckbox,
                self.outcomeLabel,
                self.outcomeCombobox,
                self.removeObjectButton
            ],
            "Object": [
                self.nameLabel,
                self.objectNameEdit,
                self.imgTextLabel,
                self.objectImage,
                self.endingCheckbox,
                self.examineTextLabel,
                self.examineTextEdit,
                self.removeObjectButton
            ],
            "Door": [
                #self.doorTransitionLabelLine,
                self.doorTransitionLabel,
                self.doorTransitionCombo,

                self.doorInitialStateLabel,
                self.doorInitialStateCombo,

                self.openDoorImage,
                self.closedDoorImage,
                self.lockedDoorImage,
                self.removeObjectButton
            ],
            "Container": [
                self.lockedContainerImage,
                self.fullContainerImage,
                self.emptyContainerImage,

                self.whatGoesLabel,
                self.whatGoesCombo,
                self.whatComesLabel,
                self.whatComesCombo,
                self.removeObjectButton
            ],
            "Obstacle": [
                self.obstacleImage,
                self.obstacleBlocksLabel,
                self.obstacleBlocksCombo,
                self.removeObjectButton
            ]
        }

        # Hide every widget
        for key in self.itemSettings:
            for item in self.itemSettings[key]:
                item.hide()
Пример #17
0
 def updateUseTargetCombo(self):
     self.updateItemCombobox(
         self.useTargetCombo, localizer.translate(
             'classSettingsWidget', 'notSelected'),
         connectTo=self.changeUseTarget)
Пример #18
0
    def createOptionFields(self):
        # Name
        self.nameLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'name'))
        self.objectNameEdit = QtGui.QLineEdit()
        self.objectNameEdit.editingFinished.connect(self.changeName)

        # General image
        self.imgTextLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'image'))
        self.objectImage = QtGui.QLabel(self)
        self.objectImage.mousePressEvent =\
            lambda s: self.showImageDialog(self.changeObjectImage)

        self.useTextEdit = QtGui.QTextEdit()
        self.useTextEdit.setMaximumHeight(50)
        self.useTextEdit.focusOutEvent = lambda s: self.changeUseText()

        # Ending checkbox
        self.endingCheckbox = QtGui.QCheckBox()  # Set text afterwards
        self.endingCheckbox.setText(
            localizer.translate('classSettingsWidget', 'gameEndsIfClicked'))
        self.endingCheckbox.stateChanged.connect(self.changeEndingCheckbox)

        # Music
        self.musicLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'music'))

        self.musicBtn = QtGui.QPushButton(
            localizer.translate('classSettingsWidget', 'browse'), self)
        self.musicBtn.setToolTip(
            localizer.translate('classSettingsWidget', 'chooseMusicFile'))
        self.musicBtn.resize(self.musicBtn.sizeHint())
        self.musicBtn.clicked.connect(
            lambda: self.showMusicDialog(self.changeMusic))

        self.musicTextEdit = QtGui.QLineEdit()
        self.musicTextEdit.setReadOnly(True)

        self.musicClear = QtGui.QPushButton(
            localizer.translate('classSettingsWidget', 'noMusic'), self)
        self.musicClear.clicked.connect(self.clearMusic)

        # Where from dropdown box
        # self.whereFromLabel = QtGui.QLabel(
        # "Mistä kulkureiteistä tänne pääsee?")
        # TODO: whereFromCombo

        self.examineTextLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'textAsClicked'))
        self.examineTextEdit = QtGui.QTextEdit()
        self.examineTextEdit.setMaximumHeight(50)
        self.examineTextEdit.focusOutEvent = lambda s: self.changeExamineText()

        # Pickup text section
        self.pickupLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'picked'))
        self.pickupLabelLine = self.createSeparator()
        self.pickupLabelLine.setFrameStyle(QtGui.QFrame.HLine
                                           | QtGui.QFrame.Raised)
        self.pickupTextLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'textIfPicked'))

        self.pickupTextEdit = QtGui.QTextEdit()
        self.pickupTextEdit.setMaximumHeight(50)
        self.pickupTextEdit.focusOutEvent = lambda s: self.changePickupText()

        # Object usage
        self.useLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'usage'))
        self.useLabelLine = self.createSeparator()

        # Object type of usage
        self.useTypeCombo = QtGui.QComboBox(self)
        for i in self.useTypes:
            self.useTypeCombo.addItem(self.useTypes[i])
        self.useTypeCombo.activated.connect(self.changeItemUseType)

        self.useTextLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'textIfUsed'))

        # Use target
        self.useTargetCombo = self.createCombobox()
        self.updateUseTargetCombo()

        self.allTextsButton = QtGui.QPushButton(
            localizer.translate('classSettingsWidget', 'theseAndOtherTexts'))
        self.allTextsButton.clicked.connect(self.showAllTexts)

        # Door widgets
        self.doorTransitionLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'whereItGoes'))
        self.doorTransitionCombo = self.createCombobox()
        self.updateDoorTransitionCombo()

        self.doorInitialStateLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'spaceAtStart'))
        self.doorInitialStateCombo = QtGui.QComboBox(self)
        self.doorInitialStateCombo.addItem(
            localizer.translate('classSettingsWidget', 'shut'))
        self.doorInitialStateCombo.addItem(
            localizer.translate('classSettingsWidget', 'open'))
        self.doorInitialStateCombo.activated.connect(
            lambda s: self.objectComboboxHandler(self.doorInitialStateCombo,
                                                 self.changeDoorInitialState))

        self.openDoorImage = ObjectImageSettings(
            localizer.translate('classSettingsWidget', 'openDoor'),
            localizer.translate('classSettingsWidget', 'openDoorName'),
            parent=self)
        self.closedDoorImage = ObjectImageSettings(
            localizer.translate('classSettingsWidget', 'closedDoor'),
            localizer.translate('classSettingsWidget', 'closedDoorName'),
            parent=self)
        self.lockedDoorImage = ObjectImageSettings(
            localizer.translate('classSettingsWidget', 'lockedDoor'),
            localizer.translate('classSettingsWidget', 'lockedDoorName'),
            True,
            localizer.translate('classSettingsWidget', 'locked'),
            parent=self)

        # Container widgets
        self.lockedContainerImage = ObjectImageSettings(
            localizer.translate('classSettingsWidget', 'lockedContainer'),
            localizer.translate('classSettingsWidget', 'lockedContainerName'),
            True,
            localizer.translate('classSettingsWidget', 'locked'),
            parent=self)
        self.fullContainerImage = ObjectImageSettings(
            localizer.translate('classSettingsWidget', 'openContainer'),
            localizer.translate('classSettingsWidget', 'openContainerName'),
            parent=self)
        self.emptyContainerImage = ObjectImageSettings(
            localizer.translate('classSettingsWidget', 'emptyContainer'),
            localizer.translate('classSettingsWidget', 'emptyContainerName'),
            parent=self)

        # Obstacle widgets
        self.obstacleImage = ObjectImageSettings(None,
                                                 localizer.translate(
                                                     'classSettingsWidget',
                                                     'whatObstructs'),
                                                 False,
                                                 parent=self)
        self.obstacleBlocksLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'whatObstructs'))
        self.obstacleBlocksCombo = self.createCombobox()
        self.updateObstacleBlocksCombo()

        self.whatGoesLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'whatGoesToContainer'))
        self.whatGoesCombo = self.createCombobox()
        self.updateWhatGoesCombo()

        self.whatComesLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget',
                                'whatComesFromContainer'))
        self.whatComesCombo = self.createCombobox()
        self.updateWhatComesCombo()

        self.useConsumeCheckbox = QtGui.QCheckBox()  # Set text afterwards
        self.useConsumeCheckbox.stateChanged.connect(self.changeUseConsume)

        self.outcomeLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'endResult'))
        self.outcomeCombobox = self.createCombobox()
        self.updateOutcomeCombobox()

        # Sequence
        self.sequenceTimeLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'imageShowTime'))
        self.sequenceTimeEdit = QtGui.QLineEdit()
        self.sequenceTimeEdit.setInputMask("9,9")
        self.sequenceTimeEdit.focusOutEvent =\
            lambda s: self.changeSequenceTime()

        self.sequenceFadeLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'fadeType'))
        self.sequenceFadeCombo = QtGui.QComboBox(self)
        for i in self.fadeTypes:
            self.sequenceFadeCombo.addItem(self.fadeTypes[i])
        self.sequenceFadeCombo.activated.connect(self.changeSequenceFadeCombo)

        # End
        self.textObjectTextLabel = QtGui.QLabel(
            localizer.translate('classSettingsWidget', 'text'))
        self.textObjectTextEdit = QtGui.QLineEdit()
        self.textObjectTextEdit.focusOutEvent =\
            lambda s: self.changeTextObjectText()

        self.layout.addWidget(self.textObjectTextLabel)
        self.layout.addWidget(self.textObjectTextEdit)

        self.layout.addWidget(self.nameLabel)
        self.layout.addWidget(self.objectNameEdit)
        self.layout.addWidget(self.imgTextLabel)
        self.layout.addWidget(self.objectImage)

        self.layout.addWidget(self.musicLabel)
        self.layout.addWidget(self.musicTextEdit)
        self.layout.addWidget(self.musicBtn)
        self.layout.addWidget(self.musicClear)
        #self.layout.addWidget(self.whereFromLabel)

        self.layout.addWidget(self.endingCheckbox)

        self.layout.addWidget(self.examineTextLabel)
        self.layout.addWidget(self.examineTextEdit)
        self.layout.addWidget(self.pickupLabelLine)
        self.layout.addWidget(self.pickupLabel)
        self.layout.addWidget(self.pickupTextLabel)
        self.layout.addWidget(self.pickupTextEdit)

        self.layout.addWidget(self.useLabelLine)
        self.layout.addWidget(self.useLabel)
        self.layout.addWidget(self.useTypeCombo)
        self.layout.addWidget(self.useTargetCombo)

        self.layout.addWidget(self.useConsumeCheckbox)
        self.layout.addWidget(self.outcomeLabel)
        self.layout.addWidget(self.outcomeCombobox)

        self.layout.addWidget(self.useTextLabel)
        self.layout.addWidget(self.useTextEdit)
        self.layout.addWidget(self.allTextsButton)

        #self.layout.addWidget(self.doorTransitionLabelLine)
        self.layout.addWidget(self.doorTransitionLabel)
        self.layout.addWidget(self.doorTransitionCombo)

        self.layout.addWidget(self.doorInitialStateLabel)
        self.layout.addWidget(self.doorInitialStateCombo)

        self.layout.addWidget(self.openDoorImage)
        self.layout.addWidget(self.lockedDoorImage)
        self.layout.addWidget(self.closedDoorImage)

        self.layout.addWidget(self.whatGoesLabel)
        self.layout.addWidget(self.whatGoesCombo)
        self.layout.addWidget(self.whatComesLabel)
        self.layout.addWidget(self.whatComesCombo)

        self.layout.addWidget(self.fullContainerImage)
        self.layout.addWidget(self.lockedContainerImage)
        self.layout.addWidget(self.emptyContainerImage)

        self.layout.addWidget(self.obstacleBlocksLabel)
        self.layout.addWidget(self.obstacleBlocksCombo)
        self.layout.addWidget(self.obstacleImage)

        self.layout.addWidget(self.sequenceTimeLabel)
        self.layout.addWidget(self.sequenceTimeEdit)
        self.layout.addWidget(self.sequenceFadeLabel)
        self.layout.addWidget(self.sequenceFadeCombo)

        # Removebuttons
        self.removeObjectButton = QtGui.QPushButton(
            localizer.translate('classSettingsWidget', 'removeObject'))
        self.layout.addWidget(self.removeObjectButton)
        self.removeObjectButton.clicked.connect(lambda: self.removeObject())
        self.removeViewButton = QtGui.QPushButton(
            localizer.translate('classSettingsWidget', 'removeView'))
        self.layout.addWidget(self.removeViewButton)
        self.removeViewButton.clicked.connect(lambda: self.removeView())

        # Which widgets are shown with each object
        self.itemSettings = {
            "Room": [
                self.imgTextLabel, self.objectImage, self.nameLabel,
                self.objectNameEdit, self.musicLabel, self.musicTextEdit,
                self.musicBtn, self.musicClear, self.removeViewButton
                #self.whereFromLabel
                # TODO: doorCombo for "where from" values
            ],
            "Sequence": [
                self.nameLabel, self.objectNameEdit, self.musicLabel,
                self.musicTextEdit, self.musicBtn, self.musicClear,
                self.removeViewButton
            ],
            "SequenceImage": [
                self.imgTextLabel, self.objectImage, self.sequenceTimeLabel,
                self.sequenceTimeEdit, self.sequenceFadeLabel,
                self.sequenceFadeCombo, self.removeViewButton
            ],
            "End": [
                self.imgTextLabel,
                self.objectImage,
                self.nameLabel,
                self.objectNameEdit,
                self.musicLabel,
                self.musicTextEdit,
                self.musicBtn,
                self.musicClear,
            ],
            "Text": [self.textObjectTextLabel, self.textObjectTextEdit],
            "BeginningImage": [
                self.imgTextLabel,
                self.objectImage,
            ],
            "JSONImage": [
                self.imgTextLabel,
                self.objectImage,
            ],
            "Start": [
                self.musicLabel,
                self.musicTextEdit,
                self.musicBtn,
                self.musicClear,
            ],
            "MenuImage": [
                self.imgTextLabel,
                self.objectImage,
            ],
            "Item": [
                self.nameLabel, self.objectNameEdit, self.imgTextLabel,
                self.objectImage, self.examineTextLabel, self.examineTextEdit,
                self.pickupLabelLine, self.pickupLabel, self.pickupTextLabel,
                self.pickupTextEdit, self.useLabelLine, self.useLabel,
                self.useTypeCombo, self.useTargetCombo, self.useTextLabel,
                self.useTextEdit, self.allTextsButton, self.useConsumeCheckbox,
                self.outcomeLabel, self.outcomeCombobox,
                self.removeObjectButton
            ],
            "Object": [
                self.nameLabel, self.objectNameEdit, self.imgTextLabel,
                self.objectImage, self.endingCheckbox, self.examineTextLabel,
                self.examineTextEdit, self.removeObjectButton
            ],
            "Door": [
                #self.doorTransitionLabelLine,
                self.doorTransitionLabel,
                self.doorTransitionCombo,
                self.doorInitialStateLabel,
                self.doorInitialStateCombo,
                self.openDoorImage,
                self.closedDoorImage,
                self.lockedDoorImage,
                self.removeObjectButton
            ],
            "Container": [
                self.lockedContainerImage, self.fullContainerImage,
                self.emptyContainerImage, self.whatGoesLabel,
                self.whatGoesCombo, self.whatComesLabel, self.whatComesCombo,
                self.removeObjectButton
            ],
            "Obstacle": [
                self.obstacleImage, self.obstacleBlocksLabel,
                self.obstacleBlocksCombo, self.removeObjectButton
            ]
        }

        # Hide every widget
        for key in self.itemSettings:
            for item in self.itemSettings[key]:
                item.hide()