File: menu.scm

package info (click to toggle)
gauche-gtk 0.6%2Bgit20160927-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,452 kB
  • sloc: ansic: 7,097; lisp: 5,659; sh: 2,829; makefile: 338
file content (53 lines) | stat: -rw-r--r-- 2,049 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
;;
;; Simple example, ported from the one in Gtk+2.0 tutorial.
;;
;; $Id: menu.scm,v 1.2 2007/01/13 01:36:30 maruska Exp $

(use gtk)

(define (main args)
  (gtk-init args)
  (let1 window (gtk-window-new GTK_WINDOW_TOPLEVEL)
    (gtk-widget-set-size-request window 200 100)
    (gtk-window-set-title window "GTK Menu Test")
    (g-signal-connect window "delete_event" (lambda _ (gtk-main-quit)))
    
    (let1 menu (gtk-menu-new)
      (dotimes (i 3)
        (let* ((s #`"Test-undermenu - ,i")
               (menu-item (gtk-menu-item-new-with-label s)))
          (gtk-menu-shell-append menu menu-item)
          (g-signal-connect menu-item "activate" (lambda _ (print s)))
          (gtk-widget-show menu-item)))
      (let1 root-menu (gtk-menu-item-new-with-label "Root Menu")
        (gtk-widget-show root-menu)
        (gtk-menu-item-set-submenu root-menu menu)
        (let1 vbox (gtk-vbox-new #f 0)
          (gtk-container-add window vbox)
          (gtk-widget-show vbox)
          (let1 menu-bar (gtk-menu-bar-new)
            (gtk-box-pack-start vbox menu-bar #f #f 2)
            (gtk-widget-show menu-bar)
            (let1 button (gtk-button-new-with-label "press me")
              (g-signal-connect button "event"
                                (lambda (w event)
                                  (if (eqv? (ref event 'type)
                                            GDK_BUTTON_PRESS)
                                      (begin
                                        (gtk-menu-popup menu
                                                        #f #f #f
                                                        (ref event 'button)
                                                        (ref event 'time))
                                        #t)
                                      #f)))
              (gtk-box-pack-end vbox button #t #t 2)
              (gtk-widget-show button))
            (gtk-menu-shell-append menu-bar root-menu)
            ))))
    (gtk-widget-show window)
    )
  (gtk-main)
  0)