Newsgroup: it.comp.os.linux.development
Titolo: Typing tutor in GTK

Ho scritto un typing tutor (un programma per imparare a
dattilografare, che presenta delle parole da scrivere, un'immagine
della tastiera, ed evidenziato il prossimo tasto da premere).
Attualmente usa le ncurses.  Vorrei farne una versione per GTK: quale
widget mi consigliereste di usare per rappresentare i tasti?  Dovrebbe
essere posizionabile su coordinate arbitrarie ed avere uno stato
normale ed uno evidenziato selezionabile da codice (cosa che il
GtkButton non permette, se non prendo una cantonata).
Massimiliano

 normale ed uno evidenziato selezionabile da codice 
o usi gtk_pixmap, che cambi a seconda dello stato, oppure fai una 
figura statica e disegni un quadrato colorato sopra al tasto da premere
si usano:
GdkWindow* GtkWidget.window (per avere la gdk window del widget)
GdkGC*     gdk_gc_new (GdkWindow*) // nuovo graphic context per il 
widget
void gdk_rgb_gc_set_foreground (GdkGC*, 0xRRGGBB);
void gdk_draw_rectangle (GdkDrawable *drawable, 
                         GdkGC *gc,
                         gint filled, 
                         gint x,   //top left
                         gint y,
                         gint width, 
                         gint height);
buon divertimento
-- 
Se l'appetito vien mangiando,
Figuriamoci a digiuno...
BW2K+2

 widget mi consigliereste di usare per rappresentare i tasti?  Dovrebbe
GtkToggleButton
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail** 
       -<! Riding from wastelands Black were their skies
              My armour's still bleeding Ripped by fire and ice !>-
                    Lost Horizon - The Kingdom Of My Will

 GtkToggleButton
anche, pero' poi l'aspetto effettivo della cosa dipende dal tema gtk  
usato, e a volte puo' non andare bene: penso ai temi scuri, ad esempio


 usato, e a volte puo' non andare bene: penso ai temi scuri, ad esempio
Puoi forzare il tema dell'applicazione, fornendone uno tu, e, che dio
mi perdoni il neologismo, `parsandolo' a runtime con
void gtk_rc_parse (char *filename)
Bye,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 della tastiera, ed evidenziato il prossimo tasto da premere).
Hum... non mi è proprio chiaro quello che vuoi fare. GtkToggleButton
non va bene per i tuoi scopi?
Cmq mi sa che la soluzione ideale è quella di crearti un widget ad
hoc...
p.s. a tempo perso sto scrivendo un tutorial che spiega come scrivere
     widget propri... se ti interessa fa un fischio!
-- 
Vanni Brutto
| email 
za...@nofesso.libero.it
      |
| irc nick VanniB   |   ICQ 18526701 |
--- rimuovi nofesso per rispondere ---
---PC powered by Linux kernel 2.4.18za
Di  solito  una  persona  che  ha  una
mezz'ora da perdere  va a trascorrerla
con  uno  che   ha  mezz'ora  di  gran
lavoro. 

 void gdk_draw_rectangle (GdkDrawable *drawable, 
Grazie mille.
Massimiliano

 hoc...
Gia` l'idea di programmare interfacce grafiche non mi entusiasma (io
vivrei di ncurses e solo quando inevitabili), ora dovrei crearmene?
;-D Grazie, i mal di testa che mi son beccato al tempo in cui
estendevo la VCL di Delphi mi basteranno per questa e per la prossima
vita, o almeno finche' non escono le NUI (Neural User Interface ;-D).
(Poi, se non si fosse capito, il programma e` scritto in Ruby.)
Massimiliano

 GtkToggleButton
Come scrivevo a BlakWolf: va bene per il tasto, ma per la tastiera?
Piu` togglebutton possono essere disposti secondo coordinate
arbitrarie?  (Insomma, se guardi la tastiera che hai sotto le dita,
non somiglia esattamente ad una tabella...)
Massimiliano

 tastiera.
Mi pare che il widget per te si chiami GtkFixed, che ti permette di
mettere altri widget al suo interno fornendo le coordinate assolute.
Bye.

 > void gdk_draw_rectangle (GdkDrawable *drawable,
questa funzione accetta valori assoluti, dove 0,0 e' il solito top left
per le immagini in pos assolute, 
void gdk_draw_pixmap (GdkDrawable *drawable, // la finestra in cui 
disegnare
                      GdkGC *gc, // il GC della finestra, ottenuto come 
prima
                      GdkDrawable *src, // l'immagine da copiare
                      gint xsrc, 
                      gint ysrc, // coordinate angolo top left da cui 
copiare
                      gint xdest, 
                      gint ydest, // coordinate angolo top left in cui 
copiare
                      gint width,
                      gint height);  // grandezza della copia
nota che puoi fare due sole immagini, tasti off e tasti on, per poi 
copiarne solo la parte che ti interessa nella finestra


 della tastiera, ed evidenziato il prossimo tasto da premere).
[CUT]
Non so se hai già risolto, cmq per caso mi sono imbattuto in questo
link: 
http://opop.nols.com/gtkeyboard.html
byeZ!
-- 
Vanni Brutto
| email 
za...@nofesso.libero.it
      |
| irc nick VanniB   |   ICQ 18526701 |
--- rimuovi nofesso per rispondere ---
---PC powered by Linux kernel 2.4.18za
...che  l'acqua  sia  la  bevanda  dei
peccatori  lo  dimostra ampiamente  il
diluvio universale.