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
attributs d’alignements
valeur d’alignement
valeur d’alignement
valeur d’alignement
attribut de flex
références internes aux attributs de position et de dimension
é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.
équivalent de la ppté css position fixed, l’élément est positionné relativement à la fenêtre.
é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).
équivalent de la ppté css position static, l’élément est positionné selon le layout de son conteneur parent.
liste des valeurs possibles pour l’attribut position
stratégie de positionnement par alignement
stratégie de positionnement par offsets
stratégie de positionnement relative (in flow)
stratégie de positionnement par coordonnée
stratégie de dimensionnement par flex
stratégie de dimensionnement par offsets
stratégie de dimensionnement par dimension explicite
attributs d’adaptation au contenu
valeur d’alignement
valeur d’alignement
valeur d’alignement
Alignement horizontal.
Offset de positionnement bas.
Valeur de flex.
Rect de référence absolu.
Hauteur totale (padding et margin compris) publique.
Appartenance au « flow de layout » parent (bool)
Offset de positionnement gauche.
Margin en px.
Hauteur max en px.
Largeur max en px.
Hauteur min en px.
Largeur min en px.
Padding en px.
VirtualContainer parent
Position au cens css.
Rect de publication de l’objet
Rect de publication de référence (celui du parent en général).
Redirige la propriété rect vers self.publicationRect
Offset de positionnement droit.
référence au RootContainer
Adaptation à la hauteur du contenu (bool).
Adaptation à la largeur du contenu (bool).
Offset de positionnement haut.
Rect de publication avant adaptation au contenu.
Alignement vertical.
Largeur totale (padding et margin compris) publique.
Abcisse locale publique.
Abcisse locale absolue, hors flow de layout (usage interne).
Abcisse locale calculée imposée par le layout parent (usage interne).
Ordonnée locale publique.
Ordonnée locale absolue, hors flow de layout (usage interne).
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.
La position, les dimensions ou les rects internes (le contenu pour des subclasses) ont été modifiés, le rendu graphique n’est plus valable
Invalide le rect global.
Invalide les rects de publication interne (contenu et bordure).
La position a été modifiée, le rendu graphique dans la surface de publication du RealContainer assurant la publication n’est plus valable.
Invalide les propriétés _xpos et _ypos, attributs « cachés » derrière les getters de x et y.
Marque l’objet comme non resizé.
discard_strategy
(prop)Invalide la stratégie associée à la propriété prop.
Tests préalables aux calculs de resize.
Dessinne ou redessinne l’objet.
Retourne le Rect dédié à l’affichage d’une bordure ou d’un fond une fois margin retirée.
Retourne le Rect dédié à l’affichage du contenu, une fois margin et padding retirés.
Retourne la position absolue exacte par rapport au Root.
Doit retourner les dimensions réelles du contenu (texte, image).
get_metric_value
(prop)Retourne la valeur calculée de self.metricparams[prop]
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.
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).
Méthode dédiée aux éléments en position fixed, appelée par le container parent alternativement à update_publicationRefRect_coords.
Appelée lorsque l’attribut flex a été modifié.
Appelée lors d’un changement explicite de coordonnée via le layout parent.
Appelée lorsque l’objet entre ou sort du flux de layout parent.
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).
Appelée lorsque le padding a été modifié.
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
Appelée lorsque les coordonnées du rect de publication de référence (self._publicationRefRect) ont été modifiées (mais pas les dimensions).
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).
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.
Spécifie au besoin des valeurs par défaut (snaps).
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]
Met à jour le rect de bordure/fond.
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.
Mise à jour du rect global.
Met à jour les rects de publication interne (contenu et bordure).
Recalcule _xpos et _ypos, attributs « cachés » derrière les getters de x et y.
update_publicationRect
([aftersnap])Mise à jour de publicationRect.
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).
-
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_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.
-
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_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_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_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_flow_coord_changed
()[source]¶ Appelée lors d’un changement explicite de coordonnée via le layout parent.
-
on_offset_changed
(prop)[source]¶ Appelée lors d’un changement explicite d’offset (top, bottom, left, right).
-
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).
-
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_metric
(value)[source]¶ Parse une propriété de type BoxModelObject.METRIC_ATTR.
- Renvoie
un objet MetricValue ou None.
-
place
(x, y)[source]¶ Positionne l’objet aux coordonnées locales x, y sans modifier les métrics, modifie directement self.publicationRect.
-
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é
-
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_pos_coords
()[source]¶ Recalcule _xpos et _ypos, attributs « cachés » derrière les getters de x et y.