• 検索結果がありません。

ツールバー

ドキュメント内 表紙 (ページ 110-117)

第 6 章 ウィジェットリファレンス 83

6.2 コンテナウィジェット

6.2.4 ツールバー

ツールバーウィジェット(GtkToolbar)はアイコン付きのボタンなどを並べてアプリケーションの操作性を 高めるために使用されるウィジェットです.

オブジェクトの階層構造

G O b j e c t

+ - - - -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 T o o l b a r

ウィジェットの作成

ツールバーウィジェット(GtkToolbar)の作成には関数gtk toolbar newを使います.

G t k W i d g e t* g t k _ t o o l b a r _ n e w (v o i d) ;

子ウィジェットの配置

ツールバーにウィジェットを配置する方法は3種類あります.

gtk toolbar append item

ボタンをツールバーに配置する関数です. G t k W i d g e t*

g t k _ t o o l b a r _ a p p e n d _ i t e m (G t k T o o l b a r * t o o l b a r , c o n s t c h a r * t e x t ,

c o n s t c h a r * t o o l t i p _ t e x t ,

c o n s t c h a r * t o o l t i p _ p r i v a t e _ t e x t , G t k W i d g e t * i c o n ,

G t k S i g n a l F u n c c a l l b a c k , g p o i n t e r u s e r _ d a t a ) ;

関数の引数は以下の通りです.

第1引数: ツールバーウィジェット 第2引数: ボタンラベル

第3引数: ツールチップテキスト 第4引数: ツールチップテキスト

第5引数: ボタン用のアイコンウィジェット 第6引数: ボタン用のコールバック関数 第7引数: コールバック関数に渡すデータ

この関数の類似関数に関数gtk toolbar preppend itemと関数gtk toolbar insert itemがあります.

gtk toolbar append element

配置するウィジェットの種類を指定して追加する関数です. G t k W i d g e t*

g t k _ t o o l b a r _ a p p e n d _ e l e m e n t (G t k T o o l b a r * t o o l b a r , G t k T o o l b a r C h i l d T y p e t y p e ,

G t k W i d g e t * w i d g e t ,

c o n s t c h a r * t e x t ,

c o n s t c h a r * t o o l t i p _ t e x t ,

図6.9 ツールバー

c o n s t c h a r * t o o l t i p _ p r i v a t e _ t e x t ,

G t k W i d g e t * i c o n ,

G t k S i g n a l F u n c c a l l b a c k ,

g p o i n t e r u s e r _ d a t a ) ;

関数の引数は以下の通りです.

第1引数: ツールバーウィジェット 第2引数: ツールバーアイテムの種類 第3引数: 配置するウィジェット 第4引数: ラベル

第5引数: ツールチップテキスト 第6引数: ツールチップテキスト

第7引数: ボタン用のアイコンウィジェット 第8引数: ボタン用のコールバック関数 第9引数: コールバック関数に渡すデータ

ツールバーアイテムの種類は次のGtkToolbarChildTypeから選択します. t y p e d e f e n u m

{

G T K _ T O O L B A R _ C H I L D _ S P A C E , G T K _ T O O L B A R _ C H I L D _ B U T T O N ,

G T K _ T O O L B A R _ C H I L D _ T O G G L E B U T T O N , G T K _ T O O L B A R _ C H I L D _ R A D I O B U T T O N , G T K _ T O O L B A R _ C H I L D _ W I D G E T

} G t k T o o l b a r C h i l d T y p e;

この関数の類似関数に関数gtk toolbar preppend element と関数gtk toolbar insert elementがあり ます.

gtk toolbar append widget

配置するウィジェットを独立に作成し, そのウィジェットをツールバーに配置する関数です. v o i d g t k _ t o o l b a r _ a p p e n d _ w i d g e t (G t k T o o l b a r * t o o l b a r ,

G t k W i d g e t * w i d g e t ,

c o n s t c h a r * t o o l t i p _ t e x t ,

c o n s t c h a r * t o o l t i p _ p r i v a t e _ t e x t ) ;

関数の引数は以下の通りです. ウィジェットに対するコールバック関数は関数g signal connect等を 使って設定する必要があります.

第1引数: ツールバーウィジェット 第2引数: 配置するウィジェット 第3引数: ツールチップテキスト 第4引数: ツールチップテキスト

この関数の類似関数に関数 gtk toolbar preppend widget と関数gtk toolbar insert widget があり ます.

シグナルとコールバック関数

表6.4にツールバーウィジェットのシグナルを示します.

”orientation-changed”シグナルに対するコールバック関数のプロトタイプ宣言は次のようになります.

v o i d u s e r _ f u n c t i o n (G t k T o o l b a r * t o o l b a r , G t k O r i e n t a t i o n o r i e n t a t i o n , g p o i n t e r u s e r _ d a t a ) ;

GtkOrientationは次のように定義されており,現在のツールバーの方向が変数orientationに入ります. t y p e d e f e n u m

{

G T K _ O R I E N T A T I O N _ H O R I Z O N T A L , G T K _ O R I E N T A T I O N _ V E R T I C A L } G t k O r i e n t a t i o n;

”popup-context-menu”シグナルに対するコールバック関数のプロトタイプ宣言は次のようになります. 変

数x, yにはマウスカーソルの座標が, 変数buttonにはボタン番号が入ります. キーが押された場合には値は

1となります.

g b o o l e a n u s e r _ f u n c t i o n (G t k T o o l b a r * t o o l b a r ,

g i n t x ,

g i n t y ,

g i n t b u t t o n ,

g p o i n t e r u s e r _ d a t a ) ;

”style-changed”シグナルに対するコールバック関数のプロトタイプ宣言は次のようになります.

v o i d u s e r _ f u n c t i o n (G t k T o o l b a r * t o o l b a r , G t k T o o l b a r S t y l e s t y l e , g p o i n t e r u s e r _ d a t a ) ;

GtkToolbarStyleは次のように定義されており,現在のツールバーのスタイルが変数styleに入ります. t y p e d e f e n u m

{

G T K _ T O O L B A R _ I C O N S , G T K _ T O O L B A R _ T E X T , G T K _ T O O L B A R _ B O T H , G T K _ T O O L B A R _ B O T H _ H O R I Z } G t k T o o l b a r S t y l e;

表6.4 ツールバーウィジェットのシグナル

シグナル 説明

”orientation-changed” ツールバーの方向が変化したときに発生するシグナルです.

”popup-context-menu” ポップアップメニューを表示するためにマウスの右ボタンをクリックしたり, キーが押されたりしたときに発生するシグナルです.

”style-changed” ツールバーのスタイルが変更されたときに発生するシグナルです.

ウィジェットのプロパティ設定

ツールバーウィジェットのプロパティには次の3つの項目が存在します.

ツールバーの方向(ツールバーアイテムが配置される方向)

ツールバーの方向は次の関数を使って取得したり, 設定したりできます.

v o i d g t k _ t o o l b a r _ s e t _ o r i e n t a t i o n (G t k T o o l b a r * t o o l b a r , G t k O r i e n t a t i o n o r i e n t a t i o n ) ; G t k O r i e n t a t i o n g t k _ t o o l b a r _ g e t _ o r i e n t a t i o n (G t k T o o l b a r * t o o l b a r ) ;

ツールチップの表示の有無

ツールバーに配置されたウィジェット上にマウスカーソルが一定時間以上存在するときに表示される説 明をツールチップと呼びます. ツールチップを表示するかどうか, また現在の設定を次の関数で調べる ことができます.

v o i d g t k _ t o o l b a r _ s e t _ t o o l t i p s (G t k T o o l b a r * t o o l b a r , g b o o l e a n e n a b l e ) ; g b o o l e a n g t k _ t o o l b a r _ g e t _ t o o l t i p s (G t k T o o l b a r * t o o l b a r ) ;

アイコンサイズ

ツールバーアイテムのアイコンの大きさです. アイコンサイズはGtkIconSize で定義された値で扱い ます.

v o i d g t k _ t o o l b a r _ s e t _ i c o n _ s i z e (G t k T o o l b a r * t o o l b a r , G t k I c o n S i z e i c o n _ s i z e ) ; G t k I c o n S i z e g t k _ t o o l b a r _ g e t _ i c o n _ s i z e (G t k T o o l b a r * t o o l b a r ) ;

GtkIconSizeは次のように定義されています. t y p e d e f e n u m

{

G T K _ I C O N _ S I Z E _ I N V A L I D , G T K _ I C O N _ S I Z E _ M E N U ,

G T K _ I C O N _ S I Z E _ S M A L L _ T O O L B A R , G T K _ I C O N _ S I Z E _ L A R G E _ T O O L B A R , G T K _ I C O N _ S I Z E _ B U T T O N ,

G T K _ I C O N _ S I Z E _ D N D , G T K _ I C O N _ S I Z E _ D I A L O G } G t k I c o n S i z e;

サンプルプログラム

ツールバーウィジェットのサンプルプログラムをソース6–2–1に示します. プログラムの実行結果は図6.9 になります.

ソース 6–2–1 ツールバーウィジェットのサンプルプログラム: gtktoolbar-sample.c

1 # i n c l u d e <g t k / g t k . h >

2

3 s t a t i c v o i d c b _ s h o w _ t o o l t i p s (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 ) {

4 g t k _ t o o l b a r _ s e t _ t o o l t i p s ( G T K _ T O O L B A R ( d a t a ) ,

5 g t k _ t o g g l e _ b u t t o n _ g e t _ a c t i v e

6 ( G T K _ T O G G L E _ B U T T O N ( w i d g e t ) ) ) ;

7 }

8

9 s t a t i c v o i d c b _ s e t _ h o r i z o n t a l (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 ) {

10 i f ( g t k _ t o g g l e _ b u t t o n _ g e t _ a c t i v e ( G T K _ T O G G L E _ B U T T O N ( w i d g e t ) ) ) {

11 g t k _ t o o l b a r _ s e t _ o r i e n t a t i o n ( G T K _ T O O L B A R ( d a t a ) ,

12 G T K _ O R I E N T A T I O N _ H O R I Z O N T A L ) ;

13 }

14 }

15

16 s t a t i c v o i d c b _ s e t _ v e r t i c a l (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 ) {

17 i f ( g t k _ t o g g l e _ b u t t o n _ g e t _ a c t i v e ( G T K _ T O G G L E _ B U T T O N ( w i d g e t ) ) ) {

18 g t k _ t o o l b a r _ s e t _ o r i e n t a t i o n ( G T K _ T O O L B A R ( d a t a ) ,

19 G T K _ O R I E N T A T I O N _ V E R T I C A L ) ;

20 }

21 }

22

23 i n t m a i n (i n t ar g c , c h a r * * a r g v ) {

24 G t k W i d g e t * w i n d o w ;

25 G t k W i d g e t * t o o l b a r ;

26 G t k W i d g e t * a l i g n m e n t ;

27 G t k W i d g e t * c h e c k b u t t o n ;

28 G t k W i d g e t * r a d i o b u t t o n ;

29 G t k W i d g e t * b u t t o n ;

30 G t k W i d g e t * i c o n ;

31 G S L i s t * r a d i o b u t t o n _ g r o u p = N U L L ;

32

33 g t k _ i n i t ( & a r g c , & a r g v ) ;

34 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 ) ;

35 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 T o o l b a r à S a m p l e " ) ;

36 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 ) , F A L S E ) ;

37 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 " ,

38 G _ C A L L B A C K ( g t k _ m a i n _ q u i t ) , N U L L ) ;

39

40 t o o l b a r = g t k _ t o o l b a r _ n e w ( ) ;

41 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 ) , t o o l b a r ) ;

42 g t k _ t o o l b a r _ s e t _ s t y l e ( G T K _ T O O L B A R ( t o o l b a r ) , G T K _ T O O L B A R _ B O T H ) ;

43 g t k _ t o o l b a r _ s e t _ o r i e n t a t i o n ( G T K _ T O O L B A R ( t o o l b a r ) ,

44 G T K _ O R I E N T A T I O N _ H O R I Z O N T A L ) ;

45

46 c h e c k b u t t o n = g t k _ c h e c k _ b u t t o n _ n e w _ w i t h _ l a b e l ( " S h o w à T o o l t i p s " ) ;

47 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 ( c h e c k b u t t o n ) , T R U E ) ;

48 g _ s i g n a l _ c o n n e c t ( G _ O B J E C T ( c h e c k b u t t o n ) , " t o g g l e d " ,

49 G _ C A L L B A C K ( c b _ s h o w _ t o o l t i p s ) , t o o l b a r ) ;

50

51 g t k _ t o o l b a r _ a p p e n d _ w i d g e t ( G T K _ T O O L B A R ( t o o l b a r ) ,

52 c h e c k b u t t o n ,

53 " T o g g l e à w h e r e às h o w à t o o l t i p s " , N U L L ) ;

54 g t k _ t o o l b a r _ a p p e n d _ s p a c e ( G T K _ T O O L B A R ( t o o l b a r ) ) ;

55

56 i c o n = g t k _ i m a g e _ n e w _ f r o m _ s t o c k ( " gtk - go - f o r w a r d " ,

57 g t k _ t o o l b a r _ g e t _ i c o n _ s i z e ( G T K _ T O O L B A R

58 ( t o o l b a r ) ) ) ;

59

60 r a d i o b u t t o n = g t k _ t o o l b a r _ a p p e n d _ e l e m e n t ( G T K _ T O O L B A R ( t o o l b a r ) ,

61 G T K _ T O O L B A R _ C H I L D _ R A D I O B U T T O N ,

62 N U L L ,

63 " H o r i z o n t a l " ,

64 " S e t à t h e à t o o l b a r à t o à h o r i z o n t a l " ,

65 N U L L , i c o n ,

66 G _ C A L L B A C K ( c b _ s e t _ h o r i z o n t a l ) ,

67 t o o l b a r ) ;

68 g t k _ r a d i o _ b u t t o n _ s e t _ g r o u p ( G T K _ R A D I O _ B U T T O N ( r a d i o b u t t o n ) ,

69 r a d i o b u t t o n _ g r o u p ) ;

70 r a d i o b u t t o n _ g r o u p =

71 g t k _ r a d i o _ b u t t o n _ g r o u p ( G T K _ R A D I O _ B U T T O N ( r a d i o b u t t o n ) ) ;

72 g t k _ t o g g l e _ b u t t o n _ s e t _ m o d e ( G T K _ T O G G L E _ B U T T O N ( r a d i o b u t t o n ) , F A L S E ) ;

73

74 i c o n = g t k _ i m a g e _ n e w _ f r o m _ s t o c k ( " gtk - go - d o w n " ,

75 g t k _ t o o l b a r _ g e t _ i c o n _ s i z e ( G T K _ T O O L B A R

76 ( t o o l b a r ) ) ) ;

77 r a d i o b u t t o n = g t k _ t o o l b a r _ a p p e n d _ e l e m e n t ( G T K _ T O O L B A R ( t o o l b a r ) ,

78 G T K _ T O O L B A R _ C H I L D _ R A D I O B U T T O N ,

79 N U L L ,

80 " V e r t i c a l " ,

81 " S e t à t h e à t o o l b a r à t o à v e r t i c a l " ,

82 N U L L , i c o n ,

83 G _ C A L L B A C K ( c b _ s e t _ v e r t i c a l ) ,

84 t o o l b a r ) ;

85 g t k _ r a d i o _ b u t t o n _ s e t _ g r o u p ( G T K _ R A D I O _ B U T T O N ( r a d i o b u t t o n ) ,

86 r a d i o b u t t o n _ g r o u p ) ;

87 g t k _ t o g g l e _ b u t t o n _ s e t _ m o d e ( G T K _ T O G G L E _ B U T T O N ( r a d i o b u t t o n ) , F A L S E ) ;

88

89 g t k _ t o o l b a r _ a p p e n d _ s p a c e ( G T K _ T O O L B A R ( t o o l b a r ) ) ;

90

91 b u t t o n = g t k _ t o o l b a r _ a p p e n d _ i t e m ( G T K _ T O O L B A R ( t o o l b a r ) ,

92 " E x i t " ,

93 " E x i t à t h i s à p r o g r a m . " ,

94 N U L L ,

95 g t k _ i m a g e _ n e w _ f r o m _ s t o c k

96 ( " gtk - q u i t " ,

97 g t k _ t o o l b a r _ g e t _ i c o n _ s i z e ( G T K _ T O O L B A R

98 ( t o o l b a r ) ) ) ,

99 G _ C A L L B A C K ( g t k _ m a i n _ q u i t ) , N U L L ) ;

100 g t k _ w i d g e t _ s h o w _ a l l ( w i n d o w ) ;

101 g t k _ m a i n ( ) ;

102

103 r e t u r n 0 ;

104 }

ドキュメント内 表紙 (ページ 110-117)