This commit is contained in:
Juan Linietsky 2015-12-14 10:25:19 -03:00
commit 4713bcccf3
7 changed files with 54 additions and 27 deletions

View file

@ -209,6 +209,15 @@ void ArrayPropertyEdit::edit(Object* p_obj,const StringName& p_prop,Variant::Typ
}
Node *ArrayPropertyEdit::get_node() {
Object *o = ObjectDB::get_instance(obj);
if (!o)
return NULL;
return o->cast_to<Node>();
}
void ArrayPropertyEdit::_bind_methods() {
ObjectTypeDB::bind_method(_MD("_set_size"),&ArrayPropertyEdit::_set_size);

View file

@ -30,6 +30,8 @@ public:
void edit(Object* p_obj, const StringName& p_prop, Variant::Type p_deftype);
Node *get_node();
ArrayPropertyEdit();
};

View file

@ -205,31 +205,36 @@ void EditorDirDialog::_bind_methods() {
EditorDirDialog::EditorDirDialog() {
updating=false;
set_title("Choose a Directory");
set_hide_on_ok(false);
tree = memnew( Tree );
add_child(tree);
set_child_rect(tree);
updating=false;
get_ok()->set_text("Choose");
set_hide_on_ok(false);
tree->connect("item_activated",this,"_ok");
makedir = add_button("Create Folder",OS::get_singleton()->get_swap_ok_cancel()?true:false,"makedir");
makedir->connect("pressed",this,"_make_dir");
makedialog = memnew( ConfirmationDialog );
makedialog->set_title("Create Folder");
add_child(makedialog);
VBoxContainer *makevb= memnew( VBoxContainer );
makedialog->add_child(makevb);
makedialog->set_child_rect(makevb);
makedirname = memnew( LineEdit );
makevb->add_margin_child("Name:",makedirname);
add_child(makedialog);
makedialog->register_text_enter(makedirname);
makedialog->connect("confirmed",this,"_make_dir_confirm");
mkdirerr = memnew( AcceptDialog );
mkdirerr->set_text("Could not create folder.");
add_child(mkdirerr);
get_ok()->set_text("Choose");
}

View file

@ -196,7 +196,11 @@ void EditorSubScene::_bind_methods() {
EditorSubScene::EditorSubScene() {
scene=NULL;
set_title("Select Sub-Scene..");
set_hide_on_ok(false);
VBoxContainer *vb = memnew( VBoxContainer );
add_child(vb);
set_child_rect(vb);
@ -211,9 +215,11 @@ EditorSubScene::EditorSubScene() {
hb->add_child(b);
b->connect("pressed",this,"_path_browse");
vb->add_margin_child("Scene Path:",hb);
tree = memnew( Tree );
tree->set_v_size_flags(SIZE_EXPAND_FILL);
vb->add_margin_child("Import From Node:",tree)->set_v_size_flags(SIZE_EXPAND_FILL);
vb->add_margin_child("Import From Node:",tree,true);
tree->connect("item_activated",this,"_ok");
file_dialog = memnew( EditorFileDialog );
List<String> extensions;
@ -228,8 +234,4 @@ EditorSubScene::EditorSubScene() {
add_child(file_dialog);
file_dialog->connect("file_selected",this,"_path_selected");
scene=NULL;
set_hide_on_ok(false);
}

View file

@ -915,15 +915,25 @@ void CustomPropertyEditor::_color_changed(const Color& p_color) {
void CustomPropertyEditor::_node_path_selected(NodePath p_path) {
if (owner && owner->is_type("Node")) {
if (owner) {
Node *node = owner->cast_to<Node>();
Node *tonode=node->get_node(p_path);
if (tonode) {
Node *node=NULL;
p_path=node->get_path_to(tonode);
if (owner->is_type("Node"))
node = owner->cast_to<Node>();
else if (owner->is_type("ArrayPropertyEdit"))
node = owner->cast_to<ArrayPropertyEdit>()->get_node();
if (!node) {
v=p_path;
emit_signal("variant_changed");
return;
}
Node *tonode=node->get_node(p_path);
if (tonode) {
p_path=node->get_path_to(tonode);
}
}
v=p_path;

View file

@ -36,12 +36,12 @@
void ReparentDialog::_notification(int p_what) {
if (p_what==NOTIFICATION_ENTER_TREE) {
if (p_what==NOTIFICATION_ENTER_TREE) {
connect("confirmed", this,"_reparent");
}
if (p_what==NOTIFICATION_EXIT_TREE) {
if (p_what==NOTIFICATION_EXIT_TREE) {
disconnect("confirmed", this,"_reparent");
}
@ -83,29 +83,29 @@ void ReparentDialog::_bind_methods() {
ReparentDialog::ReparentDialog() {
set_title("Reparent Node");
VBoxContainer *vbc = memnew( VBoxContainer );
add_child(vbc);
set_child_rect(vbc);
tree = memnew( SceneTreeEditor(false) );
tree->set_show_enabled_subscene(true);
vbc->add_margin_child("Reparent Location (Select new Parent):",tree,true);
tree->get_scene_tree()->connect("item_activated",this,"_reparent");
//Label *label = memnew( Label );
//label->set_pos( Point2( 15,8) );
//label->set_text("Reparent Location (Select new Parent):");
node_only = memnew( CheckButton );
add_child(node_only);
node_only->hide();
tree->set_show_enabled_subscene(true);
//vbc->add_margin_child("Options:",node_only);;
//cancel->connect("pressed", this,"_cancel");

View file

@ -928,7 +928,7 @@ void SceneTreeDialog::_cancel() {
void SceneTreeDialog::_select() {
if (tree->get_selected()) {
emit_signal("selected",tree->get_selected()->get_path());
emit_signal("selected",tree->get_selected()->get_path());
hide();
}
}
@ -939,7 +939,6 @@ void SceneTreeDialog::_bind_methods() {
ObjectTypeDB::bind_method("_cancel",&SceneTreeDialog::_cancel);
ADD_SIGNAL( MethodInfo("selected",PropertyInfo(Variant::NODE_PATH,"path")));
}
@ -951,7 +950,7 @@ SceneTreeDialog::SceneTreeDialog() {
add_child(tree);
set_child_rect(tree);
tree->get_scene_tree()->connect("item_activated",this,"_select");
}