第 6 章 ウィジェットリファレンス 83
6.2 コンテナウィジェット
6.2.1 ウィンドウ
31 b u t t o n [ 1 ] = g t k _ r a d i o _ b u t t o n _ n e w _ w i t h _ l a b e l _ f r o m _ w i d g e t
32 ( G T K _ R A D I O _ B U T T O N ( b u t t o n [ 0 ] ) , " G r e e n " ) ;
33 g t k _ b o x _ p a c k _ s t a r t ( G T K _ B O X ( b o x ) , b u t t o n [ 1 ] , T R U E , T R U E , 0 ) ;
34
35 b u t t o n [ 2 ] = g t k _ r a d i o _ b u t t o n _ n e w _ w i t h _ l a b e l _ f r o m _ w i d g e t
36 ( G T K _ R A D I O _ B U T T O N ( b u t t o n [ 0 ] ) , " B l u e " ) ;
37 g t k _ b o x _ p a c k _ s t a r t ( G T K _ B O X ( b o x ) , b u t t o n [ 2 ] , T R U E , T R U E , 0 ) ;
38
39 g t k _ t o g g l e _ b u t t o n _ s e t _ a c t i v e ( G T K _ T O G G L E _ B U T T O N ( b u t t o n [ 1 ] ) , T R U E ) ;
40
41 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 [ 0 ] ) , " t o g g l e d " ,
42 G _ C A L L B A C K ( c b _ b u t t o n _ t o g g l e d ) , (g p o i n t e r) 0 ) ;
43 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 [ 1 ] ) , " t o g g l e d " ,
44 G _ C A L L B A C K ( c b _ b u t t o n _ t o g g l e d ) , (g p o i n t e r) 1 ) ;
45 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 [ 2 ] ) , " t o g g l e d " ,
46 G _ C A L L B A C K ( c b _ b u t t o n _ t o g g l e d ) , (g p o i n t e r) 2 ) ;
47
48 g t k _ w i d g e t _ s h o w _ a l l ( w i n d o w ) ;
49 g t k _ m a i n ( ) ;
50
51 r e t u r n 0 ;
52 }
G t k W i d g e t* g t k _ w i n d o w _ n e w (G t k W i n d o w T y p e t y p e ) ;
t y p e d e f e n u m {
G T K _ W I N D O W _ T O P L E V E L , G T K _ W I N D O W _ P O P U P } G t k W i n d o w T y p e;
子ウィジェットの配置
フレームウィジェットにウィジェットを配置するにはGtkContainerウィジェットの関数gtk container add を使用します.
ウィジェットのプロパティ設定
ここではたくさんあるウィンドウウィジェットのプロパティをいくつか紹介します.
• ウィンドウタイトル
ウ ィ ン ド ウ の タ イ ト ル バ ー に 表 示 す る タ イ ト ル で す. 関 数 gtk window get title と 関 数 gtk window set titleでタイトルの取得や設定を行います.
c o n s t g c h a r* g t k _ w i n d o w _ g e t _ t i t l e (G t k W i n d o w * w i n d o w ) ;
v o i d 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 , c o n s t g c h a r * t i t l e ) ;
• ウィンドウサイズの変更設定
関数gtk window set resizableを使うとウィンドウサイズをユーザが変更できるかどうかを設定するこ
とができます. また,関数gtk window get resizableを使うと現在の設定を取得することができます. g b o o l e a n g t k _ w i n d o w _ g e t _ r e s i z a b l e (G t k W i n d o w * w i n d o w ) ;
v o i d g t k _ w i n d o w _ s e t _ r e s i z a b l e (G t k W i n d o w * w i n d o w , g b o o l e a n r e s i z a b l e ) ;
• アイコン
ウィンドウのタイトルバーに表示したり,ウィンドウをアイコン化した際のアイコンです. G d k P i x b u f* g t k _ w i n d o w _ g e t _ i c o n (G t k W i n d o w * w i n d o w ) ;
v o i d g t k _ w i n d o w _ s e t _ i c o n (G t k W i n d o w * w i n d o w , G d k P i x b u f * i c o n ) ;
• ウィンドウの装飾
ウィンドウは通常タイトルバーなどの装飾が表示されますが, 関数gtk window set decoratedの第2
引数にFALSEを指定すると, ウィンドウの装飾が表示されなくなります.
v o i d g t k _ w i n d o w _ s e t _ d e c o r a t e d (G t k W i n d o w * w i n d o w , g b o o l e a n s e t t i n g ) ;
関数gtk window get decoratedを使用すると現在の設定を取得することができます. g b o o l e a n g t k _ w i n d o w _ g e t _ d e c o r a t e d (G t k W i n d o w * w i n d o w ) ;
ウィンドウの操作
以下にウィンドウの操作に関するいくつかの項目を紹介します.
• ウィンドウのサイズを指定する
ウィンドウサイズの指定は関数gtk widget set size requestを使用します. 関数の第2引数と第3引数 にウィンドウの横と縦のサイズを指定します.
v o i d g t k _ w i d g e t _ s e t _ s i z e _ r e q u e s t (G t k W i d g e t * w i d g e t , g i n t w i d t h , g i n t h e i g h t ) ;
• ウィンドウのサイズを固定する
ウィンドウサイズを固定するには関数gtk window set resizableを使用します. 関数の第2引数に
FALSEを指定するとユーザがマウスのドラッグ等でウィンドウのサイズを変更できなくなります.
• ウィンドウのサイズを変更する
ウィンドウサイズを変更するには関数gtk window resizeを使用します. 関数の第2引数と第3引数に ウィンドウの横と縦のサイズを指定します.
v o i d g t k _ w i n d o w _ r e s i z e (G t k W i n d o w * w i n d o w , g i n t w i d t h , g i n t h e i g h t ) ;
関数gtk widget set size requestを使用することもできます.
• ウィンドウのサイズを画面の大きさに合わせる
ウィンドウのサイズを画面の大きさと一致させるには画面の大きさを取得して,関数gtk window resize もしくは, 関数gtk widget set size requestでウィンドウの大きさを変更します. 画面の大きさを取得 する一つの方法は関数gdk screen widthと関数gdk screen heightを使用することです.
g i n t g d k _ s c r e e n _ w i d t h (v o i d) ;
g i n t g d k _ s c r e e n _ h e i g h t (v o i d) ;
• ウィンドウをフルスクリーン表示する
ウィンドウをフルスクリーン表示するには関数gtk window fullscreenを使用します. 反対にフルスク リーン状態を解除するには関数gtk window unfullscreenを使用します.
v o i d g t k _ w i n d o w _ f u l l s c r e e n (G t k W i n d o w * w i n d o w ) ;
v o i d g t k _ w i n d o w _ u n f u l l s c r e e n (G t k W i n d o w * w i n d o w ) ;
• ウィンドウをアイコン化する
ウィンドウをアイコン化するには関数gtk window iconifyを使用します. 反対にアイコン化状態を解除 するには関数gtk window deiconifyを使用します.
v o i d g t k _ w i n d o w _ i c o n i f y (G t k W i n d o w * w i n d o w ) ;
v o i d g t k _ w i n d o w _ d e i c o n i f y (G t k W i n d o w * w i n d o w ) ;
• ウィンドウを最大化する
ウィンドウを最大化するには関数gtk window maximizeを使用します. 反対に最大化状態を解除する には関数gtk window unmaximizeを使用します.
v o i d g t k _ w i n d o w _ m a x i m i z e (G t k W i n d o w * w i n d o w ) ;
v o i d g t k _ w i n d o w _ u n m a x i m i z e (G t k W i n d o w * w i n d o w ) ;
• ウィンドウの表示位置を指定する
ウィンドウの表示位置を指定するには関数gtk window moveを使用します. 関数の第2引数と第3引 数にウィンドウの左上の座標を指定します.
v o i d g t k _ w i n d o w _ m o v e (G t k W i n d o w * w i n d o w ,
g i n t x ,
g i n t y ) ;