diff --git a/docs/keybindings/Keybindings_de.md b/docs/keybindings/Keybindings_de.md index 898317b4..913d8817 100644 --- a/docs/keybindings/Keybindings_de.md +++ b/docs/keybindings/Keybindings_de.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   e: bearbeite lazydocker Konfiguration
   o: öffne lazydocker Konfiguration
-  [: vorheriges Tab
-  ]: nächstes Tab
   m: zeige Protokolle
   enter: fokussieren aufs Hauptpanel
+  [: vorheriges Tab
+  ]: nächstes Tab
 
## Container
-  [: vorheriges Tab
-  ]: nächstes Tab
   d: entfernen
   e: hide/show stopped containers
   p: pause
@@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   b: view bulk commands
   w: open in browser (first port is http)
   enter: fokussieren aufs Hauptpanel
+  [: vorheriges Tab
+  ]: nächstes Tab
+  /: filter list
 
## Dienste @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: zeige Protokolle U: up project D: down project - [: vorheriges Tab - ]: nächstes Tab R: zeige Neustartoptionen c: führe vordefinierten benutzerdefinierten Befehl aus b: view bulk commands E: exec shell w: open in browser (first port is http) enter: fokussieren aufs Hauptpanel + [: vorheriges Tab + ]: nächstes Tab + /: filter list ## Images
-  [: vorheriges Tab
-  ]: nächstes Tab
   c: führe vordefinierten benutzerdefinierten Befehl aus
   d: entferne Image
   b: view bulk commands
   enter: fokussieren aufs Hauptpanel
+  [: vorheriges Tab
+  ]: nächstes Tab
+  /: filter list
 
## Volumes
-  [: vorheriges Tab
-  ]: nächstes Tab
   c: führe vordefinierten benutzerdefinierten Befehl aus
   d: entferne Volume
   b: view bulk commands
   enter: fokussieren aufs Hauptpanel
+  [: vorheriges Tab
+  ]: nächstes Tab
+  /: filter list
 
## Haupt diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md index 8cfab0de..fe99e262 100644 --- a/docs/keybindings/Keybindings_en.md +++ b/docs/keybindings/Keybindings_en.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   e: edit lazydocker config
   o: open lazydocker config
-  [: previous tab
-  ]: next tab
   m: view logs
   enter: focus main panel
+  [: previous tab
+  ]: next tab
 
## Containers
-  [: previous tab
-  ]: next tab
   d: remove
   e: hide/show stopped containers
   p: pause
@@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   b: view bulk commands
   w: open in browser (first port is http)
   enter: focus main panel
+  [: previous tab
+  ]: next tab
+  /: filter list
 
## Services @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: view logs U: up project D: down project - [: previous tab - ]: next tab R: view restart options c: run predefined custom command b: view bulk commands E: exec shell w: open in browser (first port is http) enter: focus main panel + [: previous tab + ]: next tab + /: filter list ## Images
-  [: previous tab
-  ]: next tab
   c: run predefined custom command
   d: remove image
   b: view bulk commands
   enter: focus main panel
+  [: previous tab
+  ]: next tab
+  /: filter list
 
## Volumes
-  [: previous tab
-  ]: next tab
   c: run predefined custom command
   d: remove volume
   b: view bulk commands
   enter: focus main panel
+  [: previous tab
+  ]: next tab
+  /: filter list
 
## Main diff --git a/docs/keybindings/Keybindings_fr.md b/docs/keybindings/Keybindings_fr.md index a55af852..07c1eac3 100644 --- a/docs/keybindings/Keybindings_fr.md +++ b/docs/keybindings/Keybindings_fr.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   e: modifier la configuration lazydocker
   o: ouvrire la configuration lazydocker
-  [: onglet précédent
-  ]: onglet suivant
   m: voir les enregistrements
   enter: focus paneau principal
+  [: onglet précédent
+  ]: onglet suivant
 
## Conteneurs
-  [: onglet précédent
-  ]: onglet suivant
   d: supprimer
   e: cacher/montrer les conteneurs arrêtés
   p: pause
@@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   b: voir les commandes groupés
   w: ouvrir dans le navgateur (le premier port est http)
   enter: focus paneau principal
+  [: onglet précédent
+  ]: onglet suivant
+  /: filter list
 
## Services @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: voir les enregistrements U: up project D: down project - [: onglet précédent - ]: onglet suivant R: voir les options de redémarrage c: executer une commande prédéfinie b: voir les commandes groupés E: executer le shell w: ouvrir dans le navgateur (le premier port est http) enter: focus paneau principal + [: onglet précédent + ]: onglet suivant + /: filter list ## Images
-  [: onglet précédent
-  ]: onglet suivant
   c: executer une commande prédéfinie
   d: supprimer l'image
   b: voir les commandes groupés
   enter: focus paneau principal
+  [: onglet précédent
+  ]: onglet suivant
+  /: filter list
 
## Volumes
-  [: onglet précédent
-  ]: onglet suivant
   c: executer une commande prédéfinie
   d: supprimer le volume
   b: voir les commandes groupés
   enter: focus paneau principal
+  [: onglet précédent
+  ]: onglet suivant
+  /: filter list
 
## Principal diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md index f606b880..7f134edb 100644 --- a/docs/keybindings/Keybindings_nl.md +++ b/docs/keybindings/Keybindings_nl.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   e: verander de lazydocker configuratie
   o: open de lazydocker configuratie
-  [: vorige tab
-  ]: volgende tab
   m: bekijk logs
   enter: focus hoofdpaneel
+  [: vorige tab
+  ]: volgende tab
 
## Containers
-  [: vorige tab
-  ]: volgende tab
   d: verwijder
   e: verberg gestopte containers
   p: pause
@@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   b: view bulk commands
   w: open in browser (first port is http)
   enter: focus hoofdpaneel
+  [: vorige tab
+  ]: volgende tab
+  /: filter list
 
## Diensten @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: bekijk logs U: up project D: down project - [: vorige tab - ]: volgende tab R: bekijk herstart opties c: draai een vooraf bedacht aangepaste opdracht b: view bulk commands E: exec shell w: open in browser (first port is http) enter: focus hoofdpaneel + [: vorige tab + ]: volgende tab + /: filter list ## Images
-  [: vorige tab
-  ]: volgende tab
   c: draai een vooraf bedacht aangepaste opdracht
   d: verwijder image
   b: view bulk commands
   enter: focus hoofdpaneel
+  [: vorige tab
+  ]: volgende tab
+  /: filter list
 
## Volumes
-  [: vorige tab
-  ]: volgende tab
   c: draai een vooraf bedacht aangepaste opdracht
   d: verwijder volume
   b: view bulk commands
   enter: focus hoofdpaneel
+  [: vorige tab
+  ]: volgende tab
+  /: filter list
 
## Hoofd diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md index a8ab2a1b..b14a9b34 100644 --- a/docs/keybindings/Keybindings_pl.md +++ b/docs/keybindings/Keybindings_pl.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   e: edytuj konfigurację
   o: otwórz konfigurację
-  [: poprzednia zakładka
-  ]: następna zakładka
   m: pokaż logi
   enter: skup na głównym panelu
+  [: poprzednia zakładka
+  ]: następna zakładka
 
## Kontenery
-  [: poprzednia zakładka
-  ]: następna zakładka
   d: usuń
   e: hide/show stopped containers
   p: pause
@@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   b: view bulk commands
   w: open in browser (first port is http)
   enter: skup na głównym panelu
+  [: poprzednia zakładka
+  ]: następna zakładka
+  /: filter list
 
## Serwisy @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: pokaż logi U: up project D: down project - [: poprzednia zakładka - ]: następna zakładka R: pokaż opcje restartu c: wykonaj predefiniowaną własną komende b: view bulk commands E: exec shell w: open in browser (first port is http) enter: skup na głównym panelu + [: poprzednia zakładka + ]: następna zakładka + /: filter list ## Obrazy
-  [: poprzednia zakładka
-  ]: następna zakładka
   c: wykonaj predefiniowaną własną komende
   d: usuń obraz
   b: view bulk commands
   enter: skup na głównym panelu
+  [: poprzednia zakładka
+  ]: następna zakładka
+  /: filter list
 
## Wolumeny
-  [: poprzednia zakładka
-  ]: następna zakładka
   c: wykonaj predefiniowaną własną komende
   d: usuń wolumen
   b: view bulk commands
   enter: skup na głównym panelu
+  [: poprzednia zakładka
+  ]: następna zakładka
+  /: filter list
 
## Główne diff --git a/docs/keybindings/Keybindings_tr.md b/docs/keybindings/Keybindings_tr.md index 0124bb1f..bcb7ac1c 100644 --- a/docs/keybindings/Keybindings_tr.md +++ b/docs/keybindings/Keybindings_tr.md @@ -7,17 +7,15 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   e: lazzydocker ayarlarını düzenle
   o: lazydocker ayarlarını aç
-  [: önceki sekme
-  ]: sonraki sekme
   m: kayıt defterini görüntüle
   enter: ana panele odaklan
+  [: önceki sekme
+  ]: sonraki sekme
 
## Konteynerler
-  [: önceki sekme
-  ]: sonraki sekme
   d: kaldır
   e: hide/show stopped containers
   p: pause
@@ -30,6 +28,9 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
   b: view bulk commands
   w: open in browser (first port is http)
   enter: ana panele odaklan
+  [: önceki sekme
+  ]: sonraki sekme
+  /: filter list
 
## Servisler @@ -45,36 +46,39 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct m: kayıt defterini görüntüle U: up project D: down project - [: önceki sekme - ]: sonraki sekme R: yeniden başlatma seçeneklerini görüntüle c: önceden tanımlanmış özel komutu çalıştır b: view bulk commands E: exec shell w: open in browser (first port is http) enter: ana panele odaklan + [: önceki sekme + ]: sonraki sekme + /: filter list ## Imajlar
-  [: önceki sekme
-  ]: sonraki sekme
   c: önceden tanımlanmış özel komutu çalıştır
   d: imajı kaldır
   b: view bulk commands
   enter: ana panele odaklan
+  [: önceki sekme
+  ]: sonraki sekme
+  /: filter list
 
## Alanlar
-  [: önceki sekme
-  ]: sonraki sekme
   c: önceden tanımlanmış özel komutu çalıştır
   d: alanı kaldır
   b: view bulk commands
   enter: ana panele odaklan
+  [: önceki sekme
+  ]: sonraki sekme
+  /: filter list
 
## Ana diff --git a/pkg/cheatsheet/generate.go b/pkg/cheatsheet/generate.go index 1e17cd92..bd9d230c 100644 --- a/pkg/cheatsheet/generate.go +++ b/pkg/cheatsheet/generate.go @@ -41,6 +41,7 @@ func generateAtDir(dir string) { for lang := range i18n.GetTranslationSets() { os.Setenv("LC_ALL", lang) mApp, _ := app.NewApp(mConfig) + mApp.Gui.SetupFakeGui() file, err := os.Create(dir + "/Keybindings_" + lang + ".md") if err != nil { diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 337b5cd7..1ffc8892 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -220,16 +220,12 @@ func (gui *Gui) Run() error { if err := gui.createAllViews(); err != nil { return err } + if err := gui.setInitialViewContent(); err != nil { + return err + } // TODO: see if we can avoid the circular dependency - gui.Panels = Panels{ - Projects: gui.getProjectPanel(), - Services: gui.getServicesPanel(), - Containers: gui.getContainersPanel(), - Images: gui.getImagesPanel(), - Volumes: gui.getVolumesPanel(), - Menu: gui.getMenuPanel(), - } + gui.setPanels() if err = gui.keybindings(g); err != nil { return err @@ -270,6 +266,17 @@ func (gui *Gui) Run() error { return err } +func (gui *Gui) setPanels() { + gui.Panels = Panels{ + Projects: gui.getProjectPanel(), + Services: gui.getServicesPanel(), + Containers: gui.getContainersPanel(), + Images: gui.getImagesPanel(), + Volumes: gui.getVolumesPanel(), + Menu: gui.getMenuPanel(), + } +} + func (gui *Gui) updateContainerDetails() error { return gui.DockerCommand.UpdateContainerDetails(gui.Panels.Containers.List.GetAllItems()) } @@ -465,3 +472,20 @@ func (gui *Gui) monitorContainerStats(ctx context.Context) { } } } + +// this is used by our cheatsheet code to generate keybindings. We need some views +// and panels to exist for us to know what keybindings there are, so we invoke +// gocui in headless mode and create them. +func (gui *Gui) SetupFakeGui() { + g, err := gocui.NewGui(gocui.OutputTrue, false, gocui.NORMAL, true, map[rune]string{}) + if err != nil { + panic(err) + } + gui.g = g + defer g.Close() + if err := gui.createAllViews(); err != nil { + panic(err) + } + + gui.setPanels() +} diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 908ce3d4..4c086469 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -546,13 +546,15 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { } for _, panel := range gui.allListPanels() { - bindings = append(bindings, &Binding{ - ViewName: panel.GetView().Name(), - Key: '/', - Modifier: gocui.ModNone, - Handler: wrappedHandler(gui.handleOpenFilter), - Description: gui.Tr.LcFilter, - }) + if !panel.IsFilterDisabled() { + bindings = append(bindings, &Binding{ + ViewName: panel.GetView().Name(), + Key: '/', + Modifier: gocui.ModNone, + Handler: wrappedHandler(gui.handleOpenFilter), + Description: gui.Tr.LcFilter, + }) + } } return bindings diff --git a/pkg/gui/views.go b/pkg/gui/views.go index 2d63faf7..e9e32dd4 100644 --- a/pkg/gui/views.go +++ b/pkg/gui/views.go @@ -117,10 +117,6 @@ func (gui *Gui) createAllViews() error { gui.Views.Information.Frame = false gui.Views.Information.FgColor = gocui.ColorGreen - if err := gui.renderString(gui.g, "information", gui.getInformationContent()); err != nil { - return err - } - gui.Views.Confirmation.Visible = false gui.Views.Confirmation.Wrap = true gui.Views.Menu.Visible = false @@ -133,7 +129,6 @@ func (gui *Gui) createAllViews() error { gui.Views.FilterPrefix.BgColor = gocui.ColorDefault gui.Views.FilterPrefix.FgColor = gocui.ColorGreen gui.Views.FilterPrefix.Frame = false - _ = gui.setViewContent(gui.Views.FilterPrefix, gui.filterPrompt()) gui.Views.Filter.BgColor = gocui.ColorDefault gui.Views.Filter.FgColor = gocui.ColorGreen @@ -144,6 +139,16 @@ func (gui *Gui) createAllViews() error { return nil } +func (gui *Gui) setInitialViewContent() error { + if err := gui.renderString(gui.g, "information", gui.getInformationContent()); err != nil { + return err + } + + _ = gui.setViewContent(gui.Views.FilterPrefix, gui.filterPrompt()) + + return nil +} + func (gui *Gui) getInformationContent() string { informationStr := gui.Config.Version if !gui.g.Mouse {