-wip on addon editor
-fixes instantiable subclasses not working, as reported in #3871
This commit is contained in:
parent
445d38b728
commit
210d332def
4 changed files with 121 additions and 0 deletions
|
@ -1712,6 +1712,8 @@ Error GDCompiler::_parse_class(GDScript *p_script,GDScript *p_owner,const GDPars
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
p_script->valid=true;
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
67
tools/editor/addon_editor_plugin.cpp
Normal file
67
tools/editor/addon_editor_plugin.cpp
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
#include "addon_editor_plugin.h"
|
||||||
|
#include "editor_node.h"
|
||||||
|
EditorAddonLibrary::EditorAddonLibrary() {
|
||||||
|
|
||||||
|
tabs = memnew( TabContainer );
|
||||||
|
tabs->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||||
|
add_child(tabs);
|
||||||
|
|
||||||
|
installed = memnew( EditorPluginSettings );
|
||||||
|
installed->set_name("Installed");
|
||||||
|
tabs->add_child(installed);
|
||||||
|
|
||||||
|
library = memnew( VBoxContainer );
|
||||||
|
library->set_name("Online");
|
||||||
|
tabs->add_child(library);
|
||||||
|
|
||||||
|
HBoxContainer *search_hb = memnew( HBoxContainer );
|
||||||
|
|
||||||
|
library->add_child(search_hb);
|
||||||
|
|
||||||
|
search_hb->add_child( memnew( Label("Search: ")));
|
||||||
|
filter =memnew( LineEdit );
|
||||||
|
search_hb->add_child(filter);
|
||||||
|
filter->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||||
|
|
||||||
|
categories = memnew( OptionButton );
|
||||||
|
categories->add_item("All Categories");
|
||||||
|
search_hb->add_child(categories);
|
||||||
|
|
||||||
|
search = memnew( Button("Search"));
|
||||||
|
search_hb->add_child(search);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////
|
||||||
|
|
||||||
|
|
||||||
|
void AddonEditorPlugin::make_visible(bool p_visible) {
|
||||||
|
|
||||||
|
if (p_visible) {
|
||||||
|
|
||||||
|
addon_library->show();
|
||||||
|
} else {
|
||||||
|
|
||||||
|
addon_library->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
AddonEditorPlugin::AddonEditorPlugin(EditorNode *p_node) {
|
||||||
|
|
||||||
|
editor=p_node;
|
||||||
|
addon_library = memnew( EditorAddonLibrary );
|
||||||
|
addon_library->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||||
|
editor->get_viewport()->add_child(addon_library);
|
||||||
|
addon_library->set_area_as_parent_rect();
|
||||||
|
addon_library->hide();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
AddonEditorPlugin::~AddonEditorPlugin() {
|
||||||
|
|
||||||
|
}
|
50
tools/editor/addon_editor_plugin.h
Normal file
50
tools/editor/addon_editor_plugin.h
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#ifndef ADDON_EDITOR_PLUGIN_H
|
||||||
|
#define ADDON_EDITOR_PLUGIN_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "editor_plugin.h"
|
||||||
|
#include "scene/gui/box_container.h"
|
||||||
|
#include "scene/gui/line_edit.h"
|
||||||
|
#include "scene/gui/option_button.h"
|
||||||
|
#include "scene/gui/tab_container.h"
|
||||||
|
#include "editor_plugin_settings.h"
|
||||||
|
|
||||||
|
class EditorAddonLibrary : public VBoxContainer {
|
||||||
|
OBJ_TYPE(EditorAddonLibrary,VBoxContainer);
|
||||||
|
|
||||||
|
TabContainer *tabs;
|
||||||
|
EditorPluginSettings *installed;
|
||||||
|
VBoxContainer *library;
|
||||||
|
LineEdit *filter;
|
||||||
|
OptionButton *categories;
|
||||||
|
Button *search;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
EditorAddonLibrary();
|
||||||
|
};
|
||||||
|
|
||||||
|
class AddonEditorPlugin : public EditorPlugin {
|
||||||
|
|
||||||
|
OBJ_TYPE( AddonEditorPlugin, EditorPlugin );
|
||||||
|
|
||||||
|
EditorAddonLibrary *addon_library;
|
||||||
|
EditorNode *editor;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual String get_name() const { return "Addons"; }
|
||||||
|
bool has_main_screen() const { return true; }
|
||||||
|
virtual void edit(Object *p_object) {}
|
||||||
|
virtual bool handles(Object *p_object) const { return false; }
|
||||||
|
virtual void make_visible(bool p_visible);
|
||||||
|
//virtual bool get_remove_list(List<Node*> *p_list) { return canvas_item_editor->get_remove_list(p_list); }
|
||||||
|
//virtual Dictionary get_state() const;
|
||||||
|
//virtual void set_state(const Dictionary& p_state);
|
||||||
|
|
||||||
|
AddonEditorPlugin(EditorNode *p_node);
|
||||||
|
~AddonEditorPlugin();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // EDITORASSETLIBRARY_H
|
|
@ -61,6 +61,7 @@
|
||||||
#include "plugins/sprite_frames_editor_plugin.h"
|
#include "plugins/sprite_frames_editor_plugin.h"
|
||||||
#include "plugins/sprite_region_editor_plugin.h"
|
#include "plugins/sprite_region_editor_plugin.h"
|
||||||
#include "plugins/canvas_item_editor_plugin.h"
|
#include "plugins/canvas_item_editor_plugin.h"
|
||||||
|
#include "addon_editor_plugin.h"
|
||||||
#include "plugins/spatial_editor_plugin.h"
|
#include "plugins/spatial_editor_plugin.h"
|
||||||
#include "plugins/sample_editor_plugin.h"
|
#include "plugins/sample_editor_plugin.h"
|
||||||
#include "plugins/sample_library_editor_plugin.h"
|
#include "plugins/sample_library_editor_plugin.h"
|
||||||
|
@ -6093,6 +6094,7 @@ EditorNode::EditorNode() {
|
||||||
add_editor_plugin( memnew( CanvasItemEditorPlugin(this) ) );
|
add_editor_plugin( memnew( CanvasItemEditorPlugin(this) ) );
|
||||||
add_editor_plugin( memnew( SpatialEditorPlugin(this) ) );
|
add_editor_plugin( memnew( SpatialEditorPlugin(this) ) );
|
||||||
add_editor_plugin( memnew( ScriptEditorPlugin(this) ) );
|
add_editor_plugin( memnew( ScriptEditorPlugin(this) ) );
|
||||||
|
//add_editor_plugin( memnew( AddonEditorPlugin(this) ) );
|
||||||
|
|
||||||
//more visually meaningful to have this later
|
//more visually meaningful to have this later
|
||||||
raise_bottom_panel_item(AnimationPlayerEditor::singleton);
|
raise_bottom_panel_item(AnimationPlayerEditor::singleton);
|
||||||
|
|
Loading…
Reference in a new issue