Alessio Treglia

everybody lies
  • Quality Assurance
  • EN blog
  • rss
  • Inizio
  • Chi sono
  • pyRisk
  • Roma3 WiFi Authenticator
  • Installation Report Generator
  • Contattami

Scrivere un’applicazione in C con le GTK+ (Prima parte)

quadrispro | 2 Giugno 2008

Quello che segue è un breve tutorial introduttivo alla programmazione in ambiente GNOME con le librerire GTK+. Benchè sia possibile scrivere applicazioni con le GTK+ in diversi linguaggi per i quali vengono forniti binding sempre aggiornati, ho scelto il C come linguaggio per gtk-foobar, l’applicazione d’esempio di questo tutorial, poiché garantisce maggiori potenza e stabilità.

Soddisfiamo le dipendenze

Prima di installare le dipendenze necessarie alla nostra nuova applicazione, è bene scegliere i nostri strumenti con grande cura: personalmente mi trovo benissimo con Anjuta IDE, un ambiente di sviluppo open source completo di tutto ciò che ci servirà in questo tutorial (e non solo). Per installarlo su Ubuntu 8.04 «Hardy Heron» è sufficiente digitare il seguente comando in una finestra di terminale:

sudo aptitude install anjuta

Ecco uno screenshot dell’ambiente di sviluppo:

Una schermata di Anjuta IDE

Per quanto riguarda le dipendenze, se si è interessati solo allo sviluppo con le librerie GTK+ (complete di supporto per l’internazionalizzazione) è sufficiente digitare questo comando:


sudo aptitude install build-essential libgtk2.0-dev glade-3 autotools-dev libtool intltool intltool-debian

Per la documentazione è consigliato installare lo strumento Devhelp, corredato del reference manual delle librerie:

sudo aptitude install devhelp libgtk2.0-doc

Iniziamo un nuovo progetto

Con Anjuta non serve preparare alcun Makefile né generare dipendenze di nessun tipo: basta andare su Applicazioni -> Programmazione -> Anjuta IDE e fare clic su File -> Nuovo -> Progetto. Verrà avviato un assistente e alla richiesta di informazioni sul tipo di progetto bisogna selezionare l’icona raffigurante il simbolo delle librerie GTK+, come nella seguente schermata di esempio:

Selezionare il tipo del nuovo progetto

Ora siamo pronti per iniziare!

Oh GUI, mon amour!

Cominciamo subito con la preparazione dell’interfaccia grafica dell’applicazione: facendo clic sul file gtk_foobar.glade presente nella cartella del progetto verrà avviata una versione integrata del designer di interfacce Glade, con il quale sarà possibile inserire tutti gli elementi grafici che desideriamo. Tenete conto delle seguenti considerazioni:

  1. Se siete così smaniosi da voler visualizzare subito la finestra vuota dell’applicazione, basta premere «F11» per generare il progetto, dunque «F3» per avviare il programma una volta terminata la compilazione.
  2. Durante l’editing dei widget grafici è sempre meglio adottare delle convenzioni per i nomi, in modo da ricordare facilmente gli elementi dell’interfaccia durante lo sviluppo delle funzioni callback associate ai vari eventi generati da essi. Questa è una raccomandazione importante: onde evitare stupidi errori di compilazione, pensate bene prima di assegnare i nomi a tali oggetti, in alternativa potete sempre lasciare quelli di default.
  3. Per quanto riguarda la disposizione degli elementi nella finestra, il seguente esempio fa schifo:
    L\'interfaccia grafica di gtk-foobar
    Da sempre è un mio grande limite: non sono bravo a disegnare interfacce di alcun tipo. Sono sicurissimo che saprete fare di meglio (mandatemi pure i vostri file .glade via mail, i migliori verranno pubblicati).
  4. Se l’esempio precedente dovesse risultare graficamente migliore di qualsiasi interfaccia che abbiate mai elaborato con Glade, in tal caso (mi duole dirvelo) non esiste Visual Basic che possa salvarvi!

E con questo la prima puntata termina qui. Nella prossima andremo a gestire gli eventi scatenati dai widget posizionati nella finestra principale del programma, inoltre cominceremo a scrivere il codice necessario al funzionamento dell’applicazione. Insomma: non perdetevela! :D

Categorie
Ambienti di sviluppo, C, GNOME, GTK+, Guide e howto, Hardy, Programmazione e sviluppo
Commenti RSS
Commenti RSS
Trackback
Trackback

« Aggiungi un posto a tavola, che c’è un membro in più! Avviso ai naviganti, attivata la “recovery mode” per Wordpress »

8 risposte

Bene. Anche se preferisco non usare "frocerie" come Anjuta che

fabio marzocca | 3 Giugno 2008 | 12:03

Bene. Anche se preferisco non usare “frocerie” come Anjuta che confondo le idee e aggiungono inutili file al progetto.

Vai di gEdit per il codice e gli strumenti di “make” per la compilazione!
In questo modo riesci anche a capire cosa stai facendo con tutti i vari file che costruiscono il progetto. Anjuta nasconde allo sviluppatore il cuore del meccanismo.

IMHO.

[Reply]

Già è vero xkè hai usato quella merda di Anjuta

Anjuta | 3 Giugno 2008 | 15:45

Già è vero xkè hai usato quella merda di Anjuta usa Vi o Emacs!!!

[Reply]

@Anjuta--> Non ho detto che anjuta è una "merda", anzi

fabio marzocca | 3 Giugno 2008 | 16:04

@Anjuta–> Non ho detto che anjuta è una “merda”, anzi è un’applicazione molto complessa, che comunque ha fatto sudare gli sviluppatori. E’ Open Source, e per questo dobbiamo sempre ringraziare con grande rispetto chi fa questi lavori e li mette a disposizione di tutti.

Ho solo detto che preferisco non usarlo… :-)

[Reply]

@fabio: la mia è stata una scelta dettata dalla voglia

quadrispro | 3 Giugno 2008 | 16:14

@fabio: la mia è stata una scelta dettata dalla voglia di semplificare la vita di tutti coloro che, passando da Windows a Linux, si trovano spiazzati di fronte alle differenze fra gli strumenti di sviluppo: da Visual Studio .NET a gedit il salto non è proprio immediato… il primo “contatto” con il nuovo sistema, anche per chi sviluppa per/su Windows (e che dunque si presuma abbia delle conoscenze più approfondite rispetto a un utente “medio”) non è sempre indolore.

@Anjuta: sono della stessa idea di Fabio, stiamo parlando dell’ambiente di sviluppo predefinito di GNOME, completamente open source, che mette a disposizione dell’utente molti strumenti utili a semplificare il lavoro.

De gustibus non disputandum est

;)

[Reply]

ma perchè ti sei fermato qui? penso che tutti riescano a

olin | 5 Luglio 2008 | 12:31

ma perchè ti sei fermato qui?
penso che tutti riescano a disegnare una cavolo di interfaccia grafica
hai tralasciato la parte più importante… quella del codice!! :( :(

a quando la seconda parte???
sono troppo curioso / voglioso di imparare ad usare finalmente c con gtk
spero di ricevere tue notizie ^^

[Reply]

olin, l'articolo è quasi pronto e sento cmq di dovermi

quadrispro | 5 Luglio 2008 | 17:15

olin, l’articolo è quasi pronto e sento cmq di dovermi scusare per il ritardo con te e con tutti i miei lettori che attendono la seconda puntata.

Purtroppo sono letteralmente sommerso dai miei impegni universitari ultimamente (avrai notato che scrivo anche meno articoli :)), prometto di pubblicare la seconda parte il prima possibile.

[Reply]

[...] una lunga attesa, ecco una nuova puntata del mio

Alessio Treglia » Scrivere un’applicazione in C con le GTK (Seconda parte) | 7 Luglio 2008 | 17:07

[...] una lunga attesa, ecco una nuova puntata del mio breve tutorial alla programmazione con le GTK+! Cercherò di offrirvi una panoramica sufficientemente completa sull’aspetto più importante [...]

Per chi volesse imparare bene c+gtk, consiglio la lettura dei

Scaloppina | 8 Luglio 2008 | 10:30

Per chi volesse imparare bene c+gtk, consiglio la lettura dei pdf scritti con grande passione da Gabriele Lombardi:
http://www.gadaleta.org/listing/Corso%20di%20gtk/
Ciao!

[Reply]

Lascia un commento

Puoi usare questi tag : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Click to cancel reply

Chi sono


Per contattarmi mandami una mail

Argomenti

Aggiornamento Ambienti di sviluppo Audio Bug e problemi vari C Cazzate varie Comunità Italiana Documentazione e wiki Feisty Firefox GNOME GTK+ GTK Rm3WiFi Authenticator Guide e howto Gutsy Hardy Installation Report Generator Installazione e problemi all'avvio Intrepid Jaunty Java Kernel e moduli Last.fm Musica Notizie Open source & free software Planet Ubuntu-it Programmazione e sviluppo Python Siti,servizi & blog Società e media Traduzioni Ubuntu Università e scienza Viaggi Video Windows Wordpress Xubuntu

Ultimi commenti

  • Roberto su Ubuntu 9.04, chiamiamola per nome
  • Flavio su Roma3, anche Ingegneria esprime il suo dissenso
  • iced su Si riparte!
  • Fabio su Si riparte!
  • l3on su Si riparte!

Tutti gli articoli

Ubuntu in Italiano

Versione a 32 bit

RSS Planet di Ubuntu-it

  • Flavia Weisghizzi: La Strega e l'Alchimista (Parte 2)
  • Leo Iannacone (l3on): Una piccola patch per Kaffeine…
  • Divilinux: Italia chiama Brasile, Brasile risponde
  • Ubuntu-it Newsletter: Newsletter italiana numero 27
  • Dario Cavedon: E' arrivato il freddo...

Blogroll

  • (LS) Lorenzo Sfarra
  • Bubuntu
  • crisis
  • Dagospia
  • Divilinux Lost Blog
  • Embrace’s Blog
  • Fradeve OpenBlog
  • Il blog di Totò
  • Il mondo di Paolettopn
  • Leo
  • Maurizio Moriconi
  • Milo Casagrande
  • Parzialmente scremato
  • TuxLinux
  • Ubuntu block notes

Licenza

I contenuti di questo sito sono coperti da licenza copyleft Creative Commons


Creative Commons Attribution-ShareAlike 2.5 Italy

Powered links

Il Bloggatore
BlogItalia.it - La directory italiana dei blog
Sfondi Desktop Classifica di siti - Iscrivete il vostro!
eXplicatum - Aggregatore online di Notizie / Blog / Feed RSS

Ascolti recenti

  • Joe Cocker – Feelin Alright
  • Band from TV – You Can't Always Get What You Want
  • Solomon Burke – 10 - None of Us Are Free
  • Jon Cleary – Got to Be More Careful
  • Three Dog Night – One is the Lonliest Number
  • Solomon Burke – 10 - None of Us Are Free
  • Jon Cleary – Got to Be More Careful
  • Band from TV – You Can't Always Get What You Want
  • Massive Attack – Teardrop
  • Joe Cocker – Feelin Alright

RSS alessio and friends on identi.ca

  • alessio: Workin on darcs package
  • alessio: packaging in progress, I think to leave Italian Doc Team seriously
  • milo: socket socket socket! Python socket!
  • alessio: is hungry
  • alessio: trying Simply RSS
  • alessio: feelin' so much tired, going to bed...
  • alessio: feeling s
  • alessio: 's waiting for Vale...
  • alessio: I have to study...
  • milo: fuck telepass.it website... it sucks!

Accedi o registrati

  • Registrati
  • Collegati
  • Voce RSS
  • RSS dei commenti
  • WordPress.org
rss Commenti RSS valid xhtml 1.1 design by jide powered by Wordpress get firefox