diff options
Diffstat (limited to 'editor/call_dialog.cpp')
-rw-r--r-- | editor/call_dialog.cpp | 342 |
1 files changed, 0 insertions, 342 deletions
diff --git a/editor/call_dialog.cpp b/editor/call_dialog.cpp deleted file mode 100644 index 32b9fc1254..0000000000 --- a/editor/call_dialog.cpp +++ /dev/null @@ -1,342 +0,0 @@ -/*************************************************************************/ -/* call_dialog.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "call_dialog.h" - -#if 0 -#include "class_db.h" -#include "print_string.h" -#include "scene/gui/label.h" - - -class CallDialogParams : public Object { - - GDCLASS( CallDialogParams, Object ); -public: - - bool _set(const StringName& p_name, const Variant& p_value) { - - values[p_name]=p_value; - return true; - } - - bool _get(const StringName& p_name,Variant &r_ret) const { - - if (values.has(p_name)) { - r_ret=values[p_name]; - return true; - } - return false; - } - - void _get_property_list( List<PropertyInfo> *p_list) const { - - for(int i=0;i<method.arguments.size();i++) - p_list->push_back(method.arguments[i]); - } - - MethodInfo method; - HashMap<String,Variant> values; - - CallDialogParams() {} -}; - - -void CallDialog::_notification(int p_what) { - - if (p_what==NOTIFICATION_READY) { - - call->connect("pressed", this,"_call"); - cancel->connect("pressed", this,"_cancel"); - //filter->get_path()->connect("text_changed", this,"_text_changed"); - _update_method_list(); - } - - if (p_what==NOTIFICATION_EXIT_TREE) { - - call->disconnect("pressed", this,"_call"); - cancel->disconnect("pressed", this,"_cancel"); - - //filter->get_path()->connect("text_changed", this,"_text_changed"); - _update_method_list(); - } - - if (p_what==NOTIFICATION_DRAW) { - - RID ci = get_canvas_item(); - get_stylebox("panel","PopupMenu")->draw(ci,Rect2(Point2(),get_size())); - } -} - - -void CallDialog::_call() { - - if (!tree->get_selected()) - return; - - TreeItem* item=tree->get_selected(); - ERR_FAIL_COND(!item); - int idx=item->get_metadata(0); - ERR_FAIL_INDEX(idx,methods.size()); - MethodInfo &m = methods[idx]; - - Variant args[VARIANT_ARG_MAX]; - - for(int i=0;i<VARIANT_ARG_MAX;i++) { - - if (i>=m.arguments.size()) - continue; - - if (call_params->values.has(m.arguments[i].name)) - args[i]=call_params->values[m.arguments[i].name]; - } - - Variant ret = object->call(m.name,args[0],args[1],args[2],args[3],args[4]); - if (ret.get_type()!=Variant::NIL) - return_value->set_text(ret); - else - return_value->set_text(""); -} - -void CallDialog::_cancel() { - - hide(); -} - - -void CallDialog::_item_selected() { - - TreeItem* item=tree->get_selected(); - ERR_FAIL_COND(!item); - - if (item->get_metadata(0).get_type()==Variant::NIL) { - - call->set_disabled(true); - return; - } - - call->set_disabled(false); - - int idx=item->get_metadata(0); - ERR_FAIL_INDEX(idx,methods.size()); - - MethodInfo &m = methods[idx]; - - call_params->values.clear(); - call_params->method=m; - - property_editor->edit(call_params); - property_editor->update_tree(); - - -} - -void CallDialog::_update_method_list() { - - tree->clear(); - if (!object) - return; - - TreeItem *root = tree->create_item(); - - List<MethodInfo> method_list; - object->get_method_list(&method_list); - method_list.sort(); - methods.clear(); - - List<String> inheritance_list; - - String type = object->get_class(); - - while(type!="") { - inheritance_list.push_back( type ); - type=ClassDB::get_parent_class(type); - } - - TreeItem *selected_item=NULL; - - for(int i=0;i<inheritance_list.size();i++) { - - String type=inheritance_list[i]; - String parent_type=ClassDB::get_parent_class(type); - - TreeItem *type_item=NULL; - - List<MethodInfo>::Element *N,*E=method_list.front(); - - while(E) { - - N=E->next(); - - if (parent_type!="" && ClassDB::get_method(parent_type,E->get().name)!=NULL) { - E=N; - continue; - } - - if (!type_item) { - type_item=tree->create_item(root); - type_item->set_text(0,type); - if (has_icon(type,"EditorIcons")) - type_item->set_icon(0,get_icon(type,"EditorIcons")); - } - - TreeItem *method_item = tree->create_item(type_item); - method_item->set_text(0,E->get().name); - method_item->set_metadata(0,methods.size()); - if (E->get().name==selected) - selected_item=method_item; - methods.push_back( E->get() ); - - method_list.erase(E); - E=N; - } - } - - - - if (selected_item) - selected_item->select(0); -} - -void CallDialog::_bind_methods() { - - ClassDB::bind_method("_call",&CallDialog::_call); - ClassDB::bind_method("_cancel",&CallDialog::_cancel); - ClassDB::bind_method("_item_selected", &CallDialog::_item_selected); - -} - -void CallDialog::set_object(Object *p_object,StringName p_selected) { - - object=p_object; - selected=p_selected; - property_editor->edit(NULL); - call->set_disabled(true); - return_value->clear(); - - _update_method_list(); - method_label->set_text(vformat(TTR("Method List For '%s':"),p_object->get_class())); -} - -CallDialog::CallDialog() { - - object=NULL; - - call = memnew( Button ); - call->set_anchor( MARGIN_LEFT, ANCHOR_END ); - call->set_anchor( MARGIN_TOP, ANCHOR_END ); - call->set_anchor( MARGIN_RIGHT, ANCHOR_END ); - call->set_anchor( MARGIN_BOTTOM, ANCHOR_END ); - call->set_begin( Point2( -70, -29 ) ); - call->set_end( Point2( -15, -15 ) ); - call->set_text(TTR("Call")); - - add_child(call); - - cancel = memnew( Button ); - cancel->set_anchor( MARGIN_TOP, ANCHOR_END ); - cancel->set_anchor( MARGIN_BOTTOM, ANCHOR_END ); - cancel->set_begin( Point2( -15, 29 ) ); - cancel->set_end( Point2( 70, -15 ) ); - cancel->set_text(TTR("Close")); - - add_child(cancel); - - tree = memnew( Tree ); - - tree->set_anchor( MARGIN_BOTTOM, ANCHOR_END ); - tree->set_begin( Point2( 20,50 ) ); - tree->set_margin(MARGIN_BOTTOM, -44 ); - tree->set_margin(MARGIN_RIGHT, 0.5 ); - tree->set_select_mode( Tree::SELECT_ROW ); - add_child(tree); - - tree->connect("item_selected", this,"_item_selected"); - tree->set_hide_root(true); - - property_editor = memnew( PropertyEditor ); - - property_editor->set_anchor_and_margin( MARGIN_RIGHT, ANCHOR_END, -15 ); - property_editor->set_anchor_and_margin( MARGIN_TOP, ANCHOR_BEGIN, 50 ); - //property_editor->set_anchor_and_margin( MARGIN_LEFT, ANCHOR_RATIO, 0.55 ); - property_editor->set_anchor_and_margin( MARGIN_BOTTOM, ANCHOR_END, -90 ); - property_editor->get_scene_tree()->set_hide_root( true ); - property_editor->hide_top_label(); - - add_child(property_editor); - method_label = memnew(Label); - method_label->set_position(Point2( 15,25)); - method_label->set_text(TTR("Method List:")); - - add_child(method_label); - - Label *label = memnew( Label ); - //label->set_anchor_and_margin( MARGIN_LEFT, ANCHOR_RATIO, 0.53 ); - label->set_anchor_and_margin( MARGIN_TOP, ANCHOR_BEGIN, 25 ); - label->set_text(TTR("Arguments:")); - - add_child(label); - - return_label = memnew( Label ); - //return_label->set_anchor_and_margin( MARGIN_LEFT, ANCHOR_RATIO, 0.53 ); - return_label->set_anchor_and_margin( MARGIN_TOP, ANCHOR_END, -85 ); - return_label->set_text(TTR("Return:")); - - add_child(return_label); - - return_value = memnew( LineEdit ); - //return_value->set_anchor_and_margin( MARGIN_LEFT, ANCHOR_RATIO, 0.55 ); - return_value->set_anchor_and_margin( MARGIN_RIGHT, ANCHOR_END, -15 ); - return_value->set_anchor_and_margin( MARGIN_TOP, ANCHOR_END, -65 ); - - add_child(return_value); - - /* - label = memnew( Label ); - label->set_anchor( MARGIN_TOP, ANCHOR_END ); - label->set_anchor( MARGIN_BOTTOM, ANCHOR_END ); - - label->set_begin( Point2( 15,54) ); - label->set_end( Point2( 16,44) ); - label->set_text("Parameters:"); - - add_child(label); - */ - - - call_params = memnew( CallDialogParams ); - set_as_toplevel(true); -} - - -CallDialog::~CallDialog() -{ - memdelete(call_params); -} -#endif |