第 6 章 ウィジェットリファレンス 83
6.4 メニューウィジェット
6.4.1 メニューバー
47 g t k _ s c r o l l e d _ w i n d o w _ s e t _ p o l i c y ( G T K _ S C R O L L E D _ W I N D O W ( s c r o l l e d w i n d o w ) ,
48 G T K _ P O L I C Y _ A U T O M A T I C ,
49 G T K _ P O L I C Y _ A U T O M A T I C ) ;
50 g t k _ b o x _ p a c k _ s t a r t ( G T K _ B O X ( v b o x ) , s c r o l l e d w i n d o w , T R U E , T R U E , 0 ) ;
51
52 t e x t v i e w = g t k _ t e x t _ v i e w _ n e w ( ) ;
53 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 c r o l l e d w i n d o w ) , t e x t v i e w ) ;
54 s e t _ t e x t ( G T K _ T E X T _ V I E W ( t e x t v i e w ) ,
55 " T h i s à i s à a às a m p l e à p r o g r a m à o f à G t k T e x t V i e w . \ n "
56 " G t k T e x t V i e w à i s à a à . . . \ n "
57 "このプログラムはG t k T e x t V i e wウ ィ ジ ェ ッ ト の サ ン プ ル\ n "
58 "プログラムです。" ) ;
59
60 h b o x = g t k _ h b o x _ n e w ( F A L S E , 5 ) ;
61 g t k _ b o x _ p a c k _ s t a r t ( G T K _ B O X ( v b o x ) , h b o x , F A L S E , F A L S E , 0 ) ;
62
63 b u t t o n = g t k _ b u t t o n _ n e w _ f r o m _ s t o c k ( G T K _ S T O C K _ Q U I T ) ;
64 g _ s i g n a l _ c o n n e c t ( G _ O B J E C T ( b u t t o n ) , " c l i c k e d " ,
65 G _ C A L L B A C K ( g t k _ m a i n _ q u i t ) , N U L L ) ;
66 g t k _ b o x _ p a c k _ e n d ( G T K _ B O X ( h b o x ) , b u t t o n , F A L S E , F A L S E , 0 ) ;
67
68 b u t t o n = g t k _ b u t t o n _ n e w _ f r o m _ s t o c k ( G T K _ S T O C K _ A P P L Y ) ;
69 g _ s i g n a l _ c o n n e c t ( G _ O B J E C T ( b u t t o n ) , " c l i c k e d " ,
70 G _ C A L L B A C K ( p r i n t _ t e x t ) , (g p o i n t e r) t e x t v i e w ) ;
71 g t k _ b o x _ p a c k _ e n d ( G T K _ B O X ( h b o x ) , b u t t o n , F A L S E , F A L S E , 0 ) ;
72
73 g t k _ w i d g e t _ s h o w _ a l l ( w i n d o w ) ;
74 g t k _ m a i n ( ) ;
75
76 r e t u r n 0 ;
77 }
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種類のメニューアイテムがあります.
• 普通のメニューアイテム
ラベルで構成されるメニューアイテムです. メニューアイテムを作成する関数には,次の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 ) ;
• アイコン付きのメニューアイテム – gtk image menu item new
アイコン付きのメニューアイテム(ラベルなし)を作成します. この関数でメニューアイテムを作成 した時点ではアイコンは登録されていません.
図6.17 メニューバー
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 ) ;
• チェックボタンのメニューアイテム – 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 ) ;
• ラジオボタンのメニューアイテム – 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 ) ;
• その他のメニューアイテム
セパレータやティアオフアイテム(切り離し可能アイテム)です. – 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引数: アクセラレータフラグ
ショートカットキー設定の例を次に示します. ショートカットキーGDK O,装飾子GDK CONTROL MASK を指定することでCTRL+O(コントロールキーを押しながらo) がショートカットとして設定されます.
GtkAccelGroupは,ショートカットキーを一括管理するためのものと考えてください.
G t k W i d g e t * i t e m ;
G t k A c c e l G r o u p * a c c e l _ g r o u p ;
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 ( ) ;
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 " ) ;
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 ,
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 , / * d i s p l a y i n G t k A c c e l L a b e l ? * / G T K _ A C C E L _ L O C K E D = 1 < < 1 , / * i s i t r e m o v a b l e ? * /
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 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 ) ;
サンプルプログラム
図6.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 ) ;
ソース 6–4–1 メニューバーのサンプルプログラム: 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 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 ) {
5 g t k _ m a i n _ q u i t ( ) ;
6 }
7
8 s t a t i c G t k W i d g e t* c r e a t e _ m e n u (v o i d) {
9 G t k W i d g e t * m e n u b a r ;
10 G t k W i d g e t * m e n u ;
11 G t k W i d g e t * i t e m ;
12 G t k W i d g e t * i m a g e ;
13 G t k A c c e l G r o u p * a c c e l _ g r o u p ;
14 G S L i s t * g r o u p = N U L L ;
15
16 m e n u b a r = g t k _ m e n u _ b a r _ n e w ( ) ;
17 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 ( ) ;
18
19 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 " ) ;
20 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 ) ;
21 m e n u = g t k _ m e n u _ n e w ( ) ;
22 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 ) ;
23 {
24 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 ( ) ;
25 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 ) ;
26
27 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 " ) ;
28 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 ) ;
29 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 ,
30 G D K _ N , 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 ) ;
31
32 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 " ) ;
33 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 ) ;
34 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 ,
35 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 ) ;
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 ( " _ S a v e " ) ;
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 _ S , 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 ) ;
41
42 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 " ) ;
43 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 ) ;
44 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 ,
45 G D K _ S , 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 ,
46 G T K _ A C C E L _ V I S I B L E ) ;
47
48 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 ( ) ;
49 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 ) ;
50
51 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 " ) ;
52 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 ) ;
53 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 ,
54 G D K _ Q , 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 ) ;
55 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 " , G _ C A L L B A C K ( c b _ q u i t ) , N U L L ) ;
56 }
57 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 " ) ;
58 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 ) ;
59 m e n u = g t k _ m e n u _ n e w ( ) ;
60 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 ) ;
61 {
62 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 ( ) ;
63 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 ) ;
64
65 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 , a c c e l _ g r o u p ) ;
66 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 ) ;
67
68 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 , a c c e l _ g r o u p ) ;
69 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 ) ;
70
71 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 , a c c e l _ g r o u p )
;
72 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 ) ;
73
74 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 , a c c e l _ g r o u p ) ;
75 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 ) ;
76 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 ,
77 G D K _ D , 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 ) ;
78 }
79 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 " ) ;
80 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 ) ;
81 m e n u = g t k _ m e n u _ n e w ( ) ;
82 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 ) ;
83 {
84 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 ( ) ;
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 _ 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 " ) ;
88 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 ) ;
89 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 ,
90 G D K _ H , 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 ) ;
91
92 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 à . . . " ) ;
93 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 ,
94 G T K _ I C O N _ S I Z E _ M E N U ) ;
95 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 ) ;
96 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 ) ;
97 m e n u = g t k _ m e n u _ n e w ( ) ;
98 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 ) ;
99 {
100 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 " ) ;
101 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 ) ;
102 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 ) ;
103
104 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 ) ) ;
105 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 " ) ;
106 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 ) ;
107
108 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 ) ) ;
109 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 " ) ;
110 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 ) ;
111 }
112 }
113 r e t u r n m e n u b a r ;
114 }
115
116 i n t m a i n (i n t ar g c , c h a r * * a r g v ) {
117 G t k W i d g e t * w i n d o w ;
118 G t k W i d g e t * m e n u b a r ;
119
120 g t k _ i n i t ( & a r g c , & a r g v ) ;
121 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 ) ;
122 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 " ) ;
123 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);
124 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 ) ;
125 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 " ,
126 G _ C A L L B A C K ( g t k _ m a i n _ q u i t ) , N U L L ) ;
127
128 m e n u b a r = c r e a t e _ m e n u ( ) ;
129 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 ) ;
130
131 g t k _ w i d g e t _ s h o w _ a l l ( w i n d o w ) ;
132 g t k _ m a i n ( ) ;
133
134 r e t u r n 0 ;
135 }