|
|
|
@ -9,7 +9,7 @@ import (
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
MasterWidth int = 376
|
|
|
|
|
MasterWidth int = 382
|
|
|
|
|
Version string = "0.1.1"
|
|
|
|
|
FullStack int = iota
|
|
|
|
|
TopThree
|
|
|
|
@ -135,6 +135,14 @@ func SetStackLabelWithSort() {
|
|
|
|
|
stackLabel = g.Label(fmt.Sprintf("Stack Output\n[d]{%s}", sort))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ToggleScreenSize() {
|
|
|
|
|
width := MasterWidth
|
|
|
|
|
if ShowStack {
|
|
|
|
|
width = MasterWidth + MasterWidth / 2
|
|
|
|
|
}
|
|
|
|
|
wnd.SetSize(width,400)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func loop() {
|
|
|
|
|
g.SingleWindowWithMenuBar("gnums - " + Version).Layout(
|
|
|
|
|
g.MenuBar().Layout(
|
|
|
|
@ -147,12 +155,7 @@ func loop() {
|
|
|
|
|
g.MenuItem("Clear Stack"),
|
|
|
|
|
),
|
|
|
|
|
g.Menu("Settings").Layout(
|
|
|
|
|
g.Checkbox("Show Stack Window", &ShowStack).OnChange(func(){
|
|
|
|
|
width := MasterWidth
|
|
|
|
|
if ShowStack {
|
|
|
|
|
width = MasterWidth + MasterWidth / 2
|
|
|
|
|
}
|
|
|
|
|
wnd.SetSize(width,400)}),
|
|
|
|
|
g.Checkbox("Show Stack Window", &ShowStack).OnChange(ToggleScreenSize),
|
|
|
|
|
g.Menu("Output Style").Layout(
|
|
|
|
|
g.RadioButton("Full Stack", stackStyle == FullStack).OnChange(func(){stackStyle = FullStack; outputDisplay = s.String()}),
|
|
|
|
|
g.RadioButton("Top Three", stackStyle == TopThree).OnChange(func(){stackStyle = TopThree; outputDisplay = s.String()}),
|
|
|
|
@ -272,6 +275,29 @@ func Exit() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
wnd = g.NewMasterWindow("gnums", MasterWidth+MasterWidth/2, 390, g.MasterWindowFlagsNotResizable, nil)
|
|
|
|
|
wnd = g.NewMasterWindow("gnums", MasterWidth+MasterWidth/2, 405, g.MasterWindowFlagsNotResizable).RegisterKeyboardShortcuts(
|
|
|
|
|
g.WindowShortcut{Key: g.KeyQ, Modifier: g.ModControl, Callback: Exit},
|
|
|
|
|
g.WindowShortcut{Key: g.Key0, Callback: func(){inputBuffer.Append('0')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key1, Callback: func(){inputBuffer.Append('1')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key2, Callback: func(){inputBuffer.Append('2')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key3, Callback: func(){inputBuffer.Append('3')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key4, Callback: func(){inputBuffer.Append('4')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key5, Callback: func(){inputBuffer.Append('5')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key6, Callback: func(){inputBuffer.Append('6')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key7, Callback: func(){inputBuffer.Append('7')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key8, Callback: func(){inputBuffer.Append('8')}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key9, Callback: func(){inputBuffer.Append('9')}},
|
|
|
|
|
g.WindowShortcut{Key: g.KeyPeriod, Callback: func(){inputBuffer.Append('.')}},
|
|
|
|
|
g.WindowShortcut{Key: g.KeyMinus, Callback: func(){callStackWord(s.Sub)}},
|
|
|
|
|
g.WindowShortcut{Key: g.KeyEqual, Modifier: g.ModShift, Callback: func(){callStackWord(s.Add)}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key8, Modifier: g.ModShift, Callback: func(){callStackWord(s.Mul)}},
|
|
|
|
|
g.WindowShortcut{Key: g.KeySlash, Callback: func(){callStackWord(s.Div)}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key6, Modifier: g.ModShift, Callback: func(){callStackWord(s.Pow)}},
|
|
|
|
|
g.WindowShortcut{Key: g.KeyEnter, Callback: func(){inputBuffer.Store(); outputDisplay = s.String()}},
|
|
|
|
|
g.WindowShortcut{Key: g.KeySpace, Callback: func(){ShowStack = !ShowStack; ToggleScreenSize()}},
|
|
|
|
|
g.WindowShortcut{Key: g.KeyEscape, Callback: func(){callStackWord(s.Clear)}},
|
|
|
|
|
g.WindowShortcut{Key: g.Key1, Modifier: g.ModShift, Callback: func(){callStackWord(s.Inv)}},
|
|
|
|
|
g.WindowShortcut{Key: g.KeyBackspace, Callback: func(){inputBuffer.Delete()}},
|
|
|
|
|
)
|
|
|
|
|
wnd.Run(loop)
|
|
|
|
|
}
|
|
|
|
|