´ÙÀ½ ÀÌÀü Â÷·Ê

2. GLADE¸¦ ÀÌ¿ëÇÑ ÅؽºÆ® ¿¡µðÅÍ °³¹ß - »çÀü ´Ü°è

¼³Ä¡°¡ Á¦´ë·Î µÇ¾ú´Â°¡? ±×·¸´Ù¸é ½ÇÇàÀ» Çغ¸ÀÚ. ÀÌ»ó¾øÀÌ ½ÇÇàµÇ¾ú´Ù¸é ÀÌÁ¦ ´Ü¼øÇÑ ¿¹Á¦ °³¹ßÀ» ÅëÇؼ­ GLADE¸¦ ÀÍÇô º¸µµ·Ï ÇÏÀÚ:

2.1 »çÀü Áö½Ä(preliminaries)

±×³É µå·¡±× ¾Ø µå¶øÀ¸·Î °³¹ßÇÒ ¼öµµ ÀÖÁö¸¸ ¿ÜÇüÀ» ¸¸µå´Â °Íº¸´Ù Á» ´õ ±í¼÷È÷ µé¾î°¥·Á¸é ´ÙÀ½°ú °°Àº »çÀü Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù:

¶óÀ̺귯¸®

GLADE°¡ GUI¸¦ ¸¸µé±â À§Çؼ­ ¸¹ÀÌ »ç¿ëÇÏ´Â ¶óÀ̺귯µé·Î½á ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ´Ù:

GTK+

ÀÌ°ÍÀº °¡Àå ±âÃÊÀûÀÎ ±â¹Ý Áö½ÄÀ¸·Î½á ´ÙÀ½°ú °°Àº ¹®¼­¸¦ ÅëÇؼ­ ½±°Ô ÀÚ°¡ ÇнÀ ÇÒ ¼ö ÀÖ´Ù http://kldp.org/KoreanDoc/html/GtkTutorial/GtkTutorial.html. ±×·¯³ª Á» ´õ ÀÚ¼¼È÷ µé¿©´Ù º¸°Å³ª library APIµéÀ» º¸·Á¸é ´ÙÀ½ »çÀÌÆ®¸¦ ã¾Æ¾ß ÇÒ °ÍÀÌ´Ù. http://www.gtk.org. ÀÌ°÷¿¡´Â ¸¹Àº ¹®¼­µé°ú ·¹ÆÛ·±½ºµéÀÌ ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â gtk_xxx, ¸Þ¸ð¸® °´Ã¼´Â GtkXxx, ¸ÅÅ©·Î´Â GTK_XXX °ú °°Àº ÇüŸ¦ °¡Áø´Ù.

GDK

XlibÀÇ ²À´ë±â¿¡ ÀÖ´Â wrapper library·Î °í¾ÈµÈ ¶óÀ̺귯¸®ÀÌ´Ù. ÀÌ°ÍÀº GTK+°¡ ÇȽº¸ÊÀ̳ª ÆùÆ® Ä÷¯µîÀ» ´Ù·ê ¶§ »ç¿ëµÇ´Â °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ¹®¼­µµ http://www.gtk.org¿¡ °¡¸é ãÀ» ¼ö ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â gdk_xxx, ¸Þ¸ð¸® °´Ã¼´Â GdkXxx, ¸ÅÅ©·Î´Â GDK_XXX °ú °°Àº ÇüŸ¦ °¡Áø´Ù.

Glib

ÀÌ°ÍÀº ¸Þ¸ð¸® ±¸Á¶(¸µÅ©µå ¸®½ºÆ®, ¸®½ºÆ®, Çؽ¬, ij½¬, Æ®¸®)³ª ŸÀ̸Ó, ÅؽºÆ® Ãâ·Â°ú °°Àº °ÍÀ» ´Ù·ê ¶§ »ç¿ëµÇ´Â °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ¹®¼­µµ http://www.gtk.org¿¡ °¡¸é ãÀ» ¼ö ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â g_xxx, ¸Þ¸ð¸® °´Ã¼´Â gxxx, ¸ÅÅ©·Î´Â GXXX °ú °°Àº ÇüŸ¦ °¡Áø´Ù.

À̸¦ ±¸Á¶È­Çؼ­ ±×¸²À¸·Î ³ªÅ¸³½´Ù¸é ´ÙÀ½°ú °°´Ù( gnome ¾ÆÅ°ÅØÃÄ).

gnome ¾ÆÅ°ÅØÃÄ

GTK+ Æ©Å͸®¾ó »ìÆ캸±â

½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯

À§ÀÇ GTK+ Æ©Å͸®¾ó ÆäÀÌÁö( http://kldp.org/KoreanDoc/html/GtkTutorial/GtkTutorial.html)¸¦ º¸¸é ¸¹Àº ±âÃÊÀûÀÎ ³»¿ëµé¿¡ ´ëÇÑ ¼³¸íÀÌ ÀÖ´Ù. À̵é Áß¿¡¼­ °¡Àå Áß¿äÇÏ´Ù ½ÍÀº °ÍÀº ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯(À©µµ¿ìÁîÀÇ ¸Þ½ÃÁö ¸Ê, ¸Þ½ÃÁö Çڵ鷯 µî°ú À¯»çÇÑ °³³ä)À̶ó ÇÒ ¼ö ÀÖ°Ú´Ù. ÀÌ´Â ´ë°³ ÇÊ¿äÇÑ Ã¢À» main ÇÔ¼ö(À©µµ¿ìÁîÀÇ WinMain()ÇÔ¼ö)¾È¿¡¼­ »ý¼ºÇÏ°í µð½ºÇ÷¹ÀÌÇÑ ÈÄ, ¸Þ½ÃÁö ÆßÇÁ¿¡ ÇØ´çÇÏ´Â gtk_main() ÇÔ¼ö·Î ÁøÀÔÇÏ´Â µ¥, ÀÌ ¾È¿¡¼­ »ç¿ëÀÚ ¾×¼Ç¿¡ ´ëÇÑ ½Ã±×³ÎµéÀÌ »ý¼ºµÇ¾î¼­ ¾îÇø®ÄÉÀ̼ǿ¡°Ô Àü´ÞµÈ´Ù.

À̸¦ À§Çؼ­´Â »çÀü¿¡ ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯¸¦ ¸ÊÇνÃÄÑÁÖ´Â Áغñ Á¶ÀÛÀ» ÇØÁÖ¾î¾ß ÇÏ´Â µ¥ ±× ¿ªÇÒÀ» ÇÏ´Â °ÍÀÌ gtk_signal_connect()¶ó´Â ÇÔ¼ö¸¦ ÅëÇؼ­ÀÌ´Ù. GLADE°¡ ¸¸µå´Â ¼Ò½º ÄÚµå´Â »ç¿ëÀÚ°¡ GLADE¸¦ ÅëÇؼ­ µî·ÏÇÏ´Â ½Ã±×³Îµé°ú ½Ã±×³Î Çڵ鷯°£ÀÇ ¸ÊÇÎÀ» ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ÞÀΠâÀ» »ý¼ºÇÏ´Â ÇÔ¼öcreate_window1(ÀÌ À̸§Àº Àý´ëÀûÀÌÁö ¾ÊÀ» ¼ö ÀÖ´Ù) ¾È¿¡¼­ ÇÏ°í ÀÖÀ½À» ¾ÕÀ¸·Î È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¶ÇÇÑ ÀÌ ÇÔ¼ö ³»¿¡¼­´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ÞÀΠâÀ§¿¡ ºÙ¿© ³õÀº ¸¹Àº À§Á¬µéÀ» »ý¼ºÇÏ°í ¼Ó¼º ¼³Á¤ÇÏ´Â µîÀÇ ÀÏÀ» °âÇÑ´Ù.

ÆÑÅ· ¹× ¼öÆò/¼öÁ÷/Å×ÀÌºí ¹Ú½º

´ÙÀ½À¸·Î ÆÑÅ·À̶ó´Â °³³äÀÎ µ¥ ÀÌ°ÍÀº À©µµ¿ìÁî¿¡´Â ¾ø´Â °³³äÀÌ´Ù(Ȥ½Ã MFC³»ºÎÀûÀ¸·Î ±¸ÇöµÇ¾î 󸮵ǴÂÁö´Â ¸ð¸£Áö¸¸ ¸»ÀÌ´Ù). ±×·¸°Ô ¾î·Á¿î °³³äÀº ¾Æ´Ï°í ¿©·¯°¡Áö À§Á¬À» »öÁ¾ÀÌ À߶ó ºÙÀ̱âó·³ ºÙ¿© ³ª°¥ ¶§ ¹Ø¿¡ ÀÖ´Â °Í°ú ±× À§¿¡ ÀÖ´Â °ÍÀÇ ¹ÙÅÁÀ¸·Î »ý°¢ÇÏ´Â °³³äÀ̸ç ÁÖ·Î ·¹À̾ƿô¿¡ ´ëÇÑ ±â´É Áö¿øÀ» ÇÑ´Ù. ÀÌ°ÍÀº À©µµ¿ìÁî º¸´Ù´Â ÀÚ¹Ù¿¡ ÀÖ´Â ÄÁÅ×ÀÌ³Ê ¹× ·¹À̾ƿô °³³ä°ú À¯»çÇÏ´Ù°í ÇÒ ¼ö ÀÖ°Ú´Ù.

GTK+¸¦ °ðÀÌ °ð´ë·Î ÇÁ·Î±×·¡¹ÖÇÑ´Ù¸é Á¶±Ý ²¨²ô·¯¿ï ¼ö ÀÖ°ÚÁö¸¸, GLADE¿¡¼­´Â ÀÌ°ÍÀ» ½Ã°¢ÀûÀ¸·Î ó¸®ÇØ ÁØ´Ù. ¼öÆò ¹Ú½º(ÀÚ¹Ù ¿ë¾î·Î ÇÑ´Ù¸é ÄÁÅ×À̳Ê) ¹× ¼öÁ÷ ¹Ú½º ±×¸®°í Å×ÀÌºí ¹Ú½º¸¦ Á¦°øÇÏ¸ç ¿©±â¿¡´Ù ¿©·¯°¡Áö °´Ã¼µé, Áï À§Á¬µéÀ» ¼Õ½±°Ô ºÙ¿´´Ù ¶¼¾ú´Ù ÇÒ ¼ö ÀÖ´Ù.

À§¿Í °°Àº °³³äÀ» °¡Áö°í ¸¸µé¾îÁø ¾îÇø®ÄÉÀ̼ÇÀº ´ÙÀ½ ±×¸² GTK·Î ¸¸µç ¾îÇø®ÄÉÀÌ¼Ç ³»ºÎ °èÃþ ±¸Á¶°ú °°Àº ³»ºÎ °èÃþ ±¸Á¶¸¦ °®´Â´Ù.

GTK·Î ¸¸µç ¾îÇø®ÄÉÀÌ¼Ç ³»ºÎ °èÃþ ±¸Á¶

2.2 GLADE »ìÇDZâ

¼¼ °³ÀÇ µðÆúÆ® À©µµ¿ì

GLADE¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°Àº ¼¼°³ÀÇ Ã¢ÀÌ µðÆúÆ®·Î ¶á´Ù:

ÁÖ À©µµ¿ì(main glade window)

GLADE ¸ÞÀÎ À©µµ¿ì

ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ®¸¦ ±¸¼ºÇÏ´Â ¸ðµç âµé°ú ´ëÈ­»óÀÚµéÀ» ´ã°í ÀÖ´Ù. À̵é ÁßÀÇ Çϳª¸¦ ´õºí Ŭ¸¯Çϸé ÀÌ¿¡ ´ëÀÀÇϴ âÀ̳ª ´ëÈ­»óÀÚ ÅÛÇø®Æ®°¡ ¶á´Ù. ±×¸®°í ÀÌ¿¡ ´ëÀÀÇϴ âÀ̳ª ´ëÈ­»óÀÚÀÇ ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÁ·ÎÆÛƼ ¿¡µðÅÍ °´Ã¼°¡ ÀÌ°ÍÀ¸·Î º¯°æµÈ´Ù.

À§Á¬ ÆÈ·¹Æ® À©µµ¿ì(widget palette window)

GLADE À§Á¬ ÆÈ·¹Æ® À©µµ¿ì

ÀÌ°ÍÀº °¡´ÉÇÑ ¸ðµç À§Á¬µéÀÇ µé¾î ÀÖ´Â ÆÈ·¹Æ®ÀÌ´Ù. »õ·Î¿î âÀ̳ª ´ëÈ­ »óÀÚ¸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÏ·Á¸é ÆÈ·¹Æ®¿¡ Àִ âÀ̳ª ´ëÈ­»óÀÚ¸¦ Ŭ¸¯Çϱ⸸ ÇϸéµÈ´Ù. ÀÌ·¸°Ô »ý¼ºµÈ âÀ̳ª ´ëÈ­»óÀÚ¿¡ À§Á¬À» ºÙÀÌ·Á¸é À§Á¬À» Ŭ¸¯Çؼ­ ¼±ÅÃÇÑ ´ÙÀ½ ´õÇÏ°íÀÚ ÇÏ´Â À§Ä¡¿¡ Ŭ¸¯ÇÏ¸é µÈ´Ù.

¼Ó¼º ÆíÁý±â À©µµ¿ì(property editor window)

GLADE ¼Ó¼º ÆíÁý±â À©µµ¿ì

ÀÌ°ÍÀº âÀ̳ª ´ëÈ­»óÀÚ, ±×¸®°í À̵é À§¿¡ ÀÖ´Â À§Á¬µéÀÇ Å©±â ¶Ç´Â ÅؽºÆ® µî°ú °°Àº ¼Ó¼ºµéÀ» º¯°æÇÒ ¶§ »ç¿ëÇÑ´Ù. ÁÖ À©µµ¿ì¿¡ Àִ âÀ̳ª ´ëÈ­»óÀÚ¸¦ Ŭ¸¯ÇÏ¿©, ¶Ç´Â âÀ̳ª ´ëÈ­»óÀÚ À§¿¡ ÀÖ´Â À§Á¬À» Ŭ¸¯Çؼ­, ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÒ ´ë»ó °´Ã¼¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.

±âŸ º¸Á¶ âµé

GLADE´Â ´ÙÀ½°ú °°Àº º¸Á¶ âµéÀ» °¡Áö°í ÀÖÀ¸¸ç ÁÖ·Î ¸Þ´º¸¦ ÅëÇؼ­ Á¢±ÙµÉ ¼ö ÀÖ´Ù:

¸Þ´º ÀÛ¼º À©µµ¿ì

GLADE ¸Þ´º ÀÛ¼º À©µµ¿ì

ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ® â¿¡ ¸Þ´º¸¦ Ãß°¡ÇÑ °æ¿ì ÀÌ ¸Þ´º¸¦ Ŭ¸¯ÇÑÈÄ ¼Ó¼º ÆíÁý±â À©µµ¿ì¿¡ ³ªÅ¸³ª´Â edit menu ¹öÆ°À» ´©¸£¸é ³ªÅ¸³­´Ù. ÀÌ°ÍÀ» ÅëÇؼ­ ¿©·¯ºÐÀº ÇÁ·ÎÁ§Æ®ÀÇ ¸Þ´º¸¦ ÆíÁýÇÒ ¼ö ÀÖ´Ù.

ÀÌ°÷¿¡¼­ »ý¼ºµÈ ¸Þ´º´Â ¼Ò½º¿¡ ÀÚµ¿À¸·Î µé¾î°¡°Ô µÈ´Ù.

add¸¦ ´©¸¥ ÈÄ¿¡ Stock Item ÄÞº¸¹Ú½º¸¦ ´­·¯¼­ ¹Ì¸® Á¤ÀǵÈ, ±×¸®°í ³Î¸® ¾²ÀÌ´Â ¸Þ´º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀÌ ¶§ Handler°¡ ÀÌ¿¡ ¸ÂÃç Á¤ÇüÈ­µÈ ²Ã·Î ³ªÅ¸³ª°Ô µÇ¾î ÀÖ´Â µ¥, ÇѱÛÈ­µÈ ¹öÀüÀÇ °æ¿ì Çѱ۷ΠµÈ ÇÔ¼ö°¡ Handler°¡ µÇ¾î¼­ ¼Ò½º¿¡ ±úÁö°Å³ª ÇÑ±Û ºÎºÐÀÌ ¾ð´õ¶óÀÎÀ¸·Î ä¿öÁø ÇÔ¼ö°¡ ³ªÅ¸³ª°Ô µÈ´Ù. °í·Î Handler ºÎºÐÀº µÇµµ·ÏÀÌ¸é ¿µ¹®À¸·Î ¹Ù²ã ÁÖ´Â °ÍÀÌ ÁÁ°Ú´Ù.

À§Á¬ Æ®¸®(widget tree)

GLADE À§Á¬ Æ®¸®

ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ®¿¡ »ç¿ëµÈ ¸ðµç À§Á¬µéÀÇ Æ®¸® ±¸Á¶¸¦ º¸¿©ÁÖ´Â À©µµ¿ìÀÌ´Ù. ÀÌ°ÍÀº ÁÖ À©µµ¿ìÀÇ View/Show WidgetTreeÀ» ¼±ÅÃÇؼ­ º¼ ¼ö ÀÖ´Ù.

2.3 ºÐ¼®/¼³°è - ÅؽºÆ® ¿¡µðÅÍ ±â´É

¿ì¸®°¡ ¸¸µé°íÀÚ ÇÏ´Â ÅؽºÆ® ¿¡µðÅÍ´Â ´Ü¼øÇÑ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ¸·Î½á ¿ì¼± À©µµ¿ìÁîÀÇ notepad¸¦ ´à¾Ò´Ù°í »ý°¢ÇÏ½Ã¸é µÈ´Ù. ±×·¸´Ù¸é ÀÌ ¿¡µðÅÍ°¡ Áö¿øÇØ¾ß ÇÏ´Â ±×·¡¼­ ±¸ÇöÇØ¾ß ÇÏ´Â ±â´Éµé ¸®½ºÆ®¸¦ »ìÆ캸ÀÚ:


´ÙÀ½ ÀÌÀü Â÷·Ê