Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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' )
Пример #5
0
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')
Пример #6
0
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)
Пример #7
0
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 )