Fixed all messageboxes that can use struct object as self name (e.g. m for messageboxes in mainwindow). Should help to avoid some errors. Added possibility to copy server's credentials into clipboard for ease of sharing.
		
			
				
	
	
		
			117 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // URTator - Urban Terror server browser and game launcher, written in
 | |
| // Go.
 | |
| //
 | |
| // Copyright (c) 2016, Stanslav N. a.k.a pztrn (or p0z1tr0n)
 | |
| // All rights reserved.
 | |
| //
 | |
| // Licensed under Terms and Conditions of GNU General Public License
 | |
| // version 3 or any higher.
 | |
| // ToDo: put full text of license here.
 | |
| package context
 | |
| 
 | |
| import (
 | |
|     // stdlib
 | |
|     "errors"
 | |
|     "fmt"
 | |
| 
 | |
|     // local
 | |
|     "github.com/pztrn/urtrator/cache"
 | |
|     "github.com/pztrn/urtrator/clipboardwatcher"
 | |
|     "github.com/pztrn/urtrator/colorizer"
 | |
|     "github.com/pztrn/urtrator/configuration"
 | |
|     "github.com/pztrn/urtrator/database"
 | |
|     "github.com/pztrn/urtrator/eventer"
 | |
|     "github.com/pztrn/urtrator/launcher"
 | |
|     "github.com/pztrn/urtrator/requester"
 | |
| 
 | |
|     // Github
 | |
|     "github.com/mattn/go-gtk/gtk"
 | |
| )
 | |
| 
 | |
| type Context struct {
 | |
|     // Caching.
 | |
|     Cache *cache.Cache
 | |
|     // Clipboard watcher.
 | |
|     Clipboard *clipboardwatcher.ClipboardWatcher
 | |
|     // Colors parser and prettifier.
 | |
|     Colorizer *colorizer.Colorizer
 | |
|     // Configuration.
 | |
|     Cfg *configuration.Config
 | |
|     // Database.
 | |
|     Database *database.Database
 | |
|     // Eventer.
 | |
|     Eventer *eventer.Eventer
 | |
|     // Game launcher.
 | |
|     Launcher *launcher.Launcher
 | |
|     // Requester, which requests server's information.
 | |
|     Requester *requester.Requester
 | |
| }
 | |
| 
 | |
| func (ctx *Context) Close() error {
 | |
|     fmt.Println("Closing URTrator...")
 | |
| 
 | |
|     launched := ctx.Launcher.CheckForLaunchedUrbanTerror()
 | |
|     if launched != nil {
 | |
|         return errors.New("Urban Terror is launched!")
 | |
|     }
 | |
|     ctx.Cache.FlushProfiles(map[string]string{})
 | |
|     ctx.Cache.FlushServers(map[string]string{})
 | |
|     ctx.Database.Close()
 | |
| 
 | |
|     // At last, close main window.
 | |
|     gtk.MainQuit()
 | |
|     return nil
 | |
| }
 | |
| 
 | |
| func (ctx *Context) initializeCache() {
 | |
|     ctx.Cache = cache.New(ctx.Database, ctx.Eventer)
 | |
|     ctx.Cache.Initialize()
 | |
| }
 | |
| 
 | |
| func (ctx *Context) InitializeClipboardWatcher() {
 | |
|     ctx.Clipboard = clipboardwatcher.New(ctx.Cache, ctx.Eventer)
 | |
|     ctx.Clipboard.Initialize()
 | |
| }
 | |
| 
 | |
| func (ctx *Context) initializeColorizer() {
 | |
|     ctx.Colorizer = colorizer.New()
 | |
|     ctx.Colorizer.Initialize()
 | |
| }
 | |
| 
 | |
| func (ctx *Context) initializeConfig() {
 | |
|     ctx.Cfg = configuration.New()
 | |
|     ctx.Cfg.Initialize()
 | |
| }
 | |
| 
 | |
| func (ctx *Context) initializeDatabase() {
 | |
|     ctx.Database = database.New(ctx.Cfg)
 | |
|     ctx.Database.Initialize(ctx.Cfg)
 | |
|     ctx.Database.Migrate()
 | |
| }
 | |
| 
 | |
| func (ctx *Context) initializeEventer() {
 | |
|     ctx.Eventer = eventer.New()
 | |
|     ctx.Eventer.Initialize()
 | |
| }
 | |
| 
 | |
| func (ctx *Context) initializeLauncher() {
 | |
|     ctx.Launcher = launcher.New()
 | |
|     ctx.Launcher.Initialize()
 | |
| }
 | |
| 
 | |
| func (ctx *Context) initializeRequester() {
 | |
|     ctx.Requester = requester.New(ctx.Cache, ctx.Eventer)
 | |
|     ctx.Requester.Initialize()
 | |
| }
 | |
| 
 | |
| func (ctx *Context) Initialize() {
 | |
|     fmt.Println("Initializing application context...")
 | |
|     ctx.initializeColorizer()
 | |
|     ctx.initializeConfig()
 | |
|     ctx.initializeDatabase()
 | |
|     ctx.initializeEventer()
 | |
|     ctx.initializeCache()
 | |
|     ctx.initializeLauncher()
 | |
|     ctx.initializeRequester()
 | |
| }
 |