Trait glib::subclass::types::ObjectSubclass
source · pub trait ObjectSubclass:
ObjectSubclassType
+ Sized
+ 'static {
type Type: ObjectType + ObjectSubclassIs<Subclass = Self> + FromGlibPtrFull<*mut <Self::Type as ObjectType>::GlibType> + FromGlibPtrBorrow<*mut <Self::Type as ObjectType>::GlibType> + FromGlibPtrNone<*mut <Self::Type as ObjectType>::GlibType>;
type ParentType: IsSubclassable<Self> + FromGlibPtrFull<*mut <Self::ParentType as ObjectType>::GlibType> + FromGlibPtrBorrow<*mut <Self::ParentType as ObjectType>::GlibType> + FromGlibPtrNone<*mut <Self::ParentType as ObjectType>::GlibType>;
type Interfaces: InterfaceList<Self>;
type Instance: InstanceStruct<Type = Self>;
type Class: ClassStruct<Type = Self>;
const NAME: &'static str;
const ABSTRACT: bool = false;
// Provided methods
fn type_init(_type_: &mut InitializingType<Self>) { ... }
fn class_init(_klass: &mut Self::Class) { ... }
fn new() -> Self { ... }
fn with_class(_klass: &Self::Class) -> Self { ... }
fn instance_init(_obj: &InitializingObject<Self>) { ... }
}
Expand description
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.
Required Associated Types§
sourcetype Type: ObjectType + ObjectSubclassIs<Subclass = Self> + FromGlibPtrFull<*mut <Self::Type as ObjectType>::GlibType> + FromGlibPtrBorrow<*mut <Self::Type as ObjectType>::GlibType> + FromGlibPtrNone<*mut <Self::Type as ObjectType>::GlibType>
type Type: ObjectType + ObjectSubclassIs<Subclass = Self> + FromGlibPtrFull<*mut <Self::Type as ObjectType>::GlibType> + FromGlibPtrBorrow<*mut <Self::Type as ObjectType>::GlibType> + FromGlibPtrNone<*mut <Self::Type as ObjectType>::GlibType>
Wrapper around this subclass defined with wrapper!
sourcetype ParentType: IsSubclassable<Self> + FromGlibPtrFull<*mut <Self::ParentType as ObjectType>::GlibType> + FromGlibPtrBorrow<*mut <Self::ParentType as ObjectType>::GlibType> + FromGlibPtrNone<*mut <Self::ParentType as ObjectType>::GlibType>
type ParentType: IsSubclassable<Self> + FromGlibPtrFull<*mut <Self::ParentType as ObjectType>::GlibType> + FromGlibPtrBorrow<*mut <Self::ParentType as ObjectType>::GlibType> + FromGlibPtrNone<*mut <Self::ParentType as ObjectType>::GlibType>
Parent Rust type to inherit from.
sourcetype Interfaces: InterfaceList<Self>
type Interfaces: InterfaceList<Self>
List of interfaces implemented by this type.
sourcetype Instance: InstanceStruct<Type = Self>
type Instance: InstanceStruct<Type = Self>
The C instance struct.
See basic::InstanceStruct
for an basic instance struct that should be
used in most cases.
sourcetype Class: ClassStruct<Type = Self>
type Class: ClassStruct<Type = Self>
The C class struct.
See basic::ClassStruct
for an basic instance struct that should be
used in most cases.
Required Associated Constants§
Provided Associated Constants§
Provided Methods§
sourcefn type_init(_type_: &mut InitializingType<Self>)
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
sourcefn class_init(_klass: &mut Self::Class)
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 registering signals on the class
or calling class methods.
Optional
sourcefn new() -> Self
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()
.
sourcefn with_class(_klass: &Self::Class) -> Self
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()
.
sourcefn instance_init(_obj: &InitializingObject<Self>)
fn instance_init(_obj: &InitializingObject<Self>)
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
).