I’m working with nightly gtkmm4 , so windows / custom widgets are now C++ classes. Also I’m writing .ui xml manually.
I wonder if it’s possible to bind <template> from a .ui file to those C++ class like we did in C, such that almost no widget assembling code is required.
If not, do we just assign id to interesting <object>s, fetching them via Gtk::Builder::get_widget(), and install one by one as class’s data members (maybe in the ctor’s member-init-list)? Cause I find it a bit annoying in doing things like
auto builder = Gtk::Builder::create_from_resource("/org/myproj/MyWin.ui");
auto menu_button = builder->get_widget<Gtk::MenuButton>("server_group_menu_button");
auto menu_model = builder->get_object<Gio::MenuModel>("server_group_menu");
// would be nice if <child type="titlebar"> is around!
auto header_bar = builder->get_widget<Gtk::HeaderBar>("header_bar");
// and many more widget assembling code ...
So I guess the answer is no . Don’t use <template> in UI XML with gtkmm project. gtkmm expects you to use Gtk::Builder::get_widget for vanilla widget within Gtk:: namespace, and Gtk::Builder::get_widget_derived (note that this one is static member func - weird API design I bet) for custom widgets.
The idea is that - don’t create instances of custom widget programmatically in your code when using gtkmm - write your custom MyWin top level window as a plain top-level <object> in some .ui file, and let Gtk::Builder create the whole thing for you, which also means that API like Gtk::Application::make_window_and_run isn’t as useful.