// // rhlibrary // // The Radio Helsinki Rivendell Library // // // Copyright (C) 2016 Christian Pointner // // This file is part of rhlibrary. // // rhlibrary is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // rhlibrary is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with rhlibrary. If not, see . // package main import ( "code.helsinki.at/rhrd-go/player" "github.com/gotk3/gotk3/gtk" ) type AppWindow struct { win *gtk.Window player *player.PlayerChan } func (aw *AppWindow) dispatchRequests() { for { select {} } } func (aw *AppWindow) drawSelector(grid *gtk.Grid) (err error) { widget, err := getSelectorWidget(aw.player) if err == nil { grid.Add(widget) } return err } func (aw *AppWindow) drawPlayer(grid *gtk.Grid) error { widget, err := getPlayerWidget(aw.player) if err == nil { grid.Add(widget) } return err } // ********************************************************* // Public Interface func (aw *AppWindow) ShowAndRun() { go aw.dispatchRequests() aw.win.ShowAll() } func NewAppWindow(player *player.PlayerChan, width, height int) (aw *AppWindow, err error) { aw = &AppWindow{} aw.player = player if aw.win, err = gtk.WindowNew(gtk.WINDOW_TOPLEVEL); err != nil { return } aw.win.SetTitle("rhlibrary") aw.win.Connect("destroy", func() { gtk.MainQuit() }) var grid *gtk.Grid if grid, err = gtk.GridNew(); err != nil { return } grid.SetOrientation(gtk.ORIENTATION_VERTICAL) if err = aw.drawSelector(grid); err != nil { return } if err = aw.drawPlayer(grid); err != nil { return } aw.win.Add(grid) aw.win.SetDefaultSize(width, height) return }