¸®´ª½º ±âŸ ÀÚ·á

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   gtk °­Á #3 1998/07/10 (17:31)
À̸§ ±èÈ¿¿ø
¹øÈ£ 87
Á¶È¸ 238
º»¹®
********************
*** 5. WidgetÀÇ °³¿ä
********************

 GTK¿¡¼­ widgetÀ» ¸¸µå´Â ÀϹÝÀûÀÎ ÀýÂ÷´Â ´ÙÀ½°ú °°´Ù.

 1. gtk_*_new - »õ·Î¿î widgetÀ» ¸¸µé±â À§ÇÑ ´Ù¾çÇÑ ÇÔ¼ö.  ÀÌ°Íµé ¸ðµÎ´Â
 ¿©±â¼­ ÀÚ¼¼È÷ º¸¿©Áú °ÍÀÌ´Ù.

 2. Àû´çÇÑ Çڵ鷯¿¡ »ç¿ëÇÒ ¸ðµç ½Ã±×³ÎÀ» °áÇÕ½ÃŲ´Ù.

 3. WidgetÀÇ ¼Ó¼ºÀ» ¼¼ÆÃÇÑ´Ù.

 4. gtk_container_add()³ª gtk_box_pack_start()°°Àº Àû´çÇÑ ÇÔ¼ö¸¦ ½á¼­
 widgetÀ» ÄÁÅ×ÀÌ³Ê ¾ÈÀ¸·Î ÆÐÅ·ÇÑ´Ù.

 5. gtk_widget_show()·Î widgetÀ» º¸ÀδÙ.

 gtk_widget_show()´Â ¿ì¸®°¡ widgetÀÇ ¼Ó¼ºÀ» ¸ðµÎ ¼¼ÆÃÇßÀ½À» GTK¿¡°Ô ¾Ë¸®°í,
±×°ÍÀº ÀÌÁ¦ º¸¿©Áú Áغñ°¡ ´Ù µÈ °ÍÀÌ´Ù.  ¿ì¸®´Â ±×°ÍÀ» ´Ù½Ã º¸ÀÌÁö ¾Ê°Ô Çϱâ
À§ÇØ gtk_widget_hide¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.  WidgetµéÀÌ º¸¿©Áö´Â ¼ø¼­´Â Áß¿ä
ÇÏÁö ¾Ê´Ù.  ³»°¡ ¸»ÇÏ·Á´Â °ÍÀº, °¢°¢ÀÇ widgetÀÌ »ý°Ü³ª´Â ´ë·Î ½ºÅ©¸°¿¡
º¸¿©Áö°Ô ÇÏ´Â °Íº¸´Ù´Â, À©µµ¸¦ °¡Àå ³ªÁß¿¡ º¸¿©Áö°Ô Çؼ­ ¸ðµç ±¸¼º¿ä¼Ò°¡
Çѹø¿¡ Æ¢¾î¿À¸£°Ô ÇÏ´Â °ÍÀÌ ³´´Ù´Â °ÍÀÌ´Ù.  gtk_widget_show()ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ°Ô
µÇ¸é ¾î¶² widget(À©µµ ¿ª½Ã ÇϳªÀÇ widgetÀÌ´Ù)ÀÇ ±¸¼º¿ä¼ÒµéÀº ±× À©µµ ÀÚü°¡
º¸¿©Áö±â Àü¿¡ ¸ÕÀú º¸¿©ÁöÁö ¾Ê´Â´Ù.

***
*** 5-1. ij½ºÆÃ(ÀÚ·áÇüÀÇ °­Á¦º¯È¯)
***
 °è¼ÓÇϸ鼭 ¾Ë°ÚÁö¸¸, GTK´Â ÀÚ·áÇüÀÇ °­Á¦º¯È¯À» ½Ã½ºÅÛÀÌ´Ù.  ÀÌ°ÍÀº ÁÖ¾îÁø
´ë»óÀ» ij½ºÆÃÇÏ´Â ´É·ÂÀ» Å×½ºÆ®ÇÒ ¶§³ª, ±×¸®°í ij½ºÆÃÀ» ½ÇÇàÇÒ ¶§³ª, ¾ðÁ¦³ª
¸ÅÅ©·Î¸¦ ÀÌ¿ëÇÔÀ¸·Î½á ÀÌ·ç¾îÁø´Ù.  ¿ì¸®°¡ º¸°Ô µÉ ¸î¸îÀº ´ÙÀ½°ú °°´Ù.
 
       GTK_WIDGET(widget)

       GTK_OBJECT(object)

       GTK_SIGNAL_FUNC(function)

       GTK_CONTAINER(container)

       GTK_WINDOW(window)

       GTK_BOX(box)

 À̰͵éÀº ¸ðµÎ ÇÔ¼öÀÇ ÀÎÀÚµéÀ» ij½ºÆ®Çϱâ À§ÇØ ¾²¿´´Ù.  ¿ì¸®´Â À̵éÀ»
¿¹Á¦µé¿¡¼­ º¼ °ÍÀ̸ç, ÇÔ¼öÀÇ ¼±¾ðºÎ¸¦ º¸´Â °Í¸¸À¸·Î ±×µéÀ» ÀÌ¿ëÇÒ ¶§¸¦ ¸»ÇÒ
¼ö ÀÖÀ» °ÍÀÌ´Ù.

 ¾Æ·¡ÀÇ Å¬·¡½º °èÃþ±¸Á¶¿¡¼­ º¼ ¼ö ÀÖµíÀÌ, ¸ðµç GtkWidgetµéÀº ±â¹ÝŬ·¡½ºÀÎ
GtkObject¿¡¼­ ÆÄ»ýµÈ °ÍÀÌ´Ù.  ÀÌ°ÍÀº ¾î¶² ÇÔ¼ö°¡ object¸¦ ¿ä±¸ÇÒ ¶§ ¾îµð¼­
µçÁö widgetÀ» ÀÌ¿ëÇÒ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù - ´Ü¼øÈ÷ GTK_OBJECT() ¸ÅÅ©·Î¸¦
ÀÌ¿ëÇؼ­.  ¿¹¸¦ µé¾î º¸ÀÚ.

      gtk_signal_connect(GTK_OBJECT(button), "clicked",
                         GTK_SIGNAL_FUNC(callback_function), callback_data);

 ÀÌ°ÍÀº ¹öÆ°À» ÇϳªÀÇ object·Î ij½ºÆ®ÇÏ°í, ÇÔ¼ö Æ÷ÀÎÅ͸¦ callbackÀ¸·Î
ij½ºÆ®ÇÑ´Ù.

 ¸¹Àº widgetµéÀº ¶ÇÇÑ ÄÁÅ×À̳ʴÙ.  ¾Æ·¡ÀÇ Å¬·¡½º °èÃþ±¸Á¶¸¦ º¸¸é »ó´ç¼öÀÇ
widgetµéÀÌ GtkContainer¿¡¼­ ÆÄ»ýµÇ¾úÀ½À» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.  ±×µé Áß ¾î¶²
widgetÀÌ¶óµµ ÄÁÅ×À̳ʸ¦ ¿ä±¸ÇÏ´Â ÇÔ¼ö¿¡ ³Ñ°ÜÁÖ±â À§ÇØ GTK_CONTAINER ¸ÅÅ©·Î¸¦
ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.

 ºÒÇàÇÏ°Ôµµ ÀÌ·± ¸ÅÅ©·ÎµéÀº ÀÌ ¹®¼­¿¡¼­ ±¤¹üÀ§ÇÏ°Ô ´Ù·ç¾îÁöÁö ¾Ê¾Ò´Ù.  ³ª´Â
¿©·¯ºÐÀÌ GTKÀÇ Çì´õÆÄÀϵéÀ» »ìÆ캸±â¸¦ ±ÇÇÑ´Ù.  »ç½Ç, ÇÔ¼öÀÇ ¼±¾ðºÎ¸¦ º¸¸é¼­
widgetÀÌ ¾î¶»°Ô ÀÛ¿ëÇÏ´ÂÁö °øºÎÇÏ´Â °ÍÀº ±×¸® ¾î·ÆÁö ¾Ê´Ù.

***
*** 5-2. WidgetÀÇ °èÃþ±¸Á¶
***
 ¿©·¯ºÐÀÌ Âü°íÇÒ ¼ö ÀÖµµ·Ï, ¿©±â widgetµéÀ» º¸ÃæÇϱâ À§ÇÑ Å¬·¡½º °èÃþ±¸Á¶
Æ®¸®°¡ ÀÖ´Ù.

     GtkObject
     +-- GtkData
     |   \-- GtkAdjustment
     |
     \-- GtkWidget
         +-- GtkContainer
         |   +-- GtkBin
         |   |   +-- GtkAlignment
         |   |   +-- GtkFrame
         |   |   |   *-- GtkAspectFrame
         |   |   |
         |   |   +-- GtkItem
         |   |   |   +-- GtkListItem
         |   |   |   +-- GtkMenuItem
         |   |   |   |   +-- GtkCheckMenuItem
         |   |   |   |       *-- GtkRadioMenuItem
         |   |   |   |
         |   |   |   *-- GtkTreeItem
         |   |   |
         |   |   +-- GtkViewport
         |   |   \-- GtkWindow
         |   |       +-- GtkDialog
         |   |       \-- GtkFileSelection
         |   |
         |   +-- GtkBox
         |   |   +-- GtkHBox
         |   |   \-- GtkVBox
         |   |       +-- GtkColorSelection
         |   |       \-- GtkCurve
         |   |
         |   +-- GtkButton
         |   |   +-- GtkOptionMenu
         |   |   \-- GtkToggleButton
         |   |       \-- GtkCheckButton
         |   |           \-- GtkRadioButton
         |   |
         |   +-- GtkList
         |   +-- GtkMenuShell
         |   |   +-- GtkMenu
         |   |   \-- GtkMenuBar
         |   |
         |   +-- GtkNotebook
         |   +-- GtkScrolledWindow
         |   +-- GtkTable
         |   \-- GtkTree
         |
         +-- GtkDrawingArea
         +-- GtkEntry
         +-- GtkMisc
         |   +-- GtkArrow
         |   +-- GtkImage
         |   +-- GtkLabel
         |   \-- GtkPixmap
         |
         +-- GtkPreview
         +-- GtkProgressBar
         +-- GtkRange
         |   +-- GtkScale
         |   |   +-- GtkHScale
         |   |   \-- GtkVScale
         |   |
         |   \-- GtkScrollbar
         |       +-- GtkHScrollbar
         |       \-- GtkVScrollbar
         |
         +-- GtkRuler
         |   +-- GtkHRuler
         |   \-- GtkVRuler
         |
         \-- GtkSeparator
             +-- GtkHSeparator
             \-- GtkVSeparator

***
*** 5-3. À©µµ¿Í ¹«°üÇÑ widget
***
 ¿©±âÀÇ widgetµéÀº °ü·ÃµÈ À©µµ°¡ ¾ø´Â °ÍµéÀÌ´Ù.  ¸¸¾à ¾î¶² À̺¥Æ®¸¦ Æ÷Âø
ÇÏ·Á¸é GtkEventBox¸¦ ÀÌ¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù.  "EventBox Widget"¿¡ ´ëÇÑ ºÎºÐÀ»
ÂüÁ¶Ç϶ó.

      GtkAlignment
      GtkArrow
      GtkBin
      GtkBox
      GtkImage
      GtkItem
      GtkLabel
      GtkPaned
      GtkPixmap
      GtkScrolledWindow
      GtkSeparator
      GtkTable
      GtkViewport
      GtkAspectFrame
      GtkFrame
      GtkVPaned
      GtkHPaned
      GtkVBox
      GtkHBox
      GtkVSeparator
      GtkHSeparator

 ¿ì¸®´Â °¢°¢ÀÇ widgetÀ» Â÷·Ê·Î ½ÃÇèÇÏ°í ±×µéÀ» º¸ÀÏ ¼ö ÀÖ´Â °£´ÜÇÑ ÇÔ¼öµéÀ»
¸¸µé¾î °¡¸ç GTK¿¡ ´ëÇÑ Å½±¸¸¦ °è¼ÓÇÒ °ÍÀÌ´Ù.  ¶Ç´Ù¸¥ ÈǸ¢ÇÑ ¼Ò½º´Â GTK¿Í
ÇÔ²² ¹èÆ÷µÈ testgtk.c ÀÌ´Ù.  ±×°ÍÀº gtk/testgtk.c ¿¡¼­ ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.

******************
*** 6. ¹öÆ° widget
******************

***
*** 6-1. º¸ÅëÀÇ ¹öÆ°
***

 ¿ì¸®´Â ¹öÆ°widget¿¡ ´ëÇؼ­´Â °ÅÀÇ º¸¾Æ¿Ô´Ù.  ±×°ÍÀº »ó´çÈ÷ °£´ÜÇÏ´Ù.
±×·±µ¥ ¹öÆ°À» ¸¸µå´Âµ¥´Â µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.  ¿ì¸®´Â ¶óº§ÀÌ ÀÖ´Â ¹öÆ°À»
¸¸µé±â À§ÇØ gtk_button_new_with_labe()À» ÀÌ¿ëÇÒ ¼ö ÀÖ°í, ºó ¹öÆ°À» ¸¸µé±â
À§ÇØ gtk_button_new()¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.  ±×·± ´ÙÀ½ ±×°Í¿¡ ¶óº§À» ºÙÀ̵çÁö
ÇȽº¸ÊÀ» ºÙÀ̵çÁö ÇÏ´Â °ÍÀº ¿©·¯ºÐ¿¡°Ô ´Þ·ÁÀÖ´Ù.  ±×·¸°Ô ÇÏ·Á¸é »õ·Î¿î
¹Ú½º¸¦ ¸¸µé°í gtk_box_pack_start·Î½á ÀÌ ¹Ú½º ¾È¿¡ ¿ì¸®ÀÇ object¸¦ ÆÐÅ·Çϸç,
±× ´ÙÀ½¿£ gtk_container_add·Î½á ±× ¹Ú½º¸¦ ¹öÆ° ¾ÈÀ¸·Î ÆÐÅ·ÇÏ¸é µÈ´Ù.

 ÀÌ ¿¹Á¦´Â gtk_button_new¸¦ ÀÌ¿ëÇÏ¿© ±×¸²°ú ¶óº§ÀÌ ÀÖ´Â ¹öÆ°À» ¸¸µç´Ù.
¹Ú½º¸¦ ¸¸µå´Â Äڵ尡 ´Ù¸¥ °Íµé·ÎºÎÅÍ ¶³¾îÁ® ³ª¿Í ÀÖÀ¸¸ç ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥
¿¡¼­ ±×°ÍÀ» ÀÌ¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

 #include <gtk/gtk.h>

 /* À̹ÌÁö¿Í ±×°Í¿¡ ÆÐÅ·µÈ ¶óº§À» °¡Áö°í ÀÖ´Â hbox¸¦ Çϳª ¸¸µç´Ù.
  * ±×¸®°í ±× ¹Ú½º¸¦ ¸®ÅÏÇÑ´Ù. */

 GtkWidget *xpm_label_box (GtkWidget *parent, gchar *xpm_filename, gchar *label_text)
 {
     GtkWidget *box1;
     GtkWidget *label;
     GtkWidget *pixmapwid;
     GdkPixmap *pixmap;
     GdkBitmap *mask;
     GtkStyle *style;

     /* xpm°ú ¶óº§À» À§ÇÑ ¹Ú½º¸¦ ¸¸µç´Ù. */
     box1 = gtk_hbox_new (FALSE, 0);
     gtk_container_border_width (GTK_CONTAINER (box1), 2);

     /* ¹öÆ°ÀÇ ½ºÅ¸ÀÏÀ» ÃëÇÑ´Ù.. background »ö±òÀ» ÃëÇÏ´Â °Í °°Àºµ¥,
      * ¾Æ´Ï¶ó¸é ´©±º°¡ ³ª¿¡°Ô Á¤Á¤ÇØ ÁÖ±æ ¹Ù¶õ´Ù. */
     style = gtk_widget_get_style(parent);

     /* xpm ÆÄÀϷκÎÅÍ ÇȽº¸ÊÀ» ¸¸µç´Ù. */
     pixmap = gdk_pixmap_create_from_xpm (parent->window, &mask,
                                          &style->bg[GTK_STATE_NORMAL],
                                          xpm_filename);
     pixmapwid = gtk_pixmap_new (pixmap, mask);

     /* ¹öÆ°À» À§ÇÑ ¶óº§À» ¸¸µç´Ù. */
     label = gtk_label_new (label_text);

     /* ¹Ú½º ¾ÈÀ¸·Î ÇȽº¸Ê°ú ¶óº§À» ÆÐÅ·ÇØ ³Ö´Â´Ù. */
     gtk_box_pack_start (GTK_BOX (box1),
                         pixmapwid, FALSE, FALSE, 3);

     gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 3);

     gtk_widget_show(pixmapwid);
     gtk_widget_show(label);

     return (box1);
 }

 /* ¿ì¸®ÀÇ ÀüÇüÀûÀÎ callback ÇÔ¼ö´Ù. */
 void callback (GtkWidget *widget, gpointer *data)
 {
     g_print ("Hello again - %s was pressed\n", (char *) data);
 }

 int main (int argc, char *argv[])
 {
     /* GtkWidgetÀº widgetµéÀ» À§ÇÑ ±â¾ïÀå¼Ò Á¾·ù´Ù. */
     GtkWidget *window;
     GtkWidget *button;
     GtkWidget *box1;

     gtk_init (&argc, &argv);

     /* À©µµ¸¦ Çϳª ¸¸µç´Ù. */
     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

     gtk_window_set_title (GTK_WINDOW (window), "Pixmap'd Buttons!");

     /* ¸ðµç À©µµµé¿¡ ´ëÇØ ÀÌ·¸°Ô ÇØÁÖ´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. */
     gtk_signal_connect (GTK_OBJECT (window), "destroy",
                         GTK_SIGNAL_FUNC (gtk_exit), NULL);

     /* À©µµÀÇ border width¸¦ ¼¼ÆÃÇÑ´Ù. */
     gtk_container_border_width (GTK_CONTAINER (window), 10);

     /* »õ·Î¿î ¹öÆ°À» Çϳª ¸¸µç´Ù. */
     button = gtk_button_new ();

     /* ÀÌÂë¿¡¼­ ÀÌ ÇÔ¼ö¸¦ ¾²´Â °ÍÀ» ±â¾ïÇ϶ó. */
     gtk_signal_connect (GTK_OBJECT (button), "clicked",
                         GTK_SIGNAL_FUNC (callback), (gpointer) "cool button");

     /* ¹Ú½º¸¦ ¸¸µå´Â ÇÔ¼ö´Ù. */
     box1 = xpm_label_box(window, "info.xpm", "cool button");

     /* ¿ì¸® widgetµéÀ» ÆÐÅ·ÇÏ°í, º¸¿©ÁØ´Ù. */
     gtk_widget_show(box1);

     gtk_container_add (GTK_CONTAINER (button), box1);

     gtk_widget_show(button);

     gtk_container_add (GTK_CONTAINER (window), button);

     gtk_widget_show (window);

     /* ¿©±â¼­ºÎÅÍ´Â ¹º°¡ Àç¹ÌÀÖ´Â ÀÏÀÌ ½ÃÀÛµÉ ¶§±îÁö ¹«ÀÛÁ¤ ±â´Ù¸°´Ù. */
     gtk_main ();

     return 0;
 }

 xpm_label_box ÇÔ¼ö´Â ÄÁÅ×À̳ʰ¡ µÉ ¼ö ÀÖ´Â ¾î¶² widget¿¡¶óµµ ÇȽº¸Ê°ú
¶óº§À» ÆÐÅ·Çϱâ À§ÇÏ¿© ¾²¿©Áú ¼ö ÀÖÀ» °ÍÀÌ´Ù.

***
*** 6-2. Åä±Û ¹öÆ°
***
 Åä±Û¹öÆ°Àº Ŭ¸¯¿¡ ÀÇÇØ ÅÃÀϵǴ µÎ°¡Áö Áß ¾î´À ÇÑ »óÅ¿¡ ÀÖ¾î¾ß ÇÑ´Ù´Â
Á¡¸¸ »«´Ù¸é º¸Åë ¹öÆ°°ú ¸Å¿ì À¯»çÇÏ´Ù.  ±×°ÍÀº ´­·ÁÁø »óÅ·ΠÀÖ´Ù°¡µµ,
¿ì¸®°¡ ´Ù½Ã Ŭ¸¯ÇØ ÁÖ¸é ´Ù½Ã Æ¢¾î³ª¿À°Ô µÉ ¼ö ÀÖ´Ù.  ¶Ç Ŭ¸¯ÇÏ¸é ±×°ÍÀº
´Ù½Ã ´­·¯Á® µé¾î°¥ °ÍÀÌ´Ù.

 Åä±Û¹öÆ°¿¡ ¾²ÀÌ´Â ¸¹Àº ÇÔ¼öµéÀÌ ¶óµð¿À¿Í üũ ¹öÆ°¿¡ ÀÇÇØ »ó¼ÓµÇ¾î
¾²À̵íÀÌ, Åä±Û¹öÆ°Àº üũ¹öÆ°°ú ¶óµð¿À¹öÆ°ÀÇ ±â¹ÝÀÌ µÈ´Ù.  À̰͵éÀ» Á¢ÇÏ°Ô
µÇ¸é ÀÌ Á¡À» ´Ù½Ã ÁöÀûÇÒ °ÍÀÌ´Ù.

 »õ·Î¿î Åä±Û¹öÆ°À» ¸¸µé·Á¸é ÀÌ°ÍÀ» ÀÌ¿ëÇÑ´Ù.

      GtkWidget* gtk_toggle_button_new (void);

      GtkWidget* gtk_toggle_button_new_with_label (gchar *label);

 ÃßÃøÇÒ ¼ö ÀÖ°ÚÁö¸¸, ÀÌ°ÍÀº º¸Åë¹öÆ° widgetÀÇ È£Ãâ°ú ¶È°°ÀÌ ÀÛ¿ëÇÑ´Ù.
ù¹ø° °ÍÀº ºó Åä±Û¹öÆ°À», ±×¸®°í µÎ¹ø° °ÍÀº ÀÌ¹Ì ¶óº§widgetÀÌ ÆÐÅ·µÇ¾î
ÀÖ´Â ¹öÆ°À» ¸¸µç´Ù.
 Åä±Û¹öÆ°°ú ¶óµð¿À¹öÆ°, üũ¹öÆ°ÀÇ »óŸ¦ µÇµ¹¸®±â À§ÇØ, ¿ì¸®´Â ¾Æ·¡ÀÇ
¿¹Á¦¿¡¼­ º¸¿©Áú ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇÑ´Ù.  ÀÌ°ÍÀº ¾î¶² callback¿¡¼­ Åä±ÛÀÇ »óŸ¦
Å×½ºÆ®ÇÑ´Ù.  Åä±Û¹öÆ°¿¡ ÀÇÇØ ¹ß»ýÇÏ´Â ½Ã±×³ÎÀº (Åä±Û/üũ/¶óµð¿À ¹öÆ°
widgetµé) "toggled" ½Ã±×³ÎÀÌ´Ù.  ÀÌ ¹öÆ°µéÀÇ »óŸ¦ üũÇÏ·Á¸é ÀÌ toggled
½Ã±×³ÎÀ» Àâ¾Æ³»µµ·Ï ½Ã±×³Î Çڵ鷯¸¦ ¼Â¾÷ÇÏ°í, ±×°ÍÀÇ »óŸ¦ °áÁ¤Çϱâ À§ÇÑ
¸ÅÅ©·Î¸¦ ÀÌ¿ëÇÑ´Ù.  ±× callbackÀº ÀÌ·± ¸ð¾çÀÇ °ÍÀÌ´Ù.

      void toggle_button_callback (GtkWidget *widget, gpointer   data)
      {
          if (GTK_TOGGLE_BUTTON (widget)->active)
          {
              /* ÄÁÆ®·ÑÀÌ ¿©±â·Î ¿À¸é, Åä±Û¹öÆ°ÀÇ »óÅ´ upÀÌ´Ù. */

          } else {

              /* Åä±Û¹öÆ°Àº downÀÌ´Ù. */
          }
      }

      void gtk_toggle_button_set_state (GtkToggleButton *toggle_button,
                                        gint state);

 À§ÀÇ È£ÃâÀº Åä±Û¹öÆ°°ú, ±×°Í¿¡¼­ ÆÄ»ýµÇ´Â ¶óµð¿À¿Í üũ¹öÆ°ÀÇ »óŸ¦
¼¼ÆÃÇϱâ À§ÇØ ¾²ÀÏ ¼ö ÀÖ´Ù.  Ã¹¹ø° ÀÎÀÚ·Î ¿ì¸®°¡ ¸¸µç ¹öÆ°À» ³Ñ°ÜÁÖ°í,
±×¸®°í ±×°ÍÀÌ ´­¸° »óÅÂÀÎÁö ¾Æ´ÑÁö¸¦ ±¸º°Çϱâ À§ÇØ µÎ¹ø° ÀÎÀÚ¸¦ TRUE ¶Ç´Â
FALSE·Î ³Ñ°ÜÁØ´Ù.  µðÆúÆ®´Â ¾È ´­·¯Áø »óÅÂ, Áï FALSEÀÌ´Ù.

 ¿ì¸®°¡ gtk_toggle_button_set_state()ÇÔ¼ö¸¦ ¾²¸é ¹öÆ°¿¡¼­ "clicked"½Ã±×³ÎÀÌ
¹ß»ýÇؼ­ ¹öÆ°ÀÇ »óÅ°¡ ½ÇÁ¦·Î º¯ÇÏ°Ô µÊÀ» ±â¾ïÇÏÀÚ.

      void    gtk_toggle_button_toggled (GtkToggleButton *toggle_button);

 ÀÌ°ÍÀº °£´ÜÈ÷ ¹öÆ°À» Åä±ÛÇÏ°í, "toggled"½Ã±×³ÎÀ» ¹ß»ý½ÃŲ´Ù.

***
*** 6-3. üũ¹öÆ°
***
 Ã¼Å©¹öÆ°Àº À§¿¡ ÀÖ´Â Åä±Û¹öÆ°¿¡¼­ ¸¹Àº Ư¼º°ú ÇÔ¼öµéÀ» »ó¼Ó¹Þ¾ÒÁö¸¸ ´Ù¼Ò
´Ù¸£°Ô º¸ÀδÙ.  ÀÌ°ÍÀº ¹öÆ°°ú ±× ¾ÈÀÇ ÅؽºÆ®·Î Àִٱ⺸´Ù´Â, ÅؽºÆ® ¿·¿¡
ÀÖ´Â ÀÛÀº »ç°¢ÇüÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.  À̵éÀº ¾î¶² ¾îÇÿ¡¼­ Åä±ÛµÇ´Â ¿É¼ÇÀ¸·Î¼­
¸¹ÀÌ ºÃÀ» °ÍÀÌ´Ù.

 ÀÌ°ÍÀ» ¸¸µå´Â µÎ°¡Áö ÇÔ¼ö´Â º¸Åë¹öÆ°¿¡¼­¿Í ¸¶Âù°¡Áö´Ù.

      GtkWidget* gtk_check_button_new (void);

      GtkWidget* gtk_check_button_new_with_label (gchar *label);

 new_with_labelÇÔ¼ö´Â ¿·¿¡ ÅؽºÆ® ¶óº§À» °¡Áö°í Àִ üũ¹öÆ°À» ¸¸µç´Ù.

 Ã¼Å©¹öÆ°ÀÇ »óŸ¦ üũÇÏ´Â °ÍÀº Åä±Û¹öÆ°¿¡¼­¿Í °°´Ù.

***
*** 6-4. ¶óµð¿À¹öÆ°
***
 ¶óµð¿À¹öÆ°Àº ±×µéÀÌ ±×·ìÈ­µÇ¾î À־ ÇÑ ¹ø¿¡ ¿ÀÁ÷ Çϳª¾¿¸¸ ¼±ÅÃ/º¹±ÍµÉ ¼ö
ÀÖ´Ù´Â Á¡¸¸ »©°í´Â üũ¹öÆ°°ú À¯»çÇÏ´Ù.  ÀÌ°ÍÀº ¾îÇÃÀÌ ¿É¼ÇÀÇ ¸®½ºÆ®¿¡¼­
Çϳª¸¦ ¼±ÅÃÇϵµ·Ï ÇÏ´Â °æ¿ì¿¡ ¾²À̸é ÁÁÀ» °ÍÀÌ´Ù.

 »õ·Î¿î ¶óµð¿À¹öÆ°À» ¸¸µå´Â µ¥ ¾²´Â ÇÔ¼öµéÀÌ´Ù.

      GtkWidget* gtk_radio_button_new (GSList *group);

      GtkWidget* gtk_radio_button_new_with_label (GSList *group,
                                                  gchar *label);

 ÀÌ È£Ãâµé¿¡´Â ´Ù¼Ò ´Ù¸¥ ÀÎÀÚ°¡ ÀÖ´Ù´Â °ÍÀ» ´«¿©°Ü º¸ÀÚ.  À̵éÀº ÀûÀýÈ÷
ÀÓ¹«¸¦ ¼öÇàÇÒ ±×·ìÀ» ÇÊ¿ä·Î ÇÑ´Ù.  Ã¹¹ø° ÇÔ¼ö´Â ù¹ø° ÀÎÀÚ·Î NULLÀ» ³Ñ°Ü
Áà¾ß ÇÑ´Ù.  ±×¸®°í ¿ì¸®´Â ÀÌ°ÍÀ» ÀÌ¿ëÇÏ¿© ±×·ìÀ» ¸¸µç´Ù.

      GSList* gtk_radio_button_group (GtkRadioButton *radio_button);

 ±×¸®°í´Â ÀÌ ±×·ìÀ» gtk_radio_button_new ¶Ç´Â gtk_radio_button_new_with_
label¿¡ ù¹ø° ÀÎÀÚ·Î ³Ñ°ÜÁØ´Ù.  ´ÙÀ½À» ÀÌ¿ëÇؼ­ ¾î¶² ¹öÆ°ÀÌ µðÆúÆ®·Î
´­·¯Áö°Ô µÇ´ÂÁö¸¦ ºÐ¸íÈ÷ Çصδ °Íµµ ÁÁÀº »ý°¢ÀÌ´Ù.

      void gtk_toggle_button_set_state (GtkToggleButton *toggle_button,
                                        gint state);

 ÀÌ°ÍÀº Åä±Û¹öÆ°¿¡ ´ëÇÑ ºÎºÐ¿¡¼­ ¼³¸íµÇ¾úÀ¸¸ç, Á¤È®È÷ °°Àº ¹æ¹ýÀ» µû¸¥´Ù.

HomePage Backward Forward Post Reply List
1998 by swindler