Turuxi-py:Inkscape-laajennos (taulukko)

Kohteesta Turuxi
Loikkaa: valikkoon, hakuun

Yleistä

Laajennos generoi syötteeksi annetusta CSV-tiedostosta Inkscapeen talukon. Taulukko koostuu riveiksi ja sarakkeiksi järjestetyistä suorakaiteista, soluista, joiden päällä ovat tekstiolioina taulukon solujen tekstit. Ehkä taustaksi vielä yksi iso suorakaide. (Esimerkkitiedosto (svg), esimerkkitiedosto (csv))

Argumentteja

Ohjelmalle annettavia argumentteja voisivat olla esimerkiksi

  • Tekstin, solujen ja taustan värit (esim. RGBA-muodossa: #ab0393ff, jossa kaksi viimeistä merkkiä tarkoittavat värin läpinäkyvyyttä)
  • solujen välin suuruus (joko yksi tai vaaka- ja pystysuunta erikseen)
  • solujen padding, eli paljonko tyhjää tekstin ja solun sisäreunan välillä
  • fonttikoko
  • CSV-tiedoston nimi

Ohjelmassa tehtäviä asioita

  • tiedoston lukeminen
  • (parametrien arvojen tarkistaminen, esim. RGB:n heksaluku)
  • tarvittavien SVG-elementtien luonti
  • pisimmän tekstielementin pituuden määrittäminen kussakin sarakkeessa
  • SVG-elementtien sijoittelu ja ryhmittely

Tarvittavia Python-rakenteita

  • tiedosto
  • lista
  • merkkijono
  • liukuluvut

Ehdotuksia toteutettaviksi funktioiksi

Osaan funktioista tarvitaan lisää parametreja. Entä olisiko järkevä toteuttaa taulukko luokkana, jolla erilaisia metodeja?

color_to_rgb(color)
Saa syötteenä käyttöliittymän color-valitsimen tuottaman kokonaisluvun väliltä [-2147483648, 2147483647] muuntaa tämän 8-merkin pituiseksi heksadesimaaliluvuksi ja palauttaa näistä 6 ensimmäistä merkkiä lisäten vielä eteen '#'-merkin. Palautettu merkkijono esittää värin rgb-muodossa.
color_to_opacity(color)
Saa syötteenä saman kokonaisluvun kuin edellinen funktio, mutta palauttaa 8-merkkisen heksadesimaaliesityksen kahden viimeisen merkin esittämän peittävyyden (opacity) liukulukuna välillä [0, 1]. Heksaesitys on välillä [00, ff], eli kymmenjärjestelmän lukuna väliltä [0, 255]. Palautettava liukuluku saadaan jakamalla heksaesityksen tarkoittama luku luvulla 255.0.
csv_to_strtable(filename, muita argumentteja)
Lukee syötteenä annetun csv-tiedoston ja palauttaa listan, jonka alkiot ovat rivejä esittäviä listoja soluja esittävistä teksteistä. Muina argumentteina esimerkiksi erottelumerkki ja lainausmerkki.
strtable_to_svgtable(rowlist, textcolor)
Saa syötteenä edellisen funktion tuottaman listojen listan merkkijonoja sekä värin ja palauttaa vastaavan listojen listan svg-tekstielementtejä.
svgtable_to_celltable(rowlist, fillcolor, bordercolor, padding)
Saa syötteenä edelllisen funktion tuottaman listojen listan svg-tekstielementtejä sekä täyttö- ja reunavärit. Palauttaa listojen listan svg-ryhmiä, johon sijoiteltuina annettujen värien mukainen "sopivan kokoinen" suorakaide ja teksti. Tekstien ympärillä padding-parametrin mukainen määrä tilaa.
svgtable(rowlist, bgcolor, title="", spacing)
Saa syötteenä edellisellä funktiolla tuotetun listan ja palauttaa svg-ryhmän, johon on sijoiteltu taustalle bgcolor-värinen suorakaide ja sen päälle taulukon solut sekä mahdollinen otsikko. Solujen välissä spacing-parametrin verran tyhjää tilaa.
longest_in_columns(rowlist)
Saa syötteenä listojen listan merkkijonoja ja palauttaa listana kunkin sarakkeen pisimmän merkkijonon pituuden. Tällä olisi tarkoitus selvittää tarvittavien solusuorakaiteiden pituudet kusakin sarakkeessa. Ei ole suoraviivaista, koska merkkijonon fyysinen pituus riippuu käytetystä fontista, fonttikoosta ja käytetyistä kirjaimista. Vaatii pohdintaa, miten toteutetaan!


Linkkejä