figuring a way of having a clean internal interface for the data and other stuff I reckon. I forgot
This commit is contained in:
+15
-13
@@ -130,30 +130,32 @@ func NewCDashDisplay() (*CDashDisplay, error) {
|
||||
func (d *CDashDisplay) SendCommand() {
|
||||
}
|
||||
|
||||
func (d *CDashDisplay) CreateWindow(win UIWindow) (int16, error) {
|
||||
bytes, err := helper.StructToBytes(win)
|
||||
func (d *CDashDisplay) CreateWindow(win *DesktopUIWindow) (*DesktopUIWindow, error) {
|
||||
bytes, err := helper.StructToBytes(win.UIWindow)
|
||||
if err != nil {
|
||||
return -1, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Send the command
|
||||
var wID packets.NewWindowID
|
||||
err = d.WT.SendCommand(newWindowCMDID, bytes, &wID)
|
||||
if err != nil {
|
||||
return -1, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
win.UIData.IDX = wID.ID
|
||||
|
||||
pLogger.Info(fmt.Sprintf("Recived ID message: %v", wID))
|
||||
|
||||
d.State.Layout.AddWindow(wID.ID, win)
|
||||
d.State.Layout.AddWindow(win)
|
||||
|
||||
return wID.ID, nil
|
||||
return win, nil
|
||||
}
|
||||
|
||||
func (d *CDashDisplay) UpdateWindow(wID int16, win *UIWindow) error {
|
||||
func (d *CDashDisplay) UpdateWindow(win *DesktopUIWindow) error {
|
||||
data := UIWindowUpdatePacket{
|
||||
WinID: wID,
|
||||
Window: *win,
|
||||
WinID: win.UIData.IDX,
|
||||
Window: win.UIWindow,
|
||||
}
|
||||
|
||||
bytes, err := helper.StructToBytes(data)
|
||||
@@ -172,7 +174,7 @@ func (d *CDashDisplay) UpdateWindow(wID int16, win *UIWindow) error {
|
||||
// I send the pointer here
|
||||
// -> it should be the same pointer then right?
|
||||
pLogger.Debug(fmt.Sprintf("PreUpdate ID: %p", win))
|
||||
d.State.Layout.Windows[wID] = win
|
||||
d.State.Layout.Windows[win.UIData.IDX] = win
|
||||
pLogger.Debug(fmt.Sprintf("PostUpdate ID: %p", win))
|
||||
// Yeah, same address as suspected
|
||||
// I can't think about it right now. I'll think about that tomorrow
|
||||
@@ -245,7 +247,7 @@ func (d *CDashDisplay) MoveWindow(wID int16, delta *helper.Vector) error {
|
||||
Dims: newDimensions,
|
||||
}
|
||||
|
||||
err := d.updateWindowDimensions(window, packet)
|
||||
err := d.updateWindowDimensions(&window.UIWindow, packet)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -283,7 +285,7 @@ func (d *CDashDisplay) ResizeWindow(wID int16, delta *helper.Vector) error {
|
||||
Dims: newDimensions,
|
||||
}
|
||||
|
||||
err := d.updateWindowDimensions(window, packet)
|
||||
err := d.updateWindowDimensions(&window.UIWindow, packet)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -325,7 +327,7 @@ func (d *CDashDisplay) LoadLayout(layoutName string) error {
|
||||
}
|
||||
|
||||
for _, w := range layout.Windows {
|
||||
_, err = d.CreateWindow(*w)
|
||||
_, err = d.CreateWindow(w)
|
||||
if err != nil {
|
||||
// NOTE: Add a way to handle multiple errors ?
|
||||
return err
|
||||
|
||||
@@ -3,18 +3,18 @@ package cdashdisplay
|
||||
import "fmt"
|
||||
|
||||
type LayoutTree struct {
|
||||
Windows map[int16]*UIWindow `yaml:"Windows"`
|
||||
Windows map[int16]*DesktopUIWindow `yaml:"Windows"`
|
||||
}
|
||||
|
||||
func NewLayoutTree() *LayoutTree {
|
||||
return &LayoutTree{
|
||||
Windows: make(map[int16]*UIWindow),
|
||||
Windows: make(map[int16]*DesktopUIWindow),
|
||||
}
|
||||
}
|
||||
|
||||
func (l *LayoutTree) AddWindow(idx int16, w UIWindow) {
|
||||
pLogger.Debug(fmt.Sprintf("adding window '%d' - %v", idx, w))
|
||||
l.Windows[idx] = &w
|
||||
func (l *LayoutTree) AddWindow(w *DesktopUIWindow) {
|
||||
pLogger.Debug(fmt.Sprintf("adding window '%d' - %v", w.UIData.IDX))
|
||||
l.Windows[w.UIData.IDX] = w
|
||||
pLogger.Debug(fmt.Sprintf("new map - %v", l.Windows))
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,21 @@ type UIWindow struct {
|
||||
Title FString32 `yaml:"Title"`
|
||||
}
|
||||
|
||||
type DesktopUIWindow struct {
|
||||
UIWindow
|
||||
UIData DesktopUIData
|
||||
}
|
||||
|
||||
type DesktopUIData struct {
|
||||
IDX int16 `yaml:"WID"`
|
||||
TelemetryField string `yaml:"TelemetryField"`
|
||||
}
|
||||
|
||||
type UIWindowUpdatePacket struct {
|
||||
WinID int16
|
||||
Window UIWindow
|
||||
}
|
||||
|
||||
// func getUIWindowDTO(w *DesktopWindowData) *UIWindow {
|
||||
//
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user