summaryrefslogtreecommitdiff
path: root/src/rhlibrary/vumeter_widget.go
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2016-01-29 14:41:32 (GMT)
committerChristian Pointner <equinox@spreadspace.org>2016-01-29 14:41:32 (GMT)
commit5768d71b0fbba0650d35feeb0eea801644f3efb4 (patch)
treea62707e13d6984741d764757d17509417dff97e0 /src/rhlibrary/vumeter_widget.go
parentafe221e150b838a7319c4ab9fdcfe5ecb47a3de3 (diff)
even nicer VU meter
Diffstat (limited to 'src/rhlibrary/vumeter_widget.go')
-rw-r--r--src/rhlibrary/vumeter_widget.go55
1 files changed, 37 insertions, 18 deletions
diff --git a/src/rhlibrary/vumeter_widget.go b/src/rhlibrary/vumeter_widget.go
index f6bda94..3cbb452 100644
--- a/src/rhlibrary/vumeter_widget.go
+++ b/src/rhlibrary/vumeter_widget.go
@@ -64,6 +64,9 @@ func getMeterBarCSS() (*gtk.CssProvider, error) {
border-radius: 0;
background-image: unset;
}
+.level-bar.fill-block {
+ border-color: #323232
+}
.level-bar.fill-block.level-green {
border-color: #006600;
background-image: linear-gradient(to bottom, #36B736, #006600);
@@ -109,6 +112,7 @@ func (lvl *vuMeterLevel) setLevel(valdb float64) {
}
type vuMeter struct {
+ label *gtk.Label
green *gtk.LevelBar
orange *gtk.LevelBar
red *gtk.LevelBar
@@ -121,6 +125,8 @@ func createMeterBar(segments float64) (bar *gtk.LevelBar, err error) {
bar.SetMode(gtk.LEVEL_BAR_MODE_DISCRETE)
bar.RemoveOffsetValue(gtk.LEVEL_BAR_OFFSET_LOW)
bar.RemoveOffsetValue(gtk.LEVEL_BAR_OFFSET_HIGH)
+ bar.SetHExpand(false)
+ bar.SetVExpand(false)
var sc *gtk.StyleContext
if sc, err = bar.GetStyleContext(); err != nil {
@@ -135,8 +141,24 @@ func createMeterBar(segments float64) (bar *gtk.LevelBar, err error) {
return
}
-func newVUMeter() (meter *vuMeter, err error) {
+func newVUMeter(ch string) (meter *vuMeter, err error) {
meter = &vuMeter{}
+ if meter.label, err = gtk.LabelNew(ch); err != nil {
+ return
+ }
+ var cp *gtk.CssProvider
+ if cp, err = gtk.CssProviderNew(); err != nil {
+ return nil, err
+ }
+ if err = cp.LoadFromData(".label { color: #a2a2a2; padding: 0px 2px 0px 0px; font-size: 4.5px; font-variant: small-caps; font-weight: bold; }"); err != nil {
+ return nil, err
+ }
+ var sc *gtk.StyleContext
+ if sc, err = meter.label.GetStyleContext(); err != nil {
+ return nil, err
+ }
+ sc.AddProvider(cp, 600) // TOOD: hardcoded value
+
if meter.green, err = createMeterBar(meterSegmentsGreen); err != nil {
return
}
@@ -180,13 +202,13 @@ func addVUMeterGrid(frame *gtk.Frame, p *player.PlayerChan) (err error) {
if grid, err = gtk.GridNew(); err != nil {
return
}
- grid.SetRowSpacing(3)
+ grid.SetRowSpacing(2)
var left, right *vuMeter
- if left, err = newVUMeter(); err != nil {
+ if left, err = newVUMeter("L"); err != nil {
return
}
- if right, err = newVUMeter(); err != nil {
+ if right, err = newVUMeter("R"); err != nil {
return
}
@@ -195,12 +217,15 @@ func addVUMeterGrid(frame *gtk.Frame, p *player.PlayerChan) (err error) {
return true
}, nil)
- grid.Attach(left.green, 1, 1, 1, 1)
- grid.Attach(left.orange, 2, 1, 1, 1)
- grid.Attach(left.red, 3, 1, 1, 1)
- grid.Attach(right.green, 1, 2, 1, 1)
- grid.Attach(right.orange, 2, 2, 1, 1)
- grid.Attach(right.red, 3, 2, 1, 1)
+ grid.Attach(left.label, 1, 1, 1, 1)
+ grid.Attach(left.green, 2, 1, 1, 1)
+ grid.Attach(left.orange, 3, 1, 1, 1)
+ grid.Attach(left.red, 4, 1, 1, 1)
+
+ grid.Attach(right.label, 1, 2, 1, 1)
+ grid.Attach(right.green, 2, 2, 1, 1)
+ grid.Attach(right.orange, 3, 2, 1, 1)
+ grid.Attach(right.red, 4, 2, 1, 1)
grid.SetRowHomogeneous(true)
@@ -218,7 +243,7 @@ func getVUMeterWidget(p *player.PlayerChan) (gtk.IWidget, error) {
if cp, err = gtk.CssProviderNew(); err != nil {
return nil, err
}
- if err = cp.LoadFromData(".frame { padding: 3px; }"); err != nil {
+ if err = cp.LoadFromData(".frame { background-color: #2a2a2a; border: 1px solid; border-color: #a1a1a1; border-radius: 5px; padding: 11px; }"); err != nil {
return nil, err
}
var sc *gtk.StyleContext
@@ -231,11 +256,5 @@ func getVUMeterWidget(p *player.PlayerChan) (gtk.IWidget, error) {
return nil, err
}
- var box *gtk.Box
- if box, err = gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 7); err != nil {
- return nil, err
- }
- box.PackStart(frame, false, false, 3)
-
- return box, nil
+ return frame, nil
}