atspi_proxies/application.rs
1//! # [`ApplicationProxy`]
2//!
3//! A handle for a remote object implementing the `org.a11y.atspi.Application`
4//! interface.
5//!
6//! `Application` is the interface which is implemented by each accessible application.
7//! It is implemented for the root object of an application.
8//!
9//! It provides information about the application itself.
10//!
11//! ## Status
12//!
13//! A number of methods and properties of this interface have fallen in disuse or
14//! are / may be deprecated in the future.
15//!
16//! * [`id`]
17//! * [`set_id`]
18//! * [`atspi_version`]
19//! * [`get_locale`]
20//!
21//! [`toolkit_name`] and [`version`] are still in use.
22//!
23//! See the documentation of the individual methods and properties for details.
24//!
25//! [`ApplicationProxy`]: crate::application::ApplicationProxy
26//! [`id`]: ApplicationProxy#method.id
27//! [`set_id`]: ApplicationProxy#method.set_id
28//! [`atspi_version`]: ApplicationProxy#method.atspi_version
29//! [`get_locale`]: ApplicationProxy#method.get_locale
30//! [`toolkit_name`]: ApplicationProxy#method.toolkit_name
31//! [`version`]: ApplicationProxy#method.version
32//!
33
34/// `Application` is the interface which is implemented by each accessible application.
35/// It is implemented for the root object of an application.
36///
37/// It provides information about the application itself.
38///
39/// ## Status
40///
41/// A number of methods and properties of this interface have fallen in disuse or
42/// are / may be deprecated in the future.
43///
44/// * [`id`]
45/// * [`set_id`]
46/// * [`atspi_version`]
47/// * [`get_locale`]
48///
49/// [`toolkit_name`] and [`version`] are still in use.
50///
51/// See the documentation of the individual methods and properties for details.
52///
53/// [`id`]: ApplicationProxy#method.id
54/// [`set_id`]: ApplicationProxy#method.set_id
55/// [`atspi_version`]: ApplicationProxy#method.atspi_version
56/// [`get_locale`]: ApplicationProxy#method.get_locale
57/// [`toolkit_name`]: ApplicationProxy#method.toolkit_name
58/// [`version`]: ApplicationProxy#method.version
59///
60#[zbus::proxy(interface = "org.a11y.atspi.Application", assume_defaults = true)]
61pub trait Application {
62 /// Method to retrieve the application's locale.
63 ///
64 /// ## Deprecation
65 ///
66 /// This method is likely to be removed in the future.
67 ///
68 /// There is no need to call this method because there is also
69 /// [`locale`] which offers the same functionality
70 /// at the accessible object level.
71 ///
72 /// See also: [Orca issues: "Plans for per-object locale?"](<https://gitlab.gnome.org/GNOME/orca/-/issues/260>)
73 ///
74 /// member: "GetLocale", type: method
75 ///
76 /// [`locale`]: crate::accessible::AccessibleProxy#method.locale
77 fn get_locale(&self, lctype: u32) -> zbus::Result<String>;
78
79 /// retrieves AT-SPI2 version.
80 ///
81 /// Applications are advised to return "2.1" here, thus that is what
82 /// users should expect.
83 ///
84 /// This was intended to be the version of the atspi interfaces
85 /// that the application supports, but atspi will probably move to
86 /// using versioned interface names instead.
87 ///
88 /// member: "AtspiVersion", type: property
89 #[zbus(property)]
90 fn atspi_version(&self) -> zbus::Result<String>;
91
92 /// Retrieve numerical id of the application.
93 ///
94 /// The 'id' is set an arbitrary numerical id when
95 /// an application registers with the registry.
96 ///
97 /// When a freshly-started application uses the
98 /// [`org.a11y.atspi.Socket`]'s [`embed`] method to
99 /// register with the accessibility registry, the
100 /// registry will set a numerical id on the application.
101 ///
102 /// ## status
103 ///
104 /// The property has fallen in disuse.
105 ///
106 /// As per [AT-SPI2-CORE issue #82](<https://gitlab.gnome.org/GNOME/at-spi2-core/-/issues/82>)
107 /// it may turn out that this id is not actually used subsequently.
108 /// This is a remnant of the time when registryd actually had to
109 /// make up identifiers for each application.
110 /// With DBus, however, it is the bus that assigns unique names to applications that
111 /// connect to it.
112 ///
113 /// Applications or toolkits can remember the `Id` passed when the accessibility
114 /// registry sets this property, and return it back when the property is read.
115 ///
116 /// member: "Id", type: property
117 ///
118 /// [`embed`]: crate::socket::SocketProxy#method.embed
119 /// [`org.a11y.atspi.Socket`]: crate::socket::SocketProxy
120 #[zbus(property)]
121 fn id(&self) -> zbus::Result<i32>;
122
123 /// Set ID of the application.
124 ///
125 /// This method is used by the accessibility registry to set the
126 /// application's id.
127 ///
128 /// ## status
129 ///
130 /// The property has fallen in disuse.
131 ///
132 /// See [`id`] for details.
133 ///
134 /// member: "Id", type: property
135 ///
136 /// [`id`]: crate::application::ApplicationProxy#method.id
137 #[zbus(property)]
138 fn set_id(&self, value: i32) -> zbus::Result<()>;
139
140 /// Retrieves the name of the toolkit used to implement the application's
141 /// user interface.
142 ///
143 /// member: "ToolkitName", type: property
144 #[zbus(property)]
145 fn toolkit_name(&self) -> zbus::Result<String>;
146
147 /// Returns the version of the toolkit used to implement the
148 /// application's user interface.
149 ///
150 /// member: "Version", type: property
151 #[zbus(property)]
152 fn version(&self) -> zbus::Result<String>;
153}