# 1. Dia FAQ (Frequently Asked Questions)

Contents

1. Metainformation
   1. Who maintains this FAQ?
   2. Where can I find the newest version of this FAQ?
   3. Who made this FAQ?
   4. What's new in this version of the FAQ?
   5. How do you pronounce "Dia"?
2. General usage
   1. How can I do anything but creating and moving objects?
   2. I try to change diagram properties, but nothing happens.
   3. I don't have a middle mouse button, what can I do?
   4. How can I set or change an accelerator key for a function in the menu?
   5. How can I set or change an accelerator key for one of the icons in the main window
   6. What are the five radio-buttons in the Select menu for?
   7. How do I add bends to a zig-zag line
   8. How do I make a zig-zag line go horizontally
   9. How do I change the properties of several objects at a time?
   10. Why can't I resize classes etc.
   11. Why do elements have a fixed number of connection points
   12. Why can't Dia rotate arbitrarily?
   13. Why can't I add more connection points to objects?
   14. Why don't the fonts work right?
   15. The fonts are really unreadably tiny, either on screen or when writing PNG.
   16. How do I use Dia in English (or other language) when my Operating System is set to a different language
   17. Why can't I select anything after loading a diagram?
   18. How can I define a standard font size for an object?
3. Saving and Printing
   1. What format is the .dia file
   2. How can I scale the diagram to fit a page
   3. How do I use a exported TeX/PSTricks file in my TeX document
   4. I wish I had nice zigzags and coils as in PSTricks. How could I get them
   5. How do I put (La)TeX formulas on my diagram
   6. Why is printing broken
   7. How can I use Dia to convert files without running X
   8. How do I make Dia use !PostScript fonts instead of Pango rendering
   9. When printing I get many pages of text starting with: %!PS-Adobe-2.0. What to do
4. Compiling Dia
   1. Why can't I compile Dia
   2. How can I convert the tar file to an rpm
   3. Can Dia compile on Mac OS X
   4. Why does my copy of Dia for Windows die when I try to load it
5. Extending Dia
   1. How do I make patches for Dia so that they are integrated with minimum delay
   2. After compiling, when I run Dia it fails with the following error:
   3. How do I add new shapes/sheets?
   4. Can Dia open Visio .vsd files?
6. Licensing
   1. Under what license is Dia released?
   2. Under what license are any diagrams I create in Dia held?

## 1.1. Metainformation

### 1.1.1. Who maintains this FAQ?

Lars Clausen < lars@raeder.dk > is the main maintainer, but anyone with an account the live.gnome.org Wiki can update it.

### 1.1.2. Where can I find the newest version of this FAQ?

The newest version should always be available from the Dia home page at http://live.gnome.org/Dia.

### 1.1.3. Who made this FAQ?

This FAQ was put together by Lars Clausen < lars@raeder.dk >. Most of the material came out of the Dia mailing list. The following people contributed more advice: Kerry < needles@industrialmusic.com >, James Henstridge < james@daa.com.au >, Simon Josefsson < simon@josefsson.org >, Jacek Pliszka < Jacek.Pliszka@fuw.edu.pl >, Steffen Macke < sdteffen@yahoo.com >, Robert Campbell < rob.campbell@visto.com >, Alan Horkan, and Hubert Figuiere < hfiguiere@teaser.fr >.

Wikification was done mainly by branko, WolfgangStoeggl, SteffenMacke and LarsClausen. Further information on who has updated it since wikification can be found under the history tab.

### 1.1.4. What's new in this version of the FAQ?

For change information, click the 'history' tab.

### 1.1.5. How do you pronounce "Dia"?

The general consensus is to pronounce it "dee-a", not "die-a" (in IPA: ['diə]), following the pronunciation of the first part of the word "Diagram" in Swedish, the language of the original creator Alexander Larsson, and in the languages of most of the later maintainers. But if you pronounce it your way, we're not going to bring out the pitchforks and torches. We'll just be a little confused when we hear it.

## 1.2. General usage

### 1.2.1. How can I do anything but creating and moving objects?

Like The Gimp, Dia depends heavily on a menu on the right mouse button inside the diagram. That menu contains all the diagram-specific actions and a few other things, so you almost never have to find the menu on the toolbox. A snapshot shows an example of the menu.

You can change to having a "normal" menu bar in the Preferences dialog. Note that this will only affect diagrams opened after the preferences are changed.

### 1.2.2. I try to change diagram properties, but nothing happens.

The preferences dialog only affects diagrams that are created thereafter. To change grid lines etc., go to the View menu and select settings there. The settings will be saved with the diagram.

### 1.2.3. I don't have a middle mouse button, what can I do?

Unix (XFree86): If EmulateThirdButton is enabled (which it should be if you have a two-button mouse), you can make a middle-button click by pressing both buttons simultaneously (an action also known as chording). Windows: If you don't have a middle mouse button, hold down the Ctrl key and use the right mouse button.

### 1.2.4. How can I set or change an accelerator key for a function in the menu?

This is possible since version 0.95, however it may not be the most user-friendly way. Find the file ".dia/menurc" in your home directory (that would be "C:\Documents and Settings\yourlogin\.dia\menurc" on Windows or "~/.dia/menurc" on *nix systems like Linux). Open the file with a text editor (e.g. gedit in Linux, or in Windows by using Start->Run and typing "notepad %USERPROFILE%/.dia/menurc" (without the quotes)).

Find a line that contains the accelerator (shortcut) you wish to change, e.g. if you want to change the "Delete" key for Edit/Delete, this would be the line:

`; (gtk_accel_path "<Actions>/display-actions/EditDelete" "Delete")`

Let's say you want to change it to Control+Delete, so change the line to:

`(gtk_accel_path "<Actions>/display-actions/EditDelete" "<Control>Delete")`

Notice that you have to delete the leading semicolon. The modifier keys (Ctrl, Alt, Shift) are written as <Control>, <Alt>, <Shift> and can be combined, e.g. "<Control><Shift>d" is a valid accelerator for Ctrl+Shift+d. Special keys such as Return, Insert, Delete are written as Return, Insert, Delete.

Save the file then. Note that Dia may not be running while you edit this file.

### 1.2.5. How can I set or change an accelerator key for one of the icons in the main window

These functions correspond to the items in the Tools menu. Set or change their accelerator keys there.

### 1.2.6. What are the five radio-buttons in the Select menu for?

They determine what happens when you drag-select objects. Normally, only the objects included in the drag area end up selected. By selecting other choices in the Select radio menu, you can change that behavior:

Union:

- Both the drag-selected objects and the previously selected objects end up selected.

Intersect:

- The only objects that end up selected are those that were already selected and were drag-selected.

Remove:

- Those previously selected objects that are in the drag area become unselected.

Invert:

- The objects in the drag area change selectedness: Unselected objects become selected, selected objects become unselected. The objects outside the drag area are not affected.

These operations correspond to set operations between the previously selected objects and the drag-selected objects.

### 1.2.7. How do I add bends to a zig-zag line

The right mouse button (or the middle mouse button, if you have the main menu on the right button, Gimp style) gives an object-specific menu. For zig-zag lines, poly lines and bezier lines, that menu allows you to add and remove bends.

### 1.2.8. How do I make a zig-zag line go horizontally

As of version 0.93, zig-zag lines support a primitive form of autorouting that is intended to solve this problem and make it easier to make the diagrams look good. The autorouting algorithm does not attempt to avoid objects, but should at least make the lines go the right direction out from connection points. If it doesn't appear to work, double-click the zig-zag line and check that autorouting is on for it. This setting can also be accessed from the object menu.

For previous versions, here is a workaround for how to make zigzags change direction:

Using the object-specific menu on the middle mouse button, create an extra segment at each end of the line, then delete the middle segment:

### 1.2.9. How do I change the properties of several objects at a time?

There isn't a good way to do this yet, as of version 0.96. There is a bad way: You can select all the objects you want to change, group them, then edit properties of the group. This will work, but has two drawbacks: 1) You will set *all* settable properties to the same value, so if you want to change the line width, but have different color objects, they will end up with the same color. 2) Any connections out of the group will be disconnected from their objects. There is currently work being done on fixing booth of these problems, but there is no deadline for it.

### 1.2.10. Why can't I resize classes etc.

The size of classes is decided by their contents, especially the text. Note that you can scale the entire diagram when you print, see the question about page fitting.

### 1.2.11. Why do elements have a fixed number of connection points

We've been thinking about how to allow more connection points. Point is, there are several different ways it could be done that all make sense, and we'd like to get the most usable of them, while maintaining backwards compatibility. Note that the standard Line object allows you to add more connection points to it by the middle mouse menu. You can in a pinch place a line along the edge of an object and use the lines connection points:)

### 1.2.12. Why can't Dia rotate arbitrarily?

While the GDK rendering engine provides support for rotated text, having rotated text is only part of the problem. We also need infrastructure so that handles, connection points, bounding boxes etc. are rotated along with the object. Help on this would be appreciated.

### 1.2.13. Why can't I add more connection points to objects?

You can, for some objects. Adding connection points in general is a tricky problem, as it is difficult to make sure that the points keep their placement after a reload. The standard line object allows adding more points via the object menu.

### 1.2.14. Why don't the fonts work right?

Font support is not very standard in X, especially when you want to make images, print, and send the files to other people. In Dia version 0.90 and earlier, you can improve things by installing the urw-aliases package (or the GhostScript fonts). After installing the package, you will need to do a simple edit of a config file. Edit `/etc/X11/fs/config` and move the line `/usr/share/fonts/default/urw-aliases` to just below the `...:unscaled` lines (make sure the commas are in the correct places after making the change). Then run `killall -USR1 xfs` to get the font server to reread its config file. The URW fonts should be used in place of the adobe ones they are clones of when an unscaled bitmap version can't be found.

As of 0.91, Dia on Unix uses the FreeType library to provide better font support. The fonts for this are in turn controlled by font-config. Note that this means that remote fonts servers cannot be used.

As of 0.96, fonts should keep their width correctly when zoomed in and out. However, due to differences in font rendering engines and in fonts available, the width may not be the same when moving files between computers, and particularly when moving between Windows and Unix.

### 1.2.15. The fonts are really unreadably tiny, either on screen or when writing PNG.

This should only be an issue for versions 0.92 to 0.94. If you are using any of these versions, you should upgrade.

Dia 0.91 assumed things about Pango that weren't guaranteed, but didn't make a difference at the time. However, Pango 1.2.4 and up changed so that Dia's wrong assumptions now cause problems. This is fixed in Dia 0.92.1. Alternatively, if you can't install 0.92.1, you can downgrade your Pango to below 1.2.4. We highly recommend using the newest version of Dia, though. In Dia 0.92-0.94, we used a reworked cache which still didn't quite keep different sizes of the same text apart, so text would change size between huge, tiny and normal. In 0.95, the cache is disabled.

### 1.2.16. How do I use Dia in English (or other language) when my Operating System is set to a different language

The recommended way to change the language in Dia is to change the Operating System language and Dia will follow the default. However many people have asked if they can use Dia in a language other than the current set default language. If the language you want is English the easiest approach is to move or remove the language files (.mo) and allow the default English to show through instead. (There also exists a slightly more complicated approach whereby you set the locale variable on the command line.)

### 1.2.17. Why can't I select anything after loading a diagram?

Check the layers dialog. The active layer didn't get saved with the file. None of the objects you are trying to select are on the default layer.

### 1.2.18. How can I define a standard font size for an object?

Double click on the object in the toolbox to open a dialog that allows you to specify a default font size for the object.

## 1.3. Saving and Printing

### 1.3.1. What format is the .dia file

The native Dia file format (extension .dia) is XML compressed with GZip. You can select not to compress the files in the Preferences or in the save dialog.

### 1.3.2. How can I scale the diagram to fit a page

In the Page Setup dialog (selected from File/Page Setup), select Fit to:, and the blue lines will continuously self-adjust to fit to a page (or several pages).

### 1.3.3. How do I use a exported TeX/PSTricks file in my TeX document

First add `\usepackage{pstricks`} to the preamble of your TeX document. Then include your image as

    \begin{figure}
    \centering
    \input{filename.tex}
    \caption{A caption}
    \label{figure:alabel}
    \end{figure}

in your document.

Note: PSTricks in the tetex-1.0.6-11 RPM (used in Red Hat Linux 6.2) is buggy. Easiest fix is to get pstricks.tex from CTAN and put it in `/usr/share/texmf/tex/generic/pstricks/`.

### 1.3.4. I wish I had nice zigzags and coils as in PSTricks. How could I get them

Draw them as standard lines in dia. Then in the .tex file replace \psline by \pccoil or \pczigzag. For more information on their arguments look into your PSTricks documentation included in your PSTricks package or at PSTricks home page. Careful! Lines with more then one segment have to be split into separate segments when pccoil and pczigzag are used.

### 1.3.5. How do I put (La)TeX formulas on my diagram

Put them as you would put them in TeX, e.g.: `$\delta^{\dagger}_2$`. At the moment of writing this FAQ it is not yet displayed correctly in dia but TeX code produced should be fine. The bounding-box of the formula will not be calculated correctly. We're hoping for some kind, LaTeX-loving soul to implement the interface to TeX that will allow us to get a bitmap rendering of the TeXified output. It probably would require some way to set TeX invocation string, preamble and postamble.

### 1.3.6. Why is printing broken

Dia has several ways to print: Dia print, Gnome print and Export as !Postscript. A given compilation of Dia uses either Dia print or Gnome print. Dia's support for Gnome print is currently buggy and disabled by default, but some distributions (Red Hat for one) compile it in anyway. If you have such a version of Dia installed, you can Export as !Postscript instead of printing, and then print the resulting file.

### 1.3.7. How can I use Dia to convert files without running X

Version 0.94 of Dia should be able to convert files without running X. However, a working installation of GTK is required to link the program, and Pango must be available for text conversion.

Earlier versions of Dia depend on X for various things, but it is planned to allow conversions without running X. In the meanwhile, you can use Xvbf to simulate an X server with the command:

`startx "/usr/bin/env DISPLAY=:1 /usr/bin/dia -e $HOME/tmp/foo.png $HOME/tmp/foo.dia" -- /usr/!X11R6/bin/Xvfb :1 -once -nolisten tcp`

Thanks to Basile Starynkevitch for this hint.

### 1.3.8. How do I make Dia use !PostScript fonts instead of Pango rendering

The current PostScript output on systems with font-config involves rendering the fonts as bezier curves. This gives an (almost) perfect output, but doesn't allow PostScript tools to operate on the fonts. If you want to get output using PostScript fonts, use the EPS export filter marked as "using PostScript Latin-1 fonts". To use this from the command line for conversions, add `--export-to-format=eps-builtin` to the command line.

Note that this export doesn't support other encodings than Latin-1 and is limited to the "standard 13" set of fonts. Please don't ask us to add other encodings to this. We will not do it. It's an interim solution while we try to get embedded fonts out of Pango (maybe using PangoPDF) or find a proper way to include partial fonts.

### 1.3.9. When printing I get many pages of text starting with: %!PS-Adobe-2.0. What to do

Buy a postscript printer or implement GDI printing ... The other option is to install Ghostscript along with its print redirector so you can have a Windows printer that filters things through gs.

## 1.4. Compiling Dia

### 1.4.1. Why can't I compile Dia

In most cases, it is because you have an old version of a support library. The libraries needed to compile Dia version 0.91+ are:

- pkg-config version 0.14.0 or higher.

- GTK version 2.0.0+

- and related libraries (glib, atk, pkg-config, pango). Pango version 1.1.5 or higher. Must be compiled with the PangoFT2 module. Pango 1.1.5 and higher depend on GLib version 2.1.3 or higher. PangoFT2 depends on font-config version 1.0.1 or higher.

- libxml version 2.3.9 or higher

- intltool version 0.21 or higher.

- freetype version 2.0.9 or higher on Unix.

Optional libraries that add extra features (for 0.91+):

- libpng (for png export support)

- gnome-libs (for Gnome support)

- libart version 2.1.0 or higher, for antialiasing and PNG export support.

- libxslt for the XSLT plug-in.

- Python and PyGtk2 for Python support

The libraries needed to compile Dia as of version 0.90 are:

- Glib version 1.2.0+ (required by GTK)

- GTK version 1.2.0+

- Gdk-Pixbuf version 0.7.0+ (can be replaced with Imlib version 1.8.0+)

- libxml version 1.8.5+

- intltool version 0.12 or higher.

- libunicode

  - version 0.4 (not the version 0.7 available at SourceForge). Optional libraries that add extra features (for 0.90):

- libpng (for png export support)

- gnome-libs (for Gnome support)

- bonobo (for document embedding support, requires Gnome)

- freetype version 2.0.9 or higher, for better font support.

- libart version 2.1.0 or higher, for antialiasing and PNG export support.

Note that if you use some package system (`dpkg` or `RPM`), you will need to download the development packages (`-dev` or `-devel`).

Some systems, notably Red Hat and derivatives, don't have `/usr/local/lib` in `/etc/ld.so.conf`. GNU applications by default install into `/usr/local` when compiled. To make Dia work there, either add `/usr/local/lib` to `/etc/ld.so.conf` and run ldconfig as root, or configure with `--prefix=/usr` to put everything in `/usr`.

### 1.4.2. How can I convert the tar file to an rpm

This section needs updating

As of version 0.95, Dia does not attempt to update its own .spec file, simply because there are too many differences between distributions. Instead, there is a subdirectory `WHERE` that contains various .spec files. Thus, the line below needs to have a .spec file specified.

`rpmbuild -ta dia-XXX.tar.gz`

### 1.4.3. Can Dia compile on Mac OS X

Yes, on Mac OS X 10.4.2, using fink versions of libtool 1.5.10, autoconf 2.59, and automake 1.9.4, Daniel Rogers has managed to compile Dia 0.94 under Mac. See this mail. It has not been reported to compile with any non-X port of Gtk2.

### 1.4.4. Why does my copy of Dia for Windows die when I try to load it

Because the HOME environment variable is not set. Add a line like this to your `autoexec.bat` file:

- `set HOME=c:\home`

then restart your computer and make sure `c:\home` exists. The path should not contain any spaces and is case-sensitive (`c:\Home` is not the same as `c:\home`).

As of Dia 0.88.1, this problem should no longer happen.

## 1.5. Extending Dia

### 1.5.1. How do I make patches for Dia so that they are integrated with minimum delay

Cyrille Chepelov answered this question in depth after yet another impractical patch had arrived on the list. To avoid headaches for everybody, please follow these words of wisdom:

The best way to generate these is to download the tree through anonymous CVS (from cvs.gnome.org, this is possible of course also for Windows with the "Universal Geek user interface device driver" (cygwin)).

Then, all what is necessary is to do `cvs adds` (commit will of course not be accepted), do a `cvs -z3 up -PAd` to check that the patch will be as up to date as possible, and issue the following command: `cvs -z3 diff -Nu 2>/tmp/diff.log | gzip >/tmp/some.patch.gz`

Study diff.log to check that no files have been unnecessarily touched. zless the patch to check that all changes are accounted for in ChangeLog and are justified (one patch per orthogonal set of changes is also preferred).

An alternative is to have two copies, one pristine and one work area, of the same tree, preferably a recent CVS snapshot. Modify all files and test in the work area; then make distclean in both trees, and in the directory which contains both trees, do something like :

    diff -urN dia-pristine dia-workarea >/tmp/some.patch
    grep "^+++" /tmp/some.patch # check that no files have been unnecessarily
    # touched, added or removed.
    less /tmp/some.patch # check that patch is correct
    gzip /tmp/some.patch

Again, this is possible even on a (okay, recent) Macintosh.

Send the patch as an attachment. Don't resend the same version of the patch twice on the list (when replying to yourself with updates...). Keep large patches (> 5-40 kb) for private mails and/or in Bugzilla (URL in the mailing list is of course welcome; small patches are okay, especially if some discussion on them is sought).

### 1.5.2. After compiling, when I run Dia it fails with the following error:

`"Couldn't find standard objects when looking for object-libs, exiting..."`

You're trying to run the Dia executable directly from the source directories. Either do `make install`, or run with the wrapper script app/run_dia.sh. That way, Dia will know where to find its objects.

### 1.5.3. How do I add new shapes/sheets?

An explanation is given in [http://www.gnome.org/projects/dia/custom-shapes doc/custom-shapes] in the source distribution on how the shape format works.

Sam Liddicott has provided a Dia/SvgToShapeXslt that will make a shape from any SVG file, including connection points. With this, it should be easy to create shapes with, say, Inkscape.

However, Dia now also has the capability of exporting a diagram as a shape. Each collection of shapes (called a sheet) should be kept together in a subdirectory of `~/.dia/shapes`, e.g, `~/.dia/shapes/Engines`. To make a shape, first design it in Dia. Then export it into your subdirectory. Two files will be generated, a .shape file and a .png file (the icon).

From version 0.90 and up, Dia features a Sheets and Objects editor which will allow you to load the shape into a sheet. It will also update Dia's loaded objects on the fly.

If you still want to do things by hand, update the corresponding sheet file in `~/.dia/sheets`, in this case called `Engines.sheet`. Example contents of a sheet file is:

    <?xml version="1.0" encoding="iso-8859-1"?> <!-- -*- xml -*- -->
    <sheet xmlns="http://www.lysator.liu.se/~alla/dia/dia-sheet-ns">
      <name>Engines</name>
      <description>Mechanical Engines</description>
      <contents>
        <object name="Engines - Gas">
          <description>A gas engine</description>
        </object>
      </contents>
    </sheet>

Each new object should be added to the sheet by adding an object section. Next time you restart Dia, the new objects should show up in the list of sheets.

If you want your sheets and shapes included in Dia, please create a .sheet.in file where the name and description tags are replaced by _name resp. _description. This allows us to have an external translation of the sheets. The sed script below outputs a .sheet.in file from a .sheet file:

    sed 's!<name>!<_name>!;s!</name>!</_name>!;s!<description>!<_description>!;s!</description>!</_description>!;'

### 1.5.4. Can Dia open Visio .vsd files?

No, it can't. Visio file format is a completely proprietary and undocumented file format. So it is really difficult to write code to read it. The now-defunct Software Bazaar offered a bounty of several thousand dollars for reverse-engineering the Visio format. We really would like to be able to do so.

An easier alternative would be to make a Visio plug-in that will allow conversion. Other programs have already done this for their proprietary formats. If somebody were to make such a script, we could set up a public server to do conversions.

With Visio 2002, it has become possible to export Visio diagrams as XML (.vdx). Microsoft, in their infinite generosity, has even published the Schema. Ian Redfern has made use of this, and a VDX importer/exporter is part of Dia as of version 0.96.

Ian Redfern is working on decoding the Visio format. If you have any interest in converting Visio files, please give him your assistance. Valek Filippov made a little research of the VSD/VSS file format. At some point Ian is going to hook the results to a VDX importer. Right now vsdump can be useful for dumping images embedded into VSS stencils to subsequent converting them into Dia sheets.

## 1.6. Licensing

### 1.6.1. Under what license is Dia released?

Dia is released under the GPL, version 2. The full text and more information about the GPL can be found on the GPL website.

### 1.6.2. Under what license are any diagrams I create in Dia held?

As explained on the GPL website, the developers of Dia have no claim to any diagrams you create using Dia. Therefore, you are free to license any diagrams you create with Dia however you wish.

If you are looking for an open license with which to license your diagrams, you might want to consider the Creative Commons.

Dia/Faq (last edited 2009-04-13 13:40:09 by NickMoore)