|
41 | 41 | #include "editor/gui/editor_bottom_panel.h" |
42 | 42 | #include "editor/gui/editor_quick_open_dialog.h" |
43 | 43 | #include "editor/gui/editor_toaster.h" |
| 44 | +#include "editor/project_settings_editor.h" |
44 | 45 | #include "editor/themes/editor_scale.h" |
45 | 46 | #include "scene/gui/box_container.h" |
46 | 47 | #include "scene/gui/button.h" |
@@ -95,20 +96,18 @@ void EditorRunBar::_notification(int p_what) { |
95 | 96 |
|
96 | 97 | if (is_movie_maker_enabled()) { |
97 | 98 | main_panel->add_theme_style_override(SceneStringName(panel), get_theme_stylebox(SNAME("LaunchPadMovieMode"), EditorStringName(EditorStyles))); |
| 99 | + write_movie_button->set_theme_type_variation("RunBarButtonMovieMakerEnabled"); |
| 100 | + |
98 | 101 | write_movie_panel->add_theme_style_override(SceneStringName(panel), get_theme_stylebox(SNAME("MovieWriterButtonPressed"), EditorStringName(EditorStyles))); |
99 | 102 | } else { |
100 | 103 | main_panel->add_theme_style_override(SceneStringName(panel), get_theme_stylebox(SNAME("LaunchPadNormal"), EditorStringName(EditorStyles))); |
| 104 | + write_movie_button->set_theme_type_variation("RunBarButtonMovieMakerDisabled"); |
| 105 | + |
101 | 106 | write_movie_panel->add_theme_style_override(SceneStringName(panel), get_theme_stylebox(SNAME("MovieWriterButtonNormal"), EditorStringName(EditorStyles))); |
102 | 107 | } |
103 | 108 |
|
104 | 109 | write_movie_button->set_button_icon(get_editor_theme_icon(SNAME("MainMovieWrite"))); |
105 | | - // This button behaves differently, so color it as such. |
106 | | - write_movie_button->begin_bulk_theme_override(); |
107 | | - write_movie_button->add_theme_color_override("icon_normal_color", get_theme_color(SNAME("movie_writer_icon_normal"), EditorStringName(EditorStyles))); |
108 | | - write_movie_button->add_theme_color_override("icon_pressed_color", get_theme_color(SNAME("movie_writer_icon_pressed"), EditorStringName(EditorStyles))); |
109 | | - write_movie_button->add_theme_color_override("icon_hover_color", get_theme_color(SNAME("movie_writer_icon_hover"), EditorStringName(EditorStyles))); |
110 | | - write_movie_button->add_theme_color_override("icon_hover_pressed_color", get_theme_color(SNAME("movie_writer_icon_hover_pressed"), EditorStringName(EditorStyles))); |
111 | | - write_movie_button->end_bulk_theme_override(); |
| 110 | + |
112 | 111 | } break; |
113 | 112 | } |
114 | 113 | } |
@@ -157,6 +156,23 @@ void EditorRunBar::_update_play_buttons() { |
157 | 156 | } |
158 | 157 | } |
159 | 158 |
|
| 159 | +void EditorRunBar::_movie_maker_item_pressed(int p_id) { |
| 160 | + switch (p_id) { |
| 161 | + case MOVIE_MAKER_TOGGLE: { |
| 162 | + bool new_enabled = !is_movie_maker_enabled(); |
| 163 | + set_movie_maker_enabled(new_enabled); |
| 164 | + write_movie_button->get_popup()->set_item_checked(0, new_enabled); |
| 165 | + write_movie_button->set_pressed(new_enabled); |
| 166 | + _write_movie_toggled(new_enabled); |
| 167 | + break; |
| 168 | + } |
| 169 | + case MOVIE_MAKER_OPEN_SETTINGS: |
| 170 | + ProjectSettingsEditor::get_singleton()->popup_project_settings(true); |
| 171 | + ProjectSettingsEditor::get_singleton()->set_general_page("editor/movie_writer"); |
| 172 | + break; |
| 173 | + } |
| 174 | +} |
| 175 | + |
160 | 176 | void EditorRunBar::_write_movie_toggled(bool p_enabled) { |
161 | 177 | if (p_enabled) { |
162 | 178 | add_theme_style_override(SceneStringName(panel), get_theme_stylebox(SNAME("LaunchPadMovieMode"), EditorStringName(EditorStyles))); |
@@ -454,11 +470,12 @@ OS::ProcessID EditorRunBar::get_current_process() const { |
454 | 470 | } |
455 | 471 |
|
456 | 472 | void EditorRunBar::set_movie_maker_enabled(bool p_enabled) { |
457 | | - write_movie_button->set_pressed(p_enabled); |
| 473 | + movie_maker_enabled = p_enabled; |
| 474 | + write_movie_button->get_popup()->set_item_checked(0, p_enabled); |
458 | 475 | } |
459 | 476 |
|
460 | 477 | bool EditorRunBar::is_movie_maker_enabled() const { |
461 | | - return write_movie_button->is_pressed(); |
| 478 | + return movie_maker_enabled; |
462 | 479 | } |
463 | 480 |
|
464 | 481 | void EditorRunBar::update_profiler_autostart_indicator() { |
@@ -655,13 +672,15 @@ EditorRunBar::EditorRunBar() { |
655 | 672 | write_movie_panel = memnew(PanelContainer); |
656 | 673 | main_hbox->add_child(write_movie_panel); |
657 | 674 |
|
658 | | - write_movie_button = memnew(Button); |
| 675 | + write_movie_button = memnew(MenuButton); |
| 676 | + PopupMenu *write_movie_popup = write_movie_button->get_popup(); |
| 677 | + write_movie_popup->add_check_item(TTRC("Enable Movie Maker Mode"), MOVIE_MAKER_TOGGLE); |
| 678 | + write_movie_popup->add_item(TTRC("Open Movie Maker Settings..."), MOVIE_MAKER_OPEN_SETTINGS); |
| 679 | + write_movie_popup->connect(SceneStringName(id_pressed), callable_mp(this, &EditorRunBar::_movie_maker_item_pressed)); |
| 680 | + |
659 | 681 | write_movie_panel->add_child(write_movie_button); |
660 | | - write_movie_button->set_theme_type_variation("RunBarButton"); |
661 | | - write_movie_button->set_toggle_mode(true); |
662 | | - write_movie_button->set_pressed(false); |
| 682 | + write_movie_button->set_theme_type_variation("RunBarButtonMovieMakerDisabled"); |
663 | 683 | write_movie_button->set_focus_mode(Control::FOCUS_NONE); |
664 | 684 | write_movie_button->set_tooltip_text(TTR("Enable Movie Maker mode.\nThe project will run at stable FPS and the visual and audio output will be recorded to a video file.")); |
665 | 685 | write_movie_button->set_accessibility_name(TTRC("Enable Movie Maker Mode")); |
666 | | - write_movie_button->connect(SceneStringName(toggled), callable_mp(this, &EditorRunBar::_write_movie_toggled)); |
667 | 686 | } |
0 commit comments