1package gui 2 3import ( 4 "sync" 5 6 "github.com/coyim/coyim/config" 7 "github.com/coyim/coyim/i18n" 8 "github.com/coyim/gotk3adapter/glibi" 9 "github.com/coyim/gotk3adapter/gtki" 10) 11 12var ( 13 // TODO: shouldn't this be specific to the account ID in question? 14 accountChangedSignal glibi.Signal 15) 16 17var accountsLock sync.Mutex 18 19func (u *gtkUI) buildStaticAccountsMenu(submenu gtki.Menu) { 20 connectAutomaticallyItem, _ := g.gtk.CheckMenuItemNewWithMnemonic(i18n.Local("Connect On _Startup")) 21 u.config.WhenLoaded(func(a *config.ApplicationConfig) { 22 connectAutomaticallyItem.SetActive(a.ConnectAutomatically) 23 }) 24 25 connectAutomaticallyItem.Connect("activate", func() { 26 u.setConnectAllAutomatically(connectAutomaticallyItem.GetActive()) 27 }) 28 submenu.Append(connectAutomaticallyItem) 29 30 connectAllMenu, _ := g.gtk.MenuItemNewWithMnemonic(i18n.Local("_Connect All")) 31 connectAllMenu.Connect("activate", func() { u.connectAllAutomatics(true) }) 32 submenu.Append(connectAllMenu) 33 34 disconnectAllMenu, _ := g.gtk.MenuItemNewWithMnemonic(i18n.Local("_Disconnect All")) 35 disconnectAllMenu.Connect("activate", u.disconnectAll) 36 submenu.Append(disconnectAllMenu) 37 38 sep2, _ := g.gtk.SeparatorMenuItemNew() 39 submenu.Append(sep2) 40 41 registerAccMenu, _ := g.gtk.MenuItemNewWithMnemonic(i18n.Local("_New Account")) 42 registerAccMenu.Connect("activate", u.showServerSelectionWindow) 43 submenu.Append(registerAccMenu) 44 45 addAccMenu, _ := g.gtk.MenuItemNewWithMnemonic(i18n.Local("_Add Account")) 46 addAccMenu.Connect("activate", u.showAddAccountWindow) 47 submenu.Append(addAccMenu) 48 49 importMenu, _ := g.gtk.MenuItemNewWithMnemonic(i18n.Local("_Import Account")) 50 importMenu.Connect("activate", u.runImporter) 51 submenu.Append(importMenu) 52 53} 54 55func (u *gtkUI) buildAccountsMenu() { 56 accountsLock.Lock() 57 defer accountsLock.Unlock() 58 59 submenu, _ := g.gtk.MenuNew() 60 61 allAccounts := u.getAllAccounts() 62 for _, account := range allAccounts { 63 account.appendMenuTo(u, submenu) 64 } 65 66 if len(allAccounts) > 0 { 67 sep, _ := g.gtk.SeparatorMenuItemNew() 68 submenu.Append(sep) 69 } 70 71 u.buildStaticAccountsMenu(submenu) 72 73 submenu.ShowAll() 74 75 u.accountsMenu.SetSubmenu(submenu) 76} 77