44 "BronzeHermes/Database"
55 "BronzeHermes/Debug"
66 "BronzeHermes/Graph"
7+ "BronzeHermes/Printer"
78 "BronzeHermes/UI"
89 unknown "BronzeHermes/Unknown"
910 "fmt"
@@ -20,6 +21,8 @@ import (
2021 "fyne.io/fyne/v2/widget"
2122)
2223
24+ var printer Printer.Printer
25+
2326func main () {
2427 a := app .NewWithID ("PINKSTONE" )
2528 go Graph .StartServer ()
@@ -42,13 +45,16 @@ func CreateWindow(a fyne.App) {
4245 Database .CleanUpDeadItems ()
4346 Database .SaveData ()
4447 Database .SaveBackUp ()
48+ if printer .Active {
49+ printer .Close ()
50+ }
4551 },
4652 )
4753
4854 Debug .ShowError ("Loading Data" , Database .LoadData (), w )
4955
5056 w .SetContent (container .NewVBox (container .NewAppTabs (
51- container .NewTabItem ("Main" , makeMainMenu (a )),
57+ container .NewTabItem ("Main" , makeMainMenu ()),
5258 container .NewTabItem ("Shop" , makeShoppingMenu ()),
5359 container .NewTabItem ("Inventory" , Database .MakeInfoMenu (w )),
5460 container .NewTabItem ("Report" , makeReportMenu ()),
@@ -66,7 +72,7 @@ func CreateWindow(a fyne.App) {
6672 w .ShowAndRun ()
6773}
6874
69- func makeMainMenu (a fyne. App ) fyne.CanvasObject {
75+ func makeMainMenu () fyne.CanvasObject {
7076 var SignInStartUp dialog.Dialog
7177 var CreateUser dialog.Dialog
7278 usrData := binding .NewIntList ()
@@ -128,6 +134,7 @@ func makeMainMenu(a fyne.App) fyne.CanvasObject {
128134 widget .NewButton ("Save Backup Data" , func () {
129135 go Debug .ShowError ("Backing up Data" , Database .SaveBackUp (), w )
130136 }),
137+
131138 widget .NewButton ("Load Backup Data" , func () {
132139 dialog .ShowConfirm ("Are you Sure?" , "Are you sure you want to load the backup data?" , func (b bool ) {
133140 if ! b {
@@ -137,6 +144,64 @@ func makeMainMenu(a fyne.App) fyne.CanvasObject {
137144 dialog .ShowInformation ("Loaded" , "Back Up Loaded" , w )
138145 }, w )
139146 }),
147+
148+ widget .NewButton ("Connect Printer" , func () {
149+ devices , idxes , err := Printer .FindUSBDevices ()
150+ Debug .ShowError ("Looking for USB Devices" , err , w )
151+
152+ devListData := binding .NewIntList ()
153+ devListData .Set (idxes )
154+ devList := widget .NewListWithData (devListData ,
155+ func () fyne.CanvasObject {
156+ return container .NewBorder (nil , nil , nil , nil , widget .NewLabel ("" ))
157+ },
158+ func (di binding.DataItem , co fyne.CanvasObject ) {
159+ idx , _ := di .(binding.Int ).Get ()
160+ co .(* fyne.Container ).Objects [0 ].(* widget.Label ).SetText (devices [idx ].Product )
161+ })
162+
163+ devList .OnSelected = func (id widget.ListItemID ) {
164+ dialog .ShowCustomConfirm (devices [id ].Product , "Select" , "Close" ,
165+ widget .NewLabel (fmt .Sprintf ("ID: %d\n Product: %s\n Vender ID: %d\n Manufacturer: %s\n Serial: %s\n Path: %s" ,
166+ devices [id ].ProductID , devices [id ].Product , devices [id ].VendorID , devices [id ].Manufacturer , devices [id ].Serial , devices [id ].Path )), func (b bool ) {
167+
168+ if ! b {
169+ return
170+ }
171+
172+ p , e := Printer .Init (devices [id ])
173+
174+ if Debug .ShowError ("Selecting " + devices [id ].Product , e , w ) {
175+ return
176+ }
177+
178+ if printer .Active {
179+ printer .Close ()
180+ }
181+
182+ printer = p
183+ }, w )
184+ devList .Unselect (id )
185+ }
186+
187+ dialog .ShowCustom ("Devices" , "Close" , container .NewVBox (devList ), w )
188+ }),
189+
190+ widget .NewButton ("Test Printing" , func () {
191+ if printer .Active {
192+ entry := widget .NewEntry ()
193+ dialog .ShowForm ("" , "Send" , "Close" , []* widget.FormItem {
194+ widget .NewFormItem ("Message" , entry ),
195+ }, func (b bool ) {
196+ if ! b {
197+ return
198+ }
199+ printer .Print (Printer .ConvertForPrinter (entry .Text ))
200+ }, w )
201+ } else {
202+ dialog .ShowInformation ("" , "No Printer Connected" , w )
203+ }
204+ }),
140205 )
141206}
142207
@@ -206,8 +271,8 @@ func makeShoppingMenu() fyne.CanvasObject {
206271 widget .NewLabelWithStyle ("PINKSTONE TRADING" , fyne .TextAlignCenter , fyne.TextStyle {Bold : true }),
207272 widget .NewLabelWithStyle (receipt , fyne .TextAlignCenter , fyne.TextStyle {}),
208273 ), func (printing bool ) {
209- if printing {
210- // TODO: Send print msg to Printer & the receipt,
274+ if printing && printer . Active {
275+ printer . Print ( Printer . ConvertForPrinter ( receipt ))
211276 }
212277 }, w )
213278 }, w )
0 commit comments