#pragma once #include "mixins.hpp" #include "compat/library-path.hpp" #include "api/plugin-api.hpp" #include "logic/extensions.hpp" #include "logic/state.hpp" #include "logic/main-settings.hpp" #include #include #include namespace OTR_MIXIN_NS(module_mixin) { using namespace options; using dylib_ptr = Modules::dylib_ptr; using dylib_list = Modules::dylib_list; struct OTR_MAIN_EXPORT module_mixin { module_mixin(); virtual ~module_mixin(); std::unique_ptr tracker_dialog; std::unique_ptr proto_dialog; std::unique_ptr filter_dialog; std::tuple module_by_name(const QString& name, const dylib_list& list) const; dylib_ptr current_tracker(); dylib_ptr current_protocol(); dylib_ptr current_filter(); void show_tracker_settings_(); void show_proto_settings_(); void show_filter_settings_(); private: Modules modules { OPENTRACK_BASE_PATH + OPENTRACK_LIBRARY_PATH }; event_handler ev { modules.extensions() }; module_settings s; State state { OPENTRACK_BASE_PATH + OPENTRACK_LIBRARY_PATH }; QObject fuzz; }; } OTR_DECLARE_MIXIN(module_mixin)