func (u *gtkUI) configLoaded(c *config.ApplicationConfig) { u.settings = settings.For(c.GetUniqueID()) u.roster.restoreCollapseStatus() u.roster.deNotify.updateWith(u.settings) u.updateUnifiedOrNot() u.buildAccounts(c, u.sessionFactory, u.dialerFactory) doInUIThread(func() { if u.viewMenu != nil { u.viewMenu.setFromConfig(c) } if u.optionsMenu != nil { u.optionsMenu.setFromConfig(c) } if u.window != nil { u.window.Emit(accountChangedSignal.String()) } }) u.addInitialAccountsToRoster() if c.ConnectAutomatically { u.connectAllAutomatics(false) } go u.listenToToggleConnectAllAutomatically() go u.listenToSetShowAdvancedSettings() }
// NewGTK returns a new client for a GTK ui func NewGTK(version string, sf sessions.Factory, df interfaces.DialerFactory, gx Graphics) UI { runtime.LockOSThread() coyimVersion = version g = gx initSignals() //*.mo files should be in ./i18n/locale_code.utf8/LC_MESSAGES/ g.glib.InitI18n(localizationDomain, "./i18n") g.gtk.Init(argsWithApplicationName()) ensureInstalled() ret := >kUI{ commands: make(chan interface{}, 5), toggleConnectAllAutomaticallyRequest: make(chan bool, 100), setShowAdvancedSettingsRequest: make(chan bool, 100), dialerFactory: df, } var err error flags := glibi.APPLICATION_FLAGS_NONE if *config.MultiFlag { flags = glibi.APPLICATION_NON_UNIQUE } ret.app, err = g.gtk.ApplicationNew(applicationID, flags) if err != nil { panic(err) } ret.keySupplier = config.CachingKeySupplier(ret.getMasterPassword) ret.accountManager = newAccountManager(ret) ret.sessionFactory = sf ret.settings = settings.For("") return ret }