<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>hds619.net » Blog</title>
	
	<link>http://www.hds619.net/blog</link>
	<description>Il blog personale di Davide Francesco Merico</description>
	<lastBuildDate>Wed, 05 Oct 2011 00:34:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/hds619" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="hds619" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Vedere le voci di Wikipedia</title>
		<link>http://www.hds619.net/blog/05/10/2011/vedere-le-voci-di-wikipedia/</link>
		<comments>http://www.hds619.net/blog/05/10/2011/vedere-le-voci-di-wikipedia/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 23:06:53 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Guide veloci]]></category>
		<category><![CDATA[blocco javascript]]></category>
		<category><![CDATA[censura]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[wikipedia]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=260</guid>
		<description><![CDATA[Wikipedia per protesta ha bloccato tutte le pagine. Per chi per necessità ha bisogno di consultarle a tutti i costi, oltre alla versione cache trovabile in rete della pagina ho trovato, penso l&#8217;abbiano fatto anche altri, un modo per visualizzare le pagine.
La seguente &#8220;guida&#8221; è valida per chrome perchè l&#8217;ho testato con questo tipo di [...]]]></description>
			<content:encoded><![CDATA[<p>Wikipedia per protesta ha bloccato tutte le pagine. Per chi per necessità ha bisogno di consultarle a tutti i costi, oltre alla versione cache trovabile in rete della pagina ho trovato, penso l&#8217;abbiano fatto anche altri, un modo per visualizzare le pagine.</p>
<p>La seguente &#8220;guida&#8221; è valida per chrome perchè l&#8217;ho testato con questo tipo di browser.</p>
<p>AGGIUNTA POSTUMA: sembra che la versione &#8220;mobile&#8221; di wikipedia risponda ancora correttamente: <a href="http://it.m.wikipedia.org/wiki/Libert%C3%A0">http://it.m.wikipedia.org/wiki/Libert%C3%A0</a> senza alcun bisogno di modificare nulla. L&#8217;unico accorgimento è quello di mettere una &#8220;m.&#8221; dopo l&#8217;&#8221;it.&#8221; iniziale del link della pagina.</p>
<p>1) clickare sul menu e andare in opzioni, dopodichè aprire la pagina Roba da Smanettoni e Impostazioni contenuti&#8230;, e fare click  sull&#8217;opzione relativa al Javascript: Non consentire ad alcun sito di eseguire Javascript ( si potrebbe mettere l&#8217;eccezione a wikipedia per limitare il blocco di codice javascript solo ad una pagina e non influenzare le altre, per fare ciò seguire la nota 1 a fondo pagine ).</p>
<p>Questo eviterà il redirect.</p>
<p>2) Una volta sulla pagina il contenuto è nascosto, clickare col destro su un punto vuoto della pagina e selezionare l&#8217;opzione &#8220;Ispeziona Elemento&#8221;. A questo punto espandere ( clickando sul triangolino ) il tag <strong>&lt;div id=&#8221;content&#8221;&gt; </strong>ed clickare sul tag ( non sul triangolino ) <strong>&lt;div id=&#8221;bodyContent&#8221;&gt;.</strong></p>
<p>A questo punto sulla destra ci sarà una lista, dove è presente l&#8217;attributo <strong>display: none</strong>, è sufficiente togliere la spunta clickando sul tick che compare andando col mouse sull&#8217;attributo e il contenuto sarà visibile.</p>
<p><a href="http://www.hds619.net/HImages/wikipedia-0U2nN.png" target="_blank"><img src="http://www.hds619.net/HImages/wikipedia-0U2nN-th.png" border="0" alt="" /></a></p>
<p>NOTA: non è questa la soluzione per quel che sta accadendo. Bisogna fare qualcosa.</p>
<p>NOTA 1: per aggiungere un&#8217;eccezione lasciare javascript abilitato e clickare su Aggiungi eccezione, nel nome host scrivere it.wikipedia.org e come comportamento &#8216;blocca&#8217;.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F05%2F10%2F2011%2Fvedere-le-voci-di-wikipedia%2F&amp;linkname=Vedere%20le%20voci%20di%20Wikipedia">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/05/10/2011/vedere-le-voci-di-wikipedia/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Imel 0.2.7</title>
		<link>http://www.hds619.net/blog/07/06/2010/imel-0-2-7/</link>
		<comments>http://www.hds619.net/blog/07/06/2010/imel-0-2-7/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 06:02:51 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[imel]]></category>
		<category><![CDATA[libreria grafica]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=257</guid>
		<description><![CDATA[
Rilasciata da qualche minuto la versione 0.2.7 di Imel.
Le novità di questa versione comprendono uno &#8220;snellimento&#8221; delle dipendenze, le uniche librerie richieste ora sono libfreetype6-dev e libfreeimage3-dev, un&#8217;aggiunta di nuovi formati in cui salvare ( XPM, PPM ( Ascii ), JP2, J2K ), un miglioramento nella lettura di quelli già presenti ( ora vengono salvati [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hds619.net/blog/wp-content/uploads/2009/12/logo_imel.png"><img class="aligncenter size-full wp-image-228" title="logo_imel" src="http://www.hds619.net/blog/wp-content/uploads/2009/12/logo_imel.png" alt="" width="157" height="97" /></a></p>
<p>Rilasciata da qualche minuto la <a href="http://www.hds619.net/imel-pkg/imel-0.2.7.tar.bz2">versione 0.2.7 di Imel</a>.</p>
<p>Le novità di questa versione comprendono uno &#8220;snellimento&#8221; delle dipendenze, le uniche librerie richieste ora sono libfreetype6-dev e libfreeimage3-dev, un&#8217;aggiunta di nuovi formati in cui salvare ( XPM, PPM ( Ascii ), JP2, J2K ), un miglioramento nella lettura di quelli già presenti ( ora vengono salvati usando la libreria freeimage ) e una nuova modalità per salvarli ( al posto del nome può essere passato direttamente il puntatore a file ).</p>
<p>Inoltre:</p>
<ul>
<li><em>imel_image_apply_noise ()</em>: permette di applicare un disturbo all&#8217;immagine.</li>
<li><em>imel_font_write_vstring ()</em> e<em> imel_font_write_vstring_with_truetype_font ()</em>: permettono di scrivere direttamente in verticale.</li>
<li><em>imel_font_write_string ()</em> e<em> imel_font_write_string_with_truetype_font ()</em>: abilitato il supporto al carattere di newline.</li>
<li><em>imel_image_apply_pattern ()</em>: consente ora di sommare o sottrarre i colori del pattern durante la sua applicazione.</li>
<li><em>IMEL_EFFECT_COLOR_TO_ALPHA</em>: nuovo effetto che consente di rendere trasparente le aree in cui c&#8217;era una tonalità di colore ( uguale al<em><strong> Color to alpha</strong></em> presente in GIMP )</li>
<li><em>imel_image_perspective ()</em>: permette di inclinare i lati dell&#8217;immagine in modo simmetrico creando l&#8217;effetto &#8220;prospettiva&#8221;.</li>
</ul>
<p>Ed altri bugfix..</p>
<p>Le informazioni dettagliate nel <a href="http://www.hds619.net/listing/imel/ChangeLog">ChangeLog</a>.</p>
<p>Link immancabile alla Documentazione (<a href="http://www.hds619.net/documentation/imel"> HTML</a>, <a href="http://www.hds619.net/documentation/imel/imel-doc.pdf">PDF</a> )</p>
<p>Link finale per scaricare il pacchetto della <a href="http://www.hds619.net/imel-pkg/imel-0.2.7.tar.bz2">versione 0.2.7</a> <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F07%2F06%2F2010%2Fimel-0-2-7%2F&amp;linkname=Imel%200.2.7">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/07/06/2010/imel-0-2-7/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Imel 0.2.6 una marea di formati letti :)</title>
		<link>http://www.hds619.net/blog/19/03/2010/imel-0-2-6-una-marea-di-formati-letti/</link>
		<comments>http://www.hds619.net/blog/19/03/2010/imel-0-2-6-una-marea-di-formati-letti/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 00:59:19 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[imel]]></category>
		<category><![CDATA[libreria grafica]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=254</guid>
		<description><![CDATA[
Rilasciata la versione 0.2.6 di Imel la libreria grafica per la manipolazione di immagini che sto scrivendo.
Documentazione riscritta da zero e disponibile ora anche in pdf (  Ben 98 Pagine! )
Tra le novità la più importante è l&#8217;introduzione della libreria FreeImage per leggere le immagini quindi i formati supportati in lettura sono davvero tanti.
Ci [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Logo Imel 0.2.x" src="http://www.hds619.net/blog/wp-content/uploads/2009/12/logo_imel.png" alt="" width="157" height="97" /></p>
<p>Rilasciata la <a href="http://www.hds619.net/imel-pkg/imel-0.2.6.tar.bz2">versione 0.2.6 di Imel</a> la libreria grafica per la manipolazione di immagini che sto scrivendo.<br />
Documentazione riscritta da zero e <a href="http://www.hds619.net/documentation/imel/imel-doc.pdf">disponibile ora anche in pd</a>f (  Ben <strong>98 Pagine</strong>! )</p>
<p>Tra le novità la più importante è l&#8217;introduzione della libreria FreeImage per leggere le immagini quindi i <a href="http://www.hds619.net/documentation/imel/x769.html">formati supportati in lettura</a> sono davvero tanti.</p>
<p>Ci sono numerosi bugfix più o meno importanti.</p>
<p>Altre novità che richiedono attenzione sono:</p>
<ul>
<li>Rotazione ora vera e propria di un angolo a piacere</li>
<li>Abilitazione\Disabilitazione disegno con pennelli ( funzioni generiche )</li>
<li>Maschera per pseudo-livello così da poter effettuare operazioni anche con essa ( + IMEL_MASK_LEVEL )</li>
<li>Macro return_if_fail e return_var_if_fail ora non visualizzano più il messaggio di debug a meno imel non sia stata compilata con il debug abilitato</li>
<li>Risolto un grosso memory leak nel salvataggio in PNG</li>
<li>Categoria a parte per il riempimento, migliore della precedente che in alcuni casi risultava buggata</li>
</ul>
<p>Per altre informazioni consultare il <a href="http://www.hds619.net/listing/imel/ChangeLog">ChangeLog</a>.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F19%2F03%2F2010%2Fimel-0-2-6-una-marea-di-formati-letti%2F&amp;linkname=Imel%200.2.6%20una%20marea%20di%20formati%20letti%20%3A%29">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/19/03/2010/imel-0-2-6-una-marea-di-formati-letti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Esame pratico patente</title>
		<link>http://www.hds619.net/blog/02/03/2010/esame-pratico-patente/</link>
		<comments>http://www.hds619.net/blog/02/03/2010/esame-pratico-patente/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 18:36:08 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Senza categoria]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=252</guid>
		<description><![CDATA[Dopo un silenzio durato un mese in quanto preso da altri impegni come quello della patente che devo dire è stata superata anche la pratica!!
Neopatentato da 1 giorno, da ora in avanti chiudete in casa donne e bambini  
Condividi\Salva Articolo]]></description>
			<content:encoded><![CDATA[<p>Dopo un silenzio durato un mese in quanto preso da altri impegni come quello della <strong>patente</strong> che devo dire <strong>è stata superata anche la pratica</strong>!!</p>
<p><strong>Neopatentato da 1 giorno</strong>, da ora in avanti chiudete in casa donne e bambini <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F02%2F03%2F2010%2Fesame-pratico-patente%2F&amp;linkname=Esame%20pratico%20patente">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/02/03/2010/esame-pratico-patente/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guida gtk+ a puntate ( XXII parte )</title>
		<link>http://www.hds619.net/blog/17/01/2010/guida-gtk-a-puntate-xxii-parte/</link>
		<comments>http://www.hds619.net/blog/17/01/2010/guida-gtk-a-puntate-xxii-parte/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 05:42:24 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Guide veloci]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[guida gtk+]]></category>
		<category><![CDATA[manuale gtk]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=239</guid>
		<description><![CDATA[Salve a tutti, continuiamo finalmente dopo tanto tempo con la guida alle gtk+ parlando delle preannunciate toolbar. Gestirle è molto molto semplice.

La creazione avviene tramite la funzione gtk_toolbar_new () che non riceve argomenti e ritorna un puntatore a GtkWidget che altro non è che la toolbar.
Una volta ottenuta si possono settare alcune opzioni:

gtk_toolbar_set_show_arrow (): questa [...]]]></description>
			<content:encoded><![CDATA[<p>Salve a tutti, continuiamo finalmente dopo tanto tempo con la guida alle gtk+ parlando delle preannunciate toolbar. Gestirle è molto molto semplice.</p>
<p><a href="http://www.hds619.net/blog/wp-content/uploads/2010/01/toolbar-jeex.png"><img class="aligncenter size-full wp-image-240" title="toolbar-jeex" src="http://www.hds619.net/blog/wp-content/uploads/2010/01/toolbar-jeex.png" alt="" width="446" height="63" /></a></p>
<p>La creazione avviene tramite la funzione <em>gtk_toolbar_new ()</em> che non riceve argomenti e ritorna un puntatore a <strong>GtkWidget</strong> che altro non è che la toolbar.</p>
<p>Una volta ottenuta si possono settare alcune opzioni:</p>
<ul>
<li><em>gtk_toolbar_set_show_arrow ()</em>: questa funzione riceve come argomenti la toolbar e un valore booleano ( TRUE o FALSE, FALSE è l&#8217;attributo predefinito ) che permette di visualizzare una freccia nel caso gli elementi inseriti nella toolbar non siano visualizzabili ( ad esempio quando viene ridimensionata la finestra ). Se questo attributo non è presente la finestra non potrà essere ridimensionata meno della larghezza della toolbar.</li>
<li><em>gtk_toolbar_set_orientation ()</em>: anch&#8217;essa riceve due argomenti come la precedente, il primo è sempre la toolbar mentre il secondo è l&#8217;orientamento che vogliamo abbia. I valori disponibili son soltanto due: GTK_ORIENTATION_HORIZONTAL  e GTK_ORIENTATION_VERTICAL ( il predefinito è GTK_ORIENTATION_HORIZONTAL ).</li>
<li><em>gtk_toolbar_set_icon_size ()</em>: con questa funzione possiamo stabilire la dimensione predefinita delle icone degli elementi della toolbar. I valori disponibili sono GTK_ICON_SIZE_INVALID, GTK_ICON_SIZE_MENU, GTK_ICON_SIZE_SMALL_TOOLBAR, GTK_ICON_SIZE_LARGE_TOOLBAR, GTK_ICON_SIZE_DND, GTK_ICON_SIZE_DIALOG.</li>
<li><em>gtk_toolbar_set_style ()</em>: permette di stabilire lo stile della toolbar passata come primo parametro. Gli stili disponibili sono:
<ul>
<li><strong>GTK_TOOLBAR_ICONS</strong>: visualizza solo le icone nella toolbar.</li>
<li><strong>GTK_TOOLBAR_TEXT</strong>: visualizza solo il testo nella toolbar.</li>
<li><strong>GTK_TOOLBAR_BOTH</strong>: visualizza il testo e le icone nella toolbar ( il testo sarà sotto le icone ).</li>
<li><strong>GTK_TOOLBAR_BOTH_HORIZ</strong>: visualizza il testo e le icone nella toolbar ( il testo sarà a fianco le icone ).</li>
</ul>
</li>
</ul>
<p>Una volta impostati gli attributi alla toolbar possiamo procedere all&#8217;inserimento degli elementi. Come elementi abbiamo i pulsanti normali, i toggled, i separatori, ecc..</p>
<p><span id="more-239"></span></p>
<p>Iniziamo con i pulsanti normali, il nome delle funzioni è uguale a quella per i pulsanti normali, cambia solo categoria, quindi se prima per creare un pulsante si chiamava ad esempio la funzione <em>gtk_button_new_from_stock ()</em> adesso si chiamerà<em> gtk_tool_button_new_from_stock ()</em>. Altra differenza è che la variabile ritornata non è un <strong>GtkWidget *</strong> ma un <strong>GtkToolItem *</strong>.</p>
<p>Continuando con i toggle button, ovvero i pulsanti che una volta clickati rimangono premuti ( attivati ) e se riclickati ritornano allo stato originario ( disattivati ), abbiamo la stessa situazione che avevamo anche qui con i pulsanti toggle normali, cioè sono una sottocategoria dei pulsanti normali,  cambia categoria ( quindi <em>gtk_toggle_tool_button_.. ()</em> ) e le azioni delle funzioni invece rimangono uguali. Anche qui il valore ritornato non è un<strong> GtkWidget *</strong> ma un <strong>GtkToolItem *</strong>.</p>
<p>Anche con i radio button ( chiamati radio_tool_button ) abbiamo le stesse identiche cose dei radio button normali con le identiche modifiche descritte per i due tipi di pulsanti più su.</p>
<p>I separati nelle toolbar si creano semplicemente con la funzione<em> gtk_separator_tool_item_new ()</em> che non riceve argomenti e ritorna un <strong>GtkToolItem </strong>*.</p>
<p>Essendo, come avrete notato, tutti dei <strong>GtkToolItem </strong>* esistono delle funzioni per impostare degli attributi a questa classe, indipendentemente dal tipo specifico ( tutte queste funzioni che ora elencherò infatti ricevono come primo parametro un GtkToolItem * ):</p>
<ul>
<li><em>gtk_tool_item_set_expand ()</em>: il secondo parametro è un valore booleano per scegliere se permettere all&#8217;item passato di occupare lo spazio che potrebbe crearsi nella toolbar ( ad esempio durante il ridimensionamento potrebbe crearsi del vuoto sulla destra mentre se uno o più widget si espandono riempiono anche quello spazio ).</li>
<li><em>gtk_tool_item_set_homogeneous ()</em>: l&#8217;item a cui viene applicata questa opzione ( secondo parametro è booleano ) avrà la larghezza uguale a quella del più largo degli oggetti inseriti nella toolbar.</li>
<li><em>gtk_tool_item_set_tooltip_text ()</em>: il secondo parametro dovrà essere una stringa contenente il suggerimento che si vuol far visualizzare quando il mouse &#8220;riposa&#8221; sull&#8217;elemento passato come primo parametro.</li>
<li><em>gtk_tool_item_set_tooltip_markup ()</em>: come la funzione precedente, solo che il testo del &#8220;tooltip&#8221; ( suggerimento ) potrà usare dei tag di markup.</li>
<li><em>gtk_tool_item_set_visible_horizontal ()</em>: riceve come secondo parametro un valore booleano che indica se visualizzare l&#8217;elemento quando la toolbar è orientata orizzontalmente.</li>
<li><em>gtk_tool_item_set_visible_vertical ()</em>: come la funzione precedente, solo che la visibilità dell&#8217;elemento riguarda quando la toolbar nella sua posizione verticale.</li>
</ul>
<p>Ok abbiamo finito ma manca la cosa più importante, ovvero come inserire questi elementi che abbiamo creato nella toolbar. Niente di più semplice lo facciamo in un attimo con la funzione <em>gtk_toolbar_insert ()</em> che riceve tre parametri, il primo la toolbar, il secondo l&#8217;elemento da inserire e come terzo il numero del posto in cui inserirlo ( parte da zero l&#8217;indice ).</p>
<p><strong>Fine Ventiduesima Puntata</strong><br />
<em>Come promesso, anche se ce l&#8217;ho fatta nel limite, ho fatto una nuova guida alle gtk+ questa settimana, per altre puntate non abbiate fretta perchè sono un po&#8217; occupato dall&#8217;inizio di questo nuovo anno. Per altri argomenti in particolare comunque che volete guardare sempre inerenti alle gtk+ scriveteli pure nei commenti alle guide o nella pagina principale dove c&#8217;è il riassunto di tutte le puntate.</em><br />
<em>Ciauz <img class="wp-smiley" src="http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" /> </em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F17%2F01%2F2010%2Fguida-gtk-a-puntate-xxii-parte%2F&amp;linkname=Guida%20gtk%2B%20a%20puntate%20%28%20XXII%20parte%20%29">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/17/01/2010/guida-gtk-a-puntate-xxii-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Esame di teoria..</title>
		<link>http://www.hds619.net/blog/07/01/2010/esame-di-teoria/</link>
		<comments>http://www.hds619.net/blog/07/01/2010/esame-di-teoria/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 11:57:25 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[esame]]></category>
		<category><![CDATA[patente]]></category>
		<category><![CDATA[teoria]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=237</guid>
		<description><![CDATA[L&#8217;esame di teoria della patente, purtroppo mi ha dichiarato..

( Purtroppo per voi XD )
Condividi\Salva Articolo]]></description>
			<content:encoded><![CDATA[<p>L&#8217;esame di teoria della patente, purtroppo mi ha dichiarato..</p>
<p style="text-align: center;"><a href="http://www.hds619.net/HImages/0701201082nOBAk.png" target="_blank"><img class="aligncenter" src="http://www.hds619.net/HImages/0701201082nOBAk-th.png" border="0" alt="" /></a></p>
<p>( Purtroppo <em>per voi XD</em> )</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F07%2F01%2F2010%2Fesame-di-teoria%2F&amp;linkname=Esame%20di%20teoria..">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/07/01/2010/esame-di-teoria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buon Compleanno HdS619!</title>
		<link>http://www.hds619.net/blog/04/01/2010/buon-compleanno-hds619/</link>
		<comments>http://www.hds619.net/blog/04/01/2010/buon-compleanno-hds619/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 23:20:21 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Senza categoria]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=233</guid>
		<description><![CDATA[Mi faccio gli auguri da solo e festeggio con voi il mio diciassettesimo anno di vita. Sono ben 17 anni che mi programmo la vita  
Grazie a tutti coloro che già me li hanno fatti gli auguri.
Condividi\Salva Articolo]]></description>
			<content:encoded><![CDATA[<p>Mi faccio gli auguri da solo e festeggio con voi il mio diciassettesimo anno di vita. Sono ben 17 anni che mi programmo la vita <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Grazie a tutti coloro che già me li hanno fatti gli auguri.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F04%2F01%2F2010%2Fbuon-compleanno-hds619%2F&amp;linkname=Buon%20Compleanno%20HdS619%21">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/04/01/2010/buon-compleanno-hds619/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Imel 0.2.5</title>
		<link>http://www.hds619.net/blog/20/12/2009/imel-0-2-5/</link>
		<comments>http://www.hds619.net/blog/20/12/2009/imel-0-2-5/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 06:47:07 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[imel]]></category>
		<category><![CDATA[libreria grafica]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=227</guid>
		<description><![CDATA[
Pensavamo di pubblicare questa versione per l&#8217;anno nuovo, ma giorno dopo giorno le novità aumentavano e rischiava di diventare un rilascio obeso quindi per evitare difficoltà con tante novità ho deciso di pubblicare questa versione un po&#8217; grassotta ma gestibile.
Prima di proseguire ringrazio Simone Scarinzi conosciuto come &#8220;Skary&#8221; per la partecipazione e la costanza che [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-228" title="logo_imel" src="http://www.hds619.net/blog/wp-content/uploads/2009/12/logo_imel.png" alt="logo_imel" width="157" height="97" /></p>
<p>Pensavamo di pubblicare questa versione per l&#8217;anno nuovo, ma giorno dopo giorno le novità aumentavano e rischiava di diventare un rilascio obeso quindi per evitare difficoltà con tante novità ho deciso di pubblicare questa versione un po&#8217; grassotta ma gestibile.</p>
<p>Prima di proseguire ringrazio Simone Scarinzi conosciuto come &#8220;Skary&#8221; per la partecipazione e la costanza che sta avendo nell&#8217;aiuto dello sviluppo di questa libreria, a lui si devono le nuove funzioni riguardo al disegno di questa versione e l&#8217;idea di rendere disponibili funzioni che prima erano private come ad esempio imel_point_get_from_line ().</p>
<p>Le novità in questi due mesi di sviluppo sono tantissime inizio ad elencarle per ordine:</p>
<p><span id="more-227"></span><br />
<strong>Effetti</strong></p>
<ul>
<li>IMEL_EFFECT_ANTIALIAS, IMEL_EFFECT_DIRECT_ANTIALIAS: Effetti per applicare l&#8217;antialias all&#8217;immagine in modo passivo o diretto ( guardare la documentazione per maggiori dettagli ).</li>
<li>IMEL_EFFECT_IMAGE_ADD, IMEL_EFFECT_IMAGE_SUBTRACT: Sommano, o sottraggono, ad ogni pixel ( colori e livello ) dell&#8217;immagine a cui si sta applicando l&#8217;effetto i pixel ( colori e livello ) dell&#8217;immagine passata come parametro.</li>
</ul>
<p><strong>Tipi</strong></p>
<ul>
<li>ImelRef: Serve a stabilire se prendere come riferimento il colore o il livello di un&#8217;immagine.</li>
<li>ImelValue:
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 138px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Permette di capire a che tipo di misura si riferisce</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 138px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">un eventuale parametro numerico passato dopo un elemento</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 138px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">di questo tipo</div>
<p>Permette di capire a che tipo di misura si riferisce il valore numerico passato dopo questo tipo.</li>
</ul>
<p><strong>Macro</strong></p>
<ul>
<li>DEG_TO_RAD, RAD_TO_DEG: Converte da gradi a radianti e da radianti a gradi</li>
</ul>
<p><strong>Funzioni migliorate</strong></p>
<ul>
<li>imel_draw_ellipse (): migliorata, prima i punti dell&#8217;ellisse non venivano uniti in ellissi molto grandi</li>
<li>imel_draw_line (), imel_draw_dashed_line (), imel_draw_gradient_line (): Corretto un bug che disegnava a tratti la linea se i parametri riguardanti il punto iniziale e il punto finale erano di un certo tipo.</li>
<li>imel_pixel_copy (): corretta una parte che rallentava di molto la funzione in molte chiamate consecutive.</li>
<li>imel_image_apply_convolution (): corretto un bug nell&#8217;inizializzazione di una variabile locale alla funzione anche se errori dovuti a questa non inizializzazione non erano stati notati.</li>
<li>imel_font_write_string_with_truetype_font (): corretto un grave errore nella resa del carattere, in più sono stati aggiunti degli attributi opzionali nel disegno ( guardare la documentazione per sapere quali sono e come usarli ). Compatibilità con vecchie versioni mantenuta.</li>
<li>imel_draw_circle (): Prestazioni migliorate del 50%</li>
<li>imel_image_new_with_background_color (): da ora si calcola anche il livello del pixel passato per creare l&#8217;immagine</li>
</ul>
<p><strong>Funzioni nuove</strong></p>
<ul>
<li>imel_draw_filled_circle (): disegna un cerchio riempito internamente</li>
<li>imel_draw_filled_ellipse (): disegna un ellissi riempita internamente</li>
<li>imel_pixel_compare_level (): funzione simile alla vecchia imel_pixel_compare () solo che questa è appositamente per confrontare i livelli.</li>
<li>imel_image_auto_cut (): Auto-ritaglia un&#8217;immagine il bordo da considerare in più è deciso dall&#8217;utente che può stabilire se basarsi o sul colore oppure sul livello ( sempre a sua discrezione il loro valore ).</li>
<li>imel_color_get_number (): permette di ottenere il numero di colori unici presenti nell&#8217;immagine</li>
<li>imel_draw_gradient_line (): consente di disegnare una linea che ha come colore una sfumatura che va da un colore iniziale ad uno finale</li>
<li>imel_draw_gradient_curve (): come imel_draw_gradient_line () solo che disegna una curva.</li>
<li>imel_color_sum (), imel_color_subtract (): sommano o sottragono un colore ad un altro sempre rimanendo nel range di valori usabili come color ( 0 &#8211; 255 )</li>
<li>imel_image_shear (): inclina parte o tutta un&#8217;immagine verticalmente o orizzontalmente secondo il verso di una linea teorica ( guardare la documentazione per maggiori informazioni )</li>
<li>imel_image_shift (): sposta l&#8217;immagine in alto, in basso, a destra o a sinistra di un numero di pixel a scelta.</li>
<li>imel_image_new_from_raw (): funzione molto potente, permette di aprire un&#8217;immagine grezza ( raw ) di bits per pixel e bits per channel a scelta ( guardare la documentazione per maggiori informazioni ).</li>
<li>imel_draw_reg_shape (): disegna un poligono regolare all&#8217;interno di una circonferenza con un numero di vertici e un&#8217;inclinazione a scelta</li>
<li>imel_draw_partial_reg_shape (): come imel_draw_reg_shape () solo che disegna solo una parte di poligono</li>
<li>imel_image_shift_lines (): come imel_image_shift () solo che lo spostamento può essere limitato solo ad alcune linee dell&#8217;immagine</li>
<li>imel_point_get_from_line (): restituisce solo i punti e la lunghezza di una linea, i punti possono essere ottenuti tutti oppure solo una parte specificata in modo relativo tramite percentuale o in modo fisso tramite pixel.</li>
<li>imel_point_get_from_reg_shape (): restituisce i punti riguardanti i vertici di un poligono regolare inscritto in una circonferenza.</li>
<li>imel_value_convert (), imel_value_percentage_to_generic (), imel_value_pixel_to_percentage: varie funzioni di conversioni da un valore ad un altro.</li>
<li>imel_draw_arch: disegna un arco</li>
<li>imel_image_shift_bpc: permette di eseguire uno shift sui bit di uno o più canali di colore presenti in un&#8217;immagine, consente anche seguendo due shift opposti con gli stessi valori di ridurre i colori di un&#8217;immagine.</li>
<li>imel_image_remove_noise (): elimina il disturbo che può presentare un&#8217;immagine con una soglia a scelta ( guardare la documentazione )</li>
</ul>
<p>Tutte queste funzioni ( per quelle più complicate da capire e utilizzare l&#8217;ho detto già esplicitamente ) sono documentate nella documentazione online e interna al pacchetto scaricato. I link sono i seguenti:</p>
<p><a href="http://www.hds619.net/imel-pkg/imel-0.2.5.tar.bz2">http://www.hds619.net/imel-pkg/imel-0.2.5.tar.bz2</a> Pacchetto di quest&#8217;ultima versione</p>
<p><a href="http://www.hds619.net/documentation/imel">http://www.hds619.net/documentation/imel</a> Documentazione online dell&#8217;ultima versione stabile</p>
<p><a href="http://www.hds619.net/listing/imel">http://www.hds619.net/listing/imel</a> Sorgenti &#8220;sfusi&#8221; dell&#8217;ultima versione stabile</p>
<p>Buona programmazione <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F20%2F12%2F2009%2Fimel-0-2-5%2F&amp;linkname=Imel%200.2.5">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/20/12/2009/imel-0-2-5/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Premier colpito al volto, fermato un uomo ( Ansa.it )</title>
		<link>http://www.hds619.net/blog/13/12/2009/premier-colpito-al-volto-fermato-un-uomo-ansa-it/</link>
		<comments>http://www.hds619.net/blog/13/12/2009/premier-colpito-al-volto-fermato-un-uomo-ansa-it/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 17:58:22 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[berlusconi]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=217</guid>
		<description><![CDATA[MILANO &#8211; Silvio Berlusconi è stato colpito al volto da un pugno. Secondo i testimoni il premier si è accasciato per terra ed è stato immediatamente caricato in auto. Il responsabile del gesto, un uomo, è stato fermato.
[...]
CONTESTATORI URLANO, PREMIER LI ZITTISCE &#8211; Silvio Berlusconi è stato brevemente interrotto da una decina di persone che [...]]]></description>
			<content:encoded><![CDATA[<p>MILANO &#8211; Silvio Berlusconi è stato colpito al volto da un pugno. Secondo i testimoni il premier si è accasciato per terra ed è stato immediatamente caricato in auto. Il responsabile del gesto, un uomo, è stato fermato.</p>
<p>[...]</p>
<p>CONTESTATORI URLANO, PREMIER LI ZITTISCE &#8211; Silvio Berlusconi è stato brevemente interrotto da una decina di persone che contestavano mentre sta tenendo il suo discorso. Dai contestatori sono partite alcune grida tra cui &#8216;vergogna&#8217;. E la parola &#8216;vergogna&#8217; é stata ripetuta tre volte dal premier per zittirli. Al grido di alcuni contestatori, presenti in Piazza Duomo a Milano dove si sta tenendo il comizio del presidente del Consiglio Silvio Berlusconi, di &#8220;buffone, buffone&#8221;, i sostenitori del Pdl hanno risposto urlando &#8220;Silvio, Silvio&#8221;, sovrastando così le contestazioni.</p>
<p><span id="more-217"></span></p>
<p>&#8212;</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/V4Rkelm1yh8&amp;hl=it_IT&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/V4Rkelm1yh8&amp;hl=it_IT&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>&#8212;</p>
<p>Emilio fede.. hahahahaha<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/4lXMIwusovQ&amp;hl=it_IT&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/4lXMIwusovQ&amp;hl=it_IT&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/dJaZ5nzFZV8&amp;hl=it_IT&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/dJaZ5nzFZV8&amp;hl=it_IT&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
Aggiornamento [19.40]: Nome dell&#8217;&#8221;aggressore&#8221;: Massimo Tartaglia <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&#8212;</p>
<p>Hahahahahahahahahahahahahaha!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F13%2F12%2F2009%2Fpremier-colpito-al-volto-fermato-un-uomo-ansa-it%2F&amp;linkname=Premier%20colpito%20al%20volto%2C%20fermato%20un%20uomo%20%28%20Ansa.it%20%29">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/13/12/2009/premier-colpito-al-volto-fermato-un-uomo-ansa-it/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Guida gtk+ a puntate ( XXI parte )</title>
		<link>http://www.hds619.net/blog/23/11/2009/guida-gtk-a-puntate-xxi-parte/</link>
		<comments>http://www.hds619.net/blog/23/11/2009/guida-gtk-a-puntate-xxi-parte/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 17:44:47 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Guide veloci]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[guida gtk+]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=207</guid>
		<description><![CDATA[Rieccoci qua, pronti a finire l&#8217;argomento &#8220;menu&#8221;. In questa puntata più che altro vedremo delle funzioni aggiuntive per la creazione di menu, lo dico così a chi si trova già bene con le funzioni spiegate nella guida precedente può saltare la lettura e non perdere tempo  .
&#8212;
Dunque la prima funzione che andiamo a vedere [...]]]></description>
			<content:encoded><![CDATA[<p>Rieccoci qua, pronti a finire l&#8217;argomento <em>&#8220;menu&#8221;</em>. In questa puntata più che altro vedremo delle funzioni <em>aggiuntive</em> per la creazione di menu, lo dico così a chi si trova già bene con le funzioni spiegate nella guida precedente può saltare la lettura e non perdere tempo <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>&#8212;</p>
<p>Dunque la prima funzione che andiamo a vedere serve per &#8220;staccare&#8221; un menu e visualizzarlo in una finestra separata. Vediamo prima il codice, poi l&#8217;immagine di esempio:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p2074');">[<span id="p2074_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p207code4'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p2074"><td class="code" id="p207code4"><pre class="c">GtkWidget <span style="color: #339933;">*</span>
menu_tearoff_append <span style="color: #009900;">&#40;</span>GtkMenu <span style="color: #339933;">*</span> menu<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
 GtkWidget <span style="color: #339933;">*</span>widget;
&nbsp;
 widget <span style="color: #339933;">=</span> gtk_tearoff_menu_item_new <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
 gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span>, widget<span style="color: #009900;">&#41;</span>;
 gtk_widget_show <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #b1b100;">return</span> widget;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><span id="more-207"></span></p>
<p><img class="aligncenter size-full wp-image-208" title="tearoff_menu-off" src="http://www.hds619.net/blog/wp-content/uploads/2009/11/tearoff_menu-off.png" alt="tearoff_menu-off" width="417" height="250" /></p>
<p><img class="aligncenter size-full wp-image-209" title="tearoff_menu-on" src="http://www.hds619.net/blog/wp-content/uploads/2009/11/tearoff_menu-on.png" alt="tearoff_menu-on" width="417" height="250" /></p>
<p>La seconda funzione servirà per creare degli elementi del menu &#8220;controllabili&#8221; ovvero che possono ricevere un &#8220;check&#8221;:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p2075');">[<span id="p2075_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p207code5'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p2075"><td class="code" id="p207code5"><pre class="c"><span style="color: #808080; font-style: italic;">/* status: 'true'  elemento attivato
 *         'false' elemento disattivato
 */</span>
GtkWidget <span style="color: #339933;">*</span>
menu_check_append <span style="color: #009900;">&#40;</span>GtkMenu <span style="color: #339933;">*</span> menu, gboolean status, <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>label, GCallback func<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
 GtkWidget <span style="color: #339933;">*</span>widget;
&nbsp;
 widget <span style="color: #339933;">=</span> gtk_check_menu_item_new_with_label <span style="color: #009900;">&#40;</span>label<span style="color: #009900;">&#41;</span>;
 gtk_check_menu_item_set_active <span style="color: #009900;">&#40;</span>GTK_CHECK_MENU_ITEM <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>, status<span style="color: #009900;">&#41;</span>;
 gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span>, widget<span style="color: #009900;">&#41;</span>;
 gtk_widget_show <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> func <span style="color: #009900;">&#41;</span>
      g_signal_connect <span style="color: #009900;">&#40;</span>G_OBJECT <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>, <span style="color: #ff0000;">&quot;toggled&quot;</span>,
                        G_CALLBACK <span style="color: #009900;">&#40;</span>change_sections<span style="color: #009900;">&#41;</span>, <span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #b1b100;">return</span> widget;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><img class="aligncenter size-full wp-image-211" title="check menu item" src="http://www.hds619.net/blog/wp-content/uploads/2009/11/check-menu-item.png" alt="check menu item" width="427" height="41" /></p>
<p>Come sotto elemento di questo tipo abbiamo anche quelli per scegliere un elemento specifico tra un gruppo di elementi ( i così detti &#8220;radio&#8221; ), vengono gestiti come, i già affrontati, radio button. Anche di questi vediamo il codice della funzione:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p2076');">[<span id="p2076_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p207code6'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p2076"><td class="code" id="p207code6"><pre class="c"><span style="color: #808080; font-style: italic;">/* menu: il menu in cui inserire il widget
 * radio_group: l'indirizzo di un gruppo di elementi radio,
 *              l'elemento può essere inizializzato a NULL prima
 *              di essere passato per indirizzo automaticamente
 *              verrà poi impostato col gruppo dei vari elementi
 *              radio inseriti.
 * label: testo da visualizzare di fianco all'elemento radio
 * func: funzione da collegare quando viene &quot;attivato&quot; l'elemento
 * accel_group: gruppo di acceleratori
 * accel_id: tasto per l'acceleratore
 * mod_type: maschera per l'acceleratore
 * tooltip: eventuale suggerimento da visualizzare se il mouse
 *          rimane per qualche secondo sull'elemento.
 */</span>
GtkWidget <span style="color: #339933;">*</span>
menu_radio_append <span style="color: #009900;">&#40;</span>GtkMenu <span style="color: #339933;">*</span> menu, GSList <span style="color: #339933;">**</span>radio_group,
                        <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>label, GCallback func,
                        GtkAccelGroup <span style="color: #339933;">*</span>accel_group, <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> accel_id,
                        GdkModifierType mod_type, <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>tooltip<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
 GtkWidget <span style="color: #339933;">*</span>widget;
&nbsp;
 widget <span style="color: #339933;">=</span> gtk_radio_menu_item_new_with_label <span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>radio_group, label<span style="color: #009900;">&#41;</span>;
 <span style="color: #339933;">*</span>radio_group <span style="color: #339933;">=</span> gtk_radio_menu_item_get_group <span style="color: #009900;">&#40;</span>GTK_RADIO_MENU_ITEM <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;
 gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span>, widget<span style="color: #009900;">&#41;</span>;
 gtk_widget_show <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>func<span style="color: #009900;">&#41;</span>
   g_signal_connect <span style="color: #009900;">&#40;</span>G_OBJECT <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>, <span style="color: #ff0000;">&quot;activate&quot;</span>, func, <span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>accel_id <span style="color: #339933;">&amp;&amp;</span> accel_group<span style="color: #009900;">&#41;</span>
   gtk_widget_add_accelerator <span style="color: #009900;">&#40;</span>widget, <span style="color: #ff0000;">&quot;activate&quot;</span>, accel_group, accel_id, mod_type, GTK_ACCEL_VISIBLE<span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>tooltip<span style="color: #009900;">&#41;</span>
   gtk_widget_set_tooltip_text <span style="color: #009900;">&#40;</span>widget, tooltip<span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #b1b100;">return</span> widget;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><img class="aligncenter size-full wp-image-212" title="radio menu item" src="http://www.hds619.net/blog/wp-content/uploads/2009/11/radio-menu-item.png" alt="radio menu item" width="69" height="57" /></p>
<p><strong>Fine Ventunesima Puntata</strong><br />
<em>Ora che abbiamo finito con i menu, possiamo passare nelle prossime puntate alle toolbar.</em><br />
<em>Ciauz <img class="wp-smiley" src="http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" /> </em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F23%2F11%2F2009%2Fguida-gtk-a-puntate-xxi-parte%2F&amp;linkname=Guida%20gtk%2B%20a%20puntate%20%28%20XXI%20parte%20%29">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/23/11/2009/guida-gtk-a-puntate-xxi-parte/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Servizio: LYS » Aggiunto supporto a Imel</title>
		<link>http://www.hds619.net/blog/13/11/2009/servizio-lys-aggiunto-supporto-a-imel/</link>
		<comments>http://www.hds619.net/blog/13/11/2009/servizio-lys-aggiunto-supporto-a-imel/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 04:46:44 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Servizi]]></category>
		<category><![CDATA[hds619.net]]></category>
		<category><![CDATA[imel]]></category>
		<category><![CDATA[lys]]></category>
		<category><![CDATA[sorgenti]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=204</guid>
		<description><![CDATA[Il servizio presente sul mio sito LYS ha ricevuto un aggiornamento che permette il supporto all&#8217;evidenziazione dei vari tipi, macro, define e funzioni di Imel.
Condividi\Salva Articolo]]></description>
			<content:encoded><![CDATA[<p>Il servizio presente sul mio sito LYS ha ricevuto un aggiornamento che permette il supporto all&#8217;evidenziazione dei vari tipi, macro, define e funzioni di Imel.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F13%2F11%2F2009%2Fservizio-lys-aggiunto-supporto-a-imel%2F&amp;linkname=Servizio%3A%20LYS%20%C2%BB%20Aggiunto%20supporto%20a%20Imel">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/13/11/2009/servizio-lys-aggiunto-supporto-a-imel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Imel 0.2.4 un pieno di novità!</title>
		<link>http://www.hds619.net/blog/08/11/2009/imel-0-2-4-un-pieno-di-novita/</link>
		<comments>http://www.hds619.net/blog/08/11/2009/imel-0-2-4-un-pieno-di-novita/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 04:54:26 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[himages]]></category>
		<category><![CDATA[imageshack]]></category>
		<category><![CDATA[imel]]></category>
		<category><![CDATA[libreria grafica]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=200</guid>
		<description><![CDATA[
A solo un mese dal rilascio della versione 0.2.3 procede a ritmo serrato lo sviluppo di imel giunto alla versione 0.2.4. Le novità al contrario di quanto si possa pensare. dato il poco tempo passato tra le due versioni, sono tante.
Tra le più importanti ritroviamo il supporto a pkg-config così da poter compilare staticamente senza [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" style="border: 0px initial initial;" title="Logo Imel" src="http://www.hds619.net/imel/logo_imel.png" alt="" width="157" height="97" /></p>
<p>A solo un mese dal <a href="http://www.hds619.net/blog/07/10/2009/imel-0.2.3-e-qui">rilascio della versione 0.2.3</a> procede a ritmo serrato lo sviluppo di imel giunto alla versione 0.2.4. Le novità al contrario di quanto si possa pensare. dato il poco tempo passato tra le due versioni, sono tante.</p>
<p>Tra le più importanti ritroviamo il supporto a <em>pkg-config</em> così da poter compilare staticamente senza dover scrivere manualmente tutte le librerie, possibilità di tracciare un ellisse e disegnare un cerchio, in più reso possibile il disegno di una linea o una curva con un&#8217;immagine così da poter realizzare l&#8217;effetto &#8220;pennello&#8221; presente in molti programmi di grafica e tante altre funzioni.</p>
<p>E novità più importante di tutte: <strong>aggiunto il supporto al formato BMP</strong>.</p>
<p><a href="http://www.hds619.net/listing/imel/ChangeLog">Il Changelog</a> con tutte le modifiche dettagliate.</p>
<p>Colgo l&#8217;occasione per annunciare la partecipazione di una persona oltre a me a questo progetto: Simone &#8220;Skary&#8221; Scarinzi, per il momento ha aiutato nella creazione della funzione per il disegno di un ellisse ma per le prossime versioni ci regalerà altre funzioni riguardanti il disegno <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.hds619.net/imel-pkg/imel-0.2.4.tar.bz2">Link pacchetto</a> &#8211; <a href="http://www.hds619.net/documentation/imel">Link documentazione</a></p>
<p>P.s.: Il servizio HImages è stato aggiornato per avere il supporto alle bmp.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F08%2F11%2F2009%2Fimel-0-2-4-un-pieno-di-novita%2F&amp;linkname=Imel%200.2.4%20un%20pieno%20di%20novit%C3%A0%21">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/08/11/2009/imel-0-2-4-un-pieno-di-novita/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quando gli sviluppatori si scoraggiano..</title>
		<link>http://www.hds619.net/blog/04/11/2009/quando-gli-sviluppatori-si-scoraggiano/</link>
		<comments>http://www.hds619.net/blog/04/11/2009/quando-gli-sviluppatori-si-scoraggiano/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:14:10 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Programmi]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[gvfs]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=197</guid>
		<description><![CDATA[
Condividi\Salva Articolo]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="aggiornamento gvfs" src="http://www.hds619.net/HImages/Schermata-u35oR.png" alt="" width="556" height="473" /></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F04%2F11%2F2009%2Fquando-gli-sviluppatori-si-scoraggiano%2F&amp;linkname=Quando%20gli%20sviluppatori%20si%20scoraggiano..">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/04/11/2009/quando-gli-sviluppatori-si-scoraggiano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guida Gtk+ a puntate ( XX parte )</title>
		<link>http://www.hds619.net/blog/31/10/2009/guida-gtk-a-puntate-xx-parte/</link>
		<comments>http://www.hds619.net/blog/31/10/2009/guida-gtk-a-puntate-xx-parte/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 20:57:49 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Guide veloci]]></category>
		<category><![CDATA[manuale gtk]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=185</guid>
		<description><![CDATA[Bene continuiamo con i menu e le gtk+, come detto l&#8217;ultima volta, in questa puntata vediamo un po&#8217; di funzioni che ho creato tempo fa e una tecnica che uso per aggiungere un po&#8217; di elementi ai vari menu in modo semplice.
L&#8217;header aggiuntivo probabilmente richiesto sarà:
#include 
La prima che andiamo a vedere serve per inserire [...]]]></description>
			<content:encoded><![CDATA[<p>Bene continuiamo con i menu e le gtk+, come detto l&#8217;ultima volta, in questa puntata vediamo un po&#8217; di funzioni che ho creato tempo fa e una tecnica che uso per aggiungere un po&#8217; di elementi ai vari menu in modo semplice.</p>
<p>L&#8217;header aggiuntivo probabilmente richiesto sarà:<br />
#include <gdk/gdkkeysyms.h></p>
<p>La prima che andiamo a vedere serve per inserire un menu con l&#8217;icona e il testo di una GTK_STOCK:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p18512');">[<span id="p18512_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p185code12'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p18512"><td width="1%" class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code" id="p185code12"><pre class="c">GtkWidget <span style="color: #339933;">*</span>
menu_stock_append <span style="color: #009900;">&#40;</span>GtkMenu <span style="color: #339933;">*</span> menu, <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>stock_id, GCallback func,
                   GtkAccelGroup <span style="color: #339933;">*</span> accel_group, <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> accel_id,
                   GdkModifierType mod_type, <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>tooltip<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  GtkWidget <span style="color: #339933;">*</span>widget;
&nbsp;
  widget <span style="color: #339933;">=</span> gtk_image_menu_item_new_from_stock <span style="color: #009900;">&#40;</span>stock_id, accel_group<span style="color: #009900;">&#41;</span>;
  gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span>, widget<span style="color: #009900;">&#41;</span>;
  gtk_widget_show <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>func<span style="color: #009900;">&#41;</span>
    g_signal_connect <span style="color: #009900;">&#40;</span>G_OBJECT <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>, <span style="color: #ff0000;">&quot;activate&quot;</span>, func, <span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>accel_id <span style="color: #339933;">&amp;&amp;</span> accel_group<span style="color: #009900;">&#41;</span>
    gtk_widget_add_accelerator <span style="color: #009900;">&#40;</span>widget, <span style="color: #ff0000;">&quot;activate&quot;</span>, accel_group, accel_id, mod_type, GTK_ACCEL_VISIBLE<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>tooltip<span style="color: #009900;">&#41;</span>
    gtk_widget_set_tooltip_text <span style="color: #009900;">&#40;</span>widget, tooltip<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">return</span> widget;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Parametri:</p>
<ol>
<li><em>GtkMenu *menu</em>: il widget riguardante il menu in cui inserire l&#8217;elemento convertito in <strong>GtkMenu</strong> tramite la macro<strong><em> GTK_MENU</em></strong></li>
<li><strong><em><span style="font-weight: normal;">const char *stock_id</span>: </em><span style="font-weight: normal;">la GTK_STOCK scelta da inserire nel menu</span></strong></li>
<li><strong><span style="font-weight: normal;"><em>GCallback func</em>: la funzione da collegare al click sull&#8217;elemento ( oppure NULL ) convertita tramite la macro</span><em> G_CALLBACK </em></strong></li>
<li><em>GtkAccelGroup * accel_group</em>: il gruppo di acceleratori ( scorciatoie da tastiere ) in cui varranno inserite le scorciatoie di questo elemento ( ne riparliamo meglio dopo ) o NULL se non si vuole usare nessuna scorciatoia.</li>
<li><em>unsigned int accel_id</em>: il tasto da assegnare alla scorciatoia ( tipo la lettera R, anche di questo ne riparliamo meglio dopo )</li>
<li><em>GdkModifierType mod_type</em>: il tipo di &#8220;maschera&#8221; da associare alla lettera per la scorciatoia, ad esempio si può scegliere il CTRL come maschera e per richiamare la scorciatoia da tastiera con i due esempi sopra riportati dobbiamo premere CTRL + R</li>
<li><em>char *tooltip</em>: Il suggerimento da visualizzare nel caso il mouse si fermi più di un tot di secondi sull&#8217;elemento o NULL se non lo si vuole inserire.</li>
</ol>
<p>Questa funzione ritorna l&#8217;elemento che la funzione ha inserito nel menu può essere usato per disabilitare\abilitare quell&#8217;elemento, se non si deve eseguire nessuna operazione la variabile ritornata può anche essere ignorata.</p>
<p>La funzione che segue è anch&#8217;essa molto simile a quella appena mostrata, tranne per il fatto che della GTK_STOCK passata usa solo l&#8217;immagine mentre il testo può essere deciso e impostato a piacimento.</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p18513');">[<span id="p18513_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p185code13'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p18513"><td width="1%" class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="code" id="p185code13"><pre class="c">GtkWidget <span style="color: #339933;">*</span>
menu_label_with_stock_append <span style="color: #009900;">&#40;</span>GtkMenu <span style="color: #339933;">*</span> menu, <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>label,
                              <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>stock_id, GCallback func,
                              GtkAccelGroup <span style="color: #339933;">*</span> accel_group,
                              <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> accel_id, GdkModifierType mod_type, <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>tooltip<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  GtkWidget <span style="color: #339933;">*</span>widget, <span style="color: #339933;">*</span>image;
&nbsp;
  image <span style="color: #339933;">=</span> gtk_image_new_from_stock <span style="color: #009900;">&#40;</span>stock_id, GTK_ICON_SIZE_MENU<span style="color: #009900;">&#41;</span>;
  gtk_widget_show <span style="color: #009900;">&#40;</span>image<span style="color: #009900;">&#41;</span>;
&nbsp;
  widget <span style="color: #339933;">=</span> gtk_image_menu_item_new_with_label <span style="color: #009900;">&#40;</span>label<span style="color: #009900;">&#41;</span>;
  gtk_image_menu_item_set_image <span style="color: #009900;">&#40;</span>GTK_IMAGE_MENU_ITEM <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>, image<span style="color: #009900;">&#41;</span>;
  gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span>, widget<span style="color: #009900;">&#41;</span>;
  gtk_widget_show <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>func<span style="color: #009900;">&#41;</span>
    g_signal_connect <span style="color: #009900;">&#40;</span>G_OBJECT <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>, <span style="color: #ff0000;">&quot;activate&quot;</span>, func, <span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>accel_id <span style="color: #339933;">&amp;&amp;</span> accel_group<span style="color: #009900;">&#41;</span>
    gtk_widget_add_accelerator <span style="color: #009900;">&#40;</span>widget, <span style="color: #ff0000;">&quot;activate&quot;</span>, accel_group, accel_id, mod_type, GTK_ACCEL_VISIBLE<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>tooltip<span style="color: #009900;">&#41;</span>
    gtk_widget_set_tooltip_text <span style="color: #009900;">&#40;</span>widget, tooltip<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">return</span> widget;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Come si può notare riceve gli stessi i parametri, ne presenta solo uno in più tra il primo e il secondo parametro della funzione precedente. Il parametro in più richiesto è proprio quello riguardante il testo da usare per l&#8217;elemento.</p>
<p>Terza funzione che andiamo a vedere è quella per inserire un separatore di voci ( una semplice linea ) per ad esempio suddividere gruppi di elementi che fanno azioni diverse nello stesso menu.</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p18514');">[<span id="p18514_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p185code14'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p18514"><td width="1%" class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code" id="p185code14"><pre class="c">GtkWidget <span style="color: #339933;">*</span>
menu_separator_append <span style="color: #009900;">&#40;</span>GtkMenu <span style="color: #339933;">*</span> menu<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  GtkWidget <span style="color: #339933;">*</span>widget;
&nbsp;
  widget <span style="color: #339933;">=</span> gtk_separator_menu_item_new <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
  gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span>, widget<span style="color: #009900;">&#41;</span>;
  gtk_widget_show <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">return</span> widget;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>L&#8217;unico parametro che ricevere è come si può intuire il menu in cui inserire il separatore convertito con la macro <strong>GTK_MENU</strong>.</p>
<p>Ultima funzione è quella per aggiungere un menu alla barra dei menu.</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p18515');">[<span id="p18515_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p185code15'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p18515"><td width="1%" class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code" id="p185code15"><pre class="c">GtkWidget <span style="color: #339933;">*</span>
menu_append <span style="color: #009900;">&#40;</span>GtkMenuBar <span style="color: #339933;">*</span> bar, GtkWidget <span style="color: #339933;">*</span> menu, <span style="color: #993333;">const</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>name, <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>tooltip<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  GtkWidget <span style="color: #339933;">*</span>widget;
&nbsp;
  widget <span style="color: #339933;">=</span> gtk_menu_item_new_with_label <span style="color: #009900;">&#40;</span>name<span style="color: #009900;">&#41;</span>;
  gtk_widget_show <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>;
&nbsp;
  gtk_menu_item_set_submenu <span style="color: #009900;">&#40;</span>GTK_MENU_ITEM <span style="color: #009900;">&#40;</span>widget<span style="color: #009900;">&#41;</span>, menu<span style="color: #009900;">&#41;</span>;
  gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>bar<span style="color: #009900;">&#41;</span>, widget<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>tooltip<span style="color: #009900;">&#41;</span>
    gtk_widget_set_tooltip_text <span style="color: #009900;">&#40;</span>widget, tooltip<span style="color: #009900;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">return</span> widget;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Il primo parametro è la barra dei menu in cui inserirlo, il secondo è il menu, il terzo il nome da dare al menu e come ultimo, opzionale, il suggerimento da dare quando il mouse si ferma sul menu oppure NULL.</p>
<p>Prima di andare a vedere come utilizzare bene queste funzioni, faccio una piccola spiegazione delle scorciatoie da tastiera.</p>
<p>Bene, innanzitutto nel mondo Gtk+ le scorciatoie vengono chiamate acceleratori così da poterle chiamare in modo giusto. Questi acceleratori vengono inseriti in uno o più gruppi chiamati <strong>GtkAccelGroup</strong>, questi gruppi sono utili ad esempio per abilitare o disabilitare acceleratori in massa, ad esempio si può avere un gruppo di acceleratori riguardanti certe voci che vanno in contrasto con gli acceleratori di un altro gruppo e quindi effettuare le verifichè per far sì che quando uno dei due è abilitato l&#8217;altro sia disattivato.</p>
<p>Gli acceleratori son composti principalmente da due parti, il tasto da premere per attivarlo e la maschera da utilizzare per intercettarlo.. esempio pratico come detto più su:</p>
<ul>
<li><strong>TASTO:</strong> GDK_R</li>
<li><strong>MASK</strong>: GDK_CONTROL_MASK</li>
<li><strong>COMBINAZIONE PER ATTIVARE LA SCORCIATOIA</strong>: Ctrl + R</li>
</ul>
<p>L&#8217;elenco dei nomi per le costanti che definiscono i tasti potete trovarli qui: <a href="http://www.koders.com/c/fidD9E5E78FD91FE6ABDD6D3F78DA5E4A0FADE79933.aspx">http://www.koders.com/c/fidD9E5E78FD91FE6ABDD6D3F78DA5E4A0FADE79933.aspx</a> ( comunque alcuni caratteri possono essere inseriti tramite il loro valore ascii, ad esempio <em>GDK_A</em> è uguale ad<em> &#8216;A&#8217; </em>)</p>
<p>Principali maschere utilizzabili: GDK_SHIFT_MASK ( Shift), GDK_CONTROL_MASK ( Control ), GDK_MOD1_MASK ( Alt ), GDK_SUPER_MASK ( Il tastino su cui purtroppo c&#8217;è il simbolo di windows, o di una casetta sugli eeepc ). Per altre vi rimando al link del tipo <strong>GtkModifierType</strong>: <a href="http://library.gnome.org/devel/gdk/unstable/gdk-Windows.html#GdkModifierType">http://library.gnome.org/devel/gdk/unstable/gdk-Windows.html#GdkModifierType</a></p>
<p>Bene dopo questa premessa sugli acceleratori passiamo alla tecnica per utilizzare queste funzioni in modo semplice.</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p18516');">[<span id="p18516_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p185code16'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p18516"><td width="1%" class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</pre></td><td class="code" id="p185code16"><pre class="c"><span style="color: #339933;">#include &lt;gtk/gtk.h&gt;</span>
<span style="color: #339933;">#include &lt;gdk/gdkkeysyms.h&gt;</span>
<span style="color: #339933;">#include &quot;funzioni_sopra_elencate.h&quot;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* window sarà il widget della finestra in cui inserire i menu
 * mentre container sarà il widget contenitore in cui 
 * andremo ad inserire il menu, dovrà essere passato
 * usando la macro GTK_CONTAINER
 */</span>
<span style="color: #993333;">void</span> menu_new <span style="color: #009900;">&#40;</span>GtkWindow <span style="color: #339933;">*</span>window, GtkContainer <span style="color: #339933;">*</span>container<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
 GtkAccelGroup <span style="color: #339933;">*</span>group;
 GtkWidget <span style="color: #339933;">*</span>main_menu, <span style="color: #339933;">*</span>file_list, <span style="color: #339933;">*</span>edit_list;
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Creo la barra dei menu */</span>
 main_menu <span style="color: #339933;">=</span> gtk_menu_bar_new <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Creo il gruppo di acceleratori */</span>
 group <span style="color: #339933;">=</span> gtk_accel_group_new <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
 gtk_window_add_accel_group <span style="color: #009900;">&#40;</span>window, group<span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Creo il menu File */</span>
 file_list <span style="color: #339933;">=</span> gtk_menu_new <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
   <span style="color: #808080; font-style: italic;">/* -- */</span>
 menu_stock_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>file_list<span style="color: #009900;">&#41;</span>, GTK_STOCK_NEW, <span style="color: #000000; font-weight: bold;">NULL</span>, group,
                    GDK_N, GDK_CONTROL_MASK, <span style="color: #ff0000;">&quot;Crea un nuovo file&quot;</span><span style="color: #009900;">&#41;</span>;
 menu_stock_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>file_list<span style="color: #009900;">&#41;</span>, GTK_STOCK_OPEN, <span style="color: #000000; font-weight: bold;">NULL</span>, group,
                    GDK_O, GDK_CONTROL_MASK, <span style="color: #ff0000;">&quot;Apri un file&quot;</span><span style="color: #009900;">&#41;</span>;
 menu_stock_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>file_list<span style="color: #009900;">&#41;</span>, GTK_STOCK_SAVE, <span style="color: #000000; font-weight: bold;">NULL</span>, group,
                    GDK_S, GDK_CONTROL_MASK, <span style="color: #ff0000;">&quot;Salva il file&quot;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 menu_separator_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>file_list<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 menu_label_with_stock_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>file_list<span style="color: #009900;">&#41;</span>, <span style="color: #ff0000;">&quot;Stampa Documento&quot;</span>,
                               GTK_STOCK_PRINT, <span style="color: #000000; font-weight: bold;">NULL</span>, group, GDK_P, 
                               GDK_CONTROL_MASK, <span style="color: #ff0000;">&quot;Stampa il file&quot;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 menu_separator_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>file_list<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 menu_stock_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>file_list<span style="color: #009900;">&#41;</span>, GTK_STOCK_QUIT, <span style="color: #000000; font-weight: bold;">NULL</span>, group,
                    GDK_Q, GDK_CONTROL_MASK, <span style="color: #ff0000;">&quot;Esci dal programma&quot;</span><span style="color: #009900;">&#41;</span>;
   <span style="color: #808080; font-style: italic;">/* -- */</span> 
 menu_append <span style="color: #009900;">&#40;</span>GTK_MENU_BAR <span style="color: #009900;">&#40;</span>main_menu<span style="color: #009900;">&#41;</span>, file_list, <span style="color: #ff0000;">&quot;File&quot;</span>, <span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Creo il menu Modifica */</span>
 edit_list <span style="color: #339933;">=</span> gtk_menu_new <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
   <span style="color: #808080; font-style: italic;">/* -- */</span>
 menu_stock_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>edit_list<span style="color: #009900;">&#41;</span>, GTK_STOCK_COPY, <span style="color: #000000; font-weight: bold;">NULL</span>, group,
                    GDK_C, GDK_CONTROL_MASK, <span style="color: #ff0000;">&quot;Copia testo&quot;</span><span style="color: #009900;">&#41;</span>;
 menu_stock_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>edit_list<span style="color: #009900;">&#41;</span>, GTK_STOCK_CUT, <span style="color: #000000; font-weight: bold;">NULL</span>, group,
                    GDK_X, GDK_CONTROL_MASK, <span style="color: #ff0000;">&quot;Taglia testo&quot;</span><span style="color: #009900;">&#41;</span>;
 menu_stock_append <span style="color: #009900;">&#40;</span>GTK_MENU <span style="color: #009900;">&#40;</span>edit_list<span style="color: #009900;">&#41;</span>, GTK_STOCK_PASTE, <span style="color: #000000; font-weight: bold;">NULL</span>, group,
                    GDK_V, GDK_CONTROL_MASK, <span style="color: #ff0000;">&quot;Incolla testo&quot;</span><span style="color: #009900;">&#41;</span>;
   <span style="color: #808080; font-style: italic;">/* -- */</span>
 menu_append <span style="color: #009900;">&#40;</span>GTK_MENU_BAR <span style="color: #009900;">&#40;</span>main_menu<span style="color: #009900;">&#41;</span>, edit_list, <span style="color: #ff0000;">&quot;Modifica&quot;</span>, <span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span>;
&nbsp;
 <span style="color: #808080; font-style: italic;">/* Inseriamo la barra comprensiva di menu all'interno del contenitore passato */</span>
 gtk_container_add <span style="color: #009900;">&#40;</span>container, main_menu<span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* Così è molto più immediato creare menu di grosse dimensioni anche
 * se nei casi più specifici si può migliorare ancora il codice e la sua
 * gestione 
 */</span></pre></td></tr></table></div>

<p><strong>Fine Ventesima Puntata</strong><br />
<em>Abbiam quasi finito con i menu, c&#8217;è ancora qualche funzione da descrivere ma siamo già a buon punto. Questa puntata è importante in quanto ho finalmente affrontato anche l&#8217;argomento degli acceleratori. Alla prossima, spero non tardi.</em><br />
<em>Ciauz <img src="http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif" class="wp-smiley" alt=";)" /> </em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F31%2F10%2F2009%2Fguida-gtk-a-puntate-xx-parte%2F&amp;linkname=Guida%20Gtk%2B%20a%20puntate%20%28%20XX%20parte%20%29">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/31/10/2009/guida-gtk-a-puntate-xx-parte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Addio fauna africana</title>
		<link>http://www.hds619.net/blog/31/10/2009/addio-fauna-africana/</link>
		<comments>http://www.hds619.net/blog/31/10/2009/addio-fauna-africana/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 10:43:19 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=180</guid>
		<description><![CDATA[Avevo installato karmic koala in una partizione dedicata per provarla già dall&#8217;alpha 5.. nessun problema oltre alla resa dei caratteri del sistema peggiorata e l&#8217;audio che funzionava a random.
L&#8217;altro giorno speranzoso ho fatto l&#8217;aggiornamento dal sistema che uso quotidianamente ( ubuntu 9.04 )&#8230; la resa dei caratteri ancora più brutta, l&#8217;audio non riconosce manco una [...]]]></description>
			<content:encoded><![CDATA[<p>Avevo installato karmic koala in una partizione dedicata per provarla già dall&#8217;alpha 5.. nessun problema oltre alla resa dei caratteri del sistema peggiorata e l&#8217;audio che funzionava a random.<br />
L&#8217;altro giorno speranzoso ho fatto l&#8217;aggiornamento dal sistema che uso quotidianamente ( ubuntu 9.04 )&#8230; la resa dei caratteri ancora più brutta, l&#8217;audio non riconosce manco una delle due schede audio che ho, l&#8217;ultimo kernel non riesce ad avviarsi e nemmeno a caricare i driver nvidia ( rimango in un terminale virtuale a veder sfarfallare il testo ), il disco appena entro nel mio account vedo che lavora in maniera assurda i primi 5 secondi, l&#8217;avvio rispetto a prima è molto ma molto più lento.. non aggiungo commenti.</p>
<p>Quindi, dopo questa brutta esperienza, dopo l&#8217;impressione negativa che ho descritto in un altro post che mi ha dato la linea che seguirà ubuntu, * censured *, ho deciso di fare una cosa che avrei dovuto fare molto tempo fa..<br />
Devo dire che mi dispiace un po&#8217;, perchè utilizzo ubuntu dalla 6.06, però ormai è diventato necessario. Passo a debian. L&#8217;avevo lasciata un annetto fa perchè non aveva le librerie e il software aggiornato che mi serviva e non avevo voglia di ricompilarmi tutto a manina o passare a sid\experimental tanto valeva andare su ubuntu che aveva un buon rapporto stabilità\software aggiornato, ora però che lenny è stata rilasciata e ci ritotroviamo da un po&#8217; di tempo con squeeze ho visto che anche lì son passati a software più aggiornato o almeno quanto basta per me così da poter programmare in pace.</p>
<p>Utilizzatori di ubuntu non me ne vogliate <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Utilizzatori di windows non spaventatevi <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F31%2F10%2F2009%2Faddio-fauna-africana%2F&amp;linkname=Addio%20fauna%20africana">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/31/10/2009/addio-fauna-africana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Day 2009 – Ferrara</title>
		<link>http://www.hds619.net/blog/24/10/2009/linux-day-2009-ferrara/</link>
		<comments>http://www.hds619.net/blog/24/10/2009/linux-day-2009-ferrara/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 12:36:37 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Recensioni]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=175</guid>
		<description><![CDATA[Di ritorno dal linux day 2009 tenuto a ferrara, quasi 4 ore di conferenze varie ( quelle del pomeriggio ho preferito saltarle dato che non mi interessavano ) devo dire che sono stato piacevolmente sorpreso dal numero di persone che hanno partecipato e dalla rete wireless dell&#8217;università in cui si è tenuto XD.
Gli interventi più [...]]]></description>
			<content:encoded><![CDATA[<p>Di ritorno dal linux day 2009 tenuto a ferrara, quasi 4 ore di conferenze varie ( quelle del pomeriggio ho preferito saltarle dato che non mi interessavano ) devo dire che sono stato piacevolmente sorpreso dal numero di persone che hanno partecipato e dalla rete wireless dell&#8217;università in cui si è tenuto XD.<br />
<img class="alignleft size-medium wp-image-176" title="tux" src="http://www.hds619.net/blog/wp-content/uploads/2009/10/tux-252x300.jpg" alt="tux" width="252" height="300" />Gli interventi più interessanti son stati quelli sul software libero e sul cloud computing. L&#8217;intervento sul video editing con kdenlive e cinelerra è stato invece noiosissimo, soprattutto perchè cinelerra è un programma che odio che infatti ha dimostrato la sua (in)stabilità crashando a metà conferenza, per fortuna il lavoro che stavano facendo per mostrare il suo utilizzo è stato recuperato senza problemi in qualche minuto.<br />
Non posso fare giudizi generali e confronti per il fatto che è stato il primo Linux Day a cui andavo, devo dire che è stato carino meglio di quanto mi aspettavo a causa di come me ne avevano parlato alcuni miei contatti.</p>
<p>Bye <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F24%2F10%2F2009%2Flinux-day-2009-ferrara%2F&amp;linkname=Linux%20Day%202009%20%26%238211%3B%20Ferrara">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/24/10/2009/linux-day-2009-ferrara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dettagli…</title>
		<link>http://www.hds619.net/blog/15/10/2009/dettagli/</link>
		<comments>http://www.hds619.net/blog/15/10/2009/dettagli/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 18:00:21 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Momenti Pensierosi]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=173</guid>
		<description><![CDATA[Tutti sono eguali dinanzi alla legge e hanno diritto, senza alcuna discriminazione, ad una eguale tutela da parte della legge. Tutti hanno diritto ad una eguale tutela contro ogni discriminazione che violi la presente Dichiarazione come contro qualsiasi incitamento a tale discriminazione. (Art. 7)
&#8212;
Nessun individuo potrà essere arbitrariamente arrestato, detenuto o esiliato. (Art. 9)
&#8212;
Ogni individuo [...]]]></description>
			<content:encoded><![CDATA[<p>Tutti sono eguali dinanzi alla legge e hanno diritto, senza alcuna discriminazione, ad una eguale tutela da parte della legge. Tutti hanno diritto ad una eguale tutela contro ogni discriminazione che violi la presente Dichiarazione come contro qualsiasi incitamento a tale discriminazione. (Art. 7)<br />
&#8212;<br />
Nessun individuo potrà essere arbitrariamente arrestato, detenuto o esiliato. (Art. 9)<br />
&#8212;<br />
Ogni individuo ha diritto, in posizione di piena uguaglianza, ad una equa e pubblica udienza davanti ad un tribunale indipendente e imparziale, al fine della determinazione dei suoi diritti e dei suoi doveri, nonché della fondatezza di ogni accusa penale che gli venga rivolta. (Art. 10)<br />
&#8212;<br />
Ogni individuo accusato di un reato è presunto innocente sino a che la sua colpevolezza non sia stata provata legalmente in un pubblico processo nel quale egli abbia avuto tutte le garanzie necessarie per la sua difesa.<br />
Nessun individuo sarà condannato per un comportamento commissivo od omissivo che, al momento in cui sia stato perpetrato, non costituisse reato secondo il diritto interno o secondo il diritto internazionale. Non potrà del pari essere inflitta alcuna pena superiore a quella applicabile al momento in cui il reato sia stato commesso. (Art. 11)<br />
&#8212;<br />
Ogni individuo ha diritto alla libertà di movimento e di residenza entro i confini di ogni Stato.<br />
Ogni individuo ha diritto di lasciare qualsiasi paese, incluso il proprio, e di ritornare nel proprio paese. (Art. 13)<br />
&#8212;<br />
Ogni individuo ha diritto ad una cittadinanza.<br />
Nessun individuo potrà essere arbitrariamente privato della sua cittadinanza, né del diritto di mutare cittadinanza. (Art. 15)<br />
&#8212;<br />
Ogni individuo ha diritto alla libertà di pensiero, di coscienza e di religione; tale diritto include la libertà di cambiare di religione o di credo, e la libertà di manifestare, isolatamente o in comune, e sia in pubblico che in privato, la propria religione o il proprio credo nell&#8217;insegnamento, nelle pratiche, nel culto e nell&#8217;osservanza dei riti. (Art. 18)<br />
&#8212;<br />
Ogni individuo ha diritto al lavoro, alla libera scelta dell&#8217;impiego, a giuste e soddisfacenti condizioni di lavoro ed alla protezione contro la disoccupazione.<br />
Ogni individuo, senza discriminazione, ha diritto ad eguale retribuzione per eguale lavoro.<br />
Ogni individuo che lavora ha diritto ad una remunerazione equa e soddisfacente che assicuri a lui stesso e alla sua famiglia una esistenza conforme alla dignità umana ed integrata, se necessario, da altri mezzi di protezione sociale.<br />
Ogni individuo ha diritto di fondare dei sindacati e di aderirvi per la difesa dei propri interessi. (Art. 23)</p>
<p><i> Ma alla fine cosa vuoi che importi? .. </i></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F15%2F10%2F2009%2Fdettagli%2F&amp;linkname=Dettagli%26%238230%3B">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/15/10/2009/dettagli/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Imel Feature and Bug Tracking</title>
		<link>http://www.hds619.net/blog/08/10/2009/imel-feature-and-bug-tracking/</link>
		<comments>http://www.hds619.net/blog/08/10/2009/imel-feature-and-bug-tracking/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 18:04:50 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[feature]]></category>
		<category><![CDATA[imel]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=170</guid>
		<description><![CDATA[Nato un sistema per il tracciamento di bug o feature richieste in Imel.
Ogni utente una volta registrato potrà aggiungere e segnalare una feature o un bug, votare altri task, commentare e proporre soluzioni o altro ai bug.
Il tutto viene gestito dal software flyspray. Il sistema di tracciamente può essere trovato qui: http://www.hds619.net/bug-tracker
Bye  
Condividi\Salva Articolo]]></description>
			<content:encoded><![CDATA[<p>Nato un sistema per il tracciamento di bug o feature richieste in Imel.</p>
<p>Ogni utente una volta registrato potrà aggiungere e segnalare una feature o un bug, votare altri task, commentare e proporre soluzioni o altro ai bug.</p>
<p>Il tutto viene gestito dal software flyspray. Il sistema di tracciamente può essere trovato qui: <a href="http://www.hds619.net/bug-tracker">http://www.hds619.net/bug-tracker</a></p>
<p>Bye <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F08%2F10%2F2009%2Fimel-feature-and-bug-tracking%2F&amp;linkname=Imel%20Feature%20and%20Bug%20Tracking">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/08/10/2009/imel-feature-and-bug-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aggiornamento HImages</title>
		<link>http://www.hds619.net/blog/07/10/2009/aggiornamento-himages/</link>
		<comments>http://www.hds619.net/blog/07/10/2009/aggiornamento-himages/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 04:21:49 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[himages]]></category>
		<category><![CDATA[imel]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=168</guid>
		<description><![CDATA[Il programma che crea le anteprime e applica i vari effetti che è alla base di himages è stato aggiornato con la nuova versione di imel. Ora supporta pienamente le png con la trasparenza.
Good hosting  
Condividi\Salva Articolo]]></description>
			<content:encoded><![CDATA[<p>Il programma che crea le anteprime e applica i vari effetti che è alla base di himages è stato aggiornato con la nuova versione di imel. Ora supporta pienamente le png con la trasparenza.</p>
<p>Good hosting <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F07%2F10%2F2009%2Faggiornamento-himages%2F&amp;linkname=Aggiornamento%20HImages">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/07/10/2009/aggiornamento-himages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Imel 0.2.3 è qui!</title>
		<link>http://www.hds619.net/blog/07/10/2009/imel-0-2-3-e-qui/</link>
		<comments>http://www.hds619.net/blog/07/10/2009/imel-0-2-3-e-qui/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 04:00:52 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programmi]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[imel]]></category>
		<category><![CDATA[libreria grafica]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=161</guid>
		<description><![CDATA[Non scrivo da tempo sul blog, ultimamente ( specialmente le persone con cui chatto di solito ) avrete notato che son sparito dalla circolazione. Oltre ad avere poco tempo ( lo so è una scusa stupida ) avevo voglia di staccare un po&#8217; la spina, ed è quello che ho fatto. Nelle ultime settimane ho [...]]]></description>
			<content:encoded><![CDATA[<p>Non scrivo da tempo sul blog, ultimamente ( specialmente le persone con cui chatto di solito ) avrete notato che son sparito dalla circolazione. Oltre ad avere poco tempo ( lo so è una scusa stupida ) avevo voglia di staccare un po&#8217; la spina, ed è quello che ho fatto. Nelle ultime settimane ho utilizzato il computer solo per programmare qualcosina, rispondere a qualche e-mail e per ascoltare musica.</p>
<p>Comunque programmando poco per volta è nata sotto le mie mani la nuova versione di Imel, tra le novità principali un supporto alla trasparenza migliorato generalmente e anche il suo supporto alle immagini png che ora vengono lette e salvate anche con la trasparenza. Altra novità importante è la riscrittura della funzione per disegnare una linea che non si basa più su quella per disegnare una curva ma utilizza un suo algoritmo molto più snello, semplice e veloce. Altre novità le potete leggere nel <a href="http://www.hds619.net/listing/imel/ChangeLog">ChangeLog</a>.</p>
<p><img class="alignnone" title="Logo Imel" src="http://www.hds619.net/imel/logo_imel.png" alt="" width="157" height="97" /></p>
<p><a href="http://www.hds619.net/imel-pkg/imel-0.2.3.tar.bz2">Link al pacchetto</a> -<a href="http://www.hds619.net/documentation/imel/index.html"> Link Documentazione</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F07%2F10%2F2009%2Fimel-0-2-3-e-qui%2F&amp;linkname=Imel%200.2.3%20%C3%A8%20qui%21">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/07/10/2009/imel-0-2-3-e-qui/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mi inizio a vergognare di usare ubuntu…</title>
		<link>http://www.hds619.net/blog/15/09/2009/mi-inizio-a-vergognare-di-usare-ubuntu/</link>
		<comments>http://www.hds619.net/blog/15/09/2009/mi-inizio-a-vergognare-di-usare-ubuntu/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 07:16:55 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Recensioni]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=159</guid>
		<description><![CDATA[Dopo aver visto qualche giorno fa questo articolo su TuxJournal, dapprima la mia esclamazione fu &#8220;che schifo&#8221;.. ma ci ho ripensato in questi giorni, e devo dire che l&#8217;esclamazione più giusta è &#8220;che schifo, dove andremo a finire?&#8221;.
Per carità, sono il primo che è felice quando escono programmi con interfaccia grafica che ti evitano di [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo aver visto qualche giorno fa <a href="http://www.tuxjournal.net/?p=9406">questo articolo</a> su TuxJournal, dapprima la mia esclamazione fu &#8220;che schifo&#8221;.. ma ci ho ripensato in questi giorni, e devo dire che l&#8217;esclamazione più giusta è &#8220;<em>che schifo,</em> dove andremo a finire?&#8221;.</p>
<p>Per carità, sono il primo che è felice quando escono programmi con interfaccia grafica che ti evitano di usare il terminale, non sono un patito della tastiera ( a meno che non si tratta di programmazione ) e ben vengano click in più che aiutano i tendini della mia mano ad andare in crisi tra qualche anno. Ma ad un certo punto poi si esagera.</p>
<p>Soprattutto se devo ritrovarmi installazioni del genere che fanno tanto &#8220;Windows eXPerience&#8221;, della serie &#8220;Da oggi più sicuro, veloce e facile da usare!&#8221;.. Frasi che si commentano da sole e che sanno tanto da presa per il culo. Per il momento ho deciso che me ne sbatterò e farò l&#8217;upgrade alla prossima versione, ma se deve continuare così quest&#8217;<em>utontontimento</em> di ubuntu penso che ritornerò allegramente a Debian testing\sid.</p>
<p>E che cazz!</p>
<p>P.s.: Sembra una sfogo solo riguardante l&#8217;interfaccia grafica, ma in realtà questa è solo la punta dell&#8217;iceberg di tante piccole cose che si sono andate accumulando in questi anni.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F15%2F09%2F2009%2Fmi-inizio-a-vergognare-di-usare-ubuntu%2F&amp;linkname=Mi%20inizio%20a%20vergognare%20di%20usare%20ubuntu%26%238230%3B">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/15/09/2009/mi-inizio-a-vergognare-di-usare-ubuntu/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Odio profondamente…</title>
		<link>http://www.hds619.net/blog/11/09/2009/odio-profondamente/</link>
		<comments>http://www.hds619.net/blog/11/09/2009/odio-profondamente/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 04:54:53 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Filosofia spicciola]]></category>
		<category><![CDATA[Momenti Pensierosi]]></category>
		<category><![CDATA[Momenti senza nulla da fare]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=156</guid>
		<description><![CDATA[&#8230;chi non legge mai un README di un programma e si lamenta se non si installa
&#8230;chi inquina e spamma sul web per fare domande su programmi o servizi la cui domanda si trova nelle prime 10 domande delle FAQ
&#8230;chi non prova nemmeno a cercare 2 secondi da solo la soluzione al proprio problema prima di [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;chi non legge mai un README di un programma e si lamenta se non si installa</p>
<p>&#8230;chi inquina e spamma sul web per fare domande su programmi o servizi la cui domanda si trova nelle prime 10 domande delle FAQ</p>
<p>&#8230;chi non prova nemmeno a cercare 2 secondi da solo la soluzione al proprio problema prima di chiedere</p>
<p>&#8230;chi chiede aiuto e dopo 10 minuti riesce a risolvere da solo</p>
<p>&#8230;chi chiede aiuto e non ascolta le risposte</p>
<p>&#8230;chi bolla un programma come &#8220;inutile&#8221; o &#8220;non funzionante&#8221; solo perchè deve fare un click in più per fare ciò che vuole</p>
<p>&#8230;chiunque sminuisca il lavoro degli altri, importante o inutile che sia</p>
<p>&#8230;chi non aiuta, non pensando che forse senza coloro che aiutano non saprebbe ciò che sa adesso</p>
<p>&#8230;i gruppi che si autocompiacciono del proprio lavoro e etichettano come incapace chiunque gli dia consigli per migliorarlo</p>
<p>&#8230;chi non dà soddisfazioni</p>
<p>&#8230;chi si lamenta se qualcosa in una comunità va male, ma è il primo a non fare nulla per migliorare la situazione</p>
<p>&#8230;chi fornisce la così detta &#8220;pappa pronta&#8221; togliendo ogni gusto di sperimentare</p>
<p>&#8230;chi si rassegna</p>
<p>&#8230;chi odia e forse odio anche me stesso, ma solamente odiando e incazzandosi contro qualcosa si riesce veramente a creare qualcosa di nuovo, a sconvolgere il normale equilibrio della vita quotidiana trasformato in monotonia e arrendevolezza.<br />
Ammiro chi sa di combattere per una causa persa in partenza o in una battaglia senza fine ma sa anche che combattendola giorno per giorno forse, alla fin fine riesce veramente a migliorare le cose.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F11%2F09%2F2009%2Fodio-profondamente%2F&amp;linkname=Odio%20profondamente%26%238230%3B">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/11/09/2009/odio-profondamente/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Aggiornamento versione Wordpress</title>
		<link>http://www.hds619.net/blog/10/09/2009/aggiornamento-versione-wordpress/</link>
		<comments>http://www.hds619.net/blog/10/09/2009/aggiornamento-versione-wordpress/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 15:02:55 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/?p=153</guid>
		<description><![CDATA[Salve a tutti, scrivo questo post per informare che ho aggiornato la versione di wordpress utilizzata da questo blog alla versione 2.8.4 oltre a ciò ho disabilitato il plugin che permetteva di rispondere ai commenti e visualizzare i commenti a cascata in quanto li inseriva sballati rispetto al layout del blog, per questo motivo i [...]]]></description>
			<content:encoded><![CDATA[<p>Salve a tutti, scrivo questo post per informare che ho aggiornato la versione di wordpress utilizzata da questo blog alla versione 2.8.4 oltre a ciò ho disabilitato il plugin che permetteva di rispondere ai commenti e visualizzare i commenti a cascata in quanto li inseriva sballati rispetto al layout del blog, per questo motivo i commenti ora saranno tutti sullo stesso livello uno sotto l&#8217;altro, dal meno recente al più recente ed eventuali commenti inseriti nei vecchi articoli col vecchio sistema a cascata sono stati automaticamente riordinati quindi potreste trovare qualche piccola difficolta a leggere i commenti di 3/4 puntate delle gtk+.</p>
<p>Per il resto non penso ci siano altre &#8220;controindicazioni&#8221;.</p>
<p>Ciauz <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>P.s.:  Applicato anche un nuovo tema, purtroppo a larghezza fissa ma molto più riposante per gli occhi.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F10%2F09%2F2009%2Faggiornamento-versione-wordpress%2F&amp;linkname=Aggiornamento%20versione%20Wordpress">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/10/09/2009/aggiornamento-versione-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guida gtk+ a puntate ( XIX parte )</title>
		<link>http://www.hds619.net/blog/10/09/2009/guida-gtk-a-puntate-xix-parte/</link>
		<comments>http://www.hds619.net/blog/10/09/2009/guida-gtk-a-puntate-xix-parte/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 23:05:24 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Guide veloci]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[manuale gtk]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/10/09/2009/guida-gtk-a-puntate-xix-parte/</guid>
		<description><![CDATA[Come promesso qualche giorno fa ecco la guida alle gtk+ riguardante i menu, questa lezione sarà un po&#8217; diversa in quanto invece di spiegare solamente le singole funzioni o eventuali particolari che tralascerò mi concentrerò sul spiegare passo passo la creazione di un menu facendo riferimento allo stile che adotto io per crearli ( una [...]]]></description>
			<content:encoded><![CDATA[<p>Come promesso qualche giorno fa ecco la guida alle gtk+ riguardante i menu, questa lezione sarà un po&#8217; diversa in quanto invece di spiegare solamente le singole funzioni o eventuali particolari che tralascerò mi concentrerò sul spiegare passo passo la creazione di un menu facendo riferimento allo stile che adotto io per crearli ( una volta poi studiate e capite le funzioni ognuno sarà libero di creare un proprio stile con cui si trova meglio ).
<p style="text-align: center"><strong><em>Costruiamo un semplice menu </em></strong></p>
<p style="text-align: left">Prima di iniziare con menu più articolati vorrei iniziare con un piccolissimo menu giusto per vedere le funzioni principali. Per iniziare abbiamo bisogno dei seguenti widget:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p15120');">[<span id="p15120_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p151code20'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p15120"><td width="1%" class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p151code20"><pre class="c"> GtkWidget <span style="color: #339933;">*</span>window;
 GtkWidget <span style="color: #339933;">*</span>bar;
 GtkWidget <span style="color: #339933;">*</span>file, <span style="color: #339933;">*</span>view, <span style="color: #339933;">*</span>help;</pre></td></tr></table></div>

<p style="text-align: left">Dunque, innanzitutto bisogna creare la barra in cui memorizzare i singoli menu, l&#8217;unica funzione utilizzabile è <em>gtk_menu_bar_new ()</em>  che non riceve argomenti e restituisce il widget che punta alla nuova barra di menu. Una barra di menu può avere come attributo il tipo di ordinamento dei vari widget che può essere uno dei seguenti:</p>
<ul>
<li><strong>GTK_PACK_DIRECTION_LTR</strong> -&gt; Le varie voci del menu saranno messe da sinistra verso destra ( quando non si imposta nessuna di queste opzioni questo è il comportamento predefinito ).</li>
<li><strong>GTK_PACK_DIRECTION_RTL</strong> -&gt; Le voci saranno orientate da destra verso sinistra.</li>
<li><strong>GTK_PACK_DIRECTION_TTB</strong> -&gt; Le voci saranno orientate dall&#8217;alto verso il basso.</li>
<li><strong>GTK_PACK_DIRECTION_BTT</strong> -&gt; Le voci saranno orientate dal basso verso l&#8217;alto.</li>
</ul>
<p>Una volta scelto il tipo di orientamento che si vuol dare agli elementi si può utilizzare la funzione <em>gtk_menu_bar_set_pack_direction ()</em> nel seguente modo:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p15121');">[<span id="p15121_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p151code21'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p15121"><td width="1%" class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p151code21"><pre class="c"> bar <span style="color: #339933;">=</span> gtk_menu_bar_new <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
 gtk_menu_bar_set_pack_direction <span style="color: #009900;">&#40;</span>GTK_MENU_BAR <span style="color: #009900;">&#40;</span>bar<span style="color: #009900;">&#41;</span>, GTK_PACK_DIRECTION_BTT<span style="color: #009900;">&#41;</span>;</pre></td></tr></table></div>

<p>Siamo ancora all&#8217;inizio del lavoro, perchè ora dovremo creare: i menu grafici principali ( quelli che si vedono nella barra dei menu ) e i menu astratti ognuno dei quali bisognerà collegarlo a un menu grafico principale così da poter inserire gli elementi ( o meglio le operazioni ) di ogni singolo menu. Dunque partiamo con solo una barra di menu con i menu grafici senza sotto-menu:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p15122');">[<span id="p15122_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p151code22'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p15122"><td width="1%" class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p151code22"><pre class="c"> file <span style="color: #339933;">=</span> gtk_menu_item_new_with_label <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;File&quot;</span><span style="color: #009900;">&#41;</span>;
 gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>bar<span style="color: #009900;">&#41;</span>, file<span style="color: #009900;">&#41;</span>;
&nbsp;
 view <span style="color: #339933;">=</span> gtk_menu_item_new_with_label <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Visualizza&quot;</span><span style="color: #009900;">&#41;</span>;
 gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>bar<span style="color: #009900;">&#41;</span>, view<span style="color: #009900;">&#41;</span>;
&nbsp;
 help <span style="color: #339933;">=</span> gtk_menu_item_new_with_label <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Aiuto&quot;</span><span style="color: #009900;">&#41;</span>;
 gtk_menu_shell_append <span style="color: #009900;">&#40;</span>GTK_MENU_SHELL <span style="color: #009900;">&#40;</span>bar<span style="color: #009900;">&#41;</span>, help<span style="color: #009900;">&#41;</span>;</pre></td></tr></table></div>

<p>I menu principali della barra solitamente si crea con solo il testo, senza utilizzare checkbutton, radiobutton o icone associate come invece succede per le voci del menu, per fare ciò si utilizza come si può vedere la funzione <em>gtk_menu_item_new_with_label ()</em> che riceve come argomento il label da utilizzare e ritorna il widget riguardante il menu principale da inserire nella barra dei menu.Un menu principale si può anche allineare a destra ( mentre l&#8217;azione predefinita che eseguono le gtk+ è quella di allinearli a sinistra ) tramite la funzione <em>gtk_menu_item_set_right_justified ()</em>.Continuando, per inserire poi il menu nella barra si utilizza la funzione <em>gtk_menu_shell_append ()</em> per inserire il nuovo menu in coda agli altri,<em> gtk_menu_shell_prepend ()</em> per inserirlo prima degli altri o in alternativa <em>gtk_menu_shell_insert ()</em> per impostare manualmente il punto in cui inserirlo, questa funzione come si può immagine oltre ai primi due parametri ( GtkMenuShell che sarà la nostra barra convertita con la macro <strong><em>GTK_MENU_SHELL ()</em></strong> e il GtkWidget rappresentate il nostro menu principale ) anche un intero che rappresenta la posizione in cui inserire il menu che va da 0 ( inizio ) a N-1 ( dove N è il numero dei menu inseriti ).Per velocizzare le operazioni di inserimento delle voci dei vari menu nella prossima puntata creeremo delle funzioni apposite perchè come potete immaginare richiamare tante funzioni per ogni singola operazione rende il lavoro di creazione lungo, stancante e poco mantenibile.</p>
<p><strong>Fine Diciannovesima Puntata</strong><br />
<em>Preferisco fermarmi qui per ora perchè inserire le voci sarà abbastanza lungo da spiegare.</em><br />
<em>Ciauz <img src="http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif" class="wp-smiley" alt=";)" /> </em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F10%2F09%2F2009%2Fguida-gtk-a-puntate-xix-parte%2F&amp;linkname=Guida%20gtk%2B%20a%20puntate%20%28%20XIX%20parte%20%29">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/10/09/2009/guida-gtk-a-puntate-xix-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ritorno dalle vacanze e inizia la scuola</title>
		<link>http://www.hds619.net/blog/02/09/2009/ritorno-dalle-vacanze-e-inizia-la-scuola/</link>
		<comments>http://www.hds619.net/blog/02/09/2009/ritorno-dalle-vacanze-e-inizia-la-scuola/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 20:26:33 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[guida gtk+]]></category>
		<category><![CDATA[scuola]]></category>
		<category><![CDATA[vacanze]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/02/09/2009/ritorno-dalle-vacanze-e-inizia-la-scuola/</guid>
		<description><![CDATA[Salve a tutti, sono ritornato da qualche giorno dalle vacanze e già mi ritrovo catapultato sui banchi di scuola a studiare elettronica e telecomunicazioni ( o elettrotecnica e automazione.. la scuola è un po&#8217; indecisa, tra 1 settimana dovrei sapere qualcosa di più, ma alla fin fine le materie sono uguali )
Vacanze andate benissimo e [...]]]></description>
			<content:encoded><![CDATA[<p>Salve a tutti, sono ritornato da qualche giorno dalle vacanze e già mi ritrovo catapultato sui banchi di scuola a studiare elettronica e telecomunicazioni ( o elettrotecnica e automazione.. la scuola è un po&#8217; indecisa, tra 1 settimana dovrei sapere qualcosa di più, ma alla fin fine le materie sono uguali )</p>
<p>Vacanze andate benissimo e ultimamente mi sto divertendo a configurare un eeepc 4G della Asus, ed a proposito di questo argomento devo dire che xandros è il sistema operativo più inutile, insensato, incoerente, inusabile e inefficiente della storia dell&#8217;informatica.</p>
<p>Tralasciando questo breve aggiornamento sulla mia vita informo che questo fine settimana dovrei riuscire a trovare il tempo per scrivere la nuova guida alle gtk+ e l&#8217;argomento per cui ho optato è stato quello dei menu.</p>
<p>Quindi a tra poco <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F02%2F09%2F2009%2Fritorno-dalle-vacanze-e-inizia-la-scuola%2F&amp;linkname=Ritorno%20dalle%20vacanze%20e%20inizia%20la%20scuola">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/02/09/2009/ritorno-dalle-vacanze-e-inizia-la-scuola/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nuova Grafica per HdS619.net</title>
		<link>http://www.hds619.net/blog/12/08/2009/nuova-grafica-per-hds619net/</link>
		<comments>http://www.hds619.net/blog/12/08/2009/nuova-grafica-per-hds619net/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 06:39:29 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Grafica]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Servizi]]></category>
		<category><![CDATA[estate]]></category>
		<category><![CDATA[hds619.net]]></category>
		<category><![CDATA[imel]]></category>
		<category><![CDATA[vacanze]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/12/08/2009/nuova-grafica-per-hds619net/</guid>
		<description><![CDATA[HdS619.net si rinnova per l&#8217;estate cambiando grafica, la nuova presenta molti vantaggi. Oltre ad essere più semplice, con colori più rilassanti e minimale, non è più a larghezza fissa come il vecchio sito ma a larghezza variabile che si adatta alla larghezza del browser ( larghezza minima richiesta 700 pixel ) ciò comporta più spazio [...]]]></description>
			<content:encoded><![CDATA[<p>HdS619.net si rinnova per l&#8217;estate cambiando grafica, la nuova presenta molti vantaggi. Oltre ad essere più semplice, con colori più rilassanti e minimale, non è più a larghezza fissa come il vecchio sito ma a larghezza variabile che si adatta alla larghezza del browser ( larghezza minima richiesta 700 pixel ) ciò comporta più spazio per i contenuti in particolari per i sorgenti che ora sono liberi di respirare <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Altra novità riguarda Himages che cambia &#8220;motore&#8221; passando dalle gd ( utilizzando il php ) a imel ( utilizzando una cgi scritta in  c ) questo porta novità come la possibilità di applicare effetti all&#8217;immagine e l&#8217;opzione per aggiungere un antialias ( leggera sfocatura per nascondere i difetti ) dell&#8217;immagine di anteprima così da migliorare la qualità grafica.Buon estate a tutti ne approfitto per annunciare che sarò via dal 14 fino al 30 agosto, per le puntate alle gtk+ ricominceremo a settembre.Ciauz <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F12%2F08%2F2009%2Fnuova-grafica-per-hds619net%2F&amp;linkname=Nuova%20Grafica%20per%20HdS619.net">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/12/08/2009/nuova-grafica-per-hds619net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Imel 0.2.2 Out!</title>
		<link>http://www.hds619.net/blog/21/07/2009/imel-022-out/</link>
		<comments>http://www.hds619.net/blog/21/07/2009/imel-022-out/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 09:32:16 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programmi]]></category>
		<category><![CDATA[Recensioni]]></category>
		<category><![CDATA[imel]]></category>
		<category><![CDATA[libreria grafica]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/21/07/2009/imel-022-out/</guid>
		<description><![CDATA[Rilasciata Imel 0.2.2 ( Imel 0.2.1, Documentazione di Imel Completata ), questa versione comprende più che altro novità sui formati che portano l&#8217;introduzione di TIFF ( Con il supporto alla compressione ) e WBMP, il miglioramento del salvataggio in png che permette ora anche l&#8217;interlacciamento adam7 e la possibilità di caricare un&#8217;immagine ppm anche da [...]]]></description>
			<content:encoded><![CDATA[<p>Rilasciata Imel 0.2.2 ( <a href="http://www.hds619.net/blog/24/05/2009/imel-021/">Imel 0.2.1</a>, <a href="http://www.hds619.net/blog/12/05/2009/documentazione-di-imel-completata/">Documentazione di Imel Completata</a> ), questa versione comprende più che altro novità sui formati che portano l&#8217;introduzione di TIFF ( Con il supporto alla compressione ) e WBMP, il miglioramento del salvataggio in png che permette ora anche l&#8217;interlacciamento adam7 e la possibilità di caricare un&#8217;immagine ppm anche da stringa cioè la possibilità di passare un contenuto magari già caricato da sè di un immagine ppm per generare un immagine di imel salvabile poi in altri formati.</p>
<p>Come altre novità c&#8217;è una nuova funzione per il disegno (<em> imel_draw_blend () </em>)  che permette di disegnare una sfumatura orizzontale o verticale, una funzione per sommare\sottrarre o impostare tutti i livelli di un immagine ad una stessa cifra\per una stessa cifra ( <em>imel_image_change_level ()</em> ) e una funzione per applicare matrici di convoluzione ( <em>imel_image_apply_convolution () </em>).</p>
<p>Inoltre sono state inseriti tanti bei define che potete trovare descritti nella documentazione, <a href="http://www.hds619.net/documentation/imel/x100.html#define">precisamente in questa pagina</a>, ed eliminati tutti i warning in fase di compilazione ( compilando con -Wall -ansi -pedantic ).</p>
<p>Byeee <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Pacchetto:<strong class="command"> <a href="http://www.hds619.net/imel-pkg/imel-0.2.2.tar.bz2">http://www.hds619.net/imel/imel-0.2.2.tar.bz2</a></strong></p>
<p>La documentazione e i sorgenti &#8220;sfusi&#8221; sono sempre allo stesso link</p>
<p>P.s.: Nel pacchetto di questa versione trovate anche la libreria statica e dinamica pre-compilata, e poi non dite che non vi penso <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><strong>Aggiornamento (22/07/2009)</strong>: Pacchetto aggiornato inserendo la funzione <em>imel_image_apply_convolution ()</em> e con i warning in fase di compilazione eliminati.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F21%2F07%2F2009%2Fimel-022-out%2F&amp;linkname=Imel%200.2.2%20Out%21">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/21/07/2009/imel-022-out/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guida gtk+ a puntate ( XVIII parte )</title>
		<link>http://www.hds619.net/blog/21/07/2009/guida-gtk-a-puntate-xviii-parte/</link>
		<comments>http://www.hds619.net/blog/21/07/2009/guida-gtk-a-puntate-xviii-parte/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 08:57:22 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Guide veloci]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[manuale gtk]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/21/07/2009/guida-gtk-a-puntate-xviii-parte/</guid>
		<description><![CDATA[Si continua a parlare di gtk+, vedo che durante queste guide ho iniziato ad affascinare molte ( rispetto a quanto mi aspettavo all&#8217;inizio ) persone e ne son contento  
Dopo la mia piccola riflessione iniziale di autoapprezzamento, possiamo continuare l&#8217;argomento textview affrontando velocemente l&#8217;ultimo argomento per poi poter finalmente passare ad altro.
GtkTextTag
I tag forse [...]]]></description>
			<content:encoded><![CDATA[<p>Si continua a parlare di gtk+, vedo che durante queste guide ho iniziato ad affascinare molte ( rispetto a quanto mi aspettavo all&#8217;inizio ) persone e ne son contento <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Dopo la mia piccola riflessione iniziale di autoapprezzamento, possiamo continuare l&#8217;argomento textview affrontando velocemente l&#8217;ultimo argomento per poi poter finalmente passare ad altro.</p>
<p align="center"><strong>GtkTextTag</strong></p>
<p align="left">I tag forse qualcuno di voi può già intuire cosa siano, per chi non lo sapesse lo spiego non preoccupatevi. Sono delle &#8220;entità&#8221; astratte che permettono di applicare degli effetti al testo come ad esempio il grassetto, evidenziazione, colore, ecc.. Non sono così particolari come utilità, mi è capitato più volte di aver bisogno ad esempio della possibilità di evidenziare del testo per far risaltare ad esempio le parole durante una ricerca di qualche parola cosa non fattibile nel caso i tag non esistessero.</p>
<p align="left"><span id="more-147"></span></p>
<p align="left">I tag oltre ad avere degli attributi ( cosa principale per un tag che più avanti vedremo come settare e quali sono ) hanno anche delle priorità, ovvero se noi abbiamo due tag che evidenziano e capita che vengano utilizzati tutti e due sappiamo che uno dei due sarà sotto l&#8217;altro nel caso si ritrovino nello stesso punto. Solitamente la priorità di tutti i tag è 0 quindi l&#8217;ultimo applicato copre l&#8217;altro. Ciò però si può cambiare tramite una funzione chiamata <em>gtk_text_tag_set_priority ()</em> ( per ottenerla <em>gtk_text_tag_get_priority ()</em> unico argomento il tag, ritorna l&#8217;int rappresentante la priorità ) che riceve come primo argomento il tag, e come secondo argomento la priorità ( da specificare come int ).</p>
<p align="left">Voi ora vi chiederete ma come lo creo il tag? semplicissimamente con la funzione <em>gtk_text_tag_new () </em>che riceve come unico argomento il nome da dare al tag, e ritorna il tag creato ( <strong>GtkTextTag * </strong>).</p>
<p align="left">La parte &#8220;difficile&#8221; è quella del settaggio dei vari attributi che per farla dobbiamo ricorrere al tipo primitivo <em>GObject</em> e quindi alla relativa funzione <em>g_object_set ()</em> che abbiamo già incontrato durante queste guide. Vi dò un codice di esempio:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p14724');">[<span id="p14724_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p147code24'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p14724"><td width="1%" class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p147code24"><pre class="c"> GtkTextTag <span style="color: #339933;">*</span>tag;
&nbsp;
 tag <span style="color: #339933;">=</span> gtk_text_tag_new <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;highlighting&quot;</span><span style="color: #009900;">&#41;</span>;
 g_object_set <span style="color: #009900;">&#40;</span>G_OBJECT <span style="color: #009900;">&#40;</span>tag<span style="color: #009900;">&#41;</span>, <span style="color: #ff0000;">&quot;foreground&quot;</span>, <span style="color: #ff0000;">&quot;#ffffff&quot;</span>, <span style="color: #ff0000;">&quot;background&quot;</span>, <span style="color: #ff0000;">&quot;#000000&quot;</span>, <span style="color: #000000; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span>;</pre></td></tr></table></div>

<p align="left">Come vedete la funzione <em>g_object_set ()</em> riceve come primo argomento il nostro tag convertito in <strong>GObject</strong> tramite la macro <em><strong>G_OBJECT  </strong></em>dopodichè ci sono in sequenza <em>attributo, valore, attributo, valore,</em> .. quando si termina l&#8217;impostazione dei vari attributi diamo NULL come parametro e abbiam finito. Gli attributi da poter dare non sto qui ad elencarli perchè sono veramente tanti, vi rimando quindi alla <a href="http://library.gnome.org/devel/gtk/stable/GtkTextTag.html#GtkTextTag.properties">pagina delle api ufficiali delle gtk+ relativa ai tag</a>.</p>
<p align="left">Per finire rimane l&#8217;ultima questione: <em>Ok, ho capito come creare e impostare il tag, ora però che me ne faccio se non so come applicarlo al testo? </em></p>
<p align="left">Boh! Scherzo <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  diciamo che ci sono molti metodi per usare un tag relativi alla situazione in cui ci si ritrova, perchè ad esso fanno riferimenti molti widget di diversa natura. Elenco qualche funzione:</p>
<ul>
<li><em> gtk_text_buffer_insert_with_tags ()</em>: primo argomento il buffer di testo, secondo argomento l&#8217;iter che individua la posizione in cui inserire il testo, terzo argomento il testo accompagnato dal quarto argomento che è la sua lunghezza ( o -1 se è NULL-terminated ), quinto argomento in poi i vari tag che verranno applicati al testo.. alla fine per terminare gli argomenti è necessario inserire il valore NULL.</li>
<li><em>gtk_text_buffer_insert_with_tags_by_name ()</em>: ( gli autori delle gtk+ non si può dire che siano avari sulla lunghezza dei nomi delle funzioni ) come la funzione precedente solo che al posto di passare i tag veri e propri si può passare il nome del tag creato. Questo però aggiungendo prima il tag alla TagTable del buffer. Non ne ho parlato e non ne parlo per confondere le idee, vi basti sapere che la TagTable ( <strong>GtkTextTagTable</strong> ) del buffer la si prende tramite la funzione <em>gtk_text_buffer_get_tag_table ()</em> che riceve come argomento il buffer e ritorna un puntatore a <strong>GtkTextTagTable</strong>. Dopodichè si può aggiungere il tag alla tabella tramite la funzione <em>gtk_text_tag_table_add () </em>che riceve come primo argomento la TagTable e come secondo argomento il tag da inserire.</li>
<li><em>gtk_text_buffer_apply_tag ()</em>: primo argomento il buffer, secondo argomento il tag da applicare e i due parametri successivi sono il <strong>GtkTextIter</strong> iniziale e quello finale che delimitano lo spazio a cui il tag viene applicato.</li>
<li><em>gtk_text_buffer_apply_tag_by_name ()</em>: come la funzione precedente, solo che il secondo parametro al posto di essere il tag vero e proprio sarà il nome del tag, e qui si torna al ragionamento fatto per la funzione <em>gtk_text_buffer_insert_with_tags_by_name ()</em>.</li>
<li><em>gtk_text_buffer_remove_tag ()</em>: Come la funzione <em>gtk_text_buffer_apply_tag ()</em> solo che al posto di applicare il tag passato all&#8217;area compresa tra l&#8217;iter iniziale e quello finale, rimuove eventuali occorrenze dello stesso in quell&#8217;area.</li>
<li><em>gtk_text_buffer_remove_tag_by_name ()</em>: Come la funzione precedente, il tag anche qui c&#8217;è la differenza che viene passato per nome e quindi si ritorna al discorso delle funzioni <em>_by_name</em> precedenti.</li>
<li><em>gtk_text_buffer_remove_all_tags ()</em>: come la funzione <em>gtk_text_buffer_remove_tag () </em>solo che non c&#8217;è l&#8217;argomento per il tag dato che rimuove tutti i tag eventualmente applicati nell&#8217;area compresa tra l&#8217;iter iniziale e quello finale.</li>
</ul>
<p>Ok, abbiam finito con la gestione di una textview, ho tralasciato alcune parti, nel caso però vi servissero fate pure domande nei commenti che risponderò come posso per affrontare quei lati che ho tralasciato.</p>
<p><strong>Fine Diciottesima Puntata</strong><br />
<em>Capite ora perchè me la son presa con calma per trattare i tag? XD va bien, alla prossima!</em></p>
<p><em>Ciauz <img src="http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F21%2F07%2F2009%2Fguida-gtk-a-puntate-xviii-parte%2F&amp;linkname=Guida%20gtk%2B%20a%20puntate%20%28%20XVIII%20parte%20%29">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/21/07/2009/guida-gtk-a-puntate-xviii-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>8 – 22 Aprile</title>
		<link>http://www.hds619.net/blog/19/07/2009/10-17-aprile/</link>
		<comments>http://www.hds619.net/blog/19/07/2009/10-17-aprile/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 08:00:15 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Momenti Pensierosi]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/19/07/2009/10-17-aprile/</guid>
		<description><![CDATA[
Condividi\Salva Articolo]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube-nocookie.com/v/vGBix-suEJQ&#038;hl=it&#038;fs=1&#038;color1=0xe1600f&#038;color2=0xfebd01"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/vGBix-suEJQ&#038;hl=it&#038;fs=1&#038;color1=0xe1600f&#038;color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F19%2F07%2F2009%2F10-17-aprile%2F&amp;linkname=8%20%26%238211%3B%2022%20Aprile">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/19/07/2009/10-17-aprile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Guida Gtk+ a puntate ( XVII parte )</title>
		<link>http://www.hds619.net/blog/07/07/2009/guida-gtk-a-puntate-xvii-parte/</link>
		<comments>http://www.hds619.net/blog/07/07/2009/guida-gtk-a-puntate-xvii-parte/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 14:37:06 +0000</pubDate>
		<dc:creator>hds619</dc:creator>
				<category><![CDATA[Guide veloci]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[manuale gtk]]></category>

		<guid isPermaLink="false">http://www.hds619.net/blog/07/07/2009/guida-gtk-a-puntate-xvii-parte/</guid>
		<description><![CDATA[Ok, continuiamo a parlare di textview occupandoci questa volta del buffer chiamato GtkTextBuffer.
Iniziamo guardando le due azioni principali che di solito si eseguono: ottenere il testo inserito, inserire del nuovo testo ed eliminare parti di testo.
- Ottenere del testo:
In questo caso ci viene in aiuto la funzione gtk_text_buffer_get_text () che richiede il buffer del testo, [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, continuiamo a parlare di textview occupandoci questa volta del buffer chiamato GtkTextBuffer.</p>
<p>Iniziamo guardando le due azioni principali che di solito si eseguono: ottenere il testo inserito, inserire del nuovo testo ed eliminare parti di testo.</p>
<p><strong>- Ottenere del testo:</strong><br />
In questo caso ci viene in aiuto la funzione <em>gtk_text_buffer_get_text ()</em> che richiede il buffer del testo, il punto iniziale, il punto finale e se ottenere anche i &#8220;caratteri invisibili&#8221;  ( sono presenti quando si inserisce un&#8217;immagine o un widget o altre cose all&#8217;interno della textview cose che noi tralasceremo ).<br />
<span id="more-144"></span><br />
Il punto iniziale e il punto finale sono memorizzati in un GtkTextIter che possiamo ottenere ricorrendo alle funzioni sempre del widget GtkTextBuffer relative ad esso ( il primo argomento sarà sempre il nostro buffer ):</p>
<ul>
<li> <em>gtk_text_buffer_get_iter_at_line ()</em>: il secondo argomento dovrà essere o un puntatore a GtkTextIter oppure l&#8217;indirizzo di un GtkTextIter, anche non inizializzato, e come terzo argomento il numero di linea del testo a cui posizionarlo.</li>
<li><em>gtk_text_buffer_get_start_iter ()</em>: secondo argomento un puntatore a GtkTextIter, o come detto prima l&#8217;indirizzo di un GtkTextIter. Dopo questa funzione l&#8217;iter passato sarà posizionato all&#8217;inizio del testo contenuto nel buffer.</li>
<li><em>gtk_text_buffer_get_end_iter ()</em>: come la funzione precedente. Dopo la sua chiamata l&#8217;iter passato sarà posizionato alla fine del testo contenuto nel buffer.</li>
<li><em>gtk_text_buffer_get_bounds ()</em>: riceve due puntatori a GtkTextIter come secondo e terzo parametro. Dopo la sua chiamata il primo GtkTextIter passato sarà posizionato all&#8217;inizio del testo contenuto nel buffer, mentre il secondo alla fine.</li>
</ul>
<p>Quindi per ottenere il testo possiamo scrivere un codice del genere:</p>

<div id="wp_codebox_msgheader"><span class="right"><a href="javascript:;" onclick="toggle_collapse('p14426');">[<span id="p14426_symbol">-</span>]</a><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p144code26'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div id="wp_codebox"><table width="100%" ><tr id="p14426"><td width="1%" class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p144code26"><pre class="c"><span style="color: #993333;">char</span> <span style="color: #339933;">*</span>foo <span style="color: #009900;">&#40;</span>GtkTextBuffer <span style="color: #339933;">*</span>buffer<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
 GtkTextIter start, end;
&nbsp;
 gtk_text_buffer_get_bounds <span style="color: #009900;">&#40;</span>buffer, <span style="color: #339933;">&amp;</span>start, <span style="color: #339933;">&amp;</span>end<span style="color: #009900;">&#41;</span>;
 <span style="color: #b1b100;">return</span> gtk_text_buffer_get_text <span style="color: #009900;">&#40;</span>buffer, <span style="color: #339933;">&amp;</span>start, <span style="color: #339933;">&amp;</span>end, <span style="color: #000000; font-weight: bold;">FALSE</span><span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>- Inserire del testo:</strong></p>
<p>Per inserire un testo sono anche qui presenti diverse funzioni, il primo argomento sarà anche in questo caso il nostro buffer ( GtkTextBuffer * ).</p>
<ul>
<li><em>gtk_text_buffer_insert ()</em>: il secondo argomento sarà il punto ( sempre l&#8217;iter ) in cui inserire il nuovo testo, il terzo argomento sarà per l&#8217;appunto il testo e come ultimo argomento la lunghezza del testo che si può omettere inserendo -1 nel caso la stringa di testo è null-terminated.</li>
<li><em>gtk_text_buffer_insert_at_cursor ()</em>: secondo argomento il testo da inserire nel punto in cui è presente il cursore, terzo argomento la lunghezza del testo o -1 se la si vuol far calcolare alla funzione la lunghezza della stringa ( che deve essere null-terminated ).</li>
<li><em>gtk_text_buffer_set_text ()</em>: i parametri sono identici alla funzione precedente. Questa funzione però imposta il testo dell&#8217;intero buffer con quello passato come parametro, eliminando eventuali testi inseriti.</li>
</ul>
<p><strong>- Eliminare del testo:</strong></p>
<p>Per eliminare del testo abbiamo una sola funzione ( ok, chi conosce le gtk+ sa che è presente anche un&#8217;altra funzione ma io qui tratto quelle principali, se volete dare altri consigli potete farlo nei commenti <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) ovvero gtk_text_buffer_delete ().  Questa funzione come primo parametro riceve sempre il nostro buffer, come secondo e terzo parametro invece riceve rispettivamente il punto iniziale e il punto finale del testo da eliminare. Si possono sempre usare le funzioni descritte prima nel paragrafo &#8220;Ottenere del testo&#8221; riguardo gli iter.</p>
<p>Per operare e modificare maggiormente gli iter esistono comunque le funzioni ad hoc per essi, non mi metto ad elencarle perché sono veramente tante e tutte sullo stesso livello di utilità, quindi vi lascio<a href="http://library.gnome.org/devel/gtk/stable/gtk-GtkTextIter.html" target="_blank"> il link per guardarle dalla documentazione ufficiale</a>.</p>
<p>Passiamo invece ora ai segnali del GtkTextBuffer che sono molto importanti a mio giudizio:</p>
<ul>
<li> &#8221;changed&#8221; &#8211; Viene emesso quando il testo è cambiato</li>
<li> &#8221;insert-text&#8221; &#8211; Viene emesso quando è inserito del testo.</li>
</ul>
<p>Elenco solo questi due perchè con gli altri andiamo a finire su altri argomenti che non voglio toccare ora. Per quanto riguarda il come strutturare le funzioni che vengono collegate a questi segnali andate come consigliato altre volte a guardare nella documentazione ufficiale che ci sono gli esempi di dichiarazione poi se avete domande chiedete pure nei commenti <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Fine Diciassettesima Puntata</strong><br />
<em>I tag sono un argomento relativamente semplice che preferisco affrontare, e quindi sprecare, ancora un&#8217;altra puntata. Non me ne vogliate se me la prendo con questa calma <img src='http://www.hds619.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p><em>Ciauz <img src="http://www.hds619.net/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.hds619.net%2Fblog%2F07%2F07%2F2009%2Fguida-gtk-a-puntate-xvii-parte%2F&amp;linkname=Guida%20Gtk%2B%20a%20puntate%20%28%20XVII%20parte%20%29">Condividi\Salva Articolo</a>]]></content:encoded>
			<wfw:commentRss>http://www.hds619.net/blog/07/07/2009/guida-gtk-a-puntate-xvii-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

