Small improvements [release]

This commit is contained in:
crschnick 2023-03-13 19:47:24 +00:00
parent 849e8f0ef4
commit 516af8c66a
9 changed files with 23 additions and 18 deletions

View file

@ -3,6 +3,7 @@ package io.xpipe.app.comp.storage.store;
import atlantafx.base.controls.Spacer;
import io.xpipe.app.fxcomps.SimpleComp;
import io.xpipe.app.fxcomps.impl.PrettyImageComp;
import io.xpipe.app.storage.DataStoreEntry;
import javafx.beans.property.SimpleStringProperty;
import javafx.geometry.Orientation;
import javafx.scene.control.Label;
@ -29,18 +30,19 @@ public class StoreEntryFlatMiniSection extends SimpleComp {
}
private static void add(int depth, StoreViewSection section, Map<StoreEntryWrapper, Region> map) {
map.put(section.getEntry(), new StoreEntryFlatMiniSection(depth, section.getEntry()).createRegion());
map.put(section.getWrapper(), new StoreEntryFlatMiniSection(depth, section.getWrapper().getEntry()).createRegion());
for (StoreViewSection child : section.getChildren()) {
add(depth + 1, child, map);
}
}
int depth;
StoreEntryWrapper wrapper;
DataStoreEntry entry;
@Override
protected Region createSimple() {
var label = new Label(wrapper.getName(), new PrettyImageComp(new SimpleStringProperty(wrapper.getEntry().getProvider().getDisplayIconFileName()), 20, 20).createRegion());
var image = entry.getState() == DataStoreEntry.State.LOAD_FAILED ? "disabled_icon.png" : entry.getProvider().getDisplayIconFileName();
var label = new Label(entry.getName(), new PrettyImageComp(new SimpleStringProperty(image), 20, 20).createRegion());
var spacer = new Spacer(depth * 10, Orientation.HORIZONTAL);
var box = new HBox(spacer, label);
return box;

View file

@ -26,7 +26,7 @@ public class StoreEntrySection extends Comp<CompStructure<VBox>> {
@Override
public CompStructure<VBox> createBase() {
var root = new StoreEntryComp(section.getEntry()).apply(struc -> HBox.setHgrow(struc.get(), Priority.ALWAYS));
var root = new StoreEntryComp(section.getWrapper()).apply(struc -> HBox.setHgrow(struc.get(), Priority.ALWAYS));
var icon = Comp.of(() -> {
var padding = new FontIcon("mdal-arrow_forward_ios");
padding.setIconSize(14);

View file

@ -14,15 +14,15 @@ import java.util.Comparator;
@Value
public class StoreViewSection implements StorageFilter.Filterable {
StoreEntryWrapper entry;
StoreEntryWrapper wrapper;
ObservableList<StoreViewSection> children;
private static final Comparator<StoreViewSection> COMPARATOR = Comparator.<StoreViewSection, Instant>comparing(
o -> o.entry.getEntry().getState().equals(DataStoreEntry.State.COMPLETE_AND_VALID)
? o.entry.getEntry().getLastAccess()
o -> o.wrapper.getEntry().getState().equals(DataStoreEntry.State.COMPLETE_AND_VALID)
? o.wrapper.getEntry().getLastAccess()
: Instant.EPOCH).reversed()
.thenComparing(
storeEntrySection -> storeEntrySection.entry.getEntry().getName());
storeEntrySection -> storeEntrySection.wrapper.getEntry().getName());
public static ObservableList<StoreViewSection> createTopLevels() {
var filtered =
@ -67,7 +67,7 @@ public class StoreViewSection implements StorageFilter.Filterable {
@Override
public boolean shouldShow(String filter) {
return entry.shouldShow(filter)
return wrapper.shouldShow(filter)
|| children.stream().anyMatch(storeEntrySection -> storeEntrySection.shouldShow(filter));
}
}

View file

@ -84,6 +84,7 @@ public class ShellStoreChoiceComp<T extends ShellStore> extends SimpleComp {
.getValue(),
new Label(AppI18n.get("none")),
n -> true);
comboBox.setSelectedDisplay(t -> createGraphic(t));
comboBox.setUnknownNode(t -> createGraphic(t));
for (Map.Entry<StoreEntryWrapper, Region> e : map.entrySet()) {

View file

@ -43,7 +43,7 @@ public abstract class ExternalApplicationType implements PrefsChoiceValue {
+ "-dump | grep -o \"/.*%s.app\" | grep -v -E \"Caches|TimeMachine|Temporary|/Volumes/%s\" | uniq",
applicationName, applicationName))
.start()) {
var path = c.readOnlyStdout();
var path = c.readStdoutDiscardErr();
if (c.getExitCode() != 0) {
return Optional.empty();
}

View file

@ -64,7 +64,7 @@ public interface CommandControl extends ProcessControl {
CommandControl exitTimeout(Integer timeout);
public void withStdoutOrThrow(Charsetter.FailableConsumer<InputStreamReader, Exception> c) throws Exception;
String readOnlyStdout() throws Exception;
String readStdoutDiscardErr() throws Exception;
public void discardOrThrow() throws Exception;

View file

@ -102,14 +102,14 @@ public interface OsType {
@Override
public String determineOperatingSystemName(ShellControl pc) throws Exception {
try (CommandControl c = pc.command("lsb_release -a").start()) {
var text = c.readOnlyStdout();
var text = c.readStdoutDiscardErr();
if (c.getExitCode() == 0) {
return PropertiesFormatsParser.parse(text, ":").getOrDefault("Description", null);
}
}
try (CommandControl c = pc.command("cat /etc/*release").start()) {
var text = c.readOnlyStdout();
var text = c.readStdoutDiscardErr();
if (c.getExitCode() == 0) {
return PropertiesFormatsParser.parse(text, "=").getOrDefault("PRETTY_NAME", null);
}
@ -117,7 +117,7 @@ public interface OsType {
String type = "Unknown";
try (CommandControl c = pc.command("uname -o").start()) {
var text = c.readOnlyStdout();
var text = c.readStdoutDiscardErr();
if (c.getExitCode() == 0) {
type = text.strip();
}
@ -125,7 +125,7 @@ public interface OsType {
String version = "?";
try (CommandControl c = pc.command("uname -r").start()) {
var text = c.readOnlyStdout();
var text = c.readStdoutDiscardErr();
if (c.getExitCode() == 0) {
version = text.strip();
}

View file

@ -6,6 +6,7 @@ import io.xpipe.core.util.SecretValue;
import lombok.NonNull;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Semaphore;
import java.util.function.Consumer;
@ -103,8 +104,9 @@ public interface ShellControl extends ProcessControl {
FailableFunction<ShellControl, String, Exception> command,
FailableFunction<ShellControl, String, Exception> terminalCommand);
default CommandControl command(String command) {
return command(shellProcessControl -> command);
default CommandControl command(String... command) {
var c = Arrays.stream(command).filter(s -> s != null).toArray(String[]::new);
return command(shellProcessControl -> String.join("\n", c));
}
default CommandControl command(List<String> command) {

View file

@ -1 +1 @@
0.5.12
0.5.13