<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hiiop &#187; soc</title>
	<atom:link href="http://blogi.tsoots.fi/category/soc/feed" rel="self" type="application/rss+xml" />
	<link>http://blogi.tsoots.fi</link>
	<description>vapaa grafiikka, koodi ja juttu</description>
	<lastBuildDate>Sat, 04 Feb 2012 05:29:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Scribuksen Python-apin laajentaminen</title>
		<link>http://blogi.tsoots.fi/2008/06/scribuksen-python-apin-laajentaminen.html</link>
		<comments>http://blogi.tsoots.fi/2008/06/scribuksen-python-apin-laajentaminen.html#comments</comments>
		<pubDate>Sun, 29 Jun 2008 17:13:00 +0000</pubDate>
		<dc:creator>Tsoots</dc:creator>
				<category><![CDATA[komentosarjat]]></category>
		<category><![CDATA[koodi]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scribus]]></category>
		<category><![CDATA[soc]]></category>
		<category><![CDATA[vs]]></category>

		<guid isPermaLink="false">http://beta.tsoots.fi/?p=33</guid>
		<description><![CDATA[Scribuksen irc-kanavalla (irc.freenode.net, #scribus) tänään käydyn keskustelun pohjalta sain ajatuksen tähän kirjoitukseen. Scribuksessa tylsiä ja usein toistuvia tehtäviä voi automatisoida Python-komentosarjoilla (kansankielellä skripteillä). Skriptejä voi käyttää myös muuttuvan datan tulostukseen (variable data printing), kuten Open source publishing -blogin artikkelissa print, flip and turn kerrotaan. Joskus saattaa tulla vastaan tilanne, että haluttua toimintoa ei löydy Python-apista. [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_aHJIBY2E9Q8/SGe8HAnoutI/AAAAAAAAAgM/CKD6i_zyABY/s1600-h/python.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_aHJIBY2E9Q8/SGe8HAnoutI/AAAAAAAAAgM/CKD6i_zyABY/s400/python.png" alt="" id="BLOGGER_PHOTO_ID_5217345521943362258" border="0" /></a><a href="http://www.scribus.net/">Scribuksen</a> irc-kanavalla (irc.freenode.net, #scribus) tänään käydyn keskustelun pohjalta sain ajatuksen tähän kirjoitukseen. Scribuksessa tylsiä ja usein toistuvia tehtäviä voi automatisoida Python-komentosarjoilla (kansankielellä skripteillä). Skriptejä voi käyttää myös muuttuvan datan tulostukseen (variable data printing), kuten <a href="http://ospublish.constantvzw.org/">Open source publishing</a> -blogin artikkelissa <a href="http://ospublish.constantvzw.org/?p=547">print, flip and turn</a> kerrotaan.</p>
<p>Joskus saattaa tulla vastaan tilanne, että haluttua toimintoa ei löydy <a href="http://docs.scribus.net/index.php?lang=en&amp;page=scripterapi">Python-apista</a>. Mitä silloin tapahtuukaan? Avaat irc-ohjelmasi ja suuntaat Scribuksen irc-kanavalle ja huutelet apua. Kun apua ei kohtuuajassa kuulu, alat etsiä Scribuksen lähdekoodia toivoen, että jostain löytäisit skriptejä koskevat tiedostot. Voin nyt jo avittaa hieman ja kertoa, että ne löytyvät hakemistosta scribus/plugins/scriptplugin/.</p>
<p>Hienoahan olisi, jos Scribuksen Python-api dynaamisesti eläisi Scribuksen mukana ja kaikki toiminnot olisivat aina saatavilla skripteissä. Koska näin ei kuitenkaan ole, on skriptien käyttäjien aika-ajoin tarttutava lapioon ja sukellettava likaiseen Scribus-lähdekoodin maailmaan.</p>
<p>Irc-kanavalla kyseltiin tänään, voiko tekstin etäisyyttä kehyksen reunoista säädellä skriptin avulla. Ei voinut. Onneksi kysyjä oli riittävän noheva ja alkoi tutkailla vaihtoehtoja. Hän päätyi lisäämään funktiot Scribuksen lähdekoodiin itse. Toimintojen lisäys Scribuksen Python-apiin sisälsi 74 riviä. Jokainen aloitteleva koodarikin suoltaa tällaisen määrän ulos kahvitauollaan. Jotta muutokset saataisiin kaikille, hän loi <a href="http://bugs.scribus.net/view.php?id=7117">uuden kohteen bugityökaluun</a> ja lisäsi koodinsa sinne. Tuloksena oli kaksi uutta Python-funktiota, getTextDistances() ja setTextDistances(), joitten avulla voidaan kysyä tekstin etäisyyttä kehyksen reunoista sekä säädellä sitä.</p>
<p>Lyhykäisyydessään Python-apin laajennus menee seuraavasti:
<ol>
<li>Etsi haluamasi toiminto Scribuksen lähdekoodista ja katso miten se tehdään</li>
<li>Ala työstää skrpiterin koodia seuraavasti:</li>
<ul>
<li>tekstin muokkausta käsittelevät toiminnot lisätään tiedostoon cmdtext.h ja cmdtext.cpp (muun tyyppisille muokkauksille löytyy omat cmd-alkuiset tiedostot)</li>
<li>funktiot paljastetaan skripterille lisäämällä ne scriptplugin.cpp-tiedostoon</li>
</ul>
</ol>
<p>Skripterille ei juuri nyt kannata alkaa tehdä suurempia korjailuja. Tämä siksi, että kesän <a href="http://code.google.com/soc/2008/scribus/appinfo.html?csaid=3A1BB82E4AA4DE3B">Google Summer of Code -projektissa</a> on tarkoitus luoda uusi skripteri <a href="http://doc.trolltech.com/4.4/qtscript.html">QtScriptiä</a> apuna käyttäen. Uuden skripterin olisi myös tarkoitus elää dynaamisesti Scribuksen kanssa.</p>
<p><span style="display: block;" id="formatbar_Buttons"><span class="on down" style="display: block;" id="formatbar_CreateLink" title="Linkki" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogi.tsoots.fi/2008/06/scribuksen-python-apin-laajentaminen.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

