Struct gio::Application

source ·
pub struct Application { /* private fields */ }
Expand description

A Application 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 Application 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 Application 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 Application attempts to acquire the bus name of your application (which happens in ApplicationExt::register()). Unfortunately, this means that you cannot use ApplicationExt::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 GMenuModels.

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 before_emit or after_emit virtual functions in your Application 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 ApplicationFlags::SEND_ENVIRONMENT flag is set. Application subclasses can add their own platform data by overriding the 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 local_command_line() vfunc, 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

Writeable

application-id

Readable | Writeable | Construct

flags

Readable | Writeable

inactivity-timeout

Readable | Writeable

is-busy

Whether the application is currently marked as busy through ApplicationExtManual::mark_busy() or ApplicationExt::bind_busy_property().

Readable

is-registered

Readable

is-remote

Readable

resource-base-path

Readable | Writeable

Signals

activate

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

command-line

The ::command-line signal is emitted on the primary instance when a commandline is not handled locally. See ApplicationExtManual::run() and the ApplicationCommandLine 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 ApplicationCommandLineExt::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 ApplicationExt::activate(). One or more arguments results in a call to ApplicationExt::open().

If you want to handle the local commandline arguments for yourself by converting them to calls to ApplicationExt::open() or ActionGroupExt::activate_action() then you must be sure to register the application first. You should probably not call ApplicationExt::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 ApplicationExt::quit().

open

The ::open signal is emitted on the primary instance when there are files to open. See ApplicationExt::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 ApplicationExt::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, 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 Application instance.

If non-None, the application id must be valid. See id_is_valid().

If no application ID is given then some features of Application (most notably application uniqueness) will be disabled.

application_id

the application id

flags

the application flags

Returns

a new Application 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 Application instance for this process.

Normally there is only one Application per process and it becomes the default when it is created. You can exercise more control over this by using ApplicationExt::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 new() and ApplicationExt::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 Display for Application

source§

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

Formats the value using the given formatter. 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 action-added signal on self. Read more
source§

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

Emits the action-enabled-changed signal on self. Read more
source§

fn action_removed(&self, action_name: &str)

Emits the action-removed signal on self. Read more
source§

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

Emits the 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 SimpleAction instances and adding them to a ActionMap. 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 ApplicationExtManual::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 DBusConnection 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 ApplicationExtManual::mark_busy() or 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 Application::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 bind_busy_property(). Read more
source§

fn withdraw_notification(&self, id: &str)

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

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

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 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 ApplicationExtManual::run() and the ApplicationCommandLine 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 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 ApplicationExt::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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. 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>,