[−]Trait libhandy4::subclass::prelude::ObjectSubclass
The central trait for subclassing a GObject
type.
Links together the type name, parent type and the instance and class structs for type registration and allows subclasses to hook into various steps of the type registration and initialization.
See register_type
for registering an implementation of this trait
with the type system.
Associated Types
type Type: ObjectType + ObjectSubclassIs + FromGlibPtrNone<*mut <Self::Type as ObjectType>::GlibType> + FromGlibPtrFull<*mut <Self::Type as ObjectType>::GlibType> + FromGlibPtrBorrow<*mut <Self::Type as ObjectType>::GlibType>
Wrapper around this subclass defined with wrapper!
type ParentType: ObjectType + FromGlibPtrNone<*mut <Self::ParentType as ObjectType>::GlibType> + FromGlibPtrFull<*mut <Self::ParentType as ObjectType>::GlibType> + FromGlibPtrBorrow<*mut <Self::ParentType as ObjectType>::GlibType>
Parent Rust type to inherit from.
type Instance: InstanceStruct
The C instance struct.
See simple::InstanceStruct
for an basic instance struct that should be
used in most cases.
type Class: ClassStruct
The C class struct.
See simple::ClassStruct
for an basic instance struct that should be
used in most cases.
Associated Constants
pub const NAME: &'static str
GObject
type name.
This must be unique in the whole process.
pub const ABSTRACT: bool
If this subclass is an abstract class or not.
By default all subclasses are non-abstract types but setting this to true
will create an
abstract class instead.
Abstract classes can't be instantiated and require a non-abstract subclass.
Optional.
Required methods
pub fn type_data() -> NonNull<TypeData>
Storage for the type-specific data used during registration.
This is usually generated by the object_subclass!
macro.
pub fn get_type() -> Type
Returns the glib::Type
ID of the subclass.
This will register the type with the type system on the first call and is usually generated
by the object_subclass!
macro.
Provided methods
pub fn get_instance(&self) -> Self::Type
Returns the corresponding object instance.
pub fn from_instance(obj: &Self::Type) -> &Self
Returns the implementation from an instance.
pub fn type_init(_type_: &mut InitializingType<Self>)
Additional type initialization.
This is called right after the type was registered and allows
subclasses to do additional type-specific initialization, e.g.
for implementing GObject
interfaces.
Optional
pub fn class_init(_klass: &mut Self::Class)
Class initialization.
This is called after type_init
and before the first instance
of the subclass is created. Subclasses can use this to do class-
specific initialization, e.g. for installing properties or signals
on the class or calling class methods.
Optional
pub fn new() -> Self
Constructor.
This is called during object instantiation before further subclasses are initialized, and should return a new instance of the subclass private struct.
Optional, either implement this or with_class()
.
pub fn with_class(_klass: &Self::Class) -> Self
Constructor.
This is called during object instantiation before further subclasses are initialized, and should return a new instance of the subclass private struct.
Different to new()
above it also gets the class of this type passed
to itself for providing additional context.
Optional, either implement this or new()
.
pub fn instance_init(_obj: &InitializingObject<Self::Type>)
Performs additional instance initialization.
Called just after with_class()
. At this point the initialization has not completed yet, so
only a limited set of operations is safe (see InitializingObject
).