mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-09-19 22:01:12 +00:00
Small improvements [release]
This commit is contained in:
parent
849e8f0ef4
commit
516af8c66a
|
@ -3,6 +3,7 @@ package io.xpipe.app.comp.storage.store;
|
||||||
import atlantafx.base.controls.Spacer;
|
import atlantafx.base.controls.Spacer;
|
||||||
import io.xpipe.app.fxcomps.SimpleComp;
|
import io.xpipe.app.fxcomps.SimpleComp;
|
||||||
import io.xpipe.app.fxcomps.impl.PrettyImageComp;
|
import io.xpipe.app.fxcomps.impl.PrettyImageComp;
|
||||||
|
import io.xpipe.app.storage.DataStoreEntry;
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.geometry.Orientation;
|
import javafx.geometry.Orientation;
|
||||||
import javafx.scene.control.Label;
|
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) {
|
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()) {
|
for (StoreViewSection child : section.getChildren()) {
|
||||||
add(depth + 1, child, map);
|
add(depth + 1, child, map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int depth;
|
int depth;
|
||||||
StoreEntryWrapper wrapper;
|
DataStoreEntry entry;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Region createSimple() {
|
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 spacer = new Spacer(depth * 10, Orientation.HORIZONTAL);
|
||||||
var box = new HBox(spacer, label);
|
var box = new HBox(spacer, label);
|
||||||
return box;
|
return box;
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class StoreEntrySection extends Comp<CompStructure<VBox>> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompStructure<VBox> createBase() {
|
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 icon = Comp.of(() -> {
|
||||||
var padding = new FontIcon("mdal-arrow_forward_ios");
|
var padding = new FontIcon("mdal-arrow_forward_ios");
|
||||||
padding.setIconSize(14);
|
padding.setIconSize(14);
|
||||||
|
|
|
@ -14,15 +14,15 @@ import java.util.Comparator;
|
||||||
@Value
|
@Value
|
||||||
public class StoreViewSection implements StorageFilter.Filterable {
|
public class StoreViewSection implements StorageFilter.Filterable {
|
||||||
|
|
||||||
StoreEntryWrapper entry;
|
StoreEntryWrapper wrapper;
|
||||||
ObservableList<StoreViewSection> children;
|
ObservableList<StoreViewSection> children;
|
||||||
|
|
||||||
private static final Comparator<StoreViewSection> COMPARATOR = Comparator.<StoreViewSection, Instant>comparing(
|
private static final Comparator<StoreViewSection> COMPARATOR = Comparator.<StoreViewSection, Instant>comparing(
|
||||||
o -> o.entry.getEntry().getState().equals(DataStoreEntry.State.COMPLETE_AND_VALID)
|
o -> o.wrapper.getEntry().getState().equals(DataStoreEntry.State.COMPLETE_AND_VALID)
|
||||||
? o.entry.getEntry().getLastAccess()
|
? o.wrapper.getEntry().getLastAccess()
|
||||||
: Instant.EPOCH).reversed()
|
: Instant.EPOCH).reversed()
|
||||||
.thenComparing(
|
.thenComparing(
|
||||||
storeEntrySection -> storeEntrySection.entry.getEntry().getName());
|
storeEntrySection -> storeEntrySection.wrapper.getEntry().getName());
|
||||||
|
|
||||||
public static ObservableList<StoreViewSection> createTopLevels() {
|
public static ObservableList<StoreViewSection> createTopLevels() {
|
||||||
var filtered =
|
var filtered =
|
||||||
|
@ -67,7 +67,7 @@ public class StoreViewSection implements StorageFilter.Filterable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldShow(String filter) {
|
public boolean shouldShow(String filter) {
|
||||||
return entry.shouldShow(filter)
|
return wrapper.shouldShow(filter)
|
||||||
|| children.stream().anyMatch(storeEntrySection -> storeEntrySection.shouldShow(filter));
|
|| children.stream().anyMatch(storeEntrySection -> storeEntrySection.shouldShow(filter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,7 @@ public class ShellStoreChoiceComp<T extends ShellStore> extends SimpleComp {
|
||||||
.getValue(),
|
.getValue(),
|
||||||
new Label(AppI18n.get("none")),
|
new Label(AppI18n.get("none")),
|
||||||
n -> true);
|
n -> true);
|
||||||
|
comboBox.setSelectedDisplay(t -> createGraphic(t));
|
||||||
comboBox.setUnknownNode(t -> createGraphic(t));
|
comboBox.setUnknownNode(t -> createGraphic(t));
|
||||||
|
|
||||||
for (Map.Entry<StoreEntryWrapper, Region> e : map.entrySet()) {
|
for (Map.Entry<StoreEntryWrapper, Region> e : map.entrySet()) {
|
||||||
|
|
|
@ -43,7 +43,7 @@ public abstract class ExternalApplicationType implements PrefsChoiceValue {
|
||||||
+ "-dump | grep -o \"/.*%s.app\" | grep -v -E \"Caches|TimeMachine|Temporary|/Volumes/%s\" | uniq",
|
+ "-dump | grep -o \"/.*%s.app\" | grep -v -E \"Caches|TimeMachine|Temporary|/Volumes/%s\" | uniq",
|
||||||
applicationName, applicationName))
|
applicationName, applicationName))
|
||||||
.start()) {
|
.start()) {
|
||||||
var path = c.readOnlyStdout();
|
var path = c.readStdoutDiscardErr();
|
||||||
if (c.getExitCode() != 0) {
|
if (c.getExitCode() != 0) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ public interface CommandControl extends ProcessControl {
|
||||||
CommandControl exitTimeout(Integer timeout);
|
CommandControl exitTimeout(Integer timeout);
|
||||||
|
|
||||||
public void withStdoutOrThrow(Charsetter.FailableConsumer<InputStreamReader, Exception> c) throws Exception;
|
public void withStdoutOrThrow(Charsetter.FailableConsumer<InputStreamReader, Exception> c) throws Exception;
|
||||||
String readOnlyStdout() throws Exception;
|
String readStdoutDiscardErr() throws Exception;
|
||||||
|
|
||||||
public void discardOrThrow() throws Exception;
|
public void discardOrThrow() throws Exception;
|
||||||
|
|
||||||
|
|
|
@ -102,14 +102,14 @@ public interface OsType {
|
||||||
@Override
|
@Override
|
||||||
public String determineOperatingSystemName(ShellControl pc) throws Exception {
|
public String determineOperatingSystemName(ShellControl pc) throws Exception {
|
||||||
try (CommandControl c = pc.command("lsb_release -a").start()) {
|
try (CommandControl c = pc.command("lsb_release -a").start()) {
|
||||||
var text = c.readOnlyStdout();
|
var text = c.readStdoutDiscardErr();
|
||||||
if (c.getExitCode() == 0) {
|
if (c.getExitCode() == 0) {
|
||||||
return PropertiesFormatsParser.parse(text, ":").getOrDefault("Description", null);
|
return PropertiesFormatsParser.parse(text, ":").getOrDefault("Description", null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try (CommandControl c = pc.command("cat /etc/*release").start()) {
|
try (CommandControl c = pc.command("cat /etc/*release").start()) {
|
||||||
var text = c.readOnlyStdout();
|
var text = c.readStdoutDiscardErr();
|
||||||
if (c.getExitCode() == 0) {
|
if (c.getExitCode() == 0) {
|
||||||
return PropertiesFormatsParser.parse(text, "=").getOrDefault("PRETTY_NAME", null);
|
return PropertiesFormatsParser.parse(text, "=").getOrDefault("PRETTY_NAME", null);
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,7 @@ public interface OsType {
|
||||||
|
|
||||||
String type = "Unknown";
|
String type = "Unknown";
|
||||||
try (CommandControl c = pc.command("uname -o").start()) {
|
try (CommandControl c = pc.command("uname -o").start()) {
|
||||||
var text = c.readOnlyStdout();
|
var text = c.readStdoutDiscardErr();
|
||||||
if (c.getExitCode() == 0) {
|
if (c.getExitCode() == 0) {
|
||||||
type = text.strip();
|
type = text.strip();
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ public interface OsType {
|
||||||
|
|
||||||
String version = "?";
|
String version = "?";
|
||||||
try (CommandControl c = pc.command("uname -r").start()) {
|
try (CommandControl c = pc.command("uname -r").start()) {
|
||||||
var text = c.readOnlyStdout();
|
var text = c.readStdoutDiscardErr();
|
||||||
if (c.getExitCode() == 0) {
|
if (c.getExitCode() == 0) {
|
||||||
version = text.strip();
|
version = text.strip();
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import io.xpipe.core.util.SecretValue;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
@ -103,8 +104,9 @@ public interface ShellControl extends ProcessControl {
|
||||||
FailableFunction<ShellControl, String, Exception> command,
|
FailableFunction<ShellControl, String, Exception> command,
|
||||||
FailableFunction<ShellControl, String, Exception> terminalCommand);
|
FailableFunction<ShellControl, String, Exception> terminalCommand);
|
||||||
|
|
||||||
default CommandControl command(String command) {
|
default CommandControl command(String... command) {
|
||||||
return command(shellProcessControl -> 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) {
|
default CommandControl command(List<String> command) {
|
||||||
|
|
Loading…
Reference in a new issue