# Programiranje &appname;

V duhu proste programske opreme ste dobrodošli, da programirate za &appname; kolikor hočete. Morali bi biti sposobni zelo enostavno pisati skripte za uvoz, izvoz ali spreminjanje podatkov. To poglavje vam ponuja več informacij o tem.

## Format datoteke

Privzeta podatkovna datoteka za &appname; je arhiv zip, običajno s pripono `.tc`. Znotraj arhiva je datoteka `tellico.xml` najvišje ravni. Slike so lahko vključene v mapo `images/` v arhivu ali pa so vključene v datoteko &XML; podatke neposredno v kodiranju base64. Slike so lahko shranjene tudi v podatkovni mapi aplikacije, v tem primeru pa sploh niso v podatkovni datoteki. &appname; lahko tudi sama po sebi naloži nestisnjeno &XML; datoteko.

### &XML; podatki

#### Zbirka

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tellico PUBLIC "-//Robby Stephenson/DTD Tellico V11.0//EN" "http://periapsis.org/tellico/dtd/v11/tellico.dtd">
    <tellico xmlns="http://periapsis.org/tellico/" syntaxVersion="11">
     <collection title="My Books" type="2">
     </collection>
    </tellico>

Datoteka se začne z zahtevanim &XML; deklaracijo in kodiranje, ki ji sledi tip dokumenta. Ko je dodana nova vrsta polja ali nastavljene dodatne lastnosti za privzeta polja, se različica doctype DTD poveča. &appname; vedno lahko odpre in prebere katero koli prejšnjo različico DTD, vendar bo shranil datoteke v trenutno različico. Lokacija DTD kaže na dejansko datoteko DTD.

Element najvišje ravni je element `<tellico>`, ki vsebuje deklaracijo privzetega imenskega prostora in različico sintakse datoteke, ki se mora vedno ujemati z DTD.

Element `<tellico>` vsebuje en element `<collection>`. Več zbirk je za zdaj prezrtih. Atribut `title` vsebuje naslov zbirke, medtem ko `type` določa, katere vrste vnosov vsebuje zbirka. Dovoljene vrste so navedene v kasnejšem razdelku. Izbirni atribut `entryTitle` se lahko uporabi za določitev naslova vnosov za zbirko po meri in mora biti množinski.

#### Polja

      <fields>
       <field flags="8" title="Title" category="General" format="1" type="1" name="title" />
       <field flags="7" title="Author" category="General" format="2" type="1" name="author" />
       <field flags="2" title="Binding" category="General" allowed="Hardback;Paperback;Trade Paperback;E-Book;Magazine;Journal" format="4" type="3" name="binding" >
        <prop name="default"
    >Paperback</prop>
       </field>
       <field flags="6" title="Publisher" category="Publishing" format="0" type="1" name="publisher" />
       <field flags="4" title="Edition" category="Publishing" format="0" type="1" name="edition" />
       <field flags="3" title="Copyright Year" category="Publishing" format="4" type="6" name="cr_year" />
       <field flags="2" title="Publication Year" category="Publishing" format="4" type="6" name="pub_year" />
       <field flags="0" title="ISBN#" category="Publishing" format="4" type="1" name="isbn" description="International Standard Book Number" />
       <field flags="7" title="Genre" category="Classification" format="0" type="1" name="genre" />
       <field flags="7" title="Keywords" category="Classification" format="0" type="1" name="keyword" />
       <field flags="0" title="Front Cover" category="Front Cover" format="4" type="10" name="cover" />
       <field flags="0" title="Comments" category="Personal" format="4" type="1" name="comments" />
       <field title="Rating" flags="2" category="Personal" format="4" type="14" name="rating">
        <prop name="maximum"
    >5</prop>
        <prop name="minimum"
    >1</prop>
       </field>
       <field title="ID" flags="32" category="Personal" format="4" type="6" name="id">
        <prop name="template"
    >%{@id}</prop>
       </field>

      </fields>

Vsa polja so definirana znotraj elementa `<fields>`, ki je lahko samo eden. Vse informacije za polje, razen morebitnih lastnosti, so vključene kot atributi elementa `<field>`. Dovoljene vrednosti za atribute `zastavic`, `format` in `type` so podane v naslednjem razdelku.

Lastnosti polj se uporabljajo za nastavitev privzetih vrednosti polj, razponov vrednosti ocen, predlog izpeljanih vrednosti itd. Zgornji primeri vključujejo privzeto vrednost, največjo vrednost ocene in predlogo za polje izpeljanega ID-ja.

#### Vnosi

      <entry>
       <title
    >C++ Programming Language, The</title>
       <authors>
        <author
    >Stroustrup, Bjarne</author>
       </authors>
       <publisher
    >Addison-Wesley Pub Co</publisher>
       <edition
    >3rd</edition>
       <pub_year
    >1997</pub_year>
       <isbn
    >0-201-88954-4</isbn>
       <genres>
        <genre
    >Non-Fiction</genre>
       </genres>
       <keywords>
        <keyword
    >Programming</keyword>
        <keyword
    >Computers</keyword>
       </keywords>
       <cover
    >cf65a2f023b6cb9e9233323dca10ac7c.jpeg</cover>
      </entry>

Za vsako polje v zbirki lahko `<entry>` vsebuje element, katerega ime je enako imenu polja. Če je za polje dovoljenih več vrednosti, je črka s dodana imenu polja, da se ustvari element, in vsaka vrednost je dodana kot podrejena elementu, kot v primeru avtorja, zvrst in polja za ključne besede zgoraj.

Posledično, če so zbirki dodana dodatna polja, podatkovna datoteka ne bo več v skladu z DTD. Vendar &appname; uporablja nepreverjalni &XML; razčlenjevalnik, tako da dodatna polja ne povzročajo težav.

#### Slike

      <images>
       <image width="111" format="JPEG" height="140" id="cf65a2f023b6cb9e9233323dca10ac7c.jpeg" />
      </images>

Znotraj elementa `<images>` je navedena vsaka slika, na katero se sklicuje vnos, skupaj z atributi, ki opisujejo velikost, obliko in ID slike. Če je slika v datoteki Zip, je element prazen. V nasprotnem primeru so lahko slikovni podatki v datoteki &XML; tok kot besedilo, kodirano z base64.

## Vrednosti vrste zbirke

Tip zbirke je podan v atributu tipa elementa zbirke. Vrednost je enaka enumski vrednosti `Type` v `src/collection.h`.

## Vrednosti vrste zbirke

Vrsta zbirke | Vrednost
Zbirka po meri | 1
Knjižna zbirka | 2
Video zbirka | 3
Glasbena zbirka | 4
Bibliografija | 5
Zbirka stripov | 6
Zbirka vin | 7
Zbirka kovancev | 8
Zbirka znamk | 9
Zbirka menjalnih kartic | 10
Zbirka video iger | 11
Katalog datotek | 12
Zbirka družabnih iger | 13

## Vrednosti vrste polja

&appname; bo vključeval vsa privzeta polja za zbirko, če ima prvi element polja ime _default. Za polja Odstavek, Tabela ali Slika mora biti kategorija polja enaka naslovu polja.

Tip polja je podan v atributu tipa elementa polja. Vrednost je enaka vrednosti enum `FieldType` v `src/field.h`.

## Vrednosti vrste polja

Vrsta polja | Vrednost
Preprosto besedilo | 1
Odstavek | 2
Izbira | 3
Potrditveno polje | 4
Število | 6
&URL; | 7
Tabela | 8
Slika | 10
Datum | 12
Ocena | 14

Polje ima lahko nastavljene različne zastavice, podane kot bitna vrednost ALI v atributu zastavic na elementu polja. Zastavica, ki uporabniku preprečuje brisanje polja, je namenjena stvarem, kot je ključ navedbe za bibliografske vnose.

## Vrednosti zastavic polja

Zastavice polja | Vrednost
Dovoli več vrednosti | `0x01`
Dovoli združevanje | `0x02`
Dovoli dokončanje | `0x04`
Onemogoči brisanje | `0x08`
Onemogoči urejanje | `0x10`
Izpeljana vrednost | `0x20`

Format polja je podan v atributu format na elementu polja. Oblikovanje datuma se trenutno ne uporablja. Združevanje glede na Osebe uporablja vsa polja, ki uporabljajo Oblikovanje imena. Nastavitev zastavice Izpeljana vrednost pomeni, da je vrednost za polje ustvarjena iz lastnosti predloge iz drugih vrednosti polja.

## Vrednosti oblike polja

Oblika polja | Vrednost
Samo velika začetnica | 0
Oblikovanje naslova | 1
Oblikovanje imena | 2
Oblikovanje datuma | 3
Brez oblikovanja | 4

## Možnosti skrite konfiguracije

&appname; ima nekaj dodatnih konfiguracijskih možnosti, ki niso vidne v konfiguracijskem pogovornem oknu. Niso dovolj pomembne, da bi upravičile natrpanje pogovornega okna z več nastavitvami, a ker predstavljajo možnosti, ki bi lahko pritegnile različne uporabnike, jih aplikacija prebere iz konfiguracijske datoteke.

Nastavitve za &appname; se shranijo v datoteko v domači mapi uporabnika, in sicer `$`KDEHOME`/share/config/tellicorc`. Znotraj te datoteke so nastavitve razvrščene v skupine, ki se prikažejo z imeni v oklepajih, kot je [Splošne možnosti]. Če želite dodati nastavitev v skupino Splošne možnosti, poiščite vrstico v datoteki z nastavitvami z imenom te skupine. Če se ne prikaže, ga ustvarite sami, tako da dodate vrstico [Splošne možnosti]. Nato lahko nastavitev dodate pod ime skupine.

### [Splošne možnosti]

Te nastavitve je treba postaviti v skupino Splošne možnosti.

#### Največja velikost ikone

S to nastavitvijo lahko spremenite največjo velikost ikon v Pogled ikon. Privzeta vrednost je 96. Velikost mora biti v območju od 32 do 512.

#### Primer

`Največja velikost ikone = 128`

#### Velikost predpomnilnika ikon

S to nastavitvijo lahko spremenite največje število ikon, ki so predpomnjene v pomnilniku. Privzeta vrednost je 1000.

#### Primer

`Velikost predpomnilnika ikon = 100`

#### Primer

`Največja velikost ikone = 128`

#### Velikost predpomnilnika slike

S to nastavitvijo lahko spremenite največjo količino pomnilnika v bajtih, ki se uporablja za predpomnjenje vseh slik. Privzeta vrednost je 67108864.

#### Primer

`Velikost predpomnilnika slike = 256000000`

### [Možnosti - bibtex]

Te nastavitve bi morali postaviti v skupino Možnosti - bibtex.

#### lyxpipe

Ta nastavitev je za lokacijo lyxpipe za pošiljanje bibliografskih citatov. Ne sme vsebovati pripone `.in`.

#### Primer

`lyxpipe=$HOME/.lyx/lyxpipe`

## Prevod znakov Bibtex

Ko so datoteke bibtex uvožene ali izvožene, se nekateri znaki prevedejo med njihovimi ekvivalenti TeX in znaki Unicode. Te preslikave znakov so v datoteki `bibtex-translation.xml`, ki se nahaja v imeniku namestitvenih podatkov. Preslikave je mogoče po želji spreminjati. Ključni element vsebuje znak Unicode, elementi niza znotraj pa vsebujejo ekvivalente TeX, ki so lahko preslikava ena proti mnogo. Prvi je tisti, ki se uporablja pri izvozu v bibtex.

      <key char="À">
        <string
    >{\`A}</string>
        <string
    >\`{A}</string>
      </key>

## Triki XSLT

Tukaj je nekaj nasvetov za pisanje XSLT za razčlenjevanje &appname; &XML; podatki: (TBD).