| 
 упаковка с
использованием таблицследующий
рассматриваемый способ упаковки -
таблицы. они могут быть чрезвычайно
полезными в определенных ситуациях. используя таблицы,
мы создаем сетку, в которую можем
поместить виджеты. виджеты могут занимать
так много места, сколько мы определим. первое, что мы
рассмотрим будет функция gtk_table_new(): 
	
    
		| gtkwidget *gtk_table_new( guint    rows,
                              guint    columns,
                              gboolean homogeneous ); |  первый аргумент
задаёт кол-во строк в таблице, а второй
соответственно кол-во столбцов. аргумент homogeneous
выполняет тоже, что и в контейнерах -
задаёт размер. если homogeneous равно true,
ячейки таблицы расширяются до значения
самого большого виджета. если homogeneous
равно false, размер ячейки продиктован
самой большой по высоте в этом ряду и
самой широкой в этом столбце. столбцы и строки
располагаются от 0 до n, где n определено
в вызове gtk_table_new. если вы определили
rows = 2 и columns = 2, то таблица будет выглядеть
примерно так: 
	
    
		|  0          1          2
0+----------+----------+
 |          |          |
1+----------+----------+
 |          |          |
2+----------+----------+ |  заметьте, система
координат начинается в верхнем левом
углу. для размещения
виджета в ячейке используйте следующую
функцию: 
	
    
		| void gtk_table_attach( gtktable         *table,
                           gtkwidget        *child,
                           guint            left_attach,
                           guint            right_attach,
                           guint            top_attach,
                           guint            bottom_attach,
                           gtkattachoptions xoptions,
                           gtkattachoptions yoptions,
                           guint            xpadding,
                           guint            ypadding ); |  первый аргумент
таблица ("table") которую вы создали,
а второй виджет ("child") который вы
хотите разместить в таблице. остальные
аргументы определяют место расположения
виджета в ячейке и то, сколько ячеек
использовать. если вы хотите разместить
кнопку в правом нижнем углу в выше
указанной таблице 2х2 и чтобы она занимала
все пространство, то                   left_attach
would be = 1, right_attach = 2, top_attach = 1, bottom_attach = 2. если понадобится
расположить кнопку в верхней строчки
на обе ячейки, то нужно использовать
следующие аргументы left_attach = 0, right_attach =
2, top_attach = 0, bottom_attach = 1. аргументы xoptions
и yoptions используются для специфических
опций упаковки. вот эти опции: 
	
	gtk_fill 
	
	если ячейка таблицы
	больше виджета и определён gtk_fill,
	то виджет увеличится до размера ячейки.
	gtk_shrink
		
	если таблица
	меньше пространства отведенного для
	виджетов (когда пользователь изменяет
	размер окна), то виджеты обычно будут
	просто исчезать из окна. если определить
	gtk_shrink, то виджеты будут
	сжиматься вместе с таблицей.
	gtk_expand
		
	данная опция
	заставит таблицу заполнить всё свободное
	пространство в окне. 
аргументы xpadding и
ypadding используются для выделения
свободного пространства вокруг виджетов
в пикселях (pixels). gtk_table_attach() имеет
много вариантов. например сокращенный: 
	
    
		| void gtk_table_attach_defaults( gtktable  *table,
                                gtkwidget *widget,
                                guint      left_attach,
                                guint      right_attach,
                                guint      top_attach,
                                guint      bottom_attach ); |  опции x и y в данном
случае установлены по умолчанию в
gtk_fill | gtk_expand, а xpadding и
ypadding равны 0. остальная часть аргументов
идентична предыдущей функции. также есть функции
gtk_table_set_row_spacing() и gtk_table_set_col_spacing(),
устанавливающие интервал между рядами
или столбцами. 
	
    
		| void gtk_table_set_row_spacing( gtktable *table,
                                guint     row,
                                guint     spacing ); |  и 
	
    
		| void gtk_table_set_col_spacing ( gtktable *table,
                                 guint     column,
                                 guint     spacing ); |  обратите внимание
на то, что промежуток устанавливается
справа для столбцов и снизу для рядов. вы можете также
установить последовательный интервал
всех рядов и/или колонок: 
	
    
		| void gtk_table_set_row_spacings( gtktable *table,
                                 guint    spacing ); |  и 
	
    
		| void gtk_table_set_col_spacings( gtktable *table,
                                 guint     spacing ); |  заметьте, что
последний ряд и последний столбец не
получают никакого интервала. 
 
 
 |