Real minor note: proper place for ui_some_widget.h is in ui.h. Then other files (like ui_lua) just include ui.h. This way, when code wants to use the UI, it only includes ui.h, instead of listing every UI widget it wants. So if you make a new widget, just add the .h to ui.h and nowhere else.