Dia - expert na diagramy

2. 12. 1999
Doba čtení: 5 minut

Sdílet

Po několika letech programování jsem konečně pochopil, že není úplně ideální vymýšlet strukturu programu průběžně při jeho tvorbě a začal jsem si návrhy kreslit na papír. Žijeme ale v době informačních technologií, tak proč diagramy netvořit moderněji?

Program Dia (jehož název ve mně evokuje vzpomínku na dietní limonádu blíže nedefinovatelné chutě a barvy z totalitních dob) je tím pravým ořechovým pro tvorbu téměř libovolných diagramů a schémat. Inspirací byl autorům velice populární komerční program Visio z platformy Windows (jeho domovská stránka je zde, ale v NN ji neuvidíte, protože není ukončena tabulka, v Lynxu je to také dost bída, místo ALTů je všude něco jako home_head_new.gif – i tak může vypadat prezentace známého produktu :( ). Jak hodně se Dia svému vzoru blíží, to nemohu bohužel posoudit, neboť Visio neznám.


Funkce a uživatelské rozhraní

Paleta nástrojů Dia má grafické rozhraní prakticky stejné jako GIMP, což znamená, že sestává z více plovoucích oken. Trvale otevřené budete mít asi jenom dvě – paletu s nástroji a vlastní diagram. Při tvorbě složitějších schémat se vyplatí využívat schopnosti programu organizovat prvky do vrstev a tím pádem přibude paleta vrstev. Prakticky posledním dialogem v programu jsou vlastnosti objektu. Problém je, že tento dialog se nepřizpůsobuje právě vybranému prvku, takže nemá cenu ponechávat jej otevřený. Ostatně toto okno se objeví vždy po dvojím kliknutí na objekt, lze ho tedy vyvolat velice snadno bez nutnosti pustit myš.

Paleta nástrojů má tři části. První jsou klasické nástroje pro výběr objektu, zvětšení nebo posun výřezu a také pro vkládání základních primitiv – obdélníku, elipsy, čáry (tvořenou buď dvěma nebo více body), oblouku, pravoúhlé čáry, bitmapového obrázku a textu. Ve druhé části palety je několik záložek s prvky pro různé typy diagramů (k těm se dostaneme později). Poslední část tvoří atributy objektů – barva popředí a pozadí, tloušťka, typ a zakončení čar.

Další funkce se ukrývají na pravém tlačítku myši. Dia rovněž umožňuje geniálním způsobem (známým právě z GIMPa) definovat uživatelské horké klávesy. Stačí pouze umístit kurzor v menu na některou položku a pak stisknout požadovanou kombinaci kláves. Toť vše.

Diagram se tvoří skládáním z objektů, které lze rozdělit na dva typy: vlastní prvky a spojnice mezi nimi. Pro objekty obou typů platí to, že obsahují jeden nebo více kontaktních bodů. Umístíte-li kontaktní bod spojnice na kontaktní bod prvku, oba objekty se slepí a přesun nebo modifikace jednoho z nich pak ovlivňuje ten druhý. Kliknutím na spojnici a následným přetažením jejího kontaktního bodu lze spoj opět jednoduše zrušit. Tento způsob tvorby diagramů je celkem intuitivní a efektivní. Při vhodné volbě typu spojnic lze pak snadno přesouvat prvky v diagramu a doladit jeho vzhled třeba až po jeho dokončení. Pro každý prvek lze samozřejmě nastavovat množství parametrů, od barev přes fonty až po zarovnání textu.


Knihovny prvků a rozšiřitelnost

K programu (alespoň verze 0.81) je přibaleno sedm knihoven prvků, které jsou dostupné právě přes ony zmiňované záložky na nástrojové paletě. Jsou to knihovny ER (o té vážně netuším, k čemu je dobrá), Flowchart (klasické vývojové diagramy, tyto prvky jsem použil v příkladu), FS (opět netuším, k čemu je určena), Network (prvky pro znázorňování topologií počítačových sítí), Sybase (produkty Sybase, pro navrhování struktur datových skladů a podobně), Circuit (základní symboly pro navrhování elektrických obvodů) a UML (což je jazyk pro grafický popis objektově orientovaných projektů).

To už je docela široká nabídka. Dia ovšem počítá s dalším rozšiřováním. Další prvky totiž lze tvořit pomocí jazyku SVG, což je v podstatě popis vektorových obrázků v XML. Zní to složitě, ale není to tak hrozné. Následující příklad ukazuje, jak vytvořit prvek „přeškrtnutá nula“ s připojeným polem pro vstup textu a kontaktními body na obou koncích přeškrtnutí:

<?xml version="1.0"?>

<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns"
        xmlns:svg="http://www.w3.org/Graphics/SVG/svg-19990730.dtd">
    <name>Xyz - Nula</name>
    <description>Skrtnuta nula</description>
    <connections>
        <point x="1" y="-1" />
        <point x="-1" y="1" />
    </connections>
    <textbox x1="-3" y1="1.5" x2="3" y2="3" />
    <svg:svg width="1.0" height="1.0">
        <svg:circle cx="0" cy="0" r="1" style="fill: none" />
        <svg:line x1="1" y1="-1" x2="-1" y2="1" />
    </svg:svg>
</shape>

Tímto způsobem lze tvořit i mnohem složitější objekty (viz třeba již zmiňovaná knihovna Circuit). Dia tedy může snadno uspokojit široké spektrum požadavků.


Internacionalizace

Podpora češtiny je prvním kamenem úrazu. Program má problémy se vstupem mrtvých kláves a rovněž tisk zlobí. Obojí je naštěstí relativně snadno řešitelné. K akceptování českých znaků program donutí knihovna libI18Nforce a tisk napraví ogonkify (pro tento účel se spouští takto: ogonkify -ATH -N).
I když lze tyto problémy obejít, je to škoda a Dia má za to u mě body dolů.

Dia rovněž podporuje lokalizaci prostředí pomocí katalogů, ale čeština mezi překlady zatím není. Snad v budoucnu.

Diagram
Vzorový diagram



Co se mi nelíbilo

bitcoin_skoleni

Dia se mi hodně líbí, ale našel jsem pár věcí, které mě vůbec nepotěšily:

  • Nemožnost měnit hromadně parametry objektů – je docela otravné, když měníte font u dvaceti nebo více prvků
  • Pravoúhlá spojnice (zigzagline) zlobí – když poslední segment vede zprava doleva, kreslí se šipka obráceně. Obyčejná více-bodová čára naštěstí tímto nešvarem netrpí.
  • Dialog s vlastnostmi objektu se nemění podle vybraného prvku
  • Dia občas spadne – ne příliš často, ale stejně doporučuji pravidelně ukládat
  • Chybějící dokumentace – na všechno musíte přijít sami, naštěstí je program hodně intuitivní (nejdéle mi trvalo zjistit, že na prostředním tlačítku myši je ukryto kontextové menu)


Závěrem

Dia je dle mého názoru aplikace, která se momentálně pohybuje na rozhraní mezi beta verzí a stabilní aplikací. Má sice několik much (které by snad neměl být problém vychytat), ale ty vyvažuje dobrá funkčnost, příjemné ovládání a v neposlední řadě i inteligentně navržená struktura programu, zaručující snadnou adaptabilitu na specifické použití.

P.S. diagram, který je na obrázku, si můžete stáhnout zde (postscriptový výstup). Jde o notoricky známý postup při řešení problémů :)

Autor článku