package main import ( "fmt" "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget" ) func createNetworkTab(server outputStruct) *container.AppTabs { etcHostsList := widget.NewList( func() int { return len(server.NetworkConfig.EtcHosts) }, func() fyne.CanvasObject { return container.NewHBox( widget.NewLabel("etc hosts"), ) }, func(id widget.ListItemID, obj fyne.CanvasObject) { hbox := obj.(*fyne.Container) line := server.NetworkConfig.EtcHosts[id] lineLabel := hbox.Objects[0].(*widget.Label) lineLabel.SetText(line) }, ) netInterfacesList := widget.NewList( //TODO тут всё может упасть. В NetInterfaces лежит структура, в которой есть список ip адресов // обычно их не очень много, но в крайних случаях их может быть 100500 на сетевом интерфейсе // и гуй этому не обрадуется. Пока фигачим всё одной строкой func() int { return len(server.NetworkConfig.NetInterfaces) }, func() fyne.CanvasObject { return container.NewHBox( widget.NewLabel("интерфейс"), ) }, func(id widget.ListItemID, obj fyne.CanvasObject) { hbox := obj.(*fyne.Container) iface := server.NetworkConfig.NetInterfaces[id] ifaceLabel := hbox.Objects[0].(*widget.Label) ifaceLabel.SetText(fmt.Sprintf("%s, флаги: %s, мак: %s, ip: %s, index: %s, MTU: %s", iface.Device, iface.Flags, iface.HwAddr, iface.IpAddr, iface.Index, iface.MTU)) }, ) networkManagerConnList := widget.NewList( func() int { return len(server.NetworkConfig.NetworkManagerConn) }, func() fyne.CanvasObject { return container.NewHBox( widget.NewLabel("соединение"), ) }, func(id widget.ListItemID, obj fyne.CanvasObject) { hbox := obj.(*fyne.Container) conn := server.NetworkConfig.NetworkManagerConn[id] connLabel := hbox.Objects[0].(*widget.Label) connLabel.SetText(conn) }, ) networkAppTabs := container.NewAppTabs() networkAppTabs.Append(container.NewTabItem("etc/hosts", container.NewScroll(etcHostsList))) networkAppTabs.Append(container.NewTabItem("Список сетевых интерфейсов", container.NewScroll(netInterfacesList))) networkAppTabs.Append(container.NewTabItem("nmcli c s", container.NewScroll(networkManagerConnList))) networkAppTabs.Append(container.NewTabItem("NetworkManager", widget.NewLabel(fmt.Sprintf("Включен: %s", server.NetworkConfig.NetworkManager)))) networkAppTabs.Append(container.NewTabItem("Networking", widget.NewLabel(fmt.Sprintf("Включен: %s", server.NetworkConfig.Networking)))) return networkAppTabs }