Create the window type we will use to add modular elements to the base station. We want the base station graphics elements to be contained in modular windows that we can reconfigure at runtime. This includes moving, resizing, opening, and closing them.
Design
Consider whether it is better to modify NanoGUI directly or write extra code to run with it. If building our own code, we can still copy entire files from NanoGUI and modify them. If modifying NanoGUI is easiest, we can fork their repository and add that one as a submodule.
Requirements
Note that some of these features may already be a part of NanoGUI
Add close and minimize functions to windows. For minimization, ensure there is some way to find and restore those windows. We may not want these options for some windows (like pop-ups), so allow these options to be disabled on some types.
You may want to create a window manager class to track all opened windows
Add buttons in the title bar for closing and minimizing the window. Make sure the title text will not draw over them. You can left-align the titles for more space. Do not draw the button if the option is disabled.
NanoGUI has many built-in icons. Also, see whether you can adapt the button widget.
Later, we will make a "Window Manager" module to restore them graphically. For now, make sure the interface to do this is there.
Style changes:
Allow border shadows to be disabled
Make windows opaque (see NanoGUI Example 1 where the backgrounds are transparent)
Make windows resizable. This function is mostly for other code to use, like when adding windows to a grid layout. Eventually, we want click-and-drag resizing, though this is not essential right now.
Timeline and Next Steps
We want to start creating modules as soon as possible, so this task may be broken up into multiple pull requests. Make sure that the base window type used to create modules is done on or before November 30th.
Implement the other features by December 7th. After the base is done, we can discuss dividing up this part (Example: one person works on the graphics changes, the other works on the functionality changes).
Main Objective
Create the window type we will use to add modular elements to the base station. We want the base station graphics elements to be contained in modular windows that we can reconfigure at runtime. This includes moving, resizing, opening, and closing them.
Design
Consider whether it is better to modify NanoGUI directly or write extra code to run with it. If building our own code, we can still copy entire files from NanoGUI and modify them. If modifying NanoGUI is easiest, we can fork their repository and add that one as a submodule.
Requirements
Timeline and Next Steps