PDA

View Full Version : Sviluppo software con interfaccia grafica......


stefanoxjx
26-10-2012, 18:39
Ciao a tutti, chiedo qui piuttosto che nella sezione "Programmazione" perchè la mia è una domanda specifica per lo sviluppo in ambiente linux.
Premetto che programmo in C e vorrei cimentarmi nello sviluppo di un programma non molto complicato ma con interfaccia grafica, però non ho mai sviluppato nulla sotto linux (in ambiente grafico).
Ho fatto alcune ricerche, ed ho visto che le possibilità sono molte.
QT, forse la più interessante mi obbligherebbe a studiare C++ e onestamente non ne ho nessuna voglia.
GTK forse più semplici ma non ho trovato documentazione in italiano :( pero ho visto che usando GLADE posso semplificarmi la vita.
Sono un po' indeciso, certo è che devo fare un piccolo programma e vorrei finirlo prima del 2020, cosa che non riuscirei mai a fare se dovessi mettermi a studiare linguaggi nuovi e librerie complesse delle quali si trova documentazione solo in inglese :(
Che ne pensate di GLADE?
A me sembra interessante ma la documentazione che ho trovato è tutta molto datata (2007) e quindi non so se è un progetto ancora attivo o se mi metto da subito a lavorare su una cosa vecchia che magari è destinata a sparire.
Qualche consiglio?
Grazie.
Ciao.

gasparov
26-10-2012, 21:37
Io gioco (non programmo, gioco :) ) con python e gtk, riguardo a C non so dirti nulla.
Glade è attiva e come hai detto tu ti semplifica molto la vita nel fare le intefaccie grafiche, disegni l'interfaccia, colleghi i segnali ed è fatta.

Ci sono stati dei cambiamenti di recente col passaggio a gtk3 ( nel "mio" caso è morto pygtk ed è stato integrato tutto in gobject)

Se hai volgia dai pure un occhiata ad Anjuta, è un IDE con glade integrata ed una serie di "comode cose".

La prima cosa che fai è mettere un Toplevel (Window) poi un vertical box ( in gtk funziona tutto a box, in qt se non sbaglio posizioni i widget dove vuoi) e nel box metti i widget che vuoi (bottoni, text entry ecc ecc). Li trovi nel pannello di sinistra
Quando clicchi su un widget in basso a destra ti vengono fuori 4 tab.General, Packing, Common e Signals
In Signals trovi tutti i segnali che può emettere un widget (tipo clik bottone) a cui te assegni un handler che poi scriverai nel codice.
Premetto che non conosco altro ma una rottura delle gtk è che funziona tutto come un loop e se nel loop c'è qualcosa che non risponde si freeza tutto finchè non finisce. Cioè se ad esempio lanci "get_data()" e get_data ci mette 3 secondi a finire la gui si freeza per tre secondi.Di recente ho fatto un programmino che raccoglie e visualizza dati una volta al secondo ed ho dovuto inserire dei thread per evitare che mi si inchiodasse la gui ad ogni chiamata.

Se hai già il codice dovresti cavartela veloce ad adattarlo.

stefanoxjx
26-10-2012, 23:06
Ti ringrazio della risposta incoraggiante e non :(
Anjuta l'ho già installato ma non trovo tracce di GLADE, forse mi manca qualche pacchetto per collegare il tutto.
Il software che mi serve l'ho già scritto in C ma è la versione base che gira su terminale, ora dovrei farci un'interfaccia grafica semplice per visualizzare i dati e implementare qualche finestra per le opzioni.
Quello che non mi piace molto è il fatto che essendo in loop potrebbe impallarsi, perchè il programma che ho sviluppato è abbastanza vitale che non si fermi per lungo tempo.
Qualche frazione di secondo può andare, ma 3-4 secondi potrebbero essere catastrofici :mbe:
Credo che comunque per visualizzare un flusso video su una parte della finestra (non ho la più pallida idea di come fare :muro:) e scrivere un po' di testo non ci siano questi grossi problemi, comunque sarà tutto da sperimentare.
Ora devo trovare il sistema di far vedere GLADE ad Anjuta.
Ho provato a seguire questo blog (http://etnablog.altervista.org/programmazione-c/guida-alla-creazione-di-programmi-in-c-con-glade-anjuta-libglide/) ma come sempre succede con linux, le cose non funzionano mai come scritto nelle guide :D
Tra i pacchetti elencati in quel blog, alcuni non li ho trovati, devo vedere quali sono i sostituti e forse quella è la chiave per risolvere il problema.
Comunque tra le varie soluzioni che ho valutato glade mi sembra la soluzione più abbordabile senza spaccarsi per forza la testa anche se mi ha dato l'impressione che non sia molto usato :)

eaman
26-10-2012, 23:27
Non so' cosa tu conti di usare, ma per le QT con http://kdevelop.org/ si usa sia C che C++

Intendi dire che vuoi caricare del codice C senza modifiche?
- http://qt-project.org/forums/viewthread/8057

stefanoxjx
26-10-2012, 23:39
Non so' cosa tu conti di usare, ma per le QT con http://kdevelop.org/ si usa sia C che C++

Grazie, provo a vedere, ma mi da l'impressione che le QT siano più per professionisti, non so se riuscirò a combinare qualcosa.
Anche perchè di documentazione in italiano non ne ho trovata ed io con l'inglese qualcosa riesco anche a tirare fuori ma mi rallenterebbe in maniera esagerata :(
Per glade e gtk invece ho trovato anche molta documentazione in italiano.


Intendi dire che vuoi caricare del codice C senza modifiche?
- http://qt-project.org/forums/viewthread/8057

No no, intanto ho scritto il codice che mi serviva per vedere se la mia idea poteva funzionare, ora che ho visto che funziona, porterò il codice su interfaccia grafica ma con le opportune modifiche, anche se non ce ne saranno più di tante perchè il motore dell'applicazione legge dei dati da una porta usb e da una seriale e per questa parte non credo necessiteranno modifiche, per la rappresentazione dei dati ora ci sono dei banali printf che però ovviamente bisognerà adattare alle esigenze della libreria grafica.

gasparov
27-10-2012, 12:51
Ci sono progetti abbastanza famosi che usano glade tipo deluge torrent.

Dicono che qt siano meglio di gtk sotto certi punti di vista, da quanto ne so io dovrebbe essere un pelino più facile a pari conoscenze fare un interfaccia in qt dato che ci sono le librerie per qualsiasi cosa.

Non ho mai fatto nulla che riguardasse un video ma per quanto riguarda le gtk potresti dare un occhiata a gstreamer e libvlc

Che sistema operativo usi?

pabloski
27-10-2012, 16:07
In C puoi usare IUP, Clutter e wxWidgets. Quest'ultima è usatissima in svariati ambiti ed è molto completa.

stefanoxjx
27-10-2012, 20:30
Ci sono progetti abbastanza famosi che usano glade tipo deluge torrent.

Dicono che qt siano meglio di gtk sotto certi punti di vista, da quanto ne so io dovrebbe essere un pelino più facile a pari conoscenze fare un interfaccia in qt dato che ci sono le librerie per qualsiasi cosa.

Non ho mai fatto nulla che riguardasse un video ma per quanto riguarda le gtk potresti dare un occhiata a gstreamer e libvlc

Che sistema operativo usi?

Si, effettivamente per quello che devo fare, GLADE continua ad essere la scelta più sensata.
Proverò a vedere gstreamer e libvlc se possono fare al caso mio.

Una cosa però, studiando un po' glade e gtk, ho visto che ad un certo punto viene invocato un gtk_main() che credo sia un loop dove vengono gestiti tutti i messaggi inerenti alla gestione delle finestre/pulsanti ecc. ecc.
Qui mi nasce un altro problema, o meglio, forse due ai quali non avevo pensato prima :(
1. Ho già scritto del codice di base (senza grafica) e questo gira già con un suo loop perchè deve leggere ed elaborare dei dati in continuazione.
Il mio problema è, come faccio ad inserirlo all'interno del loop gtk_main()?

2. Il codice che ho scritto finora, usa le SDL, posso mescolare GTK ed SDL o mi ritrovo con una frittata?

Grazie.

stefanoxjx
27-10-2012, 20:32
In C puoi usare IUP, Clutter e wxWidgets. Quest'ultima è usatissima in svariati ambiti ed è molto completa.

Ho guardato un po' wxWidgets, però nel sito ufficiale c'è scritto:

wxWidgets is a C++ library that lets developers create applications for Windows, OS X, Linux and UNIX on 32-bit and 64-bit architectures as well as several mobile platforms including Windows Mobile, iPhone SDK and embedded GTK+. It has popular language bindings for Python, Perl, Ruby and many other languages.


Il che mi fa pensare che il problema che avrei è lo stesso per le QT.
Dovrei studiarmi il C++ :(

pabloski
27-10-2012, 20:50
Il che mi fa pensare che il problema che avrei è lo stesso per le QT.
Dovrei studiarmi il C++ :(

No, wxwidgets è ovviamente scritto in C++, ma ha una miriade di bindings per i più disparati linguaggi, tra cui il C http://sourceforge.net/projects/wxc/

Il fatto di essere realizzata in C++ non implica che chi la usa deve per forza programmare in C++. Se fosse così la metà dei software moderni non esisterebbe :D

stefanoxjx
27-10-2012, 21:20
No, wxwidgets è ovviamente scritto in C++, ma ha una miriade di bindings per i più disparati linguaggi, tra cui il C http://sourceforge.net/projects/wxc/

Il fatto di essere realizzata in C++ non implica che chi la usa deve per forza programmare in C++. Se fosse così la metà dei software moderni non esisterebbe :D

Oh! si! questa è una cosa che mi piace :)
Ho appena provato un piccolo progetto con codeblocks e wxwidget ma mi da errori in compilazione pur avendo installato i vari pacchetti wx e libwx.
Domani ci riprovo, questa sera sono troppo cotto per mettermi a ragionare troppo :(
Esiste qualche tutorial in italiano?
Grazie.
Ciao.

pabloski
27-10-2012, 21:26
Esiste qualche tutorial in italiano?


Domanda imbarazzante :D

Ma probabilmente la risposta è no :muro:

stefanoxjx
27-10-2012, 21:50
Domanda imbarazzante :D

Ma probabilmente la risposta è no :muro:

:cry:

OK, allora mi arrangio con l'inglese.
Lo ammetto, la mia comunque è solo pigrizia :banned: