diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 31e5155..ae1f62c 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,12 +1,12 @@ -# These are supported funding model platforms - -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: minizbot # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: minizbot # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/README.md b/README.md index f79d0d1..f3728ae 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -Orbweaver Mapping utility for orbmap +Orbweaver Mapping utility for orbmap ```go get github.com/Minizbot2012/orbbind``` \ No newline at end of file diff --git a/go.mod b/go.mod index 727a8c7..5a7640f 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/stretchr/testify v1.6.1 // indirect golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 // indirect golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb // indirect - golang.org/x/sys v0.0.0-20201202213521-69691e467435 // indirect + golang.org/x/sys v0.0.0-20201204225414-ed752295db88 // indirect golang.org/x/text v0.3.4 // indirect gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect ) diff --git a/go.sum b/go.sum index 3e20904..aa454e5 100644 --- a/go.sum +++ b/go.sum @@ -71,6 +71,8 @@ golang.org/x/sys v0.0.0-20200720211630-cb9d2d5c5666/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201202213521-69691e467435 h1:25AvDqqB9PrNqj1FLf2/70I4W0L19qqoaFq3gjNwbKk= golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88 h1:KmZPnMocC93w341XZp26yTJg8Za7lhb2KhkYmixoeso= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= diff --git a/keymap/orbweaver/orbweaver.go b/keymap/orbweaver/orbweaver.go index 6e5b512..c2f5374 100644 --- a/keymap/orbweaver/orbweaver.go +++ b/keymap/orbweaver/orbweaver.go @@ -1,28 +1,28 @@ -package orbweaver - -import ( - "encoding/binary" - - "fyne.io/fyne" -) - -//PKM format for altering the keymap -type PKM struct { - MIP [20]uint16 - SIP [6]uint16 - COL [3]byte -} - -//SaveIntoKeymap saves an orb -func SaveIntoKeymap(mapped *PKM, file fyne.URIWriteCloser) { - binary.Write(file, binary.LittleEndian, mapped) - file.Close() -} - -//LoadFile loads an orb -func LoadFile(file fyne.URIReadCloser) *PKM { - mapped := &PKM{} - binary.Read(file, binary.LittleEndian, mapped) - file.Close() - return mapped -} +package orbweaver + +import ( + "encoding/binary" + + "fyne.io/fyne" +) + +//PKM format for altering the keymap +type PKM struct { + MIP [20]uint16 + SIP [6]uint16 + COL [3]byte +} + +//SaveIntoKeymap saves an orb +func SaveIntoKeymap(mapped *PKM, file fyne.URIWriteCloser) { + binary.Write(file, binary.LittleEndian, mapped) + file.Close() +} + +//LoadFile loads an orb +func LoadFile(file fyne.URIReadCloser) *PKM { + mapped := &PKM{} + binary.Read(file, binary.LittleEndian, mapped) + file.Close() + return mapped +} diff --git a/keys/cki2.go b/keys/cki2.go index 9676203..7dea3c7 100644 --- a/keys/cki2.go +++ b/keys/cki2.go @@ -1,131 +1,131 @@ -package keys - -// Common Interface 2, natified go -import ( - "fyne.io/fyne" - "fyne.io/fyne/driver/desktop" -) - -//ASCIIToKC -- ASCII Value to a KBD Scancode -var ASCIIToKC = map[rune]Code{ - 'a': CodeA, - 'b': CodeB, - 'c': CodeC, - 'd': CodeD, - 'e': CodeE, - 'f': CodeF, - 'g': CodeG, - 'h': CodeH, - 'i': CodeI, - 'k': CodeK, - 'l': CodeL, - 'm': CodeM, - 'n': CodeN, - 'o': CodeO, - 'p': CodeP, - 'q': CodeQ, - 'r': CodeR, - 's': CodeS, - 't': CodeT, - 'u': CodeU, - 'v': CodeV, - 'w': CodeW, - 'x': CodeX, - 'y': CodeY, - 'z': CodeZ, - '0': Code0, - '1': Code1, - '2': Code2, - '3': Code3, - '4': Code4, - '5': Code5, - '6': Code6, - '7': Code7, - '8': Code8, - '9': Code9, - ' ': CodeSpace, - '-': CodeMinus, - '=': CodeEqual, - '[': CodeLeftBrack, - ']': CodeRightBrace, - '\\': CodeBackslash, - ';': CodeSemicolon, - '\'': CodeApostrophe, - '`': CodeGrave, - ',': CodeComma, - '.': CodeDot, - '/': CodeSlash, -} - -//FyneToKC - conversion between fyne to ode -var FyneToKC = map[fyne.KeyName]Code{ - fyne.Key0: Code0, - fyne.Key1: Code1, - fyne.Key2: Code2, - fyne.Key3: Code3, - fyne.Key4: Code4, - fyne.Key5: Code5, - fyne.Key6: Code6, - fyne.Key7: Code7, - fyne.Key8: Code8, - fyne.Key9: Code9, - fyne.KeyA: CodeA, - fyne.KeyB: CodeB, - fyne.KeyC: CodeC, - fyne.KeyD: CodeD, - fyne.KeyE: CodeE, - fyne.KeyF: CodeF, - fyne.KeyG: CodeG, - fyne.KeyH: CodeH, - fyne.KeyI: CodeI, - fyne.KeyJ: CodeJ, - fyne.KeyK: CodeK, - fyne.KeyL: CodeL, - fyne.KeyM: CodeM, - fyne.KeyN: CodeN, - fyne.KeyO: CodeO, - fyne.KeyP: CodeP, - fyne.KeyQ: CodeQ, - fyne.KeyR: CodeR, - fyne.KeyS: CodeS, - fyne.KeyT: CodeT, - fyne.KeyU: CodeU, - fyne.KeyV: CodeV, - fyne.KeyW: CodeW, - fyne.KeyX: CodeX, - fyne.KeyY: CodeY, - fyne.KeyZ: CodeZ, - fyne.KeyUp: CodeUpArrow, - fyne.KeyDown: CodeDownArrow, - fyne.KeyRight: CodeRightArrow, - fyne.KeyLeft: CodeLeftArrow, - fyne.KeyEnd: CodeEnd, - fyne.KeyHome: CodeHome, - fyne.KeyInsert: CodeInsert, - fyne.KeyDelete: CodeDelete, - fyne.KeyEnter: CodeEnter, - fyne.KeyTab: CodeTab, - fyne.KeyEscape: CodeESC, - fyne.KeyF1: CodeF1, - fyne.KeyF2: CodeF2, - fyne.KeyF3: CodeF3, - fyne.KeyF4: CodeF4, - fyne.KeyF5: CodeF5, - fyne.KeyF6: CodeF6, - fyne.KeyF7: CodeF7, - fyne.KeyF8: CodeF8, - fyne.KeyF9: CodeF9, - fyne.KeyF10: CodeF10, - fyne.KeyF11: CodeF11, - fyne.KeyF12: CodeF12, - fyne.KeyPageDown: CodePageDown, - fyne.KeyPageUp: CodePageUp, - fyne.KeySpace: CodeSpace, - fyne.KeyBackTick: CodeGrave, - desktop.KeyAltLeft: CodeLeftAlt, - desktop.KeyAltRight: CodeRightAlt, - desktop.KeyControlLeft: CodeLeftCntl, - desktop.KeyControlRight: CodeRightControl, - desktop.KeyShiftLeft: CodeLeftShift, - desktop.KeyShiftRight: CodeRightShift, -} +package keys + +// Common Interface 2, natified go +import ( + "fyne.io/fyne" + "fyne.io/fyne/driver/desktop" +) + +//ASCIIToKC -- ASCII Value to a KBD Scancode +var ASCIIToKC = map[rune]Code{ + 'a': CodeA, + 'b': CodeB, + 'c': CodeC, + 'd': CodeD, + 'e': CodeE, + 'f': CodeF, + 'g': CodeG, + 'h': CodeH, + 'i': CodeI, + 'k': CodeK, + 'l': CodeL, + 'm': CodeM, + 'n': CodeN, + 'o': CodeO, + 'p': CodeP, + 'q': CodeQ, + 'r': CodeR, + 's': CodeS, + 't': CodeT, + 'u': CodeU, + 'v': CodeV, + 'w': CodeW, + 'x': CodeX, + 'y': CodeY, + 'z': CodeZ, + '0': Code0, + '1': Code1, + '2': Code2, + '3': Code3, + '4': Code4, + '5': Code5, + '6': Code6, + '7': Code7, + '8': Code8, + '9': Code9, + ' ': CodeSpace, + '-': CodeMinus, + '=': CodeEqual, + '[': CodeLeftBrack, + ']': CodeRightBrace, + '\\': CodeBackslash, + ';': CodeSemicolon, + '\'': CodeApostrophe, + '`': CodeGrave, + ',': CodeComma, + '.': CodeDot, + '/': CodeSlash, +} + +//FyneToKC - conversion between fyne to ode +var FyneToKC = map[fyne.KeyName]Code{ + fyne.Key0: Code0, + fyne.Key1: Code1, + fyne.Key2: Code2, + fyne.Key3: Code3, + fyne.Key4: Code4, + fyne.Key5: Code5, + fyne.Key6: Code6, + fyne.Key7: Code7, + fyne.Key8: Code8, + fyne.Key9: Code9, + fyne.KeyA: CodeA, + fyne.KeyB: CodeB, + fyne.KeyC: CodeC, + fyne.KeyD: CodeD, + fyne.KeyE: CodeE, + fyne.KeyF: CodeF, + fyne.KeyG: CodeG, + fyne.KeyH: CodeH, + fyne.KeyI: CodeI, + fyne.KeyJ: CodeJ, + fyne.KeyK: CodeK, + fyne.KeyL: CodeL, + fyne.KeyM: CodeM, + fyne.KeyN: CodeN, + fyne.KeyO: CodeO, + fyne.KeyP: CodeP, + fyne.KeyQ: CodeQ, + fyne.KeyR: CodeR, + fyne.KeyS: CodeS, + fyne.KeyT: CodeT, + fyne.KeyU: CodeU, + fyne.KeyV: CodeV, + fyne.KeyW: CodeW, + fyne.KeyX: CodeX, + fyne.KeyY: CodeY, + fyne.KeyZ: CodeZ, + fyne.KeyUp: CodeUpArrow, + fyne.KeyDown: CodeDownArrow, + fyne.KeyRight: CodeRightArrow, + fyne.KeyLeft: CodeLeftArrow, + fyne.KeyEnd: CodeEnd, + fyne.KeyHome: CodeHome, + fyne.KeyInsert: CodeInsert, + fyne.KeyDelete: CodeDelete, + fyne.KeyEnter: CodeEnter, + fyne.KeyTab: CodeTab, + fyne.KeyEscape: CodeESC, + fyne.KeyF1: CodeF1, + fyne.KeyF2: CodeF2, + fyne.KeyF3: CodeF3, + fyne.KeyF4: CodeF4, + fyne.KeyF5: CodeF5, + fyne.KeyF6: CodeF6, + fyne.KeyF7: CodeF7, + fyne.KeyF8: CodeF8, + fyne.KeyF9: CodeF9, + fyne.KeyF10: CodeF10, + fyne.KeyF11: CodeF11, + fyne.KeyF12: CodeF12, + fyne.KeyPageDown: CodePageDown, + fyne.KeyPageUp: CodePageUp, + fyne.KeySpace: CodeSpace, + fyne.KeyBackTick: CodeGrave, + desktop.KeyAltLeft: CodeLeftAlt, + desktop.KeyAltRight: CodeRightAlt, + desktop.KeyControlLeft: CodeLeftCntl, + desktop.KeyControlRight: CodeRightControl, + desktop.KeyShiftLeft: CodeLeftShift, + desktop.KeyShiftRight: CodeRightShift, +} diff --git a/keys/keys.go b/keys/keys.go index 521d419..acaf354 100644 --- a/keys/keys.go +++ b/keys/keys.go @@ -1,45 +1,45 @@ -package keys - -import ( - "fyne.io/fyne" -) - -var ( - //KCToASCII keycode to ascii table - KCToASCII map[Code]rune -) - -//GetASCIIForSC Returns Ascii for Scancode -func GetASCIIForSC(r uint16) uint16 { - return uint16(KCToASCII[Code(r)]) -} - -//GetSCForASCII Returns scancode For Ascii -func GetSCForASCII(r uint16) uint16 { - return uint16(ASCIIToKC[rune(r)]) -} - -func init() { - KCToASCII = make(map[Code]rune) - for x, y := range ASCIIToKC { - KCToASCII[y] = x - } -} - -//CKIFyneKeyMap Control Keys interop -func CKIFyneKeyMap(e fyne.KeyName) uint16 { - if val, ok := FyneToKC[e]; ok { - return uint16(val) - } - return 0 -} - -//CKIKeyNameFromKC Key Name from Keycode -func CKIKeyNameFromKC(r uint16) string { - return Code(r).String()[4:] -} - -//CKIKeyNameFromASCII key name from ascii code -func CKIKeyNameFromASCII(r uint16) string { - return ASCIIToKC[rune(r)].String()[4:] -} +package keys + +import ( + "fyne.io/fyne" +) + +var ( + //KCToASCII keycode to ascii table + KCToASCII map[Code]rune +) + +//GetASCIIForSC Returns Ascii for Scancode +func GetASCIIForSC(r uint16) uint16 { + return uint16(KCToASCII[Code(r)]) +} + +//GetSCForASCII Returns scancode For Ascii +func GetSCForASCII(r uint16) uint16 { + return uint16(ASCIIToKC[rune(r)]) +} + +func init() { + KCToASCII = make(map[Code]rune) + for x, y := range ASCIIToKC { + KCToASCII[y] = x + } +} + +//CKIFyneKeyMap Control Keys interop +func CKIFyneKeyMap(e fyne.KeyName) uint16 { + if val, ok := FyneToKC[e]; ok { + return uint16(val) + } + return 0 +} + +//CKIKeyNameFromKC Key Name from Keycode +func CKIKeyNameFromKC(r uint16) string { + return Code(r).String()[4:] +} + +//CKIKeyNameFromASCII key name from ascii code +func CKIKeyNameFromASCII(r uint16) string { + return ASCIIToKC[rune(r)].String()[4:] +} diff --git a/keys/scans.go b/keys/scans.go index 5ea0e29..f155785 100644 --- a/keys/scans.go +++ b/keys/scans.go @@ -1,109 +1,109 @@ -//go:generate stringer --type Code -//Package keys provides back end keymapping -package keys - -//Code ScanCode object -type Code uint16 - -const ( - CodeNone Code = 0 - CodeESC Code = 1 - Code1 Code = 2 - Code2 Code = 3 - Code3 Code = 4 - Code4 Code = 5 - Code5 Code = 6 - Code6 Code = 7 - Code7 Code = 8 - Code8 Code = 9 - Code9 Code = 10 - Code0 Code = 11 - CodeMinus Code = 12 - CodeEqual Code = 13 - CodeBackspace Code = 14 - CodeTab Code = 15 - CodeQ Code = 16 - CodeW Code = 17 - CodeE Code = 18 - CodeR Code = 19 - CodeT Code = 20 - CodeY Code = 21 - CodeU Code = 22 - CodeI Code = 23 - CodeO Code = 24 - CodeP Code = 25 - CodeLeftBrack Code = 26 - CodeRightBrace Code = 27 - CodeEnter Code = 28 - CodeLeftCntl Code = 29 - CodeA Code = 30 - CodeS Code = 31 - CodeD Code = 32 - CodeF Code = 33 - CodeG Code = 34 - CodeH Code = 35 - CodeJ Code = 36 - CodeK Code = 37 - CodeL Code = 38 - CodeSemicolon Code = 39 - CodeApostrophe Code = 40 - CodeGrave Code = 41 - CodeLeftShift Code = 42 - CodeBackslash Code = 43 - CodeZ Code = 44 - CodeX Code = 45 - CodeC Code = 46 - CodeV Code = 47 - CodeB Code = 48 - CodeN Code = 49 - CodeM Code = 50 - CodeComma Code = 51 - CodeDot Code = 52 - CodeSlash Code = 53 - CodeRightShift Code = 54 - CodeKPAsterisk Code = 55 - CodeLeftAlt Code = 56 - CodeSpace Code = 57 - CodeCapsLock Code = 58 - CodeF1 Code = 59 - CodeF2 Code = 60 - CodeF3 Code = 61 - CodeF4 Code = 62 - CodeF5 Code = 63 - CodeF6 Code = 64 - CodeF7 Code = 65 - CodeF8 Code = 66 - CodeF9 Code = 67 - CodeF10 Code = 68 - CodeNumlock Code = 69 - CodeScrollLock Code = 70 - CodeKP7 Code = 71 - CodeKP8 Code = 72 - CodeKP9 Code = 73 - CodeKPMinus Code = 74 - CodeKP4 Code = 75 - CodeKP5 Code = 76 - CodeKP6 Code = 77 - CodeKPPlus Code = 78 - CodeKP1 Code = 79 - CodeKP2 Code = 80 - CodeKP3 Code = 81 - CodeKP0 Code = 82 - CodeKPDot Code = 83 - CodeF11 Code = 87 - CodeF12 Code = 88 - CodeKPEnter Code = 96 - CodeRightControl Code = 97 - CodeKPSlash Code = 98 - CodeRightAlt Code = 100 - CodeHome Code = 102 - CodeUpArrow Code = 103 - CodePageUp Code = 104 - CodeLeftArrow Code = 105 - CodeRightArrow Code = 106 - CodeEnd Code = 107 - CodeDownArrow Code = 108 - CodePageDown Code = 109 - CodeInsert Code = 110 - CodeDelete Code = 111 -) +//go:generate stringer --type Code +//Package keys provides back end keymapping +package keys + +//Code ScanCode object +type Code uint16 + +const ( + CodeNone Code = 0 + CodeESC Code = 1 + Code1 Code = 2 + Code2 Code = 3 + Code3 Code = 4 + Code4 Code = 5 + Code5 Code = 6 + Code6 Code = 7 + Code7 Code = 8 + Code8 Code = 9 + Code9 Code = 10 + Code0 Code = 11 + CodeMinus Code = 12 + CodeEqual Code = 13 + CodeBackspace Code = 14 + CodeTab Code = 15 + CodeQ Code = 16 + CodeW Code = 17 + CodeE Code = 18 + CodeR Code = 19 + CodeT Code = 20 + CodeY Code = 21 + CodeU Code = 22 + CodeI Code = 23 + CodeO Code = 24 + CodeP Code = 25 + CodeLeftBrack Code = 26 + CodeRightBrace Code = 27 + CodeEnter Code = 28 + CodeLeftCntl Code = 29 + CodeA Code = 30 + CodeS Code = 31 + CodeD Code = 32 + CodeF Code = 33 + CodeG Code = 34 + CodeH Code = 35 + CodeJ Code = 36 + CodeK Code = 37 + CodeL Code = 38 + CodeSemicolon Code = 39 + CodeApostrophe Code = 40 + CodeGrave Code = 41 + CodeLeftShift Code = 42 + CodeBackslash Code = 43 + CodeZ Code = 44 + CodeX Code = 45 + CodeC Code = 46 + CodeV Code = 47 + CodeB Code = 48 + CodeN Code = 49 + CodeM Code = 50 + CodeComma Code = 51 + CodeDot Code = 52 + CodeSlash Code = 53 + CodeRightShift Code = 54 + CodeKPAsterisk Code = 55 + CodeLeftAlt Code = 56 + CodeSpace Code = 57 + CodeCapsLock Code = 58 + CodeF1 Code = 59 + CodeF2 Code = 60 + CodeF3 Code = 61 + CodeF4 Code = 62 + CodeF5 Code = 63 + CodeF6 Code = 64 + CodeF7 Code = 65 + CodeF8 Code = 66 + CodeF9 Code = 67 + CodeF10 Code = 68 + CodeNumlock Code = 69 + CodeScrollLock Code = 70 + CodeKP7 Code = 71 + CodeKP8 Code = 72 + CodeKP9 Code = 73 + CodeKPMinus Code = 74 + CodeKP4 Code = 75 + CodeKP5 Code = 76 + CodeKP6 Code = 77 + CodeKPPlus Code = 78 + CodeKP1 Code = 79 + CodeKP2 Code = 80 + CodeKP3 Code = 81 + CodeKP0 Code = 82 + CodeKPDot Code = 83 + CodeF11 Code = 87 + CodeF12 Code = 88 + CodeKPEnter Code = 96 + CodeRightControl Code = 97 + CodeKPSlash Code = 98 + CodeRightAlt Code = 100 + CodeHome Code = 102 + CodeUpArrow Code = 103 + CodePageUp Code = 104 + CodeLeftArrow Code = 105 + CodeRightArrow Code = 106 + CodeEnd Code = 107 + CodeDownArrow Code = 108 + CodePageDown Code = 109 + CodeInsert Code = 110 + CodeDelete Code = 111 +) diff --git a/orbbind b/orbbind deleted file mode 100755 index 78745ae..0000000 Binary files a/orbbind and /dev/null differ diff --git a/ui/baseui/baseui.go b/ui/baseui/baseui.go index cdec55c..ebbc0d7 100644 --- a/ui/baseui/baseui.go +++ b/ui/baseui/baseui.go @@ -1,23 +1,23 @@ -package baseui - -import ( - "fyne.io/fyne" - "fyne.io/fyne/widget" - "github.com/minizbot2012/orbbind/keymap/orbweaver" -) - -//BasicPage creates a very basic Page -type BasicPage interface { - Create() *widget.TabItem -} - -//PageWithBindings defines a page with bindings -type PageWithBindings interface { - BasicPage - SetBindings(*orbweaver.PKM) -} - -//DialogPage is a dialog popup -type DialogPage interface { - Create() *fyne.CanvasObject -} +package baseui + +import ( + "fyne.io/fyne" + "fyne.io/fyne/widget" + "github.com/minizbot2012/orbbind/keymap/orbweaver" +) + +//BasicPage creates a very basic Page +type BasicPage interface { + Create() *widget.TabItem +} + +//PageWithBindings defines a page with bindings +type PageWithBindings interface { + BasicPage + SetBindings(*orbweaver.PKM) +} + +//DialogPage is a dialog popup +type DialogPage interface { + Create() *fyne.CanvasObject +} diff --git a/ui/bind/popup.go b/ui/bind/popup.go index ef634ed..205751f 100644 --- a/ui/bind/popup.go +++ b/ui/bind/popup.go @@ -1,67 +1,67 @@ -package bind - -import ( - "fyne.io/fyne" - "fyne.io/fyne/driver/desktop" - "fyne.io/fyne/layout" - "fyne.io/fyne/widget" - "github.com/minizbot2012/orbbind/keys" - "github.com/minizbot2012/orbbind/ui/baseui" -) - -//BindingInfo Genral data to use in a channel -type BindingInfo struct { - Bindid int - Bound uint16 -} - -//Page Binding UI -type Page struct { - baseui.DialogPage - dev map[string]fyne.CanvasObject - Bind BindingInfo - window fyne.Window -} - -//TypeKey event on key -func (bp *Page) TypeKey(e *fyne.KeyEvent) { - bp.Bind.Bound = keys.CKIFyneKeyMap(e.Name) - kp := keys.CKIKeyNameFromKC(bp.Bind.Bound) - bp.dev["BL"].(*widget.Label).SetText(kp) -} - -func (bp *Page) createGrid() *fyne.Container { - cont := fyne.NewContainerWithLayout(layout.NewGridLayoutWithColumns(4)) - cont.AddObject(widget.NewButton("Clear", func() { - bp.Bind.Bound = 0x0 - bp.dev["BL"].(*widget.Label).SetText(keys.CKIKeyNameFromKC(bp.Bind.Bound)) - })) - k1 := widget.NewButton("Tab", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyTab}) }) - k3 := widget.NewButton("Left Alt", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyAltLeft}) }) - k5 := widget.NewButton("Left Control", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyControlLeft}) }) - k7 := widget.NewButton("Left Shift", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyShiftLeft}) }) - //k8 := widget.NewButton("Grave (`)", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyBackTick}) }) - cont.AddObject(k1) - cont.AddObject(k3) - cont.AddObject(k5) - cont.AddObject(k7) - return cont -} - -//Create the binding page popup -func (bp *Page) Create(bid string) fyne.CanvasObject { - bp.dev = make(map[string]fyne.CanvasObject) - bp.dev["BL"] = widget.NewLabel(keys.CKIKeyNameFromKC(bp.Bind.Bound)) - pop := widget.NewVBox(bp.dev["BL"], bp.createGrid()) - bp.window.Canvas().SetOnTypedKey(bp.TypeKey) - return pop -} - -//NewBindPage Create a new bind popup -func NewBindPage(bid int, w fyne.Window, def uint16) *Page { - p := &Page{} - p.window = w - p.Bind.Bindid = bid - p.Bind.Bound = def - return p -} +package bind + +import ( + "fyne.io/fyne" + "fyne.io/fyne/driver/desktop" + "fyne.io/fyne/layout" + "fyne.io/fyne/widget" + "github.com/minizbot2012/orbbind/keys" + "github.com/minizbot2012/orbbind/ui/baseui" +) + +//BindingInfo Genral data to use in a channel +type BindingInfo struct { + Bindid int + Bound uint16 +} + +//Page Binding UI +type Page struct { + baseui.DialogPage + dev map[string]fyne.CanvasObject + Bind BindingInfo + window fyne.Window +} + +//TypeKey event on key +func (bp *Page) TypeKey(e *fyne.KeyEvent) { + bp.Bind.Bound = keys.CKIFyneKeyMap(e.Name) + kp := keys.CKIKeyNameFromKC(bp.Bind.Bound) + bp.dev["BL"].(*widget.Label).SetText(kp) +} + +func (bp *Page) createGrid() *fyne.Container { + cont := fyne.NewContainerWithLayout(layout.NewGridLayoutWithColumns(4)) + cont.AddObject(widget.NewButton("Clear", func() { + bp.Bind.Bound = 0x0 + bp.dev["BL"].(*widget.Label).SetText(keys.CKIKeyNameFromKC(bp.Bind.Bound)) + })) + k1 := widget.NewButton("Tab", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyTab}) }) + k3 := widget.NewButton("Left Alt", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyAltLeft}) }) + k5 := widget.NewButton("Left Control", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyControlLeft}) }) + k7 := widget.NewButton("Left Shift", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyShiftLeft}) }) + //k8 := widget.NewButton("Grave (`)", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyBackTick}) }) + cont.AddObject(k1) + cont.AddObject(k3) + cont.AddObject(k5) + cont.AddObject(k7) + return cont +} + +//Create the binding page popup +func (bp *Page) Create(bid string) fyne.CanvasObject { + bp.dev = make(map[string]fyne.CanvasObject) + bp.dev["BL"] = widget.NewLabel(keys.CKIKeyNameFromKC(bp.Bind.Bound)) + pop := widget.NewVBox(bp.dev["BL"], bp.createGrid()) + bp.window.Canvas().SetOnTypedKey(bp.TypeKey) + return pop +} + +//NewBindPage Create a new bind popup +func NewBindPage(bid int, w fyne.Window, def uint16) *Page { + p := &Page{} + p.window = w + p.Bind.Bindid = bid + p.Bind.Bound = def + return p +} diff --git a/ui/mainpage/mainpage.go b/ui/mainpage/mainpage.go index 12aab12..95e6ba4 100644 --- a/ui/mainpage/mainpage.go +++ b/ui/mainpage/mainpage.go @@ -1,60 +1,60 @@ -package mainpage - -import ( - "strconv" - - "fyne.io/fyne" - "fyne.io/fyne/dialog" - "fyne.io/fyne/layout" - "fyne.io/fyne/widget" - "github.com/minizbot2012/orbbind/keymap/orbweaver" - "github.com/minizbot2012/orbbind/ui/baseui" - "github.com/minizbot2012/orbbind/ui/bind" -) - -//Page is a basic page -type Page struct { - baseui.PageWithBindings - binds *orbweaver.PKM - dev map[string]fyne.CanvasObject - parent fyne.Window -} - -func (mp *Page) createButtons() { - for i := 0; i < 4; i++ { - for j := 0; j < 5; j++ { - id := (j + i*5 + 1) - mp.dev["B"+strconv.Itoa(id)] = widget.NewButton(strconv.Itoa(id), func() { - popup := bind.NewBindPage(id, mp.parent, mp.binds.MIP[id-1]) - dialog.ShowCustomConfirm("Binding", "Set", "Cancel", popup.Create(string(id)), func(b bool) { - if b { - mp.binds.MIP[popup.Bind.Bindid-1] = popup.Bind.Bound - } - }, mp.parent) - }) - mp.dev["V"].(*fyne.Container).AddObject(mp.dev["B"+strconv.Itoa(id)]) - } - } -} - -//SetBindings Sets the binding Map -func (mp *Page) SetBindings(o *orbweaver.PKM) { - mp.binds = o -} - -//Create Creates the main binding page -func (mp *Page) Create() *widget.TabItem { - mp.dev = make(map[string]fyne.CanvasObject) - layout := layout.NewGridLayout(5) - mp.dev["V"] = fyne.NewContainerWithLayout(layout) - mp.createButtons() - return widget.NewTabItem("Main Bindings", mp.dev["V"]) -} - -//NewMainPage Creates a new main page -func NewMainPage(parent fyne.Window, pkm *orbweaver.PKM) *Page { - mp := &Page{} - mp.binds = pkm - mp.parent = parent - return mp -} +package mainpage + +import ( + "strconv" + + "fyne.io/fyne" + "fyne.io/fyne/dialog" + "fyne.io/fyne/layout" + "fyne.io/fyne/widget" + "github.com/minizbot2012/orbbind/keymap/orbweaver" + "github.com/minizbot2012/orbbind/ui/baseui" + "github.com/minizbot2012/orbbind/ui/bind" +) + +//Page is a basic page +type Page struct { + baseui.PageWithBindings + binds *orbweaver.PKM + dev map[string]fyne.CanvasObject + parent fyne.Window +} + +func (mp *Page) createButtons() { + for i := 0; i < 4; i++ { + for j := 0; j < 5; j++ { + id := (j + i*5 + 1) + mp.dev["B"+strconv.Itoa(id)] = widget.NewButton(strconv.Itoa(id), func() { + popup := bind.NewBindPage(id, mp.parent, mp.binds.MIP[id-1]) + dialog.ShowCustomConfirm("Binding", "Set", "Cancel", popup.Create(string(id)), func(b bool) { + if b { + mp.binds.MIP[popup.Bind.Bindid-1] = popup.Bind.Bound + } + }, mp.parent) + }) + mp.dev["V"].(*fyne.Container).AddObject(mp.dev["B"+strconv.Itoa(id)]) + } + } +} + +//SetBindings Sets the binding Map +func (mp *Page) SetBindings(o *orbweaver.PKM) { + mp.binds = o +} + +//Create Creates the main binding page +func (mp *Page) Create() *widget.TabItem { + mp.dev = make(map[string]fyne.CanvasObject) + layout := layout.NewGridLayout(5) + mp.dev["V"] = fyne.NewContainerWithLayout(layout) + mp.createButtons() + return widget.NewTabItem("Main Bindings", mp.dev["V"]) +} + +//NewMainPage Creates a new main page +func NewMainPage(parent fyne.Window, pkm *orbweaver.PKM) *Page { + mp := &Page{} + mp.binds = pkm + mp.parent = parent + return mp +} diff --git a/ui/sidepage/sidepage.go b/ui/sidepage/sidepage.go index 514c9ff..c55bca9 100644 --- a/ui/sidepage/sidepage.go +++ b/ui/sidepage/sidepage.go @@ -1,53 +1,53 @@ -package sidepage - -import ( - "strconv" - - "fyne.io/fyne" - "fyne.io/fyne/dialog" - "fyne.io/fyne/layout" - "fyne.io/fyne/widget" - "github.com/minizbot2012/orbbind/keymap/orbweaver" - "github.com/minizbot2012/orbbind/ui/baseui" - "github.com/minizbot2012/orbbind/ui/bind" -) - -//Page Overweave side button configs -type Page struct { - baseui.PageWithBindings - binds *orbweaver.PKM - dev map[string]fyne.CanvasObject - parent fyne.Window -} - -//SetBindings Loads bindings from SIP -func (p *Page) SetBindings(o *orbweaver.PKM) { - p.binds = o -} - -//Create Creates the page -func (p *Page) Create() *widget.TabItem { - p.dev = make(map[string]fyne.CanvasObject) - strs := []string{"Upper Button", "Dpad Up", "Dpad Right", "Dpad Down", "Dpad Left", "Lower Button"} - for j := 0; j < 6; j++ { - id := j + 1 - p.dev["B"+strconv.Itoa(id)] = widget.NewButton(strs[j], func() { - popup := bind.NewBindPage(id, p.parent, p.binds.SIP[id-1]) - dialog.ShowCustomConfirm("Binding", "Set", "Cancel", popup.Create(string(id)), func(b bool) { - if b { - p.binds.SIP[popup.Bind.Bindid-1] = popup.Bind.Bound - } - }, p.parent) - }) - } - cont := fyne.NewContainerWithLayout(layout.NewBorderLayout(p.dev["B2"], p.dev["B4"], p.dev["B5"], p.dev["B3"]), p.dev["B2"], p.dev["B4"], p.dev["B5"], p.dev["B3"], widget.NewVBox(p.dev["B1"], p.dev["B6"])) - return widget.NewTabItem("Side Config", cont) -} - -//NewSidePage Creates a new side configuration page -func NewSidePage(parent fyne.Window, pkm *orbweaver.PKM) *Page { - p := &Page{} - p.binds = pkm - p.parent = parent - return p -} +package sidepage + +import ( + "strconv" + + "fyne.io/fyne" + "fyne.io/fyne/dialog" + "fyne.io/fyne/layout" + "fyne.io/fyne/widget" + "github.com/minizbot2012/orbbind/keymap/orbweaver" + "github.com/minizbot2012/orbbind/ui/baseui" + "github.com/minizbot2012/orbbind/ui/bind" +) + +//Page Overweave side button configs +type Page struct { + baseui.PageWithBindings + binds *orbweaver.PKM + dev map[string]fyne.CanvasObject + parent fyne.Window +} + +//SetBindings Loads bindings from SIP +func (p *Page) SetBindings(o *orbweaver.PKM) { + p.binds = o +} + +//Create Creates the page +func (p *Page) Create() *widget.TabItem { + p.dev = make(map[string]fyne.CanvasObject) + strs := []string{"Upper Button", "Dpad Up", "Dpad Right", "Dpad Down", "Dpad Left", "Lower Button"} + for j := 0; j < 6; j++ { + id := j + 1 + p.dev["B"+strconv.Itoa(id)] = widget.NewButton(strs[j], func() { + popup := bind.NewBindPage(id, p.parent, p.binds.SIP[id-1]) + dialog.ShowCustomConfirm("Binding", "Set", "Cancel", popup.Create(string(id)), func(b bool) { + if b { + p.binds.SIP[popup.Bind.Bindid-1] = popup.Bind.Bound + } + }, p.parent) + }) + } + cont := fyne.NewContainerWithLayout(layout.NewBorderLayout(p.dev["B2"], p.dev["B4"], p.dev["B5"], p.dev["B3"]), p.dev["B2"], p.dev["B4"], p.dev["B5"], p.dev["B3"], widget.NewVBox(p.dev["B1"], p.dev["B6"])) + return widget.NewTabItem("Side Config", cont) +} + +//NewSidePage Creates a new side configuration page +func NewSidePage(parent fyne.Window, pkm *orbweaver.PKM) *Page { + p := &Page{} + p.binds = pkm + p.parent = parent + return p +}