<?xml version="1.0" encoding="UTF-8" ?>

<chapter id="advanced-quanta-3-2">
<chapterinfo>
<title
>Avancerede funktioner</title>
<authorgroup>
<author
><firstname
>Christopher</firstname
> <surname
>Hornbaker</surname
> <affiliation
> <address
><email
>chrishornbaker@earthlink.net</email
></address>
</affiliation>

</author>

&erik.kjaer.pedersen.role; 

</authorgroup>
</chapterinfo>

<title
>Avancerede funktioner</title>

<para
>Dette kapitel giver en oversigt over de avancerede funktioner i &quantaplus;, og hvordan de bruges. </para>

<sect1 id="xml-tools-3-2">
<title
>&XML;-værktøjer</title>

<para
>Udgave 3.2 af &quantaplus; har mange nye XML-værktøjer og funktioner med sig. Værktøjerne er unikke i deres integration med &quantaplus;. Alle værktøjer bruger <application
>Kommander</application
> som grænseflade, med <application
>libxml</application
> og <application
>lixslt</application
> til baggrundsbehandling. Denne kombination giver hurtige, effektive, produktive og komplette værktøjer. </para>

<sect2 id="kde-db-3-2">
<title
>&kde;-dokumentationsværktøj</title>

<para
>&quantaplus; understøtter &kde;'s to hoved-dokumentationsværktøjer: <command
>meinproc</command
> og <command
>checkXML</command
>. </para>

<sect3 id="meinproc-3-2">
<title
><command
>meinproc</command
></title>

<para
>Alle som har arbejdet med dokumentation af &kde; kender til <command
>meinproc</command
>, og hvor fantastisk den er. Nu bliver det yderligere en smule bedre, med en udmærket grafisk grænseflade. Du behøver ikke længere bruge en terminal, klik blot på ikonen som ser ud som en processor, så er du klar! </para>

<variablelist>
<varlistentry>
<term
><guilabel
>Nuværende arbejdsmappe</guilabel
></term>
<listitem>
<para
>Dette program forventer at en fil med navnet <filename
>index.docbook</filename
> findes i en mappe. Hvis <filename
>index.docbook</filename
> findes i denne arbejdsmappe, så lad <guilabel
>Nuværende arbejdsmappe</guilabel
> forblive markeret. Hvis den ikke gør det, så afmarkér <guilabel
>Nuværende arbejdsmappe</guilabel
> og indskriv mappen som du vil behandle i feltet <guilabel
>Anden mappe</guilabel
>. </para>
</listitem>
</varlistentry>
</variablelist>

<note>
<para
>Uddatafiler placeres i samme mappe som kildekodefilerne. Alle &HTML;-filer fjernes hver gang <command
>meinproc</command
> køres. </para>
</note>

</sect3>

<sect3 id="checkxml-3-2">
<title
><command
>checkXML</command
></title>

<para
>Igen, alle som har arbejdet med dokumentation af &kde; kender til dette hjælpsomme program. &quantaplus; tilbyder også her en udmærket lille grafisk grænseflade. </para>

<variablelist>
<varlistentry>
<term
><guilabel
>Nuværende arbejdsmappe</guilabel
></term>
<listitem>
<para
>Hvis den åbne fil er <filename
>index.docbook</filename
>, så  lad <guilabel
>Nuværende arbejdsmappe</guilabel
> forblive markeret. Hvis den ikke er det, så afmarkér <guilabel
>Nuværende arbejdsmappe</guilabel
> og indskriv mappen hvor <filename
>index.docbook</filename
> kan findes. </para>
</listitem>
</varlistentry>
</variablelist>

<note>
<title
>Uddata</title>
<para
>Hvis der bliver nogen udskrift er din fil ugyldig. Ret de rapporterede fejl og forsøg igen. </para>
</note>
</sect3>
</sect2>

<sect2 id="xmlval-3-2">
<title
>&XML;-validering</title>

<para
>&quantaplus; har et udmærket &XML;-valideringsværktøj, som bruger baggrundsprogrammet <command
>xmllint</command
>. </para>

<variablelist>
<varlistentry>
<term
><guilabel
>Denne fil</guilabel
></term>
<listitem>
<para
>Hvis filen som skal valideres for har fokus øjeblikket  &quantaplus;, så lad helt enkelt <guilabel
>Nuværende fil</guilabel
> være markeret. Hvis den ikke er det, afmarkér <guilabel
>Nuværende fil</guilabel
> og vælg filen som skal valideres i filvælgeren <guilabel
>Anden fil</guilabel
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Kontrol af velformateret</guilabel
></term>
<listitem>
<para
>Hvis du kun vil vide at en fil er velformateret, så markér afkrydsningsfeltet  <guilabel
>Kontrollér kun velformateret</guilabel
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Definition &URI;</guilabel
></term>
<listitem>
<para
>Hvis du bruger en &DTD;, og den specificeres i &XML;-filen, vælg &DTD; (intern), standardvalget, ellers vælg &DTD; (ekstern) og find &DTD;'en med filvælgeren for definitionens internet-adresse. Både til validering af &W3C; &XML; schema og RelaxNG kræves ekstern definition via filvælgeren for <guilabel
>Definitionens internet-adresse</guilabel
>. </para>
</listitem>
</varlistentry>
</variablelist>
</sect2>

<sect2 id="xsltproc-3-2">
<title
>Behandling af &XSL;</title>

<para
>Ja, &quantaplus; har også et &XSL;-behandlingsværktøj! Det bruger værktøjet <command
>xsltproc</command
> som kommer med <application
>libxml2</application
>. </para>

<variablelist>
<varlistentry>
<term
><guilabel
>Denne fil</guilabel
></term>
<listitem>
<para
>Hvis filen som skal behandles for øjeblikket har fokus i &quantaplus;, lad så helt enkelt <guilabel
>Nuværende fil</guilabel
> være markeret. Hvis den ikke er det, afmarkér <guilabel
>Nuværende fil</guilabel
> og vælg filen som skal behandles i filvælgeren <guilabel
>Anden fil</guilabel
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Stilskabelon</term>
<listitem>
<para
>Vælg &XSL;-filen som du vil skal bruges. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Uddatafilnavn</guilabel
></term>
<listitem>
<para
>Indtast navnet som du ønsker at resultatfilen skal kaldes. Filen skrives normalt i din hjemmemappe. </para>
</listitem>
</varlistentry>
</variablelist>

<note>
<para
>Dette program mangler fleksibilitet. Desværre, vi skal forsøge at gøre det bedre næste gang. </para>
</note>
</sect2>

</sect1>

<!-- <sect1 id="kfilereplace-3-2">
<title
>KFileReplace</title>

<para>
KFileReplace is a terrific new addition to &quantaplus;. It allows one to
quickly replace strings over multiple files in only a few clicks of the
mouse. Imagine you have converted all your GIF images to PNG images
(hasn't everyone done this already?), only the extension has changed, and
you have the &lt;img /> tag scattered throughout 50 XHTML files. Are you
going to do a Find &amp; Replace on every file? Surely not when you can do
them all at the same time! This is only one of the many situations where
you will find KFileReplace a seriously helpful tool. This section will show
you how to use this wonderful feature.
</para>

<sect2 id="using-kfr-3-2">
<title
>Using KFileReplace</title>

<para>
With all these wonderful features KFileReplace has, surely you are
incredibly interested in how to use it! Well, make sure your swim suit
is on tight, because we are about to dive in!
</para>

<sect3 id="start-kfr-3-2">
<title
>Starting KFileReplace</title>

<para>
You will find KFileReplace in two places: &quantaplus;' main toolbar and the
menubar (Plugins -> KFileReplace). It is represented by this icon:
<inlinemediaobject>
<imageobject>
<imagedata fileref="kfr-icon.png" format="PNG"/>
</imageobject>
</inlinemediaobject
>.
By executing it from either location, you will be presented with the New
Search &amp; Replace Project dialog.
</para>

<mediaobject>
<imageobject>
<imagedata fileref="kfr-new-dialog.png" format="PNG"/>
</imageobject>
<caption
><para
>KFileReplace's New Search &amp; Replace Project dialog.</para
></caption>
</mediaobject>

</sect3>

<sect3 id="replace-string-kfr-3-2">
<title
>Replacing Strings in Files Over Multiple Folders</title>


<para>
Your boss just gave word that:

<orderedlist numeration="arabic">
<listitem>
<para
>all image formats will be PNG from now on;</para>
</listitem>
<listitem>
<para
>all current images must be converted to PNG;</para>
</listitem>
<listitem>
<para
>and it all needs to be done in one hour.</para>
</listitem>
</orderedlist>

<quote
>One hour!?!?</quote
> you think to yourself. <quote
>It'll take at
least 45 minutes to convert the images!</quote
> Calm down. Convert
the images, load up your project, and fire up KFileReplace. Filter for
only the file types you want to change. Press the <inlinemediaobject>
<imageobject
><imagedata format="PNG" fileref=""/></imageobject>
</inlinemediaobject
> and for, say GIF images, .gif for the string to
replace and .png for the replacement string.
</para>

</sect3>
</sect2>
</sect1
> -->

<sect1 id="kparts-3-2">
<sect1info>
<title
>Brug af plugin</title>
<authorgroup>
<author
><firstname
>Mathieu</firstname
> <surname
>Kooiman</surname
> <affiliation
> <address
><email
>quanta@map-is.nl</email
></address>
</affiliation>
</author>

&erik.kjaer.pedersen.role; 

</authorgroup>
</sect1info>

<title
>Brug af plugin</title>

<sect2 id="what-is-a-plugin-3-2">
<title
>Hvad er et plugin?</title>

<para
>&quantaplus; kan indlæse plugin, som er KParter. Mekanismen med KParter, er en meget kraftfuld funktion i &kde;. En KPart er et relativt lille, genbrugbar beholder for en funktion. Den gør det muligt for &kde;-udviklere at bygge videre på andre programmørers arbejde på en enkel måde. Et eksempel på dette er &quantaplus; selv. Editoren som &quantaplus; bruger er &kate;'s KPart. &kate;'s KPart har allerede en mængde funktioner som &quantaplus; behøver, såsom syntaksfremhævning. Ved at integrere den i &quantaplus;, blev det muligt for &quantaplus;' udviklere at fokusere på hvad &quantaplus; skulle kunne gøre, i stedet for at håndtere de mange problemer der ville opstå ved at udvikle en ny editorkomponent fra begyndelsen. </para>

<para
>Plugin som &quantaplus; indlæser, har måske ikke noget overhovedet at gøre med &quantaplus; selv. Det gør det til et meget kraftfuldt system. Du kan drage nytte af ekstra funktioner, og behøver ikke vente på at nogen integrerer dem i &quantaplus;. Plugin kan indlæses til et antal forskellige grafiske elementer. Mere om dette nedenfor. </para>

</sect2>

<sect2 id="plugin-dialog-3-2">
<title
>Forstå dialogen til at redigere plugin</title>

<para
>For at installere et plugin eller et delprogram, bruges menuen <menuchoice
><guimenu
>Plugin</guimenu
> <guimenuitem
>Redigér</guimenuitem
></menuchoice
>. Det får følgende dialog frem: </para>

<mediaobject>
<imageobject>
<imagedata format="PNG" fileref="plugin-edit.png"/>
</imageobject>
<caption
><para
>Dialogen til at redigere plugin.</para
></caption>
</mediaobject>

<para
>Denne dialog lader dig håndtere alle de definerede plugin, og lader dig tilføje nye. Vi beskriver hvert element i grænsefladen her. <variablelist>
<varlistentry>
<term
><guilabel
>Søgestier</guilabel
></term>
<listitem>
<para
>Her kan du udfylde en søgesti. Når du tilføjer en plugin uden en <guilabel
>Plads</guilabel
>, søger &quantaplus; i denne søgesti for at finde dit plugin. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Tilføj</guilabel
></term>
<listitem>
<para
>Dette viser en dialog som lader dig tilføje et nyt plugin. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Indstil</guilabel
></term>
<listitem>
<para
>Dette lader dig ændre indstillinger for et bestemt plugin. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Fjern</guilabel
></term>
<listitem>
<para
>Fjerner det markerede plugin. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Opdatér</guilabel
></term>
<listitem>
<para
>Opdaterer dialogens indhold. </para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para
>Læs <xref linkend="configure-plugins"/> for at lære mere om plugin.</para>
</sect2>
</sect1>
<sect1 id="team-members">
  <title
>Teamudvikling</title>
  <para
>Ofte arbejder flere personer på et enkelt projekt og der er et eller andet hierakisk forhold mellem disse personer. &quantaplus; understøtter begrebet team-medlemmer og de kan indstilles i dialogen for <menuchoice
> <shortcut
> <keycombo action="simul"
>&Shift;<keycap
>F7</keycap
></keycombo
> </shortcut
> <guimenu
>Projekt</guimenu
> <guimenuitem
>Projektegenskaber</guimenuitem
> </menuchoice
>. </para>
  <mediaobject>
    <imageobject>
      <imagedata format="PNG" fileref="team-editing.png"/>
    </imageobject>
    <caption
><para
>Dialogen Team-medlem-editor</para
></caption>
  </mediaobject>
  <para
>Indgangene <guilabel
>Navn</guilabel
>, <guilabel
>E-mail</guilabel
> er selvforklarende. <guilabel
>Alias</guilabel
> er brugerens alias og fungerer som en entydig identifikator. </para>
  <para
><guilabel
>Rolle</guilabel
> angiver medlemmets rolle i projektet og kan være en af følgende: <itemizedlist>
<listitem
><para>
<guilabel
>Team-leder</guilabel>
</para
></listitem>
<listitem
><para>
<guilabel
>Delprojekt-leder</guilabel>
</para
></listitem>
<listitem
><para>
<guilabel
>Opgave-leder</guilabel>
</para
></listitem>
<listitem
><para>
<guilabel
>Almindeligt medlem</guilabel>
</para
></listitem>
</itemizedlist>
</para>
<para
><guilabel
>Opgave</guilabel
> er en beskrivelse af en opgave tildelt dette medlem.</para>
<para
><guilabel
>Del-projekt</guilabel
>: du kan vælge en liste af del-projekter. Del-projekter kan indstilles og oprettes ved at trykke på knappen <guilabel
>Redigér del-projekter</guilabel
>. Hvert del-projekt har et synligt brugernavn og placering. Placeringen er en relativ sti til mappen under projekt-træet. Det betyder at del-projektet er en mappe under hovedprojektet. F.eks. kan hovedprojektet være dit firmas websted, hvor et del-projekt kan være webstedet for firmaets intranet, placeret i mappen <filename path="intranet"
>intranet</filename
> i hovedprojektets mappe.</para>
<para
>Et medlem kan have mere end en rolle i projektet, som f.eks. både team-leder og del-projektleder.</para>
<para
>En bruger bør vælge hvem i listen med gruppemedlemmer han selv er. Dette er muligt ved at markere et gruppemedlem i listen og trykke på knappen <guilabel
>Angiv som dig selv</guilabel
>. Medlemmet som for øjeblikket er markeret (din identitet) vises med fede typer efter teksten <guilabel
>Du er:</guilabel
>.</para>
<para
>Aliasser og at indstille dig selv er vigtigt angående meddelelser og noteringer. Se <xref linkend="annotations"/> for at lære dig mere om noteringer.</para>
<para
>Udover at holde styr på dit team, er der flere fordele ved at indstille team-medlemmer: du kan sætte en begivenhed til at informere team-ledere om hvornår noget skal ske. Se i <xref linkend="event-actions"/> hvordan man gør.</para>
</sect1>
<sect1 id="event-actions">
  <title
>Begivenhedshandlinger</title>
  <para
>Begivenhedshandlinger er handlinger der udføres når der sker en eller anden begivenhed i projektet. Et eksempel kunne være at gemme oplysninger om hvornår projektet blev åbnet og lukket, så der senere kan foretages en granskning af hvor meget hvert medlem arbejdede på det, eller afsendelse af en e-mail når en fil bliver gemt eller tilføjet til CVS vha. et script når filen tilføjes projektet og denne liste kan fortsættes.</para>
  <para
>På siden <guilabel
>Begivenheds-indstillinger</guilabel
> i <menuchoice
> <shortcut
> <keycombo action="simul"
>&Shift;<keycap
>F7</keycap
></keycombo
> </shortcut
> <guimenu
>Projekt</guimenu
> <guimenuitem
>Projektegenskaber</guimenuitem
> </menuchoice
>-dialogen, kan du oprette, redigere og slette begivenhedshandlinger. </para>
<mediaobject>
  <imageobject>
    <imagedata format="PNG" fileref="event-editing.png"/>
  </imageobject>
  <caption
><para
>Begivenhedseditor-dialogen</para
></caption>
</mediaobject>
<para
>Indgangene i dialogen er:</para>
<variablelist>
<varlistentry>
<term
><guilabel
>Begivenhed</guilabel
></term>
<listitem
><para
>handlingen udføres når begivenheden fra listen sker. Navnene er selvforklarende.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Handling</guilabel
></term>
<listitem
><para
>den udførte handlings-type. Mulighederne er: </para>
<variablelist>
<varlistentry>
<term
><guilabel
>Non-script-handling</guilabel
></term>
<listitem
><para
>en handling der ikke er en brugerdefineret scripthandling. Se  <xref linkend="user-actions"/> for brugerhandling. </para>
<para
><guilabel
>Handlingsnavn</guilabel
> specificerer handlingen der skal udføres nå begivenheden sker.</para>
</listitem>
</varlistentry>
<varlistentry>
  <term
><guilabel
>Send e-mail</guilabel
></term>
  <listitem
><para
>en e-mail bliver sendt til modtageren valgt i <guilabel
>Modtager</guilabel
>-listen, når handlingen sker. Modtageren kan være et team eller en del-projektleder. Se <xref linkend="team-members"/> for definering af sådanne ledere. </para
>    
  </listitem>
</varlistentry>
<varlistentry>
  <term
><guilabel
>Log begivenhed</guilabel
></term>
  <listitem
><para
>begivenheden gemmes i en fil. Argumenterne til denne handling er: </para>
    <variablelist>
	<varlistentry>
	<term
><guilabel
>Logfil</guilabel
></term>
	<listitem
><para
>filnavnet med den fulde sti</para
></listitem>
	</varlistentry>
	<varlistentry>
	<term
>Detaljer</term>
	<listitem
><para
>Hvor meget information loggen skal indeholde</para
></listitem>
	</varlistentry>
	<varlistentry>
	<term
><guilabel
>Opførsel</guilabel
></term>
	<listitem
><para
>Om der i eksisterende filer skal oprettes/overskrives eller tilføjes en nye log-begivenhed.</para
></listitem>
	</varlistentry>
     </variablelist>
  </listitem>
</varlistentry>
<varlistentry>
<term
><guilabel
>Script-handling</guilabel
></term>
<listitem
><para
>en brugerdefineret script-handling. Se <xref linkend="user-actions"/> for brugerhandling. </para>
  <para
><guilabel
>Handlingsnavn</guilabel
> specificerer handlingen der skal udføres nå begivenheden sker.</para>
</listitem>
</varlistentry>

</variablelist>
</listitem>
</varlistentry>
</variablelist>
<para
>De andre indgange afhænger af <guilabel
>Handling</guilabel
>stypen som beskrevet før. </para>
</sect1>

<sect1 id="annotations">
<title
>Noteringer</title>
<para
>Noteringer er specielle kommentarer i dokumenterne. De adskiller sig fra almindelige kommentarer i følgende henseender: <itemizedlist>
<listitem
><para
>informationen samles ind af Quanta og vises i værktøjsvisningen <guilabel
>Noteringer</guilabel
>. </para
></listitem>
<listitem
><para
>informationen kan adresseres til et gruppemedlem </para
></listitem>
</itemizedlist>
</para>
<para
>At indtaste noteringer er simpelt. Du kan enten bruge tilvalget <guilabel
>Notering</guilabel
> i editorens sammenhængsafhængige menu, eller skrive nøgleordet <emphasis
>@annotation</emphasis
> i et kommentarområde fulgt af noteringens tekst. <example
><title
>Noteringseksempel i XML</title
><screen
>&lt;!-- @annotation Det er muligt at denne koden er forkert. --&gt;</screen>
<screen
>&lt;!-- @annotation
 Flerlinje 
 notering. 
--&gt;</screen
></example>
<example
><title
>Noteringseksempel i PHP</title
><screen
>/* @annotation 
Brug PHP-kommentarer ved noteringer i et PHP-område
*/</screen>

</example>
</para>
<para
>Noteringer kan adresseres til et særligt medlem i gruppen. Syntaksen i dette tilfælde er <emphasis
>@annotation(alias)</emphasis
> eller <emphasis
>@annotation(rolle)</emphasis
>, hvor <emphasis
>alias</emphasis
> er gruppemedlemmets alias, mens <emphasis
>rolle</emphasis
> er en projektrolle fra følgende liste: <itemizedlist
> <listitem
><para
> gruppeleder </para
></listitem
> <listitem
><para
> opgaveleder </para
></listitem
> <listitem
><para
> delprojektleder </para
></listitem
> </itemizedlist
> Opgave- og delprojektledere skal følges af tilsvarende opgave- eller delprojektnavn, som vist i eksemplet nedenfor. </para>
<para>
<example
><title
>Lav en note til et gruppemedlem med alias <emphasis
>erik</emphasis
></title>
<screen
>&lt;-- @annotation(eric) Erik, kig lige på dette. Andreas --&gt;</screen>
</example>
<example
><title
>Informér gruppelederen</title>
<screen
>&lt;-- @annotation(gruppeleder) Dette er meget vigtigt for gruppen --&gt;</screen>
</example>
<example
><title
>Informér <emphasis
>PHP</emphasis
>-delprojektlederen</title>
<screen
>// @annotation(delprojektleder:PHP) Hvad mener du om det?</screen>
</example>
</para>
<para
>Aliasser og rollenavne er ikke versalfølsomme, men mellemrum omkring parenteser og <emphasis
>:</emphasis
> gør noteringen ugyldig.</para>
<para
>Mere om gruppemedlemmer, roller og aliasser findes under <xref linkend="team-members"/>.</para>
<para
>Noteringerne som findes i projektet kan inspekteres i visningen <guilabel
>Noteringer</guilabel
>. Den består af tre fanebalde: <variablelist
> <varlistentry
> <term
><guilabel
>Nuværende fil</guilabel
></term
> <listitem
><para
> Noteringerne som findes i den nuværende fil.</para
></listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Til dig</guilabel
></term
> <listitem
><para
> Noteringer i projektet adresserede til dig. Indgangene grupperes pr fil. </para
></listitem
> </varlistentry
> <varlistentry
> <term
><guilabel
>Alle filer</guilabel
></term
> <listitem
><para
>Noteringerne som findes i alle projektfiler, grupperede ifølge fil. </para
></listitem
> </varlistentry
> </variablelist
> Noteringerne gennemsøges efter eksterne ændringer ved indlæsning af projekt og filer. På den måde genkendes til og med en notering som nogen lægger til udenfor &quantaplus; . Eftersom søgningen kan tage en vis tid, kan informationsdialogen om nye noteringer adresserede til dig dukke op nogle sekunder efter at projektet er indlæst. </para>
</sect1>
&debugging-quanta; </chapter>
