pub struct Application { /* private fields */ }
Expand description
GApplication
is the core class for application support.
A GApplication
is the foundation of an application. It wraps some
low-level platform-specific services and is intended to act as the
foundation for higher-level application classes such as
GtkApplication
or MxApplication
. In general, you should not use
this class outside of a higher level framework.
GApplication
provides convenient life-cycle management by maintaining
a “use count” for the primary application instance. The use count can
be changed using ApplicationExtManual::hold()
and
[ApplicationExtManual::release()
][crate::prelude::ApplicationExtManual::release()]. If it drops to zero, the application
exits. Higher-level classes such as GtkApplication
employ the use count
to ensure that the application stays alive as long as it has any opened
windows.
Another feature that GApplication
(optionally) provides is process
uniqueness. Applications can make use of this functionality by
providing a unique application ID. If given, only one application
with this ID can be running at a time per session. The session
concept is platform-dependent, but corresponds roughly to a graphical
desktop login. When your application is launched again, its
arguments are passed through platform communication to the already
running program. The already running instance of the program is
called the “primary instance”; for non-unique applications this is
always the current instance. On Linux, the D-Bus session bus
is used for communication.
The use of GApplication
differs from some other commonly-used
uniqueness libraries (such as libunique) in important ways. The
application is not expected to manually register itself and check
if it is the primary instance. Instead, the main() function of a
GApplication
should do very little more than instantiating the
application instance, possibly connecting signal handlers, then
calling ApplicationExtManual::run()
. All checks for uniqueness are done
internally. If the application is the primary instance then the
startup signal is emitted and the mainloop runs. If the application
is not the primary instance then a signal is sent to the primary
instance and ApplicationExtManual::run()
promptly returns. See the code
examples below.
If used, the expected form of an application identifier is the
same as that of a
D-Bus well-known bus name.
Examples include: com.example.MyApp
, org.example.internal_apps.Calculator
,
org._7_zip.Archiver
.
For details on valid application identifiers, see id_is_valid()
.
On Linux, the application identifier is claimed as a well-known bus name
on the user’s session bus. This means that the uniqueness of your
application is scoped to the current session. It also means that your
application may provide additional services (through registration of other
object paths) at that bus name. The registration of these object paths
should be done with the shared GDBus session bus. Note that due to the
internal architecture of GDBus, method calls can be dispatched at any time
(even if a main loop is not running). For this reason, you must ensure that
any object paths that you wish to register are registered before #GApplication
attempts to acquire the bus name of your application (which happens in
ApplicationExt::register()
). Unfortunately, this means that you cannot
use is-remote
to decide if you want to register
object paths.
GApplication
also implements the ActionGroup
and ActionMap
interfaces and lets you easily export actions by adding them with
ActionMapExt::add_action()
. When invoking an action by calling
ActionGroupExt::activate_action()
on the application, it is always
invoked in the primary instance. The actions are also exported on
the session bus, and GIO provides the DBusActionGroup
wrapper to
conveniently access them remotely. GIO provides a DBusMenuModel
wrapper
for remote access to exported MenuModel
s.
Note: Due to the fact that actions are exported on the session bus,
using maybe
parameters is not supported, since D-Bus does not support
maybe
types.
There is a number of different entry points into a GApplication
:
-
via ‘Activate’ (i.e. just starting the application)
-
via ‘Open’ (i.e. opening some files)
-
by handling a command-line
-
via activating an action
The startup
signal lets you handle the application
initialization for all of these in a single place.
Regardless of which of these entry points is used to start the
application, GApplication
passes some ‘platform data’ from the
launching instance to the primary instance, in the form of a
glib::Variant
dictionary mapping strings to variants. To use platform
data, override the ApplicationImpl::before_emit()
or
ApplicationImpl::after_emit()
virtual functions
in your GApplication
subclass. When dealing with
ApplicationCommandLine
objects, the platform data is
directly available via ApplicationCommandLineExt::cwd()
,
ApplicationCommandLineExt::environ()
and
ApplicationCommandLineExt::platform_data()
.
As the name indicates, the platform data may vary depending on the
operating system, but it always includes the current directory (key
cwd
), and optionally the environment (ie the set of environment
variables and their values) of the calling process (key environ
).
The environment is only added to the platform data if the
G_APPLICATION_SEND_ENVIRONMENT
flag is set. GApplication
subclasses
can add their own platform data by overriding the
vfunc::Gio::Application::add_platform_data
virtual function. For instance,
GtkApplication
adds startup notification data in this way.
To parse commandline arguments you may handle the
command-line
signal or override the
vfunc::Gio::Application::local_command_line
virtual function, to parse them in
either the primary instance or the local instance, respectively.
For an example of opening files with a GApplication
, see
gapplication-example-open.c.
For an example of using actions with GApplication
, see
gapplication-example-actions.c.
For an example of using extra D-Bus hooks with GApplication
, see
gapplication-example-dbushooks.c.
§Properties
§action-group
The group of actions that the application exports.
Writeable
§application-id
The unique identifier for the application.
Readable | Writeable | Construct
§flags
Flags specifying the behaviour of the application.
Readable | Writeable
§inactivity-timeout
Time (in milliseconds) to stay alive after becoming idle.
Readable | Writeable
§is-busy
Whether the application is currently marked as busy through g_application_mark_busy() or g_application_bind_busy_property().
Readable
§is-registered
Whether ApplicationExt::register()
has been called.
Readable
§is-remote
Whether this application instance is remote.
Readable
§resource-base-path
The base resource path for the application.
Readable | Writeable
§version
The human-readable version number of the application.
Readable | Writeable
§Signals
§activate
The ::activate signal is emitted on the primary instance when an activation occurs. See g_application_activate().
§command-line
The ::command-line signal is emitted on the primary instance when a commandline is not handled locally. See g_application_run() and the #GApplicationCommandLine documentation for more information.
§handle-local-options
The ::handle-local-options signal is emitted on the local instance after the parsing of the commandline options has occurred.
You can add options to be recognised during commandline option parsing using g_application_add_main_option_entries() and g_application_add_option_group().
Signal handlers can inspect @options (along with values pointed to from the @arg_data of an installed #GOptionEntrys) in order to decide to perform certain actions, including direct local handling (which may be useful for options like –version).
In the event that the application is marked
ApplicationFlags::HANDLES_COMMAND_LINE
the “normal processing” will
send the @options dictionary to the primary instance where it can be
read with g_application_command_line_get_options_dict(). The signal
handler can modify the dictionary before returning, and the
modified dictionary will be sent.
In the event that ApplicationFlags::HANDLES_COMMAND_LINE
is not set,
“normal processing” will treat the remaining uncollected command
line arguments as filenames or URIs. If there are no arguments,
the application is activated by g_application_activate(). One or
more arguments results in a call to g_application_open().
If you want to handle the local commandline arguments for yourself
by converting them to calls to g_application_open() or
g_action_group_activate_action() then you must be sure to register
the application first. You should probably not call
g_application_activate() for yourself, however: just return -1 and
allow the default handler to do it for you. This will ensure that
the --gapplication-service
switch works properly (i.e. no activation
in that case).
Note that this signal is emitted from the default implementation of local_command_line(). If you override that function and don’t chain up then this signal will never be emitted.
You can override local_command_line() if you need more powerful capabilities than what is provided here, but this should not normally be required.
§name-lost
The ::name-lost signal is emitted only on the registered primary instance
when a new instance has taken over. This can only happen if the application
is using the ApplicationFlags::ALLOW_REPLACEMENT
flag.
The default handler for this signal calls g_application_quit().
§open
The ::open signal is emitted on the primary instance when there are files to open. See g_application_open() for more information.
§shutdown
The ::shutdown signal is emitted only on the registered primary instance immediately after the main loop terminates.
§startup
The ::startup signal is emitted on the primary instance immediately after registration. See g_application_register().
ActionGroup
§action-added
Signals that a new action was just added to the group.
This signal is emitted after the action has been added and is now visible.
Detailed
§action-enabled-changed
Signals that the enabled status of the named action has changed.
Detailed
§action-removed
Signals that an action is just about to be removed from the group.
This signal is emitted before the action is removed, so the action is still visible and can be queried from the signal handler.
Detailed
§action-state-changed
Signals that the state of the named action has changed.
Detailed
§Implements
ApplicationExt
, [trait@glib::ObjectExt
], ActionGroupExt
, ActionMapExt
, ApplicationExtManual
, ActionMapExtManual
GLib type: GObject with reference counted clone semantics.
Implementations§
Source§impl Application
impl Application
pub const NONE: Option<&'static Application> = None
Sourcepub fn new(application_id: Option<&str>, flags: ApplicationFlags) -> Application
pub fn new(application_id: Option<&str>, flags: ApplicationFlags) -> Application
Creates a new #GApplication instance.
If non-None
, the application id must be valid. See
g_application_id_is_valid().
If no application ID is given then some features of #GApplication (most notably application uniqueness) will be disabled.
§application_id
the application id
§flags
the application flags
§Returns
a new #GApplication instance
Sourcepub fn builder() -> ApplicationBuilder
pub fn builder() -> ApplicationBuilder
Creates a new builder-pattern struct instance to construct Application
objects.
This method returns an instance of ApplicationBuilder
which can be used to create Application
objects.
Sourcepub fn default() -> Option<Application>
pub fn default() -> Option<Application>
Returns the default #GApplication instance for this process.
Normally there is only one #GApplication per process and it becomes the default when it is created. You can exercise more control over this by using g_application_set_default().
If there is no default application then None
is returned.
§Returns
the default application for this process, or None
Sourcepub fn id_is_valid(application_id: &str) -> bool
pub fn id_is_valid(application_id: &str) -> bool
Checks if @application_id is a valid application identifier.
A valid ID is required for calls to g_application_new() and g_application_set_application_id().
Application identifiers follow the same format as D-Bus well-known bus names. For convenience, the restrictions on application identifiers are reproduced here:
-
Application identifiers are composed of 1 or more elements separated by a period (
.
) character. All elements must contain at least one character. -
Each element must only contain the ASCII characters
[A-Z][a-z][0-9]_-
, with-
discouraged in new application identifiers. Each element must not begin with a digit. -
Application identifiers must contain at least one
.
(period) character (and thus at least two elements). -
Application identifiers must not begin with a
.
(period) character. -
Application identifiers must not exceed 255 characters.
Note that the hyphen (-
) character is allowed in application identifiers,
but is problematic or not allowed in various specifications and APIs that
refer to D-Bus, such as
Flatpak application IDs,
the
DBusActivatable
interface in the Desktop Entry Specification,
and the convention that an application’s “main” interface and object path
resemble its application identifier and bus name. To avoid situations that
require special-case handling, it is recommended that new application
identifiers consistently replace hyphens with underscores.
Like D-Bus interface names, application identifiers should start with the reversed DNS domain name of the author of the interface (in lower-case), and it is conventional for the rest of the application identifier to consist of words run together, with initial capital letters.
As with D-Bus interface names, if the author’s DNS domain name contains
hyphen/minus characters they should be replaced by underscores, and if it
contains leading digits they should be escaped by prepending an underscore.
For example, if the owner of 7-zip.org used an application identifier for an
archiving application, it might be named org._7_zip.Archiver
.
§application_id
a potential application identifier
§Returns
true
if @application_id is valid
Trait Implementations§
Source§impl Clone for Application
impl Clone for Application
Source§impl Debug for Application
impl Debug for Application
Source§impl Default for Application
impl Default for Application
Source§impl HasParamSpec for Application
impl HasParamSpec for Application
type ParamSpec = ParamSpecObject
Source§type SetValue = Application
type SetValue = Application
type BuilderFn = fn(_: &str) -> ParamSpecObjectBuilder<'_, Application>
fn param_spec_builder() -> Self::BuilderFn
Source§impl Hash for Application
impl Hash for Application
Source§impl<T: ApplicationImpl> IsSubclassable<T> for Application
impl<T: ApplicationImpl> IsSubclassable<T> for Application
Source§fn class_init(class: &mut Class<Self>)
fn class_init(class: &mut Class<Self>)
Source§fn instance_init(instance: &mut InitializingObject<T>)
fn instance_init(instance: &mut InitializingObject<T>)
Source§impl Ord for Application
impl Ord for Application
Source§fn cmp(&self, other: &Self) -> Ordering
fn cmp(&self, other: &Self) -> Ordering
Comparison for two GObjects.
Compares the memory addresses of the provided objects.
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl ParentClassIs for Application
impl ParentClassIs for Application
Source§impl<OT: ObjectType> PartialEq<OT> for Application
impl<OT: ObjectType> PartialEq<OT> for Application
Source§impl<OT: ObjectType> PartialOrd<OT> for Application
impl<OT: ObjectType> PartialOrd<OT> for Application
Source§impl StaticType for Application
impl StaticType for Application
Source§fn static_type() -> Type
fn static_type() -> Type
Self
.impl Eq for Application
impl IsA<ActionGroup> for Application
impl IsA<ActionMap> for Application
Auto Trait Implementations§
impl Freeze for Application
impl RefUnwindSafe for Application
impl !Send for Application
impl !Sync for Application
impl Unpin for Application
impl UnwindSafe for Application
Blanket Implementations§
Source§impl<O> ActionGroupExt for Owhere
O: IsA<ActionGroup>,
impl<O> ActionGroupExt for Owhere
O: IsA<ActionGroup>,
Source§fn action_added(&self, action_name: &str)
fn action_added(&self, action_name: &str)
action-added
signal on @self. Read moreSource§fn action_enabled_changed(&self, action_name: &str, enabled: bool)
fn action_enabled_changed(&self, action_name: &str, enabled: bool)
action-enabled-changed
signal on @self. Read moreSource§fn action_removed(&self, action_name: &str)
fn action_removed(&self, action_name: &str)
action-removed
signal on @self. Read moreSource§fn action_state_changed(&self, action_name: &str, state: &Variant)
fn action_state_changed(&self, action_name: &str, state: &Variant)
action-state-changed
signal on @self. Read moreSource§fn activate_action(&self, action_name: &str, parameter: Option<&Variant>)
fn activate_action(&self, action_name: &str, parameter: Option<&Variant>)
Source§fn change_action_state(&self, action_name: &str, value: &Variant)
fn change_action_state(&self, action_name: &str, value: &Variant)
Source§fn is_action_enabled(&self, action_name: &str) -> bool
fn is_action_enabled(&self, action_name: &str) -> bool
Source§fn action_parameter_type(&self, action_name: &str) -> Option<VariantType>
fn action_parameter_type(&self, action_name: &str) -> Option<VariantType>
Source§fn action_state(&self, action_name: &str) -> Option<Variant>
fn action_state(&self, action_name: &str) -> Option<Variant>
Source§fn action_state_hint(&self, action_name: &str) -> Option<Variant>
fn action_state_hint(&self, action_name: &str) -> Option<Variant>
Source§fn action_state_type(&self, action_name: &str) -> Option<VariantType>
fn action_state_type(&self, action_name: &str) -> Option<VariantType>
Source§fn has_action(&self, action_name: &str) -> bool
fn has_action(&self, action_name: &str) -> bool
Source§fn connect_action_added<F: Fn(&Self, &str) + 'static>(
&self,
detail: Option<&str>,
f: F,
) -> SignalHandlerId
fn connect_action_added<F: Fn(&Self, &str) + 'static>( &self, detail: Option<&str>, f: F, ) -> SignalHandlerId
Source§fn connect_action_enabled_changed<F: Fn(&Self, &str, bool) + 'static>(
&self,
detail: Option<&str>,
f: F,
) -> SignalHandlerId
fn connect_action_enabled_changed<F: Fn(&Self, &str, bool) + 'static>( &self, detail: Option<&str>, f: F, ) -> SignalHandlerId
Source§fn connect_action_removed<F: Fn(&Self, &str) + 'static>(
&self,
detail: Option<&str>,
f: F,
) -> SignalHandlerId
fn connect_action_removed<F: Fn(&Self, &str) + 'static>( &self, detail: Option<&str>, f: F, ) -> SignalHandlerId
Source§fn connect_action_state_changed<F: Fn(&Self, &str, &Variant) + 'static>(
&self,
detail: Option<&str>,
f: F,
) -> SignalHandlerId
fn connect_action_state_changed<F: Fn(&Self, &str, &Variant) + 'static>( &self, detail: Option<&str>, f: F, ) -> SignalHandlerId
Source§impl<O> ActionMapExt for O
impl<O> ActionMapExt for O
Source§impl<O> ActionMapExtManual for O
impl<O> ActionMapExtManual for O
Source§fn add_action_entries(
&self,
entries: impl IntoIterator<Item = ActionEntry<Self>>,
)
fn add_action_entries( &self, entries: impl IntoIterator<Item = ActionEntry<Self>>, )
SimpleAction
instances and adding them to a ActionMap
. Read moreSource§impl<O> ApplicationExt for Owhere
O: IsA<Application>,
impl<O> ApplicationExt for Owhere
O: IsA<Application>,
Source§fn add_main_option(
&self,
long_name: &str,
short_name: Char,
flags: OptionFlags,
arg: OptionArg,
description: &str,
arg_description: Option<&str>,
)
fn add_main_option( &self, long_name: &str, short_name: Char, flags: OptionFlags, arg: OptionArg, description: &str, arg_description: Option<&str>, )
Source§fn dbus_connection(&self) -> Option<DBusConnection>
fn dbus_connection(&self) -> Option<DBusConnection>
Source§fn dbus_object_path(&self) -> Option<GString>
fn dbus_object_path(&self) -> Option<GString>
Source§fn flags(&self) -> ApplicationFlags
fn flags(&self) -> ApplicationFlags
Source§fn inactivity_timeout(&self) -> u32
fn inactivity_timeout(&self) -> u32
Source§fn is_busy(&self) -> bool
fn is_busy(&self) -> bool
Source§fn is_registered(&self) -> bool
fn is_registered(&self) -> bool
Source§fn resource_base_path(&self) -> Option<GString>
fn resource_base_path(&self) -> Option<GString>
Source§fn version(&self) -> Option<GString>
fn version(&self) -> Option<GString>
v2_80
only.Source§fn register(
&self,
cancellable: Option<&impl IsA<Cancellable>>,
) -> Result<(), Error>
fn register( &self, cancellable: Option<&impl IsA<Cancellable>>, ) -> Result<(), Error>
Source§fn send_notification(&self, id: Option<&str>, notification: &Notification)
fn send_notification(&self, id: Option<&str>, notification: &Notification)
Source§fn set_application_id(&self, application_id: Option<&str>)
fn set_application_id(&self, application_id: Option<&str>)
Source§fn set_default(&self)
fn set_default(&self)
Source§fn set_flags(&self, flags: ApplicationFlags)
fn set_flags(&self, flags: ApplicationFlags)
Source§fn set_inactivity_timeout(&self, inactivity_timeout: u32)
fn set_inactivity_timeout(&self, inactivity_timeout: u32)
Source§fn set_option_context_description(&self, description: Option<&str>)
fn set_option_context_description(&self, description: Option<&str>)
Source§fn set_option_context_parameter_string(&self, parameter_string: Option<&str>)
fn set_option_context_parameter_string(&self, parameter_string: Option<&str>)
Source§fn set_option_context_summary(&self, summary: Option<&str>)
fn set_option_context_summary(&self, summary: Option<&str>)
Source§fn set_resource_base_path(&self, resource_path: Option<&str>)
fn set_resource_base_path(&self, resource_path: Option<&str>)
Source§fn set_version(&self, version: &str)
fn set_version(&self, version: &str)
v2_80
only.--version
command line argument Read moreSource§fn unbind_busy_property(&self, object: &impl IsA<Object>, property: &str)
fn unbind_busy_property(&self, object: &impl IsA<Object>, property: &str)
Source§fn withdraw_notification(&self, id: &str)
fn withdraw_notification(&self, id: &str)
Source§fn connect_activate<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId
fn connect_activate<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId
Source§fn connect_command_line<F: Fn(&Self, &ApplicationCommandLine) -> i32 + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_command_line<F: Fn(&Self, &ApplicationCommandLine) -> i32 + 'static>( &self, f: F, ) -> SignalHandlerId
Source§fn connect_handle_local_options<F: Fn(&Self, &VariantDict) -> i32 + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_handle_local_options<F: Fn(&Self, &VariantDict) -> i32 + 'static>( &self, f: F, ) -> SignalHandlerId
Source§fn connect_name_lost<F: Fn(&Self) -> bool + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_name_lost<F: Fn(&Self) -> bool + 'static>( &self, f: F, ) -> SignalHandlerId
v2_60
only.ApplicationFlags::ALLOW_REPLACEMENT
flag. Read moreSource§fn connect_shutdown<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId
fn connect_shutdown<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId
Source§fn connect_startup<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId
fn connect_startup<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId
fn connect_application_id_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
fn connect_flags_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId
fn connect_inactivity_timeout_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
fn connect_is_busy_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
fn connect_is_registered_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
fn connect_is_remote_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
fn connect_resource_base_path_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
Source§fn connect_version_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_version_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId
v2_80
only.Source§impl<O> ApplicationExtManual for Owhere
O: IsA<Application>,
impl<O> ApplicationExtManual for Owhere
O: IsA<Application>,
fn run_with_args<S: AsRef<str>>(&self, args: &[S]) -> ExitCode
Source§fn connect_open<F: Fn(&Self, &[File], &str) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_open<F: Fn(&Self, &[File], &str) + 'static>( &self, f: F, ) -> SignalHandlerId
Source§fn hold(&self) -> ApplicationHoldGuard
fn hold(&self) -> ApplicationHoldGuard
Source§fn mark_busy(&self) -> ApplicationBusyGuard
fn mark_busy(&self) -> ApplicationBusyGuard
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Cast for Twhere
T: ObjectType,
impl<T> Cast for Twhere
T: ObjectType,
Source§fn upcast<T>(self) -> Twhere
T: ObjectType,
Self: IsA<T>,
fn upcast<T>(self) -> Twhere
T: ObjectType,
Self: IsA<T>,
T
. Read moreSource§fn upcast_ref<T>(&self) -> &Twhere
T: ObjectType,
Self: IsA<T>,
fn upcast_ref<T>(&self) -> &Twhere
T: ObjectType,
Self: IsA<T>,
T
. Read moreSource§fn downcast<T>(self) -> Result<T, Self>where
T: ObjectType,
Self: MayDowncastTo<T>,
fn downcast<T>(self) -> Result<T, Self>where
T: ObjectType,
Self: MayDowncastTo<T>,
T
. Read moreSource§fn downcast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
Self: MayDowncastTo<T>,
fn downcast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
Self: MayDowncastTo<T>,
T
. Read moreSource§fn dynamic_cast<T>(self) -> Result<T, Self>where
T: ObjectType,
fn dynamic_cast<T>(self) -> Result<T, Self>where
T: ObjectType,
T
. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while upcast
will do many checks at compile-time already. downcast
will
perform the same checks at runtime as dynamic_cast
, but will also ensure some amount of
compile-time safety. Read moreSource§fn dynamic_cast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
fn dynamic_cast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
T
. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while downcast
and upcast
will do many checks at compile-time already. Read moreSource§unsafe fn unsafe_cast<T>(self) -> Twhere
T: ObjectType,
unsafe fn unsafe_cast<T>(self) -> Twhere
T: ObjectType,
T
unconditionally. Read moreSource§unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
T: ObjectType,
unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
T: ObjectType,
&T
unconditionally. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> IntoClosureReturnValue for T
impl<T> IntoClosureReturnValue for T
fn into_closure_return_value(self) -> Option<Value>
Source§impl<U> IsSubclassableExt for Uwhere
U: IsClass + ParentClassIs,
impl<U> IsSubclassableExt for Uwhere
U: IsClass + ParentClassIs,
fn parent_class_init<T>(class: &mut Class<U>)
fn parent_instance_init<T>(instance: &mut InitializingObject<T>)
Source§impl<T> ObjectExt for Twhere
T: ObjectType,
impl<T> ObjectExt for Twhere
T: ObjectType,
Source§fn is<U>(&self) -> boolwhere
U: StaticType,
fn is<U>(&self) -> boolwhere
U: StaticType,
true
if the object is an instance of (can be cast to) T
.Source§fn object_class(&self) -> &Class<Object>
fn object_class(&self) -> &Class<Object>
ObjectClass
of the object. Read moreSource§fn class_of<U>(&self) -> Option<&Class<U>>where
U: IsClass,
fn class_of<U>(&self) -> Option<&Class<U>>where
U: IsClass,
T
. Read moreSource§fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>where
U: IsInterface,
fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>where
U: IsInterface,
T
of the object. Read moreSource§fn set_property_from_value(&self, property_name: &str, value: &Value)
fn set_property_from_value(&self, property_name: &str, value: &Value)
Source§fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])
fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])
Source§fn set_properties_from_value(&self, property_values: &[(&str, Value)])
fn set_properties_from_value(&self, property_values: &[(&str, Value)])
Source§fn property<V>(&self, property_name: &str) -> Vwhere
V: for<'b> FromValue<'b> + 'static,
fn property<V>(&self, property_name: &str) -> Vwhere
V: for<'b> FromValue<'b> + 'static,
property_name
of the object and cast it to the type V. Read moreSource§fn property_value(&self, property_name: &str) -> Value
fn property_value(&self, property_name: &str) -> Value
property_name
of the object. Read moreSource§fn has_property(&self, property_name: &str) -> bool
fn has_property(&self, property_name: &str) -> bool
property_name
.Source§fn has_property_with_type(&self, property_name: &str, type_: Type) -> bool
fn has_property_with_type(&self, property_name: &str, type_: Type) -> bool
property_name
of the given type_
.Source§fn property_type(&self, property_name: &str) -> Option<Type>
fn property_type(&self, property_name: &str) -> Option<Type>
property_name
of this object. Read moreSource§fn find_property(&self, property_name: &str) -> Option<ParamSpec>
fn find_property(&self, property_name: &str) -> Option<ParamSpec>
ParamSpec
of the property property_name
of this object.Source§fn list_properties(&self) -> PtrSlice<ParamSpec>
fn list_properties(&self) -> PtrSlice<ParamSpec>
ParamSpec
of the properties of this object.Source§fn freeze_notify(&self) -> PropertyNotificationFreezeGuard
fn freeze_notify(&self) -> PropertyNotificationFreezeGuard
Source§unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)where
QD: 'static,
unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)where
QD: 'static,
key
. Read moreSource§unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>where
QD: 'static,
unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>where
QD: 'static,
key
. Read moreSource§unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>where
QD: 'static,
unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>where
QD: 'static,
key
. Read moreSource§unsafe fn set_data<QD>(&self, key: &str, value: QD)where
QD: 'static,
unsafe fn set_data<QD>(&self, key: &str, value: QD)where
QD: 'static,
key
. Read moreSource§unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>where
QD: 'static,
unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>where
QD: 'static,
key
. Read moreSource§unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>where
QD: 'static,
unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>where
QD: 'static,
key
. Read moreSource§fn block_signal(&self, handler_id: &SignalHandlerId)
fn block_signal(&self, handler_id: &SignalHandlerId)
Source§fn unblock_signal(&self, handler_id: &SignalHandlerId)
fn unblock_signal(&self, handler_id: &SignalHandlerId)
Source§fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)
fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)
Source§fn stop_signal_emission_by_name(&self, signal_name: &str)
fn stop_signal_emission_by_name(&self, signal_name: &str)
Source§fn connect<F>(
&self,
signal_name: &str,
after: bool,
callback: F,
) -> SignalHandlerId
fn connect<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
signal_name
on this object. Read moreSource§fn connect_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F,
) -> SignalHandlerId
fn connect_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
signal_id
on this object. Read moreSource§fn connect_local<F>(
&self,
signal_name: &str,
after: bool,
callback: F,
) -> SignalHandlerId
fn connect_local<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
signal_name
on this object. Read moreSource§fn connect_local_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F,
) -> SignalHandlerId
fn connect_local_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
signal_id
on this object. Read moreSource§unsafe fn connect_unsafe<F>(
&self,
signal_name: &str,
after: bool,
callback: F,
) -> SignalHandlerId
unsafe fn connect_unsafe<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
signal_name
on this object. Read moreSource§unsafe fn connect_unsafe_id<F>(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
callback: F,
) -> SignalHandlerId
unsafe fn connect_unsafe_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
signal_id
on this object. Read moreSource§fn connect_closure(
&self,
signal_name: &str,
after: bool,
closure: RustClosure,
) -> SignalHandlerId
fn connect_closure( &self, signal_name: &str, after: bool, closure: RustClosure, ) -> SignalHandlerId
signal_name
on this object. Read moreSource§fn connect_closure_id(
&self,
signal_id: SignalId,
details: Option<Quark>,
after: bool,
closure: RustClosure,
) -> SignalHandlerId
fn connect_closure_id( &self, signal_id: SignalId, details: Option<Quark>, after: bool, closure: RustClosure, ) -> SignalHandlerId
signal_id
on this object. Read moreSource§fn watch_closure(&self, closure: &impl AsRef<Closure>)
fn watch_closure(&self, closure: &impl AsRef<Closure>)
closure
to the lifetime of the object. When
the object’s reference count drops to zero, the closure will be
invalidated. An invalidated closure will ignore any calls to
invoke_with_values
, or
invoke
when using Rust closures.Source§fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
Source§fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>
fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>
Self::emit
but takes Value
for the arguments.Source§fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> Rwhere
R: TryFromClosureReturnValue,
Source§fn emit_by_name_with_values(
&self,
signal_name: &str,
args: &[Value],
) -> Option<Value>
fn emit_by_name_with_values( &self, signal_name: &str, args: &[Value], ) -> Option<Value>
Source§fn emit_by_name_with_details<R>(
&self,
signal_name: &str,
details: Quark,
args: &[&dyn ToValue],
) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_by_name_with_details<R>(
&self,
signal_name: &str,
details: Quark,
args: &[&dyn ToValue],
) -> Rwhere
R: TryFromClosureReturnValue,
Source§fn emit_by_name_with_details_and_values(
&self,
signal_name: &str,
details: Quark,
args: &[Value],
) -> Option<Value>
fn emit_by_name_with_details_and_values( &self, signal_name: &str, details: Quark, args: &[Value], ) -> Option<Value>
Source§fn emit_with_details<R>(
&self,
signal_id: SignalId,
details: Quark,
args: &[&dyn ToValue],
) -> Rwhere
R: TryFromClosureReturnValue,
fn emit_with_details<R>(
&self,
signal_id: SignalId,
details: Quark,
args: &[&dyn ToValue],
) -> Rwhere
R: TryFromClosureReturnValue,
Source§fn emit_with_details_and_values(
&self,
signal_id: SignalId,
details: Quark,
args: &[Value],
) -> Option<Value>
fn emit_with_details_and_values( &self, signal_id: SignalId, details: Quark, args: &[Value], ) -> Option<Value>
Source§fn disconnect(&self, handler_id: SignalHandlerId)
fn disconnect(&self, handler_id: SignalHandlerId)
Source§fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
notify
signal of the object. Read moreSource§fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
notify
signal of the object. Read moreSource§unsafe fn connect_notify_unsafe<F>(
&self,
name: Option<&str>,
f: F,
) -> SignalHandlerId
unsafe fn connect_notify_unsafe<F>( &self, name: Option<&str>, f: F, ) -> SignalHandlerId
notify
signal of the object. Read more