¸®´ª½º ±âŸ ÀÚ·á |
---|
Á¦¸ñ | gtk Tutorial Index 1998/07/10 (17:47) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 101 |
Á¶È¸ | 359 |
º»¹® |
¡º¸®´ª½º Çдç-¹ø¿ª¹° (go LINUX)¡» 197¹ø Á¦ ¸ñ:[¹ø¿ª] gtk Tutorial, ³»ÀϺÎÅÍ ¿Ã¸³´Ï´Ù. ¿Ã¸°ÀÌ:Áß¾ÓÀÚ´ë(ÀÌÈÆ ) 98/03/10 16:43 ÀÐÀ½:282 E[7m°ü·ÃÀÚ·á ÀÖÀ½(TL)E[0m ----------------------------------------------------------------------------- ==================================================================== | GTK Tutorial | | Written By | | Ian Main, slow@intergate.bc.ca | | January 24, 1998. | | | | Translated and Rewritten By | | Seo Joo-tai, liberta@cau.ac.kr | | March ??, 1998. | ==================================================================== Áö³ 2¿ù ¸»ºÎÅÍ Á¶±Ý¾¿ ¹ø¿ªÇØ º» GTK TutorialÀÔ´Ï´Ù. Ãâó´Â GTK+ÀÇ °ø½Ä ȨÆäÀÌÁöÀÎ http://www.gimp.org/gtk ÀÔ´Ï´Ù. ¹ø¿ªÀ» ´ëÃæ ³¡¸¶Ä£ Áö±Ý(3/??), ÀÌ TutorialÀº 1998/1/24 ³¯Â¥·Î ¿Ã¶ó¿Â °ÍÀÌ °¡Àå »õ·Î¿î °ÍÀ̳׿ä. ¹°·Ð ÀÌ ¹ø¿ª¹°µµ ±×°ÍÀ» ±âÁØÀ¸·Î Çß½À´Ï´Ù. ¶Ç ÀçÈ°¿ë¼º(?)À» À§ÇÏ¿© óÀ½ºÎÅÍ ³¡±îÁö ÀϹÝÀûÀÎ ÅؽºÆ®(plane text)ÀÇ Æ÷¸ËÀ» À¯ÁöÇß½À´Ï´Ù. GTK+ TutorialÀº ¸ðµÎ 24°³ÀÇ Àå(Chapter)À¸·Î ÀÌ·ç¾îÁ³°í, 19Àå(Writing Your Own Widgets)Àº ¾ÆÁ÷ ¹ø¿ª ÁßÀÔ´Ï´Ù. ±×¸®°í 24Àå(Copying)À» ºñ·ÔÇÑ ¸î¸îÀº ¿ÀÈ÷·Á ¿ø¹®À» ±×´ë·Î Âü°íÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀ̶ó°í ÆÇ´Ü, °ÅÀÇ ¹ø¿ªÇÏÁö ¾Ê¾Ò½À ´Ï´Ù. ±×¸®°í Á¦°¡ ¹ø¿ªÇß´Ù°í ÁÖÀå(?)ÇÏ´Â ³ª¸ÓÁö Àåµéµµ, ¿ø·¡ »ó½ÄÀÌÇÏÀÇ ¿µ¾î½Ç·Â°ú ¼öÁØÀÌÇÏÀÇ Xlib/Widget Programming °æÇèÀ¸·Î ÀÎÇØ ²Ï³ª ¾îÁö·´°Ô ¾µ ¼ö¹Û¿¡ ¾ø¾ú½À´Ï´Ù. ÇÏÁö¸¸ ³ª¸§´ë·Î ½Å°æÀº ½èÀ¸´Ï±ñ, ¾Ë¾Æ¼ ¹Þ¾ÆµéÀÌ½Ã±æ ¹Ù¶ø´Ï´Ù. :) ¹ø¿ªÇÑ ³»¿ëÀÇ Á¤È®¼º¿¡ ´ëÇؼµµ Ã¥ÀÓ ¸ø Áý´Ï´Ù. ¶ÇÇÑ ´õ È¿°úÀûÀÎ ÀÌÇظ¦ À§Çؼ ¿¹Á¦¸¦ Á÷Á¢ ÄÄÆÄÀÏ/½ÇÇàÇØ º¸½Ç °ÍÀ» ±ÇÇÕ´Ï´Ù. ÀÌ Tutorial ¹ø¿ª¹®À» º¸´Â µ¥ ÀÖ¾î¼, ¾îÁö·¯¿òÀ» Á¶±ÝÀ̳ª¸¶ ´ú¾î µå¸®±â À§ÇØ ÀüüÀûÀÎ À±°ûÀ» ¼Ò°³ÇÕ´Ï´Ù. ==> tut01.txt <== *********** *** 1. ¼Ò°³ *********** GTK(GTK+)ÀÇ ¼³°è¿Í ¼Ò°³ÀÔ´Ï´Ù. ÀÌ¹Ì ³ª¿ì ¸®µ¿(go linux) ¹ø¿ª¹° °Ô½ÃÆÇ¿¡ ¿Ã¸° GTK+ FAQÀÌ Âü°í°¡ µÉ °ÍÀÔ´Ï´Ù. ==> tut02.txt <== ***************** *** 2. ½ÃÀÛÇÏ¸é¼ ***************** GTK ¾îÇÃÀÇ ÀüÇüÀûÀÎ ±¸Á¶¿Í, ±× À¯¸íÇÑ helloworld.c ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ±×¸®°í ´Ùµé °ñÄ¡¾ÆÆÄ ÇÏ´Â ÄÄÆÄÀÏ ¿É¼Çµµ °£´ÜÈ÷ ¼³¸íµÇ¾î ÀÖÁÒ. Áß¿äÇÑ ÀÌ·Ð, Áï ½Ã±×³Î(signal)°ú ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ(callback function)¸¦ GTK°¡ ÀÌ¿ëÇÏ´Â ¹æ½Ä¿¡ ´ëÇؼµµ ´Ù·ì´Ï´Ù. ==> tut03.txt <== ********************** *** 3. ¾ÕÀ¸·Î ³ª¾Æ°¡¸ç ********************** helloworld.c¸¦ Á¶±Ý °³¼±ÇÏ¸é¼ ÀÚ·áÇüµé¿¡ ´ëÇÑ ÀܼҸ® ÂɱÝ, ±×¸®°í ½Ã±×³Î Çڵ鷯¿¡ ´ëÇÑ º¸Ãæ¼³¸íÀÌ ÀÖ½À´Ï´Ù. ½Ã±×³Î, Áß¿äÇÑ °ÅÁÒ. ==> tut04.txt <== ****************** *** 4. ÆÐÅ· Widget ****************** ÆÐÅ·(packing)À̶ó´Â Áß¿äÇÑ °³³ä¿¡ ´ëÇØ(Àúµµ Áö±ßÁö±ßÇØÁ³½À´Ï´Ù` :) ¿¹Á¦¿Í ÇÔ²² ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù. ÆÐÅ·Àº »ç°¢ÇüÀÇ ¾î¶² ¿µ¿ª¿¡ ¹º°¡¸¦ ³Ö¾î µÐ´Ù´Â Àǹ̷Î, GTK+ó·³ À©µµ, °´Ã¼¸¦ ´Ù·ç´Â °³¹ß¹æ½Ä¿¡¼ ±²ÀåÈ÷ ±âº»ÀûÀÌ°í "ÀÚÁÖ ³ª¿À´Â" ³ðÀÔ´Ï´Ù. ¿©±â¼´Â Çϳª¾¿ ÆÐÅ·Çϱâ À§ÇÑ ¹Ú½º(box)°³³ä°ú, ¿©·¯°³¸¦ ÇѲ¨¹ø¿¡ ÆÐÅ·Çϱâ À§ÇÑ Å×À̺í(table)°³³äÀ» Â÷·Ê´ë·Î ¼Ò°³ÇÕ´Ï´Ù. ==> tut05.txt <== ******************** *** 5. WidgetÀÇ °³¿ä ******************** FAQ¿¡¼µµ ¾ð±ÞÇß°í, ÀÌ ¹®¼ÀÇ º»¹®¿¡µµ ¿©·¯¹ø °Á¶µÆÁö¸¸, GTK+Àº C¾ð¾îÀÇ typedef struct{...} WidgetObject; °°Àº ÀÌ¿ëÀ¸·Î "°´Ã¼ÁöÇâ±â¹ý"À» Ãß±¸ÇÏ°í ÀÖ½À´Ï´Ù. ¹°·Ð C++¿¡¼ÀÇ public member functionÀ» Èä³»³»±â À§ÇØ return_type (*func_pointer)(parameters,...) À¸·Î ¼±¾ðµÇ´Â callback ÇÔ¼ö¸¦ ¾¹´Ï´Ù. ¿©±â¼ func_pointerÀÇ Á¤Ã¼¸¦ ¾Ë°í, ±×¸®°í Àß ½á¸ÔÀ» ¼ö ÀÖÀ» Á¤µµÀÇ "C¾ð¾î ½Ç·Â(?)"¸¸ ÀÖ´Ù¸é GTK¸¦ °ñ·Á°¡¸ç ÀÌ±æ ¼ö ÀÖÀ» °Ì´Ï´Ù. GTK+Àº ÀÌ·¸°Ô ±×´ÙÁö ¾î·Á¿î °Ô ¾Æ´Õ´Ï´Ù. :) ÀÌ Àå¿¡¼´Â GTK+ ObjectÀÇ ÀüºÎ³ª ´Ù¸§¾ø´Â widget¿¡ ´ëÇØ, ÀÏÁ¾ÀÇ °ø°Ý ÀÛÀü¼³¸íÀ» ÇØÁÖ°í ÀÖ½À´Ï´Ù. ÀÌ¹Ì ´Ù¸¥ Widget Áý´ÜÀ» ½áº» °æÇè ȤÀº ÃÖ¼ÒÇÑ Xlib¸¦ ´Ù·ïº» °æÇèÀÌ ÀÖ´Ù¸é C¾ð¾î¿¡ ´ÉÅëÇÑ °Í¸¸ÅÀ̳ª Å« µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù. Âü, ÀÌ Àå¿¡´Â Gtk widget objectµéÀÇ °èÃþ±¸Á¶µµ ÁÙÁÙÀÌ ¼Ò°³µÇ¾î ÀÖ½À´Ï´Ù. ¸Å¿ì ¿ä±äÇÑ Á¤º¸ÁÒ. ==> tut06.txt <== ****************** *** 6. ¹öÆ° widget ****************** ¿ì¼± Á¦ÀÏ ¸¸¸¸ÇÑ widgetÀ¸·Î ¹öÆ°À» ÇØÄ¡¿ì°í ÀÖ½À´Ï´Ù. ±×³É ¹öÆ°, ÀÌ»Û ¹öÆ°(ÇȽº¸ÊÀÌ ºÙÀº~*), ƯÀÌÇÑ ¹öÆ°(Åä±Û, üũ, ¶óµð¿À,..) µî ¿ì¸®°¡ À©µµ¿ë ÀÀ¿ë¾îÇõ鿡¼ ¸¹ÀÌ ÀÌ¿ëÇØ ¿Â ¸ðµç(?) Á¾·ùÀÇ ¹öÆ°µéÀ» ÆÄÇìĨ´Ï´Ù. ==> tut07.txt <== ********************** *** 7. ´Ù¾çÇÑ widgetµé ********************** ÀÚ±â È¥ÀÚ ¾²À̱⺸´Ù ´Ù¸¥ widgetÀ» ²Ù¹Ì±â À§ÇØ ¾²ÀÌ´Â °æÇâÀÌ ÀÖ´Â ¸î°¡Áö Àâ´ÙÇÑ widgetÀ» ¼Ò°³ÇÕ´Ï´Ù. ¶óº§(label), dz¼±µµ¿ò¸»(tooltip), ÁøÇà ¸·´ë(progress bar), ´ëÈ»óÀÚ(dialog box), ÇȽº¸Ê(pixmap) µîÀÔ´Ï´Ù. ƯÈ÷ ÇȽº¸Ê¿¡ ´ëÇؼ´Â ²Ï ±æ°í ÀÚ»óÇÏ°Ô(?) ´Ù·ð±º¿ä. TooltipÀ» dz¼±µµ¿ò¸»À̶ó°í Çؼ®ÇÑ °Ç, MacOS(ÇѱÛÆÇ)¿¡¼ ±×·± °É dz¼±µµ¿ò¸»À̶ó ºÎ¸£´Â µ¥ Àͼ÷ÇØÁ³±â ¶§¹®ÀÔ´Ï´Ù. ¶Ç´Ù¸¥ Ç¥ÇöÀº ¸ô¶ó¿ä. :) ==> tut08.txt <== ********************** *** 8. ÄÁÅ×ÀÌ³Ê widget ********************** ³ëÆ®ºÏ(notebook)°ú ½ºÅ©·ÑµÈ À©µµ(scrolled window)¸¦ ´Ù·ì´Ï´Ù. À̵éÀº °á°úÀûÀ¸·Î º¸¿©Áö°Ô µÉ ´Ù¸¥ widgetµéÀ» Á¶Á÷ÀûÀ¸·Î °ü¸®ÇÏ´Â widget µéÀÔ´Ï´Ù. À¥½áÄ¡¿£Áø(Yahoo,Altavista,..)À¸·Î ÈçÇÑ ´Ü¾î, ¿¹¸¦µé¾î "girl"À» °Ë»öÇغ¸¸é ´Ùµé ¾Ë´Ù½ÃÇÇ ¹«Áö¸·ÁöÇÑ °¹¼öÀÇ ¸µÅ©°¡ ½ñ¾ÆÁöÁÒ? À̶§ ȸéÀ» °ü¸®Çϱâ À§ÇØ À¥ºê¶ó¿ìÀú À©µµ´Â ½ºÅ©·ÑµË´Ï´Ù. Áï, ½ºÅ©·Ñ¹Ù(scroll bar)°¡ »ý±âÁÒ. ÇÏÁö¸¸ "girl"ÀÇ °æ¿ìó·³ ¼öõ ¼ö¸¸ °³ÀÇ ¸µÅ©¸¦ °¡Á³´Ù¸é ½ºÅ©·Ñ¹Ù ·Îµµ °¨´ç¸øÇÏÁÒ? ±×·¡¼ ±× ÆäÀÌÁöÀÇ Á¦ÀÏ ¾Æ·¡ÂÊ¿¡ ³»·Á¿Íº¸¸é Àüü ¸µÅ©¸¦ 1ºÎÅÍ 20±îÁö, ±×¸®°í <´õ ÀÖÀ½(NEXT)>À̶ó´Â, ÆäÀÌÁö(page)·Î °ü¸®ÇÏ°í ÀÖÀ½À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÆäÀÌÁö¸¦ °ü¸®ÇÏ´Â °Ô ³ëÆ®ºÏÀÔ´Ï´Ù. ==> tut09.txt <== ******************** *** 9. ¸®½ºÆ® widget ******************** ÆÄÀϸŴÏÀú(file manager)°¡ °¡Àå ÁÁÀº ¿¹°¡ µÇ°Ú³×¿ä. M$À©µµ±×ÀÇ Å½»ö±â(explorer)³ª TkDeskÀÇ ÆÄÀÏ°ü¸®Ã¢À» º¸¸é, °¢ ÆÄÀÏÀÇ À̸§°ú ¼Ó¼ºµéÀ» ¾ÆÀÌÅÛ(item)À¸·Î ÇÏ´Â ¸®½ºÆ®(list)·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. ÀÌ Àå¿¡¼ ´Ù·ç´Â °ÍÀº ÀÌ·± ¸®½ºÆ®¸¦ ¸¸µå´Â ¹æ¹ý°ú, ¸¶¿ì½º¹öÆ°ÀÇ Á¿ìŬ¸¯À» ÀûÀýÈ÷ ³¢¿ö¸ÂÃç ¼±ÅÃ(selection)À» °ü¸®ÇÏ´Â ¹æ¹ý µîÀÔ´Ï´Ù. °£´ÜÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ÀÌ ÀÖÀ¸´Ï Âü°íÇϼ¼¿ä. ==> tut10.txt <== ***************** *** 10. ÆÄÀÏ ¼±Åà ***************** °£´ÜÇϸ鼵µ °ÅÀÇ ¸ðµç ¾îÇõ鿡¼ ¿ä±äÇÏ°Ô ¾²ÀÏ ÆÄÀϼ±Åà ¹Ú½º°¡ ¼Ò°³µÇ¾î ÀÖ½À´Ï´Ù. ±×³É '½¬¾î°¡´Â ÆäÀÌÁö' Á¤µµ µÉ µí Çϳ׿ä. :) ¿¹Á¦¸¦ ÄÄÆÄÀÏÇؼ ½ÇÇàÇØ º¸¸é, ¿Ö ³Êµµ³ªµµ ÅøŶ(toolkit)À» ã´ÂÁö ¾Ë ¼ö ÀÖÀ» °Ì´Ï´Ù. ==> tut11.txt <== ******************* *** 11. ¸Þ´º widget ******************* ¸Þ´º(menu)¸¦ ¸¸µå´Â ¹æ¹ýÀ» ¼Ò°³ÇÏ°í ÀÖ½À´Ï´Ù. GTK+ ¿ª½Ã ÇϳªÀÇ ÅøŶÀ̴ϱñ ³ª¸§´ë·Î ¸Þ´º Çϳª ¸¸µé¾î ÁÖ´Â ÇÔ¼ö ÂëÀº Á¦°øÇÕ´Ï´Ù. ±×¸®°í ¼¶¼¼ÇÔ¿¡¼± ¾à°£ ¶³¾îÁöÁö¸¸, ¸Þ´º¸¦ ¿Õâ ´ë·®»ý»êÇØÁÖ´Â °øÀå(factory)µµ Á¦°øÇÕ´Ï´Ù. ¸Þ´º¿¡´Â Ç®´Ù¿î(pull-down)°ú Æ˾÷(pop-up) µÎ°¡Áö°¡ ÀÖÁÒ. ±×¸®°í ½¬¿î ¹æ¹ý°ú "´õ" ½¬¿î ¹æ¹ý(¸Þ´º°øÀå)À» °¢°¢ ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï µÎ ¿¹Á¦ ÇÁ·Î±×·¥ÀÌ ¼Ò°³µÇ¾ú½À´Ï´Ù. ==> tut12.txt <== ******************************** *** 12. ¹®¼ÈµÇÁö ¾ÊÀº widgetµé ******************************** 'ÀÌ·± °Íµé¿¡ ´ëÇؼ´Â ¾ÆÁ÷ Æ©Å丮¾óÀÌ ¾øÀ¸´Ï ´ç½ÅÀÌ ÇÑ ¹ø ¸¸µé¾î ºÁ!' -> ÀÌ·¯´Â±º¿ä. :) ´©°¡ º»º¸±â·Î Preview¶ó´Â widget¿¡ ´ëÇØ ½á³ù´Ù¸ç ±× ¹®¼¸¦ ÀοëÇß´õ±º¿ä. ÇÏÁö¸¸ Àü ±× ºÎºÐÀ» °ú°¨È÷(?!) »èÁ¦ÇÏ°í ÀÌ Àå Àüü¸¦ ºñ¿öµ×½À´Ï´Ù. (Á˼Û~*) www.gimp.org/gtk¿¡ ÀÖ´Â ¿ø¹®À» Âü°í Çϼ¼¿ä. ==> tut13.txt <== ************************* *** 13. À̺¥Æ®¹Ú½º widget ************************* gtk+970916.tar.gz ÀÌÈÄÀÇ ¹èÆ÷º»¿¡¼¸¸ Áö¿øÇÏ´Â widgetÀ̶ó´Â±º¿ä. ¸Þ´ºµµ ¾Æ´Ï°í ¹öÆ°µµ ¾Æ´Ï°í, ¾î·µç °á°úÀûÀ¸·Î À¯¿ëÇÏ°Ô(?) ¾²Àδٳ׿ä. :) ==> tut14.txt <== ******************************** *** 14. WidgetÀÇ ¼Ó¼ºÀ» ¼¼ÆÃÇϱâ ******************************** Á¦¸ñÀº ±×·²µíÇÏÁö¸¸, ½ÇÁ¦·Î ÀÌ ÀåÀ» ¿¾îº¸´Ï ÇÔ¼ö¿øÇü(prototype) ¸î °³ »ÓÀÌ´õ±º¿ä. ÇÏÁö¸¸ GTK+¿¡¼µµ ¿ª½Ã ±ä ÇÔ¼öÀ̸§Àº ±× ÀÚü°¡ ¼³¸íÀÔ ´Ï´Ù. ù ºÎºÐ¿¡ ¹«½¼ ÀܼҸ®°¡ ÀÖ´øµ¥, ±×³É ÀÖ´Â ±×´ë·Î Çؼ®ÇØ µ×½À´Ï´Ù. °¢ widget objectµéÀÇ ¼Ó¼º(property)À» °ü¸®Çϱâ À§ÇÑ ÇÔ¼öµéÀÔ´Ï´Ù. ==> tut15.txt <== ****************************************** *** 15. ŸÀӾƿô, ±×¸®°í I/O¿Í Idle ÇÔ¼öµé ****************************************** ÁÖ¾îÁø ½Ã°£(milliseconds)¸¶´Ù È£ÃâµÇ´Â ÇÔ¼ö, ±×³É ´ë±âÇÏ´Â ÇÔ¼ö, µ¥ÀÌÅÍÀÇ À̵¿À» °¨½ÃÇÏ´Â(monitoring) ÇÔ¼ö µîÀÌ ¼Ò°³µÇ¾î ÀÖ½À´Ï´Ù. ¿¹Á¦´Â ¾øÁö¸¸ ´ëÃæ º¸¸é °¨ÀÌ ÀâÈú °Ì´Ï´Ù. ^^; ==> tut16.txt <== ************************** *** 16. Selection °ü¸®Çϱâ ************************** ´ëºÎºÐÀÇ Å͹̳ÎÀ̳ª ¿¡µðÅÍ(editor)´Â ¸¶¿ì½º·Î º»¹®À» Âï ±ÜÀ¸¸é ±× ¼±ÅÃµÈ ¿µ¿ªÀÌ ¹ÝÀüµÇ°í, ¸Þ´º¿¡¼ ±× ¿µ¿ª¿¡ ´ëÇØ Ä«ÇÇ(copy), ÄÆ(cut), ÆäÀ̽ºÆ®(paste) µîÀÇ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·±µ¥ ¾î¶² ¿¡µðÅÍ¿¡¼ ¹º°¡ ±Ü¾î³õ°í °ð¹Ù·Î ´Ù¸¥ ¿¡µðÅÍÀÇ ¶Ç ÇÑ ¿µ¿ªÀ» ±ÜÀ¸¸é º¸Åë ¾î¶»°Ô µÇ´ø°¡¿ä? Á¦°¡ ±â¾ïÇÏ´Â °ÅÀÇ ¸ðµç ¾îÇÃÀÇ °æ¿ì, ¸ÕÀú ±Ü¾ú´ø ³»¿ëÀº '¹«½Ã'µÇ´õ±º¿ä. ÀÌ·± ¹®Á¦¸¦ selectionÀÌ °ü¸®ÇÕ´Ï´Ù. ±²ÀåÈ÷ ¾î·Á¿î ´Ü¾îµµ ÀÖ°í Çؼ, °Ü¿ì ¹ø¿ªÇß½À´Ï´Ù. (¿ø¹®Àº ²Ï ÀоîÁÙ ¸¸ Çߴµ¥, Á¦°¡ ¹ø¿ªÇÑ °Ç ³ªµµ ÀбⰡ ½È³×¿ä. :) ==> tut17.txt <== ************ *** 17. glib ************ GTK+ FAQ¿¡¼µµ °£´ÜÈ÷ ¹àÇûÁö¸¸, GTK+´Â ±âÁ¸ÀÇ libc°¡ ¾Æ´Ñ, glib¸¦ ÀÌ¿ëÇÕ´Ï´Ù. ´çÀå °¢ Ç÷§Æû¿¡¼ ÀÌ »õ·Î¿î ¹öÀüÀÇ C ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇØ¾ß ÇÒ »Ó¸¸ ¾Æ´Ï¶ó, ¸î°¡Áö Ç¥ÁØÇÔ¼öµéÀÌ glib¿¡¼ ¾î¶»°Ô º¯Çß´ÂÁö ´ëÃæ ¾Ë¾Æ³ö¾ß ÇÏ°ÚÁÒ. (ÀϹÝÀûÀÎ »ç¿ëÀÚ ÀÔÀå¿¡¼´Â º°·Î º¯ÇÑ °Ô ¾ø½À´Ï´Ù, ¿ø·¡ printf°¡ g_print·Î ¹Ù²ï ½ÄÀ̴ϱñ¿ä. ;) ÀÌ Àå¿¡¼´Â ±âÁ¸ÀÇ libc¿¡¼´Â Á¦°øÇÏÁö ¾Ê´Â »õ·Î¿î °ÍµéÀ» À§ÁÖ·Î, °£´ÜÇÑ ¼³¸íÀ» ÇÏ°í ÀÖ½À´Ï´Ù. °¢ ÀÚ·áÇü¸¶´ÙÀÇ ±ØÇÑ°ª(extrema)°ú, ¾ÆÅ°ÅØÃÄ (architecture)¿¡ °ü°è¾øÀÌ typedefµÈ ÁÖ¿ä ÀÚ·áÇü(data type)µé, ±×¸®°í ¸»ÀÌ ³ª¿Â ±è¿¡ ÁÙÁÙÀÌ ¿¬°á¸®½ºÆ®(linked list)µµ ¼Ò°³ÇØ ³ù±º¿ä. ±âÁ¸ÀÇ ¸Þ¸ð¸® °ü¸® ÇÔ¼ö ´ë½Å ¾²¶ó¸é¼ g_malloc/g_free¸¦ ºñ·ÔÇÑ, glibÆÇÀÇ ¸Þ¸ð¸®ÇÔ¼öµéµµ ÀÖÀ¸¸ç, ½Ã½ºÅÛ Å¸À̸Ó(timer)ÇÔ¼ö, ¹®ÀÚ¿(string)ÇÔ¼ö±îÁö Àֳ׿ä. ±×¸®°í ³¡À¸·Î À¯Æ¿¸®Æ¼ ¹× ¿¡·¯ÇÔ¼öµéÀ» ¼Ò°³Çß½À´Ï´Ù. ==> tut18.txt <== ********************* *** 18. GTKÀÇ rc ÆÄÀÏ ********************* À¯´Ð½º °è¿ÀÇ ¿î¿µÃ¼Á¦¸¦ ÀÌ¿ëÇÏ´Â ºÐÀ̶ó¸é ²Þ¿¡¼µµ ÀÌ rcÆÄÀÏÀ» ÆíÁýÇÏÁö³ª ¾ÊÀ»Áö ¸ð¸£°Ú³×¿ä. ^^; ÀÌ Àå¿¡¼´Â ¿ì¸®°¡ Àͼ÷ÇØÁø ¾îÇõéó·³, ¶È°°Àº ¹ÙÀ̳ʸ®(binary,executable)¸¦ °¢ »ç¿ëÀÚÀÇ ÀÔ¸À¿¡ ¸Â°Ô 'ȯ°æ¼³Á¤'À» Çؼ ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ´Â °É ¼Ò°³ÇÕ´Ï´Ù. GTK+ÀÇ rcÆÄÀÏÀº ´Ù¸¥ ´ëºÎºÐÀÇ X¿ë ¾îÇõé°ú ºñ½ÁÇÑ, ÀÏ°ü¼º ÀÖ´Â ½Éº¼(simbol)À» ÀÌ¿ëÇÕ´Ï´Ù. ¸¶Áö¸· ºÎºÐ¿¡ ¿¹Á¦ rcÆÄÀÏÀÌ ÀÖÀ¸´Ï Âü°íÇϼ¼¿ä. ==> tut19.txt <== ****************************** *** 19. ÀڽŸ¸ÀÇ widget ¸¸µé±â ****************************** À½... Á˼ÛÇÏ°Ôµµ ÀÌ ÀåÀº ¾ÆÁ÷ ³¡³»Áö ¸øÇß½À´Ï´Ù. ÀԴ븦 ÇÑ´Þ ¾ÕµÎ°í ÁÖÃ¥¾øÀÌ »õ³»±âµé »õÅÍ¿¡ µû¶ó°¡°í, ¸çÄ¥µ¿¾È ¼ú¿¡ Àý¾ú´Ù°¡, Áý¿¡ ¿Í¼´Â Á¤½Å¾øÀÌ ºñµð¿À¸¦ º¸´À¶ó... ÀÌ·¸°Ô µÇ¾úÁÒ. :) Á» Á¤¸®°¡ µÇ´Â´ë·Î ¸¶Àú ¿Ã¸®°Ú½À´Ï´Ù. ±Ùµ¥ ÆÄÀÏ Å©±â°¡ Àå³ÀÌ ¾Æ´Ñ°É¿ä? ¿¡±Ã... ==> tut20.txt <== ********************************** *** 20. ³«¼Àå, °£´ÜÇÑ ±×¸®±â ¿¹Á¦ ********************************** »ó´çÈ÷ ¹æ´ëÇÏ°í Àâ´ÙÇÑ(?) ³»¿ëÀ» ´Ù·ç´Â ÀåÀÔ´Ï´Ù. GIMPó·³, ÁøÂ¥ ±×¸²À» ´Ù·ç±â À§Çؼ ¾Ë¾Æ¾ß ÇÒ °ÍµéÀ̶ó°í Çϴ±º¿ä. ¸ÕÀú ¸¶¿ì½º¿Í Å°º¸µåÀÇ ¹Ì¹¦ÇÑ Àú¼öÁØ À̺¥Æ®(low-level event)¸¦ ´Ù·ç°í ÀÖ½À´Ï´Ù. Xlib¿¡¼ Á¢ÇÒ ¼ö ÀÖµíÀÌ ¿©·¯ #define »ó¼öµéÀ» ºñÆ®¿¬»ê (bitwise operation)½ÃÅ°´Â °ÅÁÒ. ÀÌ »ó¼öµéÀº Å°º¸µå¿Í ¸¶¿ì½º¿¡¼ ÀϾ´Â ¿©·¯°¡Áö À̺¥Æ®µéÀ» ¼¶¼¼ÇÏ°Ô ±¸º°Çϱâ À§ÇÑ °ÍÀÌ°ÚÁÒ? µÚ¸¦ ÀÕ´Â ³ðµéÀº ³«¼¸¦ ÇÒ µµÈÁö¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ´ëºÎºÐÀÇ widget°ú ÇÔ¼öµéÀº GTKÀÇ º£À̽º(base)¸¦ ÀÌ·ç´Â GDK(General Drawing Kits) ¶óÀ̺귯¸®¿¡¼ ¿Â °Íµé ÀÔ´Ï´Ù. À©µµ¿¡ Á÷Á¢ ±×¸®´Â °Íº¸´Ù, ÇȽº¸ÊÀ̶ó´Â °¡»óÀÇ µµÈÁö¿¡ ±×·Á³õ°í ±× ³»¿ëÀ» ÇÊ¿äÇÒ ¶§ À©µµ·Î º¹»çÇØ ÁÖ´Â ¹æ½ÄÀ» ¾²ÁÒ, Xlib¿¡¼Ã³·³. ´ÙÀ½¿£ ÇȽº¸Ê¿¡ ±×¸²À» ±×¸®´Â µµ±¸µé¿¡ ´ëÇØ ÀܼҸ®°¡ À̾îÁý´Ï´Ù. Xlib¿¡¼ GC(Graphics Context)¶õ ³ðÀ» ±¸°æÇØ ºÃ´Ù¸é ´õ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °Ì´Ï´Ù. ¿¹¸¦µé¾î »ç°¢ÇüÀ» Çϳª ±×¸®´Â µµ±¸´Â gdk_draw_rectangle()À̶õ ³ð Àε¥, »ç°¢ÇüÀ» ÀÌ·ç´Â ¼±ÀÇ ±½±â, »ö±ò, Á¾·ù(½Ç¼±/Á¡¼±/¼â¼±) µî ±âº»ÀûÀÎ ¼Ó¼ºµéÀ» GC¿¡ ÀúÀåÇØ ³õ°í, ½ÇÁ¦·Î ±×¸± ¶§´Â gdk_draw_rectangleÀ̶õ ÇÔ¼öÀÇ ÀÎÀڷμ ÇØ´çÇÏ´Â ¼Ó¼ºÀ» °¡Áö°í ÀÖ´Â GC¸¦ ³Ñ°ÜÁÝ´Ï´Ù. ¹°·Ð GTK+´Â ÃæºÐÈ÷ °´Ã¼ÁöÇâÀûÀ̱⠶§¹®¿¡ ±âº»¸¸ ÀÌÇØÇÑ´Ù¸é Xlib¿¡¼º¸´Ù ´õ Á÷°üÀûÀ¸·Î Áñ±æ ¼ö ÀÖÀ» °Ì´Ï´Ù. ¾ÆÁ÷ ³¡³ªÁö ¾Ê¾Ò±º¿ä! -_-; ÀÌ Àå¿¡¼´Â ´õ ¼¶¼¼ÇÑ ±×¸²À» ±×¸®±â À§ÇØ ¸¶¿ì½ºº¸´Ù ´õ ÁÁÀº(´õ ºñ½Ñ?) ÀÔ·ÂÀåÄ¡¸¦ ÀÌ¿ëÇÒ °ÍÀ», Àº±ÙÈ÷ ºÎÃß±â°í ÀÖ½À´Ï´Ù. Drawing tablet°°Àº, Ư¼öÇÑ ÀÔ·ÂÀåÄ¡¿¡¼ ¹ß»ýÇÏ´Â ¶Ç´Ù¸¥ À̺¥Æ® µéÀ» ´Ù·ç±â À§ÇØ È®ÀåÀ̺¥Æ®(extended event)¸¦ Á¦°øÇÑ´Ù°í Çϳ׿ä. ¸¶¿ì½º ¿¡¼ ¹ß»ýÇÏ´Â ¸î°¡Áö À̺¥Æ®¸¸À¸·Îµµ ¸Ó¸®°¡ ¾Æǵ¥ ¸»ÀÔ´Ï´Ù. :) ¾î·µç ÀÌ ÀåÀÇ ¸¶Áö¸·¿¡¼´Â, ¸¶¿ì½ºº¸´Ù ´õ ÁÁÀº ÀåÄ¡(device)ÀÇ ±â´ÉÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ À̾߱âÇÏ°í ÀÖ½À´Ï´Ù. ==> tut21.txt <== ****************************** *** 21. GTK ¾îÇÃÀ» °³¹ßÇÏ´Â ÆÁ ****************************** ³Ê¹« Áß¿äÇÑ ³»¿ëÀ̶ó ²À Á÷Á¢ º¸¶ó°í¹Û¿¡´Â ¸»ÇÒ ¼ö ¾ø³×¿ä. ;) ==> tut22.txt <== ******************** *** 22. Contributing ******************** ¿ª½Ã ¸Å¿ì Áß¿äÇÑ °Ì´Ï´Ù. ==> tut23.txt <== *************** *** 23. Credits *************** ÀÌ ¹®¼¸¦ Á¦ÀÛÇÏ´Â µ¥ µµ¿òÀÌ µÈ »ç¶÷µé¿¡°Ô °¨»çÀÇ ¸»À» ÀüÇÏ´Â, ¿ª½Ã ¾ÆÁÖ Áß¿äÇÑ ÀåÀÔ´Ï´Ù. ÀϺΠ¿ø¹®À» ±×´ë·Î µ×½À´Ï´Ù. ==> tut24.txt <== *************** *** 24. Copying *************** GPL¿¡ ÀÇÇÑ ¸ðµç ¹®¼¿¡¼ º¼ ¼ö ÀÖ´Â, Á¤¸» Áß¿äÇÑ ±ÛÀÔ´Ï´Ù. ÀϺη¯ ¿ø¹®À» ±×´ë·Î ³öµ×½À´Ï´Ù. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$ ÀÌ ¹®¼¿Í, °ü·ÃµÈ ¹ø¿ª¹°¿¡ ´ëÇÑ ÀúÀÛ±Ç $$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ÀüÀûÀ¸·Î GPL¿¡ µû¸¨´Ï´Ù. ´©±¸µçÁö ¹«´ÜÀ¸·Î(!) Àοë/¼öÁ¤/¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð "ÇнÀ"À» ¸ñÀûÀ¸·Î ÇÒ °æ¿ìÁÒ. liberta@zeus.phys.cau.ac.kr liberta@cau.ac.kr |