mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-11-25 17:10:27 +00:00
Rework
This commit is contained in:
parent
7b26984773
commit
4a2bc6a458
41 changed files with 276 additions and 50 deletions
|
@ -239,9 +239,7 @@ public abstract class StoreEntryComp extends SimpleComp {
|
|||
var button =
|
||||
new IconButtonComp(cs.getIcon(wrapper.getEntry().ref()), leaf != null ? () -> {
|
||||
ThreadHelper.runFailableAsync(() -> {
|
||||
var action = leaf.createAction(
|
||||
wrapper.getEntry().ref());
|
||||
action.execute();
|
||||
wrapper.runAction(leaf.createAction(wrapper.getEntry().ref()), leaf.showBusy());
|
||||
});
|
||||
} : null);
|
||||
if (branch != null) {
|
||||
|
@ -314,26 +312,6 @@ public abstract class StoreEntryComp extends SimpleComp {
|
|||
contextMenu.getItems().add(browse);
|
||||
}
|
||||
|
||||
if (wrapper.getEntry().getValidity().isUsable()) {
|
||||
var color = new Menu(AppI18n.get("color"), new FontIcon("mdi2f-format-color-fill"));
|
||||
var none = new MenuItem("None");
|
||||
none.setOnAction(event -> {
|
||||
wrapper.getEntry().setColor(null);
|
||||
event.consume();
|
||||
});
|
||||
color.getItems().add(none);
|
||||
|
||||
Arrays.stream(DataStoreColor.values()).forEach(dataStoreColor -> {
|
||||
MenuItem m = new MenuItem(DataStoreFormatter.capitalize(dataStoreColor.getId()));
|
||||
m.setOnAction(event -> {
|
||||
wrapper.getEntry().setColor(dataStoreColor);
|
||||
event.consume();
|
||||
});
|
||||
color.getItems().add(m);
|
||||
});
|
||||
contextMenu.getItems().add(color);
|
||||
}
|
||||
|
||||
if (DataStorage.get().isRootEntry(wrapper.getEntry())) {
|
||||
var color = new Menu(AppI18n.get("color"), new FontIcon("mdi2f-format-color-fill"));
|
||||
var none = new MenuItem("None");
|
||||
|
@ -473,9 +451,7 @@ public abstract class StoreEntryComp extends SimpleComp {
|
|||
run.textProperty().bind(AppI18n.observable("base.execute"));
|
||||
run.setOnAction(event -> {
|
||||
ThreadHelper.runFailableAsync(() -> {
|
||||
p.getLeafDataStoreCallSite()
|
||||
.createAction(wrapper.getEntry().ref())
|
||||
.execute();
|
||||
wrapper.runAction(leaf.createAction(wrapper.getEntry().ref()), leaf.showBusy());
|
||||
});
|
||||
});
|
||||
menu.getItems().add(run);
|
||||
|
@ -521,15 +497,13 @@ public abstract class StoreEntryComp extends SimpleComp {
|
|||
|
||||
event.consume();
|
||||
ThreadHelper.runFailableAsync(() -> {
|
||||
var action = leaf.createAction(wrapper.getEntry().ref());
|
||||
action.execute();
|
||||
wrapper.runAction(leaf.createAction(wrapper.getEntry().ref()), leaf.showBusy());
|
||||
});
|
||||
});
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
private static String DEFAULT_NOTES = null;
|
||||
|
||||
private static String getDefaultNotes() {
|
||||
|
|
|
@ -130,7 +130,7 @@ public class StoreEntryWrapper {
|
|||
color.setValue(entry.getColor());
|
||||
notes.setValue(new StoreNotes(entry.getNotes(), entry.getNotes()));
|
||||
|
||||
busy.setValue(entry.isInRefresh());
|
||||
busy.setValue(entry.getBusyCounter().get() != 0);
|
||||
deletable.setValue(entry.getConfiguration().isDeletable()
|
||||
|| AppPrefs.get().developerDisableGuiRestrictions().getValue());
|
||||
|
||||
|
@ -222,12 +222,26 @@ public class StoreEntryWrapper {
|
|||
var found = getDefaultActionProvider().getValue();
|
||||
entry.notifyUpdate(true, false);
|
||||
if (found != null) {
|
||||
found.getDefaultDataStoreCallSite().createAction(entry.ref()).execute();
|
||||
var act = found.getDefaultDataStoreCallSite().createAction(entry.ref());
|
||||
runAction(act,found.getDefaultDataStoreCallSite().showBusy());
|
||||
} else {
|
||||
entry.setExpanded(!entry.isExpanded());
|
||||
}
|
||||
}
|
||||
|
||||
public void runAction(ActionProvider.Action action, boolean showBusy) throws Exception {
|
||||
try {
|
||||
if (showBusy) {
|
||||
getEntry().incrementBusyCounter();
|
||||
}
|
||||
action.execute();
|
||||
} finally {
|
||||
if (showBusy) {
|
||||
getEntry().decrementBusyCounter();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void toggleExpanded() {
|
||||
this.expanded.set(!expanded.getValue());
|
||||
}
|
||||
|
|
|
@ -88,6 +88,10 @@ public interface ActionProvider {
|
|||
default boolean isApplicable(DataStoreEntryRef<T> o) {
|
||||
return true;
|
||||
}
|
||||
|
||||
default boolean showBusy() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
interface DataStoreCallSite<T extends DataStore> {
|
||||
|
@ -109,6 +113,10 @@ public interface ActionProvider {
|
|||
String getIcon(DataStoreEntryRef<T> store);
|
||||
|
||||
Class<T> getApplicableClass();
|
||||
|
||||
default boolean showBusy() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
interface BranchDataStoreCallSite<T extends DataStore> extends DataStoreCallSite<T> {
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
package io.xpipe.app.storage;
|
||||
|
||||
import io.xpipe.app.comp.store.StoreSortMode;
|
||||
import io.xpipe.app.ext.DataStorageExtensionProvider;
|
||||
import io.xpipe.app.issue.ErrorEvent;
|
||||
import io.xpipe.app.prefs.AppPrefs;
|
||||
import io.xpipe.app.util.FixedHierarchyStore;
|
||||
import io.xpipe.app.util.ThreadHelper;
|
||||
import io.xpipe.core.store.*;
|
||||
import io.xpipe.core.store.DataStore;
|
||||
import io.xpipe.core.store.FixedChildStore;
|
||||
import io.xpipe.core.store.LocalStore;
|
||||
import io.xpipe.core.store.StorePath;
|
||||
import io.xpipe.core.util.UuidHelper;
|
||||
import javafx.util.Pair;
|
||||
import lombok.Getter;
|
||||
|
@ -338,15 +340,15 @@ public abstract class DataStorage {
|
|||
return false;
|
||||
}
|
||||
|
||||
e.setInRefresh(true);
|
||||
e.incrementBusyCounter();
|
||||
List<? extends DataStoreEntryRef<? extends FixedChildStore>> newChildren;
|
||||
try {
|
||||
newChildren = ((FixedHierarchyStore) (e.getStore())).listChildren(e);
|
||||
e.setInRefresh(false);
|
||||
} catch (Exception ex) {
|
||||
e.setInRefresh(false);
|
||||
ErrorEvent.fromThrowable(ex).handle();
|
||||
return false;
|
||||
} finally {
|
||||
e.decrementBusyCounter();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.nio.file.Files;
|
|||
import java.nio.file.Path;
|
||||
import java.time.Instant;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
@ -46,8 +47,7 @@ public class DataStoreEntry extends StorageElement {
|
|||
@NonFinal
|
||||
boolean expanded;
|
||||
|
||||
@NonFinal
|
||||
boolean inRefresh;
|
||||
AtomicInteger busyCounter = new AtomicInteger();
|
||||
|
||||
@Getter
|
||||
@NonFinal
|
||||
|
@ -323,14 +323,21 @@ public class DataStoreEntry extends StorageElement {
|
|||
return getName();
|
||||
}
|
||||
|
||||
public void setInRefresh(boolean newRefresh) {
|
||||
var changed = inRefresh != newRefresh;
|
||||
if (changed) {
|
||||
this.inRefresh = newRefresh;
|
||||
public void incrementBusyCounter() {
|
||||
var r = busyCounter.incrementAndGet() == 1;
|
||||
if (r) {
|
||||
notifyUpdate(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean decrementBusyCounter() {
|
||||
var r = busyCounter.decrementAndGet() == 0;
|
||||
if (r) {
|
||||
notifyUpdate(false, false);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
public <T extends DataStore> DataStoreEntryRef<T> ref() {
|
||||
return new DataStoreEntryRef<>(this);
|
||||
}
|
||||
|
@ -503,7 +510,7 @@ public class DataStoreEntry extends StorageElement {
|
|||
|
||||
try {
|
||||
store.checkComplete();
|
||||
setInRefresh(true);
|
||||
incrementBusyCounter();
|
||||
if (store instanceof ValidatableStore l) {
|
||||
l.validate();
|
||||
} else if (store instanceof FixedHierarchyStore h) {
|
||||
|
@ -512,7 +519,7 @@ public class DataStoreEntry extends StorageElement {
|
|||
.collect(Collectors.toSet());
|
||||
}
|
||||
} finally {
|
||||
setInRefresh(false);
|
||||
decrementBusyCounter();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -547,14 +554,13 @@ public class DataStoreEntry extends StorageElement {
|
|||
public void initializeEntry() {
|
||||
if (store instanceof ExpandedLifecycleStore lifecycleStore) {
|
||||
try {
|
||||
inRefresh = true;
|
||||
incrementBusyCounter();
|
||||
notifyUpdate(false, false);
|
||||
lifecycleStore.initializeValidate();
|
||||
inRefresh = false;
|
||||
} catch (Exception e) {
|
||||
inRefresh = false;
|
||||
ErrorEvent.fromThrowable(e).handle();
|
||||
} finally {
|
||||
decrementBusyCounter();
|
||||
notifyUpdate(false, false);
|
||||
}
|
||||
}
|
||||
|
@ -564,12 +570,13 @@ public class DataStoreEntry extends StorageElement {
|
|||
public void finalizeEntry() {
|
||||
if (store instanceof ExpandedLifecycleStore lifecycleStore) {
|
||||
try {
|
||||
inRefresh = true;
|
||||
incrementBusyCounter();
|
||||
notifyUpdate(false, false);
|
||||
lifecycleStore.finalizeValidate();
|
||||
} catch (Exception e) {
|
||||
ErrorEvent.fromThrowable(e).handle();
|
||||
} finally {
|
||||
decrementBusyCounter();
|
||||
notifyUpdate(false, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -473,3 +473,8 @@ api=API
|
|||
storeIntroImportDescription=Bruger du allerede XPipe på et andet system? Synkroniser dine eksisterende forbindelser på tværs af flere systemer via et eksternt git-repository. Du kan også synkronisere senere når som helst, hvis det ikke er sat op endnu.
|
||||
importConnections=Synkroniser forbindelser
|
||||
importConnectionsTitle=Importer forbindelser
|
||||
showAllChildren=Vis alle børn
|
||||
httpApi=HTTP API
|
||||
isOnlySupportedLimit=understøttes kun med en professionel licens, når man har mere end $COUNT$ forbindelser
|
||||
areOnlySupportedLimit=understøttes kun med en professionel licens, når man har mere end $COUNT$ forbindelser
|
||||
enabled=Aktiveret
|
||||
|
|
|
@ -467,3 +467,8 @@ api=API
|
|||
storeIntroImportDescription=Benutzt du XPipe bereits auf einem anderen System? Synchronisiere deine bestehenden Verbindungen über mehrere Systeme hinweg über ein Remote-Git-Repository. Du kannst auch später jederzeit synchronisieren, wenn es noch nicht eingerichtet ist.
|
||||
importConnections=Synchronisierte Verbindungen
|
||||
importConnectionsTitle=Verbindungen importieren
|
||||
showAllChildren=Alle Kinder anzeigen
|
||||
httpApi=HTTP-API
|
||||
isOnlySupportedLimit=wird nur mit einer professionellen Lizenz unterstützt, wenn mehr als $COUNT$ Verbindungen bestehen
|
||||
areOnlySupportedLimit=werden nur mit einer professionellen Lizenz unterstützt, wenn mehr als $COUNT$ Verbindungen bestehen
|
||||
enabled=Aktiviert
|
||||
|
|
|
@ -475,5 +475,6 @@ importConnections=Sync connections
|
|||
importConnectionsTitle=Import Connections
|
||||
showAllChildren=Show all children
|
||||
httpApi=HTTP API
|
||||
isOnlySupportedLimit=is only supported with a professional license when having more than $COUNT$ active connections
|
||||
areOnlySupportedLimit=are only supported with a professional license when having more than $COUNT$ active connections
|
||||
isOnlySupportedLimit=is only supported with a professional license when having more than $COUNT$ connections
|
||||
areOnlySupportedLimit=are only supported with a professional license when having more than $COUNT$ connections
|
||||
enabled=Enabled
|
||||
|
|
|
@ -454,3 +454,8 @@ api=API
|
|||
storeIntroImportDescription=¿Ya utilizas XPipe en otro sistema? Sincroniza tus conexiones existentes en varios sistemas a través de un repositorio git remoto. También puedes sincronizar más tarde en cualquier momento si aún no está configurado.
|
||||
importConnections=Sincronizar conexiones
|
||||
importConnectionsTitle=Importar conexiones
|
||||
showAllChildren=Mostrar todos los niños
|
||||
httpApi=API HTTP
|
||||
isOnlySupportedLimit=sólo es compatible con una licencia profesional cuando tiene más de $COUNT$ conexiones
|
||||
areOnlySupportedLimit=sólo son compatibles con una licencia profesional cuando tienen más de $COUNT$ conexiones
|
||||
enabled=Activado
|
||||
|
|
|
@ -454,3 +454,8 @@ api=API
|
|||
storeIntroImportDescription=Tu utilises déjà XPipe sur un autre système ? Synchronise tes connexions existantes sur plusieurs systèmes grâce à un dépôt git distant. Tu peux aussi synchroniser plus tard à tout moment si ce n'est pas encore configuré.
|
||||
importConnections=Synchronisation des connexions
|
||||
importConnectionsTitle=Importer des connexions
|
||||
showAllChildren=Afficher tous les enfants
|
||||
httpApi=API HTTP
|
||||
isOnlySupportedLimit=n'est pris en charge qu'avec une licence professionnelle lorsqu'il y a plus de $COUNT$ connexions
|
||||
areOnlySupportedLimit=ne sont pris en charge qu'avec une licence professionnelle lorsqu'il y a plus de $COUNT$ connexions
|
||||
enabled=Activé
|
||||
|
|
|
@ -454,3 +454,8 @@ api=API
|
|||
storeIntroImportDescription=Stai già usando XPipe su un altro sistema? Sincronizza le connessioni esistenti su più sistemi attraverso un repository git remoto. Puoi anche sincronizzare in seguito, in qualsiasi momento, se non è ancora stato configurato.
|
||||
importConnections=Connessioni di sincronizzazione
|
||||
importConnectionsTitle=Importazione di connessioni
|
||||
showAllChildren=Mostra tutti i bambini
|
||||
httpApi=API HTTP
|
||||
isOnlySupportedLimit=è supportato solo con una licenza professionale quando ci sono più di $COUNT$ connessioni
|
||||
areOnlySupportedLimit=sono supportati solo con una licenza professionale quando ci sono più di $COUNT$ connessioni
|
||||
enabled=Abilitato
|
||||
|
|
|
@ -454,3 +454,8 @@ api=API
|
|||
storeIntroImportDescription=すでに他のシステムでXPipeを使っている?リモートgitリポジトリを通して、複数のシステム間で既存の接続を同期する。まだ設定されていない場合は、後からいつでも同期することもできる。
|
||||
importConnections=シンク接続
|
||||
importConnectionsTitle=コネクションのインポート
|
||||
showAllChildren=すべての子供を表示する
|
||||
httpApi=HTTP API
|
||||
isOnlySupportedLimit=は、$COUNT$ を超える接続がある場合、プロフェッショナルライセンスでのみサポートされる。
|
||||
areOnlySupportedLimit=$COUNT$ 以上の接続がある場合、プロフェッショナルライセンスでのみサポートされる。
|
||||
enabled=有効にする
|
||||
|
|
|
@ -454,3 +454,8 @@ api=API
|
|||
storeIntroImportDescription=Gebruik je XPipe al op een ander systeem? Synchroniseer je bestaande verbindingen over meerdere systemen via een remote git repository. Je kunt ook later synchroniseren op elk gewenst moment als het nog niet is ingesteld.
|
||||
importConnections=Synchronisatieverbindingen
|
||||
importConnectionsTitle=Verbindingen importeren
|
||||
showAllChildren=Toon alle kinderen
|
||||
httpApi=HTTP API
|
||||
isOnlySupportedLimit=wordt alleen ondersteund met een professionele licentie bij meer dan $COUNT$ verbindingen
|
||||
areOnlySupportedLimit=worden alleen ondersteund met een professionele licentie bij meer dan $COUNT$ verbindingen
|
||||
enabled=Ingeschakeld
|
||||
|
|
|
@ -454,3 +454,8 @@ api=API
|
|||
storeIntroImportDescription=Já estás a utilizar o XPipe noutro sistema? Sincroniza as tuas ligações existentes em vários sistemas através de um repositório git remoto. Também podes sincronizar mais tarde, a qualquer momento, se ainda não estiver configurado.
|
||||
importConnections=Sincroniza ligações
|
||||
importConnectionsTitle=Importar ligações
|
||||
showAllChildren=Mostra todas as crianças
|
||||
httpApi=API HTTP
|
||||
isOnlySupportedLimit=só é suportado com uma licença profissional se tiver mais de $COUNT$ ligações
|
||||
areOnlySupportedLimit=só são suportados com uma licença profissional quando têm mais de $COUNT$ ligações
|
||||
enabled=Ativado
|
||||
|
|
|
@ -454,3 +454,8 @@ api=API
|
|||
storeIntroImportDescription=Уже используешь XPipe на другой системе? Синхронизируй существующие соединения на нескольких системах через удаленный git-репозиторий. Ты также можешь синхронизировать позже в любой момент, если он еще не настроен.
|
||||
importConnections=Синхронизация соединений
|
||||
importConnectionsTitle=Импортные соединения
|
||||
showAllChildren=Показать всех детей
|
||||
httpApi=HTTP API
|
||||
isOnlySupportedLimit=поддерживается только профессиональной лицензией при наличии более $COUNT$ соединений
|
||||
areOnlySupportedLimit=поддерживаются только профессиональной лицензией при наличии более чем $COUNT$ соединений
|
||||
enabled=Включено
|
||||
|
|
|
@ -455,3 +455,8 @@ api=API
|
|||
storeIntroImportDescription=XPipe'ı zaten başka bir sistemde mi kullanıyorsunuz? Mevcut bağlantılarınızı uzak bir git deposu aracılığıyla birden fazla sistem arasında senkronize edin. Henüz kurulmamışsa daha sonra istediğiniz zaman senkronize edebilirsiniz.
|
||||
importConnections=Senkronizasyon bağlantıları
|
||||
importConnectionsTitle=Bağlantıları İçe Aktar
|
||||
showAllChildren=Tüm çocukları göster
|
||||
httpApi=HTTP API
|
||||
isOnlySupportedLimit=yalnızca $COUNT$ adresinden daha fazla bağlantıya sahip olunduğunda profesyonel lisans ile desteklenir
|
||||
areOnlySupportedLimit=yalnızca $COUNT$ adresinden daha fazla bağlantıya sahip olunduğunda profesyonel lisans ile desteklenir
|
||||
enabled=Etkin
|
||||
|
|
|
@ -454,3 +454,8 @@ api=应用程序接口
|
|||
storeIntroImportDescription=已经在其他系统上使用 XPipe?通过远程 git 仓库在多个系统间同步您的现有连接。如果尚未设置,您也可以稍后随时同步。
|
||||
importConnections=同步连接
|
||||
importConnectionsTitle=导入连接
|
||||
showAllChildren=显示所有儿童
|
||||
httpApi=HTTP API
|
||||
isOnlySupportedLimit=只有在连接数超过$COUNT$ 时才支持专业许可证
|
||||
areOnlySupportedLimit=只有在连接数超过$COUNT$ 时才支持专业许可证
|
||||
enabled=已启用
|
||||
|
|
|
@ -158,3 +158,8 @@ initScript=Kører på shell init
|
|||
shellScript=Gør script tilgængeligt under shell-session
|
||||
fileScript=Gør det muligt at kalde et script med filargumenter i filbrowseren
|
||||
runScript=Kør script ...
|
||||
copyUrl=Kopier URL
|
||||
fixedServiceGroup.displayName=Service-gruppe
|
||||
fixedServiceGroup.displayDescription=Liste over tilgængelige tjenester på et system
|
||||
mappedService.displayName=Service
|
||||
mappedService.displayDescription=Interagere med en tjeneste, der er eksponeret af en container
|
||||
|
|
|
@ -149,3 +149,8 @@ initScript=Auf der Shell init ausführen
|
|||
shellScript=Skript während der Shell-Sitzung verfügbar machen
|
||||
fileScript=Skriptaufruf mit Dateiargumenten im Dateibrowser zulassen
|
||||
runScript=Skript ausführen ...
|
||||
copyUrl=URL kopieren
|
||||
fixedServiceGroup.displayName=Dienstgruppe
|
||||
fixedServiceGroup.displayDescription=Liste der verfügbaren Dienste auf einem System
|
||||
mappedService.displayName=Dienst
|
||||
mappedService.displayDescription=Interaktion mit einem Dienst, der von einem Container angeboten wird
|
||||
|
|
|
@ -147,5 +147,10 @@ initScript=Run on shell init
|
|||
shellScript=Make script available during shell session
|
||||
fileScript=Allow script to be called with file arguments in the file browser
|
||||
runScript=Run script with
|
||||
copyUrl=Copy URL
|
||||
fixedServiceGroup.displayName=Service group
|
||||
fixedServiceGroup.displayDescription=List the available services on a system
|
||||
mappedService.displayName=Service
|
||||
mappedService.displayDescription=Interact with a service exposed by a container
|
||||
|
||||
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=Ejecutar en shell init
|
|||
shellScript=Hacer que el script esté disponible durante la sesión shell
|
||||
fileScript=Permitir llamar a un script con argumentos de archivo en el explorador de archivos
|
||||
runScript=Ejecutar script ...
|
||||
copyUrl=Copiar URL
|
||||
fixedServiceGroup.displayName=Grupo de servicios
|
||||
fixedServiceGroup.displayDescription=Enumerar los servicios disponibles en un sistema
|
||||
mappedService.displayName=Servicio
|
||||
mappedService.displayDescription=Interactúa con un servicio expuesto por un contenedor
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=Exécute sur le shell init
|
|||
shellScript=Rendre le script disponible pendant la session shell
|
||||
fileScript=Permet d'appeler un script avec des arguments de fichier dans le navigateur de fichiers
|
||||
runScript=Exécute le script ...
|
||||
copyUrl=Copier l'URL
|
||||
fixedServiceGroup.displayName=Groupe de service
|
||||
fixedServiceGroup.displayDescription=Liste les services disponibles sur un système
|
||||
mappedService.displayName=Service
|
||||
mappedService.displayDescription=Interagir avec un service exposé par un conteneur
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=Eseguire su shell init
|
|||
shellScript=Rendere disponibile lo script durante la sessione di shell
|
||||
fileScript=Consente di richiamare uno script con argomenti di file nel browser di file
|
||||
runScript=Esegui script ...
|
||||
copyUrl=Copia URL
|
||||
fixedServiceGroup.displayName=Gruppo di servizio
|
||||
fixedServiceGroup.displayDescription=Elenco dei servizi disponibili su un sistema
|
||||
mappedService.displayName=Servizio
|
||||
mappedService.displayDescription=Interagire con un servizio esposto da un contenitore
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=シェル init で実行する
|
|||
shellScript=シェルセッション中にスクリプトを利用可能にする
|
||||
fileScript=ファイルブラウザでファイル引数を指定してスクリプトを呼び出せるようにする
|
||||
runScript=スクリプトを実行する
|
||||
copyUrl=URLをコピーする
|
||||
fixedServiceGroup.displayName=サービスグループ
|
||||
fixedServiceGroup.displayDescription=システムで利用可能なサービスをリストアップする
|
||||
mappedService.displayName=サービス
|
||||
mappedService.displayDescription=コンテナによって公開されたサービスとやりとりする
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=Uitvoeren op shell init
|
|||
shellScript=Script beschikbaar maken tijdens shellsessie
|
||||
fileScript=Laat toe dat een script wordt aangeroepen met bestandsargumenten in de bestandsbrowser
|
||||
runScript=Script uitvoeren ...
|
||||
copyUrl=URL kopiëren
|
||||
fixedServiceGroup.displayName=Servicegroep
|
||||
fixedServiceGroup.displayDescription=Een lijst van beschikbare services op een systeem
|
||||
mappedService.displayName=Service
|
||||
mappedService.displayDescription=Interactie met een service die wordt aangeboden door een container
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=Corre no shell init
|
|||
shellScript=Torna o script disponível durante a sessão da shell
|
||||
fileScript=Permite que o script seja chamado com argumentos de ficheiro no navegador de ficheiros
|
||||
runScript=Executa o script ...
|
||||
copyUrl=Copia o URL
|
||||
fixedServiceGroup.displayName=Grupo de serviços
|
||||
fixedServiceGroup.displayDescription=Lista os serviços disponíveis num sistema
|
||||
mappedService.displayName=Serviço
|
||||
mappedService.displayDescription=Interage com um serviço exposto por um contentor
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=Запуск на shell init
|
|||
shellScript=Сделать скрипт доступным во время сеанса оболочки
|
||||
fileScript=Разрешить вызов скрипта с аргументами в виде файлов в браузере файлов
|
||||
runScript=Запустите скрипт ...
|
||||
copyUrl=Копировать URL
|
||||
fixedServiceGroup.displayName=Группа услуг
|
||||
fixedServiceGroup.displayDescription=Список доступных сервисов в системе
|
||||
mappedService.displayName=Сервис
|
||||
mappedService.displayDescription=Взаимодействие с сервисом, открываемым контейнером
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=Kabuk başlangıcında çalıştır
|
|||
shellScript=Kabuk oturumu sırasında komut dosyasını kullanılabilir hale getirme
|
||||
fileScript=Kodun dosya tarayıcısında dosya bağımsız değişkenleriyle çağrılmasına izin ver
|
||||
runScript=Komut dosyasını çalıştır ...
|
||||
copyUrl=URL'yi kopyala
|
||||
fixedServiceGroup.displayName=Hizmet grubu
|
||||
fixedServiceGroup.displayDescription=Bir sistemdeki mevcut hizmetleri listeleme
|
||||
mappedService.displayName=Hizmet
|
||||
mappedService.displayDescription=Bir konteyner tarafından sunulan bir hizmetle etkileşim
|
||||
|
|
|
@ -147,3 +147,8 @@ initScript=在 shell init 上运行
|
|||
shellScript=在 shell 会话中提供脚本
|
||||
fileScript=允许在文件浏览器中使用文件参数调用脚本
|
||||
runScript=运行脚本 ...
|
||||
copyUrl=复制 URL
|
||||
fixedServiceGroup.displayName=服务组
|
||||
fixedServiceGroup.displayDescription=列出系统中可用的服务
|
||||
mappedService.displayName=服务
|
||||
mappedService.displayDescription=与容器暴露的服务交互
|
||||
|
|
|
@ -348,3 +348,12 @@ rdpUsernameDescription=Til brugeren for at logge ind som
|
|||
addressDescription=Hvor skal man oprette forbindelse til
|
||||
rdpAdditionalOptions=Yderligere RDP-muligheder
|
||||
rdpAdditionalOptionsDescription=Rå RDP-muligheder, der skal inkluderes, formateret på samme måde som i .rdp-filer
|
||||
proxmoxVncConfirmTitle=VNC-opsætning
|
||||
proxmoxVncConfirmHeader=Vil du aktivere VNC for den virtuelle maskine?
|
||||
proxmoxVncConfirmContent=Dette opsætter en tilgængelig VNC-server og genstarter den virtuelle maskine. Du skal så vente, indtil maskinen er startet op igen, før du opretter forbindelse.
|
||||
dockerContext.displayName=Docker-kontekst
|
||||
dockerContext.displayDescription=Interagerer med containere i en bestemt kontekst
|
||||
containerActions=Container-handlinger
|
||||
vmActions=VM-handlinger
|
||||
dockerContextActions=Kontekst-handlinger
|
||||
k8sPodActions=Pod-handlinger
|
||||
|
|
|
@ -326,3 +326,12 @@ rdpUsernameDescription=An Benutzer, der sich anmelden soll als
|
|||
addressDescription=Wohin soll die Verbindung gehen?
|
||||
rdpAdditionalOptions=Zusätzliche RDP-Optionen
|
||||
rdpAdditionalOptionsDescription=Rohe RDP-Optionen, die genauso formatiert sind wie in .rdp-Dateien
|
||||
proxmoxVncConfirmTitle=VNC-Einrichtung
|
||||
proxmoxVncConfirmHeader=Willst du VNC für die virtuelle Maschine aktivieren?
|
||||
proxmoxVncConfirmContent=Dadurch wird ein zugänglicher VNC-Server eingerichtet und die virtuelle Maschine neu gestartet. Du solltest dann warten, bis die Maschine wieder hochgefahren ist, bevor du eine Verbindung herstellst.
|
||||
dockerContext.displayName=Docker-Kontext
|
||||
dockerContext.displayDescription=Interaktion mit Containern, die sich in einem bestimmten Kontext befinden
|
||||
containerActions=Container-Aktionen
|
||||
vmActions=VM-Aktionen
|
||||
dockerContextActions=Kontextbezogene Aktionen
|
||||
k8sPodActions=Pod-Aktionen
|
||||
|
|
|
@ -327,3 +327,9 @@ rdpAdditionalOptionsDescription=Raw RDP options to include, formatted the same a
|
|||
proxmoxVncConfirmTitle=VNC setup
|
||||
proxmoxVncConfirmHeader=Do you want to enable VNC for the virtual machine?
|
||||
proxmoxVncConfirmContent=This will set up an accessible VNC server and restart the virtual machine. You should then wait until the machine has started up again before connecting.
|
||||
dockerContext.displayName=Docker context
|
||||
dockerContext.displayDescription=Interact with containers located in a specific context
|
||||
containerActions=Container actions
|
||||
vmActions=VM actions
|
||||
dockerContextActions=Context actions
|
||||
k8sPodActions=Pod actions
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=Para que el usuario inicie sesión como
|
|||
addressDescription=Dónde conectarse
|
||||
rdpAdditionalOptions=Opciones RDP adicionales
|
||||
rdpAdditionalOptionsDescription=Opciones RDP en bruto a incluir, con el mismo formato que en los archivos .rdp
|
||||
proxmoxVncConfirmTitle=Configuración VNC
|
||||
proxmoxVncConfirmHeader=¿Quieres activar VNC para la máquina virtual?
|
||||
proxmoxVncConfirmContent=Esto configurará un servidor VNC accesible y reiniciará la máquina virtual. Deberás esperar a que la máquina se haya reiniciado antes de conectarte.
|
||||
dockerContext.displayName=Contexto Docker
|
||||
dockerContext.displayDescription=Interactúa con contenedores situados en un contexto específico
|
||||
containerActions=Acciones del contenedor
|
||||
vmActions=Acciones VM
|
||||
dockerContextActions=Acciones contextuales
|
||||
k8sPodActions=Acciones del pod
|
||||
|
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=A l'utilisateur de se connecter en tant que
|
|||
addressDescription=Où se connecter
|
||||
rdpAdditionalOptions=Options RDP supplémentaires
|
||||
rdpAdditionalOptionsDescription=Options RDP brutes à inclure, formatées de la même manière que dans les fichiers .rdp
|
||||
proxmoxVncConfirmTitle=Configuration de VNC
|
||||
proxmoxVncConfirmHeader=Veux-tu activer VNC pour la machine virtuelle ?
|
||||
proxmoxVncConfirmContent=Cela permet de mettre en place un serveur VNC accessible et de redémarrer la machine virtuelle. Tu dois alors attendre que la machine ait redémarré avant de te connecter.
|
||||
dockerContext.displayName=Contexte Docker
|
||||
dockerContext.displayDescription=Interagir avec des conteneurs situés dans un contexte spécifique
|
||||
containerActions=Actions du conteneur
|
||||
vmActions=Actions VM
|
||||
dockerContextActions=Actions contextuelles
|
||||
k8sPodActions=Actions de pods
|
||||
|
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=All'utente di accedere come
|
|||
addressDescription=Dove connettersi
|
||||
rdpAdditionalOptions=Opzioni RDP aggiuntive
|
||||
rdpAdditionalOptionsDescription=Opzioni RDP grezze da includere, formattate come nei file .rdp
|
||||
proxmoxVncConfirmTitle=Configurazione di VNC
|
||||
proxmoxVncConfirmHeader=Vuoi abilitare VNC per la macchina virtuale?
|
||||
proxmoxVncConfirmContent=In questo modo verrà configurato un server VNC accessibile e verrà riavviata la macchina virtuale. Dovrai quindi attendere che la macchina si sia riavviata prima di connetterti.
|
||||
dockerContext.displayName=Contesto Docker
|
||||
dockerContext.displayDescription=Interagire con contenitori situati in un contesto specifico
|
||||
containerActions=Azioni del contenitore
|
||||
vmActions=Azioni della VM
|
||||
dockerContextActions=Azioni contestuali
|
||||
k8sPodActions=Azioni del pod
|
||||
|
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=としてログインする
|
|||
addressDescription=接続先
|
||||
rdpAdditionalOptions=RDPの追加オプション
|
||||
rdpAdditionalOptionsDescription=.rdpファイルと同じ書式で、RDPの生オプションを含める。
|
||||
proxmoxVncConfirmTitle=VNCのセットアップ
|
||||
proxmoxVncConfirmHeader=仮想マシンのVNCを有効にするか?
|
||||
proxmoxVncConfirmContent=これでアクセス可能なVNCサーバーがセットアップされ、仮想マシンが再起動する。その後、マシンが再び起動するまで待ってから接続する。
|
||||
dockerContext.displayName=Dockerコンテキスト
|
||||
dockerContext.displayDescription=特定のコンテキストにあるコンテナと対話する
|
||||
containerActions=コンテナアクション
|
||||
vmActions=VMアクション
|
||||
dockerContextActions=コンテキストアクション
|
||||
k8sPodActions=ポッドアクション
|
||||
|
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=Naar gebruiker om in te loggen als
|
|||
addressDescription=Waar je verbinding mee moet maken
|
||||
rdpAdditionalOptions=Extra RDP opties
|
||||
rdpAdditionalOptionsDescription=Rauwe RDP-opties om op te nemen, in dezelfde opmaak als in .rdp-bestanden
|
||||
proxmoxVncConfirmTitle=VNC-instelling
|
||||
proxmoxVncConfirmHeader=Wil je VNC inschakelen voor de virtuele machine?
|
||||
proxmoxVncConfirmContent=Hiermee wordt een toegankelijke VNC-server opgezet en wordt de virtuele machine opnieuw opgestart. Je moet dan wachten tot de machine weer is opgestart voordat je verbinding maakt.
|
||||
dockerContext.displayName=Docker context
|
||||
dockerContext.displayDescription=Interactie met containers in een specifieke context
|
||||
containerActions=Container acties
|
||||
vmActions=VM-acties
|
||||
dockerContextActions=Context acties
|
||||
k8sPodActions=Pod acties
|
||||
|
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=Para que o utilizador inicie sessão como
|
|||
addressDescription=Onde te deves ligar
|
||||
rdpAdditionalOptions=Opções adicionais de RDP
|
||||
rdpAdditionalOptionsDescription=Opções RDP brutas a incluir, formatadas da mesma forma que nos ficheiros .rdp
|
||||
proxmoxVncConfirmTitle=Configuração do VNC
|
||||
proxmoxVncConfirmHeader=Pretendes ativar o VNC para a máquina virtual?
|
||||
proxmoxVncConfirmContent=Isto irá configurar um servidor VNC acessível e reiniciar a máquina virtual. Deves esperar até que a máquina seja reiniciada antes de te ligares.
|
||||
dockerContext.displayName=Contexto do Docker
|
||||
dockerContext.displayDescription=Interage com contentores localizados num contexto específico
|
||||
containerActions=Acções de contentor
|
||||
vmActions=Acções VM
|
||||
dockerContextActions=Acções de contexto
|
||||
k8sPodActions=Acções de pod
|
||||
|
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=Чтобы пользователь вошел в сис
|
|||
addressDescription=К чему подключиться
|
||||
rdpAdditionalOptions=Дополнительные опции RDP
|
||||
rdpAdditionalOptionsDescription=Необработанные опции RDP, которые нужно включить, в том же формате, что и в файлах .rdp
|
||||
proxmoxVncConfirmTitle=Настройка VNC
|
||||
proxmoxVncConfirmHeader=Хочешь ли ты включить VNC для виртуальной машины?
|
||||
proxmoxVncConfirmContent=Это настроит доступный VNC-сервер и перезапустит виртуальную машину. Затем тебе следует подождать, пока машина снова запустится, прежде чем подключаться.
|
||||
dockerContext.displayName=Контекст Docker
|
||||
dockerContext.displayDescription=Взаимодействуй с контейнерами, расположенными в определенном контексте
|
||||
containerActions=Действия с контейнером
|
||||
vmActions=Действия виртуальной машины
|
||||
dockerContextActions=Контекстные действия
|
||||
k8sPodActions=Действия в капсуле
|
||||
|
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=Kullanıcı olarak oturum açmak için
|
|||
addressDescription=Nereye bağlanmalı
|
||||
rdpAdditionalOptions=Ek RDP seçenekleri
|
||||
rdpAdditionalOptionsDescription=Dahil edilecek ham RDP seçenekleri, .rdp dosyalarında olduğu gibi biçimlendirilir
|
||||
proxmoxVncConfirmTitle=VNC kurulumu
|
||||
proxmoxVncConfirmHeader=Sanal makine için VNC'yi etkinleştirmek istiyor musunuz?
|
||||
proxmoxVncConfirmContent=Bu, erişilebilir bir VNC sunucusu kuracak ve sanal makineyi yeniden başlatacaktır. Daha sonra bağlanmadan önce makinenin tekrar başlamasını beklemelisiniz.
|
||||
dockerContext.displayName=Docker bağlamı
|
||||
dockerContext.displayDescription=Belirli bir bağlamda bulunan konteynerlerle etkileşim
|
||||
containerActions=Konteyner eylemleri
|
||||
vmActions=VM eylemleri
|
||||
dockerContextActions=Bağlam eylemleri
|
||||
k8sPodActions=Pod eylemleri
|
||||
|
|
|
@ -322,3 +322,12 @@ rdpUsernameDescription=用户以
|
|||
addressDescription=连接到哪里
|
||||
rdpAdditionalOptions=其他 RDP 选项
|
||||
rdpAdditionalOptionsDescription=要包含的原始 RDP 选项,格式与 .rdp 文件相同
|
||||
proxmoxVncConfirmTitle=VNC 设置
|
||||
proxmoxVncConfirmHeader=您要为虚拟机启用 VNC 吗?
|
||||
proxmoxVncConfirmContent=这将设置一个可访问的 VNC 服务器,并重新启动虚拟机。然后,您应等待虚拟机再次启动后再进行连接。
|
||||
dockerContext.displayName=Docker 上下文
|
||||
dockerContext.displayDescription=与位于特定环境中的容器交互
|
||||
containerActions=容器操作
|
||||
vmActions=虚拟机操作
|
||||
dockerContextActions=上下文操作
|
||||
k8sPodActions=Pod 操作
|
||||
|
|
Loading…
Reference in a new issue