diff --git a/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionComp.java b/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionComp.java index 6cc69388c..8e58bd040 100644 --- a/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionComp.java +++ b/app/src/main/java/io/xpipe/app/browser/BrowserFileChooserSessionComp.java @@ -16,6 +16,7 @@ import io.xpipe.app.hub.comp.StoreViewState; import io.xpipe.app.platform.BindingsHelper; import io.xpipe.app.platform.InputHelper; import io.xpipe.app.platform.PlatformThread; +import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.util.FileReference; @@ -57,6 +58,10 @@ public class BrowserFileChooserSessionComp extends ModalOverlayContentComp { boolean save, boolean directory, Predicate filter) { + if (store.get() == null && DataStorage.get().getStoreEntries().stream().noneMatch(filter)) { + return; + } + var model = new BrowserFileChooserSessionModel(directory); model.setOnFinish(fileStores -> { file.accept(fileStores.size() > 0 ? fileStores.getFirst() : null); diff --git a/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java b/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java index 4e1c27fa1..e68025c0c 100644 --- a/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java +++ b/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java @@ -6,6 +6,7 @@ import io.xpipe.app.comp.BaseRegionBuilder; import io.xpipe.app.comp.base.ModalButton; import io.xpipe.app.comp.base.ModalOverlay; import io.xpipe.app.core.window.AppDialog; +import io.xpipe.app.ext.ProcessControlProvider; import io.xpipe.app.hub.comp.StoreLayoutComp; import io.xpipe.app.hub.comp.StoreViewState; import io.xpipe.app.platform.LabelGraphic; @@ -242,7 +243,7 @@ public class AppLayoutModel { AppI18n.observable("webtop"), new LabelGraphic.IconGraphic("mdal-desktop_mac"), null, - () -> Hyperlinks.open(Hyperlinks.GITHUB_WEBTOP), + () -> ProcessControlProvider.get().showWebtopDeploymentDialog(), null)); } else { l.add( diff --git a/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java b/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java index 0a04022f0..11c6b1e80 100644 --- a/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java +++ b/app/src/main/java/io/xpipe/app/ext/ProcessControlProvider.java @@ -89,4 +89,6 @@ public abstract class ProcessControlProvider { CommandBuilder b, String prefix, UUID requestId, UUID secretId, String... askpassName); public abstract void refreshWsl(); + + public abstract void showWebtopDeploymentDialog(); } diff --git a/lang/strings/translations_en.properties b/lang/strings/translations_en.properties index 15980186c..949efb676 100644 --- a/lang/strings/translations_en.properties +++ b/lang/strings/translations_en.properties @@ -2245,4 +2245,8 @@ webtop.displayName=XPipe Webtop webtop.displayDescription=Access and manage a webtop environment remotely webtopHost=Host webtopHostDescription=The container the webtop environment is running on +webtopDeploymentName=Hostname +webtopDeploymentNameDescription=The name of the container +webtopDeploymentType=Deployment type +webtopDeploymentTypeDescription=The kind of container system the webtop should be deployed on