<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY okteta "<application
>Okteta</application
>">
  <!ENTITY kappname "&okteta;">
  <!ENTITY package "kdesdk">
  <!ENTITY Friedrich.Kossebau
"<personname
><firstname
>Friedrich</firstname
><othername
>W. H.</othername
><surname
>Kossebau</surname
></personname
>">
  <!ENTITY Friedrich.Kossebau.email "<email
>kossebau@kde.org</email
>">
  <!ENTITY Alex.Richardson
"<personname
><firstname
>Alex</firstname
><surname
>Richardson</surname
></personname
>">
  <!ENTITY Alex.Richardson.email "<email
>alex.richardson@gmx.de</email
>">
  <!ENTITY % Dutch "INCLUDE">
  <!ENTITY % addindex "IGNORE">
]>

<book lang="&language;">

<bookinfo>
<title
>De handboek van &okteta;</title>

<authorgroup>
    <author
><firstname
>Friedrich</firstname
><othername
>W. H.</othername
><surname
>Kossebau</surname
> <affiliation
> <address
>&Friedrich.Kossebau.email;</address>
      </affiliation>
    </author>
    <author
><firstname
>Alex</firstname
><surname
>Richardson</surname
> <affiliation
> <address
>&Alex.Richardson.email;</address>
      </affiliation>
    </author>
&ged.vertaald;&Freek.de.Kruijf; 
</authorgroup>

<copyright>
<year
>2008, 2010, 2011</year>
<holder
>&Friedrich.Kossebau; and &Alex.Richardson;</holder>
</copyright>

<legalnotice
>&FDLNotice;</legalnotice>

<date
>2011-10-13</date>
<releaseinfo
>0.8.0 (&kde; 4.8)</releaseinfo>

<abstract>
  <para
>&okteta; is een eenvoudige bewerker voor de ruwe data van bestanden. Dit type programma wordt ook wel hex-editor of binaire editor genoemd.</para>
</abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>&package;</keyword>
<keyword
>Okteta</keyword>
<keyword
>beeld</keyword>
<keyword
>bewerken</keyword>
<keyword
>bits</keyword>
<keyword
>bytes</keyword>
<keyword
>binair</keyword>
<keyword
>octaal</keyword>
<keyword
>hexadecimaal</keyword>
<keyword
>hex-bewerker</keyword>
<keyword
>ruwe gegevens</keyword>
</keywordset>
</bookinfo>

<chapter id="introduction">
<title
>Introductie</title>

<para
>&okteta; is een eenvoudige bewerker voor de ruwe gegevens van bestanden.</para>

<para
>De gegevens worden weergegeven in twee varianten: als de numerieke waarde van de bytes en als het teken dat behoort bij de waarden. Waarden en tekens kunnen getoond worden in twee kolommen (de traditionele weergave in hex-editors) of in rijen met de waarde boven het teken. Bewerken kan gedaan worden zowel in de waarden als in de tekens.</para>

<para
>Naast de gebruikelijke bewerkingsmogelijkheden, biedt &okteta; ook een kleine set hulpmiddelen, zoals een tabel die decoderingen laat zien in algemene eenvoudige typen gegevens, een tabel die alle mogelijke bytes laat zien met zijn teken en overeenkomende waarden, statistische informatie, een rekenmachine voor een controlesom, een filter en een hulpmiddel voor extractie van tekenreeksen.</para>

<para
>Alle wijzigingen aan de geladen gegevens kunnen eindeloos teruggezet of opnieuw gedaan worden.</para>

</chapter>

<chapter id="basics">
<title
>Grondbeginselen</title>

<sect1 id="starting-basics">
<title
>&okteta; opstarten</title>

    <para
>Type <userinput
><command
>okteta</command
></userinput
> op een commandoprompt of selecteer <guimenuitem
>Hexbewerker</guimenuitem
> uit de groep  <menuchoice
><guisubmenu
>Toepassingen</guisubmenu
><guisubmenu
>Hulpmiddelen</guisubmenu
> </menuchoice
> in het toepassingenstartpaneel.</para>

    <para
>De standaard &Qt; en &kde; commandoregelopties zijn beschikbaar en kunnen worden getoond door <userinput
><command
>okteta</command
> <option
>--help</option
></userinput
> in te voeren.</para>

    <para
>Commandoregelopties specifiek voor &okteta; zijn:</para>

    <para
><option
><replaceable
>&lt;&URL;('s)&gt;</replaceable
></option
> - open bestand(en) uit de gespecificeerde &URL;('s)</para>

<!--<para
><option
>- -offset</option>
<replaceable
>&lt;offset&gt;</replaceable
> jump to position
<replaceable
>&lt;offset&gt;</replaceable
> in the opened file.</para
>-->
</sect1>

<sect1 id="usage-basics">
<title
>Gebruik</title>

    <para
>Het hoofdvenster van &okteta; heeft de volgende componenten: een menubalk, een werkbalk, een statusbalk, één of meer zijbalken met hulpmiddelen en het hoofddeelvenster met de tabbladen met gegevensweergaven.</para>

    <para
>Wanneer een bestand is geopend of een nieuwe reeks bytes wordt aangemaakt, dan worden de bytes, die er in zitten, achtereenvolgend getoond in regels met een gegeven aantal bytes per regel. Ze worden getoond in twee varianten: als de numerieke waarde van de bytes en als het teken toegekend aan de waarde. Waarden en tekens kunnen gescheiden van elkaar worden getoond in twee kolommen of bij elkaar met de waarde boven het teken. Aan de linkerzijde staan de offsets van het eerste byte in elke regel.</para>

    <para
>De behandeling is vergelijkbaar met die in de meeste tekstbewerkers: de gegevens kunnen bewerkt worden, geknipt, gekopieerd, geplakt, versleept en losgelaten zoals dat met tekst kan. Een cursor markeert de huidige positie. Op de <keycap
>Insert</keycap
>-toets drukken schakelt tussen de modi overschrijven en invoegen. De modus overschrijven is strikter dan in tekstbewerkers, omdat het geen bewerking toestaat die de lengte van de reeks bytes wijzigt.</para>

    <para
>Other than in text editors the content is displayed in two variants. Only one of these is active with regard to new input. There are two linked cursors shown for the value and the character display, the cursor of the active one is blinking. With the characters active, characters can be entered as known from text editors. With the values active, typing a digit will open a minimal editor to enter the rest of the value.</para>

    <para
>The search dialog allows the user to search for a specific string of bytes, definable as values (hexadecimal, decimal, octal, binary) or text (current 8-bit encoding or UTF-8).</para>

    <para
>Multiple byte arrays can be open at the same time, but only one can be active. Use the <guimenu
>Windows</guimenu
> menu to select which byte array will be active.</para>
</sect1>


</chapter>

<chapter id="tools">
  <title
>Hulpmiddelen</title>

<!-- The tool Versions is not part of released versions,
just used for development, so no need to document it. -->

<sect1 id="tools-overview">

  <title
>Overzicht</title>
  <para
>&okteta; brings some tools, some to analyze and manipulate the byte arrays and some with more general purpose. These tools can be activated or deactivated from the <guimenu
>Tools</guimenu
> entry in the menu bar. Each tool has a small view, which docks either in one of the sidebars or freely floats as a window. You can dock, undock, rearrange and also stack the tool views with the mouse, by pressing the &LMB; on the title bar of a tool view, moving it as you like and releasing the &LMB; to complete the action, otherwise cancel it by pressing the &Esc; key.</para>

<sect2>
  <title
>Analyzers en manipulatoren</title>
<variablelist>
  <varlistentry>
    <term
>Bytetabel</term>
    <listitem
><para
>De tabel laat alle mogelijke byte-waarden zien, zowel als teken als de numeriek waarde.</para>
    <para
>The selected value can be inserted at the cursor position for a defined number of bytes. This can be achieved by using the <guibutton
>Insert</guibutton
> button or double-clicking the line in the table.</para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Binaire filter</term>
    <listitem
><para
>The filter performs binary operations on the selected bytes. After choosing the operation (AND, OR, ROTATE..) the parameters, if any, can be set in the box below. The filter is executed on the use of the <guibutton
>Filter</guibutton
> button.</para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Tekenreeksen</term>
    <listitem
><para
>This tool locates the strings in the selected bytes. After choosing the minimum string length, the strings are grepped for on the use of the <guibutton
>Extract</guibutton
> button. The list of the strings displayed can be narrowed by entering a filter term.</para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Statistieken</term>
    <listitem
><para
>This tool builds a statistic for the selected bytes. The statistic gives the frequency of the occurrence of each byte value in the selection. It can be calculated by using the <guibutton
>Build</guibutton
> button.</para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Controlesom</term>
    <listitem
><para
>This tool calculates various checksums or hashsums for the selected bytes. After choosing the algorithm and setting the parameter, if any, the sum is computed on the use of the <guibutton
>Calculate</guibutton
> button.</para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Decoderingtabel</term>
    <listitem
><para
>The table displays the values of the byte or the bytes starting at the cursor for some common simple data types like Integer or Float, but also UTF-8. Double-clicking on a line in the table opens an editor, so the value can be edited and changed.</para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Structuren</term>
    <listitem
><para
>This tool enables investigating and editing of byte arrays based on user-creatable structure definitions. Detailed instructions are in an own <link linkend="tools-structures"
>section</link
>.</para
></listitem>
  </varlistentry>
</variablelist>
</sect2>

<sect2>
  <title
>Algemene hulpmiddelen</title>
<variablelist>
  <varlistentry>
    <term
>Bestandssysteem</term>
    <listitem
><para
>Dit hulpmiddel biedt een ingebedde bestandsbrowser die gebruikt kan worden om te openen bestanden te selecteren.</para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Documenten</term>
    <listitem
><para
>This tool shows all currently created or loaded files. Symbols mark the file with the currently active view and also show which files have unsaved changes or which storage copy has been modified by another program.</para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Bladwijzers</term>
    <listitem
><para
>This tool can be used to manage the bookmarks, alternatively to the <link linkend="bookmarks-menu"
><guimenu
>Bookmarks</guimenu
></link
> menu. <note
><para
>Bookmarks are currently only transient and not saved if you close a byte array or the whole program.</para
></note
></para
></listitem>
  </varlistentry>

  <varlistentry>
    <term
>Bestandsinformatie</term>
    <listitem
><para
>This tool displays some information about the current file, including its type, the location of storage and the size.</para
></listitem>
  </varlistentry>
</variablelist>
</sect2>

</sect1>


<sect1 id="tools-structures">

    <title
>Hulpmiddel voor structuren</title>

    <sect2>
      <title
>Algemeen</title>

      <para
>The Structures tool enables analyzing and editing of byte arrays based on user-creatable structure definitions, which can be built from arrays, unions, primitive types and enum values.</para>
     <!-- explain/link what these types are? probably not, since most user will be programmers? -->
      <para
>It has an own settings dialog, which can be reached by using the <guibutton
>Settings</guibutton
> button. There are various options that can be configured, like the style (decimal, hexadecimal or binary) in which the values are displayed. Moreover it is possible to choose which structure definitions get loaded and which structures are shown in the view.</para>
      <para
>Structures are defined in &okteta; Structure Definition files (based on &XML;, with the file extension <literal role="extension"
>.osd</literal
>). Additionally a <literal role="extension"
>.desktop</literal
> file contains metadata about that structure description file, such as author, homepage and license.</para>
      <para
>Currently there is no built-in support for creating or editing structure definitions, therefore this must be done manually as described in the next sections.</para>
    </sect2>

    <sect2>
      <title
>Structuurdefinities installeren</title>

      <sect3>
        <title
>Met KNewStuff installeren</title>
        <para
>The easiest way of installing new structure definitions is by using the built-in KNewStuff support in &okteta;. To install an existing structure open the settings dialog of the Structures tool. There select the <guilabel
>Structures Management</guilabel
> tab and press the <guibutton
>Get New Structures...</guibutton
> button. The dialog that shows up now allows you to install and uninstall structures.</para>
      </sect3>
      <sect3>
        <title
>Structuurdefinities handmatig installeren</title>
        <para
>The Structures tool looks for structure descriptions in the subdirectory <filename class="directory"
>share/apps/okteta/structures/</filename
> of the user's directory for program data (find that by executing <userinput
><command
>kde4-config</command
> <option
>--localprefix</option
></userinput
>). You may need to create this directory if there are no structure definitions installed yet.</para>
          <para
>Two files exist for every structure definition: One file for the actual definition and a <literal role="extension"
>.desktop</literal
> file for the metadata (author, version, etc.).</para>
          <para
>In that directory there is a subdirectory for each structure definition, which contains both the <literal role="extension"
>.desktop</literal
> file and the <literal role="extension"
>.osd</literal
> or <filename
>main.js</filename
> file of that definition.</para>
          <para
>For example, with the program data directory <filename class="directory"
>.kde</filename
> and a structure definition named ExampleStructure there is the directory <filename class="directory"
>.kde/share/apps/okteta/structures/ExampleStructure</filename
>, which contains a file <filename
>ExampleStructure.desktop</filename
> and a file <filename
>ExampleStructure.osd</filename
>.</para>
      </sect3>
      <sect3>
        <title
>De nieuwe geïnstalleerde structuren gebruiken</title>
        <para
>After having installed a new structure definition you need to restart &okteta; before you can use it. Once &okteta; has started, open the settings dialog of the Structures tool. There select the <guilabel
>Structures Management</guilabel
> tab and make sure the relevant structure definition is checked. Then switch to the <guilabel
>Structures</guilabel
> tab and make sure the desired element is listed on the right-hand side.</para>
      </sect3>
    </sect2>

    <sect2>
      <title
>Structuurdefinities delen</title>
      <para
>For common structures you may not need to create a definition yourself, but instead can reuse an already existing definition from places like <ulink url="http://kde-files.org/index.php?xcontentmode=691"
>kde-files.org</ulink
>.</para>
      <para
>You also may want to share a definition yourself. To do so, create a file archive (&eg; a zipped tar archive, <literal role="extension"
>.tar.gz</literal
>) containing just the subdirectory with the <literal role="extension"
>.desktop</literal
> file and the structure definition file. Looking at the example in the last section this would be the directory <filename class="directory"
>ExampleStructure</filename
> with all its contents. Using this format for sharing the structure definitions allows installing them inside &okteta; and requires no manual installation.</para>
    </sect2>


    <sect2>
      <title
>Structuurdefinities maken</title>
      <para
>There are two different ways of creating structure definitions. The first is writing the definition in &XML; the other is using JavaScript. The JavaScript approach allows you to create more complex structures with features like e.g. validating the structure. Using &XML; gives you less features but if a static structure is all you need this may be the easiest approach. If you need a dynamic structure i.e. where array lengths depend on other values in the structure or the structure layout is different when some member value changes, then you will have to write the structure definition in JavaScript. There is one exception to that rule: if you have an array where the length is supposed to be <emphasis role="bold"
>exactly</emphasis
> the same as another value in the structure, then you can use &XML;. But if it is something like <emphasis
>length - 1</emphasis
> it has to be JavaScript.</para>
    </sect2>


    <sect2>
      <title
>Structuurdefinitie &XML;-bestandsformaat</title>
      <para
>Het <literal role="extension"
>.osd</literal
> &XML;-bestand heeft één basiselement: <emphasis
>&lt;data&gt;</emphasis
> zonder attributen. Binnen dit element moet er één van de volgende elementen zijn:</para>
      <!-- TODO markup, though better than nothing this way-->
      <variablelist>
          <varlistentry>
            <term
><emphasis role="bold"
><emphasis
>&lt;primitive&gt;</emphasis
></emphasis
></term>
            <listitem
><para
>Om een 'primitive' gegevenstype zoals bijv. <emphasis
>int</emphasis
> en <emphasis
>float</emphasis
> aan te maken. Dit element accepteert geen subelementen en kan de volgende attributen hebben:</para>
              <variablelist>
                <varlistentry>
                <term
><emphasis role="bold"
>type</emphasis
></term>
                <listitem>
                  <para
>The type of this primitive type. It must be one of the following:</para>
                  <itemizedlist>
                    <listitem
><para
><emphasis
>char</emphasis
> voor een 8-bits ASCII-teken</para
></listitem>
                    <listitem
><para
><emphasis
>int8, int16, int32, int64</emphasis
> voor een geheel getal met teken met die grootte</para
></listitem>
                    <listitem
><para
><emphasis
>uint8, uint16, uint32, uint64</emphasis
> voor een geheel getal zonder teken van die grootte</para
></listitem>
                    <listitem
><para
><emphasis
>bool8, bool16, bool32, bool64</emphasis
> voor een logische waarde (boolean) (0 = false, elke andere waarde = true) van die grootte</para
></listitem>
                    <listitem
><para
><emphasis
>float</emphasis
> voor een 32-bits IEEE754 drijvende-komma getal</para
></listitem>
                    <listitem
><para
><emphasis
>double</emphasis
> voor een 64-bits IEEE754 drijvende-komma getal</para
></listitem>
                  </itemizedlist>
                </listitem>
                </varlistentry>
              </variablelist>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term
><emphasis role="bold"
><emphasis
>&lt;bitfield&gt;</emphasis
></emphasis
></term>
            <listitem
><para
>Om een 'bitfield' aan te maken Dit element accepteert geen subelementen en kan de volgende attributen hebben:</para>
              <variablelist>
                <varlistentry>
                  <term
><emphasis role="bold"
>breedte</emphasis
></term>
                  <listitem
><para
>Het aantal bits gebruikt door dit 'bitfield'. Moet liggen tussen 1 en 64.</para
></listitem>
                </varlistentry>
                <varlistentry>
                  <term
><emphasis role="bold"
>type</emphasis
></term>
                  <listitem>
                    <para
>Het type van dit 'bitfield'. Het moet één van de volgende zijn:</para>
                    <itemizedlist>
                      <listitem
><para
><emphasis
>unsigned</emphasis
> for a bitfield where the value will be interpreted as an unsigned value (value range from 0 to 2<superscript
>width</superscript
> - 1)</para
></listitem>
                      <listitem
><para
><emphasis
>signed</emphasis
> for a bitfield where the value will be interpreted as a signed value (value range from -2<superscript
>width - 1</superscript
> to 2<superscript
>width - 1</superscript
> - 1)</para
></listitem>
                      <listitem
><para
><emphasis
>bool</emphasis
> voor een 'bitfield' waar de waarde als een booleaanse waarde zal worden geïnterpreteerd </para
></listitem>
                  </itemizedlist>
                  <note
><para
>Always remember to add padding after a <emphasis
>&lt;bitfield&gt;</emphasis
>, since otherwise the next element (except for strings and arrays, since they add padding automatically) will start in the middle of a byte. Obviously padding is not necessary if you want this behavior.</para
></note>
                  </listitem>
                </varlistentry>
              </variablelist>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term
><emphasis role="bold"
><emphasis
>&lt;enum&gt;</emphasis
></emphasis
></term>
            <listitem
><para
>To create a primitive type, but where the values are displayed as members of an enumeration if possible. This element accepts no subelements (however you will need an <emphasis
>&lt;enumDef&gt;</emphasis
> tag in the file to reference it). It has the following attributes:</para>
              <variablelist>
                <varlistentry>
                  <term
><emphasis role="bold"
>enum</emphasis
></term>
                  <listitem
><para
>De onderliggende 'enum' voor deze waarde. Moet overeenkomen met het attribuut <emphasis
>name</emphasis
> van één van de tag <emphasis
>&lt;enumDef&gt;</emphasis
> in dit bestand.</para
></listitem>
                </varlistentry>
                <varlistentry>
                  <term
><emphasis role="bold"
>type</emphasis
></term>
                  <listitem>
                    <para
>The type of this enum. See type attribute of <emphasis
>&lt;primitive&gt;</emphasis
>. Only difference is that <emphasis
>Double</emphasis
> and <emphasis
>Float</emphasis
> make no sense.</para>
                  </listitem>
                </varlistentry>
              </variablelist>
            </listitem>
          </varlistentry>


          <varlistentry>
            <term
><emphasis role="bold"
><emphasis
>&lt;flags&gt;</emphasis
></emphasis
></term>
            <listitem
><para
>This is the same as <emphasis
>&lt;enum&gt;</emphasis
> with the only difference being that values are represented as a <emphasis
>bitwise-or</emphasis
> of all the values of the enumeration.</para
></listitem>
          </varlistentry>

          <varlistentry>
            <term
><emphasis role="bold"
><emphasis
>&lt;struct&gt;</emphasis
></emphasis
></term>
            <listitem
><para
>To create a structure. All other elements (including <emphasis
>&lt;struct&gt;</emphasis
>) can be a child of this and will then be part of the resulting structure</para
></listitem>
          </varlistentry>

          <varlistentry>
            <term
><emphasis role="bold"
><emphasis
>&lt;union&gt;</emphasis
></emphasis
></term>
            <listitem
><para
>To create a union. Basically the same as <emphasis
>&lt;struct&gt;</emphasis
> except for the fact that all child elements will start from the same offset. Useful for interpreting the same sequence of bytes in various ways.</para
></listitem>
          </varlistentry>

          <varlistentry>
            <term
><emphasis role="bold"
><emphasis
>&lt;array&gt;</emphasis
></emphasis
></term>
            <listitem
><para
>To create an array. This element accepts exactly one child (the underlying type of the array), which can be any of the elements, even <emphasis
>&lt;array&gt;</emphasis
> itself. It also has the following attributes:</para>
              <variablelist>
                <varlistentry>
                  <term
><emphasis role="bold"
>lengte</emphasis
></term>
                  <listitem
><para
>The number of elements in this array as a decimal number. Alternatively it can also be a string which matches the name attribute of a previously defined <emphasis
>&lt;primitive&gt;</emphasis
>, <emphasis
>&lt;enum&gt;</emphasis
> or <emphasis
>&lt;flags&gt;</emphasis
> element. Then the length will be the value of that element. Currently it is limited to 10000, because larger arrays would use too much memory and slow down the tool too much. </para
></listitem>
                </varlistentry>
              </variablelist>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term
><emphasis role="bold"
><emphasis
>&lt;string&gt;</emphasis
></emphasis
></term>
            <listitem
><para
>To create a string in various encodings. By default you get a <emphasis
>NULL</emphasis
>- terminated C-style string. However different types of string can be created with the following attributes:</para>
              <variablelist>
                <varlistentry>
                  <term
><emphasis role="bold"
>terminatedBy</emphasis
></term>
                  <listitem
><para
>This attribute determines what unicode codepoint the string is terminated by. It must be a hexadecimal number (optionally with leading <emphasis
>0x</emphasis
>). When encoding is ASCII, only values up to 0x7f are meaningful. If neither this nor <emphasis
>maxCharCount</emphasis
> nor <emphasis
>maxByteCount</emphasis
> are set, this is assumed to be set to 0 (C-style string) </para
></listitem>
                </varlistentry>
                <varlistentry>
                  <term
><emphasis role="bold"
>maxCharCount</emphasis
></term>
                  <listitem
><para
>The maximum number of chars this string can have. If <emphasis
>terminatedBy</emphasis
> is set too then whatever is reached first terminates the string. This is mutually exclusive with <emphasis
>maxByteCount</emphasis
></para
></listitem>
                </varlistentry>
                <varlistentry>
                  <term
><emphasis role="bold"
>maxByteCount</emphasis
></term>
                  <listitem
><para
>The maximum number of bytes this string can be long. If <emphasis
>terminatedBy</emphasis
> is set too then whatever is reached first terminates the string. This is mutually exclusive with <emphasis
>maxCharCount</emphasis
>. With encodings like <emphasis
>ASCII</emphasis
> this is the same as <emphasis
>maxCharCount</emphasis
>.</para
></listitem>
                </varlistentry>
                <varlistentry>
                  <term
><emphasis role="bold"
>type</emphasis
></term>
                  <listitem
><para
>De codering van deze tekenreeks. Kan een van de volgende zijn:</para>
                    <itemizedlist>
                      <listitem
><para
><emphasis
>ASCII</emphasis
></para
></listitem>
                      <listitem
><para
><emphasis
>LATIN-1</emphasis
></para
></listitem>
                      <listitem
><para
><emphasis
>UTF-8</emphasis
></para
></listitem>
                      <listitem
><para
><emphasis
>UTF-16-LE</emphasis
> of <emphasis
>UTF-16-BE</emphasis
>. Als geen <emphasis
>-LE</emphasis
> of <emphasis
>-BE</emphasis
> achtervoegsel is gegeven, wordt 'little endian' aangenomen. </para
></listitem>
                      <listitem
><para
><emphasis
>UTF-32-LE</emphasis
> of <emphasis
>UTF-32-BE</emphasis
>. Als geen <emphasis
>-LE</emphasis
> of <emphasis
>-BE</emphasis
> achtervoegsel is gegeven, wordt 'little endian' aangenomen. </para
></listitem>
                    </itemizedlist>
                  </listitem>
                </varlistentry>
              </variablelist>
            </listitem>
          </varlistentry>
      </variablelist>
      <para
>Every element also accepts an attribute <emphasis
>name</emphasis
> which is then visible in the structures view. </para>
    </sect2>

    <sect2>
      <title
>An example structure definition in both &XML; and JavaScript</title>
      <sect3>
        <title
>The common step shared by both approaches</title>
        <para
>Our metadata file looks like this: <screen
>
        [Desktop Entry]
        Encoding=UTF-8
        Icon=arrow-up<co id="icon" />
        Type=Service
        ServiceTypes=KPluginInfo

        Name=Simple test structure
        Comment=A very simple test structure containing only two items

        X-KDE-PluginInfo-Author=Alex Richardson
        X-KDE-PluginInfo-Email=foo.bar@email.org
        X-KDE-PluginInfo-Name=simplestruct
        X-KDE-PluginInfo-Version=1.0
        X-KDE-PluginInfo-Website=http://www.plugin.org/
        X-KDE-PluginInfo-Category=structure
        X-KDE-PluginInfo-License=LGPL
        X-KDE-PluginInfo-EnabledByDefault=false
        </screen
> <calloutlist
> <callout arearefs="icon"
> <para
>The icon displayed in &okteta; for this structure can be anything found by executing <userinput
><command
>kdialog</command
> <option
>--geticon</option
></userinput
> or a path to an icon</para
> </callout
> </calloutlist
> These fields should all be pretty much self-explanatory, except for <literal
>X-KDE-PluginInfo-Name</literal
>. The value of this field must match the name of the directory containing the file as well as the name of the <literal role="extension"
>.desktop</literal
> file. When creating &XML; structure definitions the name of the <literal role="extension"
>.osd</literal
> file must also match the name. </para>

        <para
>In this example we would have a directory named <filename
>simplestruct</filename
> containing the file <filename
>simplestruct.desktop</filename
>. When defining structures in &XML; the directory would also contain a file named <filename
>simplestruct.osd</filename
>. Using JavaScript we would have a file named <filename
>main.js</filename
> instead.</para>
      </sect3>
      <sect3>
        <title
>Een eenvoudige &XML;-structuurdefinitie</title>
        <para
>To start we create a definition for a very simple test structure containing only integral data types (one char, one 32-bit signed integer, and a bitfield). This would be expressed in C/C++ as: <screen
>
          struct simple {
            char aChar;
            int anInt;
            bool bitFlag :1;
            unsigned padding :7;
          };
          </screen
> The first step is writing the <literal role="extension"
>.osd</literal
> file according to the file format defined in the previous section. We will call <filename
>simplestruct.osd</filename
>: <screen
><markup>
          &lt;?xml version="1.0" encoding="UTF-8"?&gt;
          &lt;data&gt;
            &lt;struct name="simple"&gt;
              &lt;primitive name="aChar" type="Char"/&gt;
              &lt;primitive name="anInt" type="Int32"/&gt;
              &lt;bitfield name="bitFlag" type="bool" width="1"/&gt;
              &lt;bitfield name="padding" type="unsigned" width="7"/&gt;
            &lt;/struct&gt;
          &lt;/data&gt;
          </markup></screen
> which is fairly similar to the C/C++ definition. </para>
          <para
>Now create a directory <filename class="directory"
>simplestruct</filename
> inside the structure installation directory (see manually installing structure definitions) and copy the two files to this directory. Now you can restart &okteta; and use the new structure.</para>
      </sect3>
      <sect3>
        <title
>De eenvoudige structuur in JavaScript</title>
        <para
>To implement the structure above in JavaScript, create a file named <filename
>main.js</filename
> instead of <filename
>simplestruct.osd</filename
>. The contents of that file should be: <screen
>
        function init() {
          var structure = struct({
            aChar : char(),
            anInt : int32(),
            bitFlag : bitfield("bool", 1),
            padding : bitfield("unsigned", 7),
          })
          return structure;
        }
        </screen
> The structure displayed by &okteta; is always the return value of the <literal
>init</literal
> function.</para>
        <para
>The following functions can be called to create a primitive type: <itemizedlist
> <listitem
><para
>char()</para
></listitem
> <listitem
><para
>int8(), int16(), int32() or int64()</para
></listitem
> <listitem
><para
>uint8(), uint16(), uint32() or uint64()</para
></listitem
> <listitem
><para
>bool8(), bool16(), bool32() or bool64()</para
></listitem
> <listitem
><para
>float()</para
></listitem
> <listitem
><para
>double()</para
></listitem
> </itemizedlist
> The bitfield function takes two parameters, the first being a string consisting of <literal
>bool</literal
>, <literal
>signed</literal
> or <literal
>unsigned</literal
>. The second parameter is an integer which sets the width in bits. </para>
      </sect3>
      <sect3>
        <title
>Complexere structuren</title>
        <para
>Next we create a definition of a more complex structure which we will call "complex" and save in a file named <filename
>complex.osd</filename
>. This structure will contain two arrays (one with fixed length and one where the length is determined at runtime) as well as a nested structure and a union. <screen
><markup>
          &lt;?xml version="1.0" encoding="UTF-8"?&gt;
          &lt;data&gt;
            &lt;struct name="complex"&gt;
              &lt;primitive name="size" type="UInt8" /&gt;
              &lt;union name="aUnion"&gt;
                &lt;array name="fourBytes" length="4"&gt;
                  &lt;primitive type="Int8" /&gt;
                &lt;/array&gt;
              &lt;/union&gt;
              &lt;struct name="nested"&gt;
                &lt;array name="string" length="size"&gt; &lt;!-- references the field size above --&gt;
                  &lt;primitive type="Char" /&gt;
                &lt;/array&gt;
              &lt;/struct&gt;
            &lt;/struct&gt;
          &lt;/data&gt;
          </markup></screen
> This would correspond to the following in pseudo-C/C++ <screen
>struct complex {
            uint8_t size;
            union aUnion {
              int8_t fourBytes[4];
            };
            struct nested {
              char string[size] //geen geldige C++, refereert waarde van de grootte uint8
            };
          };
          </screen>
          </para>
          <note
><para
>You can obviously only have dynamic length arrays reference fields before the array.</para
></note>
          <para
>Next we create the <filename
>complex.desktop</filename
> file just as in the example before (make sure you set <literal
>X-KDE-PluginInfo-Name</literal
> correctly) and also do the same to install both files.</para>
      </sect3>
      <sect3>
        <title
>Meer informatie</title>
        <para
>A few example structure definitions can be found <ulink url="http://websvn.kde.org/branches/KDE/4.5/kdeutils/okteta/kasten/controllers/view/structures/examples/"
>here.</ulink
> This includes for example the file header for PNG files and the ELF file header. An &XML; schema describing the structure of the <literal role="extension"
>.osd</literal
> file can be found <ulink url="http://websvn.kde.org/branches/KDE/4.5/kdeutils/okteta/kasten/controllers/view/structures/schema/"
>here.</ulink
> If more information is needed feel free to contact me at &Alex.Richardson.email; </para>
      </sect3>
    </sect2>
</sect1>

</chapter>

<chapter id="menu-commands">
<title
>Menuopties</title>

<para
>Merk op dat de meeste menucommando's een sneltoets hebben.</para>

<sect1 id="file-menu">
<title
>Menu Bestand</title>

<variablelist>
    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>N</keycap
></keycombo
> </shortcut
> <guimenu
>Bestand</guimenu
> <guimenuitem
>Nieuw</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Een nieuw byte-array aanmaken...</action
></para>
    <itemizedlist>
    <listitem
><para
><guimenuitem
>Leeg</guimenuitem
>: ... zoals een lege.</para>
    </listitem>
    <listitem
><para
><guimenuitem
>From Clipboard</guimenuitem
>: ... by the current content of the clipboard.</para
></listitem>
    <listitem
><para
><guimenuitem
>Pattern...</guimenuitem
>: ... with a given pattern.</para>
    </listitem>
    <listitem
><para
><guimenuitem
>Random Data...</guimenuitem
>: ...with random data.</para
></listitem>
    <listitem
><para
><guimenuitem
>Sequence</guimenuitem
>: ... with all the bytes from 0 to 255.</para
></listitem>
    </itemizedlist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>O</keycap
></keycombo
> </shortcut
> <guimenu
>Bestand</guimenu
> <guimenuitem
>Openen...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Een bestaand bestand openen.</action
></para
></listitem>
    </varlistentry>

    <!--<varlistentry>
    <term
><menuchoice>
    <shortcut>
    <keycombo action="simul"
>&Ctrl;<keycap
>I</keycap
></keycombo>
    </shortcut>
    <guimenu
>File</guimenu>
    <guimenuitem
>Insert...</guimenuitem>
    </menuchoice
></term>
    <listitem
><para
><action
>Insert an exiting file in the current
    document.</action
></para
></listitem>
    </varlistentry
>-->

    <varlistentry>
    <term
><menuchoice
><guimenu
>Bestand</guimenu
> <guisubmenu
>Recent geopend</guisubmenu
> </menuchoice
></term>
    <listitem
><para
><action
>Choose from a list of the last opened files.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>S</keycap
></keycombo
> </shortcut
> <guimenu
>Bestand</guimenu
> <guimenuitem
>Opslaan</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Save byte array to the assigned file.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Bestand</guimenu
> <guimenuitem
>Opslaan als...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Save byte array to another file with a new name.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Bestand</guimenu
><guimenuitem
>Exporteren</guimenuitem
> </menuchoice
></term>
    <listitem
><para
>Export the selected bytes to a file...</para>
    <itemizedlist>
    <listitem
><para
><guimenuitem
>Values</guimenuitem
>: ... gecodeerd als byte-waarden.</para>
    </listitem>
    <listitem
><para
><guimenuitem
>Plain Text</guimenuitem
>: ... gecodeerd als tekens. </para
></listitem>
    <listitem
><para
><guimenuitem
>Base64</guimenuitem
>: ... gecodeerd in het Base64-formaat.</para
></listitem>
    <listitem
><para
><guimenuitem
>C array</guimenuitem
>: ... gedefinieerd als een array in de programmeertaal C.</para
></listitem>
    <listitem
><para
><guimenuitem
>View in Plain Text</guimenuitem
>: ... as in the data view with offset, byte values and characters. </para
></listitem>
    </itemizedlist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycap
>F5</keycap
> </shortcut
> <guimenu
>Bestand</guimenu
> <guimenuitem
>Herladen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Laat alle wijzigingen vallen en herlaadt het byte-array uit het bestand.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>P</keycap
></keycombo
> </shortcut
> <guimenu
>Bestand</guimenu
> <guimenuitem
>Afdrukken...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Print the current byte array.</action
></para
></listitem>
    </varlistentry>

<!--    <varlistentry>
    <term
><menuchoice>
    <guimenu
>File</guimenu>
    <guimenuitem
>Export...</guimenuitem>
    </menuchoice
></term>
    <listitem
><para
><action
>Export the selected document or a portion of
    it.</action
></para
><para
>Opens a dialog box with these options:</para>
    <variablelist>
    <varlistentry>
    <term
><guilabel
>Format</guilabel
></term>
    <listitem
><para
>Plain text, &HTML; table, rich text
    format, C array.  Use the <guilabel
>Options</guilabel
> tab to select
    details for a C array or an &HTML; table.</para
></listitem>
    </varlistentry>
    <varlistentry>
    <term
><guilabel
>Destination</guilabel
></term>
    <listitem
><para
>The file to which the data will be
    exported</para
></listitem>
    </varlistentry>
    <varlistentry>
    <term
><guilabel
>Export Range</guilabel
></term>
    <listitem
><para
>Selects which data will be exported - - the entire document, the
    selected portion or the range between two specified
    offsets.</para
></listitem>
    </varlistentry>
    </variablelist>
    </listitem
></varlistentry
>-->

    <!--<varlistentry>
    <term
><menuchoice>
    <guimenu
>File</guimenu>
    <guimenuitem
>Cancel Operation</guimenuitem>
    </menuchoice
></term>
    <listitem
><para
>Stop the current operation</para
></listitem>
    </varlistentry
>-->

    <varlistentry>
    <term
><menuchoice
><guimenu
>Bestand</guimenu
> <guimenuitem
>Toegangsrechten</guimenuitem
> </menuchoice
></term>
    <listitem
><para
>Set modification privileges:</para>
    <variablelist>

    <varlistentry>
    <term
><guilabel
>Op alleen-lezen ingesteld</guilabel
></term>
    <listitem
><para
>When set, changes may not be made to the loaded byte array.</para
></listitem>
    </varlistentry>
    <!--<varlistentry>
    <term
><guilabel
>Allow Resize</guilabel
></term>
    <listitem
><para
>When off, individual bytes may be edited but the total number of
    bytes may not be changed.</para
></listitem>
    </varlistentry
>-->
    </variablelist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>W</keycap
></keycombo
> </shortcut
> <guimenu
>Bestand</guimenu
> <guimenuitem
>Sluiten</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Close the current byte array.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Bestand</guimenu
> <guimenuitem
>Alles sluiten</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Close all byte arrays.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>File</guimenu
> <guimenuitem
>Close All Other</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Close all besides the current byte array.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>Q</keycap
></keycombo
> </shortcut
> <guimenu
>Bestand</guimenu
> <guimenuitem
>Afsluiten</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Close the</action
> &okteta; window.</para
></listitem>
    </varlistentry>
</variablelist>
</sect1>

<sect1 id="edit-menu">
<title
>Menu Bewerken</title>
<para
>Currently in &kde; 4.4 simple copy and cut send data to the clipboard with the mimetype "application/octetstream", &klipper; is not able to display this data. And almost all other applications cannot handle this, too, as this is simply raw data. So also see for the <guisubmenu
>Copy as</guisubmenu
> submenu.</para>
<variablelist>
    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>Z</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Ongedaan maken</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Maakt de laatste handeling ongedaan.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;&Shift;<keycap
>Z</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Opnieuw</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Voert de laatste handeling opnieuw uit.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>X</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Knippen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>De geselecteerde bytes verwijderen en naar het klembord kopiëren.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>C</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Kopiëren</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>De geselecteerde bytes naar het klembord kopiëren.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>V</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Plakken</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>De geknipte of gekopieerde bytes invoegen in het klembord.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Bewerken</guimenu
> <guisubmenu
>Kopiëren als</guisubmenu
> </menuchoice
></term>
    <listitem
><para
>De geselecteerde bytes naar het klembord kopiëren...</para>
    <itemizedlist>
    <listitem
><para
><guimenuitem
>Values</guimenuitem
>: ... gecodeerd als byte-waarden.</para>
    </listitem>
    <listitem
><para
><guimenuitem
>Plain Text</guimenuitem
>: ... gecodeerd als tekens. </para
></listitem>
    <listitem
><para
><guimenuitem
>Base64</guimenuitem
>: ... gecodeerd in het Base64-formaat.</para
></listitem>
    <listitem
><para
><guimenuitem
>C array</guimenuitem
>: ... gedefinieerd als een array in de programmeertaal C.</para
></listitem>
    <listitem
><para
><guimenuitem
>View in Plain Text</guimenuitem
>: ... as in the data view with offset, byte values and characters. </para
></listitem>
    </itemizedlist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Bewerken</guimenu
> <guisubmenu
>Invoegen</guisubmenu
> </menuchoice
></term>
    <listitem>
    <variablelist>
    <varlistentry>
    <term
><menuchoice>
    <guimenuitem
>Patroon invoegen...</guimenuitem>
    </menuchoice
></term>
    <listitem
><para
><action
>Voeg een gespecificeerde tekenreeks met bytes in bij de cursor.</action
></para>
    <para
>Options in the dialog box allow you to specify the number of insertion of the pattern and it's format (Hexadecimal, Decimal, Octal, Binary, Character(s) or UTF-8).</para>
    <!--para
>If <guilabel
>Repeat pattern</guilabel
> is checked, the specified pattern
    will be inserted repeatedly to reach the length set in
    <guilabel
>Size</guilabel
>.</para--></listitem>
    </varlistentry>
    </variablelist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>A</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Alles selecteren</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Selecteer het gehele array met bytes.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;&Shift;<keycap
>A</keycap
></keycombo
></shortcut
> <guimenu
>Bewerken</guimenu
><guimenuitem
>Deselecteren</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Maak de huidige selectie ongedaan.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>E</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Bereik selecteren...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Opent een ingebedde dialoog om het te selecteren bereik in te voeren.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
><keycap
>Ins</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Overschrijfmodus</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Schakelen tussen de modi Invoegen en Overschrijven</action
>. </para>
    <note
><para
>De modus overschrijven is erg strikt geïmplementeerd, het is niet mogelijk om de grootte van de gegevens te wijzigen (geen toevoegen of verwijderen van bytes).</para
></note>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>F</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Zoeken...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Zoek naar een gespecificeerd patroon in het document.</action
> Er kan naar hexadecimale, decimale, octale, binaire of tekstpatronen worden gezocht.</para>
    <para
>Opties in het dialoogvak stellen u in staat om het beginpunt, richting en zoekgebied te specificeren.</para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
><keycap
>F3</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Volgende zoeken</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Zoek het volgende exemplaar</action
> van het <guimenuitem
>Zoek</guimenuitem
>patroon.</para>
    <para
>Als er geen patroon is gespecificeerd, zal het dialoogvak worden getoond.</para>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Shift;<keycap
>F3</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Vorige zoeken</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Zoek het vorige exemplaar</action
> van het <guimenuitem
>Zoek</guimenuitem
>patroon.</para>
    <para
>Als er geen patroon is gespecificeerd, zal het dialoogvak worden getoond.</para>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>R</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Vervangen...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Vervang</action
> het gevonden patroon door een ander patroon.</para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>G</keycap
></keycombo
> </shortcut
> <guimenu
>Bewerken</guimenu
> <guimenuitem
>Ga naar offset...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>De cursor naar een gespecificeerde offset verplaatsen.</action
></para
></listitem>
    </varlistentry>

</variablelist>
</sect1>

<sect1 id="view-menu">
<title
>Menu Beeld</title>

<variablelist>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>+</keycap
></keycombo
> </shortcut
> <guimenu
>Beeld</guimenu
> <guimenuitem
>Inzoomen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>De afmeting van het lettertype vergroten.</action
></para>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>-</keycap
></keycombo
> </shortcut
> <guimenu
>Beeld</guimenu
> <guimenuitem
>Uitzoomen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>De afmeting van het lettertype verkleinen.</action
></para>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Beeld</guimenu
> <guimenuitem
>Niet-afdrukbare karakters tonen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Aan/uitzetten van het tonen van niet-afdrukbare tekens.</action
> Als de weergave is uitgezet, wordt in plaats daarvan, op de overeenkomstige plaatsen in de kolom voor het teken, een vervangend teken getoond.</para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycap
>F11</keycap
> </shortcut
> <guimenu
>Beeld</guimenu
> <guimenuitem
>Regeloffset tonen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Aan/uitzetten van het tonen van de regeloffset in een paneel links.</action
></para
></listitem>
    </varlistentry>


    <varlistentry>
    <term
><menuchoice
><guimenu
>Beeld</guimenu
> <guisubmenu
>Waarden of tekens tonen</guisubmenu
> </menuchoice
></term>
    <listitem
><para
><action
>Selecteer welke van de interpretaties van een byte getoond wordt.</action
> Mogelijk zijn:</para>
    <itemizedlist>
    <listitem
><para
><guimenuitem
>Waarden</guimenuitem
></para>
    </listitem>
    <listitem
><para
><guimenuitem
>Tekens</guimenuitem
></para
></listitem>
    <listitem
><para
><guimenuitem
>Waarden en tekens</guimenuitem
></para
></listitem>
    </itemizedlist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Beeld</guimenu
> <guisubmenu
>Waardecodering</guisubmenu
> </menuchoice
></term>
    <listitem
><para
><action
>Selecteer de codering van de waarden</action
> uit:</para>
    <itemizedlist>
    <listitem
><para
><guimenuitem
>Hexadecimaal</guimenuitem
></para
></listitem>
    <listitem
><para
><guimenuitem
>Decimaal</guimenuitem
></para
></listitem>
    <listitem
><para
><guimenuitem
>Octaal</guimenuitem
></para
></listitem>
    <listitem
><para
><guimenuitem
>Binair</guimenuitem
></para
></listitem>
    </itemizedlist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Beeld</guimenu
> <guisubmenu
>Tekencodering</guisubmenu
> </menuchoice
></term>
    <listitem
><para
><action
>Selecteer de codering van de tekens</action
> uit het submenu. </para>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Beeld</guimenu
> <guisubmenu
>Dynamische opmaak</guisubmenu
> </menuchoice
></term>
    <listitem
><para
><action
>Stel de regels in voor de opmaak van de gegevensweergave.</action
> Dit definieert hoeveel bytes per regel er worden getoond, afhankelijk van de breedte van het beeld. Mogelijke regels zijn:</para>
    <itemizedlist>
    <listitem
><para
><guimenuitem
>Uit</guimenuitem
>: De opmaak is vast en gelijk aan het huidige aantal bytes per regel en niet aangepast aan de wijziging van de grootte van het beeld.</para>
    </listitem>
    <listitem
><para
><guimenuitem
>Breek alleen af op volledige bytegroepen</guimenuitem
>: Zet zoveel mogelijk bytes op een regel, zolang groepen bytes kompleet zijn. </para
></listitem>
    <listitem
><para
><guimenuitem
>Aan</guimenuitem
>: Hetzelfde als de vorige, maar staat ook onvolledige groepen bytes toe.</para
></listitem>
    </itemizedlist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Beeld</guimenu
> <guisubmenu
>Weergavemodus</guisubmenu
> </menuchoice
></term>
    <listitem
><para
><action
>Selecteer de opmaak van het beeld</action
> uit:</para>
    <itemizedlist>
    <listitem
><para
><guimenuitem
>Kolommen</guimenuitem
>: De waarden en tekens worden op de klassieke manier getoond met elk in een aparte kolom.</para
></listitem>
    <listitem
><para
><guimenuitem
>Rijen</guimenuitem
>: Het bijbehorende teken van een byte wordt direct onder de waarde getoond.</para
></listitem>
    </itemizedlist>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;&Shift;<keycap
>T</keycap
></keycombo
> </shortcut
> <guimenu
>Beeld</guimenu
> <guimenuitem
>Horizontaal splitsen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Splits het weergavegebied met het huidige beeld met focus in twee delen en voeg een kopie van het huidige beeld in het nieuwe onderste gedeelte.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;&Shift;<keycap
>L</keycap
></keycombo
> </shortcut
> <guimenu
>Beeld</guimenu
> <guimenuitem
>Verticaal splitsen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Splits het weergavegebied met het huidige beeld met focus in twee delen en voeg een kopie van het huidige beeld in het nieuwe rechter gedeelte.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;&Shift;<keycap
>R</keycap
></keycombo
> </shortcut
> <guimenu
>Beeld</guimenu
> <guimenuitem
>Weergavegebied sluiten</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Sluit het weergavegebied met het huidige beeld met focus.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;&Shift;<keycap
>F11</keycap
></keycombo
></shortcut
> <guimenu
>Beeld</guimenu
><guimenuitem
>Volledig scherm-modus</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Omschakelen naar volledig scherm of terug.</action
></para
></listitem>
    </varlistentry>

</variablelist>
</sect1>

<sect1 id="windows-menu">
<title
>Menu Vensters</title>

    <para
>Levert een lijst met de huidige beelden. Selecteer het actieve venster.</para>

</sect1>

<sect1 id="bookmarks-menu">
<title
>Het menu Bladwijzers</title>

    <para
>Meerdere bladwijzers kunnen worden ingesteld voor een enkele reeks bytes. Elke reeks bytes heeft zijn eigen set bladwijzers en de bijbehorende set is onderaan het menu <guimenu
>Bladwijzers</guimenu
> weergegeven. Kies een bladwijzer uit het menu om de cursor te verplaatsen en het te bekijken. <note
><para
>Bookmarks are currently only transient and not saved if you close a byte array or the whole program.</para
></note
></para>

<variablelist>
    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;<keycap
>B</keycap
></keycombo
> </shortcut
> <guimenu
>Bladwijzers</guimenu
> <guimenuitem
>Bladwijzer toevoegen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
>Locatie in een aantal bytes als bladwijzer instellen.</para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Ctrl;&Shift;<keycap
>B</keycap
></keycombo
> </shortcut
> <guimenu
>Bladwijzers</guimenu
> <guimenuitem
>Bladwijzer verwijderen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>De huidige bladwijzer verwijderen.</action
> Dit commando is alleen beschikbaar als de cursor op een locatie in een bladwijzer staat.</para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Bladwijzers</guimenu
> <guimenuitem
>Alle bladwijzers wissen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>De lijst met bladwijzers wissen.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Alt;<keycap
>Omhoog</keycap
></keycombo
> </shortcut
> <guimenu
>Bladwijzer</guimenu
> <guimenuitem
>Ga naar de vorige bladwijzer</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Beweeg de cursor naar de vorige bladwijzer.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><shortcut
> <keycombo action="simul"
>&Alt;<keycap
>Omlaag</keycap
></keycombo
> </shortcut
> <guimenu
>Bladwijzer</guimenu
> <guimenuitem
>Ga naar de volgende bladwijzer</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Beweeg de cursor naar de volgende bladwijzer.</action
></para
></listitem>
    </varlistentry>

</variablelist>
</sect1>

<sect1 id="tools-menu">
<title
>Menu hulpmiddelen</title>

    <para
>Levert een lijst met geïnstalleerde hulpmiddelen. Schakel de weergave van elk hulpmiddel aan of uit. Een gedetailleerde beschrijving van elk hulpmiddel is te vinden in de sectie <link linkend="tools"
>Hulpmiddelen</link
>.</para>
</sect1>

<sect1 id="settings-menu">
<title
>Menu Instellingen</title>

<variablelist>
    <varlistentry>
    <term
><menuchoice
><guimenu
>Instellingen</guimenu
> <guimenuitem
>Werkbalk tonen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Weergave van de werkbalk onder de menubalk aan-/uitzetten.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Instellingen</guimenu
> <guimenuitem
>Statusbalk tonen</guimenuitem
> </menuchoice
></term>
    <listitem
><para
><action
>Tonen van de statusbalk aan/uit.</action
></para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Instellingen</guimenu
> <guimenuitem
>Sneltoetsen instellen...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
>Sneltoetsen behorende bij acties van het programma wijzigen.</para
></listitem>
    </varlistentry>

    <varlistentry>
    <term
><menuchoice
><guimenu
>Instellingen</guimenu
> <guimenuitem
>Werkbalken instellen...</guimenuitem
> </menuchoice
></term>
    <listitem
><para
>De inhoud van de werkbalk beheren.</para
></listitem>
    </varlistentry>

</variablelist>

</sect1>

<sect1 id="help-menu">
<title
>Menu Help</title>
&help.menu.documentation; </sect1>



<sect1 id="toolbar"
><title
>Werkbalk</title>
    <para
>De werkbalk bevat pictogrammen voor de volgende acties:</para>

    <note
><para
>(De functionaliteit is overigens identiek aan de opties uit het menu)</para
></note>

    <itemizedlist>
    <listitem
><para
><guiicon
>Nieuw</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Openen</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Opslaan</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Terugdraaien</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Afdrukken</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Ongedaan maken</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Opnieuw</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Knippen</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Kopiëren</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Plakken</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Zoeken</guiicon
></para
></listitem>
    <listitem
><para
><guiicon
>Volgende zoeken</guiicon
></para
></listitem>
    </itemizedlist>

</sect1>

</chapter>

<chapter id="credits">
    <title
>Verdiensten en licentie</title>

    <para
>&okteta; </para>

    <!--List all the copyright holders here-->
    <para
>Programma Copyright 2006-2010 &Friedrich.Kossebau; &Friedrich.Kossebau.email;</para>

    <para
>Documentatie Copyright 2008,2010 &Friedrich.Kossebau; &Friedrich.Kossebau.email;, &Alex.Richardson; &Alex.Richardson.email;</para>

    &meld.fouten;&vertaling.freek; 
&underFDL; &underGPL; </chapter>

<!-- !!!do not change ANYTHING after this line!!!! -->

<appendix id="installation">
    <title
>Installatie</title>

    <sect1 id="getting-kapp">
        <title
>Hoe &okteta; te verkrijgen</title>
&install.intro.documentation; </sect1>

    <sect1 id="Compilation">
        <title
>Compilatie en installatie</title>
&install.compile.documentation; </sect1>
</appendix>

&documentation.index;
</book>
<!--
Local Variables:
mode: sgml
sgml-minimize-attributes:nil
sgml-general-insert-case:lower
sgml-omittag:t
sgml-shorttag:t
sgml-namecase-general:t
sgml-always-quote-attributes:t
sgml-indent-step:0
sgml-indent-data:nil
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
