]> git.0d.be Git - barnard.git/commitdiff
uiterm: remove *Ui argument from View methods
authorTim Cooper <tim.cooper@layeh.com>
Sun, 7 Dec 2014 01:55:33 +0000 (21:55 -0400)
committerTim Cooper <tim.cooper@layeh.com>
Sun, 7 Dec 2014 01:55:33 +0000 (21:55 -0400)
uiterm/label.go
uiterm/textbox.go
uiterm/textview.go
uiterm/tree.go
uiterm/ui.go
uiterm/view.go

index cde1de1ef76de7430b87ce172d04aa79a418e4c1..4cda72c99422024b871dd3bb655c59713ef13464 100644 (file)
@@ -11,20 +11,25 @@ type Label struct {
        Fg   Attribute
        Bg   Attribute
 
+       ui *Ui
        x0, y0, x1, y1 int
 }
 
-func (l *Label) setActive(ui *Ui, active bool) {
+func (l *Label) uiInitialize(ui *Ui) {
+       l.ui = ui
 }
 
-func (l *Label) setBounds(ui *Ui, x0, y0, x1, y1 int) {
+func (l *Label) setActive(active bool) {
+}
+
+func (l *Label) setBounds(x0, y0, x1, y1 int) {
        l.x0 = x0
        l.y0 = y0
        l.x1 = x1
        l.y1 = y1
 }
 
-func (l *Label) draw(ui *Ui) {
+func (l *Label) draw() {
        reader := strings.NewReader(l.Text)
        for y := l.y0; y < l.y1; y++ {
                for x := l.x0; x < l.x1; x++ {
@@ -39,8 +44,8 @@ func (l *Label) draw(ui *Ui) {
        }
 }
 
-func (l *Label) keyEvent(ui *Ui, mod Modifier, key Key) {
+func (l *Label) keyEvent(mod Modifier, key Key) {
 }
 
-func (l *Label) characterEvent(ui *Ui, chr rune) {
+func (l *Label) characterEvent(chr rune) {
 }
index a1b38b4a135d1adad7148f0e96b4c50902352311..c40ffe7c4ed7b156f3cfcdbebea2f27ce388dc0d 100644 (file)
@@ -16,22 +16,27 @@ type Textbox struct {
 
        Input InputFunc
 
+       ui *Ui
        active         bool
        x0, y0, x1, y1 int
 }
 
-func (t *Textbox) setBounds(ui *Ui, x0, y0, x1, y1 int) {
+func (t *Textbox) uiInitialize(ui *Ui) {
+       t.ui = ui
+}
+
+func (t *Textbox) setBounds(x0, y0, x1, y1 int) {
        t.x0 = x0
        t.y0 = y0
        t.x1 = x1
        t.y1 = y1
 }
 
-func (t *Textbox) setActive(ui *Ui, active bool) {
+func (t *Textbox) setActive(active bool) {
        t.active = active
 }
 
-func (t *Textbox) draw(ui *Ui) {
+func (t *Textbox) draw() {
        var setCursor = false
        reader := strings.NewReader(t.Text)
        for y := t.y0; y < t.y1; y++ {
@@ -51,7 +56,7 @@ func (t *Textbox) draw(ui *Ui) {
        }
 }
 
-func (t *Textbox) keyEvent(ui *Ui, mod Modifier, key Key) {
+func (t *Textbox) keyEvent(mod Modifier, key Key) {
        redraw := false
        switch key {
        case KeyCtrlC:
@@ -59,7 +64,7 @@ func (t *Textbox) keyEvent(ui *Ui, mod Modifier, key Key) {
                redraw = true
        case KeyEnter:
                if t.Input != nil {
-                       t.Input(ui, t, t.Text)
+                       t.Input(t.ui, t, t.Text)
                }
                t.Text = ""
                redraw = true
@@ -76,13 +81,13 @@ func (t *Textbox) keyEvent(ui *Ui, mod Modifier, key Key) {
                }
        }
        if redraw {
-               t.draw(ui)
+               t.draw()
                termbox.Flush()
        }
 }
 
-func (t *Textbox) characterEvent(ui *Ui, chr rune) {
+func (t *Textbox) characterEvent(chr rune) {
        t.Text = t.Text + string(chr)
-       t.draw(ui)
+       t.draw()
        termbox.Flush()
 }
index 1d0666bc6dfc47157b3a65bf9dec02f1b8e46f32..dc23c5def5e3e20eea97ce5db888431d13157a07 100644 (file)
@@ -13,13 +13,19 @@ type Textview struct {
        Bg          Attribute
 
        parsedLines    []string
+
+       ui *Ui
        x0, y0, x1, y1 int
 }
 
-func (t *Textview) setActive(ui *Ui, active bool) {
+func (t *Textview) uiInitialize(ui *Ui) {
+       t.ui = ui
+}
+
+func (t *Textview) setActive(active bool) {
 }
 
-func (t *Textview) setBounds(ui *Ui, x0, y0, x1, y1 int) {
+func (t *Textview) setBounds(x0, y0, x1, y1 int) {
        t.x0 = x0
        t.y0 = y0
        t.x1 = x1
@@ -96,7 +102,7 @@ func (t *Textview) Clear() {
        t.parsedLines = nil
 }
 
-func (t *Textview) draw(ui *Ui) {
+func (t *Textview) draw() {
        var reader *strings.Reader
        line := len(t.parsedLines) - 1 - t.CurrentLine
        if line < 0 {
@@ -134,8 +140,8 @@ func (t *Textview) draw(ui *Ui) {
        }
 }
 
-func (t *Textview) keyEvent(ui *Ui, mod Modifier, key Key) {
+func (t *Textview) keyEvent(mod Modifier, key Key) {
 }
 
-func (t *Textview) characterEvent(ui *Ui, chr rune) {
+func (t *Textview) characterEvent(chr rune) {
 }
index 1516bc977f5bfeaa997ec9737c534c3aa747282a..dd5d3db9f2b5b7a2e2c1bc9e1c29ea9ac0697458 100644 (file)
@@ -28,6 +28,8 @@ type Tree struct {
 
        lines          []renderedTreeItem
        activeLine     int
+
+       ui *Ui
        active         bool
        x0, y0, x1, y1 int
 }
@@ -42,7 +44,11 @@ func bounded(i, lower, upper int) int {
        return i
 }
 
-func (t *Tree) setBounds(ui *Ui, x0, y0, x1, y1 int) {
+func (t *Tree) uiInitialize(ui *Ui) {
+       t.ui = ui
+}
+
+func (t *Tree) setBounds(x0, y0, x1, y1 int) {
        t.x0 = x0
        t.y0 = y0
        t.x1 = x1
@@ -85,7 +91,7 @@ func (t *Tree) rebuild_rec(parent TreeItem, level int) []renderedTreeItem {
        return lines
 }
 
-func (t *Tree) draw(ui *Ui) {
+func (t *Tree) draw() {
        if t.lines == nil {
                t.Rebuild()
        }
@@ -118,11 +124,11 @@ func (t *Tree) draw(ui *Ui) {
        }
 }
 
-func (t *Tree) setActive(ui *Ui, active bool) {
+func (t *Tree) setActive(active bool) {
        t.active = active
 }
 
-func (t *Tree) keyEvent(ui *Ui, mod Modifier, key Key) {
+func (t *Tree) keyEvent(mod Modifier, key Key) {
        switch key {
        case KeyArrowUp:
                t.activeLine = bounded(t.activeLine-1, 0, len(t.lines)-1)
@@ -130,11 +136,11 @@ func (t *Tree) keyEvent(ui *Ui, mod Modifier, key Key) {
                t.activeLine = bounded(t.activeLine+1, 0, len(t.lines)-1)
        case KeyEnter:
                if t.Listener != nil && t.activeLine >= 0 && t.activeLine < len(t.lines) {
-                       t.Listener(ui, t, t.lines[t.activeLine].Item)
+                       t.Listener(t.ui, t, t.lines[t.activeLine].Item)
                }
        }
-       ui.Refresh()
+       t.ui.Refresh()
 }
 
-func (t *Tree) characterEvent(ui *Ui, ch rune) {
+func (t *Tree) characterEvent(ch rune) {
 }
index bb4d10bb56673de30b9ae51fd274d95a59b248df..63a005197ee73848ccb84c293a0ecfcb54fc2f10 100644 (file)
@@ -52,7 +52,7 @@ func (ui *Ui) Refresh() {
                termbox.Clear(termbox.Attribute(ui.fg), termbox.Attribute(ui.bg))
                termbox.HideCursor()
                for _, element := range ui.elements {
-                       element.View.draw(ui)
+                       element.View.draw()
                }
                termbox.Flush()
        }
@@ -65,11 +65,11 @@ func (ui *Ui) Active() View {
 func (ui *Ui) SetActive(name string) {
        element, _ := ui.elements[name]
        if ui.activeElement != nil {
-               ui.activeElement.View.setActive(ui, false)
+               ui.activeElement.View.setActive(false)
        }
        ui.activeElement = element
        if element != nil {
-               element.View.setActive(ui, true)
+               element.View.setActive(true)
        }
        ui.Refresh()
 }
@@ -123,7 +123,7 @@ func (ui *Ui) Run() error {
 
 func (ui *Ui) onCharacterEvent(ch rune) {
        if ui.activeElement != nil {
-               ui.activeElement.View.characterEvent(ui, ch)
+               ui.activeElement.View.characterEvent(ch)
        }
 }
 
@@ -134,7 +134,7 @@ func (ui *Ui) onKeyEvent(mod Modifier, key Key) {
                }
        }
        if ui.activeElement != nil {
-               ui.activeElement.View.keyEvent(ui, mod, key)
+               ui.activeElement.View.keyEvent(mod, key)
        }
 }
 
@@ -153,8 +153,9 @@ func (ui *Ui) SetView(name string, x0, y0, x1, y1 int, view View) {
                        Y1:   y1,
                        View: view,
                }
+               view.uiInitialize(ui)
        }
-       view.setBounds(ui, x0, y0, x1, y1)
+       view.setBounds(x0, y0, x1, y1)
 }
 
 func (ui *Ui) View(name string) View {
index c33d1a6908c354421b4e3a63071c9b20affce6ac..c9b6a65dd35995dc9426f3a1b32d77e82b62c1de 100644 (file)
@@ -1,9 +1,10 @@
 package uiterm
 
 type View interface {
-       setActive(ui *Ui, active bool)
-       setBounds(ui *Ui, x0, y0, x1, y1 int)
-       draw(ui *Ui)
-       keyEvent(ui *Ui, mod Modifier, key Key)
-       characterEvent(ui *Ui, ch rune)
+       uiInitialize(ui *Ui)
+       setActive(active bool)
+       setBounds(x0, y0, x1, y1 int)
+       draw()
+       keyEvent(mod Modifier, key Key)
+       characterEvent(ch rune)
 }