diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/rhlibrary/player_widget.go | 98 | ||||
-rw-r--r-- | src/rhlibrary/show_selector_widget.go | 34 |
2 files changed, 79 insertions, 53 deletions
diff --git a/src/rhlibrary/player_widget.go b/src/rhlibrary/player_widget.go index fcaaeab..f990279 100644 --- a/src/rhlibrary/player_widget.go +++ b/src/rhlibrary/player_widget.go @@ -138,53 +138,6 @@ func addMeter(grid *gtk.Grid, p *player.PlayerChan) error { return nil } -func addScrubber(grid *gtk.Grid, p *player.PlayerChan) (err error) { - var scale *gtk.Scale - if scale, err = gtk.ScaleNew(gtk.ORIENTATION_HORIZONTAL, nil); err != nil { - return - } - if err = scale.SetProperty("draw-value", false); err != nil { - return - } - scale.SetRange(0, 1) - scale.SetValue(0) - - scale.Connect("change-value", func(s *gtk.Scale, _ interface{}, pos float64) { - if err := p.Seek(pos); err != nil { - rhdl.Println(err) // TODO: feedback at GUI? - } - }) - scale.SetSensitive(false) - - p.AddUpdateHandler(func(duration time.Duration, pos time.Duration, _ player.Meter, _ interface{}) bool { - glib.IdleAdd(func() { - if duration > 0 { - scale.SetValue(float64(pos) / float64(duration)) - } else { - scale.SetValue(0) - } - }) - return true - }, nil) - - p.AddStateChangeHandler(func(state player.State, _ interface{}) bool { - glib.IdleAdd(func() { - switch state { - case player.IDLE: - scale.SetSensitive(false) - case player.PAUSED: - scale.SetSensitive(true) - case player.PLAYING: - scale.SetSensitive(true) - } - }) - return true - }, nil) - - grid.Attach(scale, 1, 2, 3, 1) - return -} - func getPlayTimeString(duration, pos time.Duration, countdown bool) string { t := time.Unix(0, 0).UTC() if countdown { @@ -238,6 +191,53 @@ func addPlayTime(grid *gtk.Grid, p *player.PlayerChan) (err error) { return } +func addScrubber(grid *gtk.Grid, p *player.PlayerChan) (err error) { + var scale *gtk.Scale + if scale, err = gtk.ScaleNew(gtk.ORIENTATION_HORIZONTAL, nil); err != nil { + return + } + if err = scale.SetProperty("draw-value", false); err != nil { + return + } + scale.SetRange(0, 1) + scale.SetValue(0) + + scale.Connect("change-value", func(s *gtk.Scale, _ interface{}, pos float64) { + if err := p.Seek(pos); err != nil { + rhdl.Println(err) // TODO: feedback at GUI? + } + }) + scale.SetSensitive(false) + + p.AddUpdateHandler(func(duration time.Duration, pos time.Duration, _ player.Meter, _ interface{}) bool { + glib.IdleAdd(func() { + if duration > 0 { + scale.SetValue(float64(pos) / float64(duration)) + } else { + scale.SetValue(0) + } + }) + return true + }, nil) + + p.AddStateChangeHandler(func(state player.State, _ interface{}) bool { + glib.IdleAdd(func() { + switch state { + case player.IDLE: + scale.SetSensitive(false) + case player.PAUSED: + scale.SetSensitive(true) + case player.PLAYING: + scale.SetSensitive(true) + } + }) + return true + }, nil) + + grid.Attach(scale, 1, 2, 3, 1) + return +} + func getPlayerWidget(p *player.PlayerChan) (gtk.IWidget, error) { var err error var grid *gtk.Grid @@ -254,10 +254,10 @@ func getPlayerWidget(p *player.PlayerChan) (gtk.IWidget, error) { if err = addMeter(grid, p); err != nil { return nil, err } - if err = addScrubber(grid, p); err != nil { + if err = addPlayTime(grid, p); err != nil { return nil, err } - if err = addPlayTime(grid, p); err != nil { + if err = addScrubber(grid, p); err != nil { return nil, err } diff --git a/src/rhlibrary/show_selector_widget.go b/src/rhlibrary/show_selector_widget.go index ee49e57..5b3bcab 100644 --- a/src/rhlibrary/show_selector_widget.go +++ b/src/rhlibrary/show_selector_widget.go @@ -110,23 +110,49 @@ func selectShow() { } func addShowComboBox(grid *gtk.Grid, db *rddb.DBChan) (err error) { + var box *gtk.Box + if box, err = gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 10); err != nil { + return + } + var label *gtk.Label if label, err = gtk.LabelNew("Sendung auswählen"); err != nil { return } - grid.Attach(label, 1, 1, 1, 1) + box.PackStart(label, false, false, 0) if showsComboBox, err = gtk.ComboBoxTextNew(); err != nil { return } - if err = updateShows(db); err != nil { return err } - showsComboBox.Connect("changed", func(_ *gtk.ComboBoxText) { selectShow() }) - grid.Attach(showsComboBox, 2, 1, 1, 1) + box.PackStart(showsComboBox, true, true, 0) + box.SetHExpand(true) + + var frame *gtk.Frame + if frame, err = gtk.FrameNew(""); err != nil { + return + } + + var cp *gtk.CssProvider + if cp, err = gtk.CssProviderNew(); err != nil { + return + } + if err = cp.LoadFromData(".frame { border: 0; padding: 25px 42px; }"); err != nil { + return + } + var sc *gtk.StyleContext + if sc, err = frame.GetStyleContext(); err != nil { + return + } + sc.AddProvider(cp, 600) // TOOD: hardcoded value + + frame.Add(box) + + grid.Attach(frame, 1, 1, 1, 1) return } |