GtkList widgetÀº GtkListItemÇüÀÇ widgetµé À§ÇÑ ¼öÁ÷ÀÇ ÄÁÅ×À̳Êó·³ ÀÛµ¿Çϵµ·Ï ¼³°èµÇ¾ú´Ù.
ÇϳªÀÇ GtkList widgetÀº À̺¥Æ®¸¦ ¹ÞÀ» ÀڽŸ¸ÀÇ À©µµ¿Í, º¸Åë whiteÀÎ ÀڽŸ¸ÀÇ background »öÀ» °¡Áö°í ÀÖ´Ù. GtkContainer·ÎºÎÅÍ ÆÄ»ýµÇ¾ú±â¿¡ GTK_CONTAINER(List) ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇØ ´Ù·ê ¼ö Àִµ¥, ÀÌ°Í¿¡ ´ëÇؼ´Â GtkContainer widget¿¡ ´ëÇÑ ºÎºÐÀ» Âü°íÇϱ⠹ٶõ´Ù.
GtkList widgetÀÇ ±¸Á¶Ã¼ Á¤ÀÇ¿¡´Â ÈξÀ ´õ Èï¹Ì·Î¿î ÇϳªÀÇ Çʵ尡 ÀÖ´Ù. ¹Ù·Î ÀÌ°ÍÀÌ´Ù.
struct _GtkList
{
...
GList *selection;
guint selection_mode;
...
};
GtkListÀÇ selection Çʵå´Â ÇöÀç ¼±ÅÃµÈ ¸ðµç ¾ÆÀÌÅÛµéÀÇ ¿¬°á¸®½ºÆ®¸¦ °¡¸®Å°°í ÀÖ°í, ¸¸¾à ¼±ÅÃµÈ °Ô ¾ø´Ù¸é 'NULL'ÀÌ´Ù. ±×·¡¼ ¿ì¸®´Â ÇöÀçÀÇ ¼±ÅÃµÈ °ÍÀ» ¾Ë±âÀ§ÇØ GTK_LIST()->selection Çʵ带 ÂüÁ¶ÇÏÁö¸¸, ±× ³»ºÎÀÇ ÇʵåµéÀÌ gtk_list*() ÇÔ¼öµé·Î½á À¯ÁöµÇ°í ÀÖÀ¸¹Ç·Î ±×°ÍÀ» º¯ÇüÇؼ´Â ¾ÈµÈ´Ù. GtkListÀÇ selection_mode´Â GtkList Áï GTK_LIST()->selection ÇʵåÀÇ °Íµé¿¡ ´ëÇÑ ¼±Åà ¼Ó¼ºÀ» °áÁ¤ÇÑ´Ù.
selection_mode´Â À̰͵é Áß Çϳª°¡ µÉ °ÍÀÌ´Ù.
µðÆúÆ®´Â GTK_SELECTION_MULTIPLEÀÌ´Ù.
void GtkList::selection_changed (GtkList *LIST)
ÀÌ ½Ã±×³ÎÀº GtkListÀÇ selection Çʵ尡 º¯ÈÇßÀ» ¶§¸¶´Ù ¿äûµÈ´Ù. ÀÌ°ÍÀº GtkListÀÇ child°¡ ¼±Åõǰųª ¼±ÅÃÀÌ ÇØÁ¦µÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù.
void GtkList::select_child (GtkList *LIST, GtkWidget *CHILD)
ÀÌ ½Ã±×³ÎÀº GtkListÀÇ child°¡ ¼±ÅõǷÁ°í ÇÒ ¶§ ¹ß»ýÇÑ´Ù. ÀÌ°ÍÀº ÁÖ·Î gtk_list_select_item()³ª gtk_list_select_child()¸¦ È£ÃâÇÒ ¶§, ¹öÆ°À» ´·¶À» ¶§ µî¿¡ ¹ß»ýÇϸç, ¶§¶§·Î childµéÀÌ GtkList¿¡ ´õÇØÁö°Å³ª »èÁ¦µÇ¾úÀ» ¶§ ´Ù¸¥ ¿øÀε鿡 ÀÇÇØ °£Á¢ÀûÀ¸·Î ¹ß»ýÇϱ⵵ ÇÑ´Ù.
void GtkList::unselect_child (GtkList *LIST, GtkWidget *CHILD)
ÀÌ°ÍÀº GtkListÀÇ child°¡ ¼±Åà ÇØÁ¦µÉ ¶§ ¿äûµÈ´Ù. ÀÌ°ÍÀº ÁÖ·Î gtk_list_ unselect_item()À̳ª gtk_list_unselect_child()ÇÔ¼ö¸¦ ºÎ¸¦ ¶§³ª ¹öÆ°À» ´·¶À» ¶§ ¹ß»ýÇϸç, ¿ª½Ã GtkList¿¡ childµéÀÌ ´õÇØÁö°Å³ª »èÁ¦µÉ ¶§ ¶Ç´Ù¸¥ ¿øÀο¡ ÀÇÇØ °£Á¢ÀûÀ¸·Î ¹ß»ýÇÑ´Ù.
guint gtk_list_get_type (void)
ÀÌ°ÍÀº GtkListÇüÀÇ ½Äº°ÀÚ¸¦ ¸®ÅÏÇÑ´Ù.
GtkWidget* gtk_list_new (void)
ÀÌ°ÍÀº »õ·Î¿î GtkList object¸¦ ¸¸µç´Ù. ÀÌ »õ widget Àº GtkWidget object¸¦ ÇâÇÑ Æ÷ÀÎÅÍÀÇ ÇüÅ·Π¸®ÅϵȴÙ. ½ÇÆÐÇßÀ» °æ¿ì¿£ 'NULL'À» ¸®ÅÏÇÑ´Ù.
void gtk_list_insert_items (GtkList *LIST, GList *ITEMS, gint POSITION)
POSITION¿¡¼ ½ÃÀÛÇؼ, ¸®½ºÆ® ¾ÆÀÌÅÛÀ» LIST¿¡ »ðÀÔÇÑ´Ù. ITEMS´Â °¢ ³ëµåÀÇ µ¥ÀÌÅÍ Æ÷ÀÎÅÍ°¡ »õ·Ó°Ô ¸¸µé¾îÁø GtkListItem¸¦ °¡¸®Å°µµ·Ï µÇ¾îÀÖ´Â, ÀÌÁßÀÇ ¿¬°á¸®½ºÆ®´Ù. ITEMSÀÇ GList³ëµåµéÀº LIST¿¡ ÀÇÇØ ÃëÇØÁø´Ù.
void gtk_list_append_items (GtkList *LIST, GList *ITEMS)
LISTÀÇ ¸¶Áö¸·¿¡ gtk_list_insert_items() ó·³ ¸®½ºÆ® ¾ÆÀÌÅÛÀ» »ðÀÔÇÑ´Ù. ITEMSÀÇ GList ³ëµåµéÀº LIST¿¡ ÀÇÇØ ÃëÇØÁø´Ù.
void gtk_list_prepend_items (GtkList *LIST, GList *ITEMS)
LISTÀÇ ¸Ç ùºÎºÐ¿¡ gtk_list_insert_items() ó·³ ¸®½ºÆ® ¾ÆÀÌÅÛÀ» »ðÀÔÇÑ´Ù. ¿ª½Ã ITEMSÀÇ GList ³ëµåµéÀº LIST¿¡ ÀÇÇØ ÃëÇØÁø´Ù.
void gtk_list_remove_items (GtkList *LIST, GList *ITEMS)
LIST·ÎºÎÅÍ ¸®½ºÆ® ¾ÆÀÌÅÛÀ» Á¦°ÅÇÑ´Ù. ITEMS´Â °¢ ³ëµåÀÇ µ¥ÀÌŸ Æ÷ÀÎÅÍ°¡ LISTÀÇ Á÷°è child¸¦ °¡¸®Å°µµ·Ï µÇ¾î ÀÖ´Â ÀÌÁß ¿¬°á¸®½ºÆ®´Ù. °è¼ÓÇؼ g_list_free(ITEMS)¸¦ ºÎ¸£´Â °ÍÀº È£ÃâÇÏ´Â »ç¶÷ÀÇ Ã¥ÀÓÀÌ´Ù. ¶ÇÇÑ È£ÃâÀÚ´Â ¸®½ºÆ® ¾ÆÀÌÅÛ ±× ÀÚüµµ Æı«ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
void gtk_list_clear_items (GtkList *LIST, gint START, gint END)
LIST·ÎºÎÅÍ ¸®½ºÆ® ¾ÆÀÌÅÛÀ» »èÁ¦ÇÏ°í Æı«ÇØÁØ´Ù. LIST¿¡¼ÀÇ ÇöÀç À§Ä¡°¡ START¿¡¼ END »çÀÌ·Î ¼³Á¤µÈ ¿µ¿ª¿¡ ÀÖ´Â widgetÀÌ ¿µÇâÀ» ¹ÞÀ» °ÍÀÌ´Ù.
void gtk_list_select_item (GtkList *LIST, gint ITEM)
LIST¿¡¼ÀÇ ÇöÀç À§Ä¡¸¦ ÅëÇØ ÁöÁ¤µÈ ¸®½ºÆ® ¾ÆÀÌÅÛÀ» À§ÇØ GtkList::select_ child ½Ã±×³ÎÀ» ¿äûÇÑ´Ù.
void gtk_list_unselect_item (GtkList *LIST, gint ITEM)
À§¿Í ¸¶Âù°¡Áö °æ¿ì¿¡ GtkList::unselect_child ½Ã±×³ÎÀ» ¿äûÇÑ´Ù.
void gtk_list_select_child (GtkList *LIST, GtkWidget *CHILD)
ÁÖ¾îÁø CHILD¸¦ À§ÇØ GtkList::select_child ½Ã±×³ÎÀ» ¿äûÇÑ´Ù.
void gtk_list_unselect_child (GtkList *LIST, GtkWidget *CHILD)
ÁÖ¾îÁø CHILD¸¦ À§ÇØ GtkList::unselect_child ½Ã±×³ÎÀ» ¿äûÇÑ´Ù.
gint gtk_list_child_position (GtkList *LIST, GtkWidget *CHILD)
LIST¿¡¼ÀÇ CHILDÀÇ À§Ä¡¸¦ ¸®ÅÏÇÑ´Ù. '-1'Àº ½ÇÆÐÇßÀ» ¶§ÀÇ ¸®ÅÏ°ªÀÌ´Ù.
void gtk_list_set_selection_mode (GtkList *LIST, GtkSelectionMode MODE)
¼±Åà ¸ðµå MODE·Î LIST¸¦ ¼¼ÆÃÇÑ´Ù. ¸ðµå´Â GTK_SELECTION_SINGLE, GTK_ SELECTION_BROWSE, GTK_SELECTION_MULTIPLE, GTK_SELECTION_EXTENDED Áß¿¡¼ Çϳª°¡ µÈ´Ù.
GtkList* GTK_LIST (gpointer OBJ)
´ëºÎºÐ Æ÷ÀÎÅ͸¦ GtkList* ÇüÀ¸·Î ij½ºÆ®ÇÑ´Ù. ´õ ÀÚ¼¼È÷ ¾Ë·Á¸é ÀϹÝÀûÀÎ ¸ÅÅ©·Î¸¦ ÂüÁ¶Ç϶ó.
GtkListClass* GTK_LIST_CLASS (gpointer CLASS)
´ëºÎºÐÀÇ Æ÷ÀÎÅ͸¦ GtkListClass* ÇüÀ¸·Î ij½ºÆ®ÇÑ´Ù. ÀϹÝÀûÀÎ ¸ÅÅ©·Î¸¦ ÂüÁ¶Ç϶ó.
gint GTK_IS_LIST (gpointer OBJ)
¾î¶² ´ëºÎºÐÀÇ Æ÷ÀÎÅÍ°¡ GtkList object¸¦ ÂüÁ¶ÇÏ´ÂÁö °áÁ¤ÇÑ´Ù. ÀÚ¼¼È÷ ¾Ë·Á¸é ÀϹÝÀûÀÎ ¸ÅÅ©·Î¸¦ ÂüÁ¶Ç϶ó.
À̹ø ¿¹Á¦´Â GtkListÀÇ ¼±ÅÃÀ» º¯È½ÃÅ°´Â °ÍÀ» º¸¿©ÁÙ °ÍÀÌ´Ù. ±×¸®°í ¸®½ºÆ® ¾ÆÀÌÅÛµéÀ» ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À¸·Î ¼±ÅÃÇÔÀ¸·Î½á ±×µéÀ» Àâ¾ÆµÑ ¼ö ÀÖ°Ô ÇÒ °ÍÀÌ´Ù.
/* ÀÌ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ·Á¸é ÀÌ·¸°Ô ÇÑ´Ù.
* $ gcc -I/usr/local/include/ -lgtk -lgdk -lglib -lX11 -lm -Wall main.c
*/
/* GTK+ÀÇ Çì´õ¸¦ includeÇÑ´Ù.
* printf()ÇÔ¼ö ¶§¹®¿¡ <stdio.h>µµ includeÇÑ´Ù.
*/
#include <gtk/gtk.h>
#include <stdio.h>
/* ÀÌ°ÍÀº ¸®½ºÆ® ¾ÆÀÌÅÛ¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ µ¥ÀÌÅÍ ½Äº°ÀÚ´Ù. */
const gchar *list_item_data_key="list_item_data";
/* ¿ì¸®°¡ GtkList widget¿¡ ¿¬°á½Ãų ½Ã±×³Î Çڵ鷯µéÀÇ ÇÔ¼ö¿øÇü. */
static void sigh_print_selection (GtkWidget *gtklist,
gpointer func_data);
static void sigh_button_event (GtkWidget *gtklist,
GdkEventButton *event,
GtkWidget *frame);
/* »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ ¼¼ÆÃÇÏ´Â main ÇÔ¼ö */
gint main (int argc, gchar *argv[])
{
GtkWidget *separator;
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *scrolled_window;
GtkWidget *frame;
GtkWidget *gtklist;
GtkWidget *button;
GtkWidget *list_item;
GList *dlist;
guint i;
gchar buffer[64];
/* gtk+(±×¸®°í °á°úÀûÀ¸·Î gdkµµ)¸¦ ÃʱâÈÇÑ´Ù. */
gtk_init(&argc, &argv);
/* ¸ðµç widgetÀ» ³Ö¾îµÑ À©µµ¸¦ ¸¸µç´Ù.
* À©µµ ¸Å´ÏÀúÀÇ close-window-event¸¦ ´Ù·ç±â À§ÇØ gtk_main_quit()
* ÇÔ¼ö¸¦ À©µµÀÇ "destroy" À̺¥Æ®¿¡ ¿¬°á½ÃŲ´Ù. */
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "GtkList Example");
gtk_signal_connect(GTK_OBJECT(window),
"destroy",
GTK_SIGNAL_FUNC(gtk_main_quit),
NULL);
/* À©µµ ³»ºÎ¿¡ widgetµéÀ» ¼öÁ÷À¸·Î Á¤·ÄÇÒ ¹Ú½º°¡ ÀÖ¾î¾ß ÇÑ´Ù. */
vbox=gtk_vbox_new(FALSE, 5);
gtk_container_border_width(GTK_CONTAINER(vbox), 5);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show(vbox);
/* GtkList widgetÀ» ³Ö¾îµÎ°íÀÚ ÇÏ´Â ½ºÅ©·ÑµÈ À©µµ´Ù. */
scrolled_window=gtk_scrolled_window_new(NULL, NULL);
gtk_widget_set_usize(scrolled_window, 250, 150);
gtk_container_add(GTK_CONTAINER(vbox), scrolled_window);
gtk_widget_show(scrolled_window);
/* GtkList widgetÀ» ¸¸µç´Ù. selectionÀÌ º¯ÇÒ ¶§¸¶´Ù ±× ¼±ÅõÈ
* ¾ÆÀÌÅÛÀ» ÇÁ¸°Æ®ÇØ º¸¿©ÁÖ±â À§ÇØ sigh_print_selection()
* ½Ã±×³Î Çڵ鷯 ÇÔ¼ö¸¦ GtkListÀÇ "selection_changed" ½Ã±×³Î¿¡
* ¿¬°á½ÃÄÑ µÐ´Ù. */
gtklist=gtk_list_new();
gtk_container_add(GTK_CONTAINER(scrolled_window), gtklist);
gtk_widget_show(gtklist);
gtk_signal_connect(GTK_OBJECT(gtklist),
"selection_changed",
GTK_SIGNAL_FUNC(sigh_print_selection),
NULL);
/* ¸®½ºÆ® ¾ÆÀÌÅÛÀ» °¡µÎ¾î µÑ "Prison"À» ¸¸µç´Ù. ;) */
frame=gtk_frame_new("Prison");
gtk_widget_set_usize(frame, 200, 50);
gtk_container_border_width(GTK_CONTAINER(frame), 5);
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT);
gtk_container_add(GTK_CONTAINER(vbox), frame);
gtk_widget_show(frame);
/* ¸®½ºÆ® ¾ÆÀÌÅÛÀÇ "arresting"À» ´Ù·ê GtkList¿¡ sigh_button_event()
* ½Ã±×³Î Çڵ鷯¸¦ ¿¬°á½ÃŲ´Ù. */
gtk_signal_connect(GTK_OBJECT(gtklist),
"button_release_event",
GTK_SIGNAL_FUNC(sigh_button_event),
frame);
/* Separator¸¦ ¸¸µç´Ù. */
separator=gtk_hseparator_new();
gtk_container_add(GTK_CONTAINER(vbox), separator);
gtk_widget_show(separator);
/* ³¡À¸·Î ¹öÆ°À» ¸¸µé°í ±×°ÍÀÇ "clicked" ½Ã±×³ÎÀ» À©µµÀÇ Æı«¿¡
* ¿¬°á½ÃŲ´Ù. */
button=gtk_button_new_with_label("Close");
gtk_container_add(GTK_CONTAINER(vbox), button);
gtk_widget_show(button);
gtk_signal_connect_object(GTK_OBJECT(button),
"clicked",
GTK_SIGNAL_FUNC(gtk_widget_destroy),
GTK_OBJECT(window));
/* ÀÌÁ¦ °¢°¢ ¶óº§À» °¡Áö°í ÀÖ´Â 5°³ÀÇ ¸®½ºÆ® ¾ÆÀÌÅÛÀ» ¸¸µé°í,
* gtk_container_add()·Î½á ±×µéÀ» GtkList¿¡ ÷°¡ÇÑ´Ù.
* ¶ÇÇÑ ¶óº§ÀÇ ÅؽºÆ® ¹®ÀÚ¿À» Á¶»çÇÏ°í ±×°ÍÀ» °¢ ¸®½ºÆ® ¾ÆÀÌÅÛÀÇ
* list_item_data_key¿¡ °áÇÕ½ÃŲ´Ù. */
for (i=0; i<5; i++) {
GtkWidget *label;
gchar *string;
sprintf(buffer, "ListItemContainer with Label #%d", i);
label=gtk_label_new(buffer);
list_item=gtk_list_item_new();
gtk_container_add(GTK_CONTAINER(list_item), label);
gtk_widget_show(label);
gtk_container_add(GTK_CONTAINER(gtklist), list_item);
gtk_widget_show(list_item);
gtk_label_get(GTK_LABEL(label), &string);
gtk_object_set_data(GTK_OBJECT(list_item),
list_item_data_key,
string);
}
/* ¿©±â¼´Â, gtk_list_item_new_with_label()À» ÀÌ¿ëÇؼ
* ´Ù¸¥ 5°³ÀÇ ¶óº§À» ¸¸µç´Ù.
* À̹ø¿¡´Â ¶óº§µé¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ ¾øÀ¸¹Ç·Î ¶óº§ÀÇ ÅؽºÆ®
* ¹®ÀÚ¿À» Á¶»çÇÒ ¼ö ¾ø°í, ±×·¯¹Ç·Î °¢ ¸®½ºÆ® ¾ÆÀÌÅÛÀÇ
* list_item_data_key¸¦ ¶È°°Àº ÅؽºÆ® ¹®ÀÚ¿¿¡ °áÇÕÇÑ´Ù.
* ¸®½ºÆ® ¾ÆÀÌÅÛÀ» Ãß°¡Çϱâ À§Çؼ ¿ì¸®´Â ±×µéÀ» ÀÌÁß ¿¬°á
* ¸®½ºÆ®(GList)¿¡ ¹Ð¾î³Ö°í, gtk_list_append_items()¸¦
* È£ÃâÇØÁØ´Ù. ¿ì¸®°¡ ¾ÆÀÌÅÛµéÀ» ÀÌÁß ¿¬°á ¸®½ºÆ®¿¡ ¹Ð¾î³Ö±â
* À§ÇØ g_list_prepend()¸¦ »ç¿ëÇϱ⠶§¹®¿¡, ±×µéÀÇ ¼ø¼´Â
* µÚ·Î À̾îÁö´Â(descending) °ÍÀÌ µÈ´Ù. ¹Ý´ë·Î g_list_append()
* ¸¦ ÀÌ¿ëÇß´Ù¸é ¾Õ¿¡¼ ºÙ¿©Áö´Â(ascending)ÀÌ µÉ °ÍÀÌ´Ù. */
dlist=NULL;
for (; i<10; i++) {
sprintf(buffer, "List Item with Label %d", i);
list_item=gtk_list_item_new_with_label(buffer);
dlist=g_list_prepend(dlist, list_item);
gtk_widget_show(list_item);
gtk_object_set_data(GTK_OBJECT(list_item),
list_item_data_key,
"ListItem with integrated Label");
}
gtk_list_append_items(GTK_LIST(gtklist), dlist);
/* ³¡À¸·Î ¿ì¸®´Â À©µµ¸¦ º¸°í ½Í¾î ÇÑ´Ù, ¾Æ´Ñ°¡? ;) */
gtk_widget_show(window);
/* GTKÀÇ main À̺¥Æ® ·çÇÁ¸¦ ½Ãµ¿ÇÑ´Ù. */
gtk_main();
/* gtk_main_quit()ÀÌ È£ÃâµÇ¸é Á¦¾î´Â ¿©±â·Î ¿Â´Ù. */
return 0;
}
/* GtkListÀÇ ¹öÆ° press/release À̺¥Æ®µé°ú ¿¬°áµÈ ½Ã±×³Î
* Çڵ鷯 ÇÔ¼öµéÀÌ´Ù. */
void
sigh_button_event (GtkWidget *gtklist,
GdkEventButton *event,
GtkWidget *frame)
{
/* ¼¼¹ø°, Áï °¡Àå ¿À¸¥ÂÊ¿¡ ÀÖ´Â ¸¶¿ì½º ¹öÆ°ÀÌ ³õ¿©Á³À» ¶§¸¸
* ¾î¶² ÀÏÀ» Çϵµ·Ï ÇÑ´Ù. */
if (event->type==GDK_BUTTON_RELEASE &&
event->button==3) {
GList *dlist, *free_list;
GtkWidget *new_prisoner;
/* ÇöÀç ¼±ÅÃµÈ ¾ÆÀÌÅÛÀ» °¡Á®¿Í¼ ¿ì¸®ÀÇ ´ÙÀ½ prisoner·Î
* ÇÑ´Ù. */
dlist=GTK_LIST(gtklist)->selection;
if (dlist)
new_prisoner=GTK_WIDGET(dlist->data);
else
new_prisoner=NULL;
/* ÀÌ¹Ì »ç·ÎÀâÀº ¸®½ºÆ® ¾ÆÀÌÅÛÀ» Á¶»çÇÏ°í, ±×µéÀ»
* ´Ù½Ã ¸®½ºÆ®·Î µ¹·ÁÁØ´Ù.
* gtk_container_children()ÀÌ ¸®ÅÏÇÏ´Â ÀÌÁß ¿¬°á ¸®½ºÆ®¸¦
* ²À ÇØÁ¦(free)ÇØÁà¾ß ÇÔÀ» ±â¾ïÇ϶ó. */
dlist=gtk_container_children(GTK_CONTAINER(frame));
free_list=dlist;
while (dlist) {
GtkWidget *list_item;
list_item=dlist->data;
gtk_widget_reparent(list_item, gtklist);
dlist=dlist->next;
}
g_list_free(free_list);
/* »õ·Î prisoner¸¦ °¡Áö°Ô µÇ¸é, GtkList·ÎºÎÅÍ ±×°ÍÀ»
* Á¦°ÅÇÏ°í "Prison" ÇÁ·¹ÀÓÀ¸·Î ¹Ð¾î³Ö´Â´Ù.
* ¾ÆÀÌÅÛÀº ¸ÕÀú unselectµÇ¾î¾ß ÇÑ´Ù. */
if (new_prisoner) {
GList static_dlist;
static_dlist.data=new_prisoner;
static_dlist.next=NULL;
static_dlist.prev=NULL;
gtk_list_unselect_child(GTK_LIST(gtklist),
new_prisoner);
gtk_widget_reparent(new_prisoner, frame);
}
}
}
/* ÀÌ°ÍÀº GtkList°¡ "selection_changed" ½Ã±×³ÎÀ» ¹ß»ý½ÃÅ°¸é
* È£ÃâµÇ´Â ½Ã±×³Î Çڵ鷯´Ù. */
void
sigh_print_selection (GtkWidget *gtklist,
gpointer func_data)
{
GList *dlist;
/* GtkListÀÇ ¼±ÅÃµÈ ¾ÆÀÌÅÛÀÇ ÀÌÁß ¿¬°á ¸®½ºÆ®¸¦ °¡Á®¿Â´Ù.
* ÀÌ°ÍÀ» read-only·Î ´Ù·ï¾ß ÇÔÀ» ÀØÁö ¸»ÀÚ! */
dlist=GTK_LIST(gtklist)->selection;
/* ¼±ÅÃµÈ ¾ÆÀÌÅÛÀÌ ¾øÀ» ¶§´Â ¾Æ¹« ÀÛ¾÷µµ ÇÒ °Ô ¾ø°í ±×°É
* »ç¿ëÀÚ¿¡°Ô ¾Ë·ÁÁØ´Ù. */
if (!dlist) {
g_print("Selection cleared\n");
return;
}
/* ¹º°¡¸¦ ¼±ÅÃÇß°í ±×°ÍÀ» ÇÁ¸°Æ®ÇÑ´Ù. */
g_print("The selection is a ");
/* ÀÌÁß ¿¬°á ¸®½ºÆ®¿¡¼ ¸®½ºÆ® ¾ÆÀÌÅÛÀ» ÃëÇÏ°í
* list_item_data_key¿Í °ü·ÃµÈ µ¥ÀÌÅ͸¦ Á¶»çÇÑ´Ù.
* ±×¸®°í ³ª¼ ±×°É ÇÁ¸°Æ®ÇÑ´Ù. */
while (dlist) {
GtkObject *list_item;
gchar *item_data_string;
list_item=GTK_OBJECT(dlist->data);
item_data_string=gtk_object_get_data(list_item,
list_item_data_key);
g_print("%s ", item_data_string);
dlist=dlist->next;
}
g_print("\n");
}
GtkListItem widgetÀº ÇϳªÀÇ child¸¦ ³Ö¾îµÑ ¼ö ÀÖ´Â ÄÁÅ×À̳Êó·³ ÀÛµ¿Çϵµ·Ï ¼³°èµÇ¾úÀ¸¸ç, GtkList widgetÀÌ ±×ÀÇ childµéÀ» À§ÇØ ±×·¯ÇϵíÀÌ ÀÌ°Í ¿ª½Ã selection/deselection ÇÔ¼öµéÀ» Á¦°øÇÏ°í ÀÖ´Ù.
GtkListItemÀº À̺¥Æ®¸¦ ¹Þ±â À§Çؼ ÀڽŸ¸ÀÇ À©µµ¸¦ °¡Áö°í ÀÖ°í, ¶ÇÇÑ º¸Åë whiteÀÎ ÀڽŸ¸ÀÇ background »ö±òµµ °¡Áö°í ÀÖ´Ù.
ÀÌ°ÍÀÌ GtkItemÀ¸·ÎºÎÅÍ Á÷Á¢ÀûÀ¸·Î ÆÄ»ýµÇ¾ú±â ¶§¹®¿¡ ¿ª½Ã GTK_ITEM( ListItem) ¸ÅÅ©·Î·Î ´Ù·ç¾îÁú ¼ö ÀÖÀ¸¸ç, ÀÚ¼¼ÇÑ °ÍÀº GtkItem widgetÀ» ÂüÁ¶ÇÏ¸é µÉ °ÍÀÌ´Ù. ´ë°³ GtkListItemÀº ½Äº°µÇ±â À§ÇÑ ¶óº§À» °¡Áö°í ÀÖ´Ù, ¿¹¸¦ µé¸é GtkList¿¡ ÀÖ´Â filenameó·³. µû¶ó¼ convenient ÇÔ¼ö gtk_list_item_new_with _label()ÀÌ Á¦°øµÈ´Ù. °°Àº È¿°ú¸¦ ÀڽŸ¸ÀÇ GtkLabelÀ» ¸¸µêÀ¸·Î½á ¾òÀ» ¼ö ÀÖ´Ù. GtkListItem¿¡ µÚÀ̾îÁö´Â ÄÁÅ×ÀÌ³Ê¿Í ÇÔ²² xalign=0, yalign=0.5·Î ¼¼ÆÃÇÏ¸é µÈ´Ù.
GtkListItem¿¡ ²À GtkLabelÀ» ´õÇØ ÁÖ´Â °ÍÀº ¾Æ´Ï¸ç, ¿ì¸®´Â GtkVBox ¶Ç´Â GtkArrow µîÀ» ´õÇØÁÙ ¼öµµ ÀÖ´Ù.
GtkListItemÀº ÀڽŸ¸ÀÇ ½Ã±×³ÎÀ» »õ·Î ¸¸µéÁö´Â ¾Ê°í, GtkItemÀÇ ½Ã±×³ÎÀ» »ó¼Ó¹Þ´Â´Ù. ÀÚ¼¼ÇÑ °ÍÀº GtkItem¿¡ ´ëÇؼ ÂüÁ¶Ç϶ó.
guint gtk_list_item_get_type (void)
GtkListItemÇüÀÇ ½Äº°ÀÚ¸¦ ¸®ÅÏÇÑ´Ù.
GtkWidget* gtk_list_item_new (void)
»õ·Î¿î GtkListItem object¸¦ ¸¸µç´Ù. ÀÌ »õ·Î¿î widgetÀº GtkWidget object ¸¦ ÇâÇÑ Æ÷ÀÎÅͷμ ¸®ÅϵȴÙ. 'NULL'Àº ½ÇÆÐÇßÀ» °æ¿ìÀÇ ¸®ÅÏ°ªÀÌ´Ù.
GtkWidget* gtk_list_item_new_with_label (gchar *LABEL)
Çϳª»ÓÀÎ child·Î ÇϳªÀÇ GtkLabelÀ» °¡Áö¸ç GtkListItem object¸¦ ¸¸µç´Ù. ÀÌ »õ·Î¿î widgetÀº GtkWidget object¸¦ ÇâÇÑ Æ÷ÀÎÅͷμ ¸®ÅϵȴÙ. 'NULL'Àº ½ÇÆÐÇßÀ» ¶§ÀÇ ¸®ÅÏ°ªÀÌ´Ù.
void gtk_list_item_select (GtkListItem *LIST_ITEM)
ÀÌ°ÍÀº ±Ùº»ÀûÀ¸·Î, GtkItem::select ½Ã±×³ÎÀ» ¹ß»ýÇÒ gtk_item_select¸¦ È£ÃâÇÏ´Â µ¥ ÀÖ¾î¼ÀÇ wrapper´Ù(GTK_ITEM(list_item)). ÀÚ¼¼ÇÑ °ÍÀº GtkItemÀ» ÂüÁ¶Ç϶ó.
void gtk_list_item_deselect (GtkListItem *LIST_ITEM)
ÀÌ°ÍÀº GtkItem::deselect ½Ã±×³ÎÀ» ¹ß»ýÇÒ gtk_item_deselect¸¦ È£ÃâÇÏ´Â µ¥ ÀÖ¾î¼ÀÇ wrapper´Ù(GTK_ITEM(list_item)). ¿ª½Ã ÀÚ¼¼ÇÑ °ÍÀº GtkItemÀ» ÂüÁ¶ Ç϶ó.
GtkListItem* GTK_LIST_ITEM (gpointer OBJ)
´ëºÎºÐÀÇ Æ÷ÀÎÅ͸¦ GtkListItem*À¸·Î ij½ºÆ®ÇÑ´Ù. ÀÚ¼¼ÇÑ °ÍÀº ÀϹÝÀûÀÎ ¸ÅÅ©·Î¸¦ ÂüÁ¶Ç϶ó.
GtkListItemClass* GTK_LIST_ITEM_CLASS (gpointer CLASS)
´ëºÎºÐÀÇ Æ÷ÀÎÅ͸¦ GtkListItemClass*·Î ij½ºÆ®ÇÑ´Ù. ¿ª½Ã ÀϹÝÀûÀÎ ¸ÅÅ©·Î¿¡ ´ëÇÑ ºÎºÐÀ» ÂüÁ¶Ç϶ó.
gint GTK_IS_LIST_ITEM (gpointer OBJ)
¾î¶² Æ÷ÀÎÅÍ°¡ GtkListItem object¸¦ ÂüÁ¶ÇÏ°í ÀÖ´ÂÁö¸¦ °áÁ¤ÇÑ´Ù. ÀÚ¼¼ÇÑ °ÍÀº ÀϹÝÀûÀÎ ¸ÅÅ©·Î¿¡ ´ëÇؼ ÂüÁ¶Ç϶ó.
GtkList¿¡ ´ëÇÑ ¿¹Á¦¸¦ ÂüÁ¶Ç϶ó. ±×°ÍÀº GtkListItemÀÇ ÀÌ¿ë¹ý¿¡ ´ëÇؼµµ Àß ´Ù·ç°í ÀÖ´Ù.