From d551f7835a5ddd91db03a47c6cc0f8a11ad6d5b6 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Tue, 3 Mar 2026 00:47:20 +0000 Subject: [PATCH] readded the delete window command --- tui/internal/controllers/layoutController.go | 33 +++++++++++++++----- tui/internal/services/device.go | 4 +++ tui/internal/views/layoutTool.go | 15 +++++++++ 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/tui/internal/controllers/layoutController.go b/tui/internal/controllers/layoutController.go index 9c5a5b7..939919f 100644 --- a/tui/internal/controllers/layoutController.go +++ b/tui/internal/controllers/layoutController.go @@ -50,14 +50,7 @@ func (lc *LayoutController) registerHooks() { lc.newWindowAction() case 'x': lc.Messages <- "calling delete window\n" - // Delete selected window - // bus.Emit(ui.LogEv{Log: }) - // wRef, err := getCurNodeRef(tree) - // if err != nil { - // bus.Emit(ui.LogEv{Log: " -> " + err.Error()}) - // break - // } - // bus.Emit(ui.DestroyWindowEv{ID: wRef.ID}) + lc.deleteWindow() case 'm': lc.Messages <- "calling window manipulation tool\n" // Go into move mode @@ -331,3 +324,27 @@ func (lc *LayoutController) saveLayout() { return } } + +// deleteWindow will delete the currently highlighted window in the layoutTree +// - get the currently highlighted element +// - tell the LayoutToolView too delete it +func (lc *LayoutController) deleteWindow() { + // Delete the window first + // Get the selected node info + curNode := lc.LayoutToolView.LayoutTree.Tree.GetCurrentNode() + if curNode == nil { + lc.Messages <- "couldn't get a hold of currently selected node\n" + return + } + win := curNode.GetReference().(*models.UIWindow) + + // Delete it + err := lc.DevService.DeleteWindow(win.WID) + if err != nil { + lc.Messages <- "failed to delete window: " + err.Error() + "\n" + return + } + + // Reflect the deletion in the view + lc.LayoutToolView.DeleteWindowByNode(curNode) +} diff --git a/tui/internal/services/device.go b/tui/internal/services/device.go index 3761075..da9953d 100644 --- a/tui/internal/services/device.go +++ b/tui/internal/services/device.go @@ -60,3 +60,7 @@ func (cds *CDashService) SaveLayout(layoutPath string) error { func (cds *CDashService) UpdateWindow(idx int16, win *cdashdisplay.UIWindow) error { return cds.CDash.UpdateWindow(idx, win) } + +func (cds *CDashService) DeleteWindow(idx int16) error { + return cds.CDash.DestroyWindow(idx) +} diff --git a/tui/internal/views/layoutTool.go b/tui/internal/views/layoutTool.go index e45a5e5..cb62696 100644 --- a/tui/internal/views/layoutTool.go +++ b/tui/internal/views/layoutTool.go @@ -249,3 +249,18 @@ func (ltv *LayoutToolView) ShowWindowFormByID(idx int16) { nil, ) } + +func (ltv *LayoutToolView) DeleteWindowByNode(node *tview.TreeNode) { + root := ltv.LayoutTree.Tree.GetRoot() + if root == nil { + // We should do something I guess + return + } + + root.RemoveChild(node) + + // We have to delete it from the map + // This isn't very safe now is it? + delete(ltv.FormQuickAccess, node.GetReference().(*models.UIWindow).WID) + // Did we delete everything ??? +}