atspi_common/events/
document.rs

1use crate::events::{DBusInterface, DBusMatchRule, DBusMember, RegistryEventString};
2#[cfg(feature = "wrappers")]
3use crate::{error::AtspiError, EventProperties};
4
5#[cfg(feature = "zbus")]
6use zbus::message::Header;
7
8/// An event triggered by the completion of a document load action.
9/// For example: a web page has finished loading its initial payload, or
10/// `LibreOffice` has loaded a document from disk.
11#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
12pub struct LoadCompleteEvent {
13	/// The [`crate::ObjectRef`] which the event applies to.
14	pub item: crate::events::ObjectRef,
15}
16
17/// An event triggered by a reloading of a document.
18/// For example: pressing F5, or `Control + r` will reload a page in a web browser.
19#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
20pub struct ReloadEvent {
21	/// The [`crate::ObjectRef`] which the event applies to.
22	pub item: crate::events::ObjectRef,
23}
24
25/// An event triggered by the cancelling of a document load.
26/// For example: during the loading of a large web page, a user may press `Escape` to stop loading the page.
27#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
28pub struct LoadStoppedEvent {
29	/// The [`crate::ObjectRef`] which the event applies to.
30	pub item: crate::events::ObjectRef,
31}
32
33#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
34pub struct ContentChangedEvent {
35	/// The [`crate::ObjectRef`] which the event applies to.
36	pub item: crate::events::ObjectRef,
37}
38
39#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
40pub struct AttributesChangedEvent {
41	/// The [`crate::ObjectRef`] which the event applies to.
42	pub item: crate::events::ObjectRef,
43}
44
45/// The focused page has changed.
46///
47/// This event is usually sent only by document readers, signaling
48/// that the _physical page equivalent is now different.
49/// This event does not encode _which_ page is the new one, only that a new page is now the primary
50/// one.
51///
52/// See `atspi_proxies::document::DocumentProxy::current_page_number` to actively find the
53/// page number.
54#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
55pub struct PageChangedEvent {
56	/// The [`crate::ObjectRef`] which the event applies to.
57	pub item: crate::events::ObjectRef,
58}
59
60impl_member_interface_registry_string_and_match_rule_for_event!(
61	LoadCompleteEvent,
62	"LoadComplete",
63	"org.a11y.atspi.Event.Document",
64	"document:load-complete",
65	"type='signal',interface='org.a11y.atspi.Event.Document',member='LoadComplete'"
66);
67
68impl_member_interface_registry_string_and_match_rule_for_event!(
69	ReloadEvent,
70	"Reload",
71	"org.a11y.atspi.Event.Document",
72	"document:reload",
73	"type='signal',interface='org.a11y.atspi.Event.Document',member='LoadStopped'"
74);
75
76impl_member_interface_registry_string_and_match_rule_for_event!(
77	LoadStoppedEvent,
78	"LoadStopped",
79	"org.a11y.atspi.Event.Document",
80	"document:load-stopped",
81	"type='signal',interface='org.a11y.atspi.Event.Document',member='LoadStopped'"
82);
83
84// TODO confirm registry event string, not found in grep at at-spi2-core
85impl_member_interface_registry_string_and_match_rule_for_event!(
86	ContentChangedEvent,
87	"ContentChanged",
88	"org.a11y.atspi.Event.Document",
89	"document:content-changed",
90	"type='signal',interface='org.a11y.atspi.Event.Document',member='ContentChanged'"
91);
92
93impl_member_interface_registry_string_and_match_rule_for_event!(
94	AttributesChangedEvent,
95	"AttributesChanged",
96	"org.a11y.atspi.Event.Document",
97	"document:attributes-changed",
98	"type='signal',interface='org.a11y.atspi.Event.Document',member='AttributesChanged'"
99);
100
101impl_member_interface_registry_string_and_match_rule_for_event!(
102	PageChangedEvent,
103	"PageChanged",
104	"org.a11y.atspi.Event.Document",
105	"document:page-changed",
106	"type='signal',interface='org.a11y.atspi.Event.Document',member='PageChanged'"
107);
108
109impl_event_type_properties_for_event!(LoadCompleteEvent);
110
111event_test_cases!(LoadCompleteEvent);
112impl_to_dbus_message!(LoadCompleteEvent);
113impl_from_dbus_message!(LoadCompleteEvent);
114impl_event_properties!(LoadCompleteEvent);
115impl_from_object_ref!(LoadCompleteEvent);
116
117impl_event_type_properties_for_event!(ReloadEvent);
118event_test_cases!(ReloadEvent);
119impl_to_dbus_message!(ReloadEvent);
120impl_from_dbus_message!(ReloadEvent);
121impl_event_properties!(ReloadEvent);
122impl_from_object_ref!(ReloadEvent);
123
124impl_event_type_properties_for_event!(LoadStoppedEvent);
125event_test_cases!(LoadStoppedEvent);
126impl_to_dbus_message!(LoadStoppedEvent);
127impl_from_dbus_message!(LoadStoppedEvent);
128impl_event_properties!(LoadStoppedEvent);
129impl_from_object_ref!(LoadStoppedEvent);
130
131impl_event_type_properties_for_event!(ContentChangedEvent);
132event_test_cases!(ContentChangedEvent);
133impl_to_dbus_message!(ContentChangedEvent);
134impl_from_dbus_message!(ContentChangedEvent);
135impl_event_properties!(ContentChangedEvent);
136impl_from_object_ref!(ContentChangedEvent);
137
138impl_event_type_properties_for_event!(AttributesChangedEvent);
139event_test_cases!(AttributesChangedEvent);
140impl_to_dbus_message!(AttributesChangedEvent);
141impl_from_dbus_message!(AttributesChangedEvent);
142impl_event_properties!(AttributesChangedEvent);
143impl_from_object_ref!(AttributesChangedEvent);
144
145impl_event_type_properties_for_event!(PageChangedEvent);
146event_test_cases!(PageChangedEvent);
147impl_to_dbus_message!(PageChangedEvent);
148impl_from_dbus_message!(PageChangedEvent);
149impl_event_properties!(PageChangedEvent);
150impl_from_object_ref!(PageChangedEvent);
151
152impl_msg_conversion_ext_for_target_type!(LoadCompleteEvent);
153impl_msg_conversion_ext_for_target_type!(ReloadEvent);
154impl_msg_conversion_ext_for_target_type!(LoadStoppedEvent);
155impl_msg_conversion_ext_for_target_type!(ContentChangedEvent);
156impl_msg_conversion_ext_for_target_type!(AttributesChangedEvent);
157impl_msg_conversion_ext_for_target_type!(PageChangedEvent);
158
159impl_msg_conversion_for_types_built_from_object_ref!(LoadCompleteEvent);
160impl_msg_conversion_for_types_built_from_object_ref!(ReloadEvent);
161impl_msg_conversion_for_types_built_from_object_ref!(LoadStoppedEvent);
162impl_msg_conversion_for_types_built_from_object_ref!(ContentChangedEvent);
163impl_msg_conversion_for_types_built_from_object_ref!(AttributesChangedEvent);
164impl_msg_conversion_for_types_built_from_object_ref!(PageChangedEvent);