GLADE¸¦ »ç¿ëÇÑ ¸®´ª½º µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß ¼±Á¤ÇÊ simje@maninet.com March 29th, 2000, ÃÖÁ¾ °»½Å : May 15th, 2000. GLADE¶õ GNU General Public License(GPL)À» µû¸£´Â GTK+ User Interface BuilderÀÌ´Ù. ½±°Ô ¾ê±âÇϸé GTK+¶ó´Â ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ¿© GUI »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ ¸¸µå´Â RAD(Rapid Application Development) ÅøÀÌ´Ù. ÀÌ°ÍÀÌ ¹«¾ùÀÎÁö ±×¸®°í À̸¦ ¾î¶»°Ô ±¸ÀÔ/¼³Ä¡ÇÏ´ÂÁö ±×¸®°í Á¶±×¸¸ ¾îÇÃÄÉÀÌ¼Ç »ùÇÃÀÎ ÅؽºÆ® ¿¡µðÅ͸¦ °³¹ßÇÏ´Â ±¸Ã¼ÀûÀÎ ´Ü°èµéÀÌ ¾î¶»°Ô µÇ´ÂÁö ¸®´ª½º ȯ°æÇÏ¿¡¼­, ¼Ò°³ ÇÏ°íÀÚ ÇÏ´Â °ÍÀÌ ÀÌ ¹®¼­ÀÇ ¸ñÀûÀÌ´Ù. ±×¸®°í GLADE°¡ ºÎÁ·ÇÑ ºÎºÐµé¿¡ ´ëÇÑ ³»¿ëÀ» ´ã°í ÀÖ´Ù. ÀÌ ¹®¼­¿¡ ´ëÇÑ Á¶¾ð/ºñÆÇ/¹®ÀÇ°¡ ÀÖÀ¸½Å ºÐÀº À̸ÞÀÏ·Î ¿¬¶ôÀ» Áֽñ⠹ٶõ´Ù. ´ÙÀ½ ¹öÀüÀº Á» ´õ ±í¼÷ÇÑ ³»¿ëÀ» ´Ù·ç¾îº¸µµ·Ï ÇÏ°Ú´Ù. ______________________________________________________________________ ¸ñÂ÷ 1. GLADE¿Í ±¸ÀÔ ¹× ¼³Ä¡ 1.1 GLADE¶õ ¹«¾ùÀΰ¡? 1.2 GLADE¸¦ ¾îµð¼­ ±¸ÇÒ °ÍÀΰ¡? 1.2.1 Source¿Í Binary 1.2.2 ¹®¼­ 1.3 GLADE ¼³Ä¡ 1.3.1 ¼³Ä¡¸¦ À§Çؼ­ ÇÊ¿äÇÑ °Íµé(requirements) 1.3.2 binary package ¼³Ä¡ 1.3.3 ¼Ò½º·Î ¼³Ä¡ 2. GLADE¸¦ ÀÌ¿ëÇÑ ÅؽºÆ® ¿¡µðÅÍ °³¹ß - »çÀü ´Ü°è 2.1 »çÀü Áö½Ä(preliminaries) 2.1.1 ¶óÀ̺귯¸® 2.1.2 GTK+ Æ©Å͸®¾ó »ìÆ캸±âAID CDATA GTK_tutorial(LABEL)LABEL 2.2 GLADE »ìÇDZâ 2.2.1 ¼¼ °³ÀÇ µðÆúÆ® À©µµ¿ì 2.2.2 ±âŸ º¸Á¶ âµé 2.3 ºÐ¼®/¼³°è - ÅؽºÆ® ¿¡µðÅÍ ±â´É 3. GLADE¸¦ ÀÌ¿ëÇÑ ÅؽºÆ® ¿¡µðÅÍ °³¹ß - ´Ü°èÀû Á¢±Ù 3.1 °³¹ß ù¹ø° ´Ü°è - ¹ÙÅÁ À©µµ¿ì 3.2 °³¹ß µÎ¹ø° ´Ü°è - about ´ëÈ­»óÀÚ 3.3 °³¹ß ¼¼¹ø° ´Ü°è - file open ´ëÈ­»óÀÚ 3.4 °³¹ß ³×¹ø° ´Ü°è - font selection ´ëÈ­»óÀÚ 3.5 °³¹ß ´Ù¼¸¹ø° ´Ü°è - text area Á¦¾î 3.6 °³¹ß ¿©¼¸¹ø° ´Ü°è - »óŹ٠Á¦¾î 4. ¸¶¹«¸® 4.1 (BFGLADE¿¡ ¾î¶² ±â´ÉÀÌ Ãß°¡µÇ¾î¾ß ÇÒ °ÍÀΰ¡? ______________________________________________________________________ 1. GLADE¿Í ±¸ÀÔ ¹× ¼³Ä¡ 1.1. GLADE¶õ ¹«¾ùÀΰ¡? GLADE ´Â ´Ù¸¥ À©µµ¿ìÁî(Windows NT/9x¸¦ ¾ÕÀ¸·Î ÀÌ·¸°Ô ºÎ¸£°Ú´Ù)Visual Studio¿Í ¸¹Àº ºÎºÐÀÌ À¯»çÇϸç Widget Template Palette(À©µµ¿ìÁî ¿ë¾î·Î ÇÑ´Ù¸é ControlÂë¿¡ ÇØ´çÇÏ°Ú´Ù) ÅÛÇø®Æ® ÆÈ·¹Æ®¿¡ ÀÖ´Â À§Á¬µéÀ» µå·¡±× ¾Ø µå·ÓÀ¸·Î GUI Æû°ú ±× À§ÀÇ GUI °´Ã¼µéÀ» »ý¼ºÇÏ°í À̵éÀÇ ÇÁ·ÎÆÛƼµéÀ» Á¶Á¤ÇÏ°í ½Ã±×³Î Çڵ鷯(À©µµ¿ìÁî·Î ÇÑ´Ù¸é ¸Þ½ÃÁö ¸Ê ÇÔ¼ö) µî·Ï/»èÁ¦/º¯°æÇÏ¿© C, C++ ¼Ò½º(C++ÀÇ °æ¿ì addonÀÎ glade--°¡ ÇÊ¿ä)¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ÅëÇÕ °³¹ß ȯ°æÀÌ´Ù. ¾ÕÀ¸·Î C ¼Ò½º¸¦ »ý¼ºÇÏ´Â °Í¿¡¸¸ ÃÐÁ¡À» ¸ÂÃç¼­ ¾ê±âÇÏ°Ú´Ù. 1.2. GLADE¸¦ ¾îµð¼­ ±¸ÇÒ °ÍÀΰ¡? 1.2.1. Source¿Í Binary GLADEÀº ÇöÀç 0.5.7¹öÀü±îÁö releaseµÇ¾úÀ¸¸ç °ø½Ä web site´Â http://glade.pn.orgÀÌ´Ù. ´ÙÀ½ ±×¸²``GLADE °ø½Ä Ȩ »çÀÌÆ®''Àº GLADE°ø½Ä Ȩ »çÀÌÆ® ¸ð½ÀÀÌ´Ù. GLADE °ø½Ä Ȩ »çÀÌÆ® ÀÌ°÷¿¡¼­ °¡Àå ÃÖ±Ù ¹öÀüÀÇ ¼Ò½º¸¦ ´Ù¿î·ÎµåÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ°÷¿¡´Â ¹Ì¸® ¸¸µé¾îÁø binary¸¦ ÆÑŰ¡ÇÑ RedHat RPM, Debian, Slackware, NetBsd packageµéµµ ¸¶·ÃµÇ¾î ÀÖ´Ù. ±ÞÇϽŠºÐÀº ÀÌ·± binaryÀÇ ÆÑŰ¡À» ¼±ÅÃÇÒ ¼öµµ ÀÖ°Ú´Ù. 1.2.2. ¹®¼­ ¾ÆÁ÷ °ø½Ä ¹èÆ÷µÇ´Â ¹®¼­´Â ¾ø´Ù. ±×·¯³ª ´ÙÀ½°ú °°Àº ³»¿ëµéÀ» ÂüÁ¶ÇÒ ¼ö ÀÖ°Ú´Ù: o GLADE ¼Ò½º ÀÚü o GLADE ¼Ò½ºÀÇ doc µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀϵé o GLADE ¼Ò½ºÀÇ examples µð·ºÅ丮¿¡ ÀÖ´Â ³»¿ë o Designing a GTK+ interface graphically with Glade and libglade (http://www-4.ibm.com/software/developer/library/gnome-glade/) o Glade turbo-start (http://glade.pn.org/tutorial.txt) 1.3. GLADE ¼³Ä¡ 1.3.1. ¼³Ä¡¸¦ À§Çؼ­ ÇÊ¿äÇÑ °Íµé(requirements) GLADE¸¦ ¼³Ä¡ÇÏ·Á¸é ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÇÊ¿äÇÏ´Ù. o binary¿¡µµ ÇÊ¿äÇÑ ¶óÀ̺귯¸®µé GTK+ 1.2.0 ÀÌ»ó -- gnome-libs 1.0.16 ÀÌ»ó -- Gnome Áö¿øÀÌ ÇÊ¿äÇÑ °æ¿ì¿¡ ÇÊ¿ä Gettext 0.10.35 -- ÀÌ°ÍÀº gettext¸¦ Áö¿øÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÏ°íÀÚ ÇÒ ¶§ ÇÊ¿ä. o ¼Ò½º·Î ¼³Ä¡Çϱâ À§Çؼ­ ÇÊ¿äÇÑ º¸Á¶ µµ±¸µé Automake 1.4 -- , , . Autoconf 2.13 -- , , 1.3.2. binary package ¼³Ä¡ RPM µî°ú °°Àº binaryÇüÅÂÀÇ ÆÑÅ°Áö´Â ±× ¼³Ä¡°¡ ¿ëÀÌÇÏ´Ù. ¿¹¸¦ µé¾î¼­ RPMÀº ´ÙÀ½°ú °°ÀÌ ¼³Ä¡ÇÑ´Ù: rpm -Uvh glade-0.5.7-2.i386.rpm 1.3.3. ¼Ò½º·Î ¼³Ä¡ ¼Ò½º·Î ¼³Ä¡Çϱâ À§Çؼ­´Â automake 1.4¿Í autoconf 2.13ÀÌ ÇÊ¿äÇÏ´Ù. À̵éÀº ´ëºÎºÐÀÇ linux¿¡ ¼³Ä¡µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ¾ø´Ù¸é ã¾Æ¼­ ¼³Ä¡ÇØÁÖÀÚ. ±×¸®°í ¼Ò½º·Î ¼³Ä¡ÇÏ´Â °ÍÀº ´ÙÀ½°ú °°ÀÌ, ¸®´ª½º ¼Ò½º ¼³Ä¡ÀÇ ÀüÇüÀûÀÎ ¹æ¹ýÀ» µû¸£¸ç, ±×·¸°Ô ¾î·Á¿î °ÍÀÌ ¾Æ´Ï´Ù: 1. ¸Ç¸ÕÀú ÇØ¾ß ÇÒ ÀÏÀº ´Ù¿î ·Îµå ¹ÞÀº ÆÄÀÏÀÇ ¾ÐÃàÀ» Ǫ´Â °ÍÀÌ´Ù. [simje@rurulala /usr/src/local/gtk]$ tar xvzf glade-0.5.5.tar.gz 2. ´ÙÀ½Àº »õ·Î »ý¼ºµÈ µð·ºÅ丮·Î À̵¿Çؼ­ configure¸¦ ½ÇÇà½ÃŲ´Ù. [simje@rurulala /usr/src/local/gtk]$ cd glade-0.5.5 [simje@rurulala /usr/src/local/gtk/glade-0.5.5]$ ./configure ¿©±â¼­ ƯÁ¤ µð·ºÅ丮¿¡ ¼³Ä¡µÉ °ÍÀ» °Ü³ÉÇÑ´Ù¸é ¾Æ½Ã´Â ¹Ù¿Í °°ÀÌ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾Ê´Â °æ¿ì µðÆúÆ®·Î /usr/local¸¦ prefix·Î ¼³Á¤ÇÏ°Ô µÈ´Ù. [simje@rurulala /usr/src/local/gtk/glade-0.5.5]$ ./configure --prefix=/usr 3. ´ÙÀ½Àº makeÀ» ½ÇÇà½ÃÄÑ ÄÄÆÄÀÏÇÏ´Â °ÍÀÌ´Ù. [simje@rurulala /usr/src/local/gtk/glade-0.5.5]$ make 4. ÄÄÆÄÀÏÀÌ ³¡³ª¸é ´ÙÀ½°ú °°ÀÌ ¼³Ä¡ÇÑ´Ù. [simje@rurulala /usr/src/local/gtk/glade-0.5.5]$ su -c "make install" 2. GLADE¸¦ ÀÌ¿ëÇÑ ÅؽºÆ® ¿¡µðÅÍ °³¹ß - »çÀü ´Ü°è ¼³Ä¡°¡ Á¦´ë·Î µÇ¾ú´Â°¡? ±×·¸´Ù¸é ½ÇÇàÀ» Çغ¸ÀÚ. ÀÌ»ó¾øÀÌ ½ÇÇàµÇ¾ú´Ù¸é ÀÌÁ¦ ´Ü¼øÇÑ ¿¹Á¦ °³¹ßÀ» ÅëÇؼ­ GLADE¸¦ ÀÍÇô º¸µµ·Ï ÇÏÀÚ: 2.1. »çÀü Áö½Ä(preliminaries) ±×³É µå·¡±× ¾Ø µå¶øÀ¸·Î °³¹ßÇÒ ¼öµµ ÀÖÁö¸¸ ¿ÜÇüÀ» ¸¸µå´Â °Íº¸´Ù Á» ´õ ±í¼÷È÷ µé¾î°¥·Á¸é ´ÙÀ½°ú °°Àº »çÀü Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù: 2.1.1. ¶óÀ̺귯¸® GLADE°¡ GUI¸¦ ¸¸µé±â À§Çؼ­ ¸¹ÀÌ »ç¿ëÇÏ´Â ¶óÀ̺귯µé·Î½á ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ´Ù: GTK+ ÀÌ°ÍÀº °¡Àå ±âÃÊÀûÀÎ ±â¹Ý Áö½ÄÀ¸·Î½á ´ÙÀ½°ú °°Àº ¹®¼­¸¦ ÅëÇؼ­ ½±°Ô ÀÚ°¡ ÇнÀ ÇÒ ¼ö ÀÖ´Ù . ±×·¯³ª Á» ´õ ÀÚ¼¼È÷ µé¿©´Ù º¸°Å³ª library APIµéÀ» º¸·Á¸é ´ÙÀ½ »çÀÌÆ®¸¦ ã¾Æ¾ß ÇÒ °ÍÀÌ´Ù. . ÀÌ°÷¿¡´Â ¸¹Àº ¹®¼­µé°ú ·¹ÆÛ·±½ºµéÀÌ ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â gtk_xxx, ¸Þ¸ð¸® °´Ã¼´Â GtkXxx, ¸ÅÅ©·Î´Â GTK_XXX °ú °°Àº ÇüŸ¦ °¡Áø´Ù. GDK XlibÀÇ ²À´ë±â¿¡ ÀÖ´Â wrapper library·Î °í¾ÈµÈ ¶óÀ̺귯¸®ÀÌ´Ù. ÀÌ°ÍÀº GTK+°¡ ÇȽº¸ÊÀ̳ª ÆùÆ® Ä÷¯µîÀ» ´Ù·ê ¶§ »ç¿ëµÇ´Â °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ¹®¼­µµ ¿¡ °¡¸é ãÀ» ¼ö ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â gdk_xxx, ¸Þ¸ð¸® °´Ã¼´Â GdkXxx, ¸ÅÅ©·Î´Â GDK_XXX °ú °°Àº ÇüŸ¦ °¡Áø´Ù. Glib ÀÌ°ÍÀº ¸Þ¸ð¸® ±¸Á¶(¸µÅ©µå ¸®½ºÆ®, ¸®½ºÆ®, Çؽ¬, ij½¬, Æ®¸®)³ª ŸÀ̸Ó, ÅؽºÆ® Ãâ·Â°ú °°Àº °ÍÀ» ´Ù·ê ¶§ »ç¿ëµÇ´Â °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ¹®¼­µµ ¿¡ °¡¸é ãÀ» ¼ö ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â g_xxx, ¸Þ¸ð¸® °´Ã¼´Â gxxx, ¸ÅÅ©·Î´Â GXXX °ú °°Àº ÇüŸ¦ °¡Áø´Ù. À̸¦ ±¸Á¶È­Çؼ­ ±×¸²À¸·Î ³ªÅ¸³½´Ù¸é ´ÙÀ½°ú °°´Ù(``gnome ¾ÆÅ°ÅØÃÄ''). gnome ¾ÆÅ°ÅØÃÄ 2.1.2. GTK+ Æ©Å͸®¾ó »ìÆ캸±â ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯 À§ÀÇ GTK+ Æ©Å͸®¾ó ÆäÀÌÁö( )¸¦ º¸¸é ¸¹Àº ±âÃÊÀûÀÎ ³»¿ëµé¿¡ ´ëÇÑ ¼³¸íÀÌ ÀÖ´Ù. À̵é Áß¿¡¼­ °¡Àå Áß¿äÇÏ´Ù ½ÍÀº °ÍÀº ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯(À©µµ¿ìÁîÀÇ ¸Þ½ÃÁö ¸Ê, ¸Þ½ÃÁö Çڵ鷯 µî°ú À¯»çÇÑ °³³ä)À̶ó ÇÒ ¼ö ÀÖ°Ú´Ù. ÀÌ´Â ´ë°³ ÇÊ¿äÇÑ Ã¢À» main ÇÔ¼ö(À©µµ¿ìÁîÀÇ WinMain()ÇÔ¼ö)¾È¿¡¼­ »ý¼ºÇÏ°í µð½ºÇ÷¹ÀÌÇÑ ÈÄ, ¸Þ½ÃÁö ÆßÇÁ¿¡ ÇØ´çÇÏ´Â gtk_main() ÇÔ¼ö·Î ÁøÀÔÇÏ´Â µ¥, ÀÌ ¾È¿¡¼­ »ç¿ëÀÚ ¾×¼Ç¿¡ ´ëÇÑ ½Ã±×³ÎµéÀÌ »ý¼ºµÇ¾î¼­ ¾îÇø®ÄÉÀ̼ǿ¡°Ô Àü´ÞµÈ´Ù. À̸¦ À§Çؼ­´Â »çÀü¿¡ ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯¸¦ ¸ÊÇνÃÄÑÁÖ´Â Áغñ Á¶ÀÛÀ» ÇØÁÖ¾î¾ß ÇÏ´Â µ¥ ±× ¿ªÇÒÀ» ÇÏ´Â °ÍÀÌ gtk_signal_connect()¶ó´Â ÇÔ¼ö¸¦ ÅëÇؼ­ÀÌ´Ù. GLADE°¡ ¸¸µå´Â ¼Ò½º ÄÚµå´Â »ç¿ëÀÚ°¡ GLADE¸¦ ÅëÇؼ­ µî·ÏÇÏ´Â ½Ã±×³Îµé°ú ½Ã±×³Î Çڵ鷯°£ÀÇ ¸ÊÇÎÀ» ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ÞÀΠâÀ» »ý¼ºÇÏ´Â ÇÔ¼öcreate_window1(ÀÌ À̸§Àº Àý´ëÀûÀÌÁö ¾ÊÀ» ¼ö ÀÖ´Ù) ¾È¿¡¼­ ÇÏ°í ÀÖÀ½À» ¾ÕÀ¸·Î È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¶ÇÇÑ ÀÌ ÇÔ¼ö ³»¿¡¼­´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ÞÀΠâÀ§¿¡ ºÙ¿© ³õÀº ¸¹Àº À§Á¬µéÀ» »ý¼ºÇÏ°í ¼Ó¼º ¼³Á¤ÇÏ´Â µîÀÇ ÀÏÀ» °âÇÑ´Ù. ÆÑÅ· ¹× ¼öÆò/¼öÁ÷/Å×ÀÌºí ¹Ú½º ´ÙÀ½À¸·Î ÆÑÅ·À̶ó´Â °³³äÀÎ µ¥ ÀÌ°ÍÀº À©µµ¿ìÁî¿¡´Â ¾ø´Â °³³äÀÌ´Ù(Ȥ½Ã MFC³»ºÎÀûÀ¸·Î ±¸ÇöµÇ¾î 󸮵ǴÂÁö´Â ¸ð¸£Áö¸¸ ¸»ÀÌ´Ù). ±×·¸°Ô ¾î·Á¿î °³³äÀº ¾Æ´Ï°í ¿©·¯°¡Áö À§Á¬À» »öÁ¾ÀÌ À߶ó ºÙÀ̱âó·³ ºÙ¿© ³ª°¥ ¶§ ¹Ø¿¡ ÀÖ´Â °Í°ú ±× À§¿¡ ÀÖ´Â °ÍÀÇ ¹ÙÅÁÀ¸·Î »ý°¢ÇÏ´Â °³³äÀ̸ç ÁÖ·Î ·¹À̾ƿô¿¡ ´ëÇÑ ±â´É Áö¿øÀ» ÇÑ´Ù. ÀÌ°ÍÀº À©µµ¿ìÁî º¸´Ù´Â ÀÚ¹Ù¿¡ ÀÖ´Â ÄÁÅ×ÀÌ³Ê ¹× ·¹À̾ƿô °³³ä°ú À¯»çÇÏ´Ù°í ÇÒ ¼ö ÀÖ°Ú´Ù. GTK+¸¦ °ðÀÌ °ð´ë·Î ÇÁ·Î±×·¡¹ÖÇÑ´Ù¸é Á¶±Ý ²¨²ô·¯¿ï ¼ö ÀÖ°ÚÁö¸¸, GLADE¿¡¼­´Â ÀÌ°ÍÀ» ½Ã°¢ÀûÀ¸·Î ó¸®ÇØ ÁØ´Ù. ¼öÆò ¹Ú½º(ÀÚ¹Ù ¿ë¾î·Î ÇÑ´Ù¸é ÄÁÅ×À̳Ê) ¹× ¼öÁ÷ ¹Ú½º ±×¸®°í Å×ÀÌºí ¹Ú½º¸¦ Á¦°øÇÏ¸ç ¿©±â¿¡´Ù ¿©·¯°¡Áö °´Ã¼µé, Áï À§Á¬µéÀ» ¼Õ½±°Ô ºÙ¿´´Ù ¶¼¾ú´Ù ÇÒ ¼ö ÀÖ´Ù. À§¿Í °°Àº °³³äÀ» °¡Áö°í ¸¸µé¾îÁø ¾îÇø®ÄÉÀ̼ÇÀº ´ÙÀ½ ±×¸²``GTK·Î ¸¸µç ¾îÇø®ÄÉÀÌ¼Ç ³»ºÎ °èÃþ ±¸Á¶''°ú °°Àº ³»ºÎ °èÃþ ±¸Á¶¸¦ °®´Â´Ù. GTK·Î ¸¸µç ¾îÇø®ÄÉÀÌ¼Ç ³»ºÎ °èÃþ ±¸Á¶ 2.2. GLADE »ìÇDZâ 2.2.1. ¼¼ °³ÀÇ µðÆúÆ® À©µµ¿ì GLADE¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°Àº ¼¼°³ÀÇ Ã¢ÀÌ µðÆúÆ®·Î ¶á´Ù: ÁÖ À©µµ¿ì(main glade window) GLADE ¸ÞÀÎ À©µµ¿ì ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ®¸¦ ±¸¼ºÇÏ´Â ¸ðµç âµé°ú ´ëÈ­»óÀÚµéÀ» ´ã°í ÀÖ´Ù. À̵é ÁßÀÇ Çϳª¸¦ ´õºí Ŭ¸¯Çϸé ÀÌ¿¡ ´ëÀÀÇϴ âÀ̳ª ´ëÈ­»óÀÚ ÅÛÇø®Æ®°¡ ¶á´Ù. ±×¸®°í ÀÌ¿¡ ´ëÀÀÇϴ âÀ̳ª ´ëÈ­»óÀÚÀÇ ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÁ·ÎÆÛƼ ¿¡µðÅÍ °´Ã¼°¡ ÀÌ°ÍÀ¸·Î º¯°æµÈ´Ù. À§Á¬ ÆÈ·¹Æ® À©µµ¿ì(widget palette window) GLADE À§Á¬ ÆÈ·¹Æ® À©µµ¿ì ÀÌ°ÍÀº °¡´ÉÇÑ ¸ðµç À§Á¬µéÀÇ µé¾î ÀÖ´Â ÆÈ·¹Æ®ÀÌ´Ù. »õ·Î¿î âÀ̳ª ´ëÈ­ »óÀÚ¸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÏ·Á¸é ÆÈ·¹Æ®¿¡ Àִ âÀ̳ª ´ëÈ­»óÀÚ¸¦ Ŭ¸¯Çϱ⸸ ÇϸéµÈ´Ù. ÀÌ·¸°Ô »ý¼ºµÈ âÀ̳ª ´ëÈ­»óÀÚ¿¡ À§Á¬À» ºÙÀÌ·Á¸é À§Á¬À» Ŭ¸¯Çؼ­ ¼±ÅÃÇÑ ´ÙÀ½ ´õÇÏ°íÀÚ ÇÏ´Â À§Ä¡¿¡ Ŭ¸¯ÇÏ¸é µÈ´Ù. ¼Ó¼º ÆíÁý±â À©µµ¿ì(property editor window) GLADE ¼Ó¼º ÆíÁý±â À©µµ¿ì ÀÌ°ÍÀº âÀ̳ª ´ëÈ­»óÀÚ, ±×¸®°í À̵é À§¿¡ ÀÖ´Â À§Á¬µéÀÇ Å©±â ¶Ç´Â ÅؽºÆ® µî°ú °°Àº ¼Ó¼ºµéÀ» º¯°æÇÒ ¶§ »ç¿ëÇÑ´Ù. ÁÖ À©µµ¿ì¿¡ Àִ âÀ̳ª ´ëÈ­»óÀÚ¸¦ Ŭ¸¯ÇÏ¿©, ¶Ç´Â âÀ̳ª ´ëÈ­»óÀÚ À§¿¡ ÀÖ´Â À§Á¬À» Ŭ¸¯Çؼ­, ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÒ ´ë»ó °´Ã¼¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. 2.2.2. ±âŸ º¸Á¶ âµé GLADE´Â ´ÙÀ½°ú °°Àº º¸Á¶ âµéÀ» °¡Áö°í ÀÖÀ¸¸ç ÁÖ·Î ¸Þ´º¸¦ ÅëÇؼ­ Á¢±ÙµÉ ¼ö ÀÖ´Ù: ¸Þ´º ÀÛ¼º À©µµ¿ì GLADE ¸Þ´º ÀÛ¼º À©µµ¿ì ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ® â¿¡ ¸Þ´º¸¦ Ãß°¡ÇÑ °æ¿ì ÀÌ ¸Þ´º¸¦ Ŭ¸¯ÇÑÈÄ ¼Ó¼º ÆíÁý±â À©µµ¿ì¿¡ ³ªÅ¸³ª´Â edit menu ¹öÆ°À» ´©¸£¸é ³ªÅ¸³­´Ù. ÀÌ°ÍÀ» ÅëÇؼ­ ¿©·¯ºÐÀº ÇÁ·ÎÁ§Æ®ÀÇ ¸Þ´º¸¦ ÆíÁýÇÒ ¼ö ÀÖ´Ù. ÀÌ°÷¿¡¼­ »ý¼ºµÈ ¸Þ´º´Â ¼Ò½º¿¡ ÀÚµ¿À¸·Î µé¾î°¡°Ô µÈ´Ù. add¸¦ ´©¸¥ ÈÄ¿¡ Stock Item ÄÞº¸¹Ú½º¸¦ ´­·¯¼­ ¹Ì¸® Á¤ÀǵÈ, ±×¸®°í ³Î¸® ¾²ÀÌ´Â ¸Þ´º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀÌ ¶§ Handler°¡ ÀÌ¿¡ ¸ÂÃç Á¤ÇüÈ­µÈ ²Ã·Î ³ªÅ¸³ª°Ô µÇ¾î ÀÖ´Â µ¥, ÇѱÛÈ­µÈ ¹öÀüÀÇ °æ¿ì Çѱ۷ΠµÈ ÇÔ¼ö°¡ Handler°¡ µÇ¾î¼­ ¼Ò½º¿¡ ±úÁö°Å³ª ÇÑ±Û ºÎºÐÀÌ ¾ð´õ¶óÀÎÀ¸·Î ä¿öÁø ÇÔ¼ö°¡ ³ªÅ¸³ª°Ô µÈ´Ù. °í·Î Handler ºÎºÐÀº µÇµµ·ÏÀÌ¸é ¿µ¹®À¸·Î ¹Ù²ã ÁÖ´Â °ÍÀÌ ÁÁ°Ú´Ù. À§Á¬ Æ®¸®(widget tree) GLADE À§Á¬ Æ®¸® ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ®¿¡ »ç¿ëµÈ ¸ðµç À§Á¬µéÀÇ Æ®¸® ±¸Á¶¸¦ º¸¿©ÁÖ´Â À©µµ¿ìÀÌ´Ù. ÀÌ°ÍÀº ÁÖ À©µµ¿ìÀÇ View/Show WidgetTreeÀ» ¼±ÅÃÇؼ­ º¼ ¼ö ÀÖ´Ù. 2.3. ºÐ¼®/¼³°è - ÅؽºÆ® ¿¡µðÅÍ ±â´É ¿ì¸®°¡ ¸¸µé°íÀÚ ÇÏ´Â ÅؽºÆ® ¿¡µðÅÍ´Â ´Ü¼øÇÑ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ¸·Î½á ¿ì¼± À©µµ¿ìÁîÀÇ notepad¸¦ ´à¾Ò´Ù°í »ý°¢ÇÏ½Ã¸é µÈ´Ù. ±×·¸´Ù¸é ÀÌ ¿¡µðÅÍ°¡ Áö¿øÇØ¾ß ÇÏ´Â ±×·¡¼­ ±¸ÇöÇØ¾ß ÇÏ´Â ±â´Éµé ¸®½ºÆ®¸¦ »ìÆ캸ÀÚ: o ÆíÁýâ¿¡ ¹®ÀÚ ÀÔ·Â, ¼±ÅÃ, º¹»ç, »èÁ¦, ºÙÀ̱⠱â´É o ÆíÁýµÈ ³»¿ëÀ» ÀúÀåÇÏ´Â ±â´É o ÆÄÀÏÀ» Àоî¿Í ÆíÁýâ¿¡ µð½ºÇ÷¹ÀÌ ÇÏ´Â ±â´É o Á¾·á ±â´É o about ´ëÈ­ »óÀÚ ±â´É 3. GLADE¸¦ ÀÌ¿ëÇÑ ÅؽºÆ® ¿¡µðÅÍ °³¹ß - ´Ü°èÀû Á¢±Ù GLADE¸¦ ½ÇÇà½ÃÅ°¸é À§¿¡¼­ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ ¼¼°³ÀÇ Ã¢ÀÌ ¶á´Ù. ¿©±â¿¡¼­´Â ÀÌ·± »óȲ¿¡¼­ ´ÙÀ½°ú °°Àº ´Ü°èº° Á¢±ÙÀ¸·Î À§¿¡¼­ Á¤ÀÇµÈ ±â´ÉÀ» °¡Áø ÅؽºÆ® ¿¡µðÅ͸¦ °³¹ßÇÏ´Â ¸ð½ÀÀ» »ìÇǵµ·Ï ÇÑ´Ù: 3.1. °³¹ß ù¹ø° ´Ü°è - ¹ÙÅÁ À©µµ¿ì ¹ÙÅÁ À©µµ¿ì - »ý¼º ¿ì¼± ÅؽºÆ® ¿¡µðÅÍÀÇ ¹ÙÅÁÀÌ µÇ´Â âÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ±×·²·Á¸é À§Á¬ ÆÈ·¹Æ® À©µµ¿ì¿¡¼­ ´ÙÀ½ ±×¸²ÀÇ ¿ÞÂÊ »ó´ÜÀÇ À§Á¬À» Ŭ¸¯Çؼ­ ¸¸µé ¼ö ÀÖ´Ù. À©µµ¿ì À§Á¬ ±×·¯¸é ´ÙÀ½ ±×¸²°ú °°Àº ¹ÙÅÁ âÀ» ¾ò´Â´Ù. ÀÌ ±×¸²À» ÀÚ¼¼È÷ º¸¸é »ç¼± °ÝÀÚµéÀÌ ÃÎÃÎÈ÷ ȸ»öÀ¸·Î ±×·ÁÁ® ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ·± Ç¥½Ã´Â ¾ÕÀ¸·Îµµ ³ª¿À°ÚÁö¸¸ ¹«¾ð°¡¸¦ ºÙÀÏ ¼ö ÀÖ´Â °÷À̶ó´Â ¾ê±âÀÌ´Ù. ¸¶Ä¡ Á¢Âø½Ä ¾Ù¹üÀÇ ºñ´ÒÀ» µé¾î ¿Ã¸®¸é ³ªÅ¸³ª´Â Á¢ÂøÁ¦ »ç¼±°ú °°Àº °ÍÀ̶ó°í »ý°¢ÇÒ ¼ö ÀÖ°Ú´Ù. ¹ÙÅÁ À©µµ¿ì ÀÌÁ¦´Â ¿©±â¿¡´Ù ÇÊ¿äÇÑ À§Á¬µéÀ» ºÙ¿©¾ß µÇ°Ú´Ù. ¸ÕÀú ÇÊ¿äÇÑ °ÍµéÀ» »ý°¢Çغ¸¸é ¸Þ´º, Åø¹Ù, ÅؽºÆ® ¹Ú½º, ±×¸®°í »óÅ ¹Ù°¡ ÀÖ°Ú´Ù. ÀÌ°ÍÀ» ±×³É Çϳª¾¿ Çϳª¾¿ ºÙÀÏ ¼ö ÀÖÀ»±î. ¹Ù·Î À§ÀÇ ±×¸²À» ÀÚ¼¼È÷ º¸¸é ºÙÀÏ ¼ö ÀÖ´Â Á¢ÂøÁ¦ ºÎºÐÀº Ä¿´Ù¶þÁö¸¸ ±¸È¹ÀÌ ³ª´©¾îÁ® ÀÖÁö ¾Ê´Ù. Áï ÇϳªÀÇ °´Ã¼¸¸À» ºÙÀÏ ¼ö ÀÖ´Ù´Â ¾ê±â°¡ µÈ´Ù. ±×·¯¹Ç·Î ¾î¶»°Ô ÇØ¾ß ÇÒ ±î? ¹ÙÅÁ À©µµ¿ì - ¸Þ´º¹Ù À§Á¬ ºÙÀ̱⠴äÀº À§¿¡¼­ ¾ð±ÞÇÑ ¹Ù ÀÖ´Â, ´ÙÀ½ ±×¸²°ú °°Àº ¼öÁ÷ ¹Ú½º¶ó´Â À§Á¬À» »ç¿ëÇÏ¸é µÈ´Ù. ÀÌ°ÍÀ» ºÙÀÌ¸é ±× ±× À§¿¡ ¿©·¯°³ÀÇ Á¢Âø °¡´ÉÇÑ ±¸È¹ÀÌ »ý±â°Ô µÇ¾î ¿©·¯°¡Áö À§Á¬µéÀ» ºÙÀÏ ¼ö ÀÖ°Ô µÈ´Ù. ¼öÁ÷ ¹Ú½º À§Á¬ ÀÌ°ÍÀ» Ŭ¸¯ÇÏ¸é ¸¶¿ì½º°¡ ½ÊÀÚ°¡ ¸ð¾çÀ¸·Î ¹Ù²ï´Ù. ÀÌ ¶§ ÀÌ ¸¶¿ì½º Ä¿¼­¸¦ ¹ÙÅÁ À©µµ¿ì¿¡ ´ë°í Ŭ¸¯ÇÏ¸é ´ÙÀ½ ±×¸²°ú °°ÀÌ ¸î °³ÀÇ ¼öÁ÷ ¹Ú½º¸¦ ¸¸µé °ÍÀΰ¡¸¦ ¹¯´Â ´ëÈ­»óÀÚ°¡ ³ªÅ¸³­´Ù. ¼öÁ÷ ¹Ú½º À§Á¬ °³¼ö¸¦ ¹¯´Â ´ëÈ­»óÀÚ ¿©±â¼­ ¿ì¸®´Â 4¸¦ ÀÔ·ÂÇÏÀÚ. ¿Ö³Ä¸é ¹ÙÅÁ â¿¡ ºÙÀÌ°íÀÚ ÇÏ´Â °´Ã¼°¡ 4°³À̱⠶§¹®ÀÌ´Ù. OK¸¦ ´©¸£¸é ´ÙÀ½°ú °°ÀÌ ¹ÙÅÁ âÀÌ Æòµî ºÐÇÒµÇ¾î ³ªÅ¸³¯ °ÍÀÌ´Ù. ¼öÁ÷ ¹Ú½º¸¦ ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ¸ð½À ÀÚ ÀÌÁ¦´Â ÀÌ ³×°³ÀÇ ±¸È¹ °¢°¢¿¡´Ù ¸Þ´º¹Ù, Åø¹Ù, ÅؽºÆ® ¹Ú½º, ±×¸®°í »óÅ ¹Ù¸¦ ºÙ¿© º¸µµ·Ï ÇÏÀÚ. ¸ÕÀú ¸Þ´º¹Ù¸¦ ºÙÀÌ·Á¸é ´ÙÀ½ ±×¸²°ú °°ÀÌ »ý±ä ¸Þ´º¹Ù widgetÀ» À§Á¬ ÆÈ·¹Æ® À©µµ¿ì¿¡¼­ Ŭ¸¯ÇÏ¿© ¼±ÅÃÇÑ´Ù. ¸Þ´º À§Á¬ ±×¸®°í ¹ÙÅÁ â ³× ±¸È¹ Áß °¡Àå À§¿¡ ÀÖ´Â ±¸È¹À» Ŭ¸¯ÇÑ´Ù. ±×·¯¸é ¹ÙÅÁ È­¸éÀº ´ÙÀ½°ú °°ÀÌ º¯ÇÑ´Ù. ¸Þ´º À§Á¬À» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ÀÌ°ÍÀ» ÀÚ¼¼È÷ º¸¸é Á¢ÂøÁ¦°¡ ¹ß¶óÁ® ÀÖ´Â ºÎºÐÀº 3°³·Î ÁÙ¾îµç °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. Á¶±Ý Àü¿¡ ÃÖ»ó´Ü¿¡ ºÙÀÎ ¸Þ´º ºÎºÐÀº Á¢ÂøÁ¦°¡ ¾Æ´Ñ °ÍÀ» ¶ÇÇÑ ¾Ë ¼ö ÀÖ´Ù. ±×·¯³ª À̺κÐÀº º°·Î ¸Þ´º °°¾Æ º¸ÀÌÁö ¾Ê´Ù. ¿Ö³Ä¸é ½ÇÁ¦·Î ¸Þ´º¸¦ ÀÔ·ÂÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. ±×·¸´Ù¸é ¸Þ´º¸¦ ÀÌÁ¦ ³Ö¾î º¸ÀÚ. ¹ÙÅÁ À©µµ¿ìÀÇ Á¶±Ý Àü¿¡ ºÙÀÎ ¸Þ´º¸¦ Ŭ¸¯Çϸé ÇÁ·ÎÆÛƼ À©µµ¿ì°¡ ´ÙÀ½ ±×¸²Ã³·³ ³ªÅ¸³­´Ù. ÀÌ°÷À» ÀÚ¼¼È÷ º¸¸é ´Ù¸¥ À§Á¬À» Ŭ¸¯Çؼ­ ¼±ÅÃÇÒ ¶§¿Í´Â ´Ù¸£°Ô ¸Þ´º ÆíÁý(Edit Menus...)À̶ó´Â ¹öÆ°ÀÌ Çϳª ´õ ÀÖ´Ù. ÀÌ°ÍÀ» Ŭ¸¯ÇÏÀÚ. ¸Þ´º ÆíÁý ¹öÆ° ±×·¯¸é À§¿¡¼­ º» ±×¸² 5¿Í °°Àº È­¸éÀÌ ¶á´Ù. ¿©±â¿¡ ´ÙÀ½ ±×¸²Ã³·³ ÆíÁýÇؼ­ ³Öµµ·Ï ÇÏÀÚ. ´Ü ¸ðµÎ ±âº»ÀûÀ¸·Î Á¦°øµÇ´Â Stock ItemÀ» »ç¿ëÇؼ­ ¸¸µç °ÍÀÌ´Ù. ¸ÕÀú Add ¹öÆ°À» ´­·¯¼­ ÇϳªÀÇ ¾ÆÀÌÅÛÀ» ¸¸µç µÚ¿¡ Stock Item ÄÞº¸ ¹Ú½º¸¦ Ŭ¸¯Çؼ­ ¹Ì¸® ¸¶·ÃµÈ ¾ÆÀÌÅÛÀ» ¼±ÅÃÇϸé Á¶±Ý Àü¿¡ ¸¸µé¾îÁø °ÍÀÌ ¿øÇÏ´Â °ÍÀ¸·Î ¹Ù²ï´Ù. ±×¸®°í NameÀÌ Çѱ۷Π³ª¿Ã °æ¿ì, ÀÌ°ÍÀº ³ªÁß¿¡ ¾Ë°Ô µÇ°ÚÁö¸¸ ¼Ò½º »ý¼º ÈÄ ¼Ò½º ³»ºÎ¿¡¼­ ¸ðµÎ ±úÁö°Å³ª ¹ØÁٷΠǥ±âµÇ¾î ¹¹°¡ ¹ºÁö ¸ð¸£°Ô µÈ´Ù. ÀÌ ¶§´Â NameÀ» ÀûÀýÇÑ °ÍÀ¸·Î ¹Ù²ÙÀÚ. Áï »õ·Î¿îÀ̶ó¸é NewÀ¸·Î ¹Ù²ÙÀÚ. ±×·¯¸é ÀÚµ¿À¸·Î ±× ¾Æ·¡¿¡ ÀÖ´Â Handler°¡ ¹Ù²ï´Ù. Á¤¸» ÁÁ´Ù. ±×¸®°í ¿ÞÂÊ ¸®½ºÆ® â¿¡ ÀÖ´Â Label¿¡ ÇØ´çÇÏ´Â °ÍµéÀº ±× ¾Æ·¡¿¡ ÀÖ´Â ¹æÇ⼺ ÀÖ´Â È­»ìÇ¥ µîÀ¸·Î Á¦¾îµÇ´Â °ÍÀ¸·Î½á ¸Þ´ºÀÇ ±íÀÌ ¹× °èÃþ ±¸Á¶¸¦ ²Ù¹Ð ¶§ »ç¿ëµÈ´Ù. ¸Þ´º ÆíÁý ¿¹Á¦ ¹ÙÅÁ À©µµ¿ì - Åø¹Ù À§Á¬ ºÙÀ̱â ÀÚ ÀÌÁ¦´Â ¹ÙÅÁ À©µµ¿ì¿¡ ´ÙÀ½ ±×¸²°ú °°ÀÌ À§Á¬ ÆÈ·¹Æ®¿¡ ÀÖ´Â Åø¹Ù À§Á¬À» ºÙ¿© º¸µµ·Ï ÇÏÀÚ. Åø¹Ù À§Á¬ ÀÌ°ÍÀ» Ŭ¸¯ÇÏ¸é ¸¶¿ì½º Ä¿¼­°¡ ½ÊÀÚ°¡ ¸ð¾çÀ¸·Î º¯ÇÑ´Ù. ÀÌ°ÍÀ» ¿ì¸®°¡ ¿øÇÏ´Â À§Ä¡ÀÎ À§¿¡¼­ µÎ¹ø° Ä­¿¡ ³õ°í Ŭ¸¯ÇÑ´Ù. ±×·¯¸é ´ÙÀ½°ú °°ÀÌ ¸î°³ÀÇ Åø¹Ù¸¦ ¿øÇϴ°¡ÇÏ´Â ´ëÈ­ »óÀÚ°¡ ¶á´Ù. Åø¹ÙÀÇ ¹öÆ° ¼ö¸¦ ¹¯´Â ´ëÈ­»óÀÚ ¿©±â¿¡ ¿øÇÏ´Â °³¼ö(ÀÌ °æ¿ì´Â 4°³)¸¦ ÀÔ·ÂÇÏ°í OK¸¦ Ŭ¸¯ÇÏ¸é ´ÙÀ½ ±×¸² ó·³ µÎ¹ø° ÇàÀÌ 4°³ÀÇ »õ·Î¿î Á¢ÂøÆÇÀ» °¡Áø °ÍÀ¸·Î º¯°æµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. Åø¹Ù¸¦ ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ÀÚ ÀÌÁ¦´Â ÀÌ »õ·Î »ý±ä Á¶±×¸¸ 4°³ÀÇ Á¢ÂøÆÇ¿¡´Ù Åø¹Ù¹öÆ°µéÀ» Áý¾î ³Ö¾î¾ß ÇÑ´Ù. ±×·²·Á¸é ´ÙÀ½ ±×¸²°ú °°ÀÌ À§Á¬ ÆÈ·¹Æ®¿¡¼­ ¹öÆ° À§Á¬À» ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¹öÆ° À§Á¬ ÀÌ°ÍÀ» ¼±ÅÃÇÑ ÈÄ ¸¶¿ì½º¸¦ ¹ÙÅÁ À©µµ¿ì µÎ¹ø° Çà ù¹ø° Á¢ÂøÆÇÀ¸·Î °¡Á® °¡¸é Ä¿¼­°¡ ½ÊÀÚ°¡ ¸ð¾çÀ¸·Î º¯ÇÑ´Ù. ÀÌ°ÍÀ» Ŭ¸¯ÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¹ÙÅÁ È­¸éÀÌ º¯ÇÑ´Ù. ÇÑ°³ÀÇ ¹öÆ°À» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ÀÌ ¶§ º¯°æµÈ ÇÁ·ÎÆÛƼ À©µµ¿ì¸¦ ÀÚ¼¼È÷ º¸¸é Icon ¿·¿¡ ¾Æ·¡¸¦ °¡¸£Å°´Â ÄÞº¸¹Ú½º ¹öÆ°ÀÌ ÀÖ´Ù. ÀÌ°ÍÀ» ´©¸£¸é ´ÙÀ½°ú °°Àº ¹Ì¸® Á¤ÀÇµÈ Stock IconµéÀÌ ³ª¿Â´Ù. ¹Ì¸® ÁغñµÈ ¹öÆ°µé ¿©±â¿¡ º¸ÀÌ´Â °Í ¸»°íµµ ¾Æ·¡·Î ½ºÅ©·Ñ Çϸé Á¤¸» ¸¹°í ¿¹»Û ¾ÆÀÌÄܵéÀÌ ÁغñµÇ¾î ÀÖÀ½¿¡ ³î¶ö °ÍÀÌ´Ù. ÀÌ Áß¿¡ Çϳª¸¦ ¼±ÅÃÇÏÀÚ. ±×¸®°í ÇÁ·ÎÆÛƼ¿¡¼­ Label ºÎºÐÀ» ¾ÆÀÌÄÜ¿¡ ¸ÂÃß¾î ¹Ù²Ùµµ·Ï ÇÏÀÚ.. ±×¸®°í¼­ ³ª¸ÓÁö ¼¼°³ÀÇ Á¢ÂøÆǵ鿡 ¿øÇÏ´Â °ÍÀ» ³ÖÀ¸¸é µÇ°Ú´Ù. ±×·¯¸é ´ÙÀ½ ±×¸²°ú °°Àº °ÍÀ» ¾ò´Â´Ù. Åø¹Ù¿¡ ¸ðµç ¹öÆ°µéÀ» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ¹ÙÅÁ À©µµ¿ì - ÅؽºÆ® ¹Ú½º À§Á¬ ºÙÀ̱⠴ÙÀ½Àº ¼¼¹ø° Çà¿¡´Ù ´ÙÀ½°ú °°ÀÌ À§Á¬ ÆÈ·¹Æ® À©µµ¿ì¿¡ ÀÖ´Â ÅؽºÆ® ¹Ú½º À§Á¬À» ¼±ÅÃÇÏ¿© ºÙ¿© º¸µµ·Ï ÇÏÀÚ. ÅؽºÆ® ¹Ú½º À§Á¬ ÀÌ°ÍÀ» Ŭ¸¯ÇÑ ÈÄ ¸¶¿ì½º¸¦ ¿¹ÀÇ ¹ÙÅÁ À©µµ¿ì ¼¼¹ø° ÇàÀ¸·Î ¿Å±â¸é Ä¿¼­°¡ ½ÊÀÚ°¡·Î ¹Ù²ï´Ù. Ŭ¸¯ÇÏÀÚ ±×·¯¸é ´ÙÀ½ ±×¸²Ã³·³ ¹ÙÅÁ À©µµ¿ì°¡ º¯ÇÑ´Ù. ÅؽºÆ® ¹Ú½º À§Á¬À» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ±×·±µ¥ ÇÁ·ÎÆÛƼ À©µµ¿ì¸¦ º¸¸é EditableÀÌ µðÆúÆ®·Î NoÀ¸·Î µÇ¾î ÀÖ´Ù. ÀÌ°ÍÀº Yes·Î º¯°æÇؾ߸¸ ³ªÁß¿¡ ÅؽºÆ®¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù. ±×·±µ¥ ÀüüÀûÀÎ Å©±â°¡ ¸¶À½¿¡ µéÁö ¾ÊÀ» ¼ö ÀÖ´Ù. ±×·±µ¥ ³»ºÎÀÇ À§Á¬ Å©±â¸¦ º¯°æÇÏ´Â °Íº¸´Ù ¹Ù±ù ¹ÙÅÁ À©µµ¿ìÀÇ Å©±â¸¦ Á¶Á¤ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ ±×¸² ó·³ ¹ÙÅÁ À©µµ¿ìÀÇ Å©±â ¼Ó¼ºÀ» º¯°æÇϵµ·Ï ÇÏÀÚ. ±×·¯¸é ³ªÁß¿¡ ½ÇÇà °á°ú°¡ ÀÌ¿¡ ¸ÂÃçÁú °ÍÀÌ¸ç ³ª¸ÓÁö ÀÌ ¹ÙÅÁ À©µµ¿ì°¡ Ç°°í ÀÖ´Â °´Ã¼µéÀÇ Å©±â´Â ÀûÀýÇÏ°Ô ¹èºÐµÉ °ÍÀÌ´Ù. ¹ÙÅÁ À©µµ¿ìÀÇ Å©±â Á¶Á¤ ¹ÙÅÁ À©µµ¿ì - »óŹ٠À§Á¬ ºÙÀ̱â ÀÚ ÀÌÁ¦´Â ¸¶Áö¸·À¸·Î ¹ÙÅÁ À©µµ¿ì¿¡ ´ÙÀ½ ±×¸²°ú °°Àº À§Á¬ ÆÈ·¹Æ® À©µµ¿ì¿¡ ÀÖ´Â »óŹ٠À§Á¬À» ¼±ÅÃÇؼ­ »óŹ٠À§Á¬À» ºÙ¿© º¸µµ·Ï ÇÏÀÚ. »óŹ٠À§Á¬ ÀÌ°ÍÀ» ¼±ÅÃÇÑ ÈÄ ¸¶Áö¸· ³²Àº Á¢ÂøÆÇ À§¿¡ ¸¶¿ì½º¸¦ °¡Á®°¡¸é ¸¶Âù°¡Áö·Î ½ÊÀÚ°¡ ¸ð¾çÀ¸·Î Ä¿¼­°¡ º¯°æµÈ´Ù. Ŭ¸¯ÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¹ÙÅÁ À©µµ¿ì°¡ º¯ÇÑ´Ù. ¸ðµç À§Á¬µéÀ» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ¹ÙÅÁ À©µµ¿ì - ¸¸µç °ÍÀ» ÀúÀåÇÏ°í ¼Ò½º »ý¼º ±×¸®°í ½ÇÇà ÀÌ·Î½á ¿ì¸®´Â ¹ÙÅÁ À©µµ¿ì¸¦ ¸¸µé°í ÀÌ À§¿¡ ¸î°¡Áö GUI °´Ã¼µéÀ» ºÙÀÌ°í ¾à°£ÀÇ Á¶Á¤À» Çغ¸¾Ò´Ù. ¾î¶²°¡? ±×·²µíÇÏÁö ¾Ê´Â°¡. ÀÌÁ¦´Â ´ÙÀ½ ±×¸² ó·³ GLADEÀÇ File¸Þ´º¿¡ ÀÖ´Â Save¸¦ ¼±ÅÃÇغ¸ÀÚ. GLADEÀÇ ÆÄÀÏ ¸Þ´º ±×·¯¸é ´ÙÀ½ ±×¸²°ú °°Àº Project Options¶ó´Â ´ëÈ­»óÀÚ°¡ ¶á´Ù. ¿©±â¿¡ ÀûÀýÇÑ °ªÀ» ÀÔ·ÂÇÏ°í OK¸¦ ´©¸£¸é ÇÁ·ÎÁ§Æ®°¡ ÀúÀåµÈ´Ù. ´Ü, »ý¼ºµÉ ¾ð¾î·Î´Â C¸¦ ¼±ÅÃÇϵµ·Ï ÇÏÀÚ. GLADEÀÇ ÇÁ·ÎÁ§Æ® ¿É¼Ç ´ëÈ­»óÀÚ ±×¸®°í À§¿¡¼­ º» File ¸Þ´ºÀÇ Build Source CodeÀ» ¼±ÅÃÇÏ¸é ´«¿¡ º¸ÀÌÁö ¾ÊÁö¸¸ ¼Ò½º°¡ »ý¼ºµÈ´Ù. À§ÀÇ ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÏ´Â °÷¿¡¼­ ÁöÁ¤ÇÑ µð·ºÅ丮¿¡ °¡º¸¸é src¶ó´Â µð·ºÅ丮°¡ ÀÖ´Â µ¥ ¿©±â¿¡ ¸ðµç ¼Ò½º°¡ »ý¼ºµÈ´Ù. ¾Æ½±°Ôµµ ¹Ù·Î ¹º°¡¸¦ Ŭ¸®Çؼ­ »ý¼ºµÈ ¼Ò½º¸¦ °¡Áö°í ½ÇÇà ÆÄÀÏÀ» ¸¸µå´Â ¹æ¹ýÀº ¾ÆÁ÷ ¾ø´Ù. ±×·¡¼­ ¾î¿¼ö ¾øÀÌ ½©À» ÅëÇؼ­ ½ÇÇà ÆÄÀÏÀ» ¸¸µé¼ö¹Û¿¡ ¾ø´Ù. ÇÁ·ÎÁ§Æ®ÀÇ ·çÆ® µð·ºÅ丮¸¦ ls·Î Ãâ·ÂÇغ¸°í ¿©±â¿¡ ¸¶·ÃµÈ autogen.sh¸¦ ½ÇÇàÇϸé ȯ°æ ¼³Á¤ÀÌ ÀÌ·ç¾îÁø´Ù. ls¸í·É°ú autogen.sh½ÇÇà È­¸é ±×¸®°í ³ª¼­ makeÀ» ½ÇÇàÇÏ¸é ¿øÇÏ´Â ½ÇÇà ÆÄÀÏÀ» ¾òÀ» ¼ö ÀÖ´Ù. makeÀÇ °á°ú´Â src¿¡ ÇÁ·ÎÁ§Æ® À̸§À» °¡Áø ½ÇÇà ÆÄÀÏÀÌ »ý±â´Â °ÍÀÌ´Ù. ÀÌ°ÍÀ» ½ÇÇàÇÑ °á°ú´Â ´ÙÀ½°ú °°´Ù. ù¹ø° ½ÇÇà °á°ú ¹ÙÅÁ À©µµ¿ì - ½ÇÇà ÈÄ Á×À̱â ÀÌÁ¦ Á¾·áÇغ¸ÀÚ. º¸Åë ÇϵíÀÌ ¿À¸¥ÂÊ À§¿¡ ÀÖ´Â ´Ý±â ¹öÆ°À» ´­·¯µµ ¿ì¸®°¡ ¸¸µç ¾îÇø®ÄÉÀ̼ÇÀº Á×Áö ¾Ê´Â´Ù. ¾Æ»Ô»ç. ¿ì¸®´Â ºÒ»ç½ÅÀ» ¸¸µé¾î³½ °ÍÀÌ´Ù. ÀÌÁ¦ ÀÌ ºÒ»ç½ÅÀ» Á׿©º¸µµ·Ï ÇÏÀÚ. ±×·²·¯¸é ÀÌÀü¿¡ ¾ê±âÇÑ ``GTK Æ©Å͸®¾ó'' ¼½¼Ç¿¡ ÀÖ´Â ½Ã±×³ÎÀ» ¾Ë¾Æ¾ß ÇÏ°í °¡Àå ±âº»ÀûÀÎ delete_event¶ó´Â ½Ã±×³ÎÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ÀÌ°ÍÀº ´Ù¸¥ °ÍÀÌ ¾Æ´Ï°í ½ÇÇà ÆÄÀÏÀÇ close ¸Þ´º (-- ÀÌ°ÍÀº â°ü¸®ÀÚ°¡ ºÙÀÎ ¸Þ´º¸¦ ¸»ÇÑ´Ù. ÀÌ°ÍÀº ¿ì¸®°¡ ¸¸µç ¾îÇø®ÄÉÀ̼ÇÀÇ ¸Þ´º¿Í ´Ù¸£´Ù--) ¸¦ ¼±ÅÃÇϰųª title bar¿¡¼­ ´Ý±â¸¦ ¼±ÅÃÇϸé X À©µµ¿ì °ü¸®ÀÚ°¡ ½ÇÇà ÆÄÀÏ¿¡°Ô ÀüÇÏ´Â À̺¥Æ®ÀÌ´Ù. ÀÌ°ÍÀ» ¹Þ¾Æ¼­ ó¸®ÇÏ·Á¸é ´ÙÀ½ ±×¸²°ú °°ÀÌ ¹ÙÅÁ À©µµ¿ìÀÇ ÇÁ·ÎÆÛƼ À©µµ¿ìÀÇ ¿©·¯ Åǵé Áß¿¡¼­ ½Ã±×³Î ÅÇ¿¡¼­ ½Ã±×³Î Çڵ鷯 À̸§°ú ÇÔ²² µî·ÏÇØÁÖ¾î¾ß ÇÑ´Ù. ¹ÙÅÁ À©µµ¿ì window1ÀÇ delete_event ±×·¯¸é ´ÙÀ½ ±×¸²°ú °°ÀÌ µî·ÏµÉ °ÍÀÌ´Ù. µî·Ï ÈÄÀÇ ¸ð½À ¿©±â¼­ ¿ì¸®´Â ÀÚµ¿À¸·Î ½Ã±×³Î Çڵ鷯 À̸§ÀÌ on_window1_delete_event°¡ µÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ°ÍÀ» ±×´ë·Î ¾²ÀÚ. À̰ͱîÁö ±×¸®°í »ý¼ºµÉ ³»ºÎ ¼Ò½º¿¡ ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯¸¦ ¿¬°á½ÃÄÑÁÖ´Â °Í±îÁö´Â GLADE°¡ ÇØÁÖ´Â °ÍÀÌ´Ù. ÀÚ ÀÌÁ¦ À§ÀÇ ½ºÅÜó·³ ¼Ò½º¸¦ »ý¼ºÇغ¸ÀÚ. ±×¸®°í ÀÌ ½Ã±×³Î Çڵ鷯 ¾È¿¡¼­ ¿ì¸®´Â ÇØ¾ß ÇÒ ÀÏÀ» Çغ¸µµ·Ï ÇÏÀÚ. ´Ù¸¥ °ÍÀº ¾Æ´Ï°í ´ÙÀ½°ú °°ÀÌ src/callbacks.c¾È¿¡ ÀÖ´Â À§ÀÇ on_window1_delete_event ÇÔ¼ö ³»ºÎ¿¡ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¸é µÈ´Ù. gboolean on_window1_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_exit( 0 ); return FALSE; } ±×¸®°í¼­ makeÇÏ°í(´Ù½Ã autoget.sh¸¦ ½ÇÇàÇÒ ÇÊ¿ä´Â ¾ø´Ù. ±×·¯³ª Çѹø ¼Ò½º¸¦ Àç»ý¼ºÇÒ ¶§¸¶´Ù make½Ã ¸ðµç Äڵ尡 ÀçÄÄÆÄÀ쵃 °ÍÀÌ´Ù) ½ÇÇàÇغ¸µµ·Ï ÇÏÀÚ. ÀÌÁ¦ Á¾·áÇϸé Á¦´ë·Î Á¾·áµÉ °ÍÀÌ´Ù. ¾ÕÀ¸·Î ¿ì¸®´Â GLADE ÀÇ ÀÛ¾÷ ´ë»óÀÌ µÇ´Â °´Ã¼¸¦ Æû, ¶Ç´Â ÅÛÇø´À̶ó°í ºÎ¸£ÀÚ. ±×¸®°í ½ÇÁ¦ ½ÇÇàµÈ ÈÄÀÇ °á°ú´Â ±× °á°úÀÇ ¼Ó¼º´ë·Î ºÎ¸£±â·Î ÇÏÀÚ. ¿¹¸¦ µé¾î¼­ ¹ÙÅÁ À©µµ¿ì Æû ¿¡¼­ ¹«¾ù ¹«¾ùÀ» ÀÛ¾÷ÇÏ¸é ¹ÙÅÁ À©µµ¿ì¿¡ ¾î¶² ¾î¶² È¿°ú°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù¶ó´Â ½ÄÀ¸·Î Ç¥ÇöÇϱâ·Î ÇÏÀÚ. 3.2. °³¹ß µÎ¹ø° ´Ü°è - about ´ëÈ­»óÀÚ ¸¹Àº gnome ÇÁ·Î±×·¥µéÀº Ç¥ÁØÈ­µÈ ·è¾ØÇÊÀ» °®´Â´Ù. ÀÌ Áß¿¡¼­µµ ¸Þ´º, Åø¹Ù, »óŹÙ, ±×¸®°í about ´ëÈ­ »óÀÚ°¡ µÎµå·¯Áø´Ù. ¹°·Ð ´Ù¸¥ °Íµµ ÀÖ´Ù. ¿¹¸¦ µé¸é »ö»óÇ¥ ´ëÈ­ »óÀÚ, ÆÄÀÏ ¼±Åñâ(À©µµ¿ìÁîÀÇ File Open, Save, Save As¿Í À¯»ç) µîÀÌ ±×°ÍÀÌ´Ù. ¿ì¸®´Â ¿©±â¼­ about ´ëÈ­ »óÀÚ¸¦ ¸¸µé°í ÀÌ°ÍÀ» ³Ö¾î º¸µµ·Ï ÇÏÀÚ. about ´ëÈ­»óÀÚ - ´ëÈ­»óÀÚ ¸¸µé±â ´ëÈ­ »óÀÚ¸¦ ¸¸µé ¶§ GTK+°¡ Á¦°øÇÏ´Â ´ëÈ­»óÀÚ À§Á¬À» ±×´ë·Î »ç¿ëÇؼ­ ±× À§¿¡ ´Ù¸¥ ¿©·¯ À§Á¬µéÀ» ºÙ¿©¼­ ¸¸µé¾îµµ µÇ°í, gnomeÀÌ Á¦°øÇÏ´Â ´ÙÀ½°ú °°Àº À§Á¬À» »ç¿ëÇÏ¿© ´õ ½±°Ô ¸¸µé ¼öµµ ÀÖ´Ù. ¿ì¸®´Â ÀÌ°ÍÀ» ÅÃÇغ¸µµ·Ï ÇÏÀÚ. GNOMEÀÇ About ´ëÈ­»óÀÚ À§Á¬ ÀÌ°ÍÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°í °°Àº ´ëÈ­»óÀÚ°¡ ³ªÅ¸³­´Ù. GNOMEÀÇ About ´ëÈ­»óÀÚ Ãʱ⠸ð½À ¿ì¸®´Â ÀÌ ¶§, °°ÀÌ º¯ÇÑ ÇÁ·ÎÆÛƼ À©µµ¿ìÀÇ Copyright, Author, Comments, ±×¸®°í Logo¸¦ ¹Ù²Ù¾î¼­ ÀÌ about ´ëÈ­»óÀÚ¸¦ ´ÜÀå½ÃÄÑ º¸µµ·Ï ÇÏÀÚ. ¸ÕÀú Copyright¿Í Author, Comments´Â ´ÙÀ½ ±×¸²Ã³·³ º¯°æÇÑ´Ù. GNOMEÀÇ About ´ëÈ­»óÀÚ ¼ÕÁúÈÄÀÇ ¸ð½À ½ÇÁ¦ ¶È°°ÀÌ Çغ¸½Ã¸é ¾Ë°ÚÁö¸¸ ÀÌµé ³»¿ëÀÌ ¸¹¾ÆÁö¸é ´ëÈ­»óÀÚÀÇ Àüü Å©±â µîÀÌ ÀÚµ¿À¸·Î ´Ã¾îµé¾ú´Ù ÁÙ¾îµé¾ú´Ù ÇÑ´Ù. ±×¸®°í ¸¶Áö¸·À¸·Î Logo¸¦ ÁöÁ¤Çغ¸µµ·Ï ÇÏÀÚ. ÀÌ·¸°Ô ÇÏ·Á¸é Logo ¿·ÀÇ ÆíÁý¹Ú½º¿¡ Á÷Á¢ Æнº¸¦ ÀÔ·ÂÇصµ µÇ°í ±× ¿·¿¡ ÀÖ´Â »ý·«ÇüÀ» Ŭ¸¯Çؼ­ ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ¸¦ ºÒ·¯ ÀÌ°ÍÀ» ÅëÇؼ­ ¼±ÅÃÇصµ µÈ´Ù. GNOMEÀÇ About ´ëÈ­»óÀÚ¿¡ ·Î°í¸¦ ³ÖÀº ¸ð½À ÀÚ ÀÌÁ¦ ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÑ´Ù. about ´ëÈ­»óÀÚ - ´ëÈ­»óÀÚ ¶ç¿ì±â ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÑ µÚ ¼Ò½º¸¦ ¸¸µé¾î ´Ù½Ã make¸¦ Çصµ ¿ì¸®´Â ÀÌ»óÇÑ °á°ú¸¦ ¸¸³­´Ù. Áï ¹ÙÅÁ À©µµ¿ì¿Í Á¶±Ý Àü¿¡ ¸¸µç about ´ëÈ­»óÀÚ°¡ µ¿½Ã¿¡ Æ¢¾î ³ª¿Â´Ù´Â °ÍÀÌ´Ù. ¾î¶»°Ô ÇÏ¸é µÇ°Ú´Â°¡? ¾îµð¿£°¡¿¡¼­ ¿ì¸®°¡ ¿øÄ¡ ¾Ê´Â ÀÌ·± ¾×¼ÇÀ» ¼öÇàÇÏ´Â Äڵ尡 ÀÖÀ» °ÍÀÌ´Ù. ´Ù¸§ ¾Æ´Ñ main.cÀÇ main() ÇÔ¼ö ³»ÀÌ´Ù. ±×·¸´Ù¸é ÀÌ°÷À» º¸°í ´ÙÀ½ ¼¼ ¶óÀÎÀ» ¾ø¾Ö º¸ÀÚ(Áö¿öµµ µÇ°í C commentó·³ ¸·¾Æµµ µÈ´Ù.) GtkWidget *about1; ....... about1 = create_about1 (); gtk_widget_show (about1); ¿øÇÏ´Â ´ë·Î about ´ëÈ­»óÀÚ°¡ ½ÇÇà ÆÄÀÏÀ» ½ÇÇàÇÏÀÚ ¸¶ÀÚ ¶ß´Â ÀÏÀº ¾ø¾îÁ³´Ù. ±×·¡µµ ¹®Á¦´Â ³²´Â´Ù. ¾î¶»°Ô ¿øÇÒ °æ¿ì Áï, »ç¿ëÀÚ°¡ ¸Þ´º³ª Åø¹Ù¸¦ ÅëÇؼ­ about¸¦ ¼±ÅÃÇÒ °æ¿ì ¿ì¸®ÀÇ about ´ëÈ­»óÀÚ¸¦ ¶ç¿ì´Â ¹æ¹ýÀº ¹«¾ùÀΰ¡? ´ÙÀ½°ú °°Àº Äڵ带 ºñ¾î ÀÖ´Â ¸Þ´º About¿¡ ´ëÇÑ Çڵ鷯 on_About_activate(callbacks.c¿¡ Á¸Àç) ¾È¿¡ ³Ö¾î ÁÖ¸é µÈ´Ù. GtkWidget *about1; about1 = create_about1_dialog (); gtk_widget_show (about1); À§¿¡¼­ Áö¿ü´ø ÄÚµåÀÌ´Ù. ÀÌ°ÍÀ» ¿øÇÏ´Â °÷¿¡ ¿Å±ä°Å³ª ´Ù¸§¾ø´Ù. ÀÚ ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÏ°í makeÇÑ ÈÄ ½ÇÇà ÆÄÀÏÀ» ¸¸µé¾î È®ÀÎÇغ¸ÀÚ. About ¹öÆ°À» ´­·¶À» °æ¿ì¿¡µµ ÀÌ¿Í µ¿ÀÏÇÑ È¿°ú¸¦ ¾òÀ¸·Á¸é ¹ÙÅÁ À©µµ¿ìÀÇ Åø¹Ù¿¡¼­ About ¹öÆ°À» ¼±ÅÃÇÑ µÚ ÇÁ·ÎÆÛƼ À©µµ¿ìÀÇ ½Ã±×³Î ÅÇ¿¡¼­ À§¿Í °°ÀÌ ½Ã±×³Î Çڵ鷯¸¦ µî·ÏÇÏÀÚ(´ÙÀ½ ±×¸² ÂüÁ¶). ±×¸®°í ³ª¼­ ÀÌ Çڵ鷯 ¾È¿¡ ¸Þ´º¿Í µ¿ÀÏÇÑ Äڵ带 ³Ö¾î ÁÖ¸é µÈ´Ù(¾Æ´Ï¸é °øÅë ÇÔ¼ö¸¦ ¸¸µé¾î À̸¦ È£ÃâÇصµ µÇ°í). About ¹öÆ°ÀÇ ½Ã±×³Î ±×·±µ¥ ÀÌ °ÍÀÌ Á¦´ë·Î ½ÇÇàµÈ´Ù ÇÏ´õ¶óµµ ÀÌ»óÇÑ Á¡ÀÌ ÀÖ´Ù. Áï ¿ì¸®°¡ ³Ö¾ú´ø ·Î°í°¡ Á¦´ë·Î Ãâ·ÂµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ¿Ö ±×·²±î? GLADE´Â ¸¸µé¾îÁö´Â ¾îÇø®ÄÉÀ̼ÇÀÇ pixmap µð·ºÅ丮ÀÇ µðÆúÆ®¸¦ "/usr/share/pixmaps" ¾Æ·¡ ¾îÇø®ÄÉÀÌ¼Ç À̸§À¸·Î ¼³Á¤ÇÑ´Ù. Á¤È®ÇÏ°Ô ¸»Çϸé gnome-config --datadirÀÇ °á°ú°ªÀ» ¾ò¾î¼­ (-- ÀÌ°ÍÀº ´ë°³ "/usr/share" ÀÌ´Ù--) ¿©±â¿¡ "pixmaps" ¿Í ¾îÇø®ÄÉÀÌ¼Ç À̸§À» µ¡ºÙÀÎ °ÍÀÌ ·Î°í µî ±×¸² ÆÄÀÏÀÌ ÀúÀåµÇ´Â À§Ä¡°¡ µÈ´Ù. ±×·¯¹Ç·Î »ç¿ëÀÚ°¡ º¹»ç¸¦ ÇϵçÁö ¾Æ´Ï¸é ·çÆ® ±ÇÇÑÀ¸·Î¼­ make install ÇÏ¸é ·Î°í µî ±×¸² ÆÄÀϵéÀÌ À§ÀÇ µð·¹Å丮·Î º¹»çÇÑ´Ù. ±×·¯¸é ¿©±â¿¡ ÀÖ´Â ÆÄÀÏÀÌ »ç¿ëµÇ¾î About ´ëÈ­»óÀÚÀÇ ±×¸²ÀÌ º¸ÀÌ°Ô µÉ °ÍÀÌ´Ù. about ´ëÈ­»óÀÚ - ´ëÈ­»óÀÚ ¾ø¾Ö±â ÀÌ·¸°Ô Çؼ­ ¸¸µé¾îÁø about ´ëÈ­»óÀÚ´Â »ç¿ëÀÚ°¡ ¸Þ´º³ª Åø¹Ù¸¦ ÅëÇؼ­ ¶ç¿ï ¼ö ÀÖ´Ù. ±×¸®°í ÀÌ ´ëÈ­»óÀÚÀÇ È®ÀÎ ¹öÆ°À» ´©¸£¸é ¾ðÁ¦µçÁö ´ÝÀ» ¼ö ÀÖ´Ù. 3.3. °³¹ß ¼¼¹ø° ´Ü°è - file open ´ëÈ­»óÀÚ ¸ÕÀú ´ÙÀ½ ``ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ À§Á¬''À» "À§Á¬ À©µµ¿ì"-"GTK+ Basic ÆгÎ" ¿¡¼­ Ŭ¸¯Çϸé ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÈ´Ù. ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ ÄÁƲ·Ñ ÀÌ·¸°Ô Çϸé ÀÚµ¿À¸·Î "src/interface.c"¿¡ create_fileselection1 ¶ó´Â ÇÔ¼ö°¡ »ý±â°í ¿©±â¿¡ ok_button1¿Í cancel_button1 ¹öÆ°µéÀÌ ¸¸µé¾îÁ® ºÙ¿©Áø´Ù. ÀÌ ´ëÈ­»óÀÚ°¡ ÀûÀýÇÑ »ç¿ëÀÚ ¿ä±¸¿¡ ´ëÇؼ­ È­¸é¿¡ µð½ºÇ÷¹À̵ǵµ·Ï ¼³Á¤ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏÀÚ. ¸Þ´º¿Í ¿¬°áÇϱ⠹ÙÅÁ À©µµ¿ì Æû¿¡¼­ ¸Þ´º¸¦ ¼±ÅÃÇÏÀÚ. ±×·¯¸é ÇÁ·ÎÆÛƼ À©µµ¿ìÀÇ Widget ÅÇ¿¡ Edit Menus... ¶ó´Â ¹öÆ°ÀÌ º¸ÀÏ °ÍÀÌ´Ù. ÀÌ°ÍÀ» Ŭ¸¯ÇÏ¿© Menu Editor À©µµ¿ì¸¦ ºÎ¸¥ µÚ File ¸Þ´ºÀÇ Open ¼­ºê ¸Þ´º¿¡ ´ëÇÑ Çڵ鷯 À̸§À» È®ÀÎÇÑ´Ù. ´ë°³ on_Open_activate ÀÏ °ÍÀÌ´Ù. ¿ì¸®´Â ÀÌ Çڵ鷯 (-- callbacks.c ¿¡ ÀÖ´Ù--) ¾È¿¡ file open ´ëÈ­ »óÀÚ¸¦ ºÎ¸£´Â Äڵ带 ³Ö¾î¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ÇÏÀÚ. ________________________________________________________________ void on_Open_activate ( GtkMenuItem *menuitem, gpointer user_data) { /* Ãß°¡ ½ÃÀÛ */ GtkWidget *open_file; open_file = create_fileselection1(); gtk_widget_show (open_file); /* Ãß°¡ ³¡ */ } ________________________________________________________________ Åø¹Ù ¹öÆ°°ú ¿¬°áÇϱ⠸ÞÀÎ À©µµ¿ìÀÇ Open ¹öÆ°À» Ŭ¸¯ÇÏ¿© ¼±ÅÃÇÑ ÈÄ ¼Ó¼º À©µµ¿ìÀÇ Signals ÅÇ¿¡¼­ clicked Çڵ鷯¸¦ µî·ÏÇÑ´Ù. ±×¸®°í Build ¹öÆ°À» ´©¸¥´Ù. ±×·¯¸é callbacks.c ¿¡ ÇØ´ç Çڵ鷯 ÇÔ¼öÀÇ ¹Ùµð¸¸ Ãß°¡µÉ °ÍÀÌ´Ù. ´ë°³ Open ¹öÆ°Àº Åø¹Ù¿¡¼­ µÎ¹ø°À̹ǷΠon_button2_clicked() (-- À̰͵µ callbacks.c ¿¡ ÀÖ´Ù--) ÀÌ µÉ °ÍÀÌ´Ù. ¿©±â¿¡µµ À§ÀÇ Ç׸ñ°ú °°Àº ¼¼ ¶óÀÎÀ» Ãß°¡ÇÏÀÚ. ±×·¯¸é Open ¹öÆ°À» Ŭ¸¯ÇÒ ¶§¸¶´Ù ´ÙÀ½°ú °°Àº ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ°¡ ³ª¿Ã °ÍÀÌ´Ù. ½ÇÇàÈÄ ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ ÀÚ ÀÌÁ¦´Â ÀÌ ´ëÈ­ »óÀÚ¿Í ÀÎÅÍÆäÀ̽º¸¦ ÇØ¾ß ÇÑ´Ù. »ç¿ëÀÚ°¡ È®ÀÎ ¹öÆ°À» ´©¸£¸é ÀÔ·ÂµÈ ÆÄÀÏÀ» °¡Á®¿À°í ´ëÈ­»óÀÚ¸¦ Á¾·áÇϸç, Ãë¼Ò ¹öÆ°À» ´©¸£¸é ±×³É ´ëÈ­»óÀÚ¸¦ Á¾·áÇÏÀÚ. ÀÚ ÀÌÁ¦ °¢ ¹öÆ° ½Ã±×³Î Çڵ鷯µéÀ» µî·ÏÇغ¸ÀÚ. ¹®Á¦ ¹× »çÀü Áö½Ä 1. ¹ÙÅÁ À©µµ¿ì¿¡¼­ »õ·Î¿î ´ëÈ­»óÀÚ¸¦ À§ÀÇ ÄÚµåó·³ »ý¼ºÇÏ¿´´Â µ¥, ±× °á°ú À§Á¬¿¡ ´ëÇÑ Á¤º¸, Áï À§Á¬ Æ÷ÀÎÅ͸¦ µû·Î ÀúÀåÇÏÁö ¾Ê¾Ò´Ù. ÀÌ °ÍÀ» ¾Ë¾Æ¾ß ¹ÙÅÁ À©µµ¿ì³ª Çڵ鷯¿¡¼­ ´ëÈ­»óÀÚ¸¦ ´Ý°Å³ª ¼±ÅÃµÈ ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò¾î ¿Ã ¼ö ÀÖ´Ù. °á°úÀûÀ¸·Î ´ëÈ­»óÀÚ¿¡ ´ëÇÑ Á¶ÀÛÀ» ó¸®ÇÒ ¶§, Àü¿ªº¯¼ö ´Ù¸¥ ¹æ¹ýÀ» ÅëÇؼ­ ´ëÈ­»óÀÚ Æ÷ÀÎÅ͸¦ ¾Ë¾Æ³»¾ß ÇÑ´Ù. 2. ¼±ÅÃµÈ ÆÄÀÏÀº gtk_file_selection_get_filename (GTK_FILE_SELECTION(widget_pointer))) ÀÇ ¸®ÅÏ°ªÀÎ ¹®ÀÚ¿­ÀÌ´Ù. 3. gtk_signal_connect() ÇÔ¼ö·Î ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯¸¦ ¿¬°áÇÒ ¶§ ¸¶Áö¸· ÆĶó¹ÌÅÍ·Î void *¸¦ ¸»ÇÏ´Â gpointer Çü °ªÀ» ÁÙ ¼ö ÀÖ°í ¹Þ´Â ÂÊ, Áï ½Ã±×³Î Çڵ鷯 ÂÊ¿¡¼­µµ gpointer ÇüÀÇ °ªÀ» ¹Þ´Â´Ù. 4. ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯¸¦ ¿¬°áÇÒ ¶§ gtk_signal_connect_object ¸¦ ¾µ ¼öµµ ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â ´Ù¸¥ °´Ã¼ÀÇ Äݹé ÇÔ¼ö¸¦ ½Ã±×³Î Çڵ鷯·Î ¿¬°áÇÒ ¶§ »ç¿ëµÈ´Ù. ±×¸®°í ÀÌ ÇÔ¼ö´Â Ç¥ÁØ ÇÔ¼ö(¿¹: gtk_widget_show µî)¸¦ ½Ã±×³Î Çڵ鷯·Î ¿¬°áÇÒ ¶§ À¯¿ëÇÏ´Ù. ÀÌ ÇÔ¼öÀÇ ³×¹ø° ÆĶó¹ÌÅÍ´Â ¿¬°áµÇ´Â ½Ã±×³Î Çڵ鷯ÀÇ Ã¹¹ø° ÆĶó¹ÌÅÍ·Î Àü´ÞµÈ´Ù. 5. GLADE ´Â ´ëÈ­»óÀÚÀÇ ¹öÆ°¿¡ ´ëÇÑ Çڵ鷯¸¦ °³¹ßÀÚ°¡ Ãß°¡ÇÒ ¶§ Data ¶Ç´Â Object ¸¦ ¾²Áö ¾ÊÀ¸¸é gtk_signal_connect() ¶ó´Â ÇÔ¼ö¸¸À» ½á¼­, ¸¶Áö¸· ÆĶó¹ÌÅͷδ ¹«Á¶°Ç NULL À» ÁÖ°í¼­ µî·ÏÇÑ´Ù. ±×·¯³ª Data ¸¦ »ç¿ëÇÏ¸é ¸¶Áö¸· ÆĶó¹ÌÅͷνá ÁöÁ¤µÈ °ªÀ» »ç¿ëÇÏ¿© »ý¼ºÇϸç Object ¸¦ »ç¿ëÇϸé gtk_signal_connect_object() ÇÔ¼ö¸¦ ¾²¸ç ¸¶Áö¸· ÆĶó¹ÌÅÍ·Î Object ¿¡¼­ ÁöÁ¤ÇÑ °ÍÀ» ¾´´Ù. ±×¸®°í After ¹öÆ°À» Ŭ¸¯Çϸé gtk_signal_connect_after() ¸¦ »ç¿ëÇÏ¿© ½Ã±×³ÎÀ» µî·ÏÇÑ´Ù. 6. GLADE ´Â Ãë¼Ò ¹öÆ°À» µðÆúÆ®·Î ¸¸µç´Ù. È®ÀÎ ¹öÆ° ½Ã±×³Î Çڵ鷯 ¸ÕÀú ´ëÈ­»óÀÚ(¿©±â¼­´Â fileselection1) ÅÛÇø´ÀÌ È­¸é¿¡ ¶°ÀÖÁö ¾ÊÀ¸¸é GLADE ¸ÞÀÎ À©µµ¿ì¿¡¼­ ÇØ´ç ´ëÈ­»óÀÚ¸¦ ´õºíŬ¸¯ÇÏ¿© È­¸é¿¡ ¶ç¿î´Ù. ±×¸®°í ÇÁ·ÎÆÛƼ À©µµ¿ì¸¦ ¶ç¿îµÚ, ´ëÈ­»óÀÚÀÇ È®ÀÎ ¹öÆ°À» ´©¸£¸é ÀÌ ¹öÆ°¿¡ ´ëÇÑ ÇÁ·ÎÆÛƼ¸¦ º¸¿©ÁÙ °ÍÀÌ´Ù. ÀÌ ÇÁ·ÎÆÛƼ À©µµ¿ìÀÇ ½Ã±×³Î ÅÇ¿¡¼­ ´ÙÀ½ ±×¸²Ã³·³ Çڵ鷯¸¦ Ãß°¡ÇÏÀÚ. ±×¸®°í Data ºÎºÐ¿¡ fileselection1 À» ³Öµµ·Ï ÇÏÀÚ(´ÙÀ½ ±×¸² ÂüÁ¶). ±×·¯¸é gtk_signal_connect() ÇÔ¼ö ³×¹ø° ÆĶó¹ÌÅÍ¿¡ ÀÌ °ªÀ» GLADE °¡ ³ÖÀ» °Í (-- ¹°·Ð GLADE ¸ÞÀÎ À©µµ¿ì¿¡¼­ Build ¸¦ Ŭ¸¯ÇØ¾ß ÇÑ´Ù--) ÀÌ´Ù. È®ÀÎ ¹öÆ° ½Ã±×³Î Çڵ鷯 µî·Ï ÀÌÈÄ interface.c ¿¡ ´ÙÀ½°ú °°Àº ¶óÀÎÀÌ Ãß°¡µÊÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ________________________________________________________________ gtk_signal_connect (GTK_OBJECT (ok_button1), "clicked", GTK_SIGNAL_FUNC(on_ok_button1_clicked), fileselection1); ________________________________________________________________ Ãë¼Ò ¹öÆ° ½Ã±×³Î Çڵ鷯 Ãë¼Ò ¹öÆ° ½Ã±×³Î Çڵ鷯´Â È®ÀÎ ¹öÆ° ½Ã±×³Î Çڵ鷯¿Í ºñ½ÁÇÏ°Ô µî·ÏÇ쵂 ÇÁ·ÎÆÛƼ À©µµ¿ì/½Ã±×³Î ÅÇÀÇ ½Ã±×³Î Çڵ鷯 µî·Ï ÄÞº¸(´ÙÀ½ ±×¸² ÂüÁ¶)¸¦ Ŭ¸¯ÇÏ¿© gtk_widget_destroy() ¶ó´Â ½ºÅå(Ç¥ÁØ, ³»Àå) Çڵ鷯¸¦ ¼±ÅÃÇÏ¿© µî·ÏÇÏÀÚ. ±×¸®°í Object ºÎºÐ¿¡´Â fileselection1 À» ³Öµµ·Ï ÇÏÀÚ(´ÙÀ½ ±×¸² ÂüÁ¶). ÀÌ·¸°Ô Çϸé gtk_signal_connect() ÇÔ¼ö ´ë½Å¿¡ gtk_signal_connect_object() ¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇϸç ÀÌ ÇÔ¼öÀÇ ³×¹ø° ÆĶó¹ÌÅÍ¿¡ NULL ¾Æ´Ñ Á¶±Ý Àü¿¡ ³Ö¾îÁØ °ªÀ» GLADE °¡ (-- ¹°·Ð GLADE ¸ÞÀÎ À©µµ¿ì¿¡¼­ Build ¸¦ Ŭ¸¯ÇØ¾ß ÇÑ´Ù--) ³Ö´Â´Ù. Ãë¼Ò ¹öÆ°¿¡ ´ëÇÑ Çڵ鷯 µî·Ï À§ÀÇ ±×¸²Àº ³»¿ëÀÌ ´Ù º¸À̶ó°í µðÆúÆ®·Î ³ª¿À´Â °ÍÀ» Á¶±Ý ´Ã¸° °ÍÀÌ´Ù. ±×·¯¸é interface.c ¿¡ ´ÙÀ½°ú °°Àº ¶óÀÎÀÌ Ãß°¡µÊÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ________________________________________________________________ gtk_signal_connect_object (GTK_OBJECT (cancel_button1), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), fileselection1); ________________________________________________________________ Ãë¼Ò ¹öÆ°ÀÇ °æ¿ì´Â ±×´ë·Î ³öµÎ¾îµµ ¹«¹æÇÏÁö¸¸ È®ÀÎ ¹öÆ°ÀÇ °æ¿ì ½Ã±×³Î Çڵ鷯¿¡ Á¶±Ý Äڵ带 Ãß°¡ÇÏ¿©¾ß »ç¿ëÀÚ°¡ ¹«¾ùÀ» ¼±ÅÃÇß´ÂÁö¸¦ ÆľÇÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°ÀÌ Ãß°¡ÇÏ¸é µÈ´Ù: ______________________________________________________________________ void on_ok_button1_clicked (GtkButton *button, gpointer user_data ) { /* Ãß°¡ ½ÃÀÛ */ GtkWidget *open_file = (GtkWidget *)user_data; g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (open_file))); gtk_widget_destroy( (GtkWidget *)open_file ); /* Ãß°¡ ³¡ */ } ______________________________________________________________________ ¿ì¼±Àº ¼±ÅÃµÈ ÆÄÀÏÀ» ÅؽºÆ®·Î Å͹̳ο¡ Ãâ·ÂÇÏ´Â °ÍÀ¸·Î ÀÌ ¼½¼ÇÀÇ ¾ê±â¸¦ ³¡³»µµ·Ï ÇÏÀÚ. ³ªÁß¿¡ ÀÌ °ªÀ» È°¿ëÇϱâ·Î ÇÏ°í. 3.4. °³¹ß ³×¹ø° ´Ü°è - font selection ´ëÈ­»óÀÚ ¸ÕÀú ´ÙÀ½ ``ÆùÆ® ¼±Åà ´ëÈ­»óÀÚ À§Á¬''À» "À§Á¬ À©µµ¿ì"-"GTK+ Basic ÆгÎ" ¿¡¼­ Ŭ¸¯Çϸé ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÈ´Ù. ÆùÆ® ¼±Åà ´ëÈ­»óÀÚ ÄÁƲ·Ñ À§¿¡¼­ º» ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ¿Í °ÅÀÇ ¸ðµç ¸é¿¡¼­ µ¿ÀÏÇϱ⠶§¹®¿¡ ¸¹Àº ºÎºÐÀ» »ý·«ÇÑ´Ù. ±×·¯³ª »ç¿ëÀÚ°¡ È®ÀÎÀ̳ª Àû¿ëÀ» ´­·¶À» °æ¿ì »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ³»¿ëÀ» ¾ò¾î¿À´Â ºÎºÐÀº ¿©±â¼­ ´Ù·ç±â·Î ÇÑ´Ù. ÀÌ·± ¿ªÇÒÀ» ÇÏ´Â ÇÔ¼ö´Â ÆÄÀϼ±Åðú´Â ´Þ¸® 1°³°¡ ¾Æ´Ï¶ó 3°³Á¤µµ ÀÖ´Ù. 1. gtk_font_selection_dialog_get_font() 2. gtk_font_selection_dialog_get_font_name() 3. gtk_font_selection_dialog_get_preview_text() ¼¼¹ø°´Â Ư¼öÇÑ °æ¿ì¿¡(¿¹¸¦ µé¸é »ç¿ëÀÚ°¡ ±×¸²¿¡ ³ÖÀ» ÅؽºÆ®¸¦ ¼±ÅÃÇÏ´Â °æ¿ì µî) ¾²ÀÏ °ÍÀ¸·Î º¸ÀδÙ. ù¹ø°¿Í µÎ¹ø°´Â ÇÔ¼ö À̸§µéÀÌ °¡¸£ÄÑÁÖ´Â ¹Ù¿Í °°´Ù. ´Ù¸¸ ù¹ø°´Â GdkFont Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÏ°í µÎ¹ø°´Â À̸§¸¸ ¸®ÅÏÇÑ´Ù. È®ÀÎ ¹öÆ°¿¡ ´ëÇؼ­ À§ÀÇ ¼½¼Ç¿¡¼­ ÇÑ °Í°ú ºñ½ÁÇÏ°Ô Ç쵂 ´ÙÀ½°ú °°ÀÌ ¼±Åà ´ë»ó Á¤º¸¸¦ ¾ò´Â ºÎºÐÀ» Ãß°¡ÇÏÀÚ. ______________________________________________________________________ void on_ok_button2_clicked (GtkButton *button, gpointer user_data) { /* Ãß°¡ ½ÃÀÛ */ GtkWidget *font_select = (GtkWidget *)user_data; GdkFont *gdk_font = NULL; gdk_font = gtk_font_selection_dialog_get_font( GTK_FONT_SELECTION_DIALOG(font_select)); g_print ("type : %s\n", gdk_font->type == GDK_FONT_FONT ? "font" : ( gdk_font->type == GDK_FONT_FONTSET ? "fontset" : "unkonwn") ); g_print ("ascent : %d\n", gdk_font->ascent ); g_print ("descent : %d\n", gdk_font->descent); g_print ( "name = %s\n", gtk_font_selection_dialog_get_font_name( GTK_FONT_SELECTION_DIALOG(font_select)) ); gtk_widget_destroy( (GtkWidget *)font_select ); /* Ãß°¡ ³¡ */ } ______________________________________________________________________ ÀÌ ÆùÆ® ¼±Åà ´ëÈ­»óÀÚ¸¦ ¶ç¿ì´Â ¸Þ´º¸¦ Çϳª Ãß°¡ÇÏ¿© ÀÌ ´ëÈ­»óÀÚ¸¦ ±¸µ¿½ÃÄѺ¸ÀÚ(``¸Þ´º ¿¡µðÅÍ''¸¦ È°¿ëÇÏÀÚ). ½ÇÇàÈÄ °á°ú´Â ´ÙÀ½°ú °°´Ù(¿À¸¥ÂÊ Å͹̳ο¡ ÂïÈù ³»¿ëÀ» ÁÖ¸ñÇÏÀÚ). ÆùÆ® ¼±Åà ´ëÈ­»óÀÚ ½ÇÇà È­¸é 3.5. °³¹ß ´Ù¼¸¹ø° ´Ü°è - text area Á¦¾î ÀÚ ÀÌÁ¦ ÅؽºÆ® ¿µ¿ªÀ» Á¦¾îÇغ¸ÀÚ. ±âº»ÀûÀ¸·Î ÅؽºÆ® ¿µ¿ª À§Á¬ ÀÚü°¡ ÅؽºÆ® ÀÔ·Â ±â´É, ÀÔ·ÂµÈ ÅؽºÆ®ÀÇ ¼±Åà ±â´É, ¹æÇâÅ° ¹× ¹é½ºÆäÀ̽º Å° ±â´É µîÀ» Áö¿øÇÑ´Ù. ±×¸®°í Del Å°´Â Ä¿¼­ µÚ ¹®ÀÚ Çϳª¸¦ Áö¿ì¸ç ¸¶¿ì½º ¼±Åà ÈÄ Del Å°´Â ¼±ÅÃµÈ ¿µ¿ªÀ» ¸ðµÎ Áö¿î´Ù. ÀÌ°ÍÀº GtkText ¶ó´Â À§Á¬À¸·Î Áö¿øµÈ´Ù. ±×¸®°í ÀÌ À§Á¬Àº GtkEditable À§Á¬À¸·ÎºÎÅÍ ½Â°èµÈ °ÍÀÌ´Ù. ±×·¯¸é ¿©±â¿¡ º¹»ç/ÀÚ¸£±â/ºÙÀ̱⠱â´ÉÀ» ³Ö¾îº¸µµ·Ï ÇÏÀÚ. º¹»ç ¿ì¸®´Â void gtk_editable_copy_clipboard(GtkEditable *editable); ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¼±ÅÃµÈ ¿µ¿ªÀ» Ŭ¸³º¸µå·Î º¹»çÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ ÆíÁý/º¹»ç ¸Þ´º¸¦ ¼±ÅÃÇßÀ» ¶§ ±¸µ¿µÇ´Â ½Ã±×³Î Çڵ鷯 on_Copy_activate() ¾È¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀ» ³Ö¾îº¸ÀÚ. ________________________________________________________________ gtk_editable_copy_clipboard( (GtkEditable *)gTextArea ); ________________________________________________________________ ±×·¯³ª ¸ÕÀú GtkText Æ÷ÀÎÅÍÇü Àü¿ª º¯¼ö gTextArea °¡ ¼±¾ðµÇ°í ¿ì¸®ÀÇ ¹ÙÅÁ À©µµ¿ì¿¡ ÀÖ´Â ÅؽºÆ® ¿µ¿ªÀ» °¡¸®Å°µµ·Ï Á¤ÀǵǾî ÀÖ¾î¾ß ÇÑ´Ù. ±×·¯¹Ç·Î callbacks.c ¿¡ GtkText *gTextArea ¶ó°í Àü¿ª º¯¼ö ¼±¾ðÀ» ÇÑ´Ù. ±×¸®°í callbacks.c ¿¡ focus_in_event ½Ã±×³Î¿¡ ´ëÇÑ Çڵ鷯¸¦ ¸¸µé°í ÀÌ ¾È¿¡ ´ÙÀ½°ú °°Àº Äڵ带 Ãß°¡ÇÏÀÚ (-- interface.c ¿¡ À§ÀÇ Àü¿ªº¯¼ö¸¦ ¼±¾ðÇϰųª ÀÌ Àü¿ªº¯¼ö ÃʱâÈ­¸¦ ³Ö´Â´Ù¸é ¹®Á¦°¡ ³¯ ¼ö ÀÖ´Ù. ¿Ö³Ä¸é GLADE ´Â interface.c ´Â ´ë°³ ÇÔ¼ö ¸öü Äڵ尡 µé¾î ÀÖ´Â create_xxx °ú °°Àº ÇÔ¼öµéÀ» ³Ö°í ÀÌ´Â °³¹ßÀÚ°¡ GLADE ¸ÞÀÎ À©µµ¿ìÀÇ Build ¸¦ ´©¸¦ ¶§¸¶ »õ·ÎÀÌ °»½ÅµÇ¾î °³¹ßÀÚ Ä¿½ºÅ͸¶ÀÌÁî Äڵ尡 À¯½ÇµÇ±â ¶§¹®ÀÌ´Ù. ´ë½Å callbacks.c ¿¡ ÀÖ´Â ³»¿ëµéÀº ÁÖ·Î ½Ã±×³Î Çڵ鷯µéÀ̸ç interface.c ¿¡ ºñÇؼ­ À¯½ÇµÇ´Â °ÍÀÌ °ÅÀÇ ¾ø´Ù. ±×·¡¼­ ÃßÈÄ GLADE ÀÇ Build ¿¡ ÀÇÇؼ­ ¼Ò½º°¡ »õ·Î °»½ÅµÉ ¶§, ¿µÇâÀ» ¹ÞÁö ¾Ê´Â °ÍÀ» ÇÊ¿ä·Î ÇÑ´Ù¸é callbacks.c ¿¡ ³Ö´Â °ÍÀÌ ÁÁ°Ú´Ù. ±×·¯³ª ½±°Ô ÇÏ´Â ¹æ¹ýÀÎ Àü¿ª º¯¼ö¸¦ ½á¾ß ÇÑ´Ù¸é Build ÇÏÁö ¾Ê´Â ¹æÇâÀ¸·Î Çصµ ÁÁ´Ù.--) : ___________________________________________________________________ gboolean on_text1_focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { /* Ãß°¡ ½ÃÀÛ */ g_print( "on_text1_focus_in_event() start\n" ); if ( gTextArea == NULL ) gTextArea = (GtkText *)user_data; /* Ãß°¡ ³¡ */ return FALSE; } ___________________________________________________________________ GTK ³»ºÎÀûÀ¸·Î ÅؽºÆ® ¿µ¿ªÀÇ ¼±Åà ¿µ¿ª º¹»ç¿¡ ´ëÇؼ­ Ctrl-C ¸¦ ´ÜÃàÅ°·Î ÇÒ´çÇØ ³õ°í ÀÖ´Ù. ÀÚ¸£±â ¿ì¸®´Â void gtk_editable_cut_clipboard(GtkEditable *editable); ÇÔ¼ö¸¦ »ç¿ëÇؼ­ ¼±ÅÃµÈ ¿µ¿ªÀ» Ŭ¸³º¸µå·Î À߶ó ³ÖÀ» ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°ÀÌ ÆíÁý/ÀÚ¸£±â ¸Þ´º¸¦ ¼±ÅÃÇßÀ» ±¸µ¿µÇ´Â ½Ã±×³Î Çڵ鷯 on_Cut_activate() ¾È¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀ» ³Ö¾îº¸ÀÚ. ________________________________________________________________ gtk_editable_cut_clipboard( (GtkEditable *)gTextArea ); ________________________________________________________________ GTK ³»ºÎÀûÀ¸·Î ÅؽºÆ® ¿µ¿ªÀÇ ¼±Åà ¿µ¿ª ÀÚ¸£±â¿¡ ´ëÇؼ­ Ctrl-X ¸¦ ´ÜÃàÅ°·Î ÇÒ´çÇØ ³õ°í ÀÖ´Ù. ºÙÀ̱⠿츮´Â void gtk_editable_paste_clipboard(GtkEditable *editable); ÇÔ¼ö¸¦ »ç¿ëÇؼ­ Ŭ¸³º¸µå¿¡ ÀÖ´Â ³»¿ëÀ» ÇöÀç Ä¿¼­ À§Ä¡·Î ³ÖÀ» ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°ÀÌ ÆíÁý/ºÙÀ̱⠸޴º¸¦ ¼±ÅÃÇßÀ» ±¸µ¿µÇ´Â ½Ã±×³Î Çڵ鷯 on_Paste_activate() ¾È¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀ» ³Ö¾îº¸ÀÚ. ________________________________________________________________ gtk_editable_paste_clipboard( (GtkEditable *)gTextArea ); ________________________________________________________________ GTK ³»ºÎÀûÀ¸·Î ÅؽºÆ® ¿µ¿ªÀÇ ¼±Åà ¿µ¿ª ºÙÀ̱⿡ ´ëÇؼ­ Ctrl-P ¸¦ ´ÜÃàÅ°·Î ÇÒ´çÇØ ³õ°í ÀÖ´Ù. ÀÌÁ¦´Â ÆÄÀÏÀ» Àо ÅؽºÆ® ¿µ¿ªÀ¸·Î ÀоîµéÀÌ°í, ÆÄÀÏ¿¡ ÀúÀåÇغ¸µµ·Ï ÇÏÀÚ. ÆÄÀÏ Àбâ À§ÀÇ ÆÄÀÏ ¼±Åà ´ëÈ­ »óÀÚ ¼½¼Ç¿¡¼­ ¼±ÅÃµÈ ÆÄÀÏÀ» Àо ¿ì¸®ÀÇ ¾îÇø®ÄÉÀÌ¼Ç ÅؽºÆ® ¿µ¿ª¿¡´Ù µð½ºÇ÷¹ÀÌÇغ¸ÀÚ. ´ÙÀ½°ú °°ÀÌ ÆÄÀÏ Open ´ëÈ­»óÀÚ¸¦ ±¸µ¿ÇÑ ÈÄ »ç¿ëÀÚ°¡ È®ÀÎ ¹öÆ°À» ´­·¶À» ¶§ ÀÛµ¿µÇ´Â ½Ã±×³Î Çڵ鷯 on_ok_button1_clicked() ¿¡´Ù ÆÄÀÏÀ» Àо ÅؽºÆ® ¿µ¿ª¿¡ ³Ö´Â Äڵ带 Ãß°¡Çغ¸ÀÚ. ________________________________________________________________ void on_ok_button1_clicked (GtkButton *button, gpointer user_data ) { /* Ãß°¡ ½ÃÀÛ */ GtkWidget *open_file = (GtkWidget *)user_data; gchar *file_name = gtk_file_selection_get_filename (GTK_FILE_SELECTION(open_file)); FILE *infile = NULL; g_print ("%s\n", file_name ); /* ÅؽºÆ® ¿µ¿ª ¶ôÅ· */ gtk_text_freeze (GTK_TEXT (text)); infile = fopen(file_name, "r"); if (infile) { char buffer[1024]; int nchars; while (1) { nchars = fread(buffer, 1, 1024, infile); gtk_text_insert (GTK_TEXT (gTextArea), NULL, NULL, NULL, buffer, nchars); if (nchars < 1024) break; } fclose (infile); } /* ÅؽºÆ® ¿µ¿ª ¶ôÅ· ÇØÁ¦ */ gtk_text_thaw (GTK_TEXT (text)); gtk_widget_destroy( (GtkWidget *)open_file ); /* Ãß°¡ ³¡ */ } ________________________________________________________________ ÀÌ ÄÚµå´Â ÇöÀç »ðÀÔ Æ÷ÀÎÆ®(current insert point) µÚ¿¡´Ù ÅؽºÆ®¸¦ Ãß°¡ÇÏ´Â °ÍÀ̹ǷΠÆÄÀÏ ³»¿ëÀ» ³Ö±âÀü¿¡ ÅؽºÆ® ¿µ¿ª¿¡ ¾î¶² ³»¿ëÀÌ ÀÖ¾ú´Ù¸é ±× ÀÌÈÄ¿¡ ÆÄÀÏ ³»¿ëÀÌ µé¾î°¥ °ÍÀÌ´Ù. À§¿¡¼­ »õ·Î »ç¿ëµÈ GTK ÇÔ¼ö´Â ´ÙÀ½°ú °°´Ù. 1. gtk_text_insert() - ÅؽºÆ® ¿µ¿ªÀÇ ÇöÀç Ä¿¼­ ÀÌÈÄ¿¡ ÁÖ¾îÁø ¹öÆÛÀÇ ³»¿ëÀ» ä¿î´Ù. 2. gtk_text_freeze(), gtk_text_thaw() - ÅؽºÆ® ¿µ¿ªÀ» ¶ôÅ·ÇÏ°í ¾ð¶ôÅ·ÇÑ´Ù. ÆÄÀÏ ÀúÀå ÀÌÁ¦´Â ÇöÀç ÅؽºÆ® ¿µ¿ªÀÇ ³»¿ëÀ» ÆÄÀÏ·Î ½áº¸ÀÚ. ±×·²·Á¸é ÅؽºÆ® ¿µ¿ª Àüü¸¦ ÃßÃâÇØ¾ß ÇÑ´Ù. ÅؽºÆ® ¿µ¿ª ÀϺθ¦ ÃßÃâÇÏ´Â ÇÔ¼ö´Â gtk_editable_get_chars( GtkText *editable, gint start_pos, gint end_pos); ÀÌ´Ù. ¿©±â¼­ start_pos, end_pos ´Â 0ºÎÅÍ ½ÃÀÛÇÏ´Â À§Ä¡ Á¤º¸ÀÌ´Ù. ±×¸®°í º¸Á¶ ÇÔ¼ö·Î½á ÅؽºÆ® ¿µ¿ªÀÇ Àüü ±æÀ̸¦ ±¸ÇÏ´Â ÇÔ¼ö gtk_text_get_length( GtkText *gtktext ); °¡ ÀÖ´Ù. À̵éÀ» ÀÌ¿ëÇؼ­ ÆÄÀÏ¿¡ ÀúÀåÇغ¸±â·Î ÇÏÀÚ. ¸ÕÀú Save ´ëÈ­ »óÀÚ¸¦ À§ÀÇ ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ¿¡¼­ Çß´ø °Íó·³ Ãß°¡ÇÏÀÚ. ±×¸®°í »ç¿ëÀÚ°¡ È®ÀÎ ¹öÆ°À» ´©¸£¸é ±¸µ¿µÇ´Â ½Ã±×³Î Çڵ鷯ÀÎ on_ok_button3_clicked() ÇÔ¼ö ¾È¿¡ ´ÙÀ½°ú °°Àº Äڵ带 ³Ö¾î º¸ÀÚ: ________________________________________________________________ GtkWidget *save_file = (GtkWidget *)user_data; gchar *file_name = gtk_file_selection_get_filename (GTK_FILE_SELECTION(save_file)); FILE *outfile = NULL; int ntotal = gtk_text_get_length( gTextArea ); int nchars; gchar *buffer = NULL; gint nEnd = ntotal > 1024 ? 1024 : ntotal; gint nStart = 0; g_print ("save file name : %s\n", file_name ); g_print ("ntotal = %d\n", ntotal ); /* ÅؽºÆ® ¿µ¿ª ¶ôÅ· */ gtk_text_freeze (GTK_TEXT (gTextArea)); outfile = fopen(file_name, "w+"); if (outfile) { buffer = gtk_editable_get_chars( (GtkEditable *)gTextArea, 0, nEnd ); nchars = fwrite(buffer, 1, nEnd, outfile); g_free( buffer ); while (nEnd < ntotal) { nStart = nEnd; nEnd = (nEnd + 1024) < ntotal ? nEnd + 1024 : ntotal; buffer = gtk_editable_get_chars( (GtkEditable *)gTextArea, nStart, nEnd ); g_print( "when iter : nStart=%d:nEnd=%d:buffer=%s\n", nStart, nEnd, buffer ); nchars = fwrite(buffer, 1, nEnd-nStart, outfile); g_free( buffer ); } fclose (outfile); } /* ÅؽºÆ® ¿µ¿ª ¶ôÅ· ÇØÁ¦ */ gtk_text_thaw (GTK_TEXT (gTextArea)); gtk_widget_destroy( (GtkWidget *)save_file ); ________________________________________________________________ ¿©±â¼­ ÇÑ°¡Áö ÁÖÀÇÇÒ °ÍÀº GTK °è¿­ÀÇ ÇÔ¼öµéÀÌ ÇѱÛÀ» ¸ðµÎ 2-byte ¹®ÀÚ°¡ ¾Æ´Ñ 1-byte ¹®ÀڷΠó¸®ÇÑ´Ù´Â °ÍÀÌ´Ù. ¹Ý¸é¿¡ fwrite ´Â 2-byte ¹®ÀÚ¸¦ 2-byte ±×´ë·Î ó¸®ÇÑ´Ù. ±×·¡¼­ ÀÌ·± ¿ÀÂ÷·Î ÇѱÛÀ» ÆÄÀÏ·Î ÀúÀåÇϸé À¯½ÇÀÌ ¹ß»ýÇÑ´Ù. ±×¸®°í g_free ÇÔ¼ö´Â gtk_editable_get_chars() ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¾òÀº gchar Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ È£ÃâÇÏ¿© ¸®¼Ò½º¸¦ ¹ÝȯÇÏ´Â ÇÔ¼ö·Î½á ¹Ýµå½Ã ÀÌ·¸°Ô ¸®¼Ò½º¸¦ ¹ÝȯÇÏ¿©¾ß ÇÑ´Ù°í ÇÑ´Ù(GTK ¸Å´º¾ó ÂüÁ¶). ¸¶Áö¸·À¸·Î ÆùÆ®¸¦ ¹Ù²Ù¾î µð½ºÇ÷¹ÀÌ Çغ¸ÀÚ. ÆùÆ® º¯°æ ÈÄ µð½ºÇ÷¹ÀÌ ÆùÆ®¸¦ º¯°æÇؼ­ µð½ºÇ÷¹ÀÌÇÒ·Á¸é ¸ÕÀú ÆùÆ® ¼±Åà ´ëÈ­»óÀÚ¿¡¼­ È®ÀÎÀ» ´­·¶À» °æ¿ì ÀÌ¿¡ ´ëÇÏ¿© ±¸µ¿µÇ´Â ½Ã±×³Î Çڵ鷯¿¡¼­ ½ÃÀÛÇØ¾ß ÇÑ´Ù. ´ë·«ÀûÀ¸·Î ¼³¸íÇϸé ÀÌ Çڵ鷯¿¡¼­ ÇØ¾ß ÇÒ ÀÏÀº, Àüü ÅؽºÆ®¸¦ ¾ò°í ÅؽºÆ® ¿µ¿ªÀ» ¸ðµÎ Áö¿î ´ÙÀ½ »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ÆùÆ®¸¦ ÀÌ¿ëÇؼ­ gtk_text_insert() ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀÌ´Ù. ÀÌ ÇÔ¼öÀÇ ÆùÆ® ÆĶó¹ÌÅÍ¿¡´Ù NULLÀ» ÁÖ¸é µðÆúÆ® ÆùÆ®¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½ ¼Ò½º¸¦ ½Ã±×³Î Çڵ鷯(¿¹: on_ok_button2_clicked())ÀÇ ¿¹ÀÇ ¼Ò½º(À§ÀÇ ¼½¼Ç ÂüÁ¶)¸¶Áö¸·¿¡ Ãß°¡Çϵµ·Ï ÇÏÀÚ: ________________________________________________________________ ntotal = gtk_text_get_length( (GtkText *)gTextArea ); /* ÅؽºÆ® ȹµæ */ text_value = gtk_editable_get_chars( (GtkEditable *)gTextArea, 0, ntotal ); /* ÅؽºÆ® ¸ðµÎ Áö¿ì±â */ gtk_editable_delete_text( (GtkEditable *)gTextArea, 0, ntotal ); gtk_text_insert( (GtkText *)gTextArea, gdk_font, NULL, NULL, text_value, ntotal ); g_free( text_value ); ________________________________________________________________ ÆùÆ® º¯°æÈÄÀÇ ½ÇÇàÈ­¸éÀº ´ÙÀ½°ú °°´Ù. ÆùÆ® º¯°æ ÈÄÀÇ ½ÇÇàÈ­¸é ÀÌÈÄ¿¡ ÀԷµǴ ¸ðµç ÅؽºÆ®°¡ ÁöÁ¤µÈ ÆùÆ®·Î µð½ºÇ÷¹À̵ȴÙ. ´Ü ÇÑ°¡Áö ¹®Á¦´Â Á¤È®ÇÑ threshold °ªÀº ¸ð¸£°ÚÁö¸¸ Ä¿´Ù¶õ ÆùÆ®(¿¹: 72pt)·Î µð½ºÇ÷¹ÀÌ°¡ ¾ÈµÈ´Ù. 3.6. °³¹ß ¿©¼¸¹ø° ´Ü°è - »óŹ٠Á¦¾î »óŹٴ GLADE ·Î ºÙÀ̸é GtkStatusbar ¶ó´Â À§Á¬ÀÌ »ç¿ëµÈ´Ù. ¿©±â¿¡ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ·Á¸é guint gtk_statusbar_push(GtkStatusbar *statusbar, guint context_id, const gchar *text); ¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î¼­ ¸¶¿ì½º°¡ Åø¹Ù ¹öÆ° Áß Open ¹öÆ° À§¿¡ ÀÖÀ» ¶§ »óŹٿ¡ "ÆÄÀÏ Àбâ" ¶ó´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇغ¸ÀÚ. ±×¸®°í ¸¶¿ì½º°¡ ÀÌ ¹öÆ°À» ¶°³¯ ¶§ »óŹٿ¡¼­ ¸Þ½ÃÁö¸¦ Áö¿ìµµ·Ï ÇÏÀÚ. ¿ì¼± ÇØ¾ß ÇÒÀÏÀÌ ¸î°¡Áö ÀÖ´Ù. ù¹øÀç À§ÀÇ push ÇÔ¼öÀÇ Ã¹¹ø° ÆĶó¹ÌÅ͸¦ Àü¿ªº¯¼ö·Î °ü¸®ÇØ¾ß ÇÑ´Ù. ±×·²·Á¸é ´ÙÀ½°ú °°ÀÌ interface.c ¿¡´Ù Àü¿ªº¯¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÏ°í, ______________________________________________________________________ GtkStatusBar *gStatusBar = NULL; ______________________________________________________________________ create_window1() ÇÔ¼ö³»¿¡¼­ »óŹ٠»ý¼º ÈÄ »ý¼ºµÈ °Í¿¡´Ù ÀÌ Àü¿ªº¯¼ö¸¦ Á¤ÀÇÇÏÀÚ (-- ¼ÖÁ÷È÷ ¾ê±âÇϸé Àü¿ªº¯¼ö¸¦ ¾È¾²°í »óŹÙÀÇ Æ÷ÀÎÅ͸¦ ȹµåÇÏ´Â ¹æ¹ýÀ» ã¾Æ¾ß ÇßÀ¸³ª °ÔÀ»·¯¼­ ³ªÁßÀ¸·Î ¹Ì·é´Ù. ´Ù¸¥ GNOME ±â¹Ý ¼Ò½ºµéÀ» º¸¸é ´ë°³ GLADE¸¦ ÀÌ¿ëÇÏÁö ¾ÊÀº µí º¸ÀÌ°í À̵éÀº Àü¿ªº¯¼ö°¡ ¾Æ´Ï¸é gnome »óŹٸ¦ ±×³É ¾²´Â °æ¿ì°¡ ¸¹¾Ò´Ù--) . ______________________________________________________________________ gStatusBar = statusbar1; ______________________________________________________________________ µÎ¹ø°·Î ÇØ¾ß ÇÒ ÀÏÀº ¸¶¿ì½º À̵¿À» ÁÖ½ÃÇؼ­ Open ¹öÆ° À§·Î ¿ÔÀ» ¶§ ¹ß»ýµÇ´Â enter ½Ã±×³ÎÀ» Àâ¾Æ ó¸®ÇÏ´Â ½Ã±×³Î Çڵ鷯¸¦ µî·ÏÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀº À§¿¡¼­ ¸¹ÀÌ ÇØ º¸¾ÒÀ¸¹Ç·Î »ý·«ÇÑ´Ù. ±×¸®°í ¸¶¿ì½º°¡ ÀÌ ¹öÆ°À» ¶°³¯ ¶§µµ ½Ã±×³ÎÀ» Àâ¾Æ ½Ã±×³Î Çڵ鷯¸¦ µî·ÏÇØ¾ß ÇÑ´Ù. À̰͵µ ¿ª½Ã »ý·«ÇÑ´Ù. µÎ°¡Áö ÀÏÀÌ ³¡³µ´Ù¸é ¸ÕÀú callbacks.c ¿¡ À§ÀÇ Àü¿ªº¯¼ö¸¦ extern À¸·Î ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÏÀÚ. ______________________________________________________________________ extern GtkStatusbar gStatusBar; ______________________________________________________________________ ±×¸®°í ¸¶¿ì½º enter ½Ã±×³Î Çڵ鷯¿¡´Ù ´ÙÀ½°ú °°Àº Äڵ带 ³ÖÀÚ. ______________________________________________________________________ gtk_statusbar_push( gStatusbar, 1, "ÆÄÀÏ ¿ÀÇÂ" ); ______________________________________________________________________ ±×¸®°í leave ½Ã±×³Î Çڵ鷯¿¡´Ù ´ÙÀ½°ú °°Àº Äڵ带 ³ÖÀÚ. ______________________________________________________________________ gtk_statusbar_pop( gStatusbar, 1 ); ______________________________________________________________________ ½ÇÇà ÈÄ »óŹٿ¡ ¸Þ½ÃÁö°¡ ¶ß´Â ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù: ½ÇÇàÈÄ »óŹ٠¸ð½À 4. ¸¶¹«¸® ºñ·Ï ´Ü¼øÇϳª¸¶ ¿ì¸®´Â GLADE¸¦ °¡Áö°í¼­ ÅؽºÆ® ¿¡µðÅ͸¦ ¸¸µé¾î º¸¾Ò´Ù. ¾î¶²°¡? À©µµ¿ìÁîÀÇ ºñÁÖ¾ó ½ºÆ©µð¿À¸¸Å­ ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. ±×·¯³ª ´Ù¼Ò ¹ÌÁøÇÑ ºÎºÐµéÀÌ À־ ¿©±â¿¡ ±×°ÍÀ» Á¤¸®ÇÏ°íÀÚ ÇÑ´Ù. 4.1. GLADE ¿¡ ¾î¶² ±â´ÉÀÌ Ãß°¡µÇ¾î¾ß ÇÒ °ÍÀΰ¡? GLADE´Â À¯±âÀûÀÎ »ý¸íüó·³ ÁøÈ­ÇÏ°í ÀÖ´Â °³Ã¼ÀÌ´Ù. »ý¸íüÀ̹ǷΠ°è¼ÓµÇ´Â ½ÅÁø´ë»ç°¡ ÀÖ¾î¾ß ÇÏ´Â °Í ¾Æ´Ï°Ú´Â°¡? ³ª´Â ±×·± Àǹ̿¡¼­ ´ÙÀ½°ú °°ÀÌ GLADE°¡ °¡Á³À¸¸é ÇÏ´Â ±â´ÉµéÀ» »Ì¾Æ º¸¾Ò´Ù. ÀÌ ¹®¼­¸¦ º¸½Ã´Â ºÐµé Áß¿¡ GLADE¿¡ ÀÌ·± ±â´Éµé ÁßÀÇ ÀϺθ¦ Á¦°øÇÒ ¼ö ÀÖ´Â ±âȸ°¡ µÇ½Ã´Â ºÐµéÀÌ ¸¹¾ÒÀ¸¸é ÇÑ´Ù. µ¥ÀÌÅÍ º£À̽º ¿¬µ¿ ±â´É ÀÌ°ÍÀº ¸®´ª½º°¡ »ó¾÷ÀûÀ¸·Î È°¿ëµÇ±â À§Çؼ­ °¡Àå ÇÊ¿äÇÑ ±â´ÉÀÌ´Ù. ´Ù¸¥ RAD Åø¿¡¼­ Á¦°øÇÏ´Â °Íó·³ ODBC, JDBC µî°ú °°Àº ¿¬µ¿ ä³ÎÀÌ °ø±ÞµÇ¾î¾ß Çϸç, À̸¦ ¹ÙÅÁÀ¸·Î ÇÑ ´Ù¾çÇÑ µ¥ÀÌÅÍ º£À̽º Çڵ鸵 À§Á¬µéÀÌ °ø±ÞµÇ¾î¾ß ÇÒ °ÍÀÌ´Ù. ±×·¡ÇÈ ±â´É µ¿¿µ»óÀ̳ª Á¤Áö ¿µ»óÀ» ó¸® ¹× º¸¿©ÁÖ´Â À§Á¬ÀÌ Ãß°¡µÇ¾úÀ¸¸é ÇÑ´Ù. Åë½Å ¹× ÀÎÅÍ³Ý ±â´É ½Ã¸®¾ó (-- ¹°·Ð socket Àº Áö¿øÇÑ´Ù--) ±×¸®°í ´õ ³ª¾Æ°¡ ÀÎÅͳݱîÁö À̵éÀ» ó¸®ÇÏ°í º¸¿©ÁÖ´Â À§Á¬À» Ãß°¡µÇ¾úÀ¸¸é ÇÑ´Ù. ³í¿ÜÀÇ ¾ê±âÁö¸¸ GTK ÀÇ ¾Æų·¹½º°ÇÀº ¾ÆÁ÷ ÇѱÛÈ­¶ó°í º»´Ù. ¸ðµç GTK ¶óÀ̺귯¸® ÇÔ¼öµé¾È¿¡¼­ ÇѱÛÈ­°¡ Á¶¼ÓÈ÷ ÀÌ·ç¾îÁö±â¸¦ ¹Ù¶ó°í ³ªµµ °Å±â¿¡ µ¿ÂüÇÒ ¼ö ÀÖ´Â ±âȸ°¡ ÁÖ¾îÁø´Ù¸é Âü ÁÁ°Ú´Ù.