// This file Copyright © 2007-2022 Mnemosyne LLC. // It may be used under GPLv2 (SPDX: GPL-2.0), GPLv3 (SPDX: GPL-3.0), // or any future license endorsed by Mnemosyne LLC. // License text can be found in the licenses/ folder. #pragma once #include #include /** *** utility code for making dialog layout that follows the Gnome HIG. *** see section 8.2.2, Visual Design > Window Layout > Dialogs. **/ class HigWorkarea : public Gtk::Grid { public: HigWorkarea(); TR_DISABLE_COPY_MOVE(HigWorkarea) void add_section_divider(guint& row); void add_section_title_widget(guint& row, Gtk::Widget& w); void add_section_title(guint& row, Glib::ustring const& section_title); void add_wide_tall_control(guint& row, Gtk::Widget& w); void add_wide_control(guint& row, Gtk::Widget& w); Gtk::CheckButton* add_wide_checkbutton(guint& row, Glib::ustring const& mnemonic_string, bool is_active); void add_label_w(guint row, Gtk::Widget& label_widget); Gtk::Label* add_tall_row( guint& row, Glib::ustring const& mnemonic_string, Gtk::Widget& control, Gtk::Widget* mnemonic_or_null_for_control = nullptr); Gtk::Label* add_row( guint& row, Glib::ustring const& mnemonic_string, Gtk::Widget& control, Gtk::Widget* mnemonic_or_null_for_control = nullptr); void add_row_w( guint& row, Gtk::Widget& label_widget, Gtk::Widget& control, Gtk::Widget* mnemonic_or_null_for_control = nullptr); private: void add_tall_control(guint row, Gtk::Widget& control); void add_control(guint row, Gtk::Widget& control); }; enum { GUI_PAD_SMALL = 3, GUI_PAD = 6, GUI_PAD_BIG = 12, GUI_PAD_LARGE = 12 };