mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:42:43 +00:00 
			
		
		
		
	LibGUI: Add GUI::CommonActions::make_properties_action()
Many apps want a "Properties" action with the same icon and shortcut.
This commit is contained in:
		
							parent
							
								
									578f749791
								
							
						
					
					
						commit
						eff7ea5b84
					
				
					 4 changed files with 45 additions and 40 deletions
				
			
		|  | @ -310,15 +310,14 @@ int run_in_desktop_mode([[maybe_unused]] RefPtr<Core::ConfigFile> config) | ||||||
|         cut_action->set_enabled(!view.selection().is_empty()); |         cut_action->set_enabled(!view.selection().is_empty()); | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     auto properties_action |     auto properties_action = GUI::CommonActions::make_properties_action( | ||||||
|         = GUI::Action::create( |         [&](auto&) { | ||||||
|             "Properties", { Mod_Alt, Key_Return }, Gfx::Bitmap::load_from_file("/res/icons/16x16/properties.png"), [&](const GUI::Action&) { |             String path = directory_view.path(); | ||||||
|                 String path = directory_view.path(); |             Vector<String> selected = directory_view.selected_file_paths(); | ||||||
|                 Vector<String> selected = directory_view.selected_file_paths(); |  | ||||||
| 
 | 
 | ||||||
|                 show_properties(path, path, selected, directory_view.window()); |             show_properties(path, path, selected, directory_view.window()); | ||||||
|             }, |         }, | ||||||
|             window); |         window); | ||||||
| 
 | 
 | ||||||
|     auto paste_action = GUI::CommonActions::make_paste_action( |     auto paste_action = GUI::CommonActions::make_paste_action( | ||||||
|         [&](const GUI::Action&) { |         [&](const GUI::Action&) { | ||||||
|  | @ -658,25 +657,24 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio | ||||||
|             }, |             }, | ||||||
|             window); |             window); | ||||||
| 
 | 
 | ||||||
|     auto properties_action |     auto properties_action = GUI::CommonActions::make_properties_action( | ||||||
|         = GUI::Action::create( |         [&](auto& action) { | ||||||
|             "Properties", { Mod_Alt, Key_Return }, Gfx::Bitmap::load_from_file("/res/icons/16x16/properties.png"), [&](const GUI::Action& action) { |             String container_dir_path; | ||||||
|                 String container_dir_path; |             String path; | ||||||
|                 String path; |             Vector<String> selected; | ||||||
|                 Vector<String> selected; |             if (action.activator() == directory_context_menu || directory_view.active_widget()->is_focused()) { | ||||||
|                 if (action.activator() == directory_context_menu || directory_view.active_widget()->is_focused()) { |                 path = directory_view.path(); | ||||||
|                     path = directory_view.path(); |                 container_dir_path = path; | ||||||
|                     container_dir_path = path; |                 selected = directory_view.selected_file_paths(); | ||||||
|                     selected = directory_view.selected_file_paths(); |             } else { | ||||||
|                 } else { |                 path = directories_model->full_path(tree_view.selection().first()); | ||||||
|                     path = directories_model->full_path(tree_view.selection().first()); |                 container_dir_path = LexicalPath(path).basename(); | ||||||
|                     container_dir_path = LexicalPath(path).basename(); |                 selected = tree_view_selected_file_paths(); | ||||||
|                     selected = tree_view_selected_file_paths(); |             } | ||||||
|                 } |  | ||||||
| 
 | 
 | ||||||
|                 show_properties(container_dir_path, path, selected, directory_view.window()); |             show_properties(container_dir_path, path, selected, directory_view.window()); | ||||||
|             }, |         }, | ||||||
|             window); |         window); | ||||||
| 
 | 
 | ||||||
|     auto paste_action = GUI::CommonActions::make_paste_action( |     auto paste_action = GUI::CommonActions::make_paste_action( | ||||||
|         [&](const GUI::Action& action) { |         [&](const GUI::Action& action) { | ||||||
|  |  | ||||||
|  | @ -296,21 +296,22 @@ int main(int argc, char** argv) | ||||||
| 
 | 
 | ||||||
|     HashMap<pid_t, NonnullRefPtr<GUI::Window>> process_windows; |     HashMap<pid_t, NonnullRefPtr<GUI::Window>> process_windows; | ||||||
| 
 | 
 | ||||||
|     auto process_properties_action = GUI::Action::create("Properties", { Mod_Alt, Key_Return }, [&](auto&) { |     auto process_properties_action = GUI::CommonActions::make_properties_action( | ||||||
|         auto pid = selected_id(ProcessModel::Column::PID); |         [&](auto&) { | ||||||
|  |             auto pid = selected_id(ProcessModel::Column::PID); | ||||||
| 
 | 
 | ||||||
|         RefPtr<GUI::Window> process_window; |             RefPtr<GUI::Window> process_window; | ||||||
|         if (!process_windows.contains(pid)) { |             if (!process_windows.contains(pid)) { | ||||||
|             process_window = build_process_window(pid); |                 process_window = build_process_window(pid); | ||||||
|             process_window->on_close_request = [pid, &process_windows] { |                 process_window->on_close_request = [pid, &process_windows] { | ||||||
|                 process_windows.remove(pid); |                     process_windows.remove(pid); | ||||||
|                 return GUI::Window::CloseRequestDecision::Close; |                     return GUI::Window::CloseRequestDecision::Close; | ||||||
|             }; |                 }; | ||||||
|             process_windows.set(pid, *process_window); |                 process_windows.set(pid, *process_window); | ||||||
|         } |             } | ||||||
|         process_window->show(); |             process_window->show(); | ||||||
|         process_window->move_to_front(); |             process_window->move_to_front(); | ||||||
|     }); |         }); | ||||||
| 
 | 
 | ||||||
|     auto menubar = GUI::MenuBar::construct(); |     auto menubar = GUI::MenuBar::construct(); | ||||||
|     auto& app_menu = menubar->add_menu("File"); |     auto& app_menu = menubar->add_menu("File"); | ||||||
|  |  | ||||||
|  | @ -141,6 +141,11 @@ NonnullRefPtr<Action> make_select_all_action(Function<void(Action&)> callback, C | ||||||
|     return Action::create("Select all", { Mod_Ctrl, Key_A }, Gfx::Bitmap::load_from_file("/res/icons/16x16/select-all.png"), move(callback), parent); |     return Action::create("Select all", { Mod_Ctrl, Key_A }, Gfx::Bitmap::load_from_file("/res/icons/16x16/select-all.png"), move(callback), parent); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | NonnullRefPtr<Action> make_properties_action(Function<void(Action&)> callback, Core::Object* parent) | ||||||
|  | { | ||||||
|  |     return Action::create("Properties", { Mod_Alt, Key_Return }, Gfx::Bitmap::load_from_file("/res/icons/16x16/properties.png"), move(callback), parent); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NonnullRefPtr<Action> Action::create(String text, Function<void(Action&)> callback, Core::Object* parent) | NonnullRefPtr<Action> Action::create(String text, Function<void(Action&)> callback, Core::Object* parent) | ||||||
|  |  | ||||||
|  | @ -62,6 +62,7 @@ NonnullRefPtr<Action> make_go_forward_action(Function<void(Action&)>, Core::Obje | ||||||
| NonnullRefPtr<Action> make_go_home_action(Function<void(Action&)> callback, Core::Object* parent = nullptr); | NonnullRefPtr<Action> make_go_home_action(Function<void(Action&)> callback, Core::Object* parent = nullptr); | ||||||
| NonnullRefPtr<Action> make_reload_action(Function<void(Action&)>, Core::Object* parent = nullptr); | NonnullRefPtr<Action> make_reload_action(Function<void(Action&)>, Core::Object* parent = nullptr); | ||||||
| NonnullRefPtr<Action> make_select_all_action(Function<void(Action&)>, Core::Object* parent = nullptr); | NonnullRefPtr<Action> make_select_all_action(Function<void(Action&)>, Core::Object* parent = nullptr); | ||||||
|  | NonnullRefPtr<Action> make_properties_action(Function<void(Action&)>, Core::Object* parent = nullptr); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class Action final : public Core::Object { | class Action final : public Core::Object { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling