From 42a77c531a49027c954a259b20be6fad1c70303e Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Wed, 25 Mar 2020 20:23:40 +0100 Subject: [PATCH] sculpt: remove noux runtime from inspect view Issue #3696 --- repos/gems/recipes/pkg/sculpt/archives | 1 - repos/gems/run/leitzentrale.run | 8 +- repos/gems/run/sculpt.run | 4 +- repos/gems/src/app/sculpt_manager/main.cc | 8 +- repos/gems/src/app/sculpt_manager/runtime.cc | 2 +- repos/gems/src/app/sculpt_manager/runtime.h | 6 +- .../sculpt_manager/runtime/file_browser.cc | 231 ------------ .../sculpt_manager/runtime/inspect_view.cc | 338 ++++++++++++++++++ repos/gems/src/app/sculpt_manager/storage.h | 12 +- .../src/app/sculpt_manager/view/fs_dialog.h | 4 +- 10 files changed, 362 insertions(+), 252 deletions(-) delete mode 100644 repos/gems/src/app/sculpt_manager/runtime/file_browser.cc create mode 100644 repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc diff --git a/repos/gems/recipes/pkg/sculpt/archives b/repos/gems/recipes/pkg/sculpt/archives index e56698c0a..2394ae494 100644 --- a/repos/gems/recipes/pkg/sculpt/archives +++ b/repos/gems/recipes/pkg/sculpt/archives @@ -21,7 +21,6 @@ _/src/file_terminal _/src/libc _/src/posix _/src/ncurses -_/src/noux _/src/bash-minimal _/src/vim-minimal _/src/coreutils-minimal diff --git a/repos/gems/run/leitzentrale.run b/repos/gems/run/leitzentrale.run index 54bbc26ef..6dc91398e 100644 --- a/repos/gems/run/leitzentrale.run +++ b/repos/gems/run/leitzentrale.run @@ -22,7 +22,6 @@ import_from_depot [depot_user]/src/[base_src] \ [depot_user]/src/menu_view \ [depot_user]/src/fs_query \ [depot_user]/src/rom_filter \ - [depot_user]/src/noux \ [depot_user]/src/terminal \ [depot_user]/src/posix \ [depot_user]/src/ram_block \ @@ -34,6 +33,7 @@ import_from_depot [depot_user]/src/[base_src] \ [depot_user]/src/vim-minimal \ [depot_user]/src/coreutils-minimal \ [depot_user]/src/fs_utils \ + [depot_user]/src/vfs_pipe \ [depot_user]/src/stdin2out \ [depot_user]/src/gpt_write \ [depot_user]/src/text_area \ @@ -274,10 +274,14 @@ install_config { - + + + + + diff --git a/repos/gems/run/sculpt.run b/repos/gems/run/sculpt.run index eabe62840..cc97a1de2 100644 --- a/repos/gems/run/sculpt.run +++ b/repos/gems/run/sculpt.run @@ -467,11 +467,11 @@ install_config { - + - + diff --git a/repos/gems/src/app/sculpt_manager/main.cc b/repos/gems/src/app/sculpt_manager/main.cc index 8e4cd17c4..27d3212f1 100644 --- a/repos/gems/src/app/sculpt_manager/main.cc +++ b/repos/gems/src/app/sculpt_manager/main.cc @@ -592,9 +592,9 @@ struct Sculpt::Main : Input_event_handler, /* * Fs_dialog::Action interface */ - void toggle_file_browser(Storage_target const &target) override + void toggle_inspect_view(Storage_target const &target) override { - _storage.toggle_file_browser(target); + _storage.toggle_inspect_view(target); /* refresh visibility to inspect tab */ _panel_menu_view.generate(); @@ -1714,8 +1714,8 @@ void Sculpt::Main::_generate_runtime_config(Xml_generator &xml) const gen_prepare_start_content(xml, _prepare_version); }); if (_storage.any_file_system_inspected()) - gen_file_browser(xml, _storage._storage_devices, _storage._ram_fs_state, - _storage._file_browser_version); + gen_inspect_view(xml, _storage._storage_devices, _storage._ram_fs_state, + _storage._inspect_view_version); /* * Spawn chroot instances for accessing '/depot' and '/public'. The diff --git a/repos/gems/src/app/sculpt_manager/runtime.cc b/repos/gems/src/app/sculpt_manager/runtime.cc index 54f4b359f..2e9f767aa 100644 --- a/repos/gems/src/app/sculpt_manager/runtime.cc +++ b/repos/gems/src/app/sculpt_manager/runtime.cc @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/repos/gems/src/app/sculpt_manager/runtime.h b/repos/gems/src/app/sculpt_manager/runtime.h index eb37adedc..5d2f58bb3 100644 --- a/repos/gems/src/app/sculpt_manager/runtime.h +++ b/repos/gems/src/app/sculpt_manager/runtime.h @@ -48,9 +48,9 @@ namespace Sculpt { void gen_runtime_view_start_content(Xml_generator &, Child_state const &, float font_size); - struct File_browser_version { unsigned value; }; - void gen_file_browser(Xml_generator &, Storage_devices const &, - Ram_fs_state const &, File_browser_version); + struct Inspect_view_version { unsigned value; }; + void gen_inspect_view(Xml_generator &, Storage_devices const &, + Ram_fs_state const &, Inspect_view_version); void gen_runtime_view(Xml_generator &); diff --git a/repos/gems/src/app/sculpt_manager/runtime/file_browser.cc b/repos/gems/src/app/sculpt_manager/runtime/file_browser.cc deleted file mode 100644 index d3d568225..000000000 --- a/repos/gems/src/app/sculpt_manager/runtime/file_browser.cc +++ /dev/null @@ -1,231 +0,0 @@ -/* - * \brief XML configuration for file-browser subsystem - * \author Norman Feske - * \date 2018-05-02 - */ - -/* - * Copyright (C) 2018 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#include - -namespace Sculpt { - - template - void for_each_inspected_storage_target(Storage_devices const &devices, FN const &fn) - { - devices.for_each([&] (Storage_device const &device) { - device.for_each_partition([&] (Partition const &partition) { - if (partition.file_system.inspected) - fn(Storage_target { device.label, partition.number }); }); }); - } - - void gen_nit_fb_start(Xml_generator &, Rom_name const &); - void gen_terminal_start(Xml_generator &, Rom_name const &, Rom_name const &, - File_browser_version); - void gen_noux_start(Xml_generator &, Rom_name const &, Rom_name const &, - Storage_devices const &, Ram_fs_state const &, File_browser_version); -} - - -void Sculpt::gen_nit_fb_start(Xml_generator &xml, Rom_name const &name) -{ - gen_common_start_content(xml, name, Cap_quota{100}, Ram_quota{18*1024*1024}); - - gen_named_node(xml, "binary", "nit_fb"); - - xml.node("provides", [&] () { - gen_service_node(xml, [&] () {}); - gen_service_node(xml, [&] () {}); - }); - - xml.node("config", [&] () { }); - - xml.node("route", [&] () { - - gen_service_node(xml, [&] () { - xml.node("parent", [&] () { - xml.attribute("label", String<64>("leitzentrale -> ", name)); }); }); - - gen_parent_rom_route(xml, "nit_fb"); - gen_parent_rom_route(xml, "ld.lib.so"); - gen_parent_route (xml); - gen_parent_route (xml); - gen_parent_route (xml); - }); -} - - -void Sculpt::gen_terminal_start(Xml_generator &xml, Rom_name const &name, - Rom_name const &nit_fb_name, - File_browser_version version) -{ - xml.attribute("version", version.value); - - gen_common_start_content(xml, name, Cap_quota{100}, Ram_quota{4*1024*1024}); - - gen_named_node(xml, "binary", "terminal"); - - gen_provides(xml); - - xml.node("route", [&] () { - gen_service_node(xml, [&] () { - gen_named_node(xml, "child", nit_fb_name); }); - - gen_service_node(xml, [&] () { - gen_named_node(xml, "child", nit_fb_name); }); - - gen_parent_rom_route(xml, "terminal"); - gen_parent_rom_route(xml, "ld.lib.so"); - gen_parent_rom_route(xml, "vfs.lib.so"); - gen_parent_rom_route(xml, "vfs_ttf.lib.so"); - gen_parent_rom_route(xml, "Vera.ttf"); - gen_parent_rom_route(xml, "VeraMono.ttf"); - gen_parent_rom_route(xml, "libc.lib.so"); - gen_parent_rom_route(xml, "libm.lib.so"); - gen_parent_route (xml); - gen_parent_route (xml); - gen_parent_route (xml); - gen_parent_route (xml); - gen_parent_route(xml); - - gen_named_node(xml, "service", Rom_session::service_name(), [&] () { - xml.attribute("label", "clipboard"); - xml.node("parent", [&] () { }); }); - - gen_named_node(xml, "service", Rom_session::service_name(), [&] () { - xml.attribute("label", "config"); - xml.node("parent", [&] () { - xml.attribute("label", "config -> managed/fonts"); }); }); - }); -} - - -void Sculpt::gen_noux_start(Xml_generator &xml, Rom_name const &name, - Rom_name const &terminal_name, - Storage_devices const &devices, - Ram_fs_state const &ram_fs_state, - File_browser_version version) -{ - xml.attribute("version", version.value); - - gen_common_start_content(xml, name, Cap_quota{500}, Ram_quota{64*1024*1024}); - - gen_named_node(xml, "binary", "noux"); - - xml.node("config", [&] () { - xml.node("fstab", [&] () { - gen_named_node(xml, "tar", "bash-minimal.tar"); - gen_named_node(xml, "tar", "coreutils-minimal.tar"); - gen_named_node(xml, "tar", "vim-minimal.tar"); - gen_named_node(xml, "dir", "dev", [&] () { - xml.node("null", [&] () {}); - xml.node("zero", [&] () {}); - }); - gen_named_node(xml, "dir", "share", [&] () { - gen_named_node(xml, "tar", "depot_users.tar"); }); - - auto fs_dir = [&] (String<64> const &label) { - gen_named_node(xml, "dir", label, [&] () { - xml.node("fs", [&] () { xml.attribute("label", label); }); }); }; - - fs_dir("config"); - fs_dir("report"); - - for_each_inspected_storage_target(devices, [&] (Storage_target const &target) { - fs_dir(target.label()); }); - - if (ram_fs_state.inspected) - fs_dir("ram"); - - gen_named_node(xml, "dir", "tmp", [&] () { - xml.node("ram", [&] () { }); }); - - gen_named_node(xml, "dir", "share", [&] () { - gen_named_node(xml, "dir", "vim", [&] () { - xml.node("rom", [&] () { - xml.attribute("name", "vimrc"); }); }); }); - - gen_named_node(xml, "rom", "VERSION"); - }); - - gen_named_node(xml, "start", "/bin/bash", [&] () { - - gen_named_node(xml, "env", "TERM", [&] () { - xml.attribute("value", "screen"); }); - - gen_named_node(xml, "env", "PS1", [&] () { - xml.attribute("value", "inspect:$PWD> "); }); - }); - }); - - xml.node("route", [&] () { - - gen_service_node<::File_system::Session>(xml, [&] () { - xml.attribute("label", "config"); - xml.node("parent", [&] () { xml.attribute("label", "config"); }); - }); - - gen_service_node(xml, [&] () { - gen_named_node(xml, "child", terminal_name); }); - - gen_parent_rom_route(xml, "noux"); - gen_parent_rom_route(xml, "ld.lib.so"); - gen_parent_rom_route(xml, "vfs.lib.so"); - gen_parent_rom_route(xml, "libc.lib.so"); - gen_parent_rom_route(xml, "libc_noux.lib.so"); - gen_parent_rom_route(xml, "libm.lib.so"); - gen_parent_rom_route(xml, "bash-minimal.tar"); - gen_parent_rom_route(xml, "coreutils-minimal.tar"); - gen_parent_rom_route(xml, "vim-minimal.tar"); - gen_parent_rom_route(xml, "ncurses.lib.so"); - gen_parent_rom_route(xml, "posix.lib.so"); - gen_parent_rom_route(xml, "depot_users.tar"); - gen_parent_rom_route(xml, "vimrc", "config -> vimrc"); - gen_parent_rom_route(xml, "VERSION"); - gen_parent_route (xml); - gen_parent_route (xml); - gen_parent_route (xml); - gen_parent_route (xml); - - gen_service_node<::File_system::Session>(xml, [&] () { - xml.attribute("label", "report"); - xml.node("parent", [&] () { xml.attribute("label", "report"); }); - }); - - for_each_inspected_storage_target(devices, [&] (Storage_target const &target) { - gen_service_node<::File_system::Session>(xml, [&] () { - xml.attribute("label", target.label()); - gen_named_node(xml, "child", target.fs()); - }); - }); - - if (ram_fs_state.inspected) - gen_service_node<::File_system::Session>(xml, [&] () { - xml.attribute("label", "ram"); - gen_named_node(xml, "child", "ram_fs"); - }); - }); -} - - -void Sculpt::gen_file_browser(Xml_generator &xml, - Storage_devices const &devices, - Ram_fs_state const &ram_fs_state, - File_browser_version version) -{ - xml.node("start", [&] () { - gen_nit_fb_start(xml, "inspect"); }); - - xml.node("start", [&] () { - gen_terminal_start(xml, "inspect terminal", "inspect", - version); }); - - xml.node("start", [&] () { - gen_noux_start(xml, "inspect noux", "inspect terminal", - devices, ram_fs_state, version); }); -} diff --git a/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc b/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc new file mode 100644 index 000000000..7f342a2ad --- /dev/null +++ b/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc @@ -0,0 +1,338 @@ +/* + * \brief XML configuration for inspect view + * \author Norman Feske + * \date 2018-05-02 + */ + +/* + * Copyright (C) 2018 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU Affero General Public License version 3. + */ + +#include + +using namespace Sculpt; + + +template +static void for_each_inspected_storage_target(Storage_devices const &devices, FN const &fn) +{ + devices.for_each([&] (Storage_device const &device) { + device.for_each_partition([&] (Partition const &partition) { + if (partition.file_system.inspected) + fn(Storage_target { device.label, partition.number }); }); }); +} + + +static void gen_nit_fb_start(Xml_generator &xml) +{ + gen_common_start_content(xml, "nit_fb", Cap_quota{100}, Ram_quota{18*1024*1024}); + + xml.node("provides", [&] () { + gen_service_node(xml, [&] () {}); + gen_service_node(xml, [&] () {}); + }); + + xml.node("config", [&] () { }); + + xml.node("route", [&] () { + gen_parent_rom_route(xml, "nit_fb"); + gen_parent_rom_route(xml, "ld.lib.so"); + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route (xml); + }); +} + + +static void gen_terminal_start(Xml_generator &xml) +{ + gen_common_start_content(xml, "terminal", Cap_quota{100}, Ram_quota{4*1024*1024}); + + gen_provides(xml); + + xml.node("route", [&] () { + gen_service_node(xml, [&] () { + gen_named_node(xml, "child", "nit_fb"); }); + + gen_service_node(xml, [&] () { + gen_named_node(xml, "child", "nit_fb"); }); + + gen_parent_rom_route(xml, "config", "terminal.config"); + + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route(xml); + }); +} + + +static void gen_vfs_start(Xml_generator &xml, + Storage_devices const &devices, + Ram_fs_state const &ram_fs_state) +{ + gen_common_start_content(xml, "vfs", Cap_quota{200}, Ram_quota{5*1024*1024}); + + gen_provides<::File_system::Session>(xml); + + xml.node("config", [&] () { + + xml.node("vfs", [&] () { + gen_named_node(xml, "tar", "bash-minimal.tar"); + gen_named_node(xml, "tar", "coreutils-minimal.tar"); + gen_named_node(xml, "tar", "vim-minimal.tar"); + + gen_named_node(xml, "dir", "dev", [&] () { + xml.node("null", [&] () {}); + xml.node("zero", [&] () {}); + xml.node("terminal", [&] () {}); + gen_named_node(xml, "inline", "rtc", [&] () { + xml.append("2018-01-01 00:01"); + }); + gen_named_node(xml, "dir", "pipe", [&] () { + xml.node("pipe", [&] () { }); + }); + }); + + gen_named_node(xml, "dir", "share", [&] () { + gen_named_node(xml, "tar", "depot_users.tar"); }); + + auto fs_dir = [&] (String<64> const &label) { + gen_named_node(xml, "dir", label, [&] () { + xml.node("fs", [&] () { xml.attribute("label", label); }); }); }; + + fs_dir("config"); + fs_dir("report"); + + for_each_inspected_storage_target(devices, [&] (Storage_target const &target) { + fs_dir(target.label()); }); + + if (ram_fs_state.inspected) + fs_dir("ram"); + + gen_named_node(xml, "dir", "tmp", [&] () { + xml.node("ram", [&] () { }); }); + + gen_named_node(xml, "dir", "share", [&] () { + gen_named_node(xml, "dir", "vim", [&] () { + xml.node("rom", [&] () { + xml.attribute("name", "vimrc"); }); }); }); + + gen_named_node(xml, "rom", "VERSION"); + }); + + xml.node("default-policy", [&] () { + xml.attribute("root", "/"); + xml.attribute("writeable", "yes"); + }); + }); + + xml.node("route", [&] () { + + gen_service_node<::File_system::Session>(xml, [&] () { + xml.attribute("label", "config"); + xml.node("parent", [&] () { xml.attribute("label", "config"); }); + }); + + gen_service_node<::File_system::Session>(xml, [&] () { + xml.attribute("label", "report"); + xml.node("parent", [&] () { xml.attribute("label", "report"); }); + }); + + gen_service_node(xml, [&] () { + gen_named_node(xml, "child", "terminal"); }); + + xml.node("any-service", [&] () { + xml.node("parent", [&] () { }); }); + }); +} + + +static void gen_fs_rom_start(Xml_generator &xml) +{ + gen_common_start_content(xml, "vfs_rom", Cap_quota{100}, Ram_quota{15*1024*1024}); + + gen_named_node(xml, "binary", "cached_fs_rom", [&] () { }); + + gen_provides(xml); + + xml.node("config", [&] () { }); + + xml.node("route", [&] () { + gen_service_node<::File_system::Session>(xml, [&] () { + gen_named_node(xml, "child", "vfs"); }); + + xml.node("any-service", [&] () { xml.node("parent", [&] () { }); }); + }); +} + + +static void gen_bash_start(Xml_generator &xml) +{ + gen_common_start_content(xml, "bash", Cap_quota{400}, Ram_quota{15*1024*1024}); + + gen_named_node(xml, "binary", "/bin/bash", [&] () { }); + + xml.node("config", [&] () { + + xml.node("libc", [&] () { + xml.attribute("stdout", "/dev/terminal"); + xml.attribute("stderr", "/dev/terminal"); + xml.attribute("stdin", "/dev/terminal"); + xml.attribute("pipe", "/dev/pipe"); + xml.attribute("rtc", "/dev/rtc"); + }); + + xml.node("vfs", [&] () { xml.node("fs", [&] () { }); }); + + auto gen_env = [&] (auto key, auto value) { + xml.node("env", [&] () { + xml.attribute("key", key); + xml.attribute("value", value); }); }; + + gen_env("HOME", "/"); + gen_env("TERM", "screen"); + gen_env("PATH", "/bin"); + gen_env("PS1", "inspect:$PWD> "); + + xml.node("arg", [&] () { xml.attribute("value", "bash"); }); + }); + + xml.node("route", [&] () { + gen_service_node<::File_system::Session>(xml, [&] () { + gen_named_node(xml, "child", "vfs"); }); + + gen_service_node(xml, [&] () { + xml.attribute("label_last", "/bin/bash"); + gen_named_node(xml, "child", "vfs_rom"); + }); + + gen_service_node(xml, [&] () { + xml.attribute("label_prefix", "/bin"); + gen_named_node(xml, "child", "vfs_rom"); + }); + + xml.node("any-service", [&] () { xml.node("parent", [&] () { }); }); + }); +} + + +void Sculpt::gen_inspect_view(Xml_generator &xml, + Storage_devices const &devices, + Ram_fs_state const &ram_fs_state, + Inspect_view_version version) +{ + xml.node("start", [&] () { + + xml.attribute("version", version.value); + + gen_common_start_content(xml, "inspect", + Cap_quota{1000}, Ram_quota{76*1024*1024}); + + gen_named_node(xml, "binary", "init", [&] () { }); + + xml.node("config", [&] () { + + xml.node("parent-provides", [&] () { + gen_parent_service(xml); + gen_parent_service(xml); + gen_parent_service (xml); + gen_parent_service (xml); + gen_parent_service(xml); + gen_parent_service(xml); + gen_parent_service(xml); + gen_parent_service<::File_system::Session>(xml); + gen_parent_service(xml); + }); + + xml.node("start", [&] () { gen_nit_fb_start(xml); }); + xml.node("start", [&] () { gen_terminal_start(xml); }); + xml.node("start", [&] () { gen_vfs_start(xml, devices, ram_fs_state); }); + xml.node("start", [&] () { gen_fs_rom_start(xml); }); + xml.node("start", [&] () { gen_bash_start(xml); }); + }); + + xml.node("route", [&] () { + + gen_service_node<::File_system::Session>(xml, [&] () { + xml.attribute("label", "config"); + xml.node("parent", [&] () { xml.attribute("label", "config"); }); + }); + + gen_service_node<::File_system::Session>(xml, [&] () { + xml.attribute("label", "report"); + xml.node("parent", [&] () { xml.attribute("label", "report"); }); + }); + + gen_service_node<::File_system::Session>(xml, [&] () { + xml.attribute("label", "report"); + xml.node("parent", [&] () { xml.attribute("label", "report"); }); + }); + + gen_parent_rom_route(xml, "ld.lib.so"); + gen_parent_rom_route(xml, "init"); + gen_parent_rom_route(xml, "terminal"); + gen_parent_rom_route(xml, "vfs"); + gen_parent_rom_route(xml, "nit_fb"); + gen_parent_rom_route(xml, "cached_fs_rom"); + gen_parent_rom_route(xml, "vfs.lib.so"); + gen_parent_rom_route(xml, "vfs_pipe.lib.so"); + gen_parent_rom_route(xml, "vfs_ttf.lib.so"); + gen_parent_rom_route(xml, "libc.lib.so"); + gen_parent_rom_route(xml, "libm.lib.so"); + gen_parent_rom_route(xml, "bash-minimal.tar"); + gen_parent_rom_route(xml, "coreutils-minimal.tar"); + gen_parent_rom_route(xml, "vim-minimal.tar"); + gen_parent_rom_route(xml, "ncurses.lib.so"); + gen_parent_rom_route(xml, "posix.lib.so"); + gen_parent_rom_route(xml, "depot_users.tar"); + gen_parent_rom_route(xml, "vimrc", "config -> vimrc"); + gen_parent_rom_route(xml, "VERSION"); + gen_parent_rom_route(xml, "Vera.ttf"); + gen_parent_rom_route(xml, "VeraMono.ttf"); + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route (xml); + gen_parent_route (xml); + + for_each_inspected_storage_target(devices, [&] (Storage_target const &target) { + gen_service_node<::File_system::Session>(xml, [&] () { + xml.attribute("label_last", target.label()); + gen_named_node(xml, "child", target.fs()); + }); + }); + + if (ram_fs_state.inspected) + gen_service_node<::File_system::Session>(xml, [&] () { + xml.attribute("label_last", "ram"); + gen_named_node(xml, "child", "ram_fs"); + }); + + gen_service_node(xml, [&] () { + xml.node("parent", [&] () { + xml.attribute("label", String<64>("leitzentrale -> inspect")); }); }); + + gen_service_node(xml, [&] () { + xml.attribute("label", "terminal.config"); + xml.node("parent", [&] () { + xml.attribute("label", String<64>("config -> managed/fonts")); }); }); + + gen_service_node(xml, [&] () { + xml.attribute("label", "terminal -> clipboard"); + xml.node("parent", [&] () { + xml.attribute("label", String<64>("inspect -> clipboard")); }); }); + + gen_service_node(xml, [&] () { + xml.attribute("label", "terminal -> clipboard"); + xml.node("parent", [&] () { + xml.attribute("label", String<64>("inspect -> clipboard")); }); }); + }); + }); +} diff --git a/repos/gems/src/app/sculpt_manager/storage.h b/repos/gems/src/app/sculpt_manager/storage.h index 6c1bad0eb..78e99a0ea 100644 --- a/repos/gems/src/app/sculpt_manager/storage.h +++ b/repos/gems/src/app/sculpt_manager/storage.h @@ -56,7 +56,7 @@ struct Sculpt::Storage : Storage_dialog::Action, Ram_fs_dialog::Action Discovery_state _discovery_state { }; - File_browser_version _file_browser_version { 0 }; + Inspect_view_version _inspect_view_version { 0 }; Storage_dialog dialog { _storage_devices, _sculpt_partition }; @@ -149,21 +149,21 @@ struct Sculpt::Storage : Storage_dialog::Action, Ram_fs_dialog::Action partition.check_in_progress = true; }); } - void toggle_file_browser(Storage_target const &target) override + void toggle_inspect_view(Storage_target const &target) override { - File_browser_version const orig_version = _file_browser_version; + Inspect_view_version const orig_version = _inspect_view_version; if (target.ram_fs()) { _ram_fs_state.inspected = !_ram_fs_state.inspected; - _file_browser_version.value++; + _inspect_view_version.value++; } _apply_partition(target, [&] (Partition &partition) { partition.file_system.inspected = !partition.file_system.inspected; - _file_browser_version.value++; + _inspect_view_version.value++; }); - if (orig_version.value == _file_browser_version.value) + if (orig_version.value == _inspect_view_version.value) return; _runtime_config_generator.generate_runtime_config(); diff --git a/repos/gems/src/app/sculpt_manager/view/fs_dialog.h b/repos/gems/src/app/sculpt_manager/view/fs_dialog.h index e13663ccd..c2e452998 100644 --- a/repos/gems/src/app/sculpt_manager/view/fs_dialog.h +++ b/repos/gems/src/app/sculpt_manager/view/fs_dialog.h @@ -39,7 +39,7 @@ struct Sculpt::Fs_dialog : Noncopyable, Dialog struct Action : Interface { - virtual void toggle_file_browser(Storage_target const &) = 0; + virtual void toggle_inspect_view(Storage_target const &) = 0; virtual void use(Storage_target const &) = 0; }; @@ -70,7 +70,7 @@ struct Sculpt::Fs_dialog : Noncopyable, Dialog Click_result click(Action &action) { if (_inspect_item.hovered("browse")) - action.toggle_file_browser(_target); + action.toggle_inspect_view(_target); else if (_use_item.hovered("use")) action.use((_used_target == _target) ? Storage_target{ } : _target);