Packing al lavoro con Glade

E’ giunta l’ora di mettere in pratica il packing trattato in precedenza per capirne il reale funzionamento e poter organizzare un’interfaccia a nostra discrezione. Partendo da un nuovo progetto, con una finestra vuota osserviamo il funzionamento degli oggetti contenitori.

Iniziamo inserendo nella finestra una Casella verticale di 3 elementi e dentro ciascuno inseriamo un pulsante che prenderà automaticamente tutto lo spazio di ogni elemento, ottenendo quindi 3 pulsanti della stessa altezza.

Osserviamo le possibili modifiche che si possono apportare a questo layout iniziando dalle proprietà della finestra, sulla scheda Comuni si trova la proprietà Larghezza del bordo, inizialmente impostata a 0. Cambiandola si otterrà uno spazio aggiuntivo tra il bordo della finestra e quello del controllo al suo interno, ovvero la GtkVBox.

Quella nella figura sopra è la stessa finestra con la proprietà Larghezza del bordo a 20 punti. La proprietà è inserita nella scheda Comuni poiché è una proprietà generale presente in tutti i controlli, possiamo notarlo cliccando sulla GtkVBox e scegliendo anche per quella la scheda Comuni, è presente un’altra proprietà Larghezza del bordo, impostiamo questa a 10 punti per vedere la differenza.

Il bordo più interno, di ampiezza minore, è quello della Casella verticale che la separa dagli oggetti in essa contenuti. Alla stessa maniera, può essere impostato un bordo anche per i singoli pulsanti.

Nella figura sopra abbiamo impostato la larghezza del bordo per i 3 pulsanti a 5 punti il primo, 10 punti il secondo e 15 punti il terzo.

Torniamo alla condizione iniziale, togliendo i bordi sia dalla finestra che dalla casella verticale che dai tre pulsanti e torniamo sui pulsanti. La scheda Posizionamento si riferisce alla posizione del controllo nei confronti del contenitore e al suo interno.

Al suo interno si trovano 5 proprietà interesssanti: Posizione e Tipo inserimento si riferiscono all’ordine in cui viene posto il controllo all’interno del contenitore, la prima segue una numerazione ordinale che la posizionerà rispetto le altre, il numero più basso determina il posizionamento prima di quelli con numero superiore, il tipo di inserimento determina invece se questo ordine inizia dall’inizio  (sinistra per le caselle orizzontali o in alto per quelle verticali) o dalla fine (destra per le GtkHBox e in fondo per le GtkVBox).

La proprietà Riempimento invece consente di riservare un certo numero di punti intorno al controllo (sopra e sotto per le caselle orizzontali e sinistra e destra per quelle verticali) che verranno sottratti  a tutti i componenti nello stesso contenitore. Lo spazio guadagnato non aumenterà la dimensione visibile del pulsante ma resterà inutilizzato, tutto intorno.

La figura mostra lo stesso esempio e il primo pulsante con la proprietà Riempimento fissata a 30 punti. Possiamo notare che lo spazio è stato sottratto a tutti e 3 i pulsanti e distribuito uniformemente intorno al primo pulsante.

Torniamo alla condizione iniziale con i tre pulsanti uguali tra loro e passiamo alla proprietà Espandere. Il suo valore può essere unicamente Si (True) o No (False) e determina se il controllo riceverà più spazio di quello strettamente necessario come si può notare sul primo pulsante dove la proprietà Espandere e su No.

Lasciando il primo pulsante con la proprietà Espandere su No, impostiamo il secondo pulsante con la proprietà Espandere su Si e Riempire a No. Nella figura è evidenziato il primo pulsante e il suo spazio è quello che si nota intorno, tutta l’area sotto fino al terzo pulsante, appartiene al secondo pulsante.

La proprietà Riempire combina la proprietà Espandere, utilizzando lo spazio minimo necessario e la proprietà Riempimento vista in precedenza.

Nella scheda Comuni esistono anche due proprietà che determinano le dimensioni minime desiderate per ogni componente, si tratta di Larghezza richiesta e Altezza richiesta.

Prima di concludere, tornando tra le proprietà generali della GtkVBox esistono altre due proprietà che determinano la forma dei controlli contenuti: la principale tra le due è Omogeneo che forza tutti i controlli al suo interno alla stessa dimensione; l’altra è Spaziatura che aggiunge spazio riempitivo tra un controllo e l’altro.

4 Risposte to “Packing al lavoro con Glade”


  1. 1 ugaciaka agosto 26, 2009 alle 1:30 PM

    ciao,

    sto seguendo le tue mini-guide e sto usando glade 3.6.7.

    Mi sono proprio fermato qui, io su Comuni vedo solo “Larghezza richiesta” e anche se cambio il valore non succede niente…

    Come risolvo?

    Grazie

  2. 2 Muflone agosto 26, 2009 alle 1:34 PM

    ciao ugaciaka, ci si reincontra spesso vedo 😀

    se parli della finestra, su comuni ci sono un’infinità di proprietà, non solo larghezza richiesta.
    in fondo all’elenco, la penultima è appunto larghezza del bordo

    stesso identico discorso per la casella verticale

    di quale widget parli?

  3. 3 ugaciaka agosto 26, 2009 alle 1:42 PM

    Già e giuro che non ti sto perseguitando (è da un po’ che avevo questo link al tuo blog e oggi mi sono messo a studiare). Comunque scusa sono scemo, adesso ho visto Largezza Bordo (questo è segnale che devo prendermi una pausa)!

    Visto che ci sono un’altra domanda: quando apro un nuovo progetto mi chiede se voglio farlo in formato GtkBuilder o libglade. Quale sarebbe la differenza? Posso sempre usare gli script in python come se nulla fosse con glade?

  4. 4 Muflone agosto 26, 2009 alle 1:57 PM

    gtkbuilder utilizza il metodo GtkBuilder delle Gtk
    libglade utilizza il metodo gtk.glade.XML

    tutto quel che è riportato su questo blog utilizza libglade

    gtkbuilder è disponibile soltanto da Glade 3.5, quindi solo da ubuntu 9.04 in avanti
    libglade è la libreria precedente usata da anni

    ciao


Lascia un commento




Indice degli argomenti