Newsgroup: it.comp.os.linux.development
Titolo: per chi usa le ctk

ma come diavolo si fa ad attivare i menu?
perché questo codice non va? Non riesco ad attivare esci e a far terminare
il programma...
...
  window1 = ctk_window_new (CTK_WINDOW_TOPLEVEL);
  ctk_window_set_title (CTK_WINDOW (window1), "Orco Test");
  ctk_widget_set_usize (CTK_WIDGET (window1), 40, 20);
  ctk_window_set_policy (CTK_WINDOW (window1), TRUE, TRUE, FALSE);
 
  vbox1 = ctk_vbox_new (FALSE, 0);
  ctk_widget_show (vbox1);
  ctk_container_add (CTK_CONTAINER (window1), vbox1);
 
  hbox1 = ctk_hbox_new (FALSE, 1);
  ctk_widget_show (hbox1);
  ctk_box_pack_start (CTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
 
  file_menu = ctk_menu_new ();
  ctk_widget_show (file_menu);
  ctk_box_pack_start (CTK_BOX (hbox1), file_menu, FALSE, FALSE, 0);
 
  menuitem1 = ctk_menu_item_new_with_label ("File");
  ctk_widget_show (menuitem1);
  ctk_menu_append (CTK_MENU (file_menu), menuitem1);
 
  esci1 = ctk_menu_item_new_with_label ("Esci");
  ctk_widget_show (esci1);
  ctk_menu_append (CTK_MENU (file_menu), esci1);
...
  ctk_signal_connect (CTK_OBJECT (esci1), "activate",
                      CTK_SIGNAL_FUNC (on_esci1_activate), NULL);

 ma come diavolo si fa ad attivare i menu?
Non usare i menù, usa le ItemFactory.
+++
Il tuo esempio non funziona perché devi creare la seguente catena di
widget:
	GtkMenuBar
	+---- GtkMenu
	     +---- GtkMenuItem
Ovvero: devi creare una menubar da inserire in una VBox (non una HBox);
in seguito, ci aggiungi un GtkMenu a cui "appenderai" i vari MenuItem.
Per evitare questo casino, che soprattutto è orrido da mantenere e da
estendere, usa una ItemFactory:
#v+
static GtkItemFactoryEntry entries[] = {
  /* path, accelerator, callback, action, menuitem */
  /* File Menu */
  { "/_File", NULL, NULL, 0, "<Branch>" },
  { "/File/_New", NULL, on_new_clicked, 0, "<StockItem>", GTK_STOCK_NEW },
  { "/File/sep1", NULL, NULL, 0, "<Separator>" },
  { "/File/_Quit", NULL, on_quit_clicked, 0, "<StockItem>", GTK_STOCK_QUIT },
 
  /* Edit Menu */
  { "/_Edit", NULL, NULL, 0, "<Branch>" },
  { "/Edit/_Cut", NULL, on_cut_clicked, 0, "<StockItem>", GTK_STOCK_CUT },
  { "/Edit/C_opy", NULL, on_copy_clicked, 0, "<StockItem>", GTK_STOCK_COPY },
  { "/Edit/_Paste", NULL, on_paste_clicked, 0, "<StockItem>", GTK_STOCK_PASTE },
 
}
#v-
Puoi accedere ad ogni elemento del menu usando il path.
Il callback tipo è:
#v+
void (*callback) (gpointer user_data,
                  gint action,
		  GtkWidget *menu_item);
#v-
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://digilander.libero.it/ebassi/
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 in seguito, ci aggiungi un GtkMenu a cui "appenderai" i vari MenuItem.
Calma, qui si parlava di ctk, non gtk+ :)))
AFAIK gtk_menu_bar non è implementato in ctk, quindi non è possibile
aggiungere menù alle finestre.
Avevo dato un'occhio al sorgente per vedere se era complesso scriversi
il widget gtk_menu_bar, e imho non sarebbe impossibile... purtroppo in
questi giorni sono preso dallo sviluppo di un altro progetto se no
l'avrei già fatto :(
-- 
Vanni Brutto
| email 
za...@nofesso.libero.it
      |
| irc nick Zanac    |   ICQ 18526701 |
--- remove nofesso to reply ----------
---PC powered by Linux kernel 2.4.20  
E' la donna che  sceglie l'uomo che la
sceglierà. 

 Uhm, non sarà che si chiamano gtk? ;-)
no no, ctk, console toolkit :-)
hanno una semantica molto simile alle gtk.

 aggiungere menù alle finestre.
mi sono arrangiato con una hbox :-)
ci sta quasi bene, solo che non riesco a clickare sui menu.....

 no no, ctk, console toolkit :-)
Infatti mi stavo chiedendo che cavolo fossero, e in un altra console
avevo aperto perfino una ricerca su Google, che, però, mi aveva spedito
a tutti i siti ceco/slovacchi della rete. Ergo avevo pensato ad un
typo... :-)
+++
Sembrerebbe un toolkit interessante: hai dei link?


 ci sta quasi bene, solo che non riesco a clickare sui menu.....
Boh, hai guardato l'esempio om? In quell'esempio hanno dei menuitem che
rispondono ai callback dell'utente...
Come ti avevo detto io mi ero messo qualche giorno fa ad analizzare il
problema e ti dico la soluzione più indolore (se hai una mezza giornata
libera imho riesci ad implementare il tutto, testare, e rilasciare una
patch per ctk... cmq come ho detto quando ho più tempo libero io lo farò
sicuramente!).
Hai provato l'esempio "om" incluso in CTK? Se hai notato c'è un menù che
funziona bene... solo che è incluso in un ctk_option_menu invece che
attaccare i vari menuitem ad un altro item che è stato settato come
submenu tramite un ipotetico ctk_menu_item_set_submenu (che, guarda
caso, non esiste). Infatti quando selezioni un menuitem questo va a
cambiare il titolo del ctk_option_menu (spero tu abbia capito cosa
intendo).
IMHO si dovrebbe fare un clone del widget ctk_option_menu, solo che
dovrebbe funzionare come un menu di più alto livello. A questo punto si
dovrebbe creare un altro widget (ctk_menu_bar) che è banalmente un hbox
che attacca più widget del nuovo tipo in orizzontale. Il problema grosso
starebbe nel fatto che:
1. abbiamo creare un nuovo widget, quindi mantenere la sintassi di GTK+
diventa più complesso (in GTK+ è sempre menuitem che diventa un submenu,
invece in questo modo i submenu sono un widget a se stante).
2. anche ammesso che non ci importi creare un'API leggermente diversa da
GTK+ nasce il problema dei sub-submenu (cioè i menù di secondo livello).
Mi fermo qui perché ho scritto molto e concluso poco (nel senso che
queste sono solo considerazioni di un perfetto mona come me :))
-- 
Vanni Brutto
| email 
za...@nofesso.libero.it
      |
| irc nick Zanac    |   ICQ 18526701 |
--- remove nofesso to reply ----------
---PC powered by Linux kernel 2.4.20  
Di  solito  una  persona  che  ha  una
mezz'ora da perdere  va a trascorrerla
con  uno  che   ha  mezz'ora  di  gran
lavoro. 

 Sembrerebbe un toolkit interessante: hai dei link?
http://sourceforge.net/projects/libctk/