virtualx-engine/demos/plugins/custom_import_plugin/material_dialog.gd
Juan Linietsky 6fc1c3a4d1 Completed the support for plugins! It is not possible to add plugins.
Not all APIs are provided yet, please request whathever you are missing.
Some example plugins are provided in demos/plugins. Just copy them to a folder in your project named addons/ and then enable them from the project settings.
Have fun!
2016-02-27 23:12:27 -03:00

67 lines
2 KiB
GDScript

tool
extends ConfirmationDialog
var src_fs
var dst_fs
var import_plugin
func configure(p_import_plugin,path,metadata):
import_plugin=p_import_plugin
if (metadata):
# metadata from previous import exists, fill in fields
assert( metadata.get_source_count() > 0 )
# Always expand the source paths
var src_path = import_plugin.expand_source_path( metadata.get_source_path(0) )
get_node("src_file").set_text(src_path)
get_node("dst_file").set_text(path)
# Fill in from metadata options
get_node("use_red_anyway").set_pressed( metadata.get_option("use_red_anyway") )
func _ready():
src_fs = FileDialog.new()
src_fs.set_mode(FileDialog.MODE_OPEN_FILE)
src_fs.set_access(FileDialog.ACCESS_FILESYSTEM) #access all filesystem, not only res://
src_fs.add_filter("*.mtxt")
src_fs.connect("file_selected",self,"_on_src_selected")
add_child(src_fs)
dst_fs = EditorFileDialog.new()
dst_fs.set_mode(EditorFileDialog.MODE_SAVE_FILE)
dst_fs.add_filter("*.mtl") # Use binary extension always, text can't save metadata
dst_fs.connect("file_selected",self,"_on_dst_selected")
add_child(dst_fs)
set_hide_on_ok(true)
get_ok().set_text("Import!")
func _on_src_browse_pressed():
src_fs.popup_centered_ratio()
func _on_dst_browse_pressed():
dst_fs.popup_centered_ratio()
func _on_src_selected(path):
get_node("src_file").set_text(path)
func _on_dst_selected(path):
get_node("dst_file").set_text(path)
func _on_MaterialImport_confirmed():
# Create an import metadata
var imd = ResourceImportMetadata.new()
# Add the source files, always validate the source path
imd.add_source( import_plugin.validate_source_path( get_node("src_file").get_text() ))
# Add the options
imd.set_option( "use_red_anyway", get_node("use_red_anyway").is_pressed() )
# Perform regular import
var err = import_plugin.import( get_node("dst_file").get_text(), imd )
# Warn if error
if (err!=OK):
get_node("error").set_text("Error Importing!")
get_node("error").popup_centered_minsize()