pub trait ObjectSubclass: 'static + ObjectSubclassType + Sized {
    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;

    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§

Wrapper around this subclass defined with wrapper!

Parent Rust type to inherit from.

List of interfaces implemented by this type.

The C instance struct.

See basic::InstanceStruct for an basic instance struct that should be used in most cases.

The C class struct.

See basic::ClassStruct for an basic instance struct that should be used in most cases.

Required Associated Constants§

GObject type name.

This must be unique in the whole process.

Provided Associated Constants§

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.

Provided Methods§

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

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

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().

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().

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).

Implementors§