<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [

  <!ENTITY kappname "&rocs;">
  <!ENTITY package "rocs">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % Estonian  "INCLUDE">

  <!ENTITY apiConsole SYSTEM "apiConsole.docbook">
  <!ENTITY apiDatastructure SYSTEM "apiDatastructure.docbook">
  <!ENTITY apiGraphstructure SYSTEM "apiGraphstructure.docbook">
  <!ENTITY apiLinkedListstructure SYSTEM "apiLinkedListstructure.docbook">
  <!ENTITY apiRootedTreestructure SYSTEM "apiRootedTreestructure.docbook">

  <!ENTITY chapterImportExport SYSTEM "chapterImportExport.docbook">
]>
<book id="rocs" lang="&language;">

<bookinfo>
<title
>&rocs;i käsiraamat</title>
<authorgroup>
<author
><personname
> <firstname
>Tomaz</firstname
> <surname
>Canabrava</surname
> </personname
> <email
>tomaz.canabrava@gmail.com</email
> </author>
<author
><personname
> <firstname
>Andreas</firstname
> <surname
>Cord-Landwehr</surname
> </personname
> <email
>cordlandwehr@kde.org</email
> </author>

<othercredit role="translator"
><firstname
>Marek</firstname
><surname
>Laane</surname
><affiliation
><address
><email
>bald@smail.ee</email
></address
></affiliation
><contrib
>Tõlge eesti keelde</contrib
></othercredit
> 
</authorgroup>

<copyright
><year
>2009</year
><holder
>Tomaz Canabrava</holder
></copyright>
<copyright
><year
>2011-2013</year
><holder
>Andreas Cord-Landwehr</holder
></copyright>

<date
>2013-07-03</date>
<releaseinfo
>1.10.0 &kde; 4.12</releaseinfo>

<legalnotice
>&FDLNotice;</legalnotice>

<abstract>
<para
>&rocs; on &kde; graafiteooria tööriist. </para>
</abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>kdeedu</keyword>
<keyword
>matemaatika</keyword>
<keyword
>matemaatika</keyword>
<keyword
>graafid</keyword>
<keyword
>tipp</keyword>
<keyword
>seos</keyword>
</keywordset>

</bookinfo>

<chapter id="introduction">
<title
>Sissejuhatus</title>
<para
>Käesolev peatükk annab ülevaate &rocs;i põhiomadustest ja töövoost. Lugejatel, kes soovivad kohe hakata &rocs;i kasutama, soovitame läbi lugeda vähemalt <xref linkend="introduction-nutshell"/> ja võtta ette <xref linkend="scripting"/>, mis selgitab, kuidas kirjutada algoritme. </para>

<sect1 id="introduction-goals">
<title
>Eesmärgid, sihtrühmad ja töövoog</title>
<para
>&rocs; on graafiteooria arenduskeskkond kõigile, keda huvitab graafialgoritmide loomine ja analüüs. See hõlmab muu hulgas</para>
<itemizedlist>
    <listitem
><para
>õppejõude, kes soovivad demonstreerida algoritme oma õpilastele,</para
></listitem>
    <listitem
><para
>õppureid, kes soovivad mõista ja näha algoritmide tööd,</para
></listitem>
    <listitem
><para
>kõiki, kes tunnevad huvi andmestruktuuride ja algoritmide vastu.</para
></listitem>
</itemizedlist>

<para
>Kõigile neile pakub &rocs; hõlpsasti pruugitava andmestruktuuride redaktori, millega luua andmestruktuure, võimsa skriptimismootori algoritmide täitmiseks ja mitu abitööriista simulatsioonide ja katsete korraldamiseks. </para>

<para
>Tavaliselt on esimene samm &rocs;i kasutamisel graafi loomine visuaalse graafiredaktoriga. Seda võib teha käsitsi, see tähendab andmeelemente luues ja neid ühendades, või siis kasutades mõnda andmestruktuuri genereerijat (kui need on aktiivse andmestruktuuri taustaprogrammi jaoks olemas), mida pakub menüükäsk <menuchoice
><guimenu
>Graafidokument</guimenu
> <guimenuitem
>Tööriistad</guimenuitem
> <guimenuitem
>Graafi genereerimine</guimenuitem
></menuchoice
>. Samuti võib lõpuks kasutada tööriista <menuchoice
><guimenu
>Tööriistad</guimenu
> <guimenuitem
>Väärtuste omistamine</guimenuitem
></menuchoice
>, millega saab anda andmestruktuurielementidele väärtused. Neid saab omistada ka käsitsi. Lõpuks saab kirjutada JavaScriptis valmis oma algoritmi ja selle käivitada vastselt loodud andmestruktuuriga. Muudatused, mida algoritm andmestruktuuris teeb, on kohe näha visuaalses graafiredaktoris. </para>

<screenshot>
<screeninfo
>&rocs;i pilt.</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="rocs-screenshot.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>&rocs;i pilt.</phrase>
</textobject>
</mediaobject>
</screenshot>
</sect1>

<sect1 id="introduction-nutshell">
<title
>&rocs;i põhitõed</title>
<para
>Selles osas antakse lühiülevaade &rocs;i tähtsaimatest elementidest. Me selgitame olulisi andmestruktuuri, andmestruktuuri taustaprogrammi ja elemenditüübi mõisteid. Nende teadmine aitab mõista, kuidas käib &rocs;is andmestruktuuride loomine ja muutmine. </para>
<para
>Üldiselt töötab &rocs; projektidega: &rocs;i avamisel luuakse tühi projekt, mida sa võid asendada, kui laadid või impordid mõne muu projekti. Projekt ise aga koosneb <emphasis
>graafidokumentidest</emphasis
> ja <emphasis
>skriptidest</emphasis
>. </para>

<sect2>
<title
>Graafidokumendid ja andmestruktuuri taustaprogrammid</title>
<para
>Graafidokument tähendab visuaalse graafiredaktori lõuendi sisu. Graafidokument võib sisaldada korraga mitut andmestruktuuri, aga ainult üht andmestruktuuri taustaprogrammi. Andmestruktuuri taustaprogramme on mitmele graafitüübile (üldised graafid, lingitud loendid, juurega puu) ja need pakuvad konkreetsele graafitüübile lisavõimalusi. Selleks võivad olla elementide automaatne paigutamine, spetsiaalsed ikoonikogumid või ka algoritmides kasutavate skriptifunktsioonide täiendamine (üksikasju vaata käsiraamatu vastavatest osadest). Võimalik on muuta graafidokumendi andmestruktuuri taustaprogrammi, kuigi sellega võib kaasneda teabekadu (näiteks ei saa üldise graafi ringi seoseid lisada puule, kui lülitud juurega puu taustaprogrammile). </para>
<para
>Graafidokumendid on ühtlasi aluseks viida- ja andmetüüpide defineerimisel. </para>
</sect2>

<sect2>
<title
>Andmestruktuurid</title>
<para
>Andmestruktuurid on kogu &rocs;i töö alus. Neid võib lisada ühele graafidokumendile ka mitu, samuti saab lisada neile andmeelemente (sõlmed, andmed) ja viitu ning muuta neid skriptidega. Selleks on igal andmestruktuuril unikaalne nimi, mille järgi saab seda kasutada skriptis. Sõltuvalt parajasti valitud andmestruktuuri taustaprogrammist võib juhtuda, et andmestruktuure ei saa päris igatmoodi muuta (näiteks ei saa puu kunagi sisaldada tsüklit). Andmestruktuuri taustaprogrammi määrab kindlaks selle seos andmestruktuuri sisaldava graafidokumendiga. </para>
</sect2>

<sect2>
<title
>Viidatüübid</title>
<para
>Viidatüüpidega saab kindlaks määrata erinevad andmestruktuurides kasutatavad viidad. Viidatüüp võib näiteks saada konkreetse paigutuse (sisuliselt värvi) ja sellele on lihtne skriptis ligi pääseda ainult konkreetset tüüpi viita määrates. Viitade tüüpiline kasutamine on andmestruktuuride metaseoste teostamine, mis visualiseerivad andmeelementide seoseid (nt. visualiseerivad kommunikeerimishuve). Ka siis, kui sinu skript peab tuvastama konkreetset laadi sesoseid (nt. puu ja risti seoseid sügavutiotsingu algoritmi korral), on viidatüübid elegantne viis seda teostada. </para>
</sect2>

<sect2>
<title
>Andmetüübid</title>
<para
>Mitmegi andmestruktuuri probleemi korral tuleks andmeelementide kogum jagada eri tüüpi rühmadeks (näiteks klastri- või katvusprobleemide korral). Samuti võib olla tulus algoritmi täitmiseks kindlaks määrata, et andmeelemendi tüüp väljendab konkreetset tüüpi (nt. laiutiotsingu korral). Sellisel juhul on mõttekas defineerida andmetüübid. Igal andmetüübil on oma ikoon ja teatavaid andmetüüpe on hõlpus kasutada skriptides. </para>
</sect2>

<sect2>
<title
>Dünaamilised omadused</title>
<para
>Kõigil andmeelementidel ja viitadel võib olla hulk omadusi. Mõned neist on vaikeväärtused andmestruktuuri taustaprogrammist. Sellest kõneleb lähemalt andmestruktuuride taustaprogrammide dokumentatsioon. Täiendavate omaduste lisamiseks andmeelementidele ja viitadele võib neile lisada <emphasis
>dünaamilisi omadusi</emphasis
>. Iga dünaamilist omadust tuvastab selle nimi ning sellega võib olla seotud mis tahes väärtus. Nimi peab algama tähega ning võib sisaldada ainult tähti, numbreid ja märki '_'. Eesti täpitähti kasutada ei tohi. Kui üritad omaduse nimes kasutada mõnda keelatud märki, omadust ei muudeta. </para>
<para
>Dünaamilise omaduse lisamiseks kasuta vastavate elementide kontekstimenüüst avatavaid dialooge <guilabel
>Andmeelemendi omadused</guilabel
> ja <guilabel
>Viida omadused</guilabel
> või skripti funktsioone, nagu selgitab <xref linkend="scripting-data-structure"/>. </para>
<para
>Samuti võib kasutada skripte. Selles peab olema lihtsalt <literal
>add_property</literal
> koos omaduse nime ja väärtusega. Selle järel võib väärtuste määramiseks või hankimiseks kasutada node/pointer.propertyName. </para>
<para
>Siin on näide, kuidas kasutada dünaamilisi omadusi andmestruktuuri taustaprogrammis "Graaf". <programlisting
>nodes = myGraph.list_nodes()
for (var i = 0; i &lt; nodes.length; ++i ){
    nodes[i].add_property("MinuOmadus", 0)
}
nodes[0].MinuOmadus = 2
nodes[1].MinuOmadus = nodes[0].MinuOmadus + 2
    </programlisting>
</para>
</sect2>
</sect1>

<sect1 id="introduction-tutorial">
<title
>Õppematerjal</title>
<para
>Selles osas loome näidisprojekti, et uurida mõningaid &rocs;i tähtsamaid võimalusi. Eesmärk on luua graaf ja skript, mis näitlikustaksid <emphasis
>minimaalse tipukatte</emphasis
> probleemi lahendamiseks loodud lihtsat teist järku aproksimeerimise algoritmi. Minimaalse tipukatte probleemi korral püütakse leida minimaalse suurusega graafisõlmede alamhulka C, mille puhul iga graafi seos oleks ühendatud vähemalt ühe C tipuga. See probleem on NP-keerukusega ja me tahame siin näidata, kuidas leida teise järgu lähendust, leides sobivuse antud graafis (edaspidi kasutame graafialgoritmide puhul levinud mõisteid: graaf on andmestruktuur, tipud andmeelemendid, seosed viidad) </para>
<para
>Meie eesmärk on visualiseerida sobiva ja minimaalse tipukatte vastavust. Selleks tuleb kindlaks määrata kaks viidatüüpi: üks kujutab sobivaid ja teine tavalisi seoseid, samuti kaks andmetüüpi, mida me kasutame esitamaks C-s sisalduvaid ja selles mittesisalduvaid tippe. </para>

<sect2>
<title
>Graafi genereerimine</title>
<para
>Andmestruktuuri taustaprogrammi <quote
>Graaf</quote
> puhul pakub &rocs; tööriista, mis võib graafe genereerida. Valime menüükäsu <menuchoice
><guimenu
>Graafidokument</guimenu
> <guisubmenu
>Tööriistad</guisubmenu
> <guimenuitem
>Graafi genereerimine</guimenuitem
></menuchoice
>. Nüüd genereerime <guilabel
>juhusliku graafi</guilabel
> 30 tipu, 90 seose ja 1 seemnega (seeme on juhusliku graafi genereerija algseeme, sama seemne mitmekordsel kasutamisel saadakse samasugused, korratavad graafid). Lõpuks muudame andmestruktuuri paneelil graafi nime ja anname sellele nimeks <literal
>testgraph</literal
>. </para>
</sect2>

<sect2>
<title
>Tüüpide loomine</title>
<para
>Avame dokumendivalija riba nupuga <guibutton
>Omadused</guibutton
> aktiivse graafidokumendi andme- ja viidatüüpide omaduste dialoogi. Andmetüüpide juures lisame uue tüübi "C", mis saab automaatselt ID <literal
>1</literal
>. Valime sellele tüübile ikooniks serveripildi. Nüüd lülitume viidatüübi leheküljele ja lisame uue viidatüübi "matching". See saab automaatselt ID <literal
>1</literal
> ja me anname talle sinise värvi. </para>
</sect2>

<sect2>
<title
>Algoritm</title>
<para
>Lõpuks tuleb teostada lähenduse algoritm. Selleks kasutame järgmist teostust: </para>
<programlisting
>var E = testgraph.list_edges(); // set of unprocessed edges
var C = new Array();            // matching edges
while (E.length 
> 0) {
    var e = E[0];        // we take first edge e={u,v}
    var u = e.start();
    var v = e.end();
    e.set_type(1);        // set edge to be a matching edge
    E.shift();            // remove e (i.e., E[0]) from edge list
    C.push(u);            // add u to C
    C.push(v);            // add v to C

    // mark u,v as nodes in C
    u.set_type(1);
    v.set_type(1);

    // remove from E all edges incident to u or v
    var adjacent = u.adj_edges();
    for (var i=0; i &lt; adjacent.length; i++) {
        var index = E.indexOf(adjacent[i]); // find the index
        if (index!=-1) {
            E.splice(index, 1); // remove it if really found
        }
    }
    var adjacent = v.adj_edges();
    for (var i=0; i &lt; adjacent.length; i++) {
        var index = E.indexOf(adjacent[i]); // find the index
        if (index!=-1) {
            E.splice(index, 1); // remove it if really found
        }
    }
}
Console.log("Tipukate sisaldab " + C.length + " tippu.");
</programlisting>
</sect2>

<sect2>
<title
>Algoritmi täitmine</title>
<para
>Lõpuks tuleb algoritm ka täita. Selleks käivitame selle skripti juhtimise paneelil klõpsuga nupule <guibutton
>Käivita</guibutton
>. </para>
</sect2>
</sect1>
</chapter>

<chapter id="user-interface">
<title
>&rocs;i kasutajaliides</title>

<sect1 id="user-interface-all">
<title
>Kasutajaliidese põhielemendid</title>
<para
>Kasutajaliides jaguneb mitmeks loogiliseks osaks, nagu on näha ka juuresoleval pildil. </para>
<screenshot>
    <screeninfo
>&rocs;i liidese graafilised elemendid.</screeninfo>
    <mediaobject>
    <imageobject>
    <imagedata fileref="rocs-interfaces.png" format="PNG"/>
    </imageobject>
    <textobject>
    <phrase
>&rocs;i liidese graafilised elemendid.</phrase>
    </textobject>
    </mediaobject>
</screenshot>
<variablelist>
<varlistentry>
    <term
>Dokumendivalija</term>
    <listitem
><para
>Sellel ülal asuval menüüribal tuleb valida aktiivne dokument ja andmestruktuur. Samuti saab siin luua ja kustutada andmestruktuure ning pääseda ligi andmestruktuuri omadustele. </para
></listitem>
</varlistentry>
<varlistentry>
    <term
>Visuaalne graafiredaktor</term>
    <listitem
><para
>See on lõuend, kus saab luua ja muuta andmestruktuure. Paremklõpsuga lõuendil, andmeelementidel või viitadel saab avada kontekstimenüü. <emphasis
>Visuaalse graafiredaktori tööriistariba</emphasis
> vahenditega saab muuta visuaalse graafiredaktori lõuendi elemente.</para
></listitem>
</varlistentry>
<varlistentry>
    <term
>Visuaalse graafiredaktori riba</term>
    <listitem
><para
>Siin paiknevad kõik visuaalse graafiredaktori tööriistad. Kasutades nuppe <inlinemediaobject
><imageobject
><imagedata fileref="hi22-action-rocsadddata.png" format="PNG"/></imageobject
> </inlinemediaobject
><guibutton
>Lisa element</guibutton
> või <inlinemediaobject
><imageobject
><imagedata fileref="hi22-action-rocsaddedge.png" format="PNG"/></imageobject
></inlinemediaobject
><guibutton
>Lisa ühendus</guibutton
>, saab vastavalt luua uusi elemente või elemente ühendada. Uued andmeelemendid lisatakse andmestruktuuri, mis on parajasti valitud <emphasis
>dokumendivalijas</emphasis
>. Pane tähele, et nii nupul <guibutton
>Lisa element</guibutton
> kui ka nupul <guibutton
>Lisa ühendus</guibutton
> on oma menüü, milles saab valida loodavate elementide tüübi. Täpsemalt kõneleb sellest <xref linkend="user-interface-toolbars"/>. </para
></listitem>
</varlistentry>
<varlistentry>
    <term
>Külgriba</term>
    <listitem
><para
>Paremal näeb külgriba, kus paikneb mitu töövoole tulusat tööriista: <itemizedlist>
        <listitem
><para
>Elemenditüübid: see vidin võimaldab kasutada kõiki saadaolevaid viida- ja andmetüüpe.</para
></listitem>
        <listitem
><para
>Päevik: igal projektil on oma päevik, millesse saab näiteks üles tähendada ülesanded, tulemused või vaatlusandmed.</para
></listitem>
        <listitem
><para
>Käsiraamat: selle vidina abil saab otse kasutada käsiraamatut ning selle vahendusel ka skripti dokumentatsiooni.</para
></listitem>
        <listitem
><para
>Skriptimise API: selle vidina abil saab otse kasutada skripti dokumentatsiooni.</para
></listitem>
        </itemizedlist>
    </para
></listitem>
</varlistentry>
<varlistentry>
    <term
>Skriptiredaktor</term>
    <listitem
><para
>Selles tekstiredaktoris saab kirjutada algoritme, nagu selgitab täpsemalt <xref linkend="scripting"/>. Korraga võib tegutseda ka mitme algoritmi kallal, kasutades selleks eri kaarte. Kui skripti tehtud muudatused on salvestamata, näeb kaardi sakil väikest ketast. </para
></listitem>
</varlistentry>
<varlistentry>
    <term
>Skripti väljund</term>
    <listitem
><para
>Selles tekstialas näeb kas sinu algoritmi silumisteavet või skripti väljundit sõltuvalt vidina ülaosas langetatud valikust. Kui skript tekitab vigu, valitakse automaatselt silumisväljund. </para
></listitem>
</varlistentry>
<varlistentry>
    <term
>Juhtelemendid</term>
    <listitem
><para
>Siin tegeldakse skriptide töölepanekuga. Parajasti avatud skripti saab täitma asuda, kui klõpsata nupule <guiicon
>Käivita</guiicon
>. Skripti käivitamise järel saab selle täitmist ka peatada, kui klõpsata nupule <guiicon
>Peata</guiicon
>. Pane tähele, et täitmisviisi <guibutton
>Üks samm</guibutton
> kasutamisel peatub täitmine ainukt konkreetsete võtmesõnade juures (vt. <xref linkend="scripting"/>). </para
></listitem>
</varlistentry>
</variablelist>
</sect1>

<sect1 id="user-interface-toolbars">
<title
>Tööriistaribad</title>
<para
>Siin on mitmesugused visuaalse graafiredaktori tööriistaribad, mis võimaldavad vajalikke võimalusi kasutada üheainsa klõpsuga. Vaikimisi näeb järgmisi tööriistaribasid:</para>
<itemizedlist>
    <listitem
><para
>Peamine tööriistariba</para
></listitem>
    <listitem
><para
>Joondusriba</para
></listitem>
</itemizedlist>
<!--  -->
<sect2 id="user-interface-toolbars-main">
<title
>Peamine tööriistariba</title>
<para
><emphasis
>Peamine tööriistariba</emphasis
> koosneb järgmistest toimingutest. Toimingule klõpsamine tähendab seda, et saad hiirega rakendada antud toimingu visuaalse graafiredaktori lõuendis:</para>
<itemizedlist>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsselectmove.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Liiguta</guilabel
>: elementide valimiseks klõpsa lõuendi tühjal alal, hoia hiirenupp all ja joonista ristkülik, mis sisaldab mõningaid andmeelemente ja/või viitu, mis sel juhul valitakse, või klõpsa vahetult valimata elemendi peal selle valimiseks. Kui klõpsad valitud elemendil või elementidel, saab hiirenuppu all hoides ja hiirt liigutades elemente liigutada. Valitud elemente saab liigutada ka nooleklahvidega.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsadddata.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Lisa element</guilabel
>: klõpsa visuaalse graafiredaktori lõuendil vajalikus kohas ja loo uus andmeelement, mis kuulub parajasti valitud  andmestruktuurile. Hiirekursorit nupul all hoides ilmub menüü, mille abil saab valida loodavate andmeelementide andmetüübi (muidugi kui eri andmetüüpe saab ikka kasutada).</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsaddedge.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Lisa ühendus</guilabel
>: klõpsa mõnel andmeelemendil, hoia hiir all ja tõmba joon teise andmeelemendini, milleni viit/seos peab ulatuma. Seda toimingut saadab edu ainult siis, kui aktiivne graaf võimaldab sellist seost lisada (nt. orienteerimata graafil ei ole lubatud lisada kahe andmeelemendi vahele mitut seost). Hiirekursorit nupul all hoides ilmub menüü, mille abil saab valida loodavate viitade viidatüübi (muidugi kui eri viidatüüpe saab ikka kasutada).</para
></listitem>
<!--FIXME no different pointer names here -->
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsdeletedata.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Kustuta</guilabel
>: klõpsa elemendil selle kustutamiseks. Kui kustutad tipu, kustutatakse ka kõik sellega seotud seosed.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocszoom.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Suurendus</guilabel
>: klõpsa lõuendil, hoia &HVN; all ja joonista sellega ristkülik. Lõuendit suurendatakse, nii et näed ainult valitud osa. Samuti võib suurendada või vähendada hiirerattaga. Topeltklõps &HVNga; taastab esialgse suurenduse.</para
></listitem>
</itemizedlist>
</sect2>

<sect2 id="user-interface-toolbars-alignment">
<title
>Joondusriba</title>
<para
>Lisada võib ka <emphasis
>joondusriba</emphasis
>. Mõnele selle riba toimingule klõpsates saab vahetult mõjutada parajasti valitud tippe:</para>
<itemizedlist>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsaligntop.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Üles</guilabel
>: andmeelemendid joondatakse kõige ülemise andmeelemendi vertikaalse positsiooni järgi. See puudutab ainult vertikaalset positsiooni.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsalignvmiddle.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Keskele</guilabel
>: andmeelementide joondamine kõigi valitud admeelementide vertikaalsete positsioonide keskme järgi. See puudutab ainult vertikaalset positsiooni.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsalignbottom.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Alla</guilabel
>: andmeelemendid joondatakse kõige alumise andmeelemendi vertikaalse positsiooni järgi. See puudutab ainult vertikaalset positsiooni.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsalignleft.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Vasakule</guilabel
>: andmeelemendid joondatakse kõige vasakpoolsema andmeelemendi horisontaalse positsiooni järgi. See puudutab ainult horisontaalset positsiooni.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsalignhmiddle.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Keskele</guilabel
>: andmeelemendid joondatakse kõige ülemise andmeelemendi horisontaalse positsiooni järgi. See puudutab ainult horisontaalset positsiooni.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsalignright.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Paremale</guilabel
>: andmeelemendid joondatakse kõige parempoolsema andmeelemendi horisontaalse positsiooni järgi. See puudutab ainult horisontaalset positsiooni.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsaligncircle.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Ring</guilabel
>: andmeelemendid joondatakse ringi, mille diameeter võrdub andmeelementide maksimaalse vahemaaga. Andmeelemendid paigutatakse samas järjekorras nagu vaates alates andmeelementide raskuskeskmest.</para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsaligntree.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Kattuvate seoste minimeerimine</guilabel
>: valitud andmeelemendid korraldatakse ümber kattuvate seoste arvu minimeerikiseks (rakendatakse Fruchterman-Reingoldi algoritmi).</para
></listitem>
</itemizedlist>
</sect2>
</sect1>

<sect1 id="user-interface-documents">
<title
>Graafidokumentide töövoog</title>
<para
>&rocs;i projekt koosneb vähemalt ühest graafidokumendist, mida saab muuta visuaalses graafiredaktoris. Lisaks võib iga dokument sisaldada suvalise arvu andmestruktuure. Dokumendi andmestruktuurid kasutavad kõik üht ja sama andmestruktuuri taustaprogrammi. Allpool selgitatakse, kuidas liikuda dokumentide vahel ja kuidas luua uusi. </para>

<sect2 id="user-interface-documents-selector">
<title
>Dokumendivalija riba</title>
<para
>Dokumendivalija ribal saab valida aktiivse graafidokumendi ja ka aktiivse andmestruktuuri. Kui luua visuaalse graafiredaktori tööriistadega andmestruktuuride elemente, lisatakse need automaatselt aktiivsesse andmestruktuuri. Samuti saab selle riba abil aktiivses dokumendis kustutada olemasolevaid või luua uusi andmestruktuure. </para>

<itemizedlist>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsnew.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Uus</guilabel
>: selle abil saab luua uue andmestruktuuri, mille puhul kasutatakse parajasti kasutusel oleva andmestruktuuri taustaprogrammi automaatset nimemustrit. Loodud andmestruktuur lisatakse aktiivsesse graafidokumenti. </para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsdelete.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Kustuta</guilabel
>: selle abil saab kustutada andmestruktuuri, mis on parajasti valitud aktiivse dokumendi andmestruktuuri valijas. </para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsproperties.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Graafidokumendi</guilabel
> <guilabel
>omadused</guilabel
>: selle abil saab avada dialoogi, kus näeb ja saab muuta nii dokumendi omadusi kui ka dokumendi andme- ja viidatüüpe. </para
></listitem>
<listitem
><para>
<inlinemediaobject
><imageobject>
<imagedata fileref="hi22-action-rocsproperties.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Andmestruktuuri</guilabel
> <guilabel
>omadused</guilabel
>: sellega saab avada dialoogi, kus näeb ja saab muuta andmestruktuuri omadusi. </para
></listitem>
  </itemizedlist>

<screenshot>
<screeninfo
>Peamine tööriistariba.</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="document-selector.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Dokumendivalija riba.</phrase>
</textobject>
</mediaobject>
</screenshot>
</sect2>

<sect2 id="user-interface-documents-menu">
<title
>Graafidokumentide loomine ja import</title>
<para
>Uue graafidokumendi loomiseks või olemasoleva lisamiseks projekti kasuta menüükäsku <menuchoice
><guimenu
>Fail</guimenu
> <guimenuitem
>Uus graafidokument</guimenuitem
></menuchoice
> või <menuchoice
><guimenu
>Graafidokument</guimenu
> <guimenuitem
>Impordi graaf</guimenuitem
></menuchoice
>. Samuti võib importida mõne muu rakenduse graafidokumendi (täpsemalt kõneleb sellest <xref linkend="import-export"/>). </para>
</sect2>

</sect1>
</chapter>


<chapter id="scripting">
<title
>Algoritmide kirjutamine ja täitmine &rocs;is</title>

<para
>&rocs; kasutab seesmiselt QtScripti skriptimootorit, mis on otseselt JavaScripti mootor. See tähendab, et kõik teostatud algoritmid peavad kasutama JavaScripti. Kuidas JavaScript toimib ja kuidas JavaScripti koodi kirjutada, väljub käsiraamatu piiridest, ehkki me selgitame siin, kuidas pääseda skriptimootoriga ligi andmestruktuuridele, andmeelementidele ja viitadele. Et tegelikult ei kasutata kunagi vahetut andmestruktuuri objekti, vaid seda, mida pakub parajasti kasutusele andmestruktuuri taustaprogramm, laiendab vastav taustaprogramm andmestruktuuri ja sestap tuleb kasutada just seda spetsiaalset funktsionaalsust. Eriti tasub tähele panna, et andmestruktuuri taustaprogrammid kasutavad oma eripärast terminoloogiat (tipud ja seosed graafides, lehed ja juured puudes jne.). </para>
<para
>Oluline on tähele panna, et skriptimootori tehtud muudatused kajastuvad otseselt omadustes visuaalse graafiredaktori lõuendil. Niisiis muudavad skriptid ka tegelikult andmestruktuure. </para>


<sect1 id="scripting-controls">
<title
>Skripti täitmise juhtimine</title>
 

<sect2>
<title
>Päisefailid</title>
<para
>Skriptidokument võib kaasata ka teisi skripte. See võib olla abiks skriptidokumendi mahu vähendamisel ja loetavuse parandamisel. Menüükäsuga <menuchoice
><guimenu
>Skriptidokument</guimenu
> <guimenuitem
>Võimalikud päised</guimenuitem
></menuchoice
> saab teada skriptifailide nimekirja, mis on &rocs;iga juba kaasas ja mida on võimalik sel moel kaasta. Skriptifaili saab kaasata järgmise käsuga: </para>
<programlisting
>include_script(string path);            // skriptifaili suhteline või absoluutne asukoht
</programlisting>
</sect2>

<sect2 id="scripting-output">
<title
>Skripti väljund</title>
<para
>Algoritmi täitmise ajal näeb programmi- ja silumisväljundit alas <emphasis
>Silumis- ja skriptiväljund</emphasis
>. Kui skriptimootor tuvastab skriptis süntaksivigu, näeb seda ka silumisteatena. Pane tähele, et silumisväljundis näeb ka kõiki programmi sõnumeid (neid näidatakse rasvases kirjas). </para>
<para
>Teksti, mida näidatakse skriptiväljundis, saab juhtida järgmiste funktsioonidega: </para>
<programlisting
>Console.log(string message);            // sõnumi näitamine skriptiväljundina
    Console.debug(string message);          // sõnumi näitamine silumisväljundina
</programlisting>
</sect2>

<sect2 id="scripting-controlling">
<title
>Skripti täitmise juhtimine</title>
<para
>Skripte saab täita eri moel. </para>
<para
>Teksti, mida näidatakse skriptiväljundis, saab juhtida järgmiste funktsioonidega: </para>
<itemizedlist>
    <listitem
><para>
        <inlinemediaobject
><imageobject>
        <imagedata fileref="rocs-control-engine-run.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Käivita</guilabel
>: skripti täitmine algusest lõpuni.</para
></listitem>
    <listitem
><para>
        <inlinemediaobject
><imageobject>
        <imagedata fileref="rocs-control-engine-step.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Üks samm</guilabel
>: skripti täitmine kuni ühe sammu lõpuni. Samm lõpeb, kui skript kutsub välja funktsiooni <literal
>interrupt()</literal
>:</para>
    <programlisting
>interrupt();    // sammu lõpetamine
    </programlisting>
    </listitem>
    <listitem
><para>
        <inlinemediaobject
><imageobject>
        <imagedata fileref="rocs-control-engine-debug.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Silu</guilabel
>: skripti täitmine silumisrežiimis. See avab QtScripti silumisdialoogi.</para
></listitem>
    <listitem
><para>
        <inlinemediaobject
><imageobject>
        <imagedata fileref="rocs-control-engine-stop.png" format="PNG"/></imageobject>
</inlinemediaobject
> <guilabel
>Peata</guilabel
>: skripti täitmise peatamine (saab kasutada ainult siis, kui skripti täidetakse).</para
></listitem>
</itemizedlist>
</sect2>
</sect1>
</chapter>


<chapter id="scripting-API">
<title
>Skriptimootori API</title>
<para
>Iga taustaprogramm pakub konkreetse valiku funktsioone ja omadusi enda andmestruktuuridele ja nende elementidele. Kuid samamoodi pakub iga taustaprogramm omadusi ja funktsioone, mis kehtivad baasandmestruktuurile. </para>
&apiDatastructure; &apiGraphstructure; &apiLinkedListstructure; &apiRootedTreestructure; &apiConsole; </chapter>


&chapterImportExport;


<chapter id="credits">
<title
>Autorid ja litsents</title>

<para
>&rocs; </para>
<para
>Rakenduse autoriõigus:</para>
<itemizedlist>
	<listitem
><para
>Autoriõigus 2008: Ugo Sangiori (ugorox AT gmail.com)</para
></listitem>
	<listitem
><para
>Autoriõigus 2008-2012: Tomaz Canabrava (tcanabrava AT kde.org)</para
></listitem>
	<listitem
><para
>Autoriõigus 2008-2012: Wagner Reck (wagner.reck AT gmail.com)</para
></listitem>
	<listitem
><para
>Autoriõigus 2011-2013: Andreas Cord-Landwehr (cordlandwehr AT kde.org)</para
></listitem>
</itemizedlist>

<para
>Dokumentatsiooni autoriõigus:</para>
<itemizedlist>
	<listitem
><para
>Dokumentatsiooni autoriõigus 2009: &Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;</para
></listitem>
	<listitem
><para
>Dokumentatsiooni autoriõigus 2009: Tomaz Canabrava (tcanabrava AT kde.org)</para
></listitem>
	<listitem
><para
>Dokumentatsiooni autoriõigus 2011-2013: Andreas Cord-Landwehr (cordlandwehr AT kde.org)</para
></listitem>
</itemizedlist>

<para
>Tõlge eesti keelde: Marek Laane <email
>bald@smail.ee</email
></para
> 
&underFDL; &underGPL; </chapter>

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

<sect1 id="getting-rocs">
<title
>&rocs;i hankimine</title>
&install.intro.documentation; </sect1>

<sect1 id="compilation">
<title
>Kompileerimine ja paigaldamine</title>
&install.compile.documentation; </sect1>
</appendix>

&documentation.index;
</book>
<!--
Local Variables:
mode: sgml
sgml-minimize-attributes: nil
sgml-general-insert-case: lower
sgml-indent-step:0
sgml-indent-data:nil
End:
-->
