sculpt: remove noux runtime from inspect view

Issue #3696
This commit is contained in:
Norman Feske 2020-03-25 20:23:40 +01:00 committed by Christian Helmuth
parent 5347278136
commit 42a77c531a
10 changed files with 362 additions and 252 deletions

View File

@ -21,7 +21,6 @@ _/src/file_terminal
_/src/libc
_/src/posix
_/src/ncurses
_/src/noux
_/src/bash-minimal
_/src/vim-minimal
_/src/coreutils-minimal

View File

@ -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 {
<child name="config_rom"/> </service>
<service name="ROM" label_prefix="leitzentrale ->">
<child name="leitzentrale"/> </service>
<service name="ROM" label="inspect terminal -> clipboard">
<service name="ROM" label="inspect -> clipboard">
<child name="report_rom" label="clipboard"/> </service>
<service name="ROM" label="editor -> clipboard">
<child name="report_rom" label="clipboard"/> </service>
<service name="ROM" label_last="cached_fs_rom"> <!-- for Linux -->
<parent label="fs_rom"/> </service>
<service name="Report" label="inspect -> clipboard">
<child name="report_rom" label="clipboard"/> </service>
<service name="Report" label="editor -> clipboard">
<child name="report_rom" label="clipboard"/> </service>
<service name="File_system" label="config">

View File

@ -467,11 +467,11 @@ install_config {
<service name="Nitpicker"> <child name="nitpicker"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Report" label_suffix="-> shape"> <child name="pointer"/> </service>
<service name="Report" label="inspect terminal -> clipboard">
<service name="Report" label="inspect -> clipboard">
<child name="clipboard" label="leitzentrale -> manager -> fader -> -> clipboard"/> </service>
<service name="Report" label="editor -> clipboard">
<child name="clipboard" label="leitzentrale -> manager -> fader -> -> clipboard"/> </service>
<service name="ROM" label="inspect terminal -> clipboard">
<service name="ROM" label="inspect -> clipboard">
<child name="clipboard" label="leitzentrale -> manager -> fader -> -> clipboard"/> </service>
<service name="ROM" label="editor -> clipboard">
<child name="clipboard" label="leitzentrale -> manager -> fader -> -> clipboard"/> </service>

View File

@ -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

View File

@ -18,7 +18,7 @@
#include <runtime/depot_query.cc>
#include <runtime/launcher_query.cc>
#include <runtime/e2fs.cc>
#include <runtime/file_browser.cc>
#include <runtime/inspect_view.cc>
#include <runtime/file_system.cc>
#include <runtime/fs_rom.cc>
#include <runtime/gpt_write.cc>

View File

@ -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 &);

View File

@ -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 <runtime.h>
namespace Sculpt {
template <typename FN>
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<Framebuffer::Session>(xml, [&] () {});
gen_service_node<Input::Session>(xml, [&] () {});
});
xml.node("config", [&] () { });
xml.node("route", [&] () {
gen_service_node<Nitpicker::Session>(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<Cpu_session> (xml);
gen_parent_route<Pd_session> (xml);
gen_parent_route<Log_session> (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<Terminal::Session>(xml);
xml.node("route", [&] () {
gen_service_node<Framebuffer::Session>(xml, [&] () {
gen_named_node(xml, "child", nit_fb_name); });
gen_service_node<Input::Session>(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<Cpu_session> (xml);
gen_parent_route<Pd_session> (xml);
gen_parent_route<Log_session> (xml);
gen_parent_route<Timer::Session> (xml);
gen_parent_route<Report::Session>(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<Terminal::Session>(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<Cpu_session> (xml);
gen_parent_route<Pd_session> (xml);
gen_parent_route<Log_session> (xml);
gen_parent_route<Timer::Session> (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); });
}

View File

@ -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 <runtime.h>
using namespace Sculpt;
template <typename FN>
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<Framebuffer::Session>(xml, [&] () {});
gen_service_node<Input::Session>(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<Cpu_session> (xml);
gen_parent_route<Pd_session> (xml);
gen_parent_route<Log_session> (xml);
gen_parent_route<Nitpicker::Session> (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<Terminal::Session>(xml);
xml.node("route", [&] () {
gen_service_node<Framebuffer::Session>(xml, [&] () {
gen_named_node(xml, "child", "nit_fb"); });
gen_service_node<Input::Session>(xml, [&] () {
gen_named_node(xml, "child", "nit_fb"); });
gen_parent_rom_route(xml, "config", "terminal.config");
gen_parent_route<Rom_session> (xml);
gen_parent_route<Cpu_session> (xml);
gen_parent_route<Pd_session> (xml);
gen_parent_route<Log_session> (xml);
gen_parent_route<Timer::Session> (xml);
gen_parent_route<Report::Session>(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<Terminal::Session>(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<Rom_session>(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<Rom_session>(xml, [&] () {
xml.attribute("label_last", "/bin/bash");
gen_named_node(xml, "child", "vfs_rom");
});
gen_service_node<Rom_session>(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<Rom_session>(xml);
gen_parent_service<Cpu_session>(xml);
gen_parent_service<Pd_session> (xml);
gen_parent_service<Rm_session> (xml);
gen_parent_service<Log_session>(xml);
gen_parent_service<Timer::Session>(xml);
gen_parent_service<Report::Session>(xml);
gen_parent_service<::File_system::Session>(xml);
gen_parent_service<Nitpicker::Session>(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<Cpu_session> (xml);
gen_parent_route<Pd_session> (xml);
gen_parent_route<Rm_session> (xml);
gen_parent_route<Log_session> (xml);
gen_parent_route<Timer::Session> (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<Nitpicker::Session>(xml, [&] () {
xml.node("parent", [&] () {
xml.attribute("label", String<64>("leitzentrale -> inspect")); }); });
gen_service_node<Rom_session>(xml, [&] () {
xml.attribute("label", "terminal.config");
xml.node("parent", [&] () {
xml.attribute("label", String<64>("config -> managed/fonts")); }); });
gen_service_node<Rom_session>(xml, [&] () {
xml.attribute("label", "terminal -> clipboard");
xml.node("parent", [&] () {
xml.attribute("label", String<64>("inspect -> clipboard")); }); });
gen_service_node<Report::Session>(xml, [&] () {
xml.attribute("label", "terminal -> clipboard");
xml.node("parent", [&] () {
xml.attribute("label", String<64>("inspect -> clipboard")); }); });
});
});
}

View File

@ -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();

View File

@ -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);