¸®´ª½º ±âŸ ÀÚ·á |
---|
Á¦¸ñ | gtk °Á #5 1998/07/10 (17:31) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 89 |
Á¶È¸ | 330 |
º»¹® |
¡º¸®´ª½º Çдç-¹ø¿ª¹° (go LINUX)¡» 202¹ø Á¦ ¸ñ:[¹ø¿ª] gtk Tutorial, Chap8~9ÀÔ´Ï´Ù. ¿Ã¸°ÀÌ:Áß¾ÓÀÚ´ë(ÀÌÈÆ ) 98/03/11 15:29 ÀÐÀ½:165 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- ********************** *** 8. ÄÁÅ×ÀÌ³Ê widget ********************** *** *** 8-1. ³ëÆ®ºÏ *** ³ëÆ®ºÏwidgetÀº ¼·Î ¿À¹ö·¦µÇ¸ç ´Ù¸¥ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â 'ÆäÀÌÁöµé'ÀÇ ¸ðÀÓÀÌ´Ù. ÀÌ·± widgetÀº ÃÖ±Ù GUI ÇÁ·Î±×·¡¹Ö¿¡¼ ´õ ÀϹÝȵǾú°í, ȸ鿡¼ ºñ½ÁÇÏÁö¸¸ ±¸º°µÇ¾î¾ß ÇÒ Á¤º¸ ºí·°À» º¸ÀÌ´Â µ¥ ÁÁÀº ¹æ¹ýÀÌ´Ù. ¿ì¸®°¡ ¾Ë¾Æ¾ß ÇÒ Ã¹¹ø° ÇÔ¼ö´Â ¿¹»óÇÑ´ë·Î »õ·Î¿î ³ëÆ®ºÏwidgetÀ» ¸¸µå´Â °ÍÀÌ´Ù. GtkWidget* gtk_notebook_new (void); ÀÏ´Ü ³ëÆ®ºÏÀÌ ¸¸µé¾îÁö¸é, ±× ³ëÆ®ºÏwidgetÀ» ´Ù·ê 12°³ÀÇ ÇÔ¼ö°¡ ÀÖ´Ù. ±×µé ÇϳªÇϳª¸¦ »ìÆ캸ÀÚ. ¿ì¸®°¡ ¸ÕÀú ÇÒ ÀÏÀº ÆäÀÌÁö Ç¥½ÃÀÚÀÇ À§Ä¡¸¦ ¾î¶»°Ô Àâ´ÂÁö ¾Ë¾Æº¸´Â °ÍÀÌ´Ù. ÀÌ·± ÆäÀÌÁö Ç¥½ÃÀÚ È¤Àº 'tab'Àº, ³× °¡Áö ¹æ¹ýÀ¸·Î Àâ¾ÆÁÙ ¼ö ÀÖ´Ù. Áï top, bottom, left, ¶Ç´Â rightÀÌ´Ù. void gtk_notebook_set_tab_pos (GtkNotebook *notebook, GtkPositionType pos); GtkPositionTypeÀº ´ÙÀ½ Áß ÇϳªÀ̸ç, »ó´çÈ÷ Á÷°üÀûÀÌ´Ù. GTK_POS_LEFT GTK_POS_RIGHT GTK_POS_TOP GTK_POS_BOTTOM GTK_POS_TOPÀÌ µðÆúÆ®´Ù. ´ÙÀ½À¸·Î ³ëÆ®ºÏ¿¡ ¾î¶»°Ô ÆäÀÌÁö¸¦ ³Ö´ÂÁö ¾Ë¾Æº¸ÀÚ. ÀÌ·¸°Ô ÇÏ´Â °Í¿¡´Â ¼¼°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ¿ì¼± ¼·Î À¯»çÇÑ µÎ°¡Áö¸¦ ¸ÕÀú »ìÆ캸ÀÚ. void gtk_notebook_append_page (GtkNotebook *notebook, GtkWidget *child, GtkWidget *tab_label); void gtk_notebook_prepend_page (GtkNotebook *notebook, GtkWidget *child, GtkWidget *tab_label); ÀÌ·± ÇÔ¼öµéÀº ³ëÆ®ºÏÀÇ µÚ¿¡ »ðÀԵǴøÁö(append), ¶Ç´Â ³ëÆ®ºÏÀÇ ¾Õ¿¡¼ »ðÀԵǴøÁö(prepend) Çؼ ÆäÀÌÁö¸¦ ´õÇØÁØ´Ù. *child´Â ³ëÆ®ºÏ ÆäÀÌÁö¿¡ À§Ä¡ÇÏ´Â widgetÀÌ°í, *tab_labelÀº ´õÇØÁú ÆäÀÌÁö¸¦ À§ÇÑ ¶óº§ÀÌ´Ù. ÆäÀÌÁö¸¦ ´õÇØÁÖ´Â ¸¶Áö¸· ÇÔ¼ö´Â ¾ÕÀÇ µÎ°¡Áö°¡ °¡Áø Ư¼ºÀ» ¸ðµÎ °¡Áö°í ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ°ÍÀº ¿ì¸®°¡ ³ëÆ®ºÏÀÇ ¾î´À À§Ä¡¿¡ ÆäÀÌÁö¸¦ ¼³Á¤ÇÒ Áö¸¦ Á¤Çϵµ·Ï ÇØÁØ´Ù. void gtk_notebook_insert_page (GtkNotebook *notebook, GtkWidget *child, GtkWidget *tab_label, gint position); positionÀ̶ó´Â ¶Ç ÇϳªÀÇ ÀÎÀÚ¸¦ Æ÷ÇÔÇÑ´Ù´Â °Í¸¸ »©°í´Â, gtk_notebook_ append_page ±×¸®°í gtk_notebook_prepend_page¿Í ÀÎÀÚ°¡ °°´Ù. position ÀÎÀÚ´Â ÀÌ ÆäÀÌÁö°¡ ¾î´À À§Ä¡¿¡ »ðÀ﵃ °ÍÀÎÁö ÁöÁ¤ÇØ ÁØ´Ù. ÀÌÁ¦ ¾î¶»°Ô ÆäÀÌÁö¸¦ ´õÇÏ´ÂÁö ¾Ë¾ÒÀ¸¹Ç·Î, ³ëÆ®ºÏ¿¡¼ ÆäÀÌÁö¸¦ ¾î¶»°Ô Á¦°ÅÇÏ´ÂÁö¸¦ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. void gtk_notebook_remove_page (GtkNotebook *notebook, gint page_num); ÀÌ ÇÔ¼ö´Â page_num ÀÎÀÚ·Î ÁÖ¾îÁø ÆäÀÌÁö¸¦ ÃëÇؼ, ±×°ÍÀ» *notebookÀ̶ó´Â widget¿¡¼ Á¦°ÅÇØÁØ´Ù. ÇöÀçÀÇ ÆäÀÌÁö¸¦ ¾Ë¾Æ³»±â À§Çؼ´Â ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ´Ù. gint gtk_notebook_current_page (GtkNotebook *notebook); ¿©±â ¼Ò°³ÇÏ´Â µÎ ÇÔ¼ö´Â ³ëÆ®ºÏÀÇ ÆäÀÌÁö¸¦ ¾ÕµÚ·Î À̵¿ÇÒ ¶§ ¾²´Â °£´ÜÇÑ ÇÔ¼öµéÀÌ´Ù. ¿ì¸®°¡ ´Ù·ê ³ëÆ®ºÏ widgetÀ» ´Ù·ç±â À§Çؼ Àú¸¶´ÙÀÇ ÇÔ¼ö¸¦ Áֱ⸸ ÇÏ¸é µÈ´Ù. ÁÖÀÇÇÒ °ÍÀº, ¸¶Áö¸· ÆäÀÌÁö¿¡¼ gtk_notebook_next_page°¡ È£ÃâµÇ¸é ³ëÆ®ºÏÀÌ Ã¹¹ø° ÆäÀÌÁö·Î µ¹¾Æ°¡ ¹ö¸°´Ù´Â »ç½ÇÀÌ´Ù. ¸¶Âù°¡Áö·Î ù¹ø° ÆäÀÌÁö¿¡¼ gtk_notebook_prev_page°¡ È£ÃâµÇ¸é ³ëÆ®ºÏÀÇ ¸¶Áö¸· ÆäÀÌÁö ·Î °¡¹ö¸°´Ù. void gtk_notebook_next_page (GtkNoteBook *notebook); void gtk_notebook_prev_page (GtkNoteBook *notebook); À̹ø ÇÔ¼ö´Â 'active', Áï È°¼ºÈµÈ ÆäÀÌÁö¸¦ ¼¼ÆÃÇÑ´Ù. ¿¹¸¦µé¾î óÀ½ºÎÅÍ 5¹ø ÆäÀÌÁö·Î ³ëÆ®ºÏÀ» ¿·Á¸é ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µÉ °ÍÀÌ´Ù. ÀÌ°ÍÀ» ¾²Áö ¾ÊÀ¸¸é, µðÆúÆ®·Î ³ëÆ®ºÏÀº ù¹ø° ÆäÀÌÁö¿¡¼ ¿¸®°Ô µÈ´Ù. void gtk_notebook_set_page (GtkNotebook *notebook, gint page_num); ÀÌ µÎ ÇÔ¼ö´Â °¢°¢ ³ëÆ®ºÏÀÇ ÆäÀÌÁö tab°ú °æ°è¸¦ ´õÇϰųª Á¦°ÅÇØÁØ´Ù. void gtk_notebook_set_show_tabs (GtkNotebook *notebook, gint show_tabs); void gtk_notebook_set_show_border (GtkNotebook *notebook, gint show_border); ÀÎÀÚ show_tabs¿Í show_border´Â TRUE/FALSE Áß Çϳª°¡ µÉ ¼ö ÀÖ´Ù. ÀÌÁ¦ ¿¹Á¦¸¦ Çϳª º¸ÀÚ. ÀÌ°ÍÀº GTK ¹èÆ÷º»°ú ÇÔ²² ÀÖ´Â testgtk.c ÇÁ·Î±×·¥ À¸·Î, 13°³ÀÇ ÇÔ¼ö¸¦ ¸ðµÎ º¸¿©ÁØ´Ù. ÀÌ ÀÛÀº ÇÁ·Î±×·¥Àº ³ëÆ®ºÏ°ú ¿©¼¸ °³ÀÇ ¹öÆ°À» °¡Áö°í ÀÖ´Â À©µµ¸¦ ¸¸µç´Ù. ³ëÆ®ºÏÀº ¼¼°¡Áö ´Ù¸¥ ¹æ¹ý, Áï append/ insert/prepend¸¦ ÅëÇØ ´õÇØÁø 11°³ ÆäÀÌÁö¸¦ °¡Áö°í ÀÖ´Ù. ¹öÆ°µéÀº tabÀÇ À§Ä¡¸¦ ¼øȯ½Ãų ¼ö ÀÖ°í, tab°ú border¸¦ ´õÇØÁְųª Áö¿ï¼ö ÀÖÀ¸¸ç, ÇÑ ÆäÀÌÁö ¸¦ Áö¿ï ¼öµµ ÀÖ´Ù. ±×¸®°í ¾ÕµÚ ¾ç¹æÇâÀ¸·Î ÆäÀÌÁö¸¦ ¹Ù²ãÁÖ¸ç, ÇÁ·Î±×·¥À» ³¡³¾ ¼öµµ ÀÖ´Ù. #include <gtk/gtk.h> /* ÀÌ ÇÔ¼ö´Â tabÀÇ À§Ä¡¸¦ ·ÎÅ×ÀÌ¼Ç ½ÃŲ´Ù. */ void rotate_book (GtkButton *button, GtkNotebook *notebook) { gtk_notebook_set_tab_pos (notebook, (notebook->tab_pos +1) %4); } /* page tab°ú border¸¦ ´õÇϰųª »èÁ¦ÇÑ´Ù. */ void tabsborder_book (GtkButton *button, GtkNotebook *notebook) { gint tval = FALSE; gint bval = FALSE; if (notebook->show_tabs == 0) tval = TRUE; if (notebook->show_border == 0) bval = TRUE; gtk_notebook_set_show_tabs (notebook, tval); gtk_notebook_set_show_border (notebook, bval); } /* ³ëÆ®ºÏ¿¡¼ ÇÑ ÆäÀÌÁö¸¦ Á¦°ÅÇÑ´Ù. */ void remove_book (GtkButton *button, GtkNotebook *notebook) { gint page; page = gtk_notebook_current_page(notebook); gtk_notebook_remove_page (notebook, page); /* Need to refresh the widget -- This forces the widget to redraw itself. */ gtk_widget_draw(GTK_WIDGET(notebook), NULL); } void delete (GtkWidget *widget, GdkEvent *event, gpointer *data) { gtk_main_quit (); } int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *button; GtkWidget *table; GtkWidget *notebook; GtkWidget *frame; GtkWidget *label; GtkWidget *checkbutton; int i; char bufferf[32]; char bufferl[32]; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (delete), NULL); gtk_container_border_width (GTK_CONTAINER (window), 10); table = gtk_table_new(2,6,TRUE); gtk_container_add (GTK_CONTAINER (window), table); /* »õ ³ëÆ®ºÏÀ» ¸¸µé°í, tabµéÀÇ À§Ä¡¸¦ ¼³Á¤ÇÑ´Ù. */ notebook = gtk_notebook_new (); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP); gtk_table_attach_defaults(GTK_TABLE(table), notebook, 0,6,0,1); gtk_widget_show(notebook); /* ³ëÆ®ºÏ¿¡ ÆäÀÌÁöµéÀÇ ¹À½À» Ãß°¡ÇÑ´Ù. */ for (i=0; i < 5; i++) { sprintf(bufferf, "Append Frame %d", i+1); sprintf(bufferl, "Page %d", i+1); frame = gtk_frame_new (bufferf); gtk_container_border_width (GTK_CONTAINER (frame), 10); gtk_widget_set_usize (frame, 100, 75); gtk_widget_show (frame); label = gtk_label_new (bufferf); gtk_container_add (GTK_CONTAINER (frame), label); gtk_widget_show (label); label = gtk_label_new (bufferl); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label); } /* ÁöÁ¤ÇÑ °÷À¸·Î ÇÑ ÆäÀÌÁö¸¦ ´õÇÑ´Ù. */ checkbutton = gtk_check_button_new_with_label ("Check me please!"); gtk_widget_set_usize(checkbutton, 100, 75); gtk_widget_show (checkbutton); label = gtk_label_new ("Add spot"); gtk_container_add (GTK_CONTAINER (checkbutton), label); gtk_widget_show (label); label = gtk_label_new ("Add page"); gtk_notebook_insert_page (GTK_NOTEBOOK (notebook), checkbutton, label, 2); /* ÀÌÁ¦ ³ëÆ®ºÏÀÇ ¼±µÎ¿¡ ÆäÀÌÁö¸¦ prependÇÑ´Ù. */ for (i=0; i < 5; i++) { sprintf(bufferf, "Prepend Frame %d", i+1); sprintf(bufferl, "PPage %d", i+1); frame = gtk_frame_new (bufferf); gtk_container_border_width (GTK_CONTAINER (frame), 10); gtk_widget_set_usize (frame, 100, 75); gtk_widget_show (frame); label = gtk_label_new (bufferf); gtk_container_add (GTK_CONTAINER (frame), label); gtk_widget_show (label); label = gtk_label_new (bufferl); gtk_notebook_prepend_page (GTK_NOTEBOOK(notebook), frame, label); } /* ½ÃÀÛÇÒ ÆäÀÌÁö¸¦ ¼¼ÆÃÇÑ´Ù(¿©±â¼´Â page 4). */ gtk_notebook_set_page (GTK_NOTEBOOK(notebook), 3); /* ¹öÆ°ÀÇ ´Ù¹ß(bunch)À» Çϳª ¸¸µç´Ù. */ button = gtk_button_new_with_label ("close"); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (destroy), NULL); gtk_table_attach_defaults(GTK_TABLE(table), button, 0,1,1,2); gtk_widget_show(button); button = gtk_button_new_with_label ("next page"); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", (GtkSignalFunc) gtk_notebook_next_page, GTK_OBJECT (notebook)); gtk_table_attach_defaults(GTK_TABLE(table), button, 1,2,1,2); gtk_widget_show(button); button = gtk_button_new_with_label ("prev page"); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", (GtkSignalFunc) gtk_notebook_prev_page, GTK_OBJECT (notebook)); gtk_table_attach_defaults(GTK_TABLE(table), button, 2,3,1,2); gtk_widget_show(button); button = gtk_button_new_with_label ("tab position"); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", (GtkSignalFunc) rotate_book, GTK_OBJECT(notebook)); gtk_table_attach_defaults(GTK_TABLE(table), button, 3,4,1,2); gtk_widget_show(button); button = gtk_button_new_with_label ("tabs/border on/off"); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", (GtkSignalFunc) tabsborder_book, GTK_OBJECT (notebook)); gtk_table_attach_defaults(GTK_TABLE(table), button, 4,5,1,2); gtk_widget_show(button); button = gtk_button_new_with_label ("remove page"); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", (GtkSignalFunc) remove_book, GTK_OBJECT(notebook)); gtk_table_attach_defaults(GTK_TABLE(table), button, 5,6,1,2); gtk_widget_show(button); gtk_widget_show(table); gtk_widget_show(window); gtk_main (); return 0; } ÀÌ°ÍÀ¸·Î ¿©·¯ºÐÀÇ GTK ¾îÇÃÀ» ¸¸µé ¶§ ³ëÆ®ºÏÀ» ´Ù·ç´Â ¹æ¹ý¿¡ ´ëÇÑ µµ¿òÀÌ µÇ±â¸¦ ¹Ù¶õ´Ù. *** *** 8-2. ½ºÅ©·ÑµÈ À©µµ *** ÀÌ°ÍÀº ½ÇÁ¦ À©µµ ³»ºÎ¿¡¼ ½ºÅ©·ÑµÈ ¿µ¿ªÀ» ¸¸µé ¶§ ¾²ÀÌ´Â °ÍÀÌ´Ù. ¿ì¸®´Â ÀÌ·± ½ºÅ©·ÑµÈ ¿µ¿ª¿¡ ¾î¶² Á¾·ùÀÇ widgetÀÌ¶óµµ »ðÀÔÇÒ ¼ö ÀÖ°í, ½ºÅ©·Ñ¹Ù¸¦ ÀÌ¿ëÇÏ¿© Å©±â¿¡ °ü°è¾øÀÌ Á¢±ÙÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ÇÔ¼ö´Â »õ·Î¿î ½ºÅ©·Ñ À©µµ¸¦ ¸¸µå´Â °ÍÀÌ´Ù. GtkWidget* gtk_scrolled_window_new (GtkAdjustment *hadjustment, GtkAdjustment *vadjustment); ù¹ø° ÀÎÀÚ´Â ¼öÆò¹æÇâÀ», ±×¸®°í µÎ¹ø° ÀÎÀÚ´Â ¼öÁ÷¹æÇâÀ» Á¶ÀýÇØ ÁØ´Ù. À̰͵éÀº ´ë°³ NULL·Î ¼¼ÆõȴÙ. void gtk_scrolled_window_set_policy (GtkScrolledWindow *scrolled_window, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy); ÀÌ°ÍÀº ½ºÅ©·Ñ¹ÙµéÀ» ¾²´Â ¹æ½ÄÀ» ¼³Á¤ÇÑ´Ù. ù¹ø° ÀÎÀÚ´Â ¿ì¸®°¡ º¯È ½ÃÅ°°íÀÚ ÇÏ´Â ½ºÅ©·Ñ À©µµ´Ù. µÎ¹ø°¿Í ¼¼¹ø° ÀÎÀÚµéÀº °¢°¢ ¼öÆò ½ºÅ©·Ñ¹Ù¿Í ¼öÁ÷ ½ºÅ©·Ñ¹ÙÀÇ ¹æ½ÄÀ» ¼¼ÆÃÇÑ´Ù. ÀÌ ¹æ½ÄÀ̶õ °ÍÀº GTK_POLICY_AUTOMATIC ȤÀº GTK_POLICY_ALWAYS °¡ µÈ´Ù. GTK_POLICY_AUTOMATICÀº ½ºÅ©·Ñ¹Ù°¡ ÇÊ¿äÇÒ ¶§¸¦ ÀÚµ¿ÀûÀ¸·Î °áÁ¤ÇÏ°í, ¹Ý¸é GTK_POLICY_ALWAYS´Â ¾ðÁ¦³ª ½ºÅ©·Ñ¹Ù¸¦ ¸¸µé¾î µÐ´Ù. ÀÌ °£´ÜÇÑ ¿¹Á¦´Â ½ºÅ©·ÑµÈ À©µµ¿¡ 100°³ÀÇ Åä±Û ¹öÆ°À» ÆÐÅ·ÇÑ´Ù. ¿©±â¼ÀÇ ÁÖ¼®Àº ¿©·¯ºÐ¿¡°Ô »ý¼ÒÇÒ ºÎºÐ¿¡¸¸ ºÙ¿©Áú °ÍÀÌ´Ù. #include <gtk/gtk.h> void destroy(GtkWidget *widget, gpointer *data) { gtk_main_quit(); } int main (int argc, char *argv[]) { static GtkWidget *window; GtkWidget *scrolled_window; GtkWidget *table; GtkWidget *button; char buffer[32]; int i, j; gtk_init (&argc, &argv); /* ½ºÅ©·ÑµÈ À©µµ°¡ ÆÐÅ·µÇ¾î µé¾î°¥ dialog À©µµ¸¦ ¸¸µç´Ù. * Dialog À©µµ¶õ vbox¿Í ±×°Í¿¡ ÆÐÅ·µÇ¾î µé¾î°¥ ¼öÆò seperator¸¦ °¡Áö°í * ÀÖ´Ù´Â °Í¸¸ »©°í´Â º¸ÅëÀÇ À©µµ¿Í µ¿ÀÏÇÑ °ÍÀÌ´Ù. ÀÌ°ÍÀº dialog¸¦ * ¸¸µé°Ô µÇ´Â ÀÏÁ¾ÀÇ shortcutÀÌ´Ù. */ window = gtk_dialog_new (); gtk_signal_connect (GTK_OBJECT (window), "destroy", (GtkSignalFunc) destroy, NULL); gtk_window_set_title (GTK_WINDOW (window), "dialog"); gtk_container_border_width (GTK_CONTAINER (window), 0); /* ½ºÅ©·ÑµÈ(scrolled) À©µµ¸¦ Çϳª ¸¸µç´Ù. */ scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_container_border_width (GTK_CONTAINER (scrolled_window), 10); /* ¿©±â¼ÀÇ ¹æ½ÄÀº GTK_POLICY_AUTOMATIC ¶Ç´Â GTK_POLICY_ALWAYS Áß * ÇϳªÀÌ´Ù. GTK_POLICY_AUTOMATICÀº ½ºÅ©·Ñ¹Ù°¡ ÇÊ¿äÇÑÁö¸¦ ÀÚµ¿ÀûÀ¸·Î * °áÁ¤ÇÏ°í, ¹Ý¸é GTK_POLICY_ALWAYS´Â ¾ðÁ¦³ª ½ºÅ©·Ñ¹Ù¸¦ °¡Áö°Ô ÇÑ´Ù. * ù¹ø°´Â ¼öÆò¹æÇâÀÇ ½ºÅ©·Ñ¹Ù, ±×¸®°í µÎ¹ø°´Â ¼öÁ÷¹æÇâÀÇ °ÍÀÌ´Ù. */ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); /* vbox°¡ ÆÐÅ·µÇ¾î µé¾î°£ dialog À©µµ¸¦ Çϳª ¸¸µç´Ù. */ gtk_box_pack_start (GTK_BOX (GTK_DIALOG(window)->vbox), scrolled_window, TRUE, TRUE, 0); gtk_widget_show (scrolled_window); /* 10Çà 10¿ÀÇ Å×À̺íÀ» ¸¸µç´Ù. */ table = gtk_table_new (10, 10, FALSE); /* x¿Í y¿¡ ´ëÇØ 10 ¸¸ÅÀÇ spacingÀ» ¼¼ÆÃÇÑ´Ù. */ gtk_table_set_row_spacings (GTK_TABLE (table), 10); gtk_table_set_col_spacings (GTK_TABLE (table), 10); /* ½ºÅ©·ÑµÈ À©µµ¿¡ Å×À̺íÀ» ÆÐÅ·ÇÑ´Ù. */ gtk_container_add (GTK_CONTAINER (scrolled_window), table); gtk_widget_show (table); /* ÀÌ°ÍÀº ´Ü¼øÈ÷ ½ºÅ©·ÑµÈ À©µµ¸¦ º¸¿©ÁÖ±â À§ÇØ Å×À̺í À§¿¡ * Åä±Û¹öÆ°µéÀÇ °ÝÀÚ(grid)¸¦ Çϳª ¸¸µç´Ù. */ for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) { sprintf (buffer, "button (%d,%d)\n", i, j); button = gtk_toggle_button_new_with_label (buffer); gtk_table_attach_defaults (GTK_TABLE (table), button, i, i+1, j, j+1); gtk_widget_show (button); } /* DialogÀÇ ¸Ç ¾Æ·¡ÂÊ¿¡ "close" ¹öÆ°À» Ãß°¡ÇÑ´Ù. */ button = gtk_button_new_with_label ("close"); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT (window)); /* ÀÌ°ÍÀ» µðÆúÆ® ¹öÆ°À¸·Î ÇÑ´Ù. */ GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), button, TRUE, TRUE, 0); /* ÀÌ ¹öÆ°ÀÌ µðÆúÆ® ¹öÆ°À¸·Î µÇµµ·Ï Àâ¾Ææ´Ù. °£´ÜÈ÷ "Enter"¸¦ Ä¡¸é * ÀÌ ¹öÆ°À» È°¼ºÈ ½Ãų °ÍÀÌ´Ù. */ gtk_widget_grab_default (button); gtk_widget_show (button); gtk_widget_show (window); gtk_main(); return(0); } À©µµÀÇ Å©±â¸¦ º¯ÇÏ°Ô Çغ¸¶ó. ½ºÅ©·Ñ¹Ù°¡ ¾î¶»°Ô ¹ÝÀÀÇÏ´ÂÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿ì¸®´Â ¶ÇÇÑ À©µµ³ª ´Ù¸¥ widgetÀÇ µðÆúÆ® Å©±â¸¦ ¼¼ÆÃÇϱâ À§ÇØ gtk_widget_set_usize()ÇÔ¼ö¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. |