summaryrefslogtreecommitdiff
path: root/tools/editor/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'tools/editor/plugins')
-rw-r--r--tools/editor/plugins/theme_editor_plugin.cpp219
-rw-r--r--tools/editor/plugins/theme_editor_plugin.h17
2 files changed, 184 insertions, 52 deletions
diff --git a/tools/editor/plugins/theme_editor_plugin.cpp b/tools/editor/plugins/theme_editor_plugin.cpp
index f17ab94494..ccbd923118 100644
--- a/tools/editor/plugins/theme_editor_plugin.cpp
+++ b/tools/editor/plugins/theme_editor_plugin.cpp
@@ -33,13 +33,28 @@
void ThemeEditor::edit(const Ref<Theme>& p_theme) {
theme=p_theme;
- panel->set_theme(p_theme);
+ main_vb->set_theme(p_theme);
}
-void ThemeEditor::_open_file_dialog() {
- test_file_dialog->popup_centered_ratio();
+void ThemeEditor::_propagate_redraw(Control *p_at) {
+
+ p_at->notification(NOTIFICATION_THEME_CHANGED);
+ p_at->minimum_size_changed();
+ p_at->update();
+ for(int i=0;i<p_at->get_child_count();i++) {
+ Control *a = p_at->get_child(i)->cast_to<Control>();
+ if (a)
+ _propagate_redraw(a);
+
+ }
+}
+
+void ThemeEditor::_refresh_interval() {
+
+ _propagate_redraw(main_vb);
+
}
void ThemeEditor::_type_menu_cbk(int p_option) {
@@ -477,6 +492,18 @@ void ThemeEditor::_theme_menu_cbk(int p_option) {
}
+void ThemeEditor::_notification(int p_what) {
+
+ if (p_what==NOTIFICATION_PROCESS) {
+
+ time_left-=get_process_delta_time();
+ if (time_left<0) {
+ time_left=1.5;
+ _refresh_interval();
+ }
+ }
+}
+
void ThemeEditor::_bind_methods() {
ObjectTypeDB::bind_method("_type_menu_cbk",&ThemeEditor::_type_menu_cbk);
@@ -489,44 +516,159 @@ void ThemeEditor::_bind_methods() {
ThemeEditor::ThemeEditor() {
- Panel *main_panel = memnew( Panel );
- add_child(main_panel);
- main_panel->set_area_as_parent_rect();
- panel = memnew( Panel );
+ time_left=0;
+
+ Panel * panel = memnew( Panel );
+ add_child(panel);
+ panel->set_area_as_parent_rect(0);
+ panel->set_margin(MARGIN_TOP,25);
+
+ main_vb= memnew( VBoxContainer );
+ panel->add_child(main_vb);
+ main_vb->set_area_as_parent_rect(4);
+
+
+ HBoxContainer *hb_menu = memnew(HBoxContainer);
+ main_vb->add_child(hb_menu);
+
- main_panel->add_child(panel);
- panel->set_area_as_parent_rect();
- panel->set_margin( MARGIN_TOP,20 );
- test_button = memnew( Button );
- test_button->set_pos(Point2(25,25));
- test_button->set_text("Button");
- panel->add_child(test_button);
+ theme_menu = memnew( MenuButton );
+ theme_menu->set_text("Theme");
+ theme_menu->get_popup()->add_item("Add Item",POPUP_ADD);
+ theme_menu->get_popup()->add_item("Add Class Items",POPUP_CLASS_ADD);
+ theme_menu->get_popup()->add_item("Remove Item",POPUP_REMOVE);
+ theme_menu->get_popup()->add_separator();
+ theme_menu->get_popup()->add_item("Create Template",POPUP_CREATE_TEMPLATE);
+ hb_menu->add_child(theme_menu);
+ theme_menu->get_popup()->connect("item_pressed", this,"_theme_menu_cbk");
+
+
+ HBoxContainer *main_hb = memnew( HBoxContainer );
+ main_vb->add_child(main_hb);
- test_label = memnew( Label );
- test_label->set_pos(Point2(25,75));
- test_label->set_text("Label");
- panel->add_child(test_label);
- test_menu_button = memnew( MenuButton );
- test_menu_button->set_pos(Point2(25,125));
- test_menu_button->set_text("Menu Button");
+
+ VBoxContainer *first_vb = memnew( VBoxContainer);
+ first_vb->set_h_size_flags(SIZE_EXPAND_FILL);
+ main_hb->add_child(first_vb);
+
+
+
+// main_panel->add_child(panel);
+// panel->set_area_as_parent_rect();
+// panel->set_margin( MARGIN_TOP,20 );
+
+ first_vb->add_child(memnew( Label("Label") ));
+
+ first_vb->add_child(memnew( Button("Button")) );
+ ToolButton *tb = memnew( ToolButton );
+ tb->set_text("ToolButton");
+ first_vb->add_child(tb );
+ CheckButton *cb = memnew( CheckButton );
+ cb->set_text("CheckButton");
+ first_vb->add_child(cb );
+
+ MenuButton* test_menu_button = memnew( MenuButton );
+ test_menu_button->set_text("MenuButton");
test_menu_button->get_popup()->add_item("Item");
test_menu_button->get_popup()->add_separator();
test_menu_button->get_popup()->add_check_item("Check Item");
test_menu_button->get_popup()->add_check_item("Checked Item");
test_menu_button->get_popup()->set_item_checked(2,true);
- panel->add_child(test_menu_button);
+ first_vb->add_child(test_menu_button);
- test_option_button = memnew( OptionButton );
- test_option_button->set_pos(Point2(25,175));
+ OptionButton *test_option_button = memnew( OptionButton );
test_option_button->add_item("OptionButton");
test_option_button->add_separator();
test_option_button->add_item("Has");
test_option_button->add_item("Many");
test_option_button->add_item("Options");
- panel->add_child(test_option_button);
+ first_vb->add_child(test_option_button);
+
+ ColorPickerButton *cpb = memnew( ColorPickerButton );
+ first_vb->add_child(cpb );
+
+ first_vb->add_child( memnew( HSeparator ));
+ first_vb->add_child( memnew( HSlider ));
+ first_vb->add_child( memnew( HScrollBar ));
+ first_vb->add_child( memnew( SpinBox ));
+ ProgressBar *pb=memnew( ProgressBar );
+ pb->set_val(50);
+ first_vb->add_child( pb);
+ Panel *pn=memnew( Panel );
+ pn->set_custom_minimum_size(Size2(40,40));
+ first_vb->add_child( pn);
+ first_vb->add_constant_override("separation",10);
+
+ VBoxContainer *second_vb = memnew( VBoxContainer );
+ second_vb->set_h_size_flags(SIZE_EXPAND_FILL);
+ main_hb->add_child(second_vb);
+ second_vb->add_constant_override("separation",10);
+ LineEdit *le = memnew( LineEdit );
+ le->set_text("LineEdit");
+ second_vb->add_child(le);
+ TextEdit *te = memnew( TextEdit );
+ te->set_text("TextEdit");
+ //te->set_v_size_flags(SIZE_EXPAND_FILL);
+ te->set_custom_minimum_size(Size2(0,160));
+ second_vb->add_child(te);
+
+ Tree *test_tree = memnew(Tree);
+ second_vb->add_child(test_tree);
+ test_tree->set_custom_minimum_size(Size2(0,160));
+
+
+ TreeItem *item = test_tree->create_item();
+ item->set_editable(0,true);
+ item->set_text(0,"Tree");
+ item = test_tree->create_item( test_tree->get_root() );
+ item->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
+ item->set_editable(0,true);
+ item->set_text(0,"check");
+ item = test_tree->create_item( test_tree->get_root() );
+ item->set_cell_mode(0, TreeItem::CELL_MODE_RANGE);
+ item->set_editable(0,true);
+ item->set_range_config(0,0,20,0.1);
+ item->set_range(0,2);
+ item = test_tree->create_item( test_tree->get_root() );
+ item->set_cell_mode(0, TreeItem::CELL_MODE_RANGE);
+ item->set_editable(0,true);
+ item->set_text(0,"Have,Many,Several,Options!");
+ item->set_range(0,2);
+
+ VBoxContainer *third_vb = memnew( VBoxContainer );
+ third_vb->set_h_size_flags(SIZE_EXPAND_FILL);
+ third_vb->add_constant_override("separation",10);
+
+ main_hb->add_child(third_vb);
+ HBoxContainer *vhb = memnew( HBoxContainer );
+ vhb->set_custom_minimum_size(Size2(0,160));
+ vhb->add_child(memnew(VSeparator));
+ vhb->add_child(memnew(VSlider));
+ vhb->add_child(memnew(VScrollBar));
+ third_vb->add_child(vhb);
+
+ TabContainer *tc = memnew( TabContainer );
+ third_vb->add_child(tc);
+ tc->set_custom_minimum_size(Size2(0,160));
+ Control *tcc = memnew( Control );
+ tcc->set_name("Tab 1");
+ tc->add_child(tcc);
+ tcc = memnew( Control );
+ tcc->set_name("Tab 2");
+ tc->add_child(tcc);
+ tcc = memnew( Control );
+ tcc->set_name("Tab 3");
+ tc->add_child(tcc);
+
+ main_hb->add_constant_override("separation",20);
+
+
+
+
+/*
test_h_scroll = memnew( HScrollBar );
test_h_scroll->set_pos( Point2( 25, 225 ) );
test_h_scroll->set_size( Point2( 150, 5 ) );
@@ -576,21 +718,11 @@ ThemeEditor::ThemeEditor() {
panel->add_child(test_file_dialog);
fd_button->connect("pressed", this,"_open_file_dialog");
-
- theme_menu = memnew( MenuButton );
- theme_menu->set_text("Theme..");
- theme_menu->get_popup()->add_item("Add Item",POPUP_ADD);
- theme_menu->get_popup()->add_item("Add Class Items",POPUP_CLASS_ADD);
- theme_menu->get_popup()->add_item("Remove Item",POPUP_REMOVE);
- theme_menu->get_popup()->add_separator();
- theme_menu->get_popup()->add_item("Create Template",POPUP_CREATE_TEMPLATE);
- main_panel->add_child(theme_menu);
- theme_menu->set_pos(Point2(5,5));
- theme_menu->get_popup()->connect("item_pressed", this,"_theme_menu_cbk");
+*/
add_del_dialog = memnew(ConfirmationDialog);
add_del_dialog->hide();
- main_panel->add_child(add_del_dialog);
+ add_child(add_del_dialog);
Label *l = memnew( Label );
@@ -665,10 +797,12 @@ ThemeEditor::ThemeEditor() {
void ThemeEditorPlugin::edit(Object *p_node) {
if (p_node && p_node->cast_to<Theme>()) {
- theme_editor->edit( p_node->cast_to<Theme>() );
theme_editor->show();
- } else
+ theme_editor->edit( p_node->cast_to<Theme>() );
+ } else {
+ theme_editor->edit( Ref<Theme>() );
theme_editor->hide();
+ }
}
bool ThemeEditorPlugin::handles(Object *p_node) const{
@@ -678,10 +812,13 @@ bool ThemeEditorPlugin::handles(Object *p_node) const{
void ThemeEditorPlugin::make_visible(bool p_visible){
- if (p_visible)
+ if (p_visible) {
theme_editor->show();
- else
+ theme_editor->set_process(true);
+ } else {
theme_editor->hide();
+ theme_editor->set_process(false);
+ }
}
ThemeEditorPlugin::ThemeEditorPlugin(EditorNode *p_node) {
diff --git a/tools/editor/plugins/theme_editor_plugin.h b/tools/editor/plugins/theme_editor_plugin.h
index a521730952..98156422ee 100644
--- a/tools/editor/plugins/theme_editor_plugin.h
+++ b/tools/editor/plugins/theme_editor_plugin.h
@@ -42,21 +42,13 @@ class ThemeEditor : public Control {
OBJ_TYPE( ThemeEditor, Control );
- Panel *panel;
+ VBoxContainer *main_vb;
Ref<Theme> theme;
FileDialog *file_dialog;
- Button *test_button;
- Label *test_label;
- MenuButton *test_menu_button;
- OptionButton *test_option_button;
- HScrollBar *test_h_scroll;
- VScrollBar *test_v_scroll;
- LineEdit *line_edit;
- FileDialog *test_file_dialog;
-
+ double time_left;
MenuButton *theme_menu;
ConfirmationDialog *add_del_dialog;
@@ -86,9 +78,12 @@ class ThemeEditor : public Control {
void _name_menu_about_to_show();
void _name_menu_cbk(int p_option);
void _theme_menu_cbk(int p_option);
- void _open_file_dialog();
+ void _propagate_redraw(Control *p_at);
+ void _refresh_interval();
+
protected:
+ void _notification(int p_what);
static void _bind_methods();
public: