PDA

Visualizza la versione completa : parser linux


giannivilla
29-08-2007, 18:08
Ciao a tutti.
Sono nei guai.
Devo scrivere un'applicazione C linux per un ARM, che deve visualizzare un ebook scritto in formato HTML.
Io sono un programmatore C basso livello, mi verrebbe in mente mettere su uno strato che, dato un puntatore ad un file HTML, ne visualizzi il contenuto (si chiama parser una cosa così??).
Insomma, devo fare quello che normalmente fa un browser...però, per controllare alcune cose, lo devo scrivere. in C.

Qualcuno ha un sano consiglio da darmi?? (che non sia il suicidio??)

:confused: :confused: :confused:

Ciao ciao!!

vortex87
29-08-2007, 18:12
Si tratta di un programma grafico o da linea di comando?

Nel primo caso parti con le librerie grafiche: www.gtk.org - le GTK sono le più diffuse
Tra l'altro c'è un widget (un componente) chiamato GtkHtmlView che visualizza di suo le pagine html più semplici. Se non hai necessità di agire sul processo di parsing e rendering del file forse puoi usare questo.

Se invece si tratta di un programma testuale, forse le librerie più basilari (glib) che trovi a quel sito possono comunque esserti utili.

giannivilla
29-08-2007, 18:19
Intanto ti ringrazio dell pronta rsposta....
Probabilmente sono proprio confuso... Io sto gia usando le gtk+, per visualizzare del testo.
In pratica, apro una finestra sul dispositivo, ci scrivo del testo, o metto dei bottoni, e lui lo visualizza.
Ma tra fare questo e il visualizzare una pagina html, non devo mettere uno strato che capisce tutti quegli header che si trovano tra i vari <...>???

Probabilmente sto dicendo delle banalità....

:cry: :cry: :cry:

Ciao

vortex87
29-08-2007, 18:43
Beh, allora o scrivi un tuo parser e renderer (direi che è abbastanza troppo complicato) o ne usi uno già fatto. Per quanto ne so le opzioni sono 3:
- gtkhtml 2 o 3: il più semplice
- gtkmoz: per incorporare gecko, quello che sta alla base di firefox
- webkit-gtk: il più recente, ancora in fase di sviluppo, è quello usato anche da safari

Grossomodo si tratta di inserire un widget (come un bottone) e fornirgli l'url da visualizzare, direi

giannivilla
29-08-2007, 19:16
stavo provando appunto ad inserire qualcosa per incorporare gecko, visto che su questo dispositivo (iliad, irex) c'è gia installato mozilla minimo.
Ma tra il dire questo e iniziare a scrivere delle istruzioni in cui visualizzo una pagina formattata html c'è in mezzo il mondo.
Conosco i widget, conosco le callback, etc etc. Un bottone riesco a farlo, a gestirlo, a gestirne il click. Uguale per quanto concerne una finestra di testo. Ma delle funzioni per html non trovo una riga di documentazione, non sò proprio dove guardare.
Questo cavolo di (parser o render??) html proprio ce l'ho sul groppone, come un macigno.
Per me, antico programmatore C, si risolverebbe tutto aprendo un file e cercando di interpretare i vari <STRINGA>. Ma mi rendo conto che io non conosco l'HTML, e che questo qualcosa esiste già....

Davvero è difficile!!!

vortex87
29-08-2007, 19:42
Originariamente inviato da giannivilla
stavo provando appunto ad inserire qualcosa per incorporare gecko, visto che su questo dispositivo (iliad, irex) c'è gia installato mozilla minimo.
Ma tra il dire questo e iniziare a scrivere delle istruzioni in cui visualizzo una pagina formattata html c'è in mezzo il mondo.
Conosco i widget, conosco le callback, etc etc. Un bottone riesco a farlo, a gestirlo, a gestirne il click. Uguale per quanto concerne una finestra di testo. Ma delle funzioni per html non trovo una riga di documentazione, non sò proprio dove guardare.
Questo cavolo di (parser o render??) html proprio ce l'ho sul groppone, come un macigno.
Per me, antico programmatore C, si risolverebbe tutto aprendo un file e cercando di interpretare i vari <STRINGA>. Ma mi rendo conto che io non conosco l'HTML, e che questo qualcosa esiste già....

Davvero è difficile!!!

Si tratta sia di un parser (poichè interpreta le istruzioni codificate in html) che di renderer (poichè si occupa anche di traformarle in grafica).
Io avevo provato a fare qualcosa con Python, ma credo anche in C non sarà poi molto più complicato. Alla fine probabilmente si tratterà di qualche include, e qualche istruzione per inserire il widget (proprio come un bottone) e dargli in pasto l'url.

Il componente per incorporare gecko dovrebbe essere "gtkmozembed".
Questo potrebbe interessarti: http://www.linuxlab.cl/log/category/linux/page/3/
(a parte che l'esempio in questione è fatto con Glade)

billiejoex
29-08-2007, 20:47
Insomma, devo fare quello che normalmente fa un browser...però, per controllare alcune cose, lo devo scrivere. in C.

Qualcuno ha un sano consiglio da darmi?? (che non sia il suicidio??)
Si, lascia perdere C (sarebbe esattamente il 'suicidio' di cui parli) e usa qualcosa di più appropriato.
Metodi utili a fare questo genere di cose sono integrati più o meno in tutti i toolkit grafici come gtk e wx.

giannivilla
30-08-2007, 15:22
Lasciare perdere C non mi pare una cosa sana, dal momento che è proprio l'unica cosa che non mi spaventa. sono 22 anni che gioco con l'assembly e il C, ho scritto applicazioni realtime complesse.... se non dovessi riuscire ad utilizzarli con linux pazienza, tornerò ad occuparmi di altro.
Devono esserci delle librerie. Deve esserci un cavolo di file ".a" che contiene il codice che mi serve.
I widget li compili come ti pare, includi il file .h e vai facile...
Il problema è invece capire, quando devi linkare le librerie di cui stiamo parlando, dove devi andarle a prendere: per utilizzare quelle librerie gtkmozembed devi buildare mozilla. Un vero inferno. Uno sfascio di errori. Perchè, come gia detto, io non sono su un sistema nativo completo, ma su una specie di scretchbox, insomma, io devo compilare per una spece di PPC. Con arm-linux-g++....
Io rinuncerò, non sono capace forse... Ma mi pare di capire che in giro sono tutti un pò nelle mie stesse situazioni....
boh!!

vortex87
30-08-2007, 15:31
Io proverei con gtkhtml, se non altro deve sicuramente essere più semplice da compilare

giannivilla
30-08-2007, 15:54
README riporta:
In order to compile GtkHTML, you need libgnome[ui] 1.112.1 (or later),
Bonobo 1.112.1 (or later), gnome-print 2.2.0 (or later) and GAL 1.99.1 (or
later).

io tutte queste cose non le ho!!!
e se penso alla cretinata che devo fare vado fuori di testa.......

Loading