Une journée de codage sur pgAdmin

Ça faisait un petit moment que je n'avais pas bossé sur pgAdmin. J'ai profité de l'après-midi et la soirée du samedi pour bosser sur plusieurs patchs :

  • raccourcis des menus contextuels mal affichés ;
  • activation du champ SQL dans les fenêtres de propriétés ;
  • utilisation du dialogue de couleurs pour la fenêtre de propriété du serveur ;
  • séparation du champ commentaire dans son propre onglet.

Raccourcis

Depuis un petit moment, les menus contextuels de pgAdmin s'affichaient mal. Au lieu d'avoir la lettre du raccourci soulignée, j'avais un tiret bas devant la lettre :

patch1.png

Je pensais que c'était de ma faute (mauvaise compilation, mauvaise configuration, etc). Un mail sur pgadmin-support m'a indiqué que je n'étais pas le seul. Après une discussion avec Dave et quelques tests, je me suis aperçu que la version 2.8.5 de wxWidgets semblait être la coupable. À force de recherche, j'ai fini par retrouver le commit responsable du problème sur le SVN de wxWidgets. Au prix d'une longue conversation, j'ai même réussi à convaincre les développeurs de wxWidgets de la présence de ce bug. La correction est apparue hier soir sur leur dépôt (branche WX_2_8_BRANCH). La version 2.8.8, contenant ce correctif, devrait bientôt sortir.

Ajout du dialogue de couleur

Lors de pgcon2008, Dave a intégré un patch qui permet d'ajouter une couleur de fond pour chaque serveur sur le navigateur d'objets :

patch2.png

Bon, je ne trouve pas que ce soit super beau, mais ce qui m'a surtout gêné, c'est l'interface utilisateur pour saisir la couleur. Un utilisateur doit saisir le code couleur sous la forme d'une couleur HTML. C'est juste un bête champ texte. J'en ai donc profité pour ajouter un bouton :

patch3.png

et j'ai fait en sorte que le clic sur ce bouton affiche la fenêtre standard de saisie d'une couleur :

patch4.png

Ce patch a été accepté, il est enregistré dans le SVN depuis hier soir.

Activation du champ SQL

Jusqu'à la version 1.8, l'onglet SQL ne permet pas de modifier le champ contenant la requête SQL. En cas d'erreur de pgAdmin pour la génération du SQL permettant d'appliquer les modifications de l'utilisateur sur l'interface, je pense qu'il faut avoir un moyen pour que l'utilisateur modifie le SQL généré par pgAdmin. Le meilleur exemple est lorsqu'on ajoute une colonne avec une contrainte NOT NULL. Sans plus d'informations, la requête échouera car la nouvelle colonne n'aura aucune valeur et ne pourra pas se voir ajouter la contrainte NOT NULL. IL faut donc que l'utilisateur puisse ajouter le code SQL permettant l'ajout d'une valeur par défaut aux lignes déjà présentes.

Mon patch ajoute une case à cocher permettant d'autoriser la modification du champ SQL. Comme Dave et moi ne voulons pas gérer le reverse engineering des modifications apportées dans le champ SQL, tous les objets des autres onglets sont désactivés. On peut voir le contenu des onglets, mais pas le modifier.

J'ai parlé d'un champ texte pour la requête SQL. J'aurais plutôt dû parler de deux champs car il y a deux groupes de requêtes. En effet, deux objets peuvent avoir besoin de deux transactions de modification : les bases de données et les tablespaces. Ceci est dû à une correction sur la version 8.3 de PostgreSQL.

Voici donc le résultat :

patch5.png

Dernier problème à régler : si un utilisateur modifie le nom de l'objet créé dans la requête, le navigateur d'objet affiche toujours le nom indiqué dans le champ texte Nom, et pas celui modifié. Après un rafraichissement, tout va bien... mais en attendant, l'affichage est faux. Donc, il me reste du boulot sur celui-ci.

Séparation du champ commentaire

L'idée de ce patch était de déplacer le champ Commentaire dans un autre onglet car certains dialogues deviennent vraiment trop longs. Sur mon portable, je n'ai plus accès au tiers du dialogue de création/modification d'une table (ce qui est gênant pour cliquer sur le bouton OK). Aucune technicité requise pour ce patch, juste cinq heures à passer à créer le nouvel onglet, à déplacer le texte statique et le champ texte dans ce nouvel onglet, et à revoir les placements de contrôles, pour chaque dialogue sur les propriétés des objets. Je ne sais pas comment, j'ai perdu la moitié de mon patch. Cependant, Dave est plutôt contre pour au moins deux bonnes raisons :

  • deux dialogues ont un grand nombre d'onglets, ce qui rend leur gestion plus douloureuse qu'autre chose ;
  • il existait une règle sur la création de dialogues, règle que je ne connaissais (car planqué dans une ancienne branche, et oublié depuis là-bas)... Dave l'a d'ailleurs ajouté à la page Wiki sur le développement de pgAdmin.

Bref, patch abandonné.

Conclusion

/me content

La plupart de mes travaux de samedi dernier ont donné un résultat direct, soit sur wxWidgets soit sur pgAdmin. J'ai encore plein d'idées à mettre en place. J'ai d'ailleurs envoyé deux mails pour parler de deux gros projets :

Du boulot en prévision :)

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet