<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kdevelop "<application
>KDevelop</application
>">
  <!ENTITY kdevrelease "3.1.0">
  <!ENTITY apache "<application
>Apache</application
>">
  <!ENTITY appwizard "Application Wizard">
  <!ENTITY autoconf "<command
>autoconf</command
>">
  <!ENTITY automake "<command
>automake</command
>">
  <!ENTITY automanag "Automake Manager">
  <!ENTITY ctags "<command
>ctags</command
>">
  <!ENTITY CVS "<application
>CVS</application
>">
  <!ENTITY cvs "CVS">
  <!ENTITY doxygen "<application
>Doxygen</application
>">
  <!ENTITY doxywizard "<application
>doxywizard</application
>">
  <!ENTITY egrep "<command
>egrep</command
>">
  <!ENTITY grep "<command
>grep</command
>">
  <!ENTITY libtool "<command
>libtool</command
>">
  <!ENTITY nfwizard "New File Wizard">
  <!ENTITY python "<application
>Python</application
>">
  <!ENTITY perl "<application
>Perl</application
>">
  <!ENTITY php "<application
>PHP</application
>">
  <!ENTITY promanag "Project Manager">
  <!ENTITY qte "<application
>Qt/embedded</application
>">
  <!ENTITY ssh "<application
>ssh</application
>">
  <!-- chapters in separate docbook files -->
  <!ENTITY unixdev SYSTEM "unixdev.docbook">
  <!ENTITY kdevelop-survey SYSTEM "kdevelop-survey.docbook">
  <!ENTITY kdevelop-install SYSTEM "kdevelop-install.docbook">
  <!ENTITY getting-started SYSTEM "getting-started.docbook">
  <!ENTITY setup SYSTEM "setup.docbook">
  <!ENTITY applicationwizard SYSTEM "applicationwizard.docbook">
  <!ENTITY project-advanced SYSTEM "project-advanced.docbook">
  <!ENTITY project-management SYSTEM "project-management.docbook">
  <!ENTITY app-files SYSTEM "app-files.docbook">
  <!ENTITY app-menu SYSTEM "app-menu.docbook">
  <!ENTITY kdevelop-scripting SYSTEM "kdevelop-scripting.docbook">
  <!-- book related entities -->
  <!ENTITY kappname "&kdevelop;">
  <!ENTITY % addindex "INCLUDE">
  <!ENTITY % Danish "INCLUDE"
> <!-- change language only here -->
]>

<!--
NOTE:
Entries which require special treatment are marked with comments starting with '###'. They should be visited on a regular basis.
-->

<book lang="&language;">

<bookinfo>
  <title
>&kdevelop;'s brugermanual </title>

  <date
>2004-11-13</date>
  <releaseinfo
>&kdevrelease;</releaseinfo>

  <authorgroup>
    <author
><firstname
>Bernd</firstname
> <surname
>Gehrmann</surname
> <affiliation
> <address
><email
>bernd@kdevelop.org</email
></address>
      </affiliation>
    </author>

    <author
><firstname
>Caleb</firstname
> <surname
>Tennis</surname
> <affiliation
> <address
><email
>caleb@aei-tech.com</email
></address>
      </affiliation>
    </author>

    <author
><firstname
>Bernd</firstname
> <surname
>Pol</surname
> <affiliation
> <address
><email
>bernd.pol@online.de</email
></address>
      </affiliation>
    </author>
  </authorgroup>

  <copyright>
    <year
>2002</year>
    <holder
>Bernd Gehrmann</holder>
  </copyright>
  <copyright>
    <year
>2002</year>
    <holder
>Caleb Tennis</holder>
  </copyright>
  <copyright>
    <year
>2004</year>
    <holder
>Bernd Pol</holder>
  </copyright>

  <!--ROLES_OF_TRANSLATORS-->

  <legalnotice
>&FDLNotice;</legalnotice>

  <abstract>
    <para
>&kdevelop; er et integreret udviklingsmiljø til brug for mange forskellige programmeringsopgaver.</para>
  </abstract>

  <keywordset>
    <keyword
>KDE</keyword>
    <keyword
>KDevelop</keyword>
    <keyword
>IDE</keyword>
    <keyword
>udvikling</keyword>
    <keyword
>programmering</keyword>
  </keywordset>

</bookinfo>

<!-- ====================================================================== -->

<chapter id="survey-manual">
<title
>Indeholdet af denne manuals</title>

<para
>Denne brugermanual er beregnet til at beskrive indholdet og brugen af det integrerede udviklingsmiljø (IDE) &kdevelop; &kdevrelease; fra brugerens perspektiv. Det er ikke en programmeringsmanual, og beskriver heller ikke udviklingsprocessen i detalje. Det eneste formål er at hjælpe dig med håndteringen af det integrerede udviklingsmiljø. </para>
<para
>Her finder du information om følgende emner: </para>
<itemizedlist>
  <listitem
><para
><link linkend="nutshell"
>I korthed &mdash; Vink of tricks</link
>&mdash;En hurtigreference til de oftest brugte kommandoer og handlinger. Desuden en kort guide til at løse almindelige problemer når der arbejdes med &kdevelop;. </para
></listitem>

  <listitem
><para
><link linkend="unixdev"
>Udvikling på &UNIX;</link
> &mdash; en historisk oversigt over &UNIX; programudvikling, de vigtigste værktøjer som behøves og hvorfor man behøver et integreret udviklingsmiljø. </para
></listitem>

  <listitem
><para
><link linkend="kdevelop-install"
>Installering af &kdevelop;</link
> &mdash;  fortæller hvor man får fat på &kdevelop;, og hvordan man får den til at køre. </para
></listitem>

  <listitem
><para
><link linkend="getting-started"
>At komme i gang med &kdevelop; &mdash; en guidet tur</link
> &mdash; giver dig en hurtig indføring i at bruge dette integrerede udviklingsmiljø og introducerer dig for de grundlæggende trin der skal til for at starte og arbejde på et projekt. </para
></listitem>

  <listitem
><para
><link linkend="kdevelop-survey"
>Oversigt over funktionerne i &kdevelop;</link
> &mdash; udvider den guidede tur fra forrige kapitel og giver et overblik over hvad der er indbygget i &kdevelop; og giver dig kendskab til programmets udseende og opførsel. </para
></listitem>

  <listitem
><para
><link linkend="app-menus"
>Oversigt over menuer og værktøjslinjer</link
> &mdash; Sørger for en kort oversigt over tilgængelige menu- og værktøjslinjespunkter (i appendiks). </para
></listitem>

  <listitem
><para
><link linkend="app-shortcuts"
>Genvejstaster</link
>&mdash;(i appendikset) en liste over tastesekvenser du kan bruge til hurtig adgang til specifikke &kdevelop;-operationer. </para
></listitem>

  <listitem
><para
><link linkend="setup"
>Indstil &kdevelop;</link
> &mdash; Viser hvordan du kan skræddersy det integrerede udviklingsmiljø for at passe til dine behov. </para
></listitem>


  <listitem
><para
><link linkend="kdevelop-install"
>At scripte &kdevelop;</link
> &mdash; beskriver hvordan man tilføjer scripter der kan automatisere &kdevelop;. </para
></listitem>

<!--  <listitem
><para>
  <link linkend="applicationwizard"
>Getting started: the &appwizard;</link
> &mdash; describes the basics of how to set up a new project in &kdevelop; using the built-in &appwizard;.
  </para
></listitem
>-->

  <listitem
><para
><link linkend="projects-advanced"
>Avanceret projekthåndtering</link
> &mdash; viser hvordan eksisterende projekter indlæses, konvertering af projekter fra ældre udgaver af &kdevelop; og import af andre eksisterende projekter. Yderligere dækkes indstillingen af et projekts tilvalg til at passe til dine behov. </para
></listitem>

  <listitem
><para
><link linkend="editing"
>Redigeringsværktøj</link
> &mdash; alt du behøver for at skrive kildekoden. Fra hvordan editoren bruges, hvordan tekstsøgning gøres både lokalt og i hele projektet, til hvordan nye filer og klasser integreres i projektet. </para
></listitem>

  <listitem
><para
><link linkend="file-browsers"
>Filsøgerne</link
> &mdash; demonstrerer diverse værktøjer til at kigge på projektets struktur og hvordan du får adgang til filerne du vil arbejde med. </para
></listitem>

  <listitem
><para
><link linkend="class-browsers"
>Klassesøgeren</link
> &mdash; beskriver et af de mest kraftfulde værktøjer i &kdevelop;, som lader dig navigere i klasseafhængigheder og gør det muligt for dig nemt at oprette og få adgang til de klasser og metoder du behøver. </para
></listitem>

  <listitem
><para
><link linkend="documentation"
>Dokumentation</link
> &mdash; viser hvordan man får adgang til den omfattende indbyggede dokumentation som &kdevelop; sørger for, og fortæller hvordan du laver dokumentation for projektet, en koncis og kraftfuld dokumentation af programmeringsgrænsefladen, som giver dig en oversigt over al kildekode i projektet samt en docbook-baseret brugerdokumentation. </para
></listitem>
  <listitem
><para
><link linkend="project-management"
>Bygge- og projekthåndtering</link
> &mdash; handler om at oprette og håndtere projekter; beskriver det grundlæggende i brug af autoconf og automake, samt hvordan egne byggefiler laves og hvordan oversætter- og byggeindstillinger bruges til at skræddersy programmet til at passe til dine behov. </para
></listitem>

  <listitem
><para
><link linkend="adv-build-management"
>Avanceret byggehåndtering</link
> &mdash; kigger på måder at holde flere byggeindstillinger, for at krydskompilere til forskellige platforme, eller oprette indbyggede systemer med biblioteket <application
>Qt/embedded</application
>. </para
></listitem>

  <listitem
><para
><link linkend="debugger"
>Fejlsøgergrænsefladen</link
> &mdash; beskriver hvordan den integrerede fejlsøgergrænseflade for fejlsøgeren <application
>gdb</application
> bruges, så du kan jage efter fejl uden at forlade &kdevelop; for altid at beholde muligheden for nem adgang  til det nuværende programs kildekode. </para
></listitem>

<!-- ### Currently disabled. Probably too specialized programming stuff. Check later again.
  <listitem
><para>
  <link linkend="python"
>Python</link
> &mdash; an overview of how to create Python-based applications in &kdevelop;.
  </para
></listitem>
  <listitem
><para>
  <link linkend="php"
>PHP</link
> &mdash;  an overview of how to create PHP-based HTML applications in &kdevelop;.
  </para
></listitem
>//-->

  <listitem
><para
><link linkend="cvs"
>Brug af CVS</link
> &mdash; fortæller dig hvordan du kan vedligeholde projektet med CVS-versionshåndteringssystem; en nødvendighed især hvis mange udviklere arbejder på samme projekt. </para
></listitem>

  <listitem
><para
><link linkend="external-progs"
>Drag nytte af eksterne programmer</link
> &mdash; viser hvordan man får adgang til eksterne programmer og værktøjer indefra &kdevelop;, og på den måde stærkt udvider dets muligheder. </para
></listitem>

  <listitem
><para
><link linkend="plugin-tools"
>Indstiksværktøj</link
> &mdash; giver en oversigt over de dele som udgør &kdevelop;, og hvordan du kan indstille det for at passe til dine behov ved kun at indlæse nødvendige dele, både for det integrerede udviklingsmiljø og for hele projektet. </para
></listitem>

  <listitem
><para
>Noget ofte brugt information er puttet ind i <emphasis
>appendiks</emphasis
>. Det er bl.a. : <itemizedlist>
    <listitem
><para
><link linkend="app-shortcuts"
>Genvejstaster</link
>&mdash;(i appendikset) en liste over tastesekvenser du kan bruge til hurtig adgang til specifikke &kdevelop;-operationer. </para
></listitem>

    <listitem
><para
><link linkend="app-shortcuts"
>Genvejstaster</link
>&mdash; de taster du kan bruge i kan i &kdevelop; uden at skulle bruge musen. </para
></listitem>

    <listitem
><para
><link linkend="setup"
>Konfigurationsfiler der bruges af &kdevelop;</link
> &mdash; viser filerne &kdevelop; bruger til at gemme intern information. Det er specielt nyttigt hvis noget går galt i din opsætning. </para
></listitem>

    <listitem
><para
><link linkend="setup"
>Plugin-værktøjer</link
> &mdash; viser de værktøjer du kan bruge til at skræddersy &kdevelop; så det passer til dine behov. </para
></listitem>
  </itemizedlist>
  </para
></listitem>
</itemizedlist>
</chapter>

<!-- ====================================================================== -->

<chapter id="nutshell">
<title
>I korthed &mdash; Vink og trick</title>

<!-- Traditionally, most of this stuff will have been put into a FAQ section. It is more useful, however, to put it at the very start of a manual, as this is the place the (inexperienced) user first looks for.
This chapter is meant to provide short hints and tips together with (mandatory) navigation links.
There should be an additional FAQ section near the end nevertheless which contains more general stuff not directly related to navigating the manual. -->

<para
>Informationen i dette kapitel er beregnet som en hurtigreference for at komme hurtigt i gang hvis du (tilfældigt) glemte nogen grundlæggende begreber. Der er også en kort guide til at løse almindelige problemer når der arbejdes med &kdevelop;. </para>
<para
>Hvis du ønsker at vide mere om et emne, så følg blot linket i titlen der starter et råd. </para>
<para
>Information tilgængelig om disse emner: </para>
<simplelist>
  <member
><link linkend="nutshellitem-look-and-feel"
>Udseende og fornemmelse</link
></member>
  <member
><link linkend="nutshellitem-projects"
>Projekter</link
></member>
  <member
><link linkend="nutshellitem-compilation"
>Kompilering</link
></member>
  <member
><link linkend="nutshellitem-automake"
>&automanag;</link
></member>
  <member
><link linkend="nutshellitem-compilemake"
>Problemer med at kompilere og bygge</link
></member>
  <member
><link linkend="nutshellitem-others"
>Andre emner</link
></member>
</simplelist>

<itemizedlist id="nutshellitem-look-and-feel">
  <title
>Udseende og fornemmelse</title>

  <listitem>
    <formalpara id="nutshell-IDEAl-tabs">
    <title
><link linkend="setup-ui-toolview"
>Tving til mindre værktøjsvisningsfaneblade i IDEAl-tilstand</link
></title>
    <para
>Som standard starter &kdevelop; med tekstbaserede faneblade til værktøjsvink omkring arbejdsområdet. Du kan ændre dette udseende &eg; for at spare plads i &kdevelop;'s indstillingsdialog (<menuchoice
><guimenu
>Opsætning</guimenu
> <guimenuitem
>Indstil KDevelop...</guimenuitem
> <guimenuitem
>Brugergrænseflade</guimenuitem
></menuchoice
>). </para>
    </formalpara>
    <para
>Hvis du bruger en ældre udgave af &kdevelop; er denne indstillingsdialog måske ikke tilstede. Du kan ændre værktøjsvisningens faneblade manuelt ved at placere  en <computeroutput
>MDIStyle</computeroutput
> indgang under <computeroutput
>[UI]</computeroutput
>-mærket i din <filename
>$KDEHOME/share/config/kdeveloprc</filename
>-indstillingsfil som følger: </para>
    <simplelist>
      <member
><computeroutput
>MDIStyle=0</computeroutput
>: kun ikoner</member>
      <member
><computeroutput
>MDIStyle=1</computeroutput
>: kun tekst (standard)</member>
      <!--<member
><computeroutput
>MDIStyle=2</computeroutput
>: icons only on smaller tabs (not very useful)</member
>-->
      <member
><computeroutput
>MDIStyle=3</computeroutput
>: ikoner og tekst</member>
    </simplelist>
  </listitem>

  <!-- ### remove this entry when the bug is repaired -->
  <listitem>
    <formalpara id="nutshell-weird-style">
    <title
>Mærkelige farvede tegn og/eller visningsstil</title>
    <para
>Hvis du bemærker tilfældigt farvede bogstaver overalt (&ie; på faneblade, på værktøjslinjer, osv.) og &kdevelop;-vinduet tilsyneladende bruger en forkert visningsstil, kan dette måske hjælpe: </para>
    </formalpara>
    <itemizedlist>
      <listitem
><para
>I din <filename
>$KDEHOME/share/config/kdeveloprc</filename
>-indstillingsfil skal du finde linjen der indeholder <quote
><computeroutput
>Style=Checked</computeroutput
></quote
> og fjerne den. Start så &kdevelop; igen. </para
></listitem>
    </itemizedlist>
    <para
>(Denne opførsel opstår sommetider efter du venstreklikkede på en .ui-fil i en af filnavigatørerne og &kdevelop; indlæste <application
>KUIViewer</application
> for at vise den &GUI; som blev lavet ud fra denne fil.) </para>
  </listitem>

  <listitem>
    <formalpara id="nutshell-full-screen">
    <title
><link linkend="maximize-workspace"
>Fuldskærmstilstand</link
></title>
    <para
>Vælg <menuchoice
><guimenu
>Vis</guimenu
> <guimenuitem
>Fuldskærmstilstand</guimenuitem
></menuchoice
> i menulinjen, eller tryk på <keycombo
><keycap
>Ctrl</keycap
> <keycap
>Shift</keycap
> <keycap
>F</keycap
></keycombo
>. </para>
    </formalpara>
  </listitem>

  <listitem>
    <formalpara id="nutshell-hide-menu">
    <title
><link linkend="maximize-workspace"
>Vis eller skjul menulinjen</link
></title>
    <para
>For at <emphasis
>skjule</emphasis
> menulinjen, vælges <menuchoice
><guimenu
>Indstillinger</guimenu
> <guimenuitem
>Vis menulinje</guimenuitem
></menuchoice
> i menulinjen, eller tryk på <keycombo
><keycap
>Ctrl</keycap
> <keycap
>M</keycap
></keycombo
>.  For at <emphasis
>vise</emphasis
> menulinjen igen, skal du trykke på <keycombo
><keycap
>Ctrl</keycap
> <keycap
>M</keycap
></keycombo
> eller bruge ikonen <guiicon
>Vis menulinje</guiicon
> hvis den er tilgængelig. </para>
    </formalpara>
  </listitem>

</itemizedlist>

<itemizedlist id="nutshellitem-projects">
<title
>Projekter</title>

  <listitem>
    <formalpara id="nutshell-new-project">
    <title
><link linkend="new-projects"
>Opret nyt projekt</link
></title>
    <para
><menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
>Nyt projekt...</guimenuitem
></menuchoice
> starter <link linkend="applicationwizard"
>programguiden</link
>. </para>
    </formalpara>
  </listitem>

  <listitem>
    <formalpara id="nutshell-new-custom-project">
      <title
>Opret et tilrettet projekt</title>
      <para
>Der er ingen direkte måde at oprette et tilpasset projekt (&ie; et projekt som bruger sine egne makefiler). Brug <menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
>Importér eksisterende projekt</guimenuitem
></menuchoice
> i stedet. Husk at sætte den passende <guilabel
>Projekttype</guilabel
>, med påskrift af en yderligere <quote
>(Egne Makefiler)</quote
>, i dialogen. </para>
    </formalpara>
  </listitem>

  <listitem>
    <formalpara id="nutshell-project-options">
    <title
><link linkend="project-options"
>Brug projekttilvalg fra begyndelsen</link
></title>
    <para
>Så snart du har oprettet et nyt projekt, så glem ikke at indstille <menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
> Projektindstillinger...</guimenuitem
></menuchoice
> efter dine behov. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-compilation">
<title
>Kompilering</title>
  <listitem>
    <formalpara id="nutshell-compilemsg-detail">
    <title
><link linkend="setup-main-compile"
>Manglende detalje i kompileringsbeskeder</link
></title>
    <para
>Hvis du bemærker at der mangler vigtig information under kompileringerne i  <guilabel
>Besked uddatavisning</guilabel
>-vinduet, har du måske valgt et for lavt niveau for beskeddetaljer. Højreklik i vinduet og vælg  et andet detaljeniveau fra menuen der kommer frem. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-automake">
<title
><link linkend="automake-manager"
>&automanag;</link
></title>

    <listitem>
      <formalpara id="nutshell-new-project-file">
      <title
>Opret nye filer i et projekt</title>
      <para
>Vælg delprojektet i den øvre del af &automanag;, og højreklik derefter i den nederste del på gruppetitlen hvor du vil tilføje filerne og vælg <guimenuitem
>Opret ny fil..</guimenuitem
>. </para>
      </formalpara>
    </listitem>

    <listitem>
      <formalpara id="nutshell-add-project-file">
      <title
>Tilføj eksisterende filer til et projekt</title>

      <para
>Vælg delprojekt i den øverste del af &automanag;, og højreklik derefter i den nederst del på gruppetitlen hvor du vil tilføje filerne og vælg <guimenuitem
>Tilføj eksisterende filer..</guimenuitem
>. </para>
      </formalpara>
    </listitem>

    <listitem>
      <formalpara id="nutshell-del-project-file">
      <title
>Fjern en fil fra et projekt</title>

      <para
>Vælg delprojektet i øverste del af &automanag;, og højreklik derefter i den nederste del på gruppetitlen hvor du vil fjerne filerne og vælg <guimenuitem
>Fjern</guimenuitem
>. </para>
      </formalpara>
    </listitem>
  </itemizedlist>

<itemizedlist id="nutshellitem-compilemake">
  <title
>Problemer med at kompilere og bygge</title>

  <listitem>
    <formalpara id="nutshell-builddirproblems">
    <!-- ### Change the following link once a more comprehensive sourcedir != builddir description is available. -->
    <title
><link linkend="defaultbuild-warning"
>Projektet bygger ikke igen efter at have skiftet til/fra standardmålet</link
></title>
    <para
>Der er et problem med &automake;/&autoconf; maskineriet. Hvis <menuchoice
> <guimenu
>Projekt</guimenu
> <guimenuitem
>Byg Konfiguration</guimenuitem
></menuchoice
> sørger for at vælge fra tre bygge-mapper: <guimenuitem
>standard</guimenuitem
>, <guimenuitem
>optimeret</guimenuitem
>, og <guimenuitem
>fejlret</guimenuitem
>, så brug endelig <emphasis
>enten</emphasis
> standard <emphasis
>eller</emphasis
>  fejlret/optimeret mål. </para>
    </formalpara>
    <itemizedlist>
      <listitem
><para
>Så snart du har indstillet dit projekt med standard, bygges det ikke længere med fejlret eller optimeret. </para
></listitem>
      <listitem
><para
>Så snart du har indstillet dit projekt med fejlret eller optimeret, bygges det ikke længere med standard.</para
></listitem>
     </itemizedlist>
  </listitem>

  <listitem>
    <formalpara id="nutshell-autoconf-problem">
    <title
><quote
>Forkert<command
> version af </command
>autoconf</quote
>, &etc;.</title>

    <para
>Der er flere fejlmeddelelser som drejer sig om gamle versioner af <application
>autoconf</application
>, &etc; som forhindrer at <command
>configure</command
> virker som den skal. Kør <command
>autoreconf</command
> i mappetræet hvor filerne <filename
>configure.in</filename
> det drejer sig om findes. Kommandoen forsøger at opdatere informationen i &GNU; byggesystemfilerne. Se <command
>man autoreconf</command
> for mere information. </para>
    </formalpara>
  </listitem>
</itemizedlist>

<itemizedlist id="nutshellitem-others">
<title
>Andre emner</title>
  <listitem>
    <formalpara id="nutshell-others-files">
    <title
><link linkend="app-files"
>Konfigurationsfiler brugt af &kdevelop;</link
></title>
    <para
>Normalt kan du være ligeglad, men det er ret nyttigt at vide hvis noget i din opsætning går galt. </para>
    </formalpara>
  </listitem>
</itemizedlist>

</chapter
> <!-- nutshell -->

<!-- ====================================================================== -->
<!-- External Chapters -->
&unixdev;            <!-- "Development on &UNIX;"                           -->
&kdevelop-install;   <!-- "Installing &kdevelop;"                           -->
&getting-started;    <!-- "Getting Started"                                 -->
&kdevelop-survey;    <!-- "Overview of &kdevelop; Features"                 -->
&setup;              <!-- "Configuring &kdevelop;"                          -->
&kdevelop-scripting; <!-- "Scripting &kdevelop;"                            -->
<!-- ### This chapter will be removed soon: -->
&applicationwizard;  <!-- "Getting Started &mdash; the &appwizard;"         -->
&project-advanced;   <!-- "Advanced Project Management"                     -->

<!-- ====================================================================== -->

<chapter id="editing">
<title
>Redigeringsværktøj</title>

<sect1 id="editing-snippets">
<title
>Kodestumper</title>

<itemizedlist>
  <title
>Funktioner (foreløbigt overblik)</title>
  <listitem
><para
>SnippetPart tilføjer en værktøjsvisning der som standard dokker til højre </para
></listitem>
  <listitem
><para
>Tilføjelse, redigering og fjernelse af stumper er tilgængelig via en popop-menu </para
></listitem>
  <listitem
><para
>Dobbeltklik på en kodestump fra listen indsætter den i den aktive visning ved markørens nuværende position </para
></listitem>
  <listitem
><para
>Værktøjsvink viser indholdet af en kodestump </para
></listitem>
  <listitem
><para
>Kodestumper opbevares i brugerens hjemmemappe, så hver bruger kan have sine egne kodestumper </para
></listitem>
  <listitem
><para
>Kodestumper kan indeholde variabler i stilen $VARNAME$. Ved brug af kodestumpen, bliver brugeren bedt om at indtaste erstatningsværdier for variablerne </para
></listitem>
</itemizedlist>
</sect1
> <!-- editing-snippets -->

<sect1 id="keyboardmapping">
<title
>Tastebrug</title>
<indexterm zone="keyboardmapping"
><primary
>tastebindinger</primary
></indexterm>

<para
>I det følgende giver vi en liste af normale tastebindninger for standardeditoren. Du kan indstille dem som du vil (hvordan det?). </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry
><para
><keycap
>Venstre </keycap
></para
></entry>
<entry
><para
>Flytter et tegn til venstre </para
></entry
></row>

<row
><entry
><para
><keycap
>Højre </keycap
></para
></entry>
<entry
><para
>Flytter et tegn til højre </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Venstre </keycap
></keycombo
></para
></entry>
<entry
><para
>Flytter et ord til venstre </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Højre </keycap
></keycombo
></para
></entry>
<entry
><para
>Flytter et ord til højre </para
></entry
></row>

<row
><entry
><para
><keycap
>Op </keycap
></para
></entry>
<entry
><para
>Flytter en linje op </para
></entry
></row>

<row
><entry
><para
><keycap
>Ned </keycap
></para
></entry>
<entry
><para
>Flytter en linje ned </para
></entry
></row>

<row
><entry
><para
><keycap
>Page Up </keycap
></para
></entry>
<entry
><para
>Flytter en side op </para
></entry
></row>

<row
><entry
><para
><keycap
>Page Down </keycap
></para
></entry>
<entry
><para
>Flytter en side ned </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Page Up </keycap
></keycombo
></para
></entry>
<entry
><para
>Går til begyndelsen af filen </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Page Down </keycap
></keycombo
></para
></entry>
<entry
><para
>Går til slutningen af filen </para
></entry
></row>

<row
><entry
><para
><keycap
>Hjem </keycap
></para
></entry>
<entry
><para
>Går til begyndelsen af linjen </para
></entry
></row>

<row
><entry
><para
><keycap
>End </keycap
></para
></entry>
<entry
><para
>Går til slutningen af linjen </para
></entry
></row>

</tbody>
</tgroup>
</informaltable>

<para
>For alle taster ovenfor, kan Shift-tasten desuden trykkes ned, for at markere tekst fra markørens nuværende position til den nye. </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry
><para
><keycap
>Backspace </keycap
></para
></entry>
<entry
><para
>Sletter et tegn til venstre </para
></entry
></row>

<row
><entry
><para
><keycap
>Delete </keycap
></para
></entry>
<entry
><para
>Sletter tegnet under markøren </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> C </keycap
></keycombo
></para
></entry>
<entry
><para
>Kopierer den markerede tekst til klippebordet </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> V </keycap
></keycombo
></para
></entry>
<entry
><para
>Indsætter den markerede tekst fra klippebordet </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> X </keycap
></keycombo
></para
></entry>
<entry
><para
>Sletter den markerede tekst og lægger den på klippebordet </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Ctrl </keycap
><keycap
> Z </keycap
></keycombo
></para
></entry>
<entry
><para
>Fortryd </para
></entry
></row>

<row
><entry
><para
><keycombo
><keycap
> Shift </keycap
><keycap
> Ctrl </keycap
><keycap
> Z </keycap
></keycombo
></para
></entry>
<entry
><para
>Annullér fortryd </para
></entry
></row>

</tbody>
</tgroup>
</informaltable>

</sect1
> <!-- keyboardmapping -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="editing-reporter">
<title
>Problemrapporter</title>

<para
>(... endnu ikke skrevet ...) </para>
</sect1
> <!-- editing-reporter -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="searchinggrepping">
<title
>Søgning og flerfilssøgning</title>
<indexterm zone="searchinggrepping"
><primary
>søgning</primary
></indexterm>
<indexterm zone="searchinggrepping"
><primary
>find</primary
></indexterm>

<sect2 id="searching">
<title
>Søg efter tekst</title>

<para
><keycombo
><keycap
>Ctrl</keycap
><keycap
>F</keycap
></keycombo
>- Find, <keycombo
><keycap
>Ctrl</keycap
><keycap
>R</keycap
></keycombo
>- Erstat </para>

</sect2
> <!-- searching -->


<sect2 id="isearch">
<title
>I-søgning</title>
<indexterm zone="isearch"
><primary
>i-søg</primary
></indexterm>
<indexterm zone="isearch"
><primary
>inkrementel søgning</primary
></indexterm>
<indexterm zone="isearch"
><primary
>søg</primary
><secondary
>inkrementel</secondary
></indexterm>

<para
>Den almindelige søgning med <menuchoice
><guimenu
>Redigér</guimenu
><guimenuitem
>Søg</guimenuitem
></menuchoice
> kræver at du angiver hele søgebegrebet inden du starter. Oftest er det meget hurtigere at søge inkrementelt. Hvis du klikker på søgefeltet som hedder <guilabel
>I-søg</guilabel
> i værktøjslinjen, sker søgningen mens du skriver. Du vil mærke at det ønskede resultat allerede er der når du har skrevet 3 eller 4 tegn. </para>

</sect2
> <!-- isearch -->


<sect2 id="grep">
<title
>Grep</title>
<indexterm zone="grep"
><primary
>søg</primary
><secondary
>i filer</secondary
></indexterm>

<para
>Begge søgemekanismer som blev beskrevet ovenfor er begrænsede til søgning i én kildekodefil. Et yderligere værktøj som lader dig søge gennem et (muligvis stort) antal filer er tilgængeligt via punktet <guimenuitem
>Søg i filer...</guimenuitem
> i menuen <guimenu
>Redigér</guimenu
>. Det er blot en grænseflade til programmet &grep;(1). </para>

<para
>I dialogen kan du angive hvilke filer der skal søges i. Der er et antal joker-mønstre tilgængelige i et kombinationsfelt. På denne måde kan du let begrænse søgemekanismen til inkluderingsfiler. Desuden angiver du en mappe hvor søgningen startes. Hvis du afkrydser feltet <guibutton
>Rekursiv</guibutton
>, går søgningen gennem alle mapper i hierarkiet under den angivne. </para>

<para
>Søgebegrebet er generelt et regulært udtryk som følger POSIX-syntaksen. Du kan for eksempel bruge begrebet <literal
>"\&lt;K.*"</literal
>, hvis du vil finde alle ord som begynder med bogstavet K. Følgende tegn tolkes på en særlig måde: </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry>
  <literal
>.</literal>
</entry
><entry
>Matcher alle tegn </entry
></row>
<row
><entry>
  <literal
>^</literal>
</entry
><entry
>Matcher begyndelsen af en linje </entry
></row>
<row
><entry>
  <literal
>$</literal>
</entry
><entry
>Matcher slutningen af en linje </entry
></row>
<row
><entry>
  <literal
>\&lt;</literal>
</entry
><entry
>Matcher begyndelsen af et ord </entry
></row>
<row
><entry>
  <literal
>\&gt;</literal>
</entry
><entry
>Matcher slutningen af et ord </entry
></row>
<row
><entry>
  <literal
>?</literal>
</entry
><entry
>Matcher foregående punkt mindre end en gang </entry
></row>
<row
><entry>
  <literal
>*</literal>
</entry
><entry
>Matcher det foregående punkt nul eller eller flere gange </entry
></row>
<row
><entry>
  <literal
>+</literal>
</entry
><entry
>Matcher det foregående punkt en eller flere gange </entry
></row>
<row
><entry>
  <literal
>{n}</literal>
</entry
><entry
>Matcher det foregående punkt nøjagtigt n gange </entry
></row>
<row
><entry>
  <literal
>{n,}</literal>
</entry
><entry
>Matcher det foregående punkt n eller flere gange </entry
></row>
<row
><entry>
  <literal
>{,n}</literal>
</entry
><entry
>Matcher foregående punkt mindre end n gange </entry
></row>
<row
><entry>
  <literal
>{n,m}</literal>
</entry
><entry
>Matcher foregående punkt mindst <literal
>n</literal
> gange, men færre end <literal
>m</literal
> gange </entry
></row>

</tbody>
</tgroup>
</informaltable>

<para
>Tilbagereferencer til deludtryk indeni parenteser er også tilgængelige med notationen <literal
>\n</literal
>. </para>

<para
>Som en særlig bonus for C++ programmører, er der nogle søgeskabeloner tilgængelige for typiske mønstre. De tillader dig for eksempel at søge efter alle kald af medlemsfunktioner for et vist objekt. </para>

<para
>Når du har startet søgningen ved at klikke på knappen <guibutton
>Søg</guibutton
>, udføres den af en ydre, asynkron proces. Alle punkter som findes, ses i visningen som hedder <guilabel
>Grep</guilabel
>. Derefter kan du gå til de fundne punkter ved at klikke på dem. Bemærk at grep gennemsøger filerne som de er opbevarede i filsystemet. Hvis du har ændrede versioner af dem i editoren, kan du få forkerte linjenumre, eller visse ugyldige fundne punkter. Du kan undgå dette ved at gemme alle filer inden søgningen. </para>

</sect2
> <!-- grep -->

</sect1
> <!-- searchinggrepping -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="code-completion">
<title
>Kodekomplettering</title>

<para
>(... endnu ikke skrevet ...) </para>
</sect1
> <!-- code-completion -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="newfiles">
<title
>Opret nye filer og klasser</title>

<para
>(... endnu ikke skrevet ...) </para>

<sect2 id="newfiles-edittemplates">
<title
>Redigér skabelonerne</title>

<para
>(... endnu ikke skrevet ...) </para>
</sect2
> <!-- newfiles-edittemplates -->

</sect1
> <!-- newfiles -->

</chapter
> <!-- editing -->

<!-- ====================================================================== -->

<chapter id="file-browsers">
<title
>Filsøgerne</title>

<para
>På venstre side i hovedvinduet, kan &kdevelop; vise forskellige slags lister og træer til at vælge filer: </para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Filtræ</title>
<para
>Dette viser en trævisning af filhierarkiet under projektmappen. Hvis du klikker på en fil, indlæses den i editoren. For filer som ikke indeholder tekst, starter KDevelop et program som kan håndtere den tilsvarende MIME-type. </para>
</formalpara>

<para
>Filtræet opdateres regelmæssigt så snart noget ændres i filsystemet. Hvis du for eksempel laver nye filer eller mapper (til og med udenfor &kdevelop;), ses det med det samme på fillisten. På Linux bruger denne funktion FAM-biblioteket. På andre operativsystemer, eller via NFS, kontrolleres mapperne som vises med korte intervaller. </para>

<para
>Filtræet skjuler filer som sædvanligvis ikke er interessante, såsom objektfiler. I <guimenuitem
>Projekttilvalg</guimenuitem
> under <guibutton
>Filvisninger</guibutton
>, kan du indstille hvilke mønstre som bruges til at bortfiltrere uinteressante filer (som en liste med jokertegn, adskilte med kommategn). </para>

<para
>Du kan desuden vælge at begrænse filtræet så det kun viser filer som hører til projektet som for øjeblikket er indlæst. Dette kan ændres ved at klikke med højre museknap på træets rod. </para>

<figure id="screenshot-filetree" float="1">
<title
>Et skærmaftryk af filtræet</title>
<mediaobject>
<imageobject
><imagedata fileref="filetree.png"/></imageobject>
</mediaobject>
</figure>

</listitem>

<listitem>
<formalpara>
<title
>Filgrupper</title>
<para
>Dette viser filerne som tilhører projektet, grupperede ifølge filendelsen. Som i filtræet, kan du redigere en fil ved at klikke på den med venstre museknap. </para>
</formalpara>

<para
>Grupperne som vises her kan indstilles under <guibutton
>Filvisninger</guibutton
> i dialogen <guimenuitem
>Projektindstillinger</guimenuitem
>. For at tilrette visningen efter dine behov, er det vigtigt at forstå hvordan filer fordeles til grupperne. For hver fil, går &kdevelop; gennem grupperne oppefra og ned. I hver gruppe kontrolleres om filnavnet matcher et af mønstrene. Ved en træffer, vises filen i gruppen og gentagelser afbrydes. Dette klargør at mere generelle mønstre skal placeres nedenunder mere specifikke. For eksempel skal en stjerne for gruppen <guilabel
>Øvrige</guilabel
> være det sidste mønster. </para>

</listitem>

</itemizedlist>

</chapter
> <!-- file-browsers -->

<!-- ====================================================================== -->

<chapter id="class-browsers">
<title
>Klassesøgeren</title>
<indexterm zone="class-browsers"
><primary
>klassesøgeren</primary
></indexterm>

<para
>Ved arbejde med et projekt i et objektorienteret sprog, lægges vægten ikke på kildekodefilerne og deres navne, men på klasserne og deres sammenhæng. For at hjælpe dig med at navigere blandt definerede klasser og symboler, indeholder &kdevelop; diverse klassesøgere som synliggør klassestrukturen på forskellige måder. </para>

<sect1 id="classview">
<title
>Klassevisning</title>

<para
>Denne visning er til venstre i hovedvinduet og indeholder en lineær liste af alle klasser, variabler og funktioner i projektet. Den er konstrueret som en trævisning. Hvis du åbner en klasseknude ved at klikke på den, vises en liste med alle metoder og egenskaber som de respektive klasse har. </para>

<figure id="screenshot-classview" float="1">
<title
>Et skærmaftryk af klassesøgeren</title>
<mediaobject>
<imageobject
><imagedata fileref="classview.png"/></imageobject>
</mediaobject>
</figure>

<para
>Klassevisningen arbejder i to forskellige tilstande. Normalt grupperes alle symboler i <quote
>Klasser</quote
>, <quote
>Strukturer</quote
>, <quote
>Funktioner</quote
>, <quote
>Variabler</quote
> og <quote
>Navnerum</quote
>. I den sammenhængsafhængige menu, kan du vælge <guimenuitem
>Liste ifølge navnerum</guimenuitem
>. I denne tilstand, vises navnerumshierarkier og symboler grupperes i de respektive navnerum hvor de defineres. Dette kan være mere nyttigt i projekter som bruger mange (hierarkiske) navnerum. Det er mindre nyttigt i projekter uden navnerum. </para>

<para
>Du kan også ændre måden som klassenavne vises på. Normalt vises klassernes navne, uden navnerummene hvor de er defineret. Det betyder at du ikke umiddelbart kan adskille klasser med samme navn i forskellige navnerum. Hvis du holder musen stille et øjeblik over et navn, vises dog det fuldstændige navnet som et værktøjsvink. Du kan vælge altid at vise det fuldstændige klassenavn ved at vælge <guimenuitem
>Fuldstændig rækkevidde for identifikatorer</guimenuitem
> i den sammenhængsafhængige menu. </para>

<para
>Ved at klikke på en klasse eller metode i en klassevisning, kommer du til dets definition. Du kan også hoppe til en metodes deklaration ved at vælge <guimenuitem
>Gå til deklaration</guimenuitem
> i den sammenhængsafhængige menu. I den sammenhængsafhængige menu for klasser er der også valgmulighederne <guimenuitem
>Tilføj metode...</guimenuitem
> og <guimenuitem
>Tilføj egenskab...</guimenuitem
>. De åbner dialoger hvor du kan oprette nye metoder og variabeldeklarationer for den relevante klasse, sammen med en tom implementering. </para>

</sect1
> <!-- classview -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="classtools">
<title
>Klasseværktøjer</title>

<para
>Klasseværktøjsdialogen aktiveres ved at højreklikke på en klasse i klassevisningen og vælge <guimenuitem
>Klasseværktøj...</guimenuitem
>. </para>

</sect1
> <!-- classtools -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="classhierarchy">
<title
>Klassehierarki</title>

<para
>(... endnu ikke skrevet ...) </para>

</sect1
> <!-- classhierarchy -->

</chapter
> <!-- class-browsers -->

<!-- ====================================================================== -->

<chapter id="documentation">
<title
>Dokumentation</title>

<para
>Dokumentation hører desværre til de mere oversete ting i programmering. Alligevel så yder korrekt oprettet og vedligeholdt intern og ekstern dokumentation, yderst værdifuld hjælp. </para>
<para
>Dokumentation har flere aspekter. Der er <itemizedlist>
  <listitem
><para
><emphasis
>intern projektdokumentation</emphasis
>, som hovedsageligt består af <itemizedlist>
    <listitem
><para
><emphasis
>kommentarer</emphasis
> i deklarationsfiler og kildekodefiler </para
></listitem>
    <listitem
><para
><emphasis
>Intern dokumentation af programmeringsgrænsefladen</emphasis
> for projektet, som er lavet ud fra programfilerne af særlige værktøjer, &eg; &doxygen; </para
></listitem>
  </itemizedlist>
  </para
></listitem>
  <listitem
><para
><emphasis
>ekstern projektdokumentation</emphasis
>, som blandt andet består af <itemizedlist>
    <listitem
><para
><emphasis
>ekstern dokumentation af programmeringsgrænseflade</emphasis
>, &eg; for fælles systembiblioteker (<application
>KDE</application
>, <application
>Qt</application
>, &etc;) </para
></listitem>
    <listitem
><para
>al øvrig dokumentation (manualer for programmeringssprog, almen systeminformation, vejledninger og lignende) </para
></listitem>
  </itemizedlist>
  </para
></listitem>
</itemizedlist>
</para>
<para
>Al denne dokumentation skal være enkel at vedligeholde og let tilgængelig så snart du behøver den. &kdevelop; har støtte for netop dette. </para>

<!-- ### doc browser, notes on internal documentation, how to profit from Doxygen -->

<sect1 id="docbrowser">
<title
>Dokumentationssøgeren</title>


<figure id="screenshot-doctreeview" float="1">
<title
>Et skærmaftryk af dokumentationstræet</title>
<mediaobject>
<imageobject
><imagedata fileref="doctreeview.png"/></imageobject>
</mediaobject>
</figure>

</sect1
> <!-- docbrowser -->

</chapter
> <!-- documentation -->

<!-- ====================================================================== -->

&project-management; <!-- "Building and Project Management"                 -->

<!-- ====================================================================== -->

<chapter id="adv-build-management">
<title
>Avanceret byggehåndtering</title>
<indexterm zone="adv-build-management"
><primary
>&automake;</primary
></indexterm>

<sect1 id="buildconfigurations">
<title
>Flere byggeindstillinger</title>
<indexterm zone="buildconfigurations"
><primary
>byggeindstillinger</primary
><secondary
>flere</secondary
></indexterm>

<para
>(... endnu ikke skrevet ...) </para>

</sect1
> <!-- buildconfigurations -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="crosscompiling">
<title
>Krydskompilering</title>
<indexterm zone="crosscompiling"
><primary
>krydskompilering</primary
></indexterm>
<indexterm zone="crosscompiling"
><primary
>kompilering</primary
><secondary
>kryds</secondary
></indexterm>
<indexterm zone="crosscompiling"
><primary
><option
>--host</option
></primary
></indexterm>

<para
>Hvis du har passende krydsoversættere tilgængelige, kan du kompilere dine programmer for processorer og operativsystemer som adskiller sig fra systemet hvor &kdevelop; og oversætteren kører. &GNU;-oversætteren, &gcc;, kan indstilles og kompileres som en krydsoversætter hvis du kompilerer den selv. Konsultér <ulink url="info://gcc/Cross-Compiler"
>GCC infosiderne</ulink
> for mere information. Visse Linux-distributioner sørger også for binære pakker. </para>

<para
>En automake-baseret pakke kan let krydskompileres ved at angive flaget <option
>--host</option
> til configure-scriptet og indstille miljøvariablerne <envar
>CC</envar
> og <envar
>CXX</envar
> til tilsvarende krydsoversættere. Ofte vil du skifte mellem en krydskompileret version af programmet og en som blev kompileret for udviklingssystemet. For at gøre dette, er det en fordel at bruge muligheden i &kdevelop; for at oprette flere byggekonfigurationer, som forklares under <xref linkend="buildconfigurations"/>. Når du har oprettet en ny byggekonfiguration for krydskompilering i dialogen <menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
>Projektindstillinger...</guimenuitem
></menuchoice
> tilføj flaget </para>

<para
><screen
><option
>--host=</option
><replaceable
>platform</replaceable
>
</screen
></para>

<para
>til configure-flagene. Værdien <replaceable
>platform</replaceable
> er en kombination af formen </para>

<programlisting
>cpu-forhandler-operativsystem</programlisting>
<para
>eller</para>
<programlisting
>cpu-forhandler-kerne-operativsystem</programlisting>

<para
>For mange kombinationer kan du bruge en kortform, for eksempel <wordasword
>i386-linux</wordasword
> eller <wordasword
>arm-elf</wordasword
>. </para>

</sect1
> <!-- crosscompiling -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="qtembedded">
<title
>Qt/Embedded</title>
<indexterm zone="qtembedded"
><primary
>indlejret</primary
><secondary
>Qt</secondary
></indexterm>
<indexterm zone="qtembedded"
><primary
>Qt/Embedded</primary
></indexterm>
<indexterm zone="qtembedded"
><primary
>Qtopia</primary
></indexterm>
<indexterm zone="qtembedded"
><primary
>rammebuffer</primary
></indexterm>

<para
>&qte; er en version af &Qt;-biblioteket som ikke bruger X-window systemet, men tegner direkte i framebufferen på Linuxsystemer. Den er derfor interessant for indlejrede systemer som har hårde begrænsninger for hukommelsesforbruget i hele systemet. Dets programmeringsgrænseflade stemmer fuldstændig overens med X11-versionen. </para>

<para
>At udvikle et program for &qte; med &kdevelop; adskiller sig ikke meget fra at udvikle et program for X11-versionen af &Qt;. I virkeligheden kan du bruge samme grundkode for begge versioner. Hvis du bruger projekthåndtering med autoprojekt, skifter du til den indlejrede version ved at sende flaget <option
>--enable-embedded</option
> til configure-scriptet. Du kan indstille det i dialogen <menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
>Projektindstillinger...</guimenuitem
></menuchoice
> under <guilabel
>Indstilling af configure</guilabel
>. Med flaget <option
>--with-qt-dir=KATALOG</option
>, indstiller du mappen hvor &qte; er installeret. </para>

<para
>Efter at have indstillet og kompileret programmet med disse flag, linkes det med biblioteket <filename
>libqpe.so</filename
>. Denne udgave af programmet kører ikke normalt når du bruger X11. For at prøve den, køres den ved hjælp af programmet <application
>qvfb</application
> (Qt's virtuelle framebuffer). Det gøres ved at starte <application
>qvfb</application
> og derefter starte programmet med </para>

<para
><screen
><command>
program <option
>-qws</option
> <option
>-display QVFb:0</option>
</command
></screen
></para>

<para
>Når du har en version af programmet som virker, vil du naturligvis bruge den på målprocessoren. Det kan formodentlig være bekvemt at kunne oprette flere byggekonfigurationer, som forklaret ovenfor, så du hurtigt kan skifte mellem versionen som kører på udviklingssystemet og versionen som kører på målsystemet. </para>

<para
>Programmer for &qte; kører normalt som enkelte programmer på enheden de er konstruerede for. Trolltech understøtter også Qtopi, som er en samling programmer for personlig informationshåndtering, netsøgning og diverse andre områder som virker sammen på en konsekvent måde. Det er for eksempel standardomgivelserne på Sharp Zaurus. Du kan skrive programmer som passer ind i disse omgivelser, ved at bruge Qtopias udviklingsmiljø (SDK). Det medfører at dit program skal være en underklasse af <classname
>QPEApplication</classname
> og at det skal linkes med biblioteket <filename
>libqpe.so</filename
>. Hvis du udvikler programmet med projekthåndteringen autoprojekt, skal du tilføje til <option
>--enable-qtopia</option
> til konfigurationsflagene. </para>

</sect1
> <!-- qtembedded -->

</chapter
> <!-- adv-build-management -->

<!-- ====================================================================== -->

<chapter id="debugger">
<title
>Fejlsøgergrænsefladen</title>
<indexterm zone="debugger"
><primary
>fejlsøgere</primary
></indexterm>

<para
>&kdevelop; indeholder en intern fejlsøger for C og C++, som er direkte integreret med editoren. Teknisk set er den implementeret som en grænseflade som bruger den flytbare &GNU;-fejlsøger <application
>gdb</application
> via en pipe. Fejlsøgeren kan startes på flere måder: </para>

<itemizedlist>
<listitem>
<para
>Hovedprogrammet i projektet indlæses i fejlsøgeren med <menuchoice
><guimenu
>Fejlsøg</guimenu
><guimenuitem
>Start</guimenuitem
></menuchoice
>. </para>
</listitem>

<listitem>
<para
>Ved at bruge <menuchoice
><guimenu
>Fejlsøg</guimenu
> <guimenuitem
>Start (andet)</guimenuitem
> <guimenuitem
>Undersøg hukommelsesdump</guimenuitem
></menuchoice
>, indlæser du et hukommelsesdump til hukommelsen, som blev lavet af operativsystemets kerne da programmet brød sammen. (At lave hukommelsesdump kan være slået fra på systemet, se <application
>ulimit(1)</application
>). Dette er nyttigt for en post-mortem analyse af et program. </para>
</listitem>

<listitem>
<para
>Du starter fejlsøgeren for et program som allerede kører med <menuchoice
><guimenu
>Fejlsøg</guimenu
><guimenuitem
>Start (andet)</guimenuitem
> <guimenuitem
>Forbind til proces</guimenuitem
></menuchoice
>. En procesliste vises hvor du kan vælge processen som fejlsøgeren skal overtage. </para>
</listitem>

<listitem>
<para
>Bemærk at fejlsøgning kun er mulig hvis projektet er kompileret med fejlsøgningsinformation aktiveret. Den kan aktiveres i dialogen <guibutton
>Oversætterindstillinger</guibutton
>. Når dette er aktiveret, laver oversætteren yderligere informationer som lader fejlsøgeren associere filnavne og linjenumre med adresser i det kørbare program. </para>
</listitem>
</itemizedlist>

<para
>Grænsefladen til fejlsøgeren tilbyder flere visninger <quote
>ind i</quote
> processen: </para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Variabler</title>
<indexterm zone="debugger"
><primary
>overvågningsvariabler</primary
></indexterm>
<para
>Dette vindue viser værdier for alle lokale variabler på det nuværende sted i programmet. Det dækker variablerne i oversætterens kaldstak, &ie; funktionen hvor processen blev afbrudt, funktionen som kaldte denne funktionen, og så videre hele vejen til funktionen <function
>main()</function
>. </para>
</formalpara>

<para
>En anden gren i variabelvinduet indeholder overvågningsvariabler. Du kan selv indstille hvilke variabler som ses her. Både lokale og globale variabler kan overvåges. Du kan enten tilføje en variabel ved at klikke på knappen <guibutton
>Tilføj</guibutton
> eller trykke på returtasten når punktet <keycap
>Overvåg</keycap
> er markeret. Variablerne kan fjernes igen med den sammenhængsafhængige menu. </para>
</listitem>

<listitem>
<formalpara>
<title
>Stoppunkter</title>
<indexterm zone="debugger"
><primary
>stoppunkter</primary
></indexterm>
<para
>(... endnu ikke skrevet ...) </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Rammestak</title>
<indexterm zone="debugger"
><primary
>rammestak</primary
></indexterm>
<para
>(... endnu ikke skrevet ...) </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Vis assemblerkode</title>
<indexterm zone="debugger"
><primary
>vis assemblerkode</primary
></indexterm>
<para
>(... endnu ikke skrevet ...) </para>
</formalpara>
</listitem>

</itemizedlist>


<sect1 id="settingbreakpoints">
<title
>Sæt stoppunkter</title>

<para
>(... endnu ikke skrevet ...) </para>

</sect1
> <!-- settingbreakpoints -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id ="debuggeroptions">
<title
>Tilvalg</title>

<formalpara>
<title
>Vis behandlede navne</title>
<indexterm zone="debugger"
><primary
>navnebehandling</primary
></indexterm>
<indexterm zone="debugger"
><primary
>behandling</primary
><secondary
>navn</secondary
></indexterm>

<para
>Funktionsnavne i det kørbare program er <quote
>behandlede</quote
> for C++, &ie; funktionsnavnet indeholder information om argumenternes typer. Dette er nødvendigt for at støtte overbelastede funktioner. Behandlingsalgoritmen er ikke standardiseret, og adskiller sig til og med mellem forskellige udgaver af &GNU;'s C++ oversætter. </para>
</formalpara>

<para
>I assemblerkodevinduet vises normalt ubehandlede navne, så funktionssignaturer ligner udseendet i kildekoden, og er let læsbare. Alternativt, kan du vælge at se behandlede navne. </para>

<formalpara>
<title
>Forsøg at sætte stoppunkter når biblioteker indlæses</title>
<indexterm zone="debugger"
><primary
>dovne stoppunkter</primary
></indexterm>
<indexterm zone="debugger"
><primary
>stoppunkter</primary
><secondary
>doven</secondary
></indexterm>

<para
>Fejlsøgerens baggrundsprogram <application
>gdb</application
> tillader ikke at stoppunkter sættes i kode som ikke for øjeblikket er indlæst. I et rigtigt modulært program, hvor kode ofte kun indlæses efter behov såsom plugin (med brug af C-bibliotekets funktion <function
>dlopen(3)</function
>), kan dette være besværligt. Derfor håndterer &kdevelop; selv støtte for stoppunkter i delte biblioteker. Hvis du aktiverer dette, kan du sætte stoppunkter i biblioteker som ikke er indlæst. Derefter, så snart <application
>gdb</application
> fortæller at et bibliotek er indlæst, forsøger &kdevelop; at sætte de hvilende stoppunkter. </para>
</formalpara>

<formalpara>
<title
>Aktivér flydende værktøjslinje</title>
<indexterm zone="debugger"
><primary
>fejlsøgningsværktøjslinje</primary
></indexterm>
<indexterm zone="debugger"
><primary
>værktøjslinje</primary
><secondary
>fejlsøger</secondary
></indexterm>

<para
>(... endnu ikke skrevet ...) </para>
</formalpara>

</sect1
> <!-- debuggeroptions -->

</chapter
> <!-- debugger -->

<!-- ====================================================================== -->
<!-- ### Questionable, probably not IDE-specific enough. Check later again.
<chapter id="python">
<title
>Python</title>

<para
>...
</para>

</chapter
> --> <!-- python -->

<!-- ====================================================================== -->
<!-- ### Questionable, probably not IDE-specific enough. Check later again.
<chapter id="php">
<title
>PHP</title>

<para
>...
</para>
</chapter
> --> <!-- php -->

<!-- ====================================================================== -->

<chapter id="cvs">
<title
>Brug af CVS</title>
<indexterm zone="cvs"
><primary
>CVS</primary
></indexterm>
<indexterm zone="cvs"
><primary
>versionskontrol</primary
></indexterm>

<sect1 id="cvs-basics">
<title
>&CVS; basalt</title>

<para
>&CVS; er versionshåndteringssystemet som mange projekter med åben kildekode, inklusive &kde; &mdash; bruger. Det opbevarer al kildekode på et centralt sted, som kaldes <emphasis
>arkivet</emphasis
>. Udviklere henter en aktuel version af projektet eller versioner af det på vilkårlige tidspunkter, fra arkivet. I modsætning til visse andre versionshåndteringssystemer, er det ikke nødvendigt at <emphasis
>låse</emphasis
> filer som man skal arbejde med. Altså kan udvikling ske parallelt i stor udstrækning. </para>

<para
>Så snart en udvikler er færdig med en opgave, <emphasis
>arkiverer</emphasis
> han sin kode (sammen med en logmeddelelse). &CVS; tager sig af arbejdet med at sammenflette ændringer som laves af flere udviklere. Det kan naturligvis ske at udviklere arbejder med samme kodeafsnit, hvilket giver anledning til ændringer med konflikter (i praksis indtræffer dette sjældent, og er ofte et tegn på bristende kommunikation). I dette tilfælde, forkaster &CVS; arkiveringen. En fil kan kun arkiveres efter alle konflikter er løst op. </para>

<para
>Hidtil er de grundlæggende funktioner i &CVS;, som man oftest skal håndtere, beskrevet. Men &CVS; tilbyder meget mere: Man kan håndtere flere grene af et projekt (f.eks. var &kde; 1.1.2 og &kde; 2 grene i &kde;'s udviklingstræ), sammenflette ændringer fra en gren til en anden, spørge efter forskelle mellem versioner og filers versionshistorik, &etc; </para>

<para
>&CVS; implementeres som et klient-serversystem. Som bruger, sker al kommunikation med arkivet via kommandolinjeprogrammet &cvs;. Grænseflader på højere niveau er tilgængelig via programmer som <application
>Cervisia</application
> (<ulink url="http://cervisia.sf.net"
> </ulink
>) eller <application
>TkCVS</application
> (<ulink url="http://tkcvs.sf.net"
></ulink
>). Kun en lille del af &cvs; funktioner, som er vigtige under det daglige arbejdet, kan bruges direkte i &kdevelop;. </para>

<para
>Grundlæggende kundskab til brugen af &CVS; forudsættes. I særdeleshed bør du vide hvordan et givet projekt hentes fra arkivet. Vi anbefaler bogen <citetitle pubwork="book"
>Open Source Development With CVS</citetitle
> af Karl Fogel, som kan distribueres frit (undtagen de ikke-tekniske kapitler). Se <ulink url="http://cvsbook.red-bean.com/cvsbook.html"
></ulink
>. </para>

</sect1
> <!-- cvs-basics -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="cvs-commands">
<title
>&CVS;-kommandoer i &kdevelop;</title>

<para
>Følgende er tilgængeligt i filvisningernes sammenhængsafhængige menuer: </para>

<itemizedlist>

<listitem>
<formalpara>
<title
>Tilføj til arkivet</title>
<para
>Forbereder en fil for at tilføjes til arkivet. Filen overføres til arkivet når du arkiverer den (eller mappen som den findes i) næste gang. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Fjern fra arkivet</title>
<para
>Forbereder en fil for at fjernes fra arkivet. Dette tager også filen væk fra det lokale filsystem, så brug funktionen med forsigtighed! </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Opdatér</title>
<para
>Kører kommandoen <command
>cvs update</command
> for at sammenflette eventuelle ændringer fra andre brugere til din arbejdsmappe. Når du bruger menupunktet for en mappe, sker opdateringen normalt rekursivt, med  mindre om du har lukket for det i indstillingsfilen <filename
>.cvsrc</filename
>. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Arkivér</title>
<para
>Kører <command
>cvs commit</command
> for at arkivere alle lokale ændringer i arkivet. Bemærk at du bør opdatere inden du gør dette. Hvis en anden bruger tidligere har arkiveret sine ændringer, kan &CVS; ellers give en fejlmeddelelse. </para>
</formalpara>
</listitem>

</itemizedlist>

<para
>Alle kommandoer startes som underprocesser af &kdevelop;, uden yderligere kommandolinjeflag eller miljøvariabler. Dette kan være et problem hvis forbindelsen til &CVS;-serveren går via en &ssh;-forbindelse, og kræver at du indskriver et kodeord hver gang du arkiverer eller opdaterer. Dette er for eksempel nødvendigt hvis projektets vært er <filename
>sourceforge.net</filename
>. En måde at komme rundt om problemet beskrives i almindelige spørgsmål om CVS/SSH, som du finder i SourceForge-dokumentationen. </para>

</sect1
> <!-- cvs-basics -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="cvs-behind">
<title
>Bagved scenen</title>

<sect2 id="cvs-behind-workdir">
<title
>Hvad &CVS; gemmer i arbejdsmappen</title>

<para
>(... endnu ikke skrevet ...) </para>
</sect2
> <!-- cvs-behind-workdir -->

</sect1
> <!-- cvs-behind -->

</chapter
> <!-- cvs -->

<!-- ====================================================================== -->

<chapter id="external-progs">
<title
>Drag nytte af eksterne programmer</title>
<indexterm zone="external-progs"
><primary
>programmer</primary
><secondary
>eksterne</secondary
></indexterm>

<para
>Selv om &kdevelop; er et såkaldt <quote
>integreret</quote
> udviklingsmiljø, kommer det aldrig til at indeholde alle funktioner som du kan ville bruge, og mulighederne i dets editor kommer aldrig til at række til for at udføre ofte brugte tekstbehandlingshandlinger. Som et virkeligt &UNIX;-program indeholder &kdevelop; flere muligheder for at starte eksterne programmer, at indkoble eksterne programmer til at behandle filer, eller bruge eksterne filtre til at behandle editorens nuværende indhold. </para>

<para
>Den mest generelle og enkle funktion af denne type er værktøjsmenuen, som du kan indstille frit. Det gøres i dialogen <menuchoice
><guimenu
>Indstillinger</guimenu
><guimenuitem
>Indstil KDevelop...</guimenuitem
></menuchoice
> under <guibutton
>Eksterne værktøjer</guibutton
>. </para>

<para
>Andre værktøjer beskrives i kapitlet <xref linkend="plugin-tools"/>. </para>

</chapter
> <!-- external-progs -->


<!-- ====================================================================== -->

<chapter id="credits">
<title
>Medvirkende</title>

<sect1 id="credits-contributions">
<title
>Bidrag</title>

<para>
<itemizedlist>
  <listitem
><para
>Det oprindelige indhold af denne manual blev skrevet af Bernd Gehrmann <email
>bernd@kdevelop.org</email
> og Caleb Tennis <email
>caleb@aei-tech.com</email
>. </para
></listitem>
  <listitem
><para
><link linkend="automake-manager-summary"
>Sammendraget af &automanag;</link
> og <link linkend="automake-manager-operation"
>Automake håndteringens operation</link
> kapitlerne blev skrevet af Ian Wadham, <email
>ianw@netspace.net.au</email
>). </para
></listitem>
</itemizedlist>
</para>

</sect1
> <!-- credits-contributions -->

<!--CREDITS_FOR_TRANSLATORS-->

</chapter
> <!-- credits -->

<!-- ====================================================================== -->

&app-menu; <!-- Menus and Toolbars Overview -->

<!-- ====================================================================== -->

<appendix id="app-shortcuts">
<title
>Genvejstaster</title>

<para
>(... endnu ikke skrevet ...) </para>

</appendix
> <!-- app-shortcuts -->

<!-- ====================================================================== -->

&app-files; <!-- Configuration Files Used by &kdevelop; -->

<!-- ====================================================================== -->

<appendix id="plugin-tools">
<title
>Indstiksværktøjer</title>

<indexterm zone="plugin-tools">
  <primary
>indstiksværktøjer</primary
></indexterm>

<para
>&kdevelop; indeholder et stort antal små værktøjer, som hjælper dig med at udføre visse opgaver. De fleste virker som indstiksprogrammer, plugin. Det betyder at hvis du ikke synes om nogen af dem, kan du helt enkelt lukke af for det i dialogen <guimenuitem
>Projektindstillinger</guimenuitem
> under <guibutton
>Plugin</guibutton
> (for plugin som gælder hele projektet) eller under <menuchoice
><guimenu
>Indstillinger</guimenu
><guimenuitem
>Indstil KDevelop...</guimenuitem
></menuchoice
>. Plugin som lukkes af belaster ikke menuer og indlæses ikke i hukommelsen. </para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Indstiksprogrammet <command
>abbrev</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>abbrev</command
></primary
></indexterm>

<para
>Dette indstiksprogram udfylder forkortelser af ofte brugte kodefragmenter. Det aktiveres ved at trykke på <keycombo
><keycap
>Ctrl</keycap
><keycap
>Mellemrum</keycap
></keycombo
>. Hvis du for eksempel skriver <literal
>"ife"</literal
> i C++ editoren, og trykker på <keycombo
><keycap
>Ctrl</keycap
><keycap
>Mellemrum</keycap
></keycombo
>, får du en <literal
>if-else</literal
> kodeskabelon og sparer nogle tastetryk. Opsætningen med forkortelser som understøttes afhænger af den redigerede fils programmeringssprog. For  eksempel til PHP er du naturligvis interesseret i andre kodeskabeloner end for &Java;. </para>
</formalpara>

<para
>Opsætningen med kodeskabeloner kan indstilles. Du kan se hvilke som er tilgængelige i dialogen <menuchoice
><guimenu
>Indstillinger</guimenu
><guimenuitem
>Indstil KDevelop...</guimenuitem
></menuchoice
> under <guibutton
>Forkortelser</guibutton
>. </para>
</listitem>

<listitem>
<formalpara>
<title
>Indstiksprogrammet <command
>filter</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>filter</command
></primary
></indexterm>

<para
>Dette tilbyder to funktioner. Hvis du vælger <menuchoice
><guimenu
>Værktøjer</guimenu
><guimenuitem
>Kør kommando</guimenuitem
></menuchoice
> kan du indtaste en skalkommando. Udskriften fra kommandoen indsættes i editorens buffer når du trykker på knappen <guibutton
>Start</guibutton
>. </para>
</formalpara>

<para
>En lignende funktion er tilgængelig under <menuchoice
><guimenu
>Værktøjer</guimenu
><guimenuitem
>Filtermarkering gennem kommando...</guimenuitem
></menuchoice
>. For at bruge dette, skal du markere et tekstområde i editoren. Hvis du nu skriver en skalkommando og trykker på knappen <guibutton
>Start</guibutton
>, så startes kommandoen og markeringen bruges som standardindtastning til det. Standardudskriften indsættes derefter i editoren. </para>
</listitem>

<listitem>
<formalpara>
<title
>Indstiksprogrammet &doxygen;</title>
<indexterm zone="plugin-tools"
><primary
>&doxygen;</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>dokumentationsværktøj</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>API-dokumentation</primary
></indexterm>

<para
>Dette hjælper dig med at bruge API-dokumentationsværktøjet &doxygen; (<ulink url="http://www.doxygen.org"
></ulink
>). Du kan vælge <menuchoice
><guimenu
>Projekt</guimenu
><guimenuitem
>Kør Doxygen</guimenuitem
></menuchoice
> for at oprette API-dokumentation for det nuværende projekt baseret på konfigurationen som angives af filen <filename
>Doxyfile</filename
> i projektmappen. </para>
</formalpara>

<para
>Desuden kan du indstille &doxygen; med dialogen <menuchoice
><guimenu
>Projekt</guimenu
><guimenuitem
>Projektindstillinger...</guimenuitem
></menuchoice
>. Dialogen er meget lig værktøjet &doxywizard;. </para>
</listitem>

<listitem>
<formalpara>
<title
>Indstiksprogrammet &ctags;</title>
<indexterm zone="plugin-tools"
><primary
>&ctags;</primary
></indexterm>

<para
>Selv om klassesøgeren giver dig et udførligt overblik over symboler og klasser i projektet, kan du også ville bruge ctags-værktøjet. Det understøtter i særdelshed mange flere sprog end klassesøgeren. </para>
</formalpara>

<para
>Du aktiverer indstiksprogrammet under <menuchoice
><guimenu
>Værktøj</guimenu
><guimenuitem
>CTags...</guimenuitem
></menuchoice
>. Når du starter det for første gang, bliver du bedt om  først at oprette en søgedatabase. Når du accepterer dette, startes &ctags;-programmet og laver en fil som hedder <filename
>tags</filename
> i projektmappen. Dette er en tekstfil som indeholder alle symboler i kildekodefilerne. </para>

<para
>Du kan søge på to måder i symboldatabasen: når feltet <guilabel
>Matchning med regulært udtryk</guilabel
> er markeret, tolkes teksten som du skriver som et regulært udtryk (POSIX-varianten) og matches med eksisterende symboler. Teksten <literal
>.*Widget</literal
> søger for eksempel efter alle symboler som slutter med <literal
>Widget</literal
>. Hvis feltet ikke er markeret, er søgningen verbatim. </para>

<para
>Under søgningen vises en liste med matchende symboler, sammen med linjenummeret hvor de defineres. Du springer til respektive steder ved at klikke i listen. </para>

<para
>For visse sprog skelner &ctags; mellem forskellige typer af symboler. Python har for eksempel klasser og funktioner. Du kan søge kun efter klasser ved at afkrydse den tilsvarende type i dialogen. </para>

<para
>Symboldatabasen opdateres normalt ikke når kildekoden ændres. På grund af dette kommer linjenumrene ikke til at være rigtige længe efter et stykke tid, og nytilføjede klasser og funktioner vil mangles. Derfor bør du opdatere filen <filename
>tags</filename
> med regelmæssige intervaller, ved at trykke på knappen <guibutton
>Genopret</guibutton
>. </para>
</listitem>

<listitem>
<formalpara>
<title
>Indstiksprogrammet <command
>astyle</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>astyle</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
><application
>Grafisk stil</application
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>indrykning</primary
></indexterm>

<para
>(... endnu ikke skrevet ...) </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Indstiksprogrammet <command
>regexptest</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>regexptest</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>fejlsøgning</primary
><secondary
>regulære udtryk</secondary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>regulære udtryk</primary
><secondary
>fejlsøgning</secondary
></indexterm>

<para
>At konstruere regulære udtryk kan være et hårdt arbejde. Ofte matcher det første forsøg med et udtryk for mange strenge. I særdeleshed ved arbejde med et kompileret sprog kan cykeltiden ved fejlsøgning af et regulært udtryk være besværlig. Indstiksprogrammet regexptest lader dig udforske ændringer i et regulært udtryk direkte. Det aktiveres ved at vælge <menuchoice
><guimenu
>Værktøj</guimenu
> <guimenuitem
>Fejlsøg regulært udtryk...</guimenuitem
></menuchoice
>. </para>
</formalpara>

<para
>I variantdropned-feltet kan du vælge hvilken variant af regulære udtryk der skal bruges. For øjeblikket understøttes varianten som defineres af POSIX-standarden, som bruges af programmet &grep;, og den udvidede POSIX-syntaks som bruges af programmet &egrep;. </para>

<para
>Når du indtaster et udtryk, får du umiddelbart tilbagemelding om eventuelle syntaksfejl i det. Ved at indtaste en tekst under <guilabel
>Teststreng</guilabel
>, kan du se om udtrykket matcher strengen. I særdeleshed om det regulære udtryk indeholder grupper, såsom <literal
>"([a-z])"</literal
>, vises indholdet af de matchede delgrupper i et listefelt. </para>
</listitem>

<listitem>
<formalpara>
<title
>Indstiksprogrammet <command
>konsole</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>konsole</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>terminal</primary
><secondary
>indlejret</secondary
></indexterm>

<para
>(... endnu ikke skrevet ...) </para>
</formalpara>
</listitem>

</itemizedlist>

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="parts-survey">
<title
>Oversigt</title>

<para
>&kdevelop; tilbyder udvidelige moduler, eller delprogrammer, som indlæses når programmet kører og efter behov. Det gør det muligt for udviklere kun at aktivere funktioner som de behøver eller ønsker for udviklingen. </para>

<para
>Visse delprogrammer anses for at være <link linkend="table-global-parts"
>globale</link
> &mdash; dvs. de påvirker hele funktionen hos &kdevelop;. For eksempel uimode-delprogrammet lader en udvikler vælge hvilken brugergrænseflade der skal bruges. </para>

<para
>Andre delprogrammer er <link linkend="table-project-parts"
>projektspecifikke</link
>, og bruges kun når et projekt af den typen indlæses. Håndtering af automake, behøver for eksempel kun at være aktiv når et automake-baseret projekt er indlæst. Ellers er den ikke aktiv. </para>

<para
>Aktive dele kan påvirke &kdevelop; på mange måder. Afhængig af funktion, kan de tilføje ekstra menuer, ekstra menupunkter, ekstra værktøjsknapper &etc; </para>

<table id="table-project-parts">
<title
>Delprogrammer for projekthåndtering i &kdevelop;</title>

<tgroup cols="2"
><tbody>
<row>
  <entry
>antproject</entry>
  <entry
>ANT-projekthåndtering (&Java;-programmer)</entry>
</row>
<row>
  <entry
>autoprojekt</entry>
  <entry
>Automake projekthåndtering</entry>
</row>
<row>
  <entry
>customproject</entry>
  <entry
>Egen projekthåndtering</entry>
</row>
<row>
  <entry
>trollproject</entry>
  <entry
>Qmake-baseret projekthåndtering</entry>
</row>
</tbody
></tgroup>
</table>

<table id="table-global-parts">
<title
>Globale delprogrammer i &kdevelop;</title>

<tgroup cols="2"
><tbody>
<row
><entry
>Delprogramnavn</entry
><entry
>Beskrivelse</entry
></row>
<row
><entry
>programguiden</entry
><entry
>Ny projektguide</entry
></row>
<row
><entry
>historie</entry
><entry
></entry
></row>
<row
><entry
>konsole</entry
><entry
>Indlejret terminal</entry
></row>
<row
><entry
>editor-chooser</entry
><entry
>Vælger en intern teksteditor</entry
></row>
<row
><entry
>doctreeview</entry
><entry
>Dokumentationssøger</entry
></row>
<row
><entry
>openwith</entry
><entry
></entry
></row>
<row
><entry
>fileselector</entry
><entry
>En komponent til at vælge filer</entry
></row>
<row
><entry
>uimode</entry
><entry
>Indstil grænsefladestilstand</entry
></row>
<row
><entry
>teksttools</entry
><entry
>Yderligere tekstværktøjer</entry
></row>
<row
><entry
>tipofday</entry
><entry
>Dagens vink</entry
></row>
<row
><entry
>grepview</entry
><entry
>Et grafisk flerfilsøgningsværktøj</entry
></row>
<row
><entry
>cvs</entry
><entry
>Støtte for CVS</entry
></row>
<row
><entry
>værktøjer</entry
><entry
></entry
></row>
<row
><entry
>regexptest</entry
><entry
>Værktøj til at afprøve regulære udtryk</entry
></row>
<row
><entry
>abbrev</entry
><entry
>Ekspansion af forkortelser</entry
></row>
<row
><entry
>filter</entry
><entry
></entry
></row>
<row
><entry
>valgrind</entry
><entry
>En grafisk grænseflade for valgrind</entry
></row>
</tbody
></tgroup>
</table>

<table>
<title
>Delprogrammer for sprogunderstøttelse i &kdevelop;</title>
<tgroup cols="2">
<tbody>
<row
><entry
>cppsupport</entry
><entry
>Støtte for C/C++</entry
></row>
<row
><entry
>fortransupport</entry
><entry
>Støtte for Fortran</entry
></row>
<row
><entry
>javasupport</entry
><entry
>Støtte for &Java;</entry
></row>
<row
><entry
>perlsupport</entry
><entry
>Støtte for Perl</entry
></row>
<row
><entry
>phpsupport</entry
><entry
>Støtte for PHP</entry
></row>
<row
><entry
>pythonsupport</entry
><entry
>Støtte for Python</entry
></row>
</tbody
></tgroup>
</table>

<table>
<title
>Projektspecifikke delprogrammer i &kdevelop;</title>
<tgroup cols="2"
><tbody>
<row
><entry
>astyle</entry
><entry
></entry
></row>
<row
><entry
>buglist</entry
><entry
></entry
></row>
<row
><entry
>classview</entry
><entry
>Klassevisningshåndtering</entry
></row>
<row
><entry
>ctags</entry
><entry
></entry
></row>
<row
><entry
>debugger</entry
><entry
>Håndtering af &GNU;-fejlsøgere</entry
></row>
<row
><entry
>diff</entry
><entry
></entry
></row>
<row
><entry
>distpart</entry
><entry
></entry
></row>
<row
><entry
>doxygen</entry
><entry
></entry
></row>
<row
><entry
>fileview</entry
><entry
></entry
></row>
<row
><entry
>javadebugger</entry
><entry
></entry
></row>
<row
><entry
>manager</entry
><entry
></entry
></row>
<row
><entry
>nedit</entry
><entry
></entry
></row>
<row
><entry
>outputviews</entry
><entry
></entry
></row>
<row
><entry
>perforce</entry
><entry
></entry
></row>
<row
><entry
>qeditor</entry
><entry
></entry
></row>
<row
><entry
>scripting</entry
><entry
></entry
></row>
<row
><entry
>scriptproject</entry
><entry
></entry
></row>
<row
><entry
>sourcenav</entry
><entry
></entry
></row>
<row
><entry
>svn</entry
><entry
></entry
></row>
<row
><entry
>visualboyadvance</entry
><entry
></entry
></row>
<row
><entry
>windowmenu</entry
><entry
></entry
></row>
</tbody
></tgroup>
</table>

</sect1
> <!-- parts-survey -->

</appendix
> <!-- plugin-tools -->

<!-- ====================================================================== -->

<appendix id="app-uimodes-examples">
<title
>Eksempel på tilstande i brugergrænsefladen for &kdevelop;</title>

<sect1 id="ideal-desc">
<title
>IDEAI-tilstand</title>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-ideal-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Skærmaftryk</phrase
></textobject>
    <caption
><para
>&kdevelop; IDEA-vinduetilstand</para
></caption>
  </mediaobject>
</screenshot>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-ideal-mode-0.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Skærmaftryk</phrase
></textobject>
    <caption
><para
>&kdevelop; IDEA-tilstand, lukkede faneblade</para
></caption>
  </mediaobject>
</screenshot>

<para
>Dette eksempel på et skærmaftryk demonstrerer en af hovedfordelene ved IDEAl tilstand. Der er et maksimum af arbejdsplads tilgængeligt. Alligevel er en vilkårlig anden værktøjsvisning parat med det samme ved at klikke på det tilsvarende faneblad. </para>
<para
>Du vil sandsynligvis behøve noget tid for at vænne dig til ikonerne i fanebladslinjen. Hvis du er faret vild, så placér blot musen over et faneblad og vent nogle få sekunder. En kort værktøjsvink beskrivelse vil komme frem. I dette skærmaftryk er  <quote
>Automake Manager</quote
> værktøjsvinket vist som et eksempel. Det beskriver det nederste faneblad i fanebladslinjen til højre. </para>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

</sect1
> <!-- ideal-desc -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="mdi-desc">
<title
>Underrammevinduetilstand</title>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

<screenshot>
  <mediaobject>
    <imageobject>
    <imagedata fileref="kdevelop-mdi-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Skærmaftryk</phrase
></textobject>
    <caption
><para
>&kdevelop; underrammetilstand</para
></caption>
  </mediaobject>
</screenshot>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

</sect1
> <!-- mdi-desc -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="tabbed-desc">
<title
>Fanebladssidetilstand</title>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-tabbed-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Skærmaftryk</phrase
></textobject>
    <caption
><para
>&kdevelop; faneblads-sidetilstand</para
></caption>
  </mediaobject>
</screenshot>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

</sect1
> <!-- tabbed-desc -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="toplevel-desc">
<title
>Topniveauvinduetilstand</title>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

<screenshot>
  <mediaobject>
    <imageobject>
      <imagedata fileref="kdevelop-toplevel-mode.png" format="PNG"/>
    </imageobject>
    <textobject
><phrase
>Skærmaftryk</phrase
></textobject>
    <caption
><para
>&kdevelop; topniveautilstand</para
></caption>
  </mediaobject>
</screenshot>

<para
>Klik <link linkend="uimodes-survey"
>her</link
> for at gå tilbage til oversigten over tilstande. </para>

</sect1
> <!-- toplevel-desc -->

</appendix
> <!-- app-uimodes-examples -->

<!-- ====================================================================== -->

<appendix id="app-misc-info">
<title
>Yderligere information</title>
<sect1 id="gettinginformation">
<title
>Hent information</title>
<para
>(... endnu ikke skrevet ...) </para>
</sect1
> <!-- gettinginformation -->

<sect1 id="app-reporting-bugs">
<title
>Rapportér fejl</title>
<para
>(... endnu ikke skrevet ...) </para>
</sect1
> <!-- app-reporting-bugs -->

<sect1 id="app-licensing">
<title
>Licenser</title>
&underFDL; &underGPL; </sect1
> <!-- app-licensing -->
</appendix
> <!-- app-misc-info -->

<!-- ====================================================================== -->

<appendix id="app-changelog">
<title
>Ændringer</title>
<sect1 id="changes">
<title
>Ændringer i dokumentet</title>
<para>
<itemizedlist>
<listitem
><para
>2003-01-03 &mdash; startede ændringsloggen </para
></listitem>
</itemizedlist>
</para>
</sect1
> <!-- changes -->
</appendix
> <!-- app-changelog -->

<!-- ====================================================================== -->

<!--  Note (bp, 2003-09-04): <bibliography
> should remain the last appendix section because of a (meinproc???) bug which sends the Next selection in circles back to it. -->

<appendix id="app-bibliography">
<title
>Bibliografi</title>

<para
>(... endnu ikke skrevet ...)</para>

<bibliography>

<biblioentry>
<title
><ulink url="info://make/Top"
>GNU Make-manual</ulink
></title>
<authorgroup>
<author
><firstname
>Richard M.</firstname
><surname
>Stallman</surname
></author>
<author
><firstname
>Roland</firstname
><surname
>McGrath</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://automake/Top"
>GNU Automake</ulink
></title>
<authorgroup>
<author
><firstname
>David</firstname
><surname
>MacKenzie</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Tromey</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://autoconf/Top"
>GNU Autoconf</ulink
></title>
<authorgroup>
<author
><firstname
>David</firstname
><surname
>MacKenzie</surname
></author>
<author
><firstname
>Ben</firstname
><surname
>Elliston</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
><ulink url="info://gcc/Top"
>Brug af GNU's kompiler-samling</ulink
></title>
<author
><firstname
>Richard M.</firstname
><surname
>Stallman</surname
></author>
</biblioentry>

<biblioentry>
<title
><ulink url="info://libtool/Top"
>GNU Libtool</ulink
></title>
<authorgroup>
<author
><firstname
>Gordon</firstname
><surname
>Matzigkeit</surname
></author>
<author
><firstname
>Alexandre</firstname
><surname
>Oliva</surname
></author>
<author
><firstname
>Thomas</firstname
><surname
>Tanner</surname
></author>
<author
><firstname
>Gary V.</firstname
><surname
>Vaughan</surname
></author>
</authorgroup>
</biblioentry>

<biblioentry>
<title
>GNU Autoconf, Automake, og Libtool</title>
<edition
>1st edition</edition>
<pubdate
>October 2000</pubdate>
<authorgroup>
<author
><firstname
>Gary V.</firstname
><surname
>Vaughan</surname
></author>
<author
><firstname
>Ben</firstname
><surname
>Elliston</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Tromey</surname
></author>
<author
><firstname
>Ian Lance</firstname
><surname
>Taylor</surname
></author>
</authorgroup>
<publisher
><publishername
>New Riders Publishing</publishername
></publisher>
<isbn
>ISBN 1578701902</isbn>
</biblioentry>


<biblioentry>
<title
>Avanceret programmering i &UNIX;-miljø</title>
<edition
>1st edition</edition>
<pubdate
>June 1992</pubdate>
<author
><firstname
>W. Richard</firstname
><surname
>Stevens</surname
></author>
<publisher
><publishername
>Addison-Wesley Pub Co</publishername
></publisher>
<isbn
>ISBN 0201563177</isbn>
</biblioentry>

<biblioentry>
<title
>Thinking in C++, Volume 1: Introduction to Standard C++</title>
<edition
>2nd Edition</edition>
<pubdate
>April 15, 2000</pubdate>
<author
><firstname
>Bruce</firstname
><surname
>Eckel</surname
></author>
<publisher
><publishername
>Prentice Hall</publishername
></publisher>
<isbn
>ISBN 0139798099</isbn>
</biblioentry>

<biblioentry>
<title
>Åben kilde udvikling med CVS</title>
<edition
>2nd Edition</edition>
<pubdate
>October 12, 2001</pubdate>
<authorgroup>
<author
><firstname
>Karl</firstname
><surname
>Fogel</surname
></author>
<author
><firstname
>Moshe</firstname
><surname
>Bar</surname
></author>
</authorgroup>
<publisher
><publishername
>The Coriolis Group</publishername
></publisher>
<isbn
>ISBN 158880173X</isbn>
</biblioentry>

<biblioentry>
<title
>Programmering i PHP</title>
<edition
>1st edition</edition>
<pubdate
>March 2002</pubdate>
<authorgroup>
<author
><firstname
>Rasmus</firstname
><surname
>Lerdorf</surname
></author>
<author
><firstname
>Kevin</firstname
><surname
>Tatroe</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 1565926102</isbn>
</biblioentry>

<biblioentry>
<title
>Programmering i Python</title>
<edition
>2nd Edition</edition>
<pubdate
>March 2001</pubdate>
<author
><firstname
>Mark</firstname
><surname
>Lutz</surname
></author>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596000855</isbn>
</biblioentry>

<biblioentry>
<title
>Gui Programmering med Python : Ved brug af Qt værktøjssamlingen</title>
<edition
>Bk&amp;Cd-r edition</edition>
<pubdate
>January 2002</pubdate>
<author
><firstname
>Boudewijn</firstname
><surname
>Rempt</surname
></author>
<publisher
><publishername
>Opendocs Llc</publishername
></publisher>
<isbn
>ISBN 0970033044</isbn>
</biblioentry>

<biblioentry>
<title
>Programmering i Perl</title>
<subtitle
>Kamelbogen</subtitle>
<edition
>3rd Edition</edition>
<pubdate
>July 2000</pubdate>
<authorgroup>
<author
><firstname
>Larry</firstname
><surname
>Wall</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Christiansen</surname
></author>
<author
><firstname
>Jon</firstname
><surname
>Orwant</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596000278</isbn>
</biblioentry>

<biblioentry>
<title
>At lære Perl</title>
<subtitle
>Lama-bogen</subtitle>
<edition
>3rd Edition</edition>
<pubdate
>July 15, 2001</pubdate>
<authorgroup>
<author
><firstname
>Randal L.</firstname
><surname
>Schwartz</surname
></author>
<author
><firstname
>Tom</firstname
><surname
>Phoenix</surname
></author>
</authorgroup>
<publisher
><publishername
>O'Reilly &amp; Associates</publishername
></publisher>
<isbn
>ISBN 0596001320</isbn>
</biblioentry>

</bibliography>
<!-- -->

</appendix
> <!-- app-bibliography -->

<!-- ====================================================================== -->

&documentation.index;

</book>
