Struct gio::Application

source ·
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 MenuModels.

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 funcion, 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

§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

Implementations§

source§

impl Application

source

pub const NONE: Option<&'static Application> = None

source

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

source

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.

source

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

source

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

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Application

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Application

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl HasParamSpec for Application

§

type ParamSpec = ParamSpecObject

§

type SetValue = Application

Preferred value to be used as setter for the associated ParamSpec.
§

type BuilderFn = fn(_: &str) -> ParamSpecObjectBuilder<'_, Application>

source§

fn param_spec_builder() -> Self::BuilderFn

source§

impl Hash for Application

source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<T: ApplicationImpl> IsSubclassable<T> for Application

source§

fn class_init(class: &mut Class<Self>)

Override the virtual methods of this class for the given subclass and do other class initialization. Read more
source§

fn instance_init(instance: &mut InitializingObject<T>)

Instance specific initialization. Read more
source§

impl Ord for Application

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl ParentClassIs for Application

source§

impl<OT: ObjectType> PartialEq<OT> for Application

source§

fn eq(&self, other: &OT) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<OT: ObjectType> PartialOrd<OT> for Application

source§

fn partial_cmp(&self, other: &OT) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl StaticType for Application

source§

fn static_type() -> Type

Returns the type identifier of Self.
source§

impl Eq for Application

source§

impl IsA<ActionGroup> for Application

source§

impl IsA<ActionMap> for Application

Auto Trait Implementations§

Blanket Implementations§

source§

impl<O> ActionGroupExt for O
where O: IsA<ActionGroup>,

source§

fn action_added(&self, action_name: &str)

Emits the #GActionGroup::action-added signal on @self. Read more
source§

fn action_enabled_changed(&self, action_name: &str, enabled: bool)

Emits the #GActionGroup::action-enabled-changed signal on @self. Read more
source§

fn action_removed(&self, action_name: &str)

Emits the #GActionGroup::action-removed signal on @self. Read more
source§

fn action_state_changed(&self, action_name: &str, state: &Variant)

Emits the #GActionGroup::action-state-changed signal on @self. Read more
source§

fn activate_action(&self, action_name: &str, parameter: Option<&Variant>)

Activate the named action within @self. Read more
source§

fn change_action_state(&self, action_name: &str, value: &Variant)

Request for the state of the named action within @self to be changed to @value. Read more
source§

fn is_action_enabled(&self, action_name: &str) -> bool

Checks if the named action within @self is currently enabled. Read more
source§

fn action_parameter_type(&self, action_name: &str) -> Option<VariantType>

Queries the type of the parameter that must be given when activating the named action within @self. Read more
source§

fn action_state(&self, action_name: &str) -> Option<Variant>

Queries the current state of the named action within @self. Read more
source§

fn action_state_hint(&self, action_name: &str) -> Option<Variant>

Requests a hint about the valid range of values for the state of the named action within @self. Read more
source§

fn action_state_type(&self, action_name: &str) -> Option<VariantType>

Queries the type of the state of the named action within @self. Read more
source§

fn has_action(&self, action_name: &str) -> bool

Checks if the named action exists within @self. Read more
source§

fn list_actions(&self) -> Vec<GString>

Lists the actions contained within @self. Read more
source§

fn connect_action_added<F: Fn(&Self, &str) + 'static>( &self, detail: Option<&str>, f: F ) -> SignalHandlerId

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. Read more
source§

fn connect_action_enabled_changed<F: Fn(&Self, &str, bool) + 'static>( &self, detail: Option<&str>, f: F ) -> SignalHandlerId

Signals that the enabled status of the named action has changed. Read more
source§

fn connect_action_removed<F: Fn(&Self, &str) + 'static>( &self, detail: Option<&str>, f: F ) -> SignalHandlerId

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. Read more
source§

fn connect_action_state_changed<F: Fn(&Self, &str, &Variant) + 'static>( &self, detail: Option<&str>, f: F ) -> SignalHandlerId

Signals that the state of the named action has changed. Read more
source§

impl<O> ActionMapExt for O
where O: IsA<ActionMap>,

source§

fn add_action(&self, action: &impl IsA<Action>)

Adds an action to the @self. Read more
source§

fn lookup_action(&self, action_name: &str) -> Option<Action>

Looks up the action with the name @action_name in @self. Read more
source§

fn remove_action(&self, action_name: &str)

Removes the named action from the action map. Read more
source§

impl<O> ActionMapExtManual for O
where O: IsA<ActionMap>,

source§

fn add_action_entries( &self, entries: impl IntoIterator<Item = ActionEntry<Self>> )

A convenience function for creating multiple #GSimpleAction instances and adding them to a #GActionMap. Read more
source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<O> ApplicationExt for O
where O: IsA<Application>,

source§

fn activate(&self)

Activates the application. Read more
source§

fn add_main_option( &self, long_name: &str, short_name: Char, flags: OptionFlags, arg: OptionArg, description: &str, arg_description: Option<&str> )

Add an option to be handled by @self. Read more
source§

fn bind_busy_property(&self, object: &impl IsA<Object>, property: &str)

Marks @self as busy (see g_application_mark_busy()) while @property on @object is true. Read more
source§

fn application_id(&self) -> Option<GString>

Gets the unique identifier for @self. Read more
source§

fn dbus_connection(&self) -> Option<DBusConnection>

Gets the #GDBusConnection being used by the application, or None. Read more
source§

fn dbus_object_path(&self) -> Option<GString>

Gets the D-Bus object path being used by the application, or None. Read more
source§

fn flags(&self) -> ApplicationFlags

Gets the flags for @self. Read more
source§

fn inactivity_timeout(&self) -> u32

Gets the current inactivity timeout for the application. Read more
source§

fn is_busy(&self) -> bool

Gets the application’s current busy state, as set through g_application_mark_busy() or g_application_bind_busy_property(). Read more
source§

fn is_registered(&self) -> bool

Checks if @self is registered. Read more
source§

fn is_remote(&self) -> bool

Checks if @self is remote. Read more
source§

fn resource_base_path(&self) -> Option<GString>

Gets the resource base path of @self. Read more
source§

fn open(&self, files: &[File], hint: &str)

Opens the given files. Read more
source§

fn quit(&self)

Immediately quits the application. Read more
source§

fn register( &self, cancellable: Option<&impl IsA<Cancellable>> ) -> Result<(), Error>

Attempts registration of the application. Read more
source§

fn send_notification(&self, id: Option<&str>, notification: &Notification)

Sends a notification on behalf of @self to the desktop shell. There is no guarantee that the notification is displayed immediately, or even at all. Read more
source§

fn set_application_id(&self, application_id: Option<&str>)

Sets the unique identifier for @self. Read more
source§

fn set_default(&self)

Sets or unsets the default application for the process, as returned by g_application_get_default(). Read more
source§

fn set_flags(&self, flags: ApplicationFlags)

Sets the flags for @self. Read more
source§

fn set_inactivity_timeout(&self, inactivity_timeout: u32)

Sets the current inactivity timeout for the application. Read more
source§

fn set_option_context_description(&self, description: Option<&str>)

Adds a description to the @self option context. Read more
source§

fn set_option_context_parameter_string(&self, parameter_string: Option<&str>)

Sets the parameter string to be used by the commandline handling of @self. Read more
source§

fn set_option_context_summary(&self, summary: Option<&str>)

Adds a summary to the @self option context. Read more
source§

fn set_resource_base_path(&self, resource_path: Option<&str>)

Sets (or unsets) the base resource path of @self. Read more
source§

fn unbind_busy_property(&self, object: &impl IsA<Object>, property: &str)

Destroys a binding between @property and the busy state of @self that was previously created with g_application_bind_busy_property(). Read more
source§

fn withdraw_notification(&self, id: &str)

Withdraws a notification that was sent with g_application_send_notification(). Read more
source§

fn set_action_group<P: IsA<ActionGroup>>(&self, action_group: Option<&P>)

The group of actions that the application exports.
source§

fn connect_activate<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId

The ::activate signal is emitted on the primary instance when an activation occurs. See g_application_activate().
source§

fn connect_command_line<F: Fn(&Self, &ApplicationCommandLine) -> i32 + 'static>( &self, f: F ) -> SignalHandlerId

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. Read more
source§

fn connect_handle_local_options<F: Fn(&Self, &VariantDict) -> i32 + 'static>( &self, f: F ) -> SignalHandlerId

The ::handle-local-options signal is emitted on the local instance after the parsing of the commandline options has occurred. Read more
source§

fn connect_name_lost<F: Fn(&Self) -> bool + 'static>( &self, f: F ) -> SignalHandlerId

Available on crate feature v2_60 only.
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. Read more
source§

fn connect_shutdown<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId

The ::shutdown signal is emitted only on the registered primary instance immediately after the main loop terminates.
source§

fn connect_startup<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId

The ::startup signal is emitted on the primary instance immediately after registration. See g_application_register().
source§

fn connect_action_group_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source§

fn connect_application_id_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source§

fn connect_flags_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId

source§

fn connect_inactivity_timeout_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source§

fn connect_is_busy_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source§

fn connect_is_registered_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source§

fn connect_is_remote_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source§

fn connect_resource_base_path_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source§

impl<O> ApplicationExtManual for O
where O: IsA<Application>,

source§

fn run(&self) -> ExitCode

Runs the application. Read more
source§

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

The ::open signal is emitted on the primary instance when there are files to open. See g_application_open() for more information. Read more
source§

fn hold(&self) -> ApplicationHoldGuard

Increases the use count of @self. Read more
source§

fn mark_busy(&self) -> ApplicationBusyGuard

Increases the busy count of @self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Cast for T
where T: ObjectType,

source§

fn upcast<T>(self) -> T
where T: ObjectType, Self: IsA<T>,

Upcasts an object to a superclass or interface T. Read more
source§

fn upcast_ref<T>(&self) -> &T
where T: ObjectType, Self: IsA<T>,

Upcasts an object to a reference of its superclass or interface T. Read more
source§

fn downcast<T>(self) -> Result<T, Self>
where T: ObjectType, Self: MayDowncastTo<T>,

Tries to downcast to a subclass or interface implementor T. Read more
source§

fn downcast_ref<T>(&self) -> Option<&T>
where T: ObjectType, Self: MayDowncastTo<T>,

Tries to downcast to a reference of its subclass or interface implementor T. Read more
source§

fn dynamic_cast<T>(self) -> Result<T, Self>
where T: ObjectType,

Tries to cast to an object of type 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 more
source§

fn dynamic_cast_ref<T>(&self) -> Option<&T>
where T: ObjectType,

Tries to cast to reference to an object of type 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 more
source§

unsafe fn unsafe_cast<T>(self) -> T
where T: ObjectType,

Casts to T unconditionally. Read more
source§

unsafe fn unsafe_cast_ref<T>(&self) -> &T
where T: ObjectType,

Casts to &T unconditionally. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoClosureReturnValue for T
where T: Into<Value>,

source§

impl<U> IsSubclassableExt for U

source§

impl<T> ObjectExt for T
where T: ObjectType,

source§

fn is<U>(&self) -> bool
where U: StaticType,

Returns true if the object is an instance of (can be cast to) T.
source§

fn type_(&self) -> Type

Returns the type of the object.
source§

fn object_class(&self) -> &Class<Object>

Returns the ObjectClass of the object. Read more
source§

fn class(&self) -> &Class<T>
where T: IsClass,

Returns the class of the object.
source§

fn class_of<U>(&self) -> Option<&Class<U>>
where U: IsClass,

Returns the class of the object in the given type T. Read more
source§

fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>
where U: IsInterface,

Returns the interface T of the object. Read more
source§

fn set_property(&self, property_name: &str, value: impl Into<Value>)

Sets the property property_name of the object to value value. Read more
source§

fn set_property_from_value(&self, property_name: &str, value: &Value)

Sets the property property_name of the object to value value. Read more
source§

fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])

Sets multiple properties of the object at once. Read more
source§

fn set_properties_from_value(&self, property_values: &[(&str, Value)])

Sets multiple properties of the object at once. Read more
source§

fn property<V>(&self, property_name: &str) -> V
where V: for<'b> FromValue<'b> + 'static,

Gets the property property_name of the object and cast it to the type V. Read more
source§

fn property_value(&self, property_name: &str) -> Value

Gets the property property_name of the object. Read more
source§

fn has_property(&self, property_name: &str, type_: Option<Type>) -> bool

Check if the object has a property property_name of the given type_. Read more
source§

fn property_type(&self, property_name: &str) -> Option<Type>

Get the type of the property property_name of this object. Read more
source§

fn find_property(&self, property_name: &str) -> Option<ParamSpec>

Get the ParamSpec of the property property_name of this object.
source§

fn list_properties(&self) -> PtrSlice<ParamSpec>

Return all ParamSpec of the properties of this object.
source§

fn freeze_notify(&self) -> PropertyNotificationFreezeGuard

Freeze all property notifications until the return guard object is dropped. Read more
source§

unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)
where QD: 'static,

Set arbitrary data on this object with the given key. Read more
source§

unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>
where QD: 'static,

Return previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>
where QD: 'static,

Retrieve previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn set_data<QD>(&self, key: &str, value: QD)
where QD: 'static,

Set arbitrary data on this object with the given key. Read more
source§

unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>
where QD: 'static,

Return previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>
where QD: 'static,

Retrieve previously set arbitrary data of this object with the given key. Read more
source§

fn block_signal(&self, handler_id: &SignalHandlerId)

Block a given signal handler. Read more
source§

fn unblock_signal(&self, handler_id: &SignalHandlerId)

Unblock a given signal handler.
source§

fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)

Stop emission of the currently emitted signal.
source§

fn stop_signal_emission_by_name(&self, signal_name: &str)

Stop emission of the currently emitted signal by the (possibly detailed) signal name.
source§

fn connect<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,

Connect to the signal signal_name on this object. Read more
source§

fn connect_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,

Connect to the signal signal_id on this object. Read more
source§

fn connect_local<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + 'static,

Connect to the signal signal_name on this object. Read more
source§

fn connect_local_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + 'static,

Connect to the signal signal_id on this object. Read more
source§

unsafe fn connect_unsafe<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value>,

Connect to the signal signal_name on this object. Read more
source§

unsafe fn connect_unsafe_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value>,

Connect to the signal signal_id on this object. Read more
source§

fn connect_closure( &self, signal_name: &str, after: bool, closure: RustClosure ) -> SignalHandlerId

Connect a closure to the signal signal_name on this object. Read more
source§

fn connect_closure_id( &self, signal_id: SignalId, details: Option<Quark>, after: bool, closure: RustClosure ) -> SignalHandlerId

Connect a closure to the signal signal_id on this object. Read more
source§

fn watch_closure(&self, closure: &impl AsRef<Closure>)

Limits the lifetime of 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]) -> R

Emit signal by signal id. Read more
source§

fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>

Same as Self::emit but takes Value for the arguments.
source§

fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> R

Emit signal by its name. Read more
source§

fn emit_by_name_with_values( &self, signal_name: &str, args: &[Value] ) -> Option<Value>

Emit signal by its name. Read more
source§

fn emit_by_name_with_details<R>( &self, signal_name: &str, details: Quark, args: &[&dyn ToValue] ) -> R

Emit signal by its name with details. Read more
source§

fn emit_by_name_with_details_and_values( &self, signal_name: &str, details: Quark, args: &[Value] ) -> Option<Value>

Emit signal by its name with details. Read more
source§

fn emit_with_details<R>( &self, signal_id: SignalId, details: Quark, args: &[&dyn ToValue] ) -> R

Emit signal by signal id with details. Read more
source§

fn emit_with_details_and_values( &self, signal_id: SignalId, details: Quark, args: &[Value] ) -> Option<Value>

Emit signal by signal id with details. Read more
source§

fn disconnect(&self, handler_id: SignalHandlerId)

Disconnect a previously connected signal handler.
source§

fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&T, &ParamSpec) + Send + Sync + 'static,

Connect to the notify signal of the object. Read more
source§

fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&T, &ParamSpec) + 'static,

Connect to the notify signal of the object. Read more
source§

unsafe fn connect_notify_unsafe<F>( &self, name: Option<&str>, f: F ) -> SignalHandlerId
where F: Fn(&T, &ParamSpec),

Connect to the notify signal of the object. Read more
source§

fn notify(&self, property_name: &str)

Notify that the given property has changed its value. Read more
source§

fn notify_by_pspec(&self, pspec: &ParamSpec)

Notify that the given property has changed its value. Read more
source§

fn downgrade(&self) -> WeakRef<T>

Downgrade this object to a weak reference.
source§

fn add_weak_ref_notify<F>(&self, f: F) -> WeakRefNotify<T>
where F: FnOnce() + Send + 'static,

Add a callback to be notified when the Object is disposed.
source§

fn add_weak_ref_notify_local<F>(&self, f: F) -> WeakRefNotify<T>
where F: FnOnce() + 'static,

Add a callback to be notified when the Object is disposed. Read more
source§

fn bind_property<'f, 't, O, 'a>( &'a self, source_property: &'a str, target: &'a O, target_property: &'a str ) -> BindingBuilder<'a, 'f, 't>
where O: ObjectType,

Bind property source_property on this object to the target_property on the target object. Read more
source§

fn ref_count(&self) -> u32

Returns the strong reference count of this object.
source§

unsafe fn run_dispose(&self)

Runs the dispose mechanism of the object. Read more
source§

impl<T> Property for T
where T: HasParamSpec,

§

type Value = T

source§

impl<T> PropertyGet for T
where T: HasParamSpec,

§

type Value = T

source§

fn get<R, F>(&self, f: F) -> R
where F: Fn(&<T as PropertyGet>::Value) -> R,

source§

impl<T> StaticTypeExt for T
where T: StaticType,

source§

fn ensure_type()

Ensures that the type has been registered with the type system.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> TransparentType for T

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T> TryFromClosureReturnValue for T
where T: for<'a> FromValue<'a> + StaticType + 'static,

source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<'a, T, C, E> FromValueOptional<'a> for T
where T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError<E>>, E: Error + Send + 'static,

source§

impl<Super, Sub> MayDowncastTo<Sub> for Super
where Super: IsA<Super>, Sub: IsA<Super>,