Programmare una GUI

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio da Sari »

sir_alex ha scritto:Io al momento uso ancora la generazione di codice... è simpatico vedere il pc compilare un file interface.c da 1600 righe di codice... 8)
comunque su libglade domandina: se ho + finestre ne genero una sola chiamando come secondo argomento di glade_xml_new il nome della finestra, poi per creare le altre? richiamo ancora glade_xml_new con altri nomi di finestra, ma poi per usare gtk_widget_show/hide devo usare glade_xml_get_widget con il nome della finestra come parametro? Ho capito bene?
Secondo quello che ho capito la cosa funziona così :
Una volta aperto il file XML contenente tutta l'interfaccia, da codice lo si gestisce come se fosse il classico interfaccia.c (ovviamente richiamando gli oggetti con le funzioni opportune). Penso che si proceda così

Carico il file .glade
xml = glade_xml_new("filename.glade", NULL, NULL);

e con

widget = glade_xml_get_widget(xml, "widgetname");

richiamo i puntatori come se usassi interfaccia.c in accoppiata con lookup_widget( widget )

Posso quindi visualizzare l'oggetto a schermo o connettere ad esso i segnali opportuni... posso teoricamente richiamare qualsiasi puntatore, a partire dalle varie finestre fino all'entry più nascosto...

Sbaglio a pensarla così?

sir_alex
Linux 3.x
Linux 3.x
Messaggi: 735
Iscritto il: lun 21 mar 2005, 0:00
Kernel: 2.6.35-22
Desktop: KDE4
Distribuzione: Ubuntu
Località: Milano - Corbola (RO)
Contatta:

Messaggio da sir_alex »

Concordo, la questione che devo risolvere è semplicemente creare le finestre, dato che io (anche con glade e c) creo solo il main, le altre le creo e visualizzo al volo, poi le distruggo se non mi servono più (tanto per gestire decentemente la memoria); comunque vedrò di passare anch'io a libglade... prima o poi :D
Per il discorso deprecated, useless docet: sulle api c'è scritto (di solito) cosa si usa adesso, guarda bene!

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

@sari: hai capito tutto bene, xò sappi che puoi anche collegare i segnali direttamente da glade, ricordandoti xò poi di:
1. chiamare glade_xml_signal_autoconnect (xml);
2. compilare i file che contengono gli handler con -Wl,-export-dynamic
(more info on libglade homepage)

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio da Sari »

per export-dynamic ok, ma ora mi sorge un dubbio, come faccio a fare in modo che il mio makefile includa il -WI -export-dynamic solo per i file che indico io?
Se uso -export-dynamic nella compilazione di tutti i .c del programma che succede? faccio un casino? :p

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

non credo, se poi strippi gli eseguibili non credo che la dimensione aumenti di molto.

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio da Sari »

bene bene, allora compilo tutto con quelle flags li. Ovviamente compilo per me :P, poi quando sarà finito (tra mille mila anni) farò qualcosa di più serio per la compilazione.

Ho comunque provato gli eventi gestiti direttamente dalle libglade e devo dire che alla fine sembra di avere il file interfaccia.c come al solito, unica cosa il codice risulta moooolto più pulito.

sir_alex
Linux 3.x
Linux 3.x
Messaggi: 735
Iscritto il: lun 21 mar 2005, 0:00
Kernel: 2.6.35-22
Desktop: KDE4
Distribuzione: Ubuntu
Località: Milano - Corbola (RO)
Contatta:

Messaggio da sir_alex »

Sari ha scritto:per export-dynamic ok, ma ora mi sorge un dubbio, come faccio a fare in modo che il mio makefile includa il -WI -export-dynamic solo per i file che indico io?
Usi kdevelop (ad esempio) creando il programma hello world testuale in c e poi aggiungi crei e combini files di vario tipo; in opzioni progetto poi indichi i flags aggiuntivi... Io quando ho provicchiato libglade ho usato quel modo lì... Tra l'altro così ti crea anche i pacchetti, ricordati di aggiungere il file di glade...

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio da Sari »

Quà sotto posto il link al file, per ora è solo un abbozzo di interfaccia e funzioni varie di caricamento e salvataggio da e su file e qualche gestione di callback per prenderci la mano (in una settimana non potevo fare molto :p). Niente di speciale. Parte del merito va agli sviluppatori del DIKU (anni '80? Forse si) dai quali ho preso le funzioni di controllo fatte bene bene (anche perchè con le stringhe e i caratteri ci sapevano fare ovviamente ... battuta da intenditori del genere :p ) e il modo di codare visto che la mia conoscenza del C deriva dalla loro conoscenza del C :)

http://xoomer.virgilio.it/sarimisar/File/

In futuro posterò tutto li, mio repository ufficiale :twisted:

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

una dritta che ho appena scoperto, dopo settimane di improperi: se volete usare il widget GtkAboutDialog dovete aggiornare libglade alla 2.5. tra l'altro il link sul sito è un po' fuorviante, la trovate qua: http://ftp.gnome.org/pub/GNOME/sources/libglade/2.5/.

Rispondi