I have recently completed the documentation for the Draw Comands and Input Commands.

So, yes nuclear offers some support in this direction to a certain point.

Here is an overview of the relevant functions.

Input - Function Overview

Integer InputHasMouseClick( id as Integer)
Integer InputHasMouseClickInRect( id as Integer, x as Float, y as Float, w as Float, h as Float)
Integer InputHasMouseClickDownInRect( id as Integer, x as Float, y as Float, w as Float, h as Float, down as Integer)
Integer InputIsMouseClickInRect( id as Integer, x as Float, y as Float, w as Float, h as Float)
Integer InputIsMouseClickDownInRect( id as Integer, x as Float, y as Float, w as Float, h as Float, down as Integer)
Integer InputAnyMouseClickInRect( x as Float, y as Float, w as Float, h as Float)
Integer InputIsMousePrevHoveringRect( x as Float, y as Float, w as Float, h as Float)
Integer InputIsMouseHoveringRect( x as Float, y as Float, w as Float, h as Float)
Integer InputMouseClicked( id as Integer, x as Float, y as Float, w as Float, h as Float)
Integer InputIsMouseDown( id as Integer)
Integer InputIsMousePressed( id as Integer)
Integer InputIsMouseReleased( id as Integer)
Integer InputIsKeyPressed( key as Integer)
Integer InputIsKeyReleased( key as Integer)
Integer InputIsKeyDown( key as Integer)
Float InputGetMouseDeltaX()
Float InputGetMouseDeltaY()

Draw Commands - Function Overview

StrokeLine(slot as Integer, x0 as Float, y0 as Float, x1 as Float, y1 as Float, thickness as Float, color as Integer)
StrokeCurve(slot as Integer, x0 as Float, y0 as Float, ctrl0x as Float, ctrl0y as Float, ctrl1x as Float, ctrl1y as Float, x1 as Float, y1 as Float, thickness as Float, color as Integer)
StrokeRect(slot as Integer, x as Float, y as Float, w as Float, h as Float, rounding as Float, thickness as Float, color as Integer)
FillRect(slot as Integer, x as Float, y as Float, w as Float, h as Float, rounding as Float, color as Integer)
FillRectMultiColor(slot as Integer, x as Float, y as Float, w as Float, h as Float, lt as Integer, rt as Integer, rb as Integer, lb as Integer)
StrokeCircle(slot as Integer, x as Float, y as Float, w as Float, h as Float, thickness as Float, color as Integer)
FillCircle(slot as Integer, x as Float, y as Float, w as Float, h as Float, color as Integer)
StrokeArc(slot as Integer, cx as Float, cy as Float, radius as Float, a_min as Float, a_max as Float, thickness as Float, color as Integer)
FillArc(slot as Integer, cx as Float, cy as Float, radius as Float, a_min as Float, a_max as Float, color as Integer)
StrokeTriangle(slot as Integer, x0 as Float, y0 as Float, x1 as Float, y1 as Float, x2 as Float, y2 as Float, thickness as Float, color as Integer)
FillTriangle(slot as Integer, x0 as Float, y0 as Float, x1 as Float, y1 as Float, x2 as Float, y2 as Float, color as Integer)
DrawImage(slot as Integer, x as Float, y as Float, w as Float, h as Float, img_slot as Integer, color as Integer)
DrawImage(slot as Integer, x as Float, y as Float, w as Float, h as Float ,img_name as String, color as Integer)
DrawText(slot as Integer, x as Float, y as Float, w as Float, h as Float, label as String, font_name as String, back_col as Integer, front_col as Integer)

EDIT:

However, I would rather edit it in the AppGameKit surface than in a nuclear window.

But it would also work in a window.

I think the effort is similarly great.