第 7 章 ウィジェットリファレンス 113
7.4 メニューウィジェット
7.4.1 メニューバー
メニューバーウィジェット(GtkMenuBar)は,ウィンドウの上部などに配置して,さまざまな操作を支援するウィジェット です(図7.17).
図7.17 メニューバー
オブジェクトの階層構造 G O b j e c t
+ - - - -G I n i t i a l l y U n o w n e d + - - - -G t k O b j e c t
+ - - - -G t k W i d g e t
+ - - - -G t k C o n t a i n e r + - - - -G t k M e n u S h e l l
+ - - - -G t k M e n u B a r
ウィジェットの作成
メニューバーの作成には関数gtk menu bar newを使用します.
G t k W i d g e t* g t k _ m e n u _ b a r _ n e w (v o i d) ;
メニューバーウィジェットは単にメニューを配置するためのウィジェットです.メニューを作成するには,関数gtk menu new でメニューウィジェットを作成し,関数gtk menu item newなどを使って作成したメニューアイテムを,メニューウィジェッ トに配置します.
G t k W i d g e t* g t k _ m e n u _ n e w (v o i d) ;
メニューアイテムの作成
メニューアイテムには大きく分類して5種類のメニューアイテムがあります.
1. 普通のメニューアイテム
ラベルで構成されるメニューアイテムです.メニューアイテムを作成する関数には,次の3つの関数があります.
• gtk menu item new
ラベルのないメニューアイテムを作成します.あまり使用することはないでしょう.
G t k W i d g e t* g t k _ m e n u _ i t e m _ n e w (v o i d) ;
• gtk menu item new with label
ラベルのみのメニューアイテムを作成します.
G t k W i d g e t* g t k _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l (c o n s t g c h a r * l a b e l ) ;
• gtk menu item new with mnemonic
アクセラレータ機能付きのラベルを持ったメニューアイテムを作成します.
G t k W i d g e t* g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c (c o n s t g c h a r * l a b e l ) ; 2. アイコン付きのメニューアイテム
• gtk image menu item new
アイコン付きのメニューアイテム(ラベルなし)を作成します.この関数でメニューアイテムを作成した時点ではア イコンは登録されていません.
G t k W i d g e t* g t k _ i m a g e _ m e n u _ i t e m _ n e w (v o i d) ;
このメニューアイテムにアイコンを登録するには,関数gtk image newなどでアイコンデータを作成して,関数 gtk image menu item set imageを呼び出します.
v o i d g t k _ i m a g e _ m e n u _ i t e m _ s e t _ i m a g e
(G t k I m a g e M e n u I t e m * i m a g e _ m e n u _ i t e m , G t k W i d g e t * i m a g e ) ; アイコンの登録の例を以下に示します.
G t k W i d g e t * i t e m ; G t k W i d g e t * i m a g e ; i m a g e =
g t k _ i m a g e _ n e w _ f r o m _ s t o c k ( G T K _ S T O C K _ O K , G T K _ I C O N _ S I Z E _ M E N U ) ; i t e m = g t k _ i m a g e _ m e n u _ i t e m _ n e w ( ) ;
g t k _ i m a g e _ m e n u _ i t e m _ s e t _ i m a g e ( G T K _ I M A G E _ M E N U _ I T E M ( i t e m ) , i m a g e ) ;
• gtk image menu item new with label
ラベル付きのアイコンメニューアイテムを作成します.アイコンの登録方法は上記の方法と同様です.
G t k W i d g e t*
g t k _ i m a g e _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l (c o n s t g c h a r * l a b e l ) ;
• gtk image menu item new with mnemonic
アクセラレータ機能のあるラベル付きのアイコンメニューアイテムを作成します.アイコンの登録方法は上記の方法 と同様です.
G t k W i d g e t*
g t k _ i m a g e _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c (c o n s t g c h a r * l a b e l ) ;
• gtk image menu item new from stock
GtkStockItemで定義された文字列を指定してアイコンメニューアイテムを作成します.自動的にショートカットも
設定されるので,関数の引数にはGtkAccelGroup型の変数も与えます.
G t k W i d g e t*
g t k _ i m a g e _ m e n u _ i t e m _ n e w _ f r o m _ s t o c k (c o n s t g c h a r * s t o c k _ i d , G t k A c c e l G r o u p * a c c e l _ g r o u p ) ; 3. チェックボタンのメニューアイテム
• gtk check menu item new
ラベルなしのチェックボタンメニューアイテムを作成します.
G t k W i d g e t* g t k _ c h e c k _ m e n u _ i t e m _ n e w (v o i d) ;
• gtk check menu item new with label
ラベル付きのチェックボタンメニューアイテムを作成します.
G t k W i d g e t*
g t k _ c h e c k _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l (c o n s t g c h a r * l a b e l ) ;
• gtk check menu item new with mnemonic
アクセラレータ機能のあるラベル付きのチェックボタンメニューアイテムを作成します.
G t k W i d g e t*
g t k _ c h e c k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c (c o n s t g c h a r * l a b e l ) ;
チェックメニューアイテムのチェック状態を設定するには,関数gtk check menu item set activeを使用します.
v o i d
g t k _ c h e c k _ m e n u _ i t e m _ s e t _ a c t i v e (G t k C h e c k M e n u I t e m * c h e c k _ m e n u _ i t e m , g b o o l e a n i s _ a c t i v e ) ; 4. ラジオボタンのメニューアイテム
• gtk radio menu item new
ラベルなしのラジオボタンメニューアイテムを作成します.新しいグループのメニューアイテムを作成する場合に は,引数にNULLを与えます.
G t k W i d g e t* g t k _ r a d i o _ m e n u _ i t e m _ n e w (G S L i s t * g r o u p ) ;
• gtk radio menu item new from widget
ラベルなしのラジオボタンメニューアイテムを作成します.既にあるラジオボタンメニューアイテムを引数に与える ことによって,そのアイテムと同じグループのラジオボタンメニューアイテムを作成します.
G t k W i d g e t*
g t k _ r a d i o _ m e n u _ i t e m _ n e w _ f r o m _ w i d g e t (G t k R a d i o M e n u I t e m * g r o u p ) ;
• gtk radio menu item new with label
ラベル付きのラジオボタンメニューアイテムを作成します.新しいグループのメニューアイテムを作成する場合に は,引数にNULLを与えます.
G t k W i d g e t*
g t k _ r a d i o _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l (G S L i s t * g r o u p , c o n s t g c h a r * l a b e l ) ;
• gtk radio menu item new with label from widget
ラベル付きのラジオボタンメニューアイテムを作成します.既にあるラジオボタンメニューアイテムを引数に与える ことによって,そのアイテムと同じグループのラジオボタンメニューアイテムを作成します.
G t k W i d g e t*
g t k _ r a d i o _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l _ f r o m _ w i d g e t
(G t k R a d i o M e n u I t e m * g r o u p , c o n s t g c h a r * l a b e l ) ;
• gtk radio menu item new with mnemonic
アクセラレータ機能のあるラベル付きのラジオボタンメニューアイテムを作成します.
G t k W i d g e t*
g t k _ r a d i o _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c (G S L i s t * g r o u p , c o n s t g c h a r * l a b e l ) ;
• gtk radio menu item new with mnemonic from widget
アクセラレータ機能のあるラベル付きのラジオボタンメニューアイテムを作成します.既にあるラジオボタンメ ニューアイテムを引数に与えることによって,そのアイテムと同じグループのラジオボタンメニューアイテムを作成 します.
G t k W i d g e t*
g t k _ r a d i o _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c _ f r o m _ w i d g e t
(G t k R a d i o M e n u I t e m * g r o u p , c o n s t g c h a r * l a b e l ) ; 5. その他のメニューアイテム
セパレータやティアオフアイテム(切り離し可能アイテム)です.
• gtk separator menu item new
G t k W i d g e t* g t k _ s e p a r a t o r _ m e n u _ i t e m _ n e w (v o i d) ;
• gtk tearoff menu item new
G t k W i d g e t* g t k _ t e a r o f f _ m e n u _ i t e m _ n e w (v o i d) ;
ショートカットキーの設定
メニューアイテムには,そのメニューアイテムを選択しなくてもその操作を実行できるように,ショートカットキーが設定さ れていることがよくあります.関数gtk image menu item new from stockを使ってメニューアイテムを作成すると,そのス トックアイテムに対応したショートカットキーが自動的に設定されます.その他の関数でメニューアイテムを作成した場合に は,関数gtk widget add acceleratorを使ってメニューアイテムにショートカットを設定します.
v o i d g t k _ w i d g e t _ a d d _ a c c e l e r a t o r (G t k W i d g e t * w i d g e t , c o n s t g c h a r * a c c e l _ s i g n a l , G t k A c c e l G r o u p * a c c e l _ g r o u p ,
g u i n t a c c e l _ k e y ,
G d k M o d i f i e r T y p e a c c e l _ m o d s , G t k A c c e l F l a g s a c c e l _ f l a g s ) ;
第1引数 ショートカットを設定するウィジェット
第2引数 ショートカットキーが押されたときに発生させるシグナル 第3引数 アクセラレータグループ
第4引数 ショートカットキー 第5引数 装飾子
第6引数 アクセラレータフラグ
ショートカットキーの設定例をソース7–4–1に示します.ショートカットキーGDK O,装飾子GDK CONTROL MASK を指定することで,CTRL+O(コントロールキーを押しながらo)がショートカットとして設定されます.GtkAccelGroup
は,ショートカットキーを一括管理するためのものと考えてください.
ソース7-4-1 ショートカットキー設定のサンプル
1 G t k W i d g e t * i t e m ;
2 G t k A c c e l G r o u p * a c c e l _ g r o u p ;
3
4 a c c e l _ g r o u p = g t k _ a c c e l _ g r o u p _ n e w ( ) ;
5 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " _ O p e n " ) ;
6 g t k _ w i d g e t _ a d d _ a c c e l e r a t o r ( i t e m , " a c t i v a t e " , a c c e l _ g r o u p ,
7 G D K _ O , G D K _ C O N T R O L _ M A S K , G T K _ A C C E L _ V I S I B L E ) ;
GdkModifierTypeは次のように定義されています.
t y p e d e f e n u m {
G D K _ S H I F T _ M A S K = 1 < < 0 , G D K _ L O C K _ M A S K = 1 < < 1 , G D K _ C O N T R O L _ M A S K = 1 < < 2 , G D K _ M O D 1 _ M A S K = 1 < < 3 , G D K _ M O D 2 _ M A S K = 1 < < 4 , G D K _ M O D 3 _ M A S K = 1 < < 5 , G D K _ M O D 4 _ M A S K = 1 < < 6 , G D K _ M O D 5 _ M A S K = 1 < < 7 , G D K _ B U T T O N 1 _ M A S K = 1 < < 8 , G D K _ B U T T O N 2 _ M A S K = 1 < < 9 , G D K _ B U T T O N 3 _ M A S K = 1 < < 10 , G D K _ B U T T O N 4 _ M A S K = 1 < < 11 , G D K _ B U T T O N 5 _ M A S K = 1 < < 12 , G D K _ R E L E A S E _ M A S K = 1 < < 30 ,
G D K _ M O D I F I E R _ M A S K = G D K _ R E L E A S E _ M A S K | 0 x 1 f f f } G d k M o d i f i e r T y p e;
GtkAccelFlagsは次のように定義されています.
t y p e d e f e n u m {
G T K _ A C C E L _ V I S I B L E = 1 < < 0 , G T K _ A C C E L _ L O C K E D = 1 < < 1 , G T K _ A C C E L _ M A S K = 0 x 0 7 } G t k A c c e l F l a g s;
シ ョ ー ト カ ッ ト キ ー を メ ニ ュ ー に 表 示 す る 場 合 に は ,GTK ACCEL VISIBLE を 指 定 し ま す .ま た ,設 定 し た キ ー を 固 定 す る た め に は GTK ACCEL LOCKED を 指 定 し ま す .両 方 設 定 し た い 場 合 に は ,GTK ACCEL VISIBLE |
GTK ACCEL LOCKEDのように論理和で指定するか,GTK ACCEL MASKを指定します.
階層的なメニューの作成
1つのメニューの中にさらに階層的にサブメニューを作成することはよくあります. サブメニューを作成するには,関数 gtk menu item set submenuを使います.
v o i d g t k _ m e n u _ i t e m _ s e t _ s u b m e n u (G t k M e n u I t e m * m e n u _ i t e m , G t k W i d g e t * s u b m e n u ) ; サブメニュー作成の手順は以下のようになります.
1. 親メニューの作成
m e n u = g t k _ m e n u _ n e w ( ) ; 2. メニューアイテムの作成&セット
i t e m = g t k _ m e n u _ i t e m _ n e w ( ) ;
g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
3. サブメニューの作成
s u b m e n u = g t k _ m e n u _ n e w ( ) ; 4. サブメニューのセット
g t k _ m e n u _ i t e m _ s e t _ s u b m e n u ( G T K _ M E N U _ I T E M ( i t e m ) , s u b m e n u ) ; 5. サブメニューアイテムの作成&セット
s u b i t e m = g t k _ m e n u _ i t e m _ n e w ( ) ;
g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( s u b m e n u ) , s u b i t e m ) ;
サンプルプログラム
ソース7–4–2に,図7.17のメニューを作成するソースを示します.左端のFileメニューは,普通のメニューアイテムで構成
されています.真ん中のEditメニューは,アイコン付きのメニューアイテムです.右端のViewメニューは,チェックメニュー アイテムとラジオメニューアイテム,サブメニューの例です.
こ の プ ロ グ ラ ム で は メ ニ ュ ー に 設 定 し た シ ョ ー ト カ ッ ト キ ー を 親 ウ ィ ン ド ウ に 登 録 す る こ と で ,親 ウ ィ ン ド ウ 上 で 設 定 し た シ ョ ー ト カ ッ ト キ ー を 有 効 に し て い ま す .ウ ィ ン ド ウ 上 で シ ョ ー ト カ ッ ト キ ー を 有 効 に す る に は ,関 数 gtk window add accel groupを使用します.
v o i d g t k _ w i n d o w _ a d d _ a c c e l _ g r o u p (G t k W i n d o w * w i n d o w , G t k A c c e l G r o u p * a c c e l _ g r o u p ) ;
ソース7-4-2 メニューバーのサンプルプログラム: gtkmenubar-sample.c
1 # i n c l u d e <g t k / g t k . h >
2 # i n c l u d e <g d k / g d k k e y s y m s . h >
3
4 s t a t i c v o i d
5 c b _ q u i t (G t k W i d g e t * w i d g e t , g p o i n t e r d a t a )
6 {
7 g t k _ m a i n _ q u i t ( ) ;
8 }
9
10 s t a t i c G t k W i d g e t*
11 c r e a t e _ m e n u (v o i d)
12 {
13 G t k W i d g e t * m e n u b a r ;
14 G t k W i d g e t * m e n u ;
15 G t k W i d g e t * i t e m ;
16 G t k W i d g e t * i m a g e ;
17 G t k A c c e l G r o u p * a c c e l _ g r o u p ;
18 G S L i s t * g r o u p = N U L L ;
19
20 m e n u b a r = g t k _ m e n u _ b a r _ n e w ( ) ;
21 a c c e l _ g r o u p = g t k _ a c c e l _ g r o u p _ n e w ( ) ;
22
23 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " _ F i l e " ) ;
24 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u b a r ) , i t e m ) ;
25 m e n u = g t k _ m e n u _ n e w ( ) ;
26 g t k _ m e n u _ i t e m _ s e t _ s u b m e n u ( G T K _ M E N U _ I T E M ( i t e m ) , m e n u ) ;
27 {
28 i t e m = g t k _ t e a r o f f _ m e n u _ i t e m _ n e w ( ) ;
29 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
30
31 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " _ N e w " ) ;
32 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
33 g t k _ w i d g e t _ a d d _ a c c e l e r a t o r ( i t e m , " a c t i v a t e " , a c c e l _ g r o u p ,
34 G D K _ N ,
35 G D K _ C O N T R O L _ M A S K , G T K _ A C C E L _ V I S I B L E ) ;
36
37 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " _ O p e n " ) ;
38 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
39 g t k _ w i d g e t _ a d d _ a c c e l e r a t o r ( i t e m , " a c t i v a t e " , a c c e l _ g r o u p ,
40 G D K _ O ,
41 G D K _ C O N T R O L _ M A S K , G T K _ A C C E L _ V I S I B L E ) ;
42
43 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " _ S a v e " ) ;
44 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
45 g t k _ w i d g e t _ a d d _ a c c e l e r a t o r ( i t e m , " a c t i v a t e " , a c c e l _ g r o u p ,
46 G D K _ S ,
47 G D K _ C O N T R O L _ M A S K , G T K _ A C C E L _ V I S I B L E ) ;
48
49 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " S a v e _ a s " ) ;
50 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
51 g t k _ w i d g e t _ a d d _ a c c e l e r a t o r ( i t e m , " a c t i v a t e " , a c c e l _ g r o u p ,
52 G D K _ S ,
53 G D K _ C O N T R O L _ M A S K | G D K _ S H I F T _ M A S K ,
54 G T K _ A C C E L _ V I S I B L E ) ;
55
56 i t e m = g t k _ s e p a r a t o r _ m e n u _ i t e m _ n e w ( ) ;
57 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
58
59 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " _ Q u i t " ) ;
60 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
61 g t k _ w i d g e t _ a d d _ a c c e l e r a t o r ( i t e m , " a c t i v a t e " , a c c e l _ g r o u p ,
62 G D K _ Q ,
63 G D K _ C O N T R O L _ M A S K , G T K _ A C C E L _ V I S I B L E ) ;
64 g _ s i g n a l _ c o n n e c t ( G _ O B J E C T ( i t e m ) , " a c t i v a t e " ,
65 G _ C A L L B A C K ( c b _ q u i t ) , N U L L ) ;
66 }
67 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " _ E d i t " ) ;
68 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u b a r ) , i t e m ) ;
69 m e n u = g t k _ m e n u _ n e w ( ) ;
70 g t k _ m e n u _ i t e m _ s e t _ s u b m e n u ( G T K _ M E N U _ I T E M ( i t e m ) , m e n u ) ;
71 {
72 i t e m = g t k _ t e a r o f f _ m e n u _ i t e m _ n e w ( ) ;
73 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
74
75 i t e m = g t k _ i m a g e _ m e n u _ i t e m _ n e w _ f r o m _ s t o c k ( G T K _ S T O C K _ C U T ,
76 a c c e l _ g r o u p ) ;
77 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
78
79 i t e m = g t k _ i m a g e _ m e n u _ i t e m _ n e w _ f r o m _ s t o c k ( G T K _ S T O C K _ C O P Y ,
80 a c c e l _ g r o u p ) ;
81 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
82
83 i t e m = g t k _ i m a g e _ m e n u _ i t e m _ n e w _ f r o m _ s t o c k ( G T K _ S T O C K _ P A S T E ,
84 a c c e l _ g r o u p ) ;
85 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
86
87 i t e m = g t k _ i m a g e _ m e n u _ i t e m _ n e w _ f r o m _ s t o c k ( G T K _ S T O C K _ D E L E T E ,
88 a c c e l _ g r o u p ) ;
89 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
90 g t k _ w i d g e t _ a d d _ a c c e l e r a t o r ( i t e m , " a c t i v a t e " , a c c e l _ g r o u p ,
91 G D K _ D ,
92 G D K _ C O N T R O L _ M A S K , G T K _ A C C E L _ V I S I B L E ) ;
93 }
94 i t e m = g t k _ m e n u _ i t e m _ n e w _ w i t h _ m n e m o n i c ( " _ V i e w " ) ;
95 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u b a r ) , i t e m ) ;
96 m e n u = g t k _ m e n u _ n e w ( ) ;
97 g t k _ m e n u _ i t e m _ s e t _ s u b m e n u ( G T K _ M E N U _ I T E M ( i t e m ) , m e n u ) ;
98 {
99 i t e m = g t k _ t e a r o f f _ m e n u _ i t e m _ n e w ( ) ;
100 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
101
102 i t e m = g t k _ c h e c k _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l ( " S h o w H i d d e n F o l d e r s " ) ;
103 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
104 g t k _ w i d g e t _ a d d _ a c c e l e r a t o r ( i t e m , " a c t i v a t e " , a c c e l _ g r o u p ,
105 G D K _ H ,
106 G D K _ C O N T R O L _ M A S K , G T K _ A C C E L _ V I S I B L E ) ;
107
108 i t e m = g t k _ i m a g e _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l ( " S o r t b y . . . " ) ;
109 i m a g e = g t k _ i m a g e _ n e w _ f r o m _ s t o c k ( G T K _ S T O C K _ S O R T _ A S C E N D I N G ,
110 G T K _ I C O N _ S I Z E _ M E N U ) ;
111 g t k _ i m a g e _ m e n u _ i t e m _ s e t _ i m a g e ( G T K _ I M A G E _ M E N U _ I T E M ( i t e m ) , i m a g e ) ;
112 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
113 m e n u = g t k _ m e n u _ n e w ( ) ;
114 g t k _ m e n u _ i t e m _ s e t _ s u b m e n u ( G T K _ M E N U _ I T E M ( i t e m ) , m e n u ) ;
115 {
116 i t e m = g t k _ r a d i o _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l ( g r o u p , " F i l e t y p e " ) ;
117 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
118 g t k _ c h e c k _ m e n u _ i t e m _ s e t _ a c t i v e ( G T K _ C H E C K _ M E N U _ I T E M ( i t e m ) , T R U E ) ;
119
120 g r o u p = g t k _ r a d i o _ m e n u _ i t e m _ g e t _ g r o u p ( G T K _ R A D I O _ M E N U _ I T E M ( i t e m ) ) ;
121 i t e m = g t k _ r a d i o _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l ( g r o u p , " F i l e s i z e " ) ;
122 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
123
124 g r o u p = g t k _ r a d i o _ m e n u _ i t e m _ g e t _ g r o u p ( G T K _ R A D I O _ M E N U _ I T E M ( i t e m ) ) ;
125 i t e m = g t k _ r a d i o _ m e n u _ i t e m _ n e w _ w i t h _ l a b e l ( g r o u p , " U p d a t e t i m e " ) ;
126 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( m e n u ) , i t e m ) ;
127 }
128 }
129 r e t u r n m e n u b a r ;
130 }
131 132 i n t
133 m a i n (i n t a r g c , c h a r * * a r g v )
134 {
135 G t k W i d g e t * w i n d o w ;
136 G t k W i d g e t * m e n u b a r ;
137
138 g t k _ i n i t ( & a r g c , & a r g v ) ;
139
140 w i n d o w = g t k _ w i n d o w _ n e w ( G T K _ W I N D O W _ T O P L E V E L ) ;
141 g t k _ w i n d o w _ s e t _ t i t l e ( G T K _ W I N D O W ( w i n d o w ) , " G t k M e n u b a r S a m p l e " ) ;
142 g t k _ w i d g e t _ s e t _ s i z e _ r e q u e s t ( w i n d o w , 3 0 0 , -1);
143 g t k _ c o n t a i n e r _ s e t _ b o r d e r _ w i d t h ( G T K _ C O N T A I N E R ( w i n d o w ) , 5 ) ;
144 g _ s i g n a l _ c o n n e c t ( G _ O B J E C T ( w i n d o w ) , " d e s t r o y " ,
145 G _ C A L L B A C K ( g t k _ m a i n _ q u i t ) , N U L L ) ;
146
147 m e n u b a r = c r e a t e _ m e n u ( ) ;
148 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( w i n d o w ) , m e n u b a r ) ;
149
150 g t k _ w i d g e t _ s h o w _ a l l ( w i n d o w ) ;
151 g t k _ m a i n ( ) ;
152
153 r e t u r n 0 ;
154 }