BoxModelObject

class labpyproject.core.pygame.core.BoxModelObject(**kwargs)[source]

Bases : object

Super classe portant les propriétés et méthodes fondamentales du box model.

  • « position » au sens css du terme soit « fixed », « absolute », « static », « relative »

  • attributs locaux pouvant être exprimés en pixel ou pourcentage : « x », « y », « top », « left », « bottom », « right », « width », « height », « padding », « margin »

  • bornage des dimensions : « minwidth », « maxwidth », « minheight », « maxheight »

  • attributs d’alignement : « align », « valign »

  • attributs d’adaptation au contenu : « snapW », « snapH »

  • « flex » (int, default None) : valeur de flexibilité si le conteneur parent impose un layout (horizontal ou vertical à l’heure actuelle)

Remarques:

  • l’origine du repère se situe dans le coin haut/gauche, l’axe des absisses est orientée vers la droite, celui des ordonnées vers le bas

  • les metrics en % sont calculés par rapport à la surface alouée par le parent

  • à la différence de css, width et height représentent les dimensions totales de la box, padding et margin inclus. Les dimensions du contenu et du fond (ou de la bordure), pouvant être moindres.

  • padding et margin sont uniformes sur chacun des bords (V1 : allège les calculs)

  • position « fixed » est gérée partiellement par les RealContainers du fait du clipping de leur surface de publication.

Constructeur

Paramètres

**kwargs – peut contenir toutes les propriétés de boxing supportées par BoxModelObject.

Attributes Summary

ALIGN_ATTR

attributs d’alignements

ALIGN_CENTER

valeur d’alignement

ALIGN_LEFT

valeur d’alignement

ALIGN_RIGHT

valeur d’alignement

FLEX_ATTR

attribut de flex

METRIC_ATTR

références internes aux attributs de position et de dimension

POSITION_ABSOLUTE

équivalent de la ppté css position absolute, l’élément est positionné relativement à son parent sans « subir » de layout (normal flow css) de sa part.

POSITION_FIXED

équivalent de la ppté css position fixed, l’élément est positionné relativement à la fenêtre.

POSITION_RELATIVE

équivalent de la ppté css position relative, l’élément est positionné selon le layout de son conteneur parent mais les offsets (left, right, top, bottom) sont ensuite appliqués (valeur par défaut).

POSITION_STATIC

équivalent de la ppté css position static, l’élément est positionné selon le layout de son conteneur parent.

POSITION_VALUES

liste des valeurs possibles pour l’attribut position

SGY_COORD_ALIGN

stratégie de positionnement par alignement

SGY_COORD_OFFSET

stratégie de positionnement par offsets

SGY_COORD_RELATIVE

stratégie de positionnement relative (in flow)

SGY_COORD_VALUE

stratégie de positionnement par coordonnée

SGY_DIM_FLEX

stratégie de dimensionnement par flex

SGY_DIM_OFFSETS

stratégie de dimensionnement par offsets

SGY_DIM_VALUE

stratégie de dimensionnement par dimension explicite

SNAP_ATTR

attributs d’adaptation au contenu

VALIGN_BOTTOM

valeur d’alignement

VALIGN_MIDDLE

valeur d’alignement

VALIGN_TOP

valeur d’alignement

align

Alignement horizontal.

bottom

Offset de positionnement bas.

flex

Valeur de flex.

globalRect

Rect de référence absolu.

height

Hauteur totale (padding et margin compris) publique.

in_flow

Appartenance au « flow de layout » parent (bool)

left

Offset de positionnement gauche.

margin

Margin en px.

maxheight

Hauteur max en px.

maxwidth

Largeur max en px.

minheight

Hauteur min en px.

minwidth

Largeur min en px.

padding

Padding en px.

parent

VirtualContainer parent

position

Position au cens css.

publicationRect

Rect de publication de l’objet

publicationRefRect

Rect de publication de référence (celui du parent en général).

rect

Redirige la propriété rect vers self.publicationRect

right

Offset de positionnement droit.

root_reference

référence au RootContainer

snapH

Adaptation à la hauteur du contenu (bool).

snapW

Adaptation à la largeur du contenu (bool).

top

Offset de positionnement haut.

unsnapped_publicationRect

Rect de publication avant adaptation au contenu.

valign

Alignement vertical.

width

Largeur totale (padding et margin compris) publique.

x

Abcisse locale publique.

xabs

Abcisse locale absolue, hors flow de layout (usage interne).

xflow

Abcisse locale calculée imposée par le layout parent (usage interne).

y

Ordonnée locale publique.

yabs

Ordonnée locale absolue, hors flow de layout (usage interne).

yflow

Ordonnée locale calculée imposée par le layout parent (usage interne).

Methods Summary

apply_parent_layout(prop, val)

Applique le layout imposé par le conteneur parent

compute_coords(refrect)

Calcul de xabs et yabs en fonction du rect de référence refrect représentant la surface alouée.

compute_dims(refrect)

Calcul de width et height en fonction du rect de référence refrect représentant la surface alouée.

compute_spaces(refrect)

Calcul de padding ou margin.

define_strategy(*props)

Définit la stratégie de calcul de la propriété prop parmi (xabs, yabs, width, height).

define_strategy_coord(prop)

Stratégie de calcul de coordonnées.

define_strategy_dim(prop)

Stratégie de calcul de dimension.

discard_display()

La position, les dimensions ou les rects internes (le contenu pour des subclasses) ont été modifiés, le rendu graphique n’est plus valable

discard_globalRect()

Invalide le rect global.

discard_inner_rects()

Invalide les rects de publication interne (contenu et bordure).

discard_placement()

La position a été modifiée, le rendu graphique dans la surface de publication du RealContainer assurant la publication n’est plus valable.

discard_pos_coords()

Invalide les propriétés _xpos et _ypos, attributs « cachés » derrière les getters de x et y.

discard_resize()

Marque l’objet comme non resizé.

discard_strategy(prop)

Invalide la stratégie associée à la propriété prop.

do_compute_resize()

Tests préalables aux calculs de resize.

draw_display()

Dessinne ou redessinne l’objet.

get_border_rect()

Retourne le Rect dédié à l’affichage d’une bordure ou d’un fond une fois margin retirée.

get_content_rect()

Retourne le Rect dédié à l’affichage du contenu, une fois margin et padding retirés.

get_global_coords()

Retourne la position absolue exacte par rapport au Root.

get_item_dimensions()

Doit retourner les dimensions réelles du contenu (texte, image).

get_metric_value(prop)

Retourne la valeur calculée de self.metricparams[prop]

get_scope_delta_coords()

Retourne le décallage dx, dy induit par le scope de contenu de cet objet.

handle_item_snap(content_width, content_height)

Implémentation du snap pour un item terminal.

has_default_value(propname)

Indique si la propriété de nom propname a une valeur par défaut.

move(dx, dy)

Applique le décallage dx, dy aux coordonnées locales x, y sans modifier les métrics, modifie directement self.publicationRect.

on_abs_coord_changed(prop)

Appelée lors d’un changement explicite de coordonnée absolue.

on_alignement_changed(prop)

Appelée lors d’un changement explicite d’alignement.

on_dimension_bound_changed()

Appelée lorsqu’une borne de dimension a été modifiée.

on_dimension_changed(prop)

Appelée lors d’un changement explicite de dimensions (hors process de resize).

on_fixed_child_parent_coords_changed()

Méthode dédiée aux éléments en position fixed, appelée par le container parent alternativement à update_publicationRefRect_coords.

on_flex_changed()

Appelée lorsque l’attribut flex a été modifié.

on_flow_coord_changed()

Appelée lors d’un changement explicite de coordonnée via le layout parent.

on_in_flow_changed()

Appelée lorsque l’objet entre ou sort du flux de layout parent.

on_margin_changed()

Appelée lorsque la marge a été modifiée.

on_offset_changed(prop)

Appelée lors d’un changement explicite d’offset (top, bottom, left, right).

on_padding_changed()

Appelée lorsque le padding a été modifié.

on_parent_changed()

Appelée lorsque la référence au parent est modifiée.

on_position_changed(newposition)

Appelée lorsque l’attribut position a été modifié.

on_publicationRect_coords_changed(aftersnap)

Appelée lors du process de resize quand les coordonnées seules de publicationRect ont été modifiées (pas les dimensions).

on_publicationRect_dims_changed(aftersnap)

Appelée lors du process de resize quand les dimensions (et éventuellement les coords) de publicationRect ont été modifiées

on_publicationRefRect_coords_changed()

Appelée lorsque les coordonnées du rect de publication de référence (self._publicationRefRect) ont été modifiées (mais pas les dimensions).

on_publicationRefRect_dims_changed()

Appelée lorsque les dimensions du rect de publication de référence (self._publicationRefRect) ont été modifiées (et éventuellement les coordonnées aussi).

on_snap_changed()

Appelée lors d’un changement explicite de snap.

parse_alignement(value)

Parse une prorpiété de type BoxModelObject.ALIGN_ATTR.

parse_boundedmetric(value, minvalue, maxvalue)

Parse une propriété de type BoxModelObject.METRIC_ATTR bornée.

parse_flex(value)

Parse l’attribut flex.

parse_metric(value)

Parse une propriété de type BoxModelObject.METRIC_ATTR.

parse_position(val)

Parse un attribut de position.

parse_properties(**kwargs)

Parse les propriétés présentes dans kwargs.

parse_snap(value)

Parse une propriété de type BoxModelObject.SNAP_ATTR.

place(x, y)

Positionne l’objet aux coordonnées locales x, y sans modifier les métrics, modifie directement self.publicationRect.

post_control_boxmodel()

Spécifie au besoin des valeurs par défaut (snaps).

re_initialise_rects()

Ré initialisation des rects, conserve le paramétrage (métrics, alignements, snap).

resize(**kwargs)

Recalcul de la taille et de la position.

set_metric_value(prop, val)

Affecte val à la valeur calculée de self.metricparams[prop]

update_border_rect()

Met à jour le rect de bordure/fond.

update_content_rect()

Met à jour le rect de contenu.

update_coord(prop, refrect)

Calcul de la coordonnée prop.

update_core_metrics(refrect)

Recalcul des metricparams x, y, width, height en fonction du rect de référence refrect représentant la surface alouée.

update_dim(prop, refrect)

Calcul de la dimension prop.

update_globalRect()

Mise à jour du rect global.

update_inner_rects()

Met à jour les rects de publication interne (contenu et bordure).

update_pos_coords()

Recalcule _xpos et _ypos, attributs « cachés » derrière les getters de x et y.

update_publicationRect([aftersnap])

Mise à jour de publicationRect.

update_publicationRefRect_coords(x, y)

Modification des coordonnées seules du rect de publication de référence.

update_space(prop, refval)

Calcul d’une propriété de type padding ou margin.

Attributes Documentation

ALIGN_ATTR = ['align', 'valign']

attributs d’alignements

ALIGN_CENTER = 'center'

valeur d’alignement

ALIGN_LEFT = 'left'

valeur d’alignement

ALIGN_RIGHT = 'right'

valeur d’alignement

FLEX_ATTR = ['flex']

attribut de flex

METRIC_ATTR = ['xabs', 'yabs', 'top', 'left', 'bottom', 'right', 'width', 'height', 'padding', 'margin']

références internes aux attributs de position et de dimension

POSITION_ABSOLUTE = 'absolute'

équivalent de la ppté css position absolute, l’élément est positionné relativement à son parent sans « subir » de layout (normal flow css) de sa part.

POSITION_FIXED = 'fixed'

équivalent de la ppté css position fixed, l’élément est positionné relativement à la fenêtre.

POSITION_RELATIVE = 'relative'

équivalent de la ppté css position relative, l’élément est positionné selon le layout de son conteneur parent mais les offsets (left, right, top, bottom) sont ensuite appliqués (valeur par défaut).

POSITION_STATIC = 'static'

équivalent de la ppté css position static, l’élément est positionné selon le layout de son conteneur parent.

POSITION_VALUES = ['fixed', 'absolute', 'static', 'relative']

liste des valeurs possibles pour l’attribut position

SGY_COORD_ALIGN = 'SGY_COORD_ALIGN'

stratégie de positionnement par alignement

SGY_COORD_OFFSET = 'SGY_COORD_OFFSET'

stratégie de positionnement par offsets

SGY_COORD_RELATIVE = 'SGY_COORD_RELATIVE'

stratégie de positionnement relative (in flow)

SGY_COORD_VALUE = 'SGY_COORD_VALUE'

stratégie de positionnement par coordonnée

SGY_DIM_FLEX = 'SGY_DIM_FLEX'

stratégie de dimensionnement par flex

SGY_DIM_OFFSETS = 'SGY_DIM_OFFSETS'

stratégie de dimensionnement par offsets

SGY_DIM_VALUE = 'SGY_DIM_VALUE'

stratégie de dimensionnement par dimension explicite

SNAP_ATTR = ['snapW', 'snapH']

attributs d’adaptation au contenu

VALIGN_BOTTOM = 'bottom'

valeur d’alignement

VALIGN_MIDDLE = 'middle'

valeur d’alignement

VALIGN_TOP = 'top'

valeur d’alignement

align

Alignement horizontal.

bottom

Offset de positionnement bas.

flex

Valeur de flex.

globalRect

Rect de référence absolu.

height

Hauteur totale (padding et margin compris) publique.

in_flow

Appartenance au « flow de layout » parent (bool)

left

Offset de positionnement gauche.

margin

Margin en px.

maxheight

Hauteur max en px.

maxwidth

Largeur max en px.

minheight

Hauteur min en px.

minwidth

Largeur min en px.

padding

Padding en px.

parent

VirtualContainer parent

position

Position au cens css.

publicationRect

Rect de publication de l’objet

publicationRefRect

Rect de publication de référence (celui du parent en général).

rect

Redirige la propriété rect vers self.publicationRect

right

Offset de positionnement droit.

root_reference

référence au RootContainer

snapH

Adaptation à la hauteur du contenu (bool).

snapW

Adaptation à la largeur du contenu (bool).

top

Offset de positionnement haut.

unsnapped_publicationRect

Rect de publication avant adaptation au contenu.

valign

Alignement vertical.

width

Largeur totale (padding et margin compris) publique.

x

Abcisse locale publique.

xabs

Abcisse locale absolue, hors flow de layout (usage interne).

xflow

Abcisse locale calculée imposée par le layout parent (usage interne).

y

Ordonnée locale publique.

yabs

Ordonnée locale absolue, hors flow de layout (usage interne).

yflow

Ordonnée locale calculée imposée par le layout parent (usage interne).

Methods Documentation

apply_parent_layout(prop, val)[source]

Applique le layout imposé par le conteneur parent

Paramètres
  • prop (str) – « x » ou « y »

  • val (int) –

compute_coords(refrect)[source]

Calcul de xabs et yabs en fonction du rect de référence refrect représentant la surface alouée.

RQ : les dimensions doivent être mises à jour auparavant.

compute_dims(refrect)[source]

Calcul de width et height en fonction du rect de référence refrect représentant la surface alouée.

compute_spaces(refrect)[source]

Calcul de padding ou margin.

Rq : ces propriétés étant uniformes sur les 4 bords, on considère comme valeur de référence la moyenne des dimensions de refrect.

define_strategy(*props)[source]

Définit la stratégie de calcul de la propriété prop parmi (xabs, yabs, width, height).

define_strategy_coord(prop)[source]

Stratégie de calcul de coordonnées.

define_strategy_dim(prop)[source]

Stratégie de calcul de dimension.

discard_display()[source]

La position, les dimensions ou les rects internes (le contenu pour des subclasses) ont été modifiés, le rendu graphique n’est plus valable

discard_globalRect()[source]

Invalide le rect global.

discard_inner_rects()[source]

Invalide les rects de publication interne (contenu et bordure).

discard_placement()[source]

La position a été modifiée, le rendu graphique dans la surface de publication du RealContainer assurant la publication n’est plus valable. Par contre le rendu « local » de cet objet reste valide.

discard_pos_coords()[source]

Invalide les propriétés _xpos et _ypos, attributs « cachés » derrière les getters de x et y.

discard_resize()[source]

Marque l’objet comme non resizé.

discard_strategy(prop)[source]

Invalide la stratégie associée à la propriété prop.

do_compute_resize()[source]

Tests préalables aux calculs de resize.

Renvoie

boolean

draw_display()[source]

Dessinne ou redessinne l’objet.

get_border_rect()[source]

Retourne le Rect dédié à l’affichage d’une bordure ou d’un fond une fois margin retirée.

get_content_rect()[source]

Retourne le Rect dédié à l’affichage du contenu, une fois margin et padding retirés.

get_global_coords()[source]

Retourne la position absolue exacte par rapport au Root.

get_item_dimensions()[source]

Doit retourner les dimensions réelles du contenu (texte, image). A implémenter dans les subclasses utilisant le snap.

Renvoie

int, int

get_metric_value(prop)[source]

Retourne la valeur calculée de self.metricparams[prop]

get_scope_delta_coords()[source]

Retourne le décallage dx, dy induit par le scope de contenu de cet objet.

handle_item_snap(content_width, content_height)[source]

Implémentation du snap pour un item terminal.

Paramètres
  • content_width (int) – largeur du contenu auquel s’adapter

  • content_height (int) – hauteur du contenu auquel s’adapter

Met à jour self.publicationRect. A appeler au besoin dans une subclasse (texte, image).

Renvoie

boolean indiquant si un changement a été apporté.

has_default_value(propname)[source]

Indique si la propriété de nom propname a une valeur par défaut.

move(dx, dy)[source]

Applique le décallage dx, dy aux coordonnées locales x, y sans modifier les métrics, modifie directement self.publicationRect.

on_abs_coord_changed(prop)[source]

Appelée lors d’un changement explicite de coordonnée absolue.

on_alignement_changed(prop)[source]

Appelée lors d’un changement explicite d’alignement.

on_dimension_bound_changed()[source]

Appelée lorsqu’une borne de dimension a été modifiée.

on_dimension_changed(prop)[source]

Appelée lors d’un changement explicite de dimensions (hors process de resize).

on_fixed_child_parent_coords_changed()[source]

Méthode dédiée aux éléments en position fixed, appelée par le container parent alternativement à update_publicationRefRect_coords.

on_flex_changed()[source]

Appelée lorsque l’attribut flex a été modifié.

on_flow_coord_changed()[source]

Appelée lors d’un changement explicite de coordonnée via le layout parent.

on_in_flow_changed()[source]

Appelée lorsque l’objet entre ou sort du flux de layout parent.

on_margin_changed()[source]

Appelée lorsque la marge a été modifiée.

on_offset_changed(prop)[source]

Appelée lors d’un changement explicite d’offset (top, bottom, left, right).

on_padding_changed()[source]

Appelée lorsque le padding a été modifié.

on_parent_changed()[source]

Appelée lorsque la référence au parent est modifiée.

on_position_changed(newposition)[source]

Appelée lorsque l’attribut position a été modifié.

on_publicationRect_coords_changed(aftersnap)[source]

Appelée lors du process de resize quand les coordonnées seules de publicationRect ont été modifiées (pas les dimensions).

Paramètres

aftersnap (boolean) – True si consécutif à un calcul de snap, False sinon

on_publicationRect_dims_changed(aftersnap)[source]

Appelée lors du process de resize quand les dimensions (et éventuellement les coords) de publicationRect ont été modifiées

Paramètres

aftersnap (boolean) – True si consécutif à un calcul de snap, False sinon

on_publicationRefRect_coords_changed()[source]

Appelée lorsque les coordonnées du rect de publication de référence (self._publicationRefRect) ont été modifiées (mais pas les dimensions).

on_publicationRefRect_dims_changed()[source]

Appelée lorsque les dimensions du rect de publication de référence (self._publicationRefRect) ont été modifiées (et éventuellement les coordonnées aussi).

on_snap_changed()[source]

Appelée lors d’un changement explicite de snap.

parse_alignement(value)[source]

Parse une prorpiété de type BoxModelObject.ALIGN_ATTR.

Renvoie

une valeur (voir ppté statiques) ou None

parse_boundedmetric(value, minvalue, maxvalue)[source]

Parse une propriété de type BoxModelObject.METRIC_ATTR bornée.

Renvoie

un objet BoundedMetricValue ou None.

parse_flex(value)[source]

Parse l’attribut flex.

parse_metric(value)[source]

Parse une propriété de type BoxModelObject.METRIC_ATTR.

Renvoie

un objet MetricValue ou None.

parse_position(val)[source]

Parse un attribut de position.

parse_properties(**kwargs)[source]

Parse les propriétés présentes dans kwargs.

parse_snap(value)[source]

Parse une propriété de type BoxModelObject.SNAP_ATTR.

Renvoie

boolean

place(x, y)[source]

Positionne l’objet aux coordonnées locales x, y sans modifier les métrics, modifie directement self.publicationRect.

post_control_boxmodel()[source]

Spécifie au besoin des valeurs par défaut (snaps).

re_initialise_rects()[source]

Ré initialisation des rects, conserve le paramétrage (métrics, alignements, snap).

resize(**kwargs)[source]

Recalcul de la taille et de la position. Met à jour self.publicationRect, alias de self.rect. Rqs : l’attribut position est pris en compte dans les getters/setters de x et y,

Renvoie

True si le resize a été modifié

set_metric_value(prop, val)[source]

Affecte val à la valeur calculée de self.metricparams[prop]

update_border_rect()[source]

Met à jour le rect de bordure/fond.

update_content_rect()[source]

Met à jour le rect de contenu.

update_coord(prop, refrect)[source]

Calcul de la coordonnée prop.

update_core_metrics(refrect)[source]

Recalcul des metricparams x, y, width, height en fonction du rect de référence refrect représentant la surface alouée.

update_dim(prop, refrect)[source]

Calcul de la dimension prop.

update_globalRect()[source]

Mise à jour du rect global.

update_inner_rects()[source]

Met à jour les rects de publication interne (contenu et bordure).

update_pos_coords()[source]

Recalcule _xpos et _ypos, attributs « cachés » derrière les getters de x et y.

update_publicationRect(aftersnap=False)[source]

Mise à jour de publicationRect.

update_publicationRefRect_coords(x, y)[source]

Modification des coordonnées seules du rect de publication de référence.

update_space(prop, refval)[source]

Calcul d’une propriété de type padding ou margin.