mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 06:02:44 +00:00 
			
		
		
		
	HackStudio: Add a widgets toolbar to the form editing mode
This commit is contained in:
		
							parent
							
								
									d22d9874f7
								
							
						
					
					
						commit
						489c6ac05c
					
				
					 1 changed files with 23 additions and 13 deletions
				
			
		|  | @ -38,7 +38,8 @@ OwnPtr<Project> g_project; | |||
| RefPtr<GWindow> g_window; | ||||
| RefPtr<GListView> g_project_list_view; | ||||
| RefPtr<GStackWidget> g_right_hand_stack; | ||||
| RefPtr<GSplitter> g_inner_splitter; | ||||
| RefPtr<GSplitter> g_text_inner_splitter; | ||||
| RefPtr<GWidget> g_form_inner_container; | ||||
| RefPtr<FormEditorWidget> g_form_editor_widget; | ||||
| 
 | ||||
| static RefPtr<GTabWidget> s_action_tab_widget; | ||||
|  | @ -64,9 +65,9 @@ enum class EditMode { | |||
| void set_edit_mode(EditMode mode) | ||||
| { | ||||
|     if (mode == EditMode::Text) { | ||||
|         g_right_hand_stack->set_active_widget(g_inner_splitter); | ||||
|         g_right_hand_stack->set_active_widget(g_text_inner_splitter); | ||||
|     } else if (mode == EditMode::Form) { | ||||
|         g_right_hand_stack->set_active_widget(g_form_editor_widget); | ||||
|         g_right_hand_stack->set_active_widget(g_form_inner_container); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -119,11 +120,20 @@ int main(int argc, char** argv) | |||
| 
 | ||||
|     g_right_hand_stack = GStackWidget::construct(outer_splitter); | ||||
| 
 | ||||
|     g_form_editor_widget = FormEditorWidget::construct(g_right_hand_stack); | ||||
|     g_form_inner_container = GWidget::construct(g_right_hand_stack); | ||||
|     g_form_inner_container->set_layout(make<GBoxLayout>(Orientation::Horizontal)); | ||||
|     auto form_widgets_toolbar = GToolBar::construct(Orientation::Vertical, 26, g_form_inner_container); | ||||
|     form_widgets_toolbar->set_preferred_size(38, 0); | ||||
| 
 | ||||
|     g_inner_splitter = GSplitter::construct(Orientation::Vertical, g_right_hand_stack); | ||||
|     g_inner_splitter->layout()->set_margins({ 0, 3, 0, 0 }); | ||||
|     add_new_editor(*g_inner_splitter); | ||||
|     form_widgets_toolbar->add_action(GAction::create("GLabel", GraphicsBitmap::load_from_file("/res/icons/vbwidgets/label.png"), [&](auto&) {})); | ||||
|     form_widgets_toolbar->add_action(GAction::create("GButton", GraphicsBitmap::load_from_file("/res/icons/vbwidgets/button.png"), [&](auto&) {})); | ||||
|     form_widgets_toolbar->add_action(GAction::create("GSpinBox", GraphicsBitmap::load_from_file("/res/icons/vbwidgets/spinbox.png"), [&](auto&) {})); | ||||
| 
 | ||||
|     g_form_editor_widget = FormEditorWidget::construct(g_form_inner_container); | ||||
| 
 | ||||
|     g_text_inner_splitter = GSplitter::construct(Orientation::Vertical, g_right_hand_stack); | ||||
|     g_text_inner_splitter->layout()->set_margins({ 0, 3, 0, 0 }); | ||||
|     add_new_editor(*g_text_inner_splitter); | ||||
| 
 | ||||
|     auto new_action = GAction::create("Add new file to project...", { Mod_Ctrl, Key_N }, GraphicsBitmap::load_from_file("/res/icons/16x16/new.png"), [&](const GAction&) { | ||||
|         auto input_box = GInputBox::construct("Enter name of new file:", "Add new file to project", g_window); | ||||
|  | @ -159,7 +169,7 @@ int main(int argc, char** argv) | |||
|         if (g_all_editor_wrappers.size() <= 1) | ||||
|             return; | ||||
|         Vector<EditorWrapper*> wrappers; | ||||
|         g_inner_splitter->for_each_child_of_type<EditorWrapper>([&](auto& child) { | ||||
|         g_text_inner_splitter->for_each_child_of_type<EditorWrapper>([&](auto& child) { | ||||
|             wrappers.append(&child); | ||||
|             return IterationDecision::Continue; | ||||
|         }); | ||||
|  | @ -177,7 +187,7 @@ int main(int argc, char** argv) | |||
|         if (g_all_editor_wrappers.size() <= 1) | ||||
|             return; | ||||
|         Vector<EditorWrapper*> wrappers; | ||||
|         g_inner_splitter->for_each_child_of_type<EditorWrapper>([&](auto& child) { | ||||
|         g_text_inner_splitter->for_each_child_of_type<EditorWrapper>([&](auto& child) { | ||||
|             wrappers.append(&child); | ||||
|             return IterationDecision::Continue; | ||||
|         }); | ||||
|  | @ -196,7 +206,7 @@ int main(int argc, char** argv) | |||
|             return; | ||||
|         auto wrapper = g_current_editor_wrapper; | ||||
|         switch_to_next_editor->activate(); | ||||
|         g_inner_splitter->remove_child(*wrapper); | ||||
|         g_text_inner_splitter->remove_child(*wrapper); | ||||
|         g_all_editor_wrappers.remove_first_matching([&](auto& entry) { return entry == wrapper.ptr(); }); | ||||
|         update_actions(); | ||||
|     }); | ||||
|  | @ -225,7 +235,7 @@ int main(int argc, char** argv) | |||
|         open_file(filename); | ||||
|     }; | ||||
| 
 | ||||
|     s_action_tab_widget = GTabWidget::construct(g_inner_splitter); | ||||
|     s_action_tab_widget = GTabWidget::construct(g_text_inner_splitter); | ||||
| 
 | ||||
|     s_action_tab_widget->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed); | ||||
|     s_action_tab_widget->set_preferred_size(0, 24); | ||||
|  | @ -245,7 +255,7 @@ int main(int argc, char** argv) | |||
|     }); | ||||
| 
 | ||||
|     auto add_editor_action = GAction::create("Add new editor", { Mod_Ctrl | Mod_Alt, Key_E }, [&](auto&) { | ||||
|         add_new_editor(*g_inner_splitter); | ||||
|         add_new_editor(*g_text_inner_splitter); | ||||
|         update_actions(); | ||||
|     }); | ||||
| 
 | ||||
|  | @ -324,7 +334,7 @@ int main(int argc, char** argv) | |||
|         remove_current_editor_action->set_enabled(g_all_editor_wrappers.size() > 1); | ||||
|     }; | ||||
| 
 | ||||
|     open_file("main.cpp"); | ||||
|     open_file("test.frm"); | ||||
| 
 | ||||
|     update_actions(); | ||||
|     return app.exec(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling