mirror of
https://github.com/mrusme/neonmodem.git
synced 2024-12-04 14:46:37 -05:00
Implemented ErrorDialog, added selection to header
This commit is contained in:
parent
0fe810871e
commit
9b56ea8d07
@ -230,7 +230,7 @@ func SetDefaults(cacheDir string) {
|
||||
[]bool{false, true, true, true},
|
||||
)
|
||||
viper.SetDefault("Theme.ErrorDialogBox.Window.Focused.Border.Foreground",
|
||||
lipgloss.AdaptiveColor{Light: "#00ffff", Dark: "#00ffff"})
|
||||
lipgloss.AdaptiveColor{Light: "#dc143c", Dark: "#dc143c"})
|
||||
|
||||
// ErrorDialogBox Window:Blurred
|
||||
viper.SetDefault("Theme.ErrorDialogBox.Window.Blurred.Margin",
|
||||
@ -253,7 +253,7 @@ func SetDefaults(cacheDir string) {
|
||||
viper.SetDefault("Theme.ErrorDialogBox.Titlebar.Focused.Foreground",
|
||||
lipgloss.AdaptiveColor{Light: "#ffffff", Dark: "#000000"})
|
||||
viper.SetDefault("Theme.ErrorDialogBox.Titlebar.Focused.Background",
|
||||
lipgloss.AdaptiveColor{Light: "#00cccc", Dark: "#00cccc"})
|
||||
lipgloss.AdaptiveColor{Light: "#dc143c", Dark: "#dc143c"})
|
||||
|
||||
// ErrorDialogBox Titlebar:Blurred
|
||||
viper.SetDefault("Theme.ErrorDialogBox.Titlebar.Blurred.Margin",
|
||||
|
@ -1,6 +1,7 @@
|
||||
package header
|
||||
|
||||
import (
|
||||
"github.com/mrusme/gobbs/config"
|
||||
"github.com/mrusme/gobbs/ui/ctx"
|
||||
|
||||
"github.com/charmbracelet/bubbles/spinner"
|
||||
@ -13,7 +14,8 @@ var (
|
||||
banner = "[0m[38;2;23;3;3;48;2;15;2;2m▄[38;2;248;247;247;48;2;41;22;22m▗[38;2;253;251;254;48;2;163;35;115m▖[38;2;145;5;62;48;2;39;5;6m▎[38;2;49;6;6;48;2;32;4;4m▄[38;2;239;236;236;48;2;58;25;25m▗[38;2;251;243;246;48;2;116;5;41m▅[38;2;210;60;175;48;2;146;10;54m▖[38;2;184;164;164;48;2;55;8;8m▗[38;2;233;207;225;48;2;74;6;19m▅[38;2;244;213;240;48;2;159;7;59m▅[38;2;253;244;247;48;2;187;30;92m▖[38;2;230;222;222;48;2;109;19;39m▗[38;2;244;219;239;48;2;123;7;42m▅[38;2;237;186;231;48;2;156;7;58m▅[38;2;227;161;225;48;2;170;24;92m▖[38;2;212;193;196;48;2;71;6;17m▅[38;2;240;198;234;48;2;155;6;58m▅[38;2;248;217;234;48;2;153;6;58m▅[38;2;240;160;198;48;2;163;6;66m▖[38;2;87;6;25;48;2;46;6;6m▏[38;2;50;10;11;48;2;137;117;117m▉[38;2;246;235;243;48;2;83;5;26m▅[38;2;236;186;232;48;2;153;6;58m▅[38;2;242;201;233;48;2;181;50;123m┓[38;2;217;168;192;48;2;91;6;28m▅[38;2;254;251;252;48;2;185;30;100m▖[38;2;173;8;62;48;2;61;8;10m▎[38;2;210;198;198;48;2;56;15;15m▗[38;2;244;222;240;48;2;92;4;33m▅[38;2;175;6;106;48;2;47;4;13m▌[0m\n" +
|
||||
"[38;2;44;6;6;48;2;34;4;4m▗[38;2;105;79;79;48;2;247;246;246m▎[38;2;232;183;238;48;2;157;12;140m▍[38;2;69;9;10;48;2;58;8;8m▄[38;2;176;147;147;48;2;70;11;11m▗[38;2;214;103;202;48;2;239;232;235m▗[38;2;212;107;203;48;2;255;255;255m▎[38;2;250;240;249;48;2;180;14;105m▏[38;2;104;32;32;48;2;236;225;226m▍[38;2;196;14;160;48;2;247;220;237m▝[38;2;246;238;243;48;2;212;61;115m▝[38;2;254;252;254;48;2;193;27;136m▘[38;2;152;78;93;48;2;251;250;250m▍[38;2;192;15;165;48;2;242;201;231m▝[38;2;235;185;203;48;2;162;23;74m▂[38;2;130;20;51;48;2;178;145;145m▉[38;2;255;255;255;48;2;250;245;248m┈[38;2;243;192;220;48;2;177;27;124m▂[38;2;181;124;147;48;2;252;249;252m▎[38;2;225;150;223;48;2;147;11;110m▍[38;2;73;10;10;48;2;66;9;9m▅[38;2;89;36;36;48;2;239;235;235m▋[38;2;251;242;251;48;2;208;91;207m▊[38;2;252;248;249;48;2;167;19;96m▂[38;2;231;13;80;48;2;138;21;59m╴[38;2;193;157;167;48;2;250;242;248m▏[38;2;251;240;249;48;2;209;76;188m▊[38;2;239;218;222;48;2;179;30;80m▗[38;2;254;254;254;48;2;242;229;237m╴[38;2;249;236;249;48;2;191;38;198m▋[38;2;150;8;113;48;2;53;6;10m▎[0m\n" +
|
||||
"[38;2;47;11;11;48;2;174;157;158m▊[38;2;251;245;252;48;2;212;112;220m▉[38;2;186;15;167;48;2;115;10;33m▌[38;2;75;10;11;48;2;112;19;33m╴[38;2;136;88;89;48;2;248;241;246m▘[38;2;189;12;175;48;2;234;171;222m▁[38;2;221;119;169;48;2;253;250;251m▏[38;2;252;248;252;48;2;205;52;137m▏[38;2;248;229;244;48;2;152;28;51m▅[38;2;188;25;91;48;2;235;168;215m▆[38;2;241;234;234;48;2;253;249;252m┈[38;2;230;144;204;48;2;187;43;109m▏[38;2;251;249;250;48;2;232;171;226m▉[38;2;180;27;126;48;2;255;255;255m▇[38;2;149;12;66;48;2;217;109;204m▆[38;2;115;24;41;48;2;230;218;218m▌[38;2;195;34;181;48;2;248;228;245m▗[38;2;136;46;72;48;2;248;231;246m▖[38;2;252;244;251;48;2;206;48;170m▍[38;2;183;10;99;48;2;78;9;20m▎[38;2;62;8;9;48;2;71;10;10m▃[38;2;115;71;71;48;2;246;244;244m▎[38;2;247;229;248;48;2;183;66;169m▎[38;2;84;10;27;48;2;216;115;211m▅[38;2;116;24;64;48;2;226;212;212m▋[38;2;251;242;251;48;2;202;54;184m▋[38;2;185;46;126;48;2;244;239;239m▎[38;2;179;18;156;48;2;239;197;234m▗[38;2;199;86;176;48;2;252;244;251m▎[38;2;230;172;232;48;2;154;11;125m▍[38;2;58;8;8;48;2;45;6;6m▘[0m\n" +
|
||||
"[38;2;227;222;222;48;2;39;7;14m▝[38;2;112;10;118;48;2;252;247;253m▄[38;2;116;11;115;48;2;251;230;240m▄[38;2;103;11;89;48;2;236;173;206m▄[38;2;254;253;254;48;2;145;33;138m▘[38;2;73;9;22;48;2;161;11;136m▇[38;2;92;13;60;48;2;235;225;228m▄[38;2;118;28;87;48;2;224;115;191m▆[38;2;98;14;65;48;2;247;240;245m▄[38;2;133;21;119;48;2;250;225;237m▄[38;2;109;8;84;48;2;228;161;227m▄[38;2;205;186;186;48;2;90;10;46m▝[38;2;122;13;110;48;2;253;249;253m▄[38;2;121;12;111;48;2;250;226;237m▄[38;2;249;217;231;48;2;135;13;103m▘[38;2;255;255;255;48;2;110;47;76m▝[38;2;233;181;236;48;2;116;8;99m▘[38;2;226;217;217;48;2;54;8;9m▝[38;2;255;255;255;48;2;141;30;142m▘[38;2;108;6;57;48;2;56;6;11m▏[38;2;42;5;6;48;2;50;14;14m╴[38;2;88;9;86;48;2;252;249;252m▄[38;2;179;25;203;48;2;67;6;41m▘[38;2;38;5;5;48;2;56;7;7m▄[38;2;255;255;255;48;2;76;28;47m▝[38;2;237;197;240;48;2;117;8;107m▘[38;2;60;7;16;48;2;143;76;100m▇[38;2;55;8;8;48;2;87;17;52m╴[38;2;93;10;87;48;2;251;244;252m▄[38;2;169;14;189;48;2;56;5;33m▘[38;2;21;3;3;48;2;33;4;4m▄[0m"
|
||||
"[38;2;227;222;222;48;2;39;7;14m▝[38;2;112;10;118;48;2;252;247;253m▄[38;2;116;11;115;48;2;251;230;240m▄[38;2;103;11;89;48;2;236;173;206m▄[38;2;254;253;254;48;2;145;33;138m▘[38;2;73;9;22;48;2;161;11;136m▇[38;2;92;13;60;48;2;235;225;228m▄[38;2;118;28;87;48;2;224;115;191m▆[38;2;98;14;65;48;2;247;240;245m▄[38;2;133;21;119;48;2;250;225;237m▄[38;2;109;8;84;48;2;228;161;227m▄[38;2;205;186;186;48;2;90;10;46m▝[38;2;122;13;110;48;2;253;249;253m▄[38;2;121;12;111;48;2;250;226;237m▄[38;2;249;217;231;48;2;135;13;103m▘[38;2;255;255;255;48;2;110;47;76m▝[38;2;233;181;236;48;2;116;8;99m▘[38;2;226;217;217;48;2;54;8;9m▝[38;2;255;255;255;48;2;141;30;142m▘[38;2;108;6;57;48;2;56;6;11m▏[38;2;42;5;6;48;2;50;14;14m╴[38;2;88;9;86;48;2;252;249;252m▄[38;2;179;25;203;48;2;67;6;41m▘[38;2;38;5;5;48;2;56;7;7m▄[38;2;255;255;255;48;2;76;28;47m▝[38;2;237;197;240;48;2;117;8;107m▘[38;2;60;7;16;48;2;143;76;100m▇[38;2;55;8;8;48;2;87;17;52m╴[38;2;93;10;87;48;2;251;244;252m▄[38;2;169;14;189;48;2;56;5;33m▘[38;2;21;3;3;48;2;33;4;4m▄[0m\n" +
|
||||
" v" + config.VERSION
|
||||
)
|
||||
|
||||
type Model struct {
|
||||
@ -58,12 +60,32 @@ func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
|
||||
|
||||
func (m Model) View() string {
|
||||
var row string
|
||||
var spinner string = ""
|
||||
|
||||
if m.ctx.Loading == false {
|
||||
row = lipgloss.JoinHorizontal(lipgloss.Top, banner)
|
||||
} else {
|
||||
row = lipgloss.JoinHorizontal(lipgloss.Top, banner, " ", m.spinner.View())
|
||||
selector := lipgloss.NewStyle().
|
||||
Foreground(lipgloss.Color("#7fffd4")).
|
||||
BorderForeground(lipgloss.Color("#7fffd4")).
|
||||
Border(lipgloss.NormalBorder()).
|
||||
Padding(0, 1, 0, 1).
|
||||
Width(40)
|
||||
|
||||
systemSelector := selector.Render("⏷ All")
|
||||
forumSelector := selector.Render("⏷ All")
|
||||
|
||||
selectorColumn := lipgloss.JoinVertical(lipgloss.Center,
|
||||
lipgloss.JoinHorizontal(lipgloss.Bottom, "System: \n "+
|
||||
lipgloss.NewStyle().Foreground(m.ctx.Theme.DialogBox.Bottombar.GetForeground()).Render("c-s"),
|
||||
systemSelector),
|
||||
lipgloss.JoinHorizontal(lipgloss.Bottom, "Forum: \n "+
|
||||
lipgloss.NewStyle().Foreground(m.ctx.Theme.DialogBox.Bottombar.GetForeground()).Render("c-f"),
|
||||
forumSelector),
|
||||
)
|
||||
|
||||
if m.ctx.Loading == true {
|
||||
spinner = m.spinner.View()
|
||||
}
|
||||
|
||||
row = lipgloss.JoinHorizontal(lipgloss.Top, banner, " ", selectorColumn, " ", spinner)
|
||||
|
||||
return row
|
||||
}
|
||||
|
@ -49,3 +49,47 @@ func (tk *ToolKit) Dialog(title string, content string) string {
|
||||
|
||||
return view.String()
|
||||
}
|
||||
|
||||
func (tk *ToolKit) ErrorDialog(title string, content string) string {
|
||||
var view strings.Builder = strings.Builder{}
|
||||
|
||||
var style lipgloss.Style
|
||||
if tk.IsFocused() {
|
||||
style = tk.theme.ErrorDialogBox.Titlebar.Focused
|
||||
} else {
|
||||
style = tk.theme.ErrorDialogBox.Titlebar.Blurred
|
||||
}
|
||||
titlebar := style.Align(lipgloss.Center).
|
||||
Width(tk.ViewWidth()).
|
||||
Render(title)
|
||||
|
||||
var bindings []string
|
||||
for _, binding := range tk.keybindings {
|
||||
var tmp string = ""
|
||||
tmp = binding.Help().Key + " " + binding.Help().Desc
|
||||
bindings = append(bindings, tmp)
|
||||
}
|
||||
bindings = append(bindings, "esc close")
|
||||
|
||||
bottombar := tk.theme.ErrorDialogBox.Bottombar.
|
||||
Width(tk.ViewWidth()).
|
||||
Render(strings.Join(bindings, " · "))
|
||||
|
||||
ui := lipgloss.JoinVertical(
|
||||
lipgloss.Center,
|
||||
titlebar,
|
||||
content,
|
||||
bottombar,
|
||||
)
|
||||
|
||||
var tmp string
|
||||
if tk.IsFocused() {
|
||||
tmp = tk.theme.ErrorDialogBox.Window.Focused.Render(ui)
|
||||
} else {
|
||||
tmp = tk.theme.ErrorDialogBox.Window.Blurred.Render(ui)
|
||||
}
|
||||
|
||||
view.WriteString(tmp)
|
||||
|
||||
return view.String()
|
||||
}
|
||||
|
2
ui/ui.go
2
ui/ui.go
@ -234,5 +234,5 @@ func (m Model) setSizes(winWidth int, winHeight int) {
|
||||
(*m.ctx).Screen[0] = winWidth
|
||||
(*m.ctx).Screen[1] = winHeight
|
||||
m.ctx.Content[0] = m.ctx.Screen[0]
|
||||
m.ctx.Content[1] = m.ctx.Screen[1] - 5
|
||||
m.ctx.Content[1] = m.ctx.Screen[1] - 8
|
||||
}
|
||||
|
@ -15,8 +15,8 @@ func buildView(mi interface{}, cached bool) string {
|
||||
m.ctx.Logger.Debugln("View()")
|
||||
m.ctx.Logger.Debugf("IsFocused: %v\n", m.tk.IsFocused())
|
||||
|
||||
return m.tk.Dialog(
|
||||
"Post",
|
||||
return m.tk.ErrorDialog(
|
||||
"Error",
|
||||
viewportStyle.Render(m.viewport.View()),
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user