summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--adw/include/turns/adw/toast.hpp82
-rw-r--r--adw/src/toast.cpp150
2 files changed, 182 insertions, 50 deletions
diff --git a/adw/include/turns/adw/toast.hpp b/adw/include/turns/adw/toast.hpp
index 80d9b8b..da0ef4d 100644
--- a/adw/include/turns/adw/toast.hpp
+++ b/adw/include/turns/adw/toast.hpp
@@ -2,11 +2,13 @@
#define TURNS_ADW_TOAST_HPP
#include "turns/adw/helpers/gobj_mixin.hpp"
-#include "turns/adw/helpers/properties.hpp"
+#include <sigc++/signal.h>
#include <glibmm/object.h>
#include <glibmm/objectbase.h>
+#include <glibmm/propertyproxy.h>
#include <glibmm/refptr.h>
+#include <glibmm/signalproxy.h>
#include <glibmm/ustring.h>
#include <glibmm/variant.h>
@@ -63,15 +65,35 @@ namespace turns::adw
auto static get_base_type() -> GType;
auto dismiss() -> void;
-
- auto property_action_name(this auto && self);
- auto property_action_target(this auto && self);
- auto property_button_label(this auto && self);
- auto property_custom_title(this auto && self);
- auto property_priority(this auto && self);
- auto property_timeout(this auto && self);
- auto property_title(this auto && self);
- auto property_use_markup(this auto && self);
+ auto get_action_name() const -> Glib::ustring;
+ auto get_action_target_value() const -> Glib::VariantBase;
+ auto get_button_label() const -> Glib::ustring;
+ auto get_custom_title() const -> Gtk::Widget *;
+ auto get_priority() const -> Priority;
+ auto get_timeout() const -> unsigned;
+ auto get_title() const -> Glib::ustring;
+ auto get_use_markup() const -> bool;
+ auto set_action_name(Glib::ustring value) -> void;
+ auto set_action_target_value(Glib::VariantBase const & value) -> void;
+ auto set_button_label(Glib::ustring value) -> void;
+ auto set_custom_title(Gtk::Widget * value) -> void;
+ auto set_detailed_action_name(Glib::ustring value) -> void;
+ auto set_priority(Priority value) -> void;
+ auto set_timeout(unsigned value) -> void;
+ auto set_title(Glib::ustring value) -> void;
+ auto set_use_markup(bool value) -> void;
+
+ auto property_action_name() -> Glib::PropertyProxy<Glib::ustring>;
+ auto property_action_target() -> Glib::PropertyProxy<Glib::VariantBase>;
+ auto property_button_label() -> Glib::PropertyProxy<Glib::ustring>;
+ auto property_custom_title() -> Glib::PropertyProxy<Gtk::Widget *>;
+ auto property_priority() -> Glib::PropertyProxy<Priority>;
+ auto property_timeout() -> Glib::PropertyProxy<unsigned>;
+ auto property_title() -> Glib::PropertyProxy<Glib::ustring>;
+ auto property_use_markup() -> Glib::PropertyProxy<bool>;
+
+ auto signal_button_clicked() -> Glib::SignalProxy<void()>;
+ auto signal_dismissed() -> Glib::SignalProxy<void()>;
protected:
explicit Toast(Glib::ustring const & title);
@@ -79,46 +101,6 @@ namespace turns::adw
explicit Toast(BaseObjectType * gobj);
};
- auto Toast::property_action_name(this auto && self)
- {
- return helpers::make_property_proxy<Glib::ustring>(self, "action-name");
- }
-
- auto Toast::property_action_target(this auto && self)
- {
- return helpers::make_property_proxy<Glib::VariantBase>(self, "action-target");
- }
-
- auto Toast::property_button_label(this auto && self)
- {
- return helpers::make_property_proxy<Glib::ustring>(self, "button-label");
- }
-
- auto Toast::property_custom_title(this auto && self)
- {
- return helpers::make_property_proxy<Gtk::Widget *>(self, "custom-title");
- }
-
- auto Toast::property_priority(this auto && self)
- {
- return helpers::make_property_proxy<Priority>(self, "priority");
- }
-
- auto Toast::property_timeout(this auto && self)
- {
- return helpers::make_property_proxy<unsigned>(self, "timeout");
- }
-
- auto Toast::property_title(this auto && self)
- {
- return helpers::make_property_proxy<Glib::ustring>(self, "title");
- }
-
- auto Toast::property_use_markup(this auto && self)
- {
- return helpers::make_property_proxy<bool>(self, "use-markup");
- }
-
} // namespace turns::adw
namespace Glib
diff --git a/adw/src/toast.cpp b/adw/src/toast.cpp
index 1267221..2e39cec 100644
--- a/adw/src/toast.cpp
+++ b/adw/src/toast.cpp
@@ -1,20 +1,25 @@
#include "turns/adw/toast.hpp"
+#include "turns/adw/helpers/properties.hpp"
+
#include <glibmm/class.h>
#include <glibmm/object.h>
#include <glibmm/objectbase.h>
#include <glibmm/private/object_p.h>
#include <glibmm/propertyproxy.h>
#include <glibmm/refptr.h>
+#include <glibmm/signalproxy.h>
#include <glibmm/ustring.h>
#include <glibmm/utility.h>
#include <glibmm/variant.h>
+#include <glibmm/wrap.h>
#include <gtkmm/widget.h>
#include <adwaita.h>
#include <gio/gio.h>
#include <glib-object.h>
+#include <glib.h>
namespace turns::adw
{
@@ -24,6 +29,15 @@ namespace turns::adw
namespace
{
auto constinit _class = Toast::Class{};
+
+ static const Glib::SignalProxyInfo Toast_signal_button_clicked_info = {"button-clicked",
+ (GCallback)&Glib::SignalProxyNormal::slot0_void_callback,
+ (GCallback)&Glib::SignalProxyNormal::slot0_void_callback};
+
+ static const Glib::SignalProxyInfo Toast_signal_dismissed_info = {"dismissed",
+ (GCallback)&Glib::SignalProxyNormal::slot0_void_callback,
+ (GCallback)&Glib::SignalProxyNormal::slot0_void_callback};
+
} // namespace
auto Toast::Class::init() -> Glib::Class const &
@@ -83,6 +97,142 @@ namespace turns::adw
return adw_toast_dismiss(gobj());
}
+ auto Toast::get_action_name() const -> Glib::ustring
+ {
+ return adw_toast_get_action_name(const_cast<BaseObjectType *>(Glib::unwrap(this)));
+ }
+
+ auto Toast::get_action_target_value() const -> Glib::VariantBase
+ {
+ // Take a copy because the value is owned by the toast.
+ return Glib::wrap(adw_toast_get_action_target_value(const_cast<BaseObjectType *>(Glib::unwrap(this))), true);
+ }
+
+ auto Toast::get_button_label() const -> Glib::ustring
+ {
+ return adw_toast_get_button_label(const_cast<BaseObjectType *>(Glib::unwrap(this)));
+ }
+
+ auto Toast::get_custom_title() const -> Gtk::Widget *
+ {
+ return Glib::wrap(adw_toast_get_custom_title(const_cast<BaseObjectType *>(Glib::unwrap(this))));
+ }
+
+ auto Toast::get_priority() const -> Priority
+ {
+ return static_cast<Priority>(adw_toast_get_priority(const_cast<BaseObjectType *>(Glib::unwrap(this))));
+ }
+
+ auto Toast::get_timeout() const -> unsigned
+ {
+ return adw_toast_get_timeout(const_cast<BaseObjectType *>(Glib::unwrap(this)));
+ }
+
+ auto Toast::get_title() const -> Glib::ustring
+ {
+ return adw_toast_get_title(const_cast<BaseObjectType *>(Glib::unwrap(this)));
+ }
+
+ auto Toast::get_use_markup() const -> bool
+ {
+ return adw_toast_get_use_markup(const_cast<BaseObjectType *>(Glib::unwrap(this)));
+ }
+
+ auto Toast::set_action_name(Glib::ustring value) -> void
+ {
+ adw_toast_set_action_name(Glib::unwrap(this), Glib::c_str_or_nullptr(value));
+ }
+
+ auto Toast::set_action_target_value(Glib::VariantBase const & value) -> void
+ {
+ adw_toast_set_action_target_value(Glib::unwrap(this), const_cast<GVariant *>(Glib::unwrap(&value)));
+ }
+
+ auto Toast::set_button_label(Glib::ustring value) -> void
+ {
+ adw_toast_set_button_label(Glib::unwrap(this), Glib::c_str_or_nullptr(value));
+ }
+
+ auto Toast::set_custom_title(Gtk::Widget * value) -> void
+ {
+ adw_toast_set_custom_title(Glib::unwrap(this), Glib::unwrap(value));
+ }
+
+ auto Toast::set_detailed_action_name(Glib::ustring value) -> void
+ {
+ adw_toast_set_detailed_action_name(Glib::unwrap(this), Glib::c_str_or_nullptr(value));
+ }
+
+ auto Toast::set_priority(Priority value) -> void
+ {
+ adw_toast_set_priority(Glib::unwrap(this), static_cast<AdwToastPriority>(value));
+ }
+
+ auto Toast::set_timeout(unsigned value) -> void
+ {
+ adw_toast_set_timeout(Glib::unwrap(this), value);
+ }
+
+ auto Toast::set_title(Glib::ustring value) -> void
+ {
+ adw_toast_set_title(Glib::unwrap(this), Glib::c_str_or_nullptr(value));
+ }
+
+ auto Toast::set_use_markup(bool value) -> void
+ {
+ adw_toast_set_use_markup(Glib::unwrap(this), value);
+ }
+
+ auto Toast::property_action_name() -> Glib::PropertyProxy<Glib::ustring>
+ {
+ return helpers::make_property_proxy<Glib::ustring>(*this, "action-name");
+ }
+
+ auto Toast::property_action_target() -> Glib::PropertyProxy<Glib::VariantBase>
+ {
+ return helpers::make_property_proxy<Glib::VariantBase>(*this, "action-target");
+ }
+
+ auto Toast::property_button_label() -> Glib::PropertyProxy<Glib::ustring>
+ {
+ return helpers::make_property_proxy<Glib::ustring>(*this, "button-label");
+ }
+
+ auto Toast::property_custom_title() -> Glib::PropertyProxy<Gtk::Widget *>
+ {
+ return helpers::make_property_proxy<Gtk::Widget *>(*this, "custom-title");
+ }
+
+ auto Toast::property_priority() -> Glib::PropertyProxy<Priority>
+ {
+ return helpers::make_property_proxy<Priority>(*this, "priority");
+ }
+
+ auto Toast::property_timeout() -> Glib::PropertyProxy<unsigned>
+ {
+ return helpers::make_property_proxy<unsigned>(*this, "timeout");
+ }
+
+ auto Toast::property_title() -> Glib::PropertyProxy<Glib::ustring>
+ {
+ return helpers::make_property_proxy<Glib::ustring>(*this, "title");
+ }
+
+ auto Toast::property_use_markup() -> Glib::PropertyProxy<bool>
+ {
+ return helpers::make_property_proxy<bool>(*this, "use-markup");
+ }
+
+ auto Toast::signal_button_clicked() -> Glib::SignalProxy<void()>
+ {
+ return Glib::SignalProxy<void()>{this, &Toast_signal_button_clicked_info};
+ }
+
+ auto Toast::signal_dismissed() -> Glib::SignalProxy<void()>
+ {
+ return Glib::SignalProxy<void()>{this, &Toast_signal_dismissed_info};
+ }
+
} // namespace turns::adw
namespace Glib