diff options
author | Reto Brunner <reto@labrat.space> | 2020-05-27 07:37:02 +0200 |
---|---|---|
committer | Reto Brunner <reto@labrat.space> | 2020-05-27 07:57:10 +0200 |
commit | 0f78f06610c0e8887aba2ae50e99b86477a384b3 (patch) | |
tree | ff4cd6581d3af0911954a37550602366d2bb0e2f /widgets/account-wizard.go | |
parent | 6c4ed3cfe2fe66a1e5f26c404ea90e048142db72 (diff) | |
download | aerc-0f78f06610c0e8887aba2ae50e99b86477a384b3.tar.gz |
Add Style configuration
The following functionalities are added to configure aerc ui styles.
- Read stylesets from file with very basic fnmatch wildcard matching
- Add default styleset
- Support different stylesets as part of UiConfig allowing contextual
styles.
- Move widgets/ui elements to use the stylesets.
- Add configuration manual for the styleset
Diffstat (limited to 'widgets/account-wizard.go')
-rw-r--r-- | widgets/account-wizard.go | 109 |
1 files changed, 62 insertions, 47 deletions
diff --git a/widgets/account-wizard.go b/widgets/account-wizard.go index 6f93367f..e247dd23 100644 --- a/widgets/account-wizard.go +++ b/widgets/account-wizard.go @@ -10,6 +10,7 @@ import ( "path" "strconv" "strings" + "time" "github.com/gdamore/tcell" "github.com/go-ini/ini" @@ -75,21 +76,21 @@ type AccountWizard struct { func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { wizard := &AccountWizard{ - accountName: ui.NewTextInput("").Prompt("> "), + accountName: ui.NewTextInput("", conf.Ui).Prompt("> "), aerc: aerc, conf: conf, temporary: false, copySent: true, - email: ui.NewTextInput("").Prompt("> "), - fullName: ui.NewTextInput("").Prompt("> "), - imapPassword: ui.NewTextInput("").Prompt("] ").Password(true), - imapServer: ui.NewTextInput("").Prompt("> "), - imapStr: ui.NewText("imaps://"), - imapUsername: ui.NewTextInput("").Prompt("> "), - smtpPassword: ui.NewTextInput("").Prompt("] ").Password(true), - smtpServer: ui.NewTextInput("").Prompt("> "), - smtpStr: ui.NewText("smtps://"), - smtpUsername: ui.NewTextInput("").Prompt("> "), + email: ui.NewTextInput("", conf.Ui).Prompt("> "), + fullName: ui.NewTextInput("", conf.Ui).Prompt("> "), + imapPassword: ui.NewTextInput("", conf.Ui).Prompt("] ").Password(true), + imapServer: ui.NewTextInput("", conf.Ui).Prompt("> "), + imapStr: ui.NewText("imaps://", conf.Ui.GetStyle(config.STYLE_DEFAULT)), + imapUsername: ui.NewTextInput("", conf.Ui).Prompt("> "), + smtpPassword: ui.NewTextInput("", conf.Ui).Prompt("] ").Password(true), + smtpServer: ui.NewTextInput("", conf.Ui).Prompt("> "), + smtpStr: ui.NewText("smtps://", conf.Ui.GetStyle(config.STYLE_DEFAULT)), + smtpUsername: ui.NewTextInput("", conf.Ui).Prompt("> "), } // Autofill some stuff for the user @@ -150,33 +151,36 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { {ui.SIZE_WEIGHT, 1}, }) basics.AddChild( - ui.NewText("\nWelcome to aerc! Let's configure your account.\n\n" + - "This wizard supports basic IMAP & SMTP configuration.\n" + - "For other configurations, use <Ctrl+q> to exit and read the " + - "aerc-config(5) man page.\n" + - "Press <Tab> and <Shift+Tab> to cycle between each field in this form, or <Ctrl+j> and <Ctrl+k>.")) + ui.NewText("\nWelcome to aerc! Let's configure your account.\n\n"+ + "This wizard supports basic IMAP & SMTP configuration.\n"+ + "For other configurations, use <Ctrl+q> to exit and read the "+ + "aerc-config(5) man page.\n"+ + "Press <Tab> and <Shift+Tab> to cycle between each field in this form, "+ + "or <Ctrl+j> and <Ctrl+k>.", + conf.Ui.GetStyle(config.STYLE_DEFAULT))) basics.AddChild( - ui.NewText("Name for this account? (e.g. 'Personal' or 'Work')"). - Bold(true)). + ui.NewText("Name for this account? (e.g. 'Personal' or 'Work')", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(1, 0) basics.AddChild(wizard.accountName). At(2, 0) basics.AddChild(ui.NewFill(' ')). At(3, 0) basics.AddChild( - ui.NewText("Full name for outgoing emails? (e.g. 'John Doe')"). - Bold(true)). + ui.NewText("Full name for outgoing emails? (e.g. 'John Doe')", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(4, 0) basics.AddChild(wizard.fullName). At(5, 0) basics.AddChild(ui.NewFill(' ')). At(6, 0) basics.AddChild( - ui.NewText("Your email address? (e.g. 'john@example.org')").Bold(true)). + ui.NewText("Your email address? (e.g. 'john@example.org')", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(7, 0) basics.AddChild(wizard.email). At(8, 0) - selecter := NewSelecter([]string{"Next"}, 0). + selecter := NewSelecter([]string{"Next"}, 0, conf.Ui). OnChoose(func(option string) { email := wizard.email.String() if strings.ContainsRune(email, '@') { @@ -227,16 +231,19 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { }).Columns([]ui.GridSpec{ {ui.SIZE_WEIGHT, 1}, }) - incoming.AddChild(ui.NewText("\nConfigure incoming mail (IMAP)")) + incoming.AddChild(ui.NewText("\nConfigure incoming mail (IMAP)", + conf.Ui.GetStyle(config.STYLE_DEFAULT))) incoming.AddChild( - ui.NewText("Username").Bold(true)). + ui.NewText("Username", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(1, 0) incoming.AddChild(wizard.imapUsername). At(2, 0) incoming.AddChild(ui.NewFill(' ')). At(3, 0) incoming.AddChild( - ui.NewText("Password").Bold(true)). + ui.NewText("Password", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(4, 0) incoming.AddChild(wizard.imapPassword). At(5, 0) @@ -244,20 +251,22 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { At(6, 0) incoming.AddChild( ui.NewText("Server address "+ - "(e.g. 'mail.example.org' or 'mail.example.org:1313')").Bold(true)). + "(e.g. 'mail.example.org' or 'mail.example.org:1313')", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(7, 0) incoming.AddChild(wizard.imapServer). At(8, 0) incoming.AddChild(ui.NewFill(' ')). At(9, 0) incoming.AddChild( - ui.NewText("Connection mode").Bold(true)). + ui.NewText("Connection mode", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(10, 0) imapMode := NewSelecter([]string{ "IMAP over SSL/TLS", "IMAP with STARTTLS", "Insecure IMAP", - }, 0).Chooser(true).OnSelect(func(option string) { + }, 0, conf.Ui).Chooser(true).OnSelect(func(option string) { switch option { case "IMAP over SSL/TLS": wizard.imapMode = IMAP_OVER_TLS @@ -269,7 +278,7 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { wizard.imapUri() }) incoming.AddChild(imapMode).At(11, 0) - selecter = NewSelecter([]string{"Previous", "Next"}, 1). + selecter = NewSelecter([]string{"Previous", "Next"}, 1, conf.Ui). OnChoose(wizard.advance) incoming.AddChild(ui.NewFill(' ')).At(12, 0) incoming.AddChild(wizard.imapStr).At(13, 0) @@ -304,16 +313,19 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { }).Columns([]ui.GridSpec{ {ui.SIZE_WEIGHT, 1}, }) - outgoing.AddChild(ui.NewText("\nConfigure outgoing mail (SMTP)")) + outgoing.AddChild(ui.NewText("\nConfigure outgoing mail (SMTP)", + conf.Ui.GetStyle(config.STYLE_DEFAULT))) outgoing.AddChild( - ui.NewText("Username").Bold(true)). + ui.NewText("Username", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(1, 0) outgoing.AddChild(wizard.smtpUsername). At(2, 0) outgoing.AddChild(ui.NewFill(' ')). At(3, 0) outgoing.AddChild( - ui.NewText("Password").Bold(true)). + ui.NewText("Password", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(4, 0) outgoing.AddChild(wizard.smtpPassword). At(5, 0) @@ -321,20 +333,22 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { At(6, 0) outgoing.AddChild( ui.NewText("Server address "+ - "(e.g. 'mail.example.org' or 'mail.example.org:1313')").Bold(true)). + "(e.g. 'mail.example.org' or 'mail.example.org:1313')", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(7, 0) outgoing.AddChild(wizard.smtpServer). At(8, 0) outgoing.AddChild(ui.NewFill(' ')). At(9, 0) outgoing.AddChild( - ui.NewText("Connection mode").Bold(true)). + ui.NewText("Connection mode", + conf.Ui.GetStyle(config.STYLE_HEADER))). At(10, 0) smtpMode := NewSelecter([]string{ "SMTP over SSL/TLS", "SMTP with STARTTLS", "Insecure SMTP", - }, 0).Chooser(true).OnSelect(func(option string) { + }, 0, conf.Ui).Chooser(true).OnSelect(func(option string) { switch option { case "SMTP over SSL/TLS": wizard.smtpMode = SMTP_OVER_TLS @@ -346,15 +360,15 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { wizard.smtpUri() }) outgoing.AddChild(smtpMode).At(11, 0) - selecter = NewSelecter([]string{"Previous", "Next"}, 1). + selecter = NewSelecter([]string{"Previous", "Next"}, 1, conf.Ui). OnChoose(wizard.advance) outgoing.AddChild(ui.NewFill(' ')).At(12, 0) outgoing.AddChild(wizard.smtpStr).At(13, 0) outgoing.AddChild(ui.NewFill(' ')).At(14, 0) outgoing.AddChild( - ui.NewText("Copy sent messages to 'Sent' folder?").Bold(true)). - At(15, 0) - copySent := NewSelecter([]string{"Yes", "No"}, 0). + ui.NewText("Copy sent messages to 'Sent' folder?", + conf.Ui.GetStyle(config.STYLE_HEADER))).At(15, 0) + copySent := NewSelecter([]string{"Yes", "No"}, 0, conf.Ui). Chooser(true).OnChoose(func(option string) { switch option { case "Yes": @@ -380,15 +394,16 @@ func NewAccountWizard(conf *config.AercConfig, aerc *Aerc) *AccountWizard { {ui.SIZE_WEIGHT, 1}, }) complete.AddChild(ui.NewText( - "\nConfiguration complete!\n\n" + - "You can go back and double check your settings, or choose 'Finish' to\n" + - "save your settings to accounts.conf.\n\n" + - "To add another account in the future, run ':new-account'.")) + "\nConfiguration complete!\n\n"+ + "You can go back and double check your settings, or choose 'Finish' to\n"+ + "save your settings to accounts.conf.\n\n"+ + "To add another account in the future, run ':new-account'.", + conf.Ui.GetStyle(config.STYLE_DEFAULT))) selecter = NewSelecter([]string{ "Previous", "Finish & open tutorial", "Finish", - }, 1).OnChoose(func(option string) { + }, 1, conf.Ui).OnChoose(func(option string) { switch option { case "Previous": wizard.advance("Previous") @@ -414,7 +429,7 @@ func (wizard *AccountWizard) ConfigureTemporaryAccount(temporary bool) { func (wizard *AccountWizard) errorFor(d ui.Interactive, err error) { if d == nil { - wizard.aerc.PushError(" " + err.Error()) + wizard.aerc.PushError(" "+err.Error(), 10*time.Second) wizard.Invalidate() return } @@ -429,7 +444,7 @@ func (wizard *AccountWizard) errorFor(d ui.Interactive, err error) { wizard.step = step wizard.focus = focus wizard.Focus(true) - wizard.aerc.PushError(" " + err.Error()) + wizard.aerc.PushError(" "+err.Error(), 10*time.Second) wizard.Invalidate() return } @@ -540,7 +555,7 @@ func (wizard *AccountWizard) finish(tutorial bool) { term.OnClose = func(err error) { wizard.aerc.RemoveTab(term) if err != nil { - wizard.aerc.PushError(" " + err.Error()) + wizard.aerc.PushError(" "+err.Error(), 10*time.Second) } } } |