diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-26 20:16:33 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-26 20:16:33 +0200 |
| commit | 08a8362a39a7b71c087f165a1079b5439c52d35e (patch) | |
| tree | dde0b54f29e0737b7cb061746c3183164c653997 | |
| parent | 7a093920809394f7f31b75c444fe6009d1de7005 (diff) | |
| download | turns-08a8362a39a7b71c087f165a1079b5439c52d35e.tar.xz turns-08a8362a39a7b71c087f165a1079b5439c52d35e.zip | |
turns: perform source cleanup
36 files changed, 429 insertions, 265 deletions
diff --git a/.clang-format b/.clang-format index 71b5a95..2b98760 100644 --- a/.clang-format +++ b/.clang-format @@ -75,16 +75,16 @@ IncludeCategories: - Regex: '^<sigc\+\+/[[:alnum:]_/]+\.h(pp)?' Priority: 340 # Glibmm Headers - - Regex: '^<glibmm/[[:alnum:]/]+\.h(pp)?' + - Regex: '^<glibmm/[[:alnum:]_/]+\.h(pp)?' Priority: 350 # Giomm Headers - - Regex: '^<giomm/[[:alnum:]/]+\.h(pp)?' + - Regex: '^<giomm/[[:alnum:]_/]+\.h(pp)?' Priority: 360 # Gtk Headers - - Regex: '^<gtkmm/[[:alnum:]/]+\.h(pp)?' + - Regex: '^<gtkmm/[[:alnum:]_/]+\.h(pp)?' Priority: 370 # General System Headers - - Regex: '^<[[:alnum:]/+-]+\.h(pp)?' + - Regex: '^<[[:alnum:]/+-_]+\.h(pp)?' Priority: 400 # STL Headers - Regex: '^<[[:alnum:]_]+>' @@ -0,0 +1,5 @@ +CompileFlags: + Remove: [-fmodules-ts, -fdeps-format=*, -fmodule-mapper=*, -fcondition-coverage] +Diagnostics: + UnusedIncludes: Strict + MissingIncludes: Strict
\ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index b1a65b9..ccee2f6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,6 +7,7 @@ "cSpell.words": [ "arknet", "gobj", + "klass", "refptr", "sigc", "ustring", @@ -18,12 +19,20 @@ "cSpell.language": "en,de", + "clangd.arguments": [ + "--background-index", + "--compile-commands-dir=${workspaceFolder}/build" + ], + "cmake.configureOnOpen": true, "cmake.ctest.testExplorerIntegrationEnabled": false, "cmake.configureArgs": [ + "-DCMAKE_EXPORT_COMPILE_COMMANDS=YES", "-DCMAKE_INSTALL_PREFIX=${env:HOME}/.local", "-DTURNS_USE_INSTALLED_TRANSLATIONS=OFF" ], "C_Cpp.autoAddFileAssociations": false, + "C_Cpp.codeAnalysis.clangTidy.enabled": false, + "C_Cpp.intelliSenseEngine": "disabled" }
\ No newline at end of file diff --git a/adw/src/application.cpp b/adw/src/application.cpp index 539f7bc..e8f6253 100644 --- a/adw/src/application.cpp +++ b/adw/src/application.cpp @@ -4,12 +4,20 @@ #include <glibmm/class.h> #include <glibmm/object.h> +#include <glibmm/objectbase.h> +#include <glibmm/refptr.h> +#include <glibmm/ustring.h> +#include <glibmm/utility.h> +#include <giomm/application.h> + +#include <gtkmm/application.h> #include <gtkmm/init.h> +#include <gtkmm/private/application_p.h> #include <adwaita.h> - -#include <gtkmm/private/application_p.h> +#include <gio/gio.h> +#include <glib-object.h> namespace turns::adw { diff --git a/adw/src/wrap_init.cpp b/adw/src/wrap_init.cpp index 42ff1cf..24bfad9 100644 --- a/adw/src/wrap_init.cpp +++ b/adw/src/wrap_init.cpp @@ -2,7 +2,10 @@ #include "turns/adw/application.hpp" +#include <glibmm/wrap.h> + #include <adwaita.h> +#include <glib-object.h> namespace turns::adw { diff --git a/app/src/main.cpp b/app/src/main.cpp index de35e87..83840c1 100644 --- a/app/src/main.cpp +++ b/app/src/main.cpp @@ -1,13 +1,17 @@ #include "turns/adw/application.hpp" -#include "turns/adw/wrap_init.hpp" #include "turns/core/init.hpp" #include "turns/ui/init.hpp" #include "turns/ui/windows/tracker.hpp" -#include <glibmm/i18n.h> +#include <sigc++/functors/mem_fun.h> #include <gtkmm/builder.h> +#include <adwaita.h> +#include <libintl.h> + +#include <clocale> + auto main(int argc, char * argv[]) -> int { setlocale(LC_ALL, ""); diff --git a/core/include/turns/core/fwd.hpp b/core/include/turns/core/fwd.hpp index deac497..1646d4b 100644 --- a/core/include/turns/core/fwd.hpp +++ b/core/include/turns/core/fwd.hpp @@ -9,6 +9,6 @@ namespace turns::core struct participant; struct turn_order; -} +} // namespace turns::core #endif
\ No newline at end of file diff --git a/core/include/turns/core/turn_order.hpp b/core/include/turns/core/turn_order.hpp index a617312..52a7268 100644 --- a/core/include/turns/core/turn_order.hpp +++ b/core/include/turns/core/turn_order.hpp @@ -3,6 +3,7 @@ #include "turns/core/fwd.hpp" +#include <glibmm/object.h> #include <glibmm/property.h> #include <glibmm/propertyproxy.h> #include <glibmm/refptr.h> @@ -10,12 +11,13 @@ #include <giomm/listmodel.h> +#include <glib-object.h> +#include <nlohmann/json_fwd.hpp> + #include <limits> #include <optional> #include <vector> -#include <nlohmann/json_fwd.hpp> - namespace turns::core { diff --git a/core/src/disposition.cpp b/core/src/disposition.cpp index 4eec33e..81fb410 100644 --- a/core/src/disposition.cpp +++ b/core/src/disposition.cpp @@ -1,6 +1,7 @@ #include "turns/core/disposition.hpp" #include <glibmm/i18n.h> +#include <glibmm/ustring.h> namespace turns::core { diff --git a/core/src/participant.cpp b/core/src/participant.cpp index 6b69754..63df96e 100644 --- a/core/src/participant.cpp +++ b/core/src/participant.cpp @@ -1,8 +1,12 @@ #include "turns/core/participant.hpp" +#include "turns/core/disposition.hpp" #include "turns/core/json_ext.hpp" +#include <glibmm/object.h> +#include <glibmm/objectbase.h> #include <glibmm/refptr.h> +#include <glibmm/ustring.h> #include <nlohmann/json.hpp> diff --git a/core/src/turn_order.cpp b/core/src/turn_order.cpp index 3fb25d1..e7b92db 100644 --- a/core/src/turn_order.cpp +++ b/core/src/turn_order.cpp @@ -1,16 +1,28 @@ #include "turns/core/turn_order.hpp" +#include "turns/core/disposition.hpp" #include "turns/core/json_ext.hpp" #include "turns/core/participant.hpp" +#include <sigc++/adaptors/bind.h> +#include <sigc++/functors/mem_fun.h> + +#include <glibmm/objectbase.h> +#include <glibmm/propertyproxy.h> #include <glibmm/refptr.h> +#include <glibmm/ustring.h> + +#include <giomm/listmodel.h> +#include <glib-object.h> #include <nlohmann/json.hpp> #include <algorithm> #include <functional> +#include <iterator> #include <ranges> #include <typeinfo> +#include <vector> using namespace std::placeholders; @@ -22,10 +34,6 @@ namespace turns::core auto constexpr comparator = [](auto lhs, auto rhs) { return *lhs > *rhs; }; - - auto constexpr equal_comparator = [](auto lhs, auto rhs) { - return (lhs->get_name() == rhs->get_name()) && (lhs->get_priority() && rhs->get_priority()); - }; } // namespace /** Construction */ diff --git a/core/tests/disposition.cpp b/core/tests/disposition.cpp index e003f7e..fda605c 100644 --- a/core/tests/disposition.cpp +++ b/core/tests/disposition.cpp @@ -8,6 +8,7 @@ #include <format> #include <limits> +#include <type_traits> #include <utility> namespace turns::core::tests diff --git a/core/tests/turn_order.cpp b/core/tests/turn_order.cpp index 4caf174..b4958c5 100644 --- a/core/tests/turn_order.cpp +++ b/core/tests/turn_order.cpp @@ -1,5 +1,6 @@ #include "turns/core/turn_order.hpp" +#include "turns/core/disposition.hpp" #include "turns/core/participant.hpp" #include <catch2/catch_test_macros.hpp> diff --git a/lang/include/turns/lang/messages.hpp b/lang/include/turns/lang/messages.hpp index 8dc9981..42de7bb 100644 --- a/lang/include/turns/lang/messages.hpp +++ b/lang/include/turns/lang/messages.hpp @@ -6,8 +6,8 @@ namespace turns::lang auto constexpr static add_participant = "Add participant"; auto constexpr static cancel = "Cancel"; auto constexpr static clear = "_Clear"; - auto constexpr static disposition = "Disposition"; auto constexpr static delete_participant = "Delete participant"; + auto constexpr static disposition = "Disposition"; auto constexpr static edit_participant = "Edit participant"; auto constexpr static end_turn_order = "End turn order"; auto constexpr static finish = "Finish"; @@ -23,10 +23,10 @@ namespace turns::lang auto constexpr static priority_number = "Priority {}"; auto constexpr static question_clear_turn_order = "Do you want to clear the turn order?"; auto constexpr static quit = "_Quit"; + auto constexpr static round_number = "Round {}"; auto constexpr static save = "_Save"; auto constexpr static save_as = "Save as..."; auto constexpr static saving_failed_format = "Saving failed: {}"; - auto constexpr static round_number = "Round {}"; auto constexpr static start_turn_order = "Start turn order"; auto constexpr static stop = "Stop"; auto constexpr static stop_and_clear = "Stop and clear"; diff --git a/lang/tests/intl_test_init.cpp b/lang/tests/intl_test_init.cpp index 6a79040..5438179 100644 --- a/lang/tests/intl_test_init.cpp +++ b/lang/tests/intl_test_init.cpp @@ -3,6 +3,8 @@ #include <libintl.h> +#include <clocale> + namespace turns::lang::tests { diff --git a/lang/tests/messages.cpp b/lang/tests/messages.cpp index 7db0e53..441a831 100644 --- a/lang/tests/messages.cpp +++ b/lang/tests/messages.cpp @@ -5,6 +5,7 @@ #include <libintl.h> +#include <clocale> #include <format> #include <string> diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt index fa4bc02..b0f790d 100644 --- a/ui/CMakeLists.txt +++ b/ui/CMakeLists.txt @@ -6,6 +6,8 @@ add_library("ui" "src/widgets/turn_order_view.cpp" "src/windows/participant_editor.cpp" "src/windows/tracker.cpp" + "src/windows/tracker/actions.cpp" + "src/windows/tracker/event_handlers.cpp" $<TARGET_OBJECTS:ui-res> ) diff --git a/ui/include/turns/ui/init.hpp b/ui/include/turns/ui/init.hpp index a1b1184..b872063 100644 --- a/ui/include/turns/ui/init.hpp +++ b/ui/include/turns/ui/init.hpp @@ -6,6 +6,6 @@ namespace turns::ui auto register_types() -> void; -} // namespace turns::aop +} // namespace turns::ui #endif
\ No newline at end of file diff --git a/ui/include/turns/ui/widgets/fwd.hpp b/ui/include/turns/ui/widgets/fwd.hpp index 4d2ddb7..353db58 100644 --- a/ui/include/turns/ui/widgets/fwd.hpp +++ b/ui/include/turns/ui/widgets/fwd.hpp @@ -5,6 +5,6 @@ namespace turns::ui::widgets { struct participant_row; struct turn_order_view; -} // namespace turns::ui::windows +} // namespace turns::ui::widgets #endif
\ No newline at end of file diff --git a/ui/include/turns/ui/widgets/participant_row.hpp b/ui/include/turns/ui/widgets/participant_row.hpp index e7796d3..f33da34 100644 --- a/ui/include/turns/ui/widgets/participant_row.hpp +++ b/ui/include/turns/ui/widgets/participant_row.hpp @@ -1,10 +1,11 @@ #ifndef TURNS_UI_WIDGETS_PARTICIPANT_ROW_HPP #define TURNS_UI_WIDGETS_PARTICIPANT_ROW_HPP -#include "turns/ui/widgets/template_widget.hpp" #include "turns/core/fwd.hpp" +#include "turns/ui/widgets/template_widget.hpp" #include <glibmm/property.h> +#include <glibmm/propertyproxy.h> #include <glibmm/refptr.h> #include <gtkmm/button.h> @@ -28,8 +29,8 @@ namespace turns::ui::widgets participant_row(Glib::RefPtr<core::participant> participant); - auto property_delete_enabled() -> Glib::PropertyProxy<bool>; - auto property_edit_enabled() -> Glib::PropertyProxy<bool>; + auto delete_enabled() -> Glib::PropertyProxy<bool>; + auto edit_enabled() -> Glib::PropertyProxy<bool>; private: auto handle_delete() -> void; diff --git a/ui/include/turns/ui/widgets/template_widget.hpp b/ui/include/turns/ui/widgets/template_widget.hpp index b3e5195..c01fff2 100644 --- a/ui/include/turns/ui/widgets/template_widget.hpp +++ b/ui/include/turns/ui/widgets/template_widget.hpp @@ -6,6 +6,8 @@ #include <gtkmm/widget.h> +#include <glib-object.h> +#include <glib.h> #include <gtk/gtk.h> #include <algorithm> diff --git a/ui/include/turns/ui/widgets/turn_order_view.hpp b/ui/include/turns/ui/widgets/turn_order_view.hpp index 6790563..a9a3654 100644 --- a/ui/include/turns/ui/widgets/turn_order_view.hpp +++ b/ui/include/turns/ui/widgets/turn_order_view.hpp @@ -2,6 +2,7 @@ #define TURNS_UI_WIDGETS_TURN_ORDER_VIEW_HPP #include "turns/core/fwd.hpp" +#include "turns/core/turn_order.hpp" #include "turns/ui/widgets/template_widget.hpp" #include <glibmm/object.h> diff --git a/ui/include/turns/ui/windows/fwd.hpp b/ui/include/turns/ui/windows/fwd.hpp index b0eb69e..f228d7b 100644 --- a/ui/include/turns/ui/windows/fwd.hpp +++ b/ui/include/turns/ui/windows/fwd.hpp @@ -5,6 +5,6 @@ namespace turns::ui::windows { struct participant_editor; struct tracker; -} // namespace turns::app::windows +} // namespace turns::ui::windows #endif
\ No newline at end of file diff --git a/ui/include/turns/ui/windows/participant_editor.hpp b/ui/include/turns/ui/windows/participant_editor.hpp index 3ef8729..8618a0e 100644 --- a/ui/include/turns/ui/windows/participant_editor.hpp +++ b/ui/include/turns/ui/windows/participant_editor.hpp @@ -22,7 +22,7 @@ namespace turns::ui::windows struct participant_editor : Gtk::Widget { - using signal_finished_type = sigc::signal<void (Glib::ustring, float, core::disposition)>; + using signal_finished_type = sigc::signal<void(Glib::ustring, float, core::disposition)>; participant_editor(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder, Glib::RefPtr<core::participant> obj = {}); @@ -49,6 +49,6 @@ namespace turns::ui::windows signal_finished_type m_signal_finished{}; }; -} // namespace turns::app::windows +} // namespace turns::ui::windows #endif
\ No newline at end of file diff --git a/ui/include/turns/ui/windows/tracker.hpp b/ui/include/turns/ui/windows/tracker.hpp index f520097..03260f1 100644 --- a/ui/include/turns/ui/windows/tracker.hpp +++ b/ui/include/turns/ui/windows/tracker.hpp @@ -4,6 +4,7 @@ #include "turns/core/turn_order.hpp" #include "turns/ui/widgets/turn_order_view.hpp" +#include <glibmm/propertyproxy.h> #include <glibmm/refptr.h> #include <glibmm/ustring.h> #include <glibmm/variant.h> @@ -19,11 +20,8 @@ #include <gtkmm/stack.h> #include <gtkmm/widget.h> -#include <adwaita.h> - -#include <optional> +#include <exception> #include <string> -#include <stdexcept> namespace turns::ui::windows { @@ -33,39 +31,42 @@ namespace turns::ui::windows tracker(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder); private: - auto do_save() -> void; - - auto handle_add_participant() -> void; - auto handle_delete_participant(Glib::VariantBase param) -> void; - auto handle_edit_participant(Glib::VariantBase param) -> void; - auto handle_open() -> void; - auto handle_open_done(Glib::RefPtr<Gio::AsyncResult> result) -> void; - auto handle_open_response(Glib::RefPtr<Gio::AsyncResult> result, Glib::RefPtr<Gtk::FileDialog> dialog) -> void; - auto handle_save(bool force_ask) -> void; - auto handle_save_done(Glib::RefPtr<Gio::AsyncResult> result) -> void; - auto handle_save_response(Glib::RefPtr<Gio::AsyncResult> result, Glib::RefPtr<Gtk::FileDialog> dialog) -> void; - auto handle_stop() -> void; - - + /** Setup */ auto setup_actions() -> void; - auto show_error_toast(std::exception const & e) -> void; + /** Actions */ + auto add_participant() -> void; + auto delete_participant(Glib::VariantBase param) -> void; + auto edit_participant(Glib::VariantBase param) -> void; + auto open() -> void; + auto save(bool force_ask) -> void; + auto stop() -> void; + + /** Event Handlers */ + auto on_open_response(Glib::RefPtr<Gio::AsyncResult> result, Glib::RefPtr<Gtk::FileDialog> dialog) -> void; + auto on_save_response(Glib::RefPtr<Gio::AsyncResult> result, Glib::RefPtr<Gtk::FileDialog> dialog) -> void; + auto on_load_content_done(Glib::RefPtr<Gio::AsyncResult> result) -> void; + auto on_replace_content_done(Glib::RefPtr<Gio::AsyncResult> result) -> void; + + /** Helpers */ + auto show_error(std::exception const & e) -> void; + auto show_toast(std::string const & message) -> void; + auto start_replace_content() -> void; auto update_subtitle() -> void; - AdwApplicationWindow * m_adw; Gtk::Revealer * m_controls; Gtk::Widget * m_empty; - AdwToastOverlay * m_overlay; + Gtk::Widget * m_overlay; Gtk::Stack * m_stack; Gtk::Button * m_start; - AdwWindowTitle * m_title; + Gtk::Widget * m_title; Glib::RefPtr<core::turn_order> m_turn_order; widgets::turn_order_view * m_turn_order_view; Glib::PropertyProxy<Glib::ustring> m_subtitle; - std::string m_file_tag{}; Glib::RefPtr<Gio::File> m_file{}; - std::string m_buffer{}; + std::string m_file_etag{}; + std::string m_file_buffer{}; }; } // namespace turns::ui::windows diff --git a/ui/src/init.cpp b/ui/src/init.cpp index e1b8cc3..8d48ced 100644 --- a/ui/src/init.cpp +++ b/ui/src/init.cpp @@ -1,4 +1,4 @@ -#include "turns/core/init.hpp" +#include "turns/ui/init.hpp" #include "turns/ui/widgets/participant_row.hpp" #include "turns/ui/widgets/turn_order_view.hpp" @@ -12,4 +12,4 @@ namespace turns::ui static_cast<void>(widgets::turn_order_view{{}}); } -} // namespace turns::core
\ No newline at end of file +} // namespace turns::ui
\ No newline at end of file diff --git a/ui/src/widgets/participant_row.cpp b/ui/src/widgets/participant_row.cpp index 29e9100..305336e 100644 --- a/ui/src/widgets/participant_row.cpp +++ b/ui/src/widgets/participant_row.cpp @@ -3,14 +3,26 @@ #include "turns/core/disposition.hpp" #include "turns/core/participant.hpp" #include "turns/lang/messages.hpp" +#include "turns/ui/widgets/template_widget.hpp" + +#include <sigc++/functors/mem_fun.h> #include <glibmm/binding.h> #include <glibmm/i18n.h> +#include <glibmm/objectbase.h> +#include <glibmm/propertyproxy.h> +#include <glibmm/refptr.h> #include <glibmm/ustring.h> #include <glibmm/variant.h> +#include <gtkmm/button.h> +#include <gtkmm/label.h> +#include <gtkmm/listboxrow.h> +#include <gtkmm/togglebutton.h> + #include <algorithm> #include <format> +#include <vector> namespace turns::ui::widgets { @@ -64,10 +76,10 @@ namespace turns::ui::widgets [](auto active) { return active ? "face-sick-symbolic" : "face-smile-symbolic"; }); // clang-format off - Glib::Binding::bind_property(property_delete_enabled(), + Glib::Binding::bind_property(delete_enabled(), m_delete->property_sensitive(), Glib::Binding::Flags::SYNC_CREATE); - Glib::Binding::bind_property(property_edit_enabled(), + Glib::Binding::bind_property(edit_enabled(), m_edit->property_sensitive(), Glib::Binding::Flags::SYNC_CREATE); // clang-format on @@ -108,12 +120,12 @@ namespace turns::ui::widgets } } - auto participant_row::property_delete_enabled() -> Glib::PropertyProxy<bool> + auto participant_row::delete_enabled() -> Glib::PropertyProxy<bool> { return m_delete_enabled.get_proxy(); } - auto participant_row::property_edit_enabled() -> Glib::PropertyProxy<bool> + auto participant_row::edit_enabled() -> Glib::PropertyProxy<bool> { return m_edit_enabled.get_proxy(); } @@ -130,4 +142,4 @@ namespace turns::ui::widgets activate_action("win.edit", index); } -} // namespace turns::app::widgets
\ No newline at end of file +} // namespace turns::ui::widgets
\ No newline at end of file diff --git a/ui/src/widgets/turn_order_view.cpp b/ui/src/widgets/turn_order_view.cpp index 66042da..f3db3c4 100644 --- a/ui/src/widgets/turn_order_view.cpp +++ b/ui/src/widgets/turn_order_view.cpp @@ -1,12 +1,21 @@ #include "turns/ui/widgets/turn_order_view.hpp" #include "turns/core/participant.hpp" -#include "turns/core/turn_order.hpp" #include "turns/ui/widgets/participant_row.hpp" +#include "turns/ui/widgets/template_widget.hpp" #include <sigc++/functors/mem_fun.h> #include <glibmm/binding.h> +#include <glibmm/object.h> +#include <glibmm/objectbase.h> +#include <glibmm/refptr.h> + +#include <gtkmm/enums.h> +#include <gtkmm/listbox.h> +#include <gtkmm/object.h> +#include <gtkmm/progressbar.h> +#include <gtkmm/widget.h> #include <memory> @@ -42,14 +51,14 @@ namespace turns::ui::widgets auto row = Gtk::make_managed<widgets::participant_row>(participant); Glib::Binding::bind_property(m_model->is_running(), - row->property_delete_enabled(), + row->delete_enabled(), Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); Glib::Binding::bind_property(m_model->is_running(), - row->property_edit_enabled(), + row->edit_enabled(), Glib::Binding::Flags::SYNC_CREATE | Glib::Binding::Flags::INVERT_BOOLEAN); return row; } -} // namespace turns::app::widgets
\ No newline at end of file +} // namespace turns::ui::widgets
\ No newline at end of file diff --git a/ui/src/windows/participant_editor.cpp b/ui/src/windows/participant_editor.cpp index 63c09c4..e41bc92 100644 --- a/ui/src/windows/participant_editor.cpp +++ b/ui/src/windows/participant_editor.cpp @@ -4,13 +4,29 @@ #include "turns/core/participant.hpp" #include "turns/lang/messages.hpp" +#include <sigc++/functors/mem_fun.h> + #include <glibmm/i18n.h> +#include <glibmm/refptr.h> +#include <gtkmm/builder.h> +#include <gtkmm/button.h> #include <gtkmm/editable.h> #include <gtkmm/label.h> #include <gtkmm/listboxrow.h> +#include <gtkmm/listitem.h> +#include <gtkmm/object.h> +#include <gtkmm/signallistitemfactory.h> +#include <gtkmm/stringlist.h> #include <gtkmm/stringobject.h> +#include <gtkmm/widget.h> + |
