MTES-MCT / metadata-postgresql

Plume : gestion des métadonnées du patrimoine PostgreSQL
https://mtes-mct.github.io/metadata-postgresql/
GNU Affero General Public License v3.0
1 stars 1 forks source link

Peut-on retirer le premier niveau de cadre du formulaire ? #75

Closed alhyss closed 2 years ago

alhyss commented 2 years ago

Le cadre en question contient tous les widgets de l'onglet. Il est généré au moment où la clé correspondant à l'onglet passe dans la boucle de génération des widgets. Comme il ne fait que doubler l'onglet, il n'apporte rien. Au contraire, c'est un cadre de plus dans lequel viendront s'imbriquer tous les autres, il alourdit fortement les formulaires.

Bref, il faudrait l'enlever... et - à voir le code - je pense que c'était bien l'idée de départ, mais que ça s'est perdu suite à des modifications que j'ai faites sur le dictionnaire.

Gestion actuelle de la mise en forme des groupes par plume.bibli_objets.generationObjets :

    self.mFirst = _valueObjet['object'] == 'tab'
    ...

    if _valueObjet['main widget type'] == "QGroupBox" :
       ...

       if _valueObjet['object'] == 'group of properties' :
          _colorQGroupBox = self.colorQGroupBox if self.mFirst else self.colorQGroupBoxGroupOfProperties
          _epaiQGroupBox  = self.epaiQGroupBox #Si on souhaite gérer l'épaisseur du premier cadre 
          _epaiQGroupBox  = 0 if self.mFirst else self.epaiQGroupBox 
       elif _valueObjet['object'] == 'group of values' :
          _colorQGroupBox = self.colorQGroupBoxGroupOfValues
          _epaiQGroupBox  = self.epaiQGroupBox 
       elif _valueObjet['object'] == 'translation group' :
          _colorQGroupBox = self.colorQGroupBoxTranslationGroup
          _epaiQGroupBox  = self.epaiQGroupBox 
       else :   
          _colorQGroupBox = self.colorDefaut
          _epaiQGroupBox  = self.epaiQGroupBox 
       _mObjetGroupBox.setStyleSheet("QGroupBox {   \
                              margin-top: 6px; \
                              margin-left: 10px; \
                              font-family:" + self.policeQGroupBox  +" ; \
                              border-style: " + self.lineQGroupBox  + ";    \
                              border-width:" + str(_epaiQGroupBox)  + "px ; \
                              border-color: " + _colorQGroupBox  +";      \
                              font: bold 11px;         \
                              padding: 6px;            \
                              }")

La condition if _valueObjet['object'] == 'group of properties' prévoit une gestion spécifique du cas des onglets (self.mFirst valant True) qui fait théoriquement disparaître la bordure... sauf que les onglets ne remplissent pas cette condition, car pour eux _valueObjet['object'] vaut désormais 'tab' et non plus 'group of properties'. Au final, les onglets passent dans le else et on obtient une bordure dans la couleur par défaut.

En admettant qu'on peut aussi supprimer la marge entre l'extérieur et la bordure quand il n'y a pas de bordure (pas de margin-top et margin-left, on se contente de padding), j'ai tenté avec ce qui suit, et le résultat me semble déjà plus satisfaisant visuellement ?

    self.mFirst = _valueObjet['object'] == 'tab'
    ...

    if _valueObjet['main widget type'] == "QGroupBox" :
       ...

       _marginTopGroupBox = 6
       _marginLeftGroupBox = 10
       _epaiQGroupBox  = self.epaiQGroupBox
       _colorQGroupBox = self.colorDefaut
       if self.mFirst:
          _epaiQGroupBox  = 0
          _marginTopGroupBox = 0
          _marginLeftGroupBox = 0
       elif _valueObjet['object'] == 'group of properties' :
          _colorQGroupBox = self.colorQGroupBoxGroupOfProperties
       elif _valueObjet['object'] == 'group of values' :
          _colorQGroupBox = self.colorQGroupBoxGroupOfValues
       elif _valueObjet['object'] == 'translation group' :
          _colorQGroupBox = self.colorQGroupBoxTranslationGroup

       _mObjetGroupBox.setStyleSheet("QGroupBox {   \
                              margin-top: " + str(_marginTopGroupBox) + "px; \
                              margin-left: " + str(_marginLeftGroupBox) + "px; \
                              font-family:" + self.policeQGroupBox  +" ; \
                              border-style: " + self.lineQGroupBox  + ";    \
                              border-width:" + str(_epaiQGroupBox)  + "px ; \
                              border-color: " + _colorQGroupBox  +";      \
                              font: bold 11px;         \
                              padding: 6px;            \
                              }")
WREATCHED commented 2 years ago

Je vais regarder, mais je ne vois pas pourquoi tu tag "Bug" ? Et si ce n'est pas un bug, ce n'est pas prioritaire ? mais pourquoi pas

WREATCHED commented 2 years ago

image

WREATCHED commented 2 years ago

Version poussée sur le Git

alhyss commented 2 years ago

Merci !

J'ai hésité aussi à appeler ça "bug", mais finalement ça paraissait logique vu qu'il s'agissait de rétablir le comportement que tu avais prévu au départ (tout ça parce que j'avais changé la valeur de la clé 'object' pour les onglets entre temps...).

Et c'est bien que tu aies pu le faire rapidement. Je trouve le formulaire beaucoup plus lisible comme ça !