Small tweaks

master
Michael Dvorkin 11 years ago
parent b0c4dd0fa9
commit 8e3b2292ce
  1. 57
      line_editor.go
  2. 6
      mop/mop.go

@ -26,7 +26,7 @@ func (self *LineEditor) Initialize(screen *Screen, quotes *Quotes) *LineEditor {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (self *LineEditor) Prompt(command rune) { func (self *LineEditor) Prompt(command rune) *LineEditor {
prompts := map[rune]string{'+': `Add tickers: `, '-': `Remove tickers: `} prompts := map[rune]string{'+': `Add tickers: `, '-': `Remove tickers: `}
if prompt, ok := prompts[command]; ok { if prompt, ok := prompts[command]; ok {
self.prompt = prompt self.prompt = prompt
@ -36,6 +36,8 @@ func (self *LineEditor) Prompt(command rune) {
termbox.SetCursor(len(self.prompt), 3) termbox.SetCursor(len(self.prompt), 3)
termbox.Flush() termbox.Flush()
} }
return self
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -44,13 +46,10 @@ func (self *LineEditor) Handle(ev termbox.Event) bool {
switch ev.Key { switch ev.Key {
case termbox.KeyEsc: case termbox.KeyEsc:
self.done() return self.done()
return true
case termbox.KeyEnter: case termbox.KeyEnter:
self.execute() return self.execute().done()
self.done()
return true
case termbox.KeyBackspace, termbox.KeyBackspace2: case termbox.KeyBackspace, termbox.KeyBackspace2:
self.delete_previous_character() self.delete_previous_character()
@ -75,12 +74,12 @@ func (self *LineEditor) Handle(ev termbox.Event) bool {
self.insert_character(ev.Ch) self.insert_character(ev.Ch)
} }
} }
//self.screen.DrawLine(20,20, fmt.Sprintf(`cursor: %02d [%s] %08d`, self.cursor, self.input, ev.Ch))
return false return false
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (self *LineEditor) delete_previous_character() { func (self *LineEditor) delete_previous_character() *LineEditor {
if self.cursor > 0 { if self.cursor > 0 {
if self.cursor < len(self.input) { if self.cursor < len(self.input) {
// Remove character in the middle of the input string. // Remove character in the middle of the input string.
@ -92,10 +91,12 @@ func (self *LineEditor) delete_previous_character() {
self.screen.DrawLine(len(self.prompt), 3, self.input + ` `) // Erase last character. self.screen.DrawLine(len(self.prompt), 3, self.input + ` `) // Erase last character.
self.move_left() self.move_left()
} }
return self
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (self *LineEditor) insert_character(ch rune) { func (self *LineEditor) insert_character(ch rune) *LineEditor {
if self.cursor < len(self.input) { if self.cursor < len(self.input) {
// Insert the character in the middle of the input string. // Insert the character in the middle of the input string.
self.input = self.input[0 : self.cursor] + string(ch) + self.input[self.cursor : len(self.input)] self.input = self.input[0 : self.cursor] + string(ch) + self.input[self.cursor : len(self.input)]
@ -105,44 +106,48 @@ func (self *LineEditor) insert_character(ch rune) {
} }
self.screen.DrawLine(len(self.prompt), 3, self.input) self.screen.DrawLine(len(self.prompt), 3, self.input)
self.move_right() self.move_right()
return self
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (self *LineEditor) move_left() { func (self *LineEditor) move_left() *LineEditor {
if self.cursor > 0 { if self.cursor > 0 {
self.cursor -= 1 self.cursor--
termbox.SetCursor(len(self.prompt) + self.cursor, 3) termbox.SetCursor(len(self.prompt) + self.cursor, 3)
} }
return self
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (self *LineEditor) move_right() { func (self *LineEditor) move_right() *LineEditor {
if self.cursor < len(self.input) { if self.cursor < len(self.input) {
self.cursor += 1 self.cursor++
termbox.SetCursor(len(self.prompt) + self.cursor, 3) termbox.SetCursor(len(self.prompt) + self.cursor, 3)
} }
return self
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (self *LineEditor) jump_to_beginning() { func (self *LineEditor) jump_to_beginning() *LineEditor {
self.cursor = 0 self.cursor = 0
termbox.SetCursor(len(self.prompt) + self.cursor, 3) termbox.SetCursor(len(self.prompt) + self.cursor, 3)
return self
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (self *LineEditor) jump_to_end() { func (self *LineEditor) jump_to_end() *LineEditor {
self.cursor = len(self.input) self.cursor = len(self.input)
termbox.SetCursor(len(self.prompt) + self.cursor, 3) termbox.SetCursor(len(self.prompt) + self.cursor, 3)
}
//----------------------------------------------------------------------------- return self
func (self *LineEditor) done() {
self.screen.ClearLine(0, 3)
termbox.HideCursor()
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (self *LineEditor) execute() { func (self *LineEditor) execute() *LineEditor {
switch self.command { switch self.command {
case '+': case '+':
tickers := self.tokenize() tickers := self.tokenize()
@ -164,6 +169,16 @@ func (self *LineEditor) execute() {
} }
} }
} }
return self
}
//-----------------------------------------------------------------------------
func (self *LineEditor) done() bool {
self.screen.ClearLine(0, 3)
termbox.HideCursor()
return true
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

@ -65,13 +65,11 @@ loop:
screen.Clear().Draw(help) screen.Clear().Draw(help)
} }
} else if line_editor != nil { } else if line_editor != nil {
done := line_editor.Handle(event) if done := line_editor.Handle(event); done {
if done {
line_editor = nil line_editor = nil
} }
} else if column_editor != nil { } else if column_editor != nil {
done := column_editor.Handle(event) if done := column_editor.Handle(event); done {
if done {
column_editor = nil column_editor = nil
} }
} else if showing_help { } else if showing_help {

Loading…
Cancel
Save