<appendix id="plugin-tools">
<title>Pluginatööriistad</title>

<indexterm zone="plugin-tools">
  <primary>pluginad</primary></indexterm>

<para>&tdevelop; sisaldab terve rea väikseid tööriistu, mis aitavad sooritada teatud kindlaid ülesandeid. Enamik neist on loodud pluginatena. See tähendab, et kui sa mingit pluginat ei vaja, võid selle välja lülitada.</para>
<para>See tähendab ka seda, et kui otsid võimalust teha midagi, mida peaks saama teha, aga hetkel ei saa, siis võib asi olla selles, et seda ülesannet võimaldab teha plugin, mis on parajasti välja lülitatud. Näiteks on failimenüüs kiire avamise käsk ainult siis, kui see on sisse lülitatud dialoogis Projekt->Projekti seadistused. </para>
 
<para>Tehniliselt on pluginate aluseks klass KDevPlugin, mille defineerib lib/interfaces/kdevplugin.h. Järgnev tekst ongi sealt pärit.</para>

<para>KDevPlugin on baasklass kõigile KDevelopi pluginatele. Plugin on komponent, mis laaditakse KDevelopi shelli käivitumisel või nõudmisel. Pluginal on oma skoop ehk toimeala, mis võib olla: <itemizedlist>
<listitem><simpara>Tuum</simpara></listitem>
<listitem><simpara>Globaalne</simpara></listitem>
<listitem><simpara>Projekt</simpara></listitem>
</itemizedlist>
</para>

<para>Tuumpluginad on globaalsed pluginad, mis pakuvad teatud olulisi "tuumfunktsioone", mistõttu kasutaja ei saa neid pluginate seadistustes ise sisse ega välja lülitada.</para>

<para>Globaalsed pluginad on pluginad, mis vajavad ainult shelli laadimist ega tegutse KDevProjecti liideses ega/või kasuta projekti infot. Näiteks kasutajaliidese plugin võimaldab arendajal valida, millist kasutajaliidest tarvitada. </para>

<para>Projektipluginad eeldavad projekti laadimist ja tavaliselt laaditakse nad koos projekt ning koos projektiga ka suletakse. Kui plugin tegutseb projekti info alusel, on tegemist projektipluginaga. Automake'i haldur ei pruugi näiteks olla aktiivne muul ajal, kui ainult Automake'i projekti laadimisel. </para>

<para>Nagu märgitud, ei saa tuumpluginaid välja lülitada. Globaalseid pluginaid saab sisse ja välja lülitada dialoogi <menuchoice><guimenu>Seadistused</guimenu> <guimenuitem>KDevelopi seadistamine...</guimenuitem></menuchoice> kaardil <guibutton>Pluginad</guibutton>. Projektipluginaid saab sisse ja välja lülitada dialoogi <menuchoice><guimenu>Projekt</guimenu> <guimenuitem>Projekti seadistused...</guimenuitem></menuchoice> kaardil <guibutton>Pluginad</guibutton>. Aktiivsetel pluginatel võib olla KDevelopis mitmesugune toime. Sõltuvalt funktsioonist võivad nad lisada menüüsid, menüükirjeid, tööriistaribade nuppe jne. </para>

<para>Väljalülitatud pluginad ei lisa midagi menüüsse ja neid ei laadita mällu. </para>


<para>Järgnev pluginate nimekiri on loodud väikse skriptiga (listplugins.sh), mille autor on Volker Paul. Kõigil pluginatel on .desktop-fail, kus on kirjas teatud info, näiteks nimi ja kommentaar. Kui järgneva nimekirja kommentaarid pole alati kõige inforikkamad, siis on põhjuseks see, et plugina autor ei ole rohkem infot andnud.</para>
<para>Pluginad on rühmitatud skoobi alusel (tuum, globaalne, projekt).</para>

<para>Skoop: tuum</para>
<itemizedlist>
<listitem><formalpara id="KDevAppWizard">
<title>Rakenduse nõustaja</title>
<para>Rakenduse nõustaja</para></formalpara></listitem>
<listitem><formalpara id="KDevDiff">
<title>Erinevuste näitaja</title>
<para>Erinevuste näitaja</para></formalpara></listitem>
<listitem><formalpara id="KDevFileCreate">
<title>FileCreate</title>
<para>FileCreate</para></formalpara></listitem>
<listitem><formalpara id="KDevFullScreen">
<title>Täisekraan</title>
<para>Täisekraan</para></formalpara></listitem>
<listitem><formalpara id="KDevTipOfDay">
<title>Päeva nõuanne</title>
<para>Päeva nõuanne</para></formalpara></listitem>
<listitem><formalpara id="KDevUIChooser">
<title>Kasutajaliidese valik</title>
<para>Tagab dialoogi kasutajaliidese režiimi valimiseks.</para></formalpara></listitem>
<listitem><formalpara id="KDevVCSManager">
<title>VCSManager</title>
<para>Versioonikontrollisüsteemi haldur </para></formalpara></listitem>
</itemizedlist>

<para>Skoop: globaalne</para>
<itemizedlist>
<listitem><formalpara id="KDevAbbrev">
<title>Lühendite laienemine</title>
<para>Tagab kohandatud lühendite toetuse - need on lühikesed sõnad, mis laiendatakse levinumateks koodistruktuurideks.</para></formalpara></listitem>
<listitem><formalpara id="KDevDocumentation">
<title>Dokumentatsioon</title>
<para>Dokumentatsiooniplugin võimaldab lehitseda ja otsida nii kohalikus kui võrgudokumentatsioonis paljusid dokumentatsioonisüsteeme kasutades.</para></formalpara></listitem>
<listitem><formalpara id="KDevfilelist">
<title>FileList</title>
<para>Näitab kõiki parajasti avatud faile (mugav, kui kaardiriba ei ole piisavalt lai).</para></formalpara></listitem>
<listitem><formalpara id="KDevFileSelector">
<title>Failivalija</title>
<para>Võimas failide lehitsemise rakendus.</para></formalpara></listitem>
<listitem><formalpara>
<title>Shellifiltrid ja lisamine</title>
<para>Võimaldab käsureavahendite abil käsitleda redaktoris olevat teksti. Kättesaadav tööriistade menüüst.</para></formalpara></listitem>
<listitem><formalpara id="KDevGrepView">
<title>Programmi grep kasutajaliides</title>
<para>Integreerib KDevelopi programmi "Find|grep", mis lubab mustreid või regulaaravaldisi kasutades kiiresti paljudes failides teksti otsida.</para></formalpara></listitem>
<listitem><formalpara id="KDevKonsoleView">
<title>Põimitud Konsool</title>
<para>See plugin lisab KDevelopile võimaluse põimitult kasutada konsooli käsurea võimaluste kiireks ja hõlpsaks pruukimiseks.</para></formalpara></listitem>
<listitem><formalpara id="KDevOpenWith">
<title>Menüü "Ava kasutades" lisamine</title>
<para>See plugin lisab KDevelopi erinevatele kontekstimenüüdele täiendavaid faili avamise võimalusi.</para></formalpara></listitem>
<listitem><formalpara id="KDevPartExplorer">
<title>Komponentide näitaja</title>
<para>Graafiline vahend TDETraderi-laadsete päringute sooritamiseks registreeritud teenuste kohta</para></formalpara></listitem>
<listitem><formalpara id="KDevRegexpTest">
<title>Regulaaravaldiste testija</title>
<para>Vahend regulaaravaldiste loomiseks ja korrektsuse testimiseks.</para></formalpara></listitem>
<listitem><formalpara id="KDevReplace">
<title>Asendamise komponent</title>
<para>See plugin on kogu projekti hõlmav interaktiivne "otsi ja asenda" vahend. Otsida saab stringe või regulaaravaldiste sobivusi, asendusi saab valida eelvaatluse abil, enne kui need päriselt teoks teha. Kasutamisel kättesaadav redigeerimismenüüst.</para></formalpara></listitem>
<listitem><formalpara id="KDevscripting">
<title>Skriptikeele plugin</title>
<para>Skriptikeele plugin võimaldab KDevelopis kasutada skriptikeelt KScripti alusel</para></formalpara></listitem>
<listitem><formalpara id="Code_Snippets">
<title>Koodijupid</title>
<para>pSee plugin võimaldab salvestada koodijuppe ja neid koodi lisada</para></formalpara></listitem>
<listitem><formalpara id="KDevTextTools">
<title>Tekstistruktuur</title>
<para>Näitab HTML- ja TEX-failide struktuuri ning võimaldab neis liikuda</para></formalpara></listitem>
<listitem><formalpara id="KDevTools">
<title>Tööriistade menüü lisamine</title>
<para>See plugin võimaldab hõlpsasti lisada väliseid rakendusi tööriistade menüüsse ja tööriistaribale.</para></formalpara></listitem>
<listitem><formalpara id="KDevvalgrind">
<title>Valgrindi kasutajaliides</title>
<para>Valgrind aitab leida programmides mälulekkeid ja muid mäluga seotud asju. http://developer.kde.org/~sewardj/</para></formalpara></listitem>
</itemizedlist>

<para>Skoop: projekt</para>
<itemizedlist>
<listitem><formalpara id="KDevannotation">
<title>Annotatsiooniplugin</title>
<para>Annotatsiooni kirjeldus</para></formalpara></listitem>
<listitem><formalpara id="KDevAStyle">
<title>Lähtekoodi vormindaja</title>
<para>Plugin lähtekoodi vormindamiseks vastavalt konkreetsetele reeglitele. Kasutamisel leiab selle tööriistade menüüst.</para></formalpara></listitem>
<listitem><formalpara id="KDevBookmarks">
<title>Järjehoidjad</title>
<para>Plugin, mis võimaldab näha ja liikuda aktiivse koodi järjehoidjate vahel ning peab need seansside vahel meeles.</para></formalpara></listitem>
<listitem><formalpara id="KDevClassView">
<title>Klassivaade</title>
<para>See plugin näitab graafiliselt kõiki projekti klasse koos meetodite ja atribuutidega ning võimaldab nende vahel kiiresti liikuda.</para></formalpara></listitem>
<listitem><formalpara id="KDevcopyto">
<title>Kopeeri</title>
<para>Lihtne failide üleslaadimise plugin. See kopeerib faili mis tahes TDEIO toetusega protokolli tarvitades.</para></formalpara></listitem>
<listitem><formalpara id="KDevCTags2">
<title>CTagsi kasutajaliides</title>
<para>CTags on liikumisvahend paljude keelte toega. Laadimisel pakub see kontekstimenüüd deklaratsioonide/definitsioonide tüübi leidmiseks, samuti päringudialoogi tööriistade menüü vahendusel. Vaata internetis http://ctags.sourceforge.net/</para></formalpara></listitem>
<listitem><formalpara id="KDevdistpart">
<title>Lõpp-pakendamise toetus</title>
<para>Abi valmisprojekti ehitamisel ja avaldamisel. Hetkel on toetatud ainult RPM-pakettide vorming.</para></formalpara></listitem>
<listitem><formalpara id="KDevDoxygen">
<title>Doxygeni toetus</title>
<para>Doxygeni plugin võimaldab määrata ja kontrollida projekti dokumentatsiooni loomist vastavalt lähtekoodi sisule. Selleks peab olema paigaldatud ka programm 'doxygen'. Vaata täpsemalt http://www.doxygen.org</para></formalpara></listitem>
<listitem><formalpara id="KDevQuickOpen">
<title>Kiiresti avamine</title>
<para>Võimaldab hõlpsasti leida/avada faile, klasse ja meetodeid suures projektis. Laadimisel kättesaadav faili- ja tööriistade menüüs.</para></formalpara></listitem>
<listitem><formalpara id="KDevSecurity">
<title>Turvalisuse kontroll</title>
<para>Koodi turvalisuse kontroll</para></formalpara></listitem>
</itemizedlist>
<para>Nii palju siis genereeritud pluginate nimekirjast.</para>


<table id="table-project-parts">
<title>Projektihalduse pluginad &tdevelop;is</title>
<tgroup cols="2"><tbody>
<row>
  <entry>antproject</entry>
  <entry>ANT projekti haldur (&Java; rakendused)</entry>
</row>
<row>
  <entry>autoproject</entry>
  <entry>Automake'i projekti haldur</entry>
</row>
<row>
  <entry>customproject</entry>
  <entry>Kohandatud projekti haldur</entry>
</row>
<row>
  <entry>trollproject</entry>
  <entry>QMake'i projekti haldur</entry>
</row>
</tbody></tgroup>
</table>
<para>Mainitud pluginad on praegu (mai 2005) tühjad. Võib-olla tulevikus teostatakse projektihaldus pluginatena.</para>


<table>
<title>Keelte toetuse pluginad &tdevelop;is</title>
<tgroup cols="2">
<tbody>
<row><entry>cppsupport</entry><entry>C/C++ toetus</entry></row>
<row><entry>fortransupport</entry><entry>Fortrani toetus</entry></row>
<row><entry>javasupport</entry><entry>&Java; toetus</entry></row>
<row><entry>perlsupport</entry><entry>Perli toetus</entry></row>
<row><entry>phpsupport</entry><entry>PHP toetus</entry></row>
<row><entry>pythonsupport</entry><entry>Pythoni toetus</entry></row>
</tbody></tgroup>
</table>


<para>Järgnevalt vaatleme mõningaid pluginaid veidi üksikasjalikumalt.</para>

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

<para>See plugin laiendab lühendid levinumateks koodijuppideks. Selle saab aktiveerida klahvikombinatsiooniga <keycombo><keycap>Ctrl</keycap> <keycap>Tühik</keycap></keycombo>. Kui näiteks kirjutad C++ keele korral redaktorisse <literal>"ife"</literal> ja vajutad <keycombo><keycap>Ctrl</keycap><keycap>Tühik</keycap></keycombo>, on tulemuseks koodimall <literal>if-else</literal>, mis säästab sulle mõned klahvivajutused. Toetatud lühendite valik sõltub redigeeritava faili programmeerimiskeelest. Näiteks PHP korral oled ju ilmselt huvitatud teistsugustest koodimallidest kui &Java; puhul. </para>
</formalpara>

<para>Koodimallide valikut saab seadistada. Kui plugin on sisse lülitatud, näeb saadaolevaid malle dialoogi <menuchoice><guimenu>Seadistused</guimenu><guimenuitem>KDevelopi seadistamine...</guimenuitem></menuchoice> kaardil <guibutton>Lühendid</guibutton>. </para>
</listitem>

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

<para>See plugin pakub kaks võimalust. Kui valid menüükäsu <menuchoice><guimenu>Tööriistad</guimenu><guimenuitem>Käivita käsk</guimenuitem></menuchoice>, saad sisestada shellikäsu. Käsu väljund lisatakse redaktori puhvrisse, kui klõpsad nuppu <guibutton>Käivita</guibutton>. </para>
</formalpara>

<para>Sellega on seotud käsk <menuchoice><guimenu>Tööriistad</guimenu><guimenuitem>Filtreeri valik läbi käsu...</guimenuitem></menuchoice>. Selleks tuleb redaktoris valida tekst. Kui sisestad nüüd shelli käsu ja klõpsad nupule <guibutton>Käivita</guibutton>, käivitatakse käsk, mis võtab valitud teksti oma sisendiks. Käsu väljund lisatakse seejärel redaktorisse, asendades nii sinu valitud teksti. </para>

<para>Kui näiteks kirjutad dokumentatsiooni, tuleb sageli viidata menüükäskudele. Et seda korrektselt teha näiteks menüüs Redigeerimine leiduva käsu Kopeeri korral, pead kirjutama: <programlisting>&lt;menuchoice&gt;&lt;guimenu&gt;Redigeerimine&lt;/guimenu&gt;&lt;guimenuitem&gt;Kopeeri&lt;/guimenuitem&gt;&lt;/menuchoice&gt;</programlisting> See on üsna tülikas, nii et mõistlikum on kirjutada lihtsalt "Redigeerimine - Kopeeri" ja lasta sildid panna arvutil endal. See käib järgmiselt. Sul tuleb kirja panna väike shelliskript nimega mef, mille paigutad näiteks oma kodukataloogi bin-kataloogi: <programlisting>sed s/"^\(.*\) - \(.*\)\$"/"&lt;menuchoice&gt;&lt;guimenu&gt;\1&lt;\/guimenu&gt;&lt;guimenuitem&gt;\2&lt;\/guimenuitem&gt;&lt;\/menuchoice&gt;"/</programlisting> Ära unusta sellele käivitamisõigust andmast. Ja ongi kõik. Nüüd võid kirjutada oma dokumentatsiooni .docbook-lähtekoodifailis "Redigeerimine - Kopeeri". Vali see tekst, vali menüükäsk <menuchoice><guimenu>Tööriistad</guimenu><guimenuitem>Filtreeri valik läbi käsu...</guimenuitem></menuchoice> ja kutsu välja käsk ~/bin/mef. Otsekohe asendataksegi "Redigeerimine - Kopeeri" tekstiga <programlisting>&lt;menuchoice&gt;&lt;guimenu&gt;Redigeerimine&lt;/guimenu&gt;&lt;guimenuitem&gt;Kopeeri&lt;/guimenuitem&gt;&lt;/menuchoice&gt;</programlisting>
</para>


</listitem>

<listitem>
<formalpara>
<title>&doxygen;i plugin</title>
<indexterm zone="plugin-tools"><primary>&doxygen;</primary></indexterm>
<indexterm zone="plugin-tools"><primary>dokumentatsioonitööriist</primary></indexterm>
<indexterm zone="plugin-tools"><primary>API documentatsioon</primary></indexterm>

<para>See plugin aitab kasutada &doxygen;i API dokumentatsiooni tööriista (<ulink url="http://www.doxygen.org"></ulink>). Menüükäsuga <menuchoice><guimenu>Projekt</guimenu> <guimenuitem>Käivita Doxygen</guimenuitem></menuchoice> saad luua oma projekti dokumentatsiooni vastavalt konfiguratsioonile, mille määrab sinu projektikataloogis leiduv fail <filename>Doxyfile</filename>. </para>
</formalpara>

<para>Lisaks saab &doxygen;i seadistada dialoogis <menuchoice><guimenu>Projekt</guimenu> <guimenuitem>Projekti seadistused...</guimenuitem></menuchoice>. See dialoog on üsna sarnane &doxywizard;iga. </para>
</listitem>

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

<para>Ehkki klassisirvija näitab juba põhjalikult sinu projekti sümboleid ja klasse, võib abiks olla ka CTagsi tööriist. Eriti tasuks tähele panna, et see toetab enam keeli kui klassisirvija. </para>
</formalpara>

<para>Plugina saab aktiveerida menüükäsuga <menuchoice><guimenu>Tööriistad</guimenu> <guimenuitem>CTags...</guimenuitem></menuchoice> Kui käivitad selle esimest korda, palutakse sul luua kõigepealt otsingu-andmebaas. Kui oled sellega nõus, käivitub &ctags; ja loob sinu projektikataloogi faili <filename>tags</filename>. See on tekstifail, mis sisaldab sinu lähtekoodifailide kõiki sümboleid. </para>

<para>Sümbolite andmebaasis saab otsida kahel moel: kui märkida ära kast <guilabel>Regulaaravaldis</guilabel>, tõlgendatakse sisestatud otsinguteksti regulaaravaldisena (POSIX-i mõttes) ja otsitakse selle sobivust. Näiteks <literal>.*Widget</literal> otsib kõiki sümboleid, mille lõpus seisab <literal>Widget</literal>. Kui kast on märkimata, otsitakse täpselt seda, mida otsida lased. </para>

<para>Otsimisel näidatakse sulle sobivate sümbolite nimekirja, koos reanumbriga, kus nad on defineeritud. Klõpsuga nimekirjas saab kohe vastavasse kohta hüpata. </para>

<para>Mõne keele puhul eristab &ctags; sümboleid. Näiteks Pythonis on klassid ja funktsioonid. Sa võid näiteks otsida ainult klassides, kui märgid ära vastava kasti. </para>

<para>Sümbolite andmebaasi ei uuendata, kui muudad oma lähtekoodi. Seepärast ei pruugi mõne aja pärast enam reanumbrid tegelikkusele vastata ning uued klassid ja funktsioonid on puudu. Seepärast tasuks faili <filename>tags</filename> regulaarselt uuendada, klõpsates nupule <guibutton>Genereeri uuesti</guibutton>. </para>
</listitem>

<listitem>
<formalpara>
<title>Plugin <command>astyle</command></title>
<indexterm zone="plugin-tools"><primary><command>astyle</command></primary></indexterm>
<indexterm zone="plugin-tools"><primary><application>Artistic Style</application></primary></indexterm>
<indexterm zone="plugin-tools"><primary>treppimine</primary></indexterm>

<para>Astyle on plugin, mis lubab lähtekoodi vormindada vastavalt kindlatele reeglitele. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title>Plugin <command>regexptest</command></title>
<indexterm zone="plugin-tools"><primary><command>regexptest</command></primary></indexterm>
<indexterm zone="plugin-tools"><primary>silumine</primary><secondary>regulaaravaldis</secondary></indexterm>
<indexterm zone="plugin-tools"><primary>regulaaravaldis</primary><secondary>silumine</secondary></indexterm>

<para>Regulaaravaldise loomine võib olla üsna tülikas tegevus. Sageli leiad esialgu liiga palju vasteid oma otsingule. Eriti keerukamate keelte puhul võib regulaaravaldiste paikaajamine olla väga vaevarikas. Plugin regeexptest lubab sul vahetult uurida regulaaravaldises tehtavate muudatuste mõju. Selle saab aktiveerida menüükäsuga <menuchoice><guimenu>Tööriistad</guimenu> <guimenuitem>Regulaaravaldise silumine...</guimenuitem></menuchoice> </para>
</formalpara>

<para>Regulaaravaldise tüübi sektsioonis saad valida, millist laadi regulaaravaldise mootorit kasutada. Praegu on toetatud POSIX standard, mida kasutab programm &grep; ja laiendatud POSIX süntaks, mida kasutab programm &egrep;. </para>

<para>Kui sisestad avaldise, saad kohe teada, kas selles on süntaksivigu. Sisestades teksti kasti <guilabel>Teststring</guilabel>, näed, kas see sobib avaldisega. Eriti juhul, kui regulaaravaldis sisaldab gruppe, näiteks <literal>([a-z])</literal>, näidatakse nimekirjakastis sobivate alamgruppide sisu. </para>
</listitem>

<!--
<listitem>
<formalpara>
<title>The <command>konsole</command> Plugin</title>
<indexterm zone="plugin-tools"><primary><command>konsole</command></primary></indexterm>
<indexterm zone="plugin-tools"><primary>terminal</primary><secondary>embedded</secondary></indexterm>
<para></para>
</formalpara>
</listitem>
-->

</itemizedlist>

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

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