From 5c834377fe963ccd96847314158d2d9a1a4839ac Mon Sep 17 00:00:00 2001 From: Berger Eugene Date: Sat, 27 Jul 2024 02:25:29 +0300 Subject: [PATCH] feat #194: Added flag and env to start with full screen --- src/cmd/project_runner.go | 4 +++- src/cmd/root.go | 1 + src/config/Flags.go | 3 +++ src/config/config.go | 5 +++++ src/tui/tui_option.go | 7 +++++++ src/tui/view.go | 10 +++++++--- 6 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/cmd/project_runner.go b/src/cmd/project_runner.go index 3babcb0..100078d 100644 --- a/src/cmd/project_runner.go +++ b/src/cmd/project_runner.go @@ -88,6 +88,8 @@ func runTui(project *app.ProjectRunner) error { func startTui(runner app.IProject) { tuiOptions := []tui.Option{ tui.WithRefreshRate(*pcFlags.RefreshRate), + tui.WithReadOnlyMode(*pcFlags.IsReadOnlyMode), + tui.WithFullScreen(*pcFlags.IsTuiFullScreen), } if !*pcFlags.IsReadOnlyMode { config.CreateProcCompHome() @@ -101,7 +103,7 @@ func startTui(runner app.IProject) { ternary(pcFlags.SortColumnChanged, tui.WithStateSorter(getColumnId(*pcFlags.SortColumn), !*pcFlags.IsReverseSort), tui.WithStateSorter(getColumnId(settings.Sort.By), !settings.Sort.IsReversed)), - tui.WithReadOnlyMode(*pcFlags.IsReadOnlyMode)) + ) tui.SetupTui(runner, tuiOptions...) } diff --git a/src/cmd/root.go b/src/cmd/root.go index ec60edb..974026f 100644 --- a/src/cmd/root.go +++ b/src/cmd/root.go @@ -81,6 +81,7 @@ func init() { rootCmd.PersistentFlags().StringVarP(pcFlags.LogFile, "log-file", "L", *pcFlags.LogFile, "Specify the log file path (env: "+config.LogPathEnvVarName+")") rootCmd.PersistentFlags().BoolVar(pcFlags.IsReadOnlyMode, "read-only", *pcFlags.IsReadOnlyMode, "enable read-only mode (env: "+config.EnvVarReadOnlyMode+")") rootCmd.Flags().BoolVar(pcFlags.DisableDotEnv, "disable-dotenv", *pcFlags.DisableDotEnv, "disable .env file loading (env: "+config.EnvVarDisableDotEnv+"=1)") + rootCmd.Flags().BoolVar(pcFlags.IsTuiFullScreen, "tui-fs", *pcFlags.IsTuiFullScreen, "enable TUI full screen (env: "+config.EnvVarTuiFullScreen+"=1)") rootCmd.Flags().AddFlag(commonFlags.Lookup(flagReverse)) rootCmd.Flags().AddFlag(commonFlags.Lookup(flagSort)) rootCmd.Flags().AddFlag(commonFlags.Lookup(flagTheme)) diff --git a/src/config/Flags.go b/src/config/Flags.go index 48432ca..78c3236 100644 --- a/src/config/Flags.go +++ b/src/config/Flags.go @@ -36,6 +36,7 @@ const ( EnvVarUnixSocketPath = "PC_SOCKET_PATH" EnvVarReadOnlyMode = "PC_READ_ONLY" EnvVarDisableDotEnv = "PC_DISABLE_DOTENV" + EnvVarTuiFullScreen = "PC_TUI_FULL_SCREEN" ) // Flags represents PC configuration flags. @@ -66,6 +67,7 @@ type Flags struct { IsReadOnlyMode *bool OutputFormat *string DisableDotEnv *bool + IsTuiFullScreen *bool } // NewFlags returns new configuration flags. @@ -93,6 +95,7 @@ func NewFlags() *Flags { IsReadOnlyMode: toPtr(getReadOnlyDefault()), OutputFormat: toPtr(""), DisableDotEnv: toPtr(getDisableDotEnvDefault()), + IsTuiFullScreen: toPtr(getTuiFullScreenDefault()), } } diff --git a/src/config/config.go b/src/config/config.go index de547af..bdd0fc6 100644 --- a/src/config/config.go +++ b/src/config/config.go @@ -203,3 +203,8 @@ func getDisableDotEnvDefault() bool { _, found := os.LookupEnv(EnvVarDisableDotEnv) return found } + +func getTuiFullScreenDefault() bool { + _, found := os.LookupEnv(EnvVarTuiFullScreen) + return found +} diff --git a/src/tui/tui_option.go b/src/tui/tui_option.go index 5e49f17..28a116b 100644 --- a/src/tui/tui_option.go +++ b/src/tui/tui_option.go @@ -31,3 +31,10 @@ func WithReadOnlyMode(isReadOnly bool) Option { return nil } } + +func WithFullScreen(isFullScreen bool) Option { + return func(view *pcView) error { + view.setFullScreen(isFullScreen) + return nil + } +} diff --git a/src/tui/view.go b/src/tui/view.go index 403c649..0a99aea 100644 --- a/src/tui/view.go +++ b/src/tui/view.go @@ -226,9 +226,7 @@ func (pv *pcView) setShortCutsActions() { pv.shortcuts.setAction(ActionThemeSelector, pv.showThemeSelector) pv.shortcuts.setAction(ActionSendToBackground, pv.runShellProcess) pv.shortcuts.setAction(ActionFullScreen, func() { - pv.isFullScreen = !pv.isFullScreen - pv.logsText.SetBorder(!pv.isFullScreen) - pv.redrawGrid() + pv.setFullScreen(!pv.isFullScreen) }) pv.shortcuts.setAction(ActionFocusChange, pv.changeFocus) pv.shortcuts.setAction(ActionProcFilter, func() { @@ -237,6 +235,12 @@ func (pv *pcView) setShortCutsActions() { }) } +func (pv *pcView) setFullScreen(isFullScreen bool) { + pv.isFullScreen = isFullScreen + pv.logsText.SetBorder(!pv.isFullScreen) + pv.redrawGrid() +} + func (pv *pcView) loadThemes() { pv.themes.AddListener(pv) pv.themes.AddListener(pv.helpDialog)