changelog
    
    
    - Sun, 09 Apr 2023 16:27:22 +0300
 
    - by Teemu Piippo <teemu.s.piippo@gmail.com> [Sun, 09 Apr 2023 16:27:22 +0300] rev 366
 
    - Also connect up "Select all"
 
    - Sun, 09 Apr 2023 16:23:05 +0300
 
    - by Teemu Piippo <teemu.s.piippo@gmail.com> [Sun, 09 Apr 2023 16:23:05 +0300] rev 365
 
    - Add undo, redo, cut, copy and paste actions to MainWindow which pass onto the editor widget
 
    - Sun, 09 Apr 2023 16:01:57 +0300
 
    - by Teemu Piippo <teemu.s.piippo@gmail.com> [Sun, 09 Apr 2023 16:01:57 +0300] rev 364
 
    - I forgot to add files again... this time it's modelsubwindow.h
 
    - Sun, 09 Apr 2023 16:01:38 +0300
 
    - by Teemu Piippo <teemu.s.piippo@gmail.com> [Sun, 09 Apr 2023 16:01:38 +0300] rev 363
 
    - Removed unused code
 
    - Sun, 09 Apr 2023 15:59:08 +0300
 
    - by Teemu Piippo <teemu.s.piippo@gmail.com> [Sun, 09 Apr 2023 15:59:08 +0300] rev 362
 
    - Extracted the state of the program into a MainState structure, and extracted local functions of main() into static functions.
I was planning to make the core logic and state of the program into a Main class, which would be a QObject that would
have lots of signals and slots, but it looks like this works even without it 
    - Sun, 09 Apr 2023 13:28:36 +0300
 
    - by Teemu Piippo <teemu.s.piippo@gmail.com> [Sun, 09 Apr 2023 13:28:36 +0300] rev 361
 
    - Move some recent file handling to MainWindow
 
    - Sun, 09 Apr 2023 12:23:32 +0300
 
    - by Teemu Piippo <teemu.s.piippo@gmail.com> [Sun, 09 Apr 2023 12:23:32 +0300] rev 360
 
    - `PartRenderer::renderVao` no longer throws if bad array class is given, this is now checked on compile time