mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-09 04:15:52 +00:00
sculpt: show message when network is needed
Whenever Sculpt needs to download depot content but no network connectivity is provided, a message is displayed in the "Diagnostics" part of menu.
This commit is contained in:
parent
ac68073ffc
commit
6110e6561c
@ -51,30 +51,11 @@ void Sculpt::Deploy::_gen_missing_dependencies(Xml_generator &xml, Start_name co
|
||||
|
||||
void Sculpt::Deploy::gen_child_diagnostics(Xml_generator &xml) const
|
||||
{
|
||||
bool all_children_ok = true;
|
||||
_children.for_each_unsatisfied_child([&] (Xml_node, Xml_node) {
|
||||
all_children_ok = false; });
|
||||
|
||||
if (all_children_ok)
|
||||
return;
|
||||
|
||||
int count = 0;
|
||||
gen_named_node(xml, "frame", "diagnostics", [&] () {
|
||||
xml.node("vbox", [&] () {
|
||||
|
||||
xml.node("label", [&] () {
|
||||
xml.attribute("text", "Diagnostics"); });
|
||||
|
||||
xml.node("float", [&] () {
|
||||
xml.node("vbox", [&] () {
|
||||
_children.for_each_unsatisfied_child([&] (Xml_node start, Xml_node launcher) {
|
||||
Start_name const name = start.attribute_value("name", Start_name());
|
||||
_gen_missing_dependencies(xml, name, start, count);
|
||||
_gen_missing_dependencies(xml, name, launcher, count);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
_children.for_each_unsatisfied_child([&] (Xml_node start, Xml_node launcher) {
|
||||
Start_name const name = start.attribute_value("name", Start_name());
|
||||
_gen_missing_dependencies(xml, name, start, count);
|
||||
_gen_missing_dependencies(xml, name, launcher, count);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -174,6 +174,14 @@ struct Sculpt::Deploy
|
||||
*/
|
||||
bool update_child_conditions();
|
||||
|
||||
bool any_unsatisfied_child() const
|
||||
{
|
||||
bool all_satisfied = true;
|
||||
_children.for_each_unsatisfied_child([&] (Xml_node, Xml_node) {
|
||||
all_satisfied = false; });
|
||||
return !all_satisfied;
|
||||
}
|
||||
|
||||
void _gen_missing_dependencies(Xml_generator &, Start_name const &, Xml_node, int &) const;
|
||||
|
||||
void gen_child_diagnostics(Xml_generator &xml) const;
|
||||
|
@ -284,7 +284,43 @@ struct Sculpt::Main : Input_event_handler,
|
||||
xml.attribute("font", "title/regular");
|
||||
});
|
||||
|
||||
_deploy.gen_child_diagnostics(xml);
|
||||
bool const network_missing = _deploy.update_needed()
|
||||
&& !_network._nic_state.ready();
|
||||
bool const show_diagnostics =
|
||||
_deploy.any_unsatisfied_child() || network_missing;
|
||||
|
||||
auto gen_network_diagnostics = [&] (Xml_generator &xml)
|
||||
{
|
||||
if (!network_missing)
|
||||
return;
|
||||
|
||||
gen_named_node(xml, "hbox", "network", [&] () {
|
||||
gen_named_node(xml, "float", "left", [&] () {
|
||||
xml.attribute("west", "yes");
|
||||
xml.node("label", [&] () {
|
||||
xml.attribute("text", "network needed for installation");
|
||||
xml.attribute("font", "annotation/regular");
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
if (show_diagnostics) {
|
||||
gen_named_node(xml, "frame", "diagnostics", [&] () {
|
||||
xml.node("vbox", [&] () {
|
||||
|
||||
xml.node("label", [&] () {
|
||||
xml.attribute("text", "Diagnostics"); });
|
||||
|
||||
xml.node("float", [&] () {
|
||||
xml.node("vbox", [&] () {
|
||||
gen_network_diagnostics(xml);
|
||||
_deploy.gen_child_diagnostics(xml);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Xml_node const state = _update_state_rom.xml();
|
||||
if (_update_running() && state.attribute_value("progress", false))
|
||||
|
Loading…
x
Reference in New Issue
Block a user