2005-11-30
 
gazpacho
HELSINKI - De laatste dagen ben ik nieuwe records aan het breken, met het versturen van rond de veertig email per dag... en dan te bedenken dat *ook* nog mijn plannen en rapportages en reviews en vergaderingen heb; het is een erg drukke tijd. Deze week en volgende week, daarna zou het een beetje moeten bedaren.

Ik heb een nieuwe versie van m'n ttb teletekst browser uitgebracht; geen nieuwe schokkende features, maar ik heb de installatieprocedure verder verbeterd. Ik heb al lang geen bugmeldingen meer ontvangen voor TTB, maar behoorlijk vaak ontvang ik email over installatieproblemen. En dan gaat het meestal over Distutils, het onderdeel van Python dat ik nu juist nodig heb voor de installatie. En hoewel Distutils al een tijdje deel uitmaakt van de Python-standaard, blijkt geen enkele (?) distributie het ook standaard te installeren. *zucht*.

Voor de user-interface van ttb ben ik overgeschakeld op Gazpacho. Gazpacho is niet alleen een Spaanse tomatensoep, maar ook een grafische UI-builder voor GTK+. Voorheen gebruikte ik altijd Glade, maar Gazpacho werkt iets fijner (zeer persoonlijk). Ik kan niet zo goed aangeven wat het verschil is, maar ik vind de UI wat fijner werken - de verschillen zijn echter niet zo groot. In beide gevallen teken je wat vensters op je scherm, zet wat knoppen hier en daar, wat invoervelden op strategische plekken, en klaar is je UI! Nu alleen nog wat code schrijven om wat te doen als er op zo'n knop gedrukt wordt, en alweer een kaskrakende applicatie geschreven ;-)

Een van de lastige problemen bij UI-builders is de integratie met programma-code. Als ik de UI een beetje aanpas, wil ik natuurlijk niet m'n hele programma herschrijven. Maar.. de eerste versies van Glade maakten het leven niet zo eenvoudig: als je klaar was met de UI drukte je op een knop en werd C-code (of een handjevol andere talen) gegenereerd. Dat wil zeggen, er werden bestanden uitgespuugd met de lege functies die dan door de programmeur moesten worden geïmplementeerd. Als je de UI wilde wijzigen, moest je opnieuw code genereren, je oude code copy-pasten, enzovoort. Erg vervelend.

Totdat iemand (ik geloof dat het James Henstridge was) op het idee kwam, om het interne formaat van Glade rechtstreeks te gebruiken. Glade sloeg namelijk de UI ook in een XML '.glade'-bestand op. Met behulp van libglade kun je dat bestand rechtstreeks in je programma laden. En bij veranderingen laadt je gewoon de nieuwe .glade. Je kunt zelfs verschillende versies hebben (bijv. voor verschillende resoluties), en tijdens runtime eentje kiezen.

Natuurlijk moet je een beetje voorzichtig zijn; als er namen veranderen in het .glade-bestand, moeten die natuurlijk ook in de code aangepast worden. Maar over het algemeen werkt het heel aardig. Een snelle manier om applicaties te ontwikkelen, vooral als de implementatie gebeurt in bijv. Python, zoals bij ttb.

Ook voor de 770 kijken we naar Glade/Gazpacho. Probleem is vooralsnog de vertraging die optreedt bij het starten van applicaties - de 'glade'-bestanden moeten door de XML-parser geïnterpreteerd worden, en de widgets moeten aangemaakt worden. Dat laatste moet natuurlijk wanneer libglade niet gebruikt wordt, maar het parsen levert een zeer merkbare vertraging op. We bekijken verschillende manieren om daar wat aan te doen... Bijv. door op de een of andere manier de reeds geparse'te XML op te slaan.

Het is ook interessant om te bekijken hoe het proces van software schrijven verbeterd kan worden - Gazpacho/libglade is een aardige manier om UI-ontwerpers veel directer bij de implementatie te betrekken.

Ik ken geen goede, recente tutorials voor Gazpacho, maar er is wel wat materiaal over het gebruik van libglade in applicaties; voor simpele voorbeelden: zie ttb (Python) of Sysprof (C).


0 Reacties:

Een reactie plaatsen


Emacs, the UberEditor Powered by Blogger