class TexturePreviewer(AssetPreviewer): def createWidget(self, container): self.canvas = MOAIEditCanvas( container ) self.canvas.loadScript( _getModulePath('TexturePreview2.lua') ) return self.canvas def accept(self, assetNode): return assetNode.isType( 'texture' ) def onStart(self, assetNode): self.canvas.safeCall( 'show', assetNode.getPath() ) def onStop(self): self.canvas.safeCall('show',None)
class TexturePreviewer(AssetPreviewer): def createWidget(self, container): self.canvas = MOAIEditCanvas(container) self.canvas.loadScript(_getModulePath('TexturePreview2.lua')) return self.canvas def accept(self, assetNode): return assetNode.isType('texture') def onStart(self, assetNode): self.canvas.safeCall('show', assetNode.getPath()) def onStop(self): self.canvas.safeCall('show', None)
class Deck2DPreviewer(AssetPreviewer): def createWidget(self, container): self.canvas = MOAIEditCanvas(container) self.canvas.loadScript(_getModulePath('Deck2DPreview.lua')) return self.canvas def accept(self, assetNode): return assetNode.getType() in [ 'deck2d.quad', 'deck2d.stretchpatch', 'deck2d.quad_array', 'deck2d.tileset', 'deck2d.polygon', 'deck2d.mquad' ] def onStart(self, assetNode): self.canvas.safeCall('show', assetNode.getPath()) def onStop(self): self.canvas.safeCall('show', None)
class EffectPreviewer(AssetPreviewer): def createWidget(self, container): self.canvas = MOAIEditCanvas(container) self.canvas.loadScript( _getModulePath('EffectPreview.lua') ) return self.canvas def accept(self, assetNode): return assetNode.getType() in [ 'effect' ] def onStart(self, assetNode): atype = assetNode.getType() self.canvas.makeCurrent() self.canvas.safeCallMethod( 'preview', 'showEffect', assetNode.getPath() ) self.canvas.startUpdateTimer( 60 ) def onStop(self): self.canvas.stopUpdateTimer() self.canvas.safeCallMethod( 'preview', 'clearEffect' )
class EffectPreviewer(AssetPreviewer): def createWidget(self, container): self.canvas = MOAIEditCanvas(container) self.canvas.loadScript(_getModulePath('EffectPreview.lua')) return self.canvas def accept(self, assetNode): return assetNode.getType() in ['effect'] def onStart(self, assetNode): atype = assetNode.getType() self.canvas.makeCurrent() self.canvas.safeCallMethod('preview', 'showEffect', assetNode.getPath()) self.canvas.startUpdateTimer(60) def onStop(self): self.canvas.stopUpdateTimer() self.canvas.safeCallMethod('preview', 'clearEffect')
class Deck2DPreviewer(AssetPreviewer): def createWidget(self, container): self.canvas = MOAIEditCanvas( container ) self.canvas.loadScript( _getModulePath('Deck2DPreview.lua') ) return self.canvas def accept(self, assetNode): return assetNode.getType() in [ 'deck2d.quad', 'deck2d.stretchpatch', 'deck2d.quad_array', 'deck2d.tileset', 'deck2d.polygon', 'deck2d.mquad' ] def onStart(self, assetNode): self.canvas.safeCall( 'show', assetNode.getPath() ) def onStop(self): self.canvas.safeCall('show',None)
class TileMapEditor( SceneEditorModule ): name = 'tilemap_editor' dependency = [ 'mock' ] def onLoad( self ): self.viewSelectedOnly = True self.container = self.requestDockWindow( title = 'Tilemap' ) self.window = window = self.container.addWidgetFromFile( _getModulePath('TileMapEditor.ui') ) self.canvas = MOAIEditCanvas( window.containerCanvas ) self.canvas.loadScript( _getModulePath('TileMapEditor.lua'), { '_module': self } ) self.toolbarLayers = QtGui.QToolBar( window.containerLayers ) self.toolbarLayers.setOrientation( Qt.Horizontal ) self.toolbarLayers.setMaximumHeight( 20 ) self.toolbarMain = QtGui.QToolBar( window.containerCanvas ) self.toolbarMain.setOrientation( Qt.Horizontal ) # self.toolbarMain.setIconSize( 32 ) self.treeLayers = TileMapLayerTreeWidget( window.containerLayers, editable = True ) self.treeLayers.parentModule = self self.treeLayers.setSizePolicy( QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding ) self.listTerrain = TileMapTerrainList( window.containerLayers, editable = False, mode = 'list' ) self.listTerrain.parentModule = self self.listTerrain.setFixedHeight( 70 ) self.listTerrain.setSizePolicy( QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed ) self.listCodeTile = CodeTilesetList( window.containerLayers, editable = False, mode = 'list' ) self.listCodeTile.parentModule = self self.listCodeTile.setSizePolicy( QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding ) self.listCodeTile.hide() self.canvas.setSizePolicy( QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding ) canvasLayout = QtGui.QVBoxLayout( window.containerCanvas ) canvasLayout.setSpacing( 0 ) canvasLayout.setMargin( 0 ) layersLayout = QtGui.QVBoxLayout( window.containerLayers ) layersLayout.setSpacing( 0 ) layersLayout.setMargin( 0 ) canvasLayout.addWidget( self.canvas ) canvasLayout.addWidget( self.listTerrain ) canvasLayout.addWidget( self.listCodeTile ) canvasLayout.addWidget( self.toolbarMain ) layersLayout.addWidget( self.toolbarLayers ) layersLayout.addWidget( self.treeLayers ) self.addToolBar( 'tilemap_layers', self.toolbarLayers ) self.addToolBar( 'tilemap_main', self.toolbarMain ) self.addTool( 'tilemap_layers/add_layer', label = 'Add', icon = 'add' ) self.addTool( 'tilemap_layers/remove_layer', label = 'Remove', icon = 'remove' ) self.addTool( 'tilemap_layers/layer_up', label = 'up', icon = 'arrow-up' ) self.addTool( 'tilemap_layers/layer_down', label = 'down', icon = 'arrow-down' ) self.addTool( 'tilemap_layers/----' ) self.addTool( 'tilemap_layers/edit_property',label = 'edit', icon = 'settings' ) self.addTool( 'tilemap_layers/----' ) self.addTool( 'tilemap_layers/inc_subdiv', label = 'subD+' ) self.addTool( 'tilemap_layers/dec_subdiv', label = 'subD-' ) self.addTool( 'tilemap_layers/----' ) self.addTool( 'tilemap_layers/view_selected_only', label = 'View Selected Only', type='check' ) self.addTool( 'tilemap_main/tool_pen', widget = SceneToolButton( 'tilemap_pen', icon = 'tilemap/pen', label = 'Pen' ) ) self.addTool( 'tilemap_main/tool_terrain', widget = SceneToolButton( 'tilemap_terrain', icon = 'tilemap/terrain', label = 'Terrain' ) ) self.addTool( 'tilemap_main/tool_eraser', widget = SceneToolButton( 'tilemap_eraser', icon = 'tilemap/eraser', label = 'Eraser' ) ) self.addTool( 'tilemap_main/tool_fill', widget = SceneToolButton( 'tilemap_fill', icon = 'tilemap/fill', label = 'Fill' ) ) self.addTool( 'tilemap_main/----' ) self.addTool( 'tilemap_main/tool_random', label = 'Random', icon = 'tilemap/random', type = 'check' ) self.addTool( 'tilemap_main/----' ) self.addTool( 'tilemap_main/tool_clear', label = 'Clear', icon = 'tilemap/clear' ) signals.connect( 'selection.changed', self.onSceneSelectionChanged ) self.targetTileMap = None self.targetTileMapLayer = None def onStart( self ): self.container.show() self.container.setEnabled( False ) viewSelectedOnly = self.getConfig( 'view_selected_only', True ) self.findTool( 'tilemap_layers/view_selected_only' ).setValue( viewSelectedOnly ) self.setViewSelectedOnly( viewSelectedOnly ) def onStop( self ): self.setConfig( 'view_selected_only', self.viewSelectedOnly ) def onSetFocus( self ): self.getModule( 'scene_editor' ).setFocus() self.container.show() self.container.setFocus() def onSceneSelectionChanged( self, selection, key ): if key != 'scene': return #find animator component target = self.canvas.callMethod( 'editor', 'findTargetTileMap' ) self.setTargetTileMap( target ) def onLayerSelectionChanged( self, selection ): if selection: self.setTargetTileMapLayer( selection[0] ) else: self.setTargetTileMapLayer( None ) signals.emit( 'scene.update' ) def onTerrainSelectionChanged( self, selection ): if selection: self.canvas.callMethod( 'editor', 'setTerrainBrush', selection[0] ) self.changeSceneTool( 'tilemap_terrain' ) def onCodeTileSelectionChanged( self, selection ): if selection: self.canvas.callMethod( 'editor', 'selectCodeTile', selection[0] ) def setViewSelectedOnly( self, toggle ): self.viewSelectedOnly = toggle self.canvas.callMethod( 'editor', 'setViewSelectedOnly', self.viewSelectedOnly ) def clearTerrainSelection( self ): self.listTerrain.selectNode( None ) def setTargetTileMap( self, tileMap ): self.setTargetTileMapLayer( None ) self.canvas.callMethod( 'editor', 'setTargetTileMap', tileMap ) self.targetTileMap = tileMap if not self.targetTileMap: self.treeLayers.clear() self.container.setEnabled( False ) return self.container.setEnabled( True ) self.treeLayers.rebuild() layers = self.getLayers() if layers: self.treeLayers.selectNode( layers[0] ) def setTargetTileMapLayer( self, layer ): self.canvas.callMethod( 'editor', 'setTargetTileMapLayer', layer ) self.canvas.updateCanvas() self.targetTileMapLayer = layer if isMockInstance( layer, 'CodeTileMapLayer' ): self.listCodeTile.show() self.listTerrain.hide() self.canvas.hide() self.listCodeTile.rebuild() else: self.listCodeTile.hide() self.listTerrain.show() self.canvas.show() self.listTerrain.rebuild() def getTerrainTypeList( self ): if self.targetTileMapLayer: tileset = self.targetTileMapLayer.tileset brushTable = tileset.getTerrainBrushes( tileset ) return [ brush for brush in brushTable.values() ] return [] def getCodeTilesetList( self ): if self.targetTileMapLayer: tileset = self.targetTileMapLayer.tileset return [ key for key in tileset.nameToTile.values() ] return [] def getLayers( self ): if not self.targetTileMap: return [] layers = self.targetTileMap.getLayers( self.targetTileMap ) return [ layer for layer in layers.values() ] def createLayer( self, tilesetNode ): layer = self.canvas.callMethod( 'editor', 'createTileMapLayer', tilesetNode.getPath() ) if layer: self.treeLayers.addNode( layer ) self.treeLayers.selectNode( layer ) self.treeLayers.editNode( layer ) def renameLayer( self, layer, name ): layer.name = name def listTileMapLayerTypes( self, typeId, context, option ): res = self.canvas.callMethod( 'editor', 'requestAvailTileMapLayerTypes' ) entries = [] for n in res.values(): entry = ( n, n, 'LayerTypes', 'obj' ) entries.append( entry ) return entries def changeEditTool( self, toolId ): self.canvas.callMethod( 'editor', 'changeEditTool', toolId ) if toolId == 'terrain': currentBrush = self.canvas.callMethod( 'editor', 'getTerrainBrush' ) self.listTerrain.selectNode( currentBrush ) def onTool( self, tool ): name = tool.name if name == 'add_layer': if not self.targetTileMap: return supportedTilesetTypes = self.targetTileMap.getSupportedTilesetType( self.targetTileMap ) requestSearchView( info = 'select tileset for new layer', context = 'asset', type = supportedTilesetTypes, multiple_selection = False, on_selection = self.createLayer, # on_search = self.listTileMapLayerTypes ) elif name == 'remove_layer': self.canvas.callMethod( 'editor', 'removeTileMapLayer' ) self.treeLayers.rebuild() elif name == 'layer_up': self.canvas.callMethod( 'editor', 'moveTileMapLayerUp' ) self.treeLayers.rebuild() elif name == 'layer_down': self.canvas.callMethod( 'editor', 'moveTileMapLayerDown' ) self.treeLayers.rebuild() elif name == 'tool_clear': self.canvas.callMethod( 'editor', 'clearLayer' ) elif name == 'tool_random': self.canvas.callMethod( 'editor', 'toggleToolRandom', tool.getValue() ) elif name == 'inc_subdiv': if self.targetTileMapLayer: self.canvas.callMethod( 'editor', 'incSubDivision' ) self.treeLayers.refreshNodeContent( self.targetTileMapLayer ) elif name == 'dec_subdiv': if self.targetTileMapLayer: self.canvas.callMethod( 'editor', 'decSubDivision' ) self.treeLayers.refreshNodeContent( self.targetTileMapLayer ) elif name == 'view_selected_only': self.setViewSelectedOnly( tool.getValue() ) elif name == 'edit_property': if self.targetTileMapLayer: self.editLayerProperty( self.targetTileMapLayer ) def editLayerProperty( self, layer ): requestProperty( 'Edit TileMapLayer: ' + layer.name , layer, cancel_button = False ) self.treeLayers.refreshNodeContent( layer )