diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-05-24 12:57:09 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-05-24 12:57:09 +0400 |
| commit | 5ac59d00add5c7982bc3eefa9145bfe676044734 (patch) | |
| tree | cbf50112eda1839b6a514dcf85b657c7f77aa9d1 /interface/main.go | |
| parent | 31d4558821bfffbc07d5fae54fa063c019a6f7a9 (diff) | |
Базовая версия интерфейса
Diffstat (limited to 'interface/main.go')
| -rw-r--r-- | interface/main.go | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/interface/main.go b/interface/main.go new file mode 100644 index 0000000..8f7566d --- /dev/null +++ b/interface/main.go @@ -0,0 +1,140 @@ +package main + +import ( + "fmt" + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/app" + "fyne.io/fyne/v2/canvas" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/layout" + "fyne.io/fyne/v2/widget" + "image/color" +) + +type DBInterface struct { + window fyne.Window + db SQLConnection +} + +func insertView(window fyne.Window, db SQLConnection, table string) { + window.SetTitle(fmt.Sprintf("Insert into table %s", table)) + columns, _ := db.getColumns(table) + + var elements []fyne.CanvasObject + for _, val := range columns { + label := canvas.NewText(val, color.White) + input := widget.NewEntry() + elements = append(elements, container.New( + layout.NewBorderLayout(nil, nil, label, nil), + label, input)) + } + elements = append(elements, widget.NewButton("Вставить", func() {})) + elements = append(elements, widget.NewButton("Назад", func() { + showTable(window, db, table) + })) + + mainContainer := container.NewVBox(elements...) + window.SetContent(mainContainer) +} + +func showTable(window fyne.Window, db SQLConnection, table string) { + data, err := db.getTable(table) + if err != nil { + fmt.Println(err) + return + } + columns, err := db.getColumns(table) + + list := widget.NewTable( + func() (int, int) { + return len(data), len(columns) + }, + func() fyne.CanvasObject { + return widget.NewLabel("wide content") + }, + func(i widget.TableCellID, o fyne.CanvasObject) { + o.(*widget.Label).SetText(fmt.Sprintf("%v", data[i.Row][i.Col])) + }) + + signup := widget.NewButton("Вставить", func() { + insertView(window, db, table) + }) + + back := widget.NewButton("Назад", func() { + adminView(window, db) + }) + + window.SetContent(container.NewBorder(nil, container.NewHBox(signup, back), nil, nil, list)) +} + +func adminView(window fyne.Window, db SQLConnection) { + tables, _ := db.getTables() + + var tableBtns []fyne.CanvasObject + tableBtns = append(tableBtns, container.NewCenter(widget.NewLabel("Таблицы"))) + for _, val := range tables { + e := val + tableBtns = append( + tableBtns, widget.NewButton( + fmt.Sprintf("Показать %s", val), + func() { + showTable(window, db, e) + })) + } + + views, _ := db.getViews() + var viewsBtns []fyne.CanvasObject + viewsBtns = append(viewsBtns, container.NewCenter(widget.NewLabel("Представления"))) + for _, val := range views { + e := val + viewsBtns = append( + viewsBtns, widget.NewButton( + fmt.Sprintf("Показать %s", val), + func() { + showTable(window, db, e) + })) + } + + tablesScroll := container.NewVScroll(container.NewVBox(tableBtns...)) + viewsScroll := container.NewVScroll(container.NewVBox(viewsBtns...)) + + dataBox := container.NewHBox(tablesScroll, viewsScroll) + menuBtn := widget.NewButton("В меню", func() { + menu(window, db) + }) + + window.SetContent(container.NewBorder(nil, menuBtn, nil, nil, dataBox)) +} + +func userView(window fyne.Window, db SQLConnection) { + +} + +func menu(window fyne.Window, db SQLConnection) { + window.SetContent(container.NewCenter( + container.NewVBox( + widget.NewButton("Режим Администратора", func() { + adminView(window, db) + }), + widget.NewButton("Режим Пользователя", func() { + userView(window, db) + }), + ), + )) +} + +func main() { + myApp := app.New() + window := myApp.NewWindow("Table Widget") + window.Resize(fyne.NewSize(700, 480)) + + db := SQLConnection{} + err := db.init() + if err != nil { + fmt.Println(err) + return + } + + menu(window, db) + window.ShowAndRun() +} |