Spaces:
Running
Running
import bindAll from 'lodash.bindall'; | |
import PropTypes from 'prop-types'; | |
import React from 'react'; | |
import {defineMessages, injectIntl, intlShape} from 'react-intl'; | |
import VM from 'scratch-vm'; | |
import {getBackdropLibrary} from '../lib/libraries/tw-async-libraries'; | |
import backdropTags from '../lib/libraries/backdrop-tags'; | |
import LibraryComponent from '../components/library/library.jsx'; | |
const messages = defineMessages({ | |
libraryTitle: { | |
defaultMessage: 'Choose a Backdrop', | |
description: 'Heading for the backdrop library', | |
id: 'gui.costumeLibrary.chooseABackdrop' | |
} | |
}); | |
class BackdropLibrary extends React.Component { | |
constructor (props) { | |
super(props); | |
bindAll(this, [ | |
'handleItemSelect' | |
]); | |
} | |
handleItemSelect (item) { | |
const vmBackdrop = { | |
name: item.name, | |
rotationCenterX: item.rotationCenterX, | |
rotationCenterY: item.rotationCenterY, | |
bitmapResolution: item.bitmapResolution, | |
skinId: null | |
}; | |
if (item.fromPenguinModLibrary) { | |
vmBackdrop.fromPenguinModLibrary = true; | |
vmBackdrop.libraryId = item.libraryFilePage; | |
vmBackdrop.dataFormat = item.dataFormat; | |
} | |
// Do not switch to stage, just add the backdrop | |
this.props.vm.addBackdrop(item.md5ext, vmBackdrop); | |
} | |
render () { | |
return ( | |
<LibraryComponent | |
data={getBackdropLibrary()} | |
id="backdropLibrary" | |
actor="CostumeLibrary" | |
header={"Backdrops"} | |
tags={backdropTags} | |
title={this.props.intl.formatMessage(messages.libraryTitle)} | |
onItemSelected={this.handleItemSelect} | |
onRequestClose={this.props.onRequestClose} | |
/> | |
); | |
} | |
} | |
BackdropLibrary.propTypes = { | |
intl: intlShape.isRequired, | |
onRequestClose: PropTypes.func, | |
vm: PropTypes.instanceOf(VM).isRequired | |
}; | |
export default injectIntl(BackdropLibrary); | |