GLADE¸¦ »ç¿ëÇÑ ¸®´ª½º µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß
GLADE¸¦ »ç¿ëÇÑ ¸®´ª½º µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß
March 29th, 2000, ÃÖÁ¾ °»½Å : May 15th, 2000.
GLADE¶õ GNU General Public License(GPL)À» µû¸£´Â GTK+ User
Interface BuilderÀÌ´Ù. ½±°Ô ¾ê±âÇϸé GTK+¶ó´Â
¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ¿© GUI »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ ¸¸µå´Â RAD(Rapid
Application Development) ÅøÀÌ´Ù.
ÀÌ°ÍÀÌ ¹«¾ùÀÎÁö ±×¸®°í À̸¦ ¾î¶»°Ô ±¸ÀÔ/¼³Ä¡ÇÏ´ÂÁö ±×¸®°í Á¶±×¸¸
¾îÇÃÄÉÀÌ¼Ç »ùÇÃÀÎ ÅؽºÆ® ¿¡µðÅ͸¦ °³¹ßÇÏ´Â ±¸Ã¼ÀûÀÎ ´Ü°èµéÀÌ ¾î¶»°Ô
µÇ´ÂÁö ¸®´ª½º ȯ°æÇÏ¿¡¼, ¼Ò°³ ÇÏ°íÀÚ ÇÏ´Â °ÍÀÌ ÀÌ
¹®¼ÀÇ ¸ñÀûÀÌ´Ù. ±×¸®°í GLADE°¡ ºÎÁ·ÇÑ ºÎºÐµé¿¡ ´ëÇÑ ³»¿ëÀ» ´ã°í ÀÖ´Ù. ÀÌ ¹®¼¿¡ ´ëÇÑ Á¶¾ð/ºñÆÇ/¹®ÀÇ°¡ ÀÖÀ¸½Å ºÐÀº À̸ÞÀÏ·Î
¿¬¶ôÀ» Áֽñ⠹ٶõ´Ù. ´ÙÀ½ ¹öÀüÀº Á» ´õ ±í¼÷ÇÑ ³»¿ëÀ» ´Ù·ç¾îº¸µµ·Ï ÇÏ°Ú´Ù.
GLADE ´Â ´Ù¸¥ À©µµ¿ìÁî(Windows
NT/9x¸¦ ¾ÕÀ¸·Î ÀÌ·¸°Ô ºÎ¸£°Ú´Ù)Visual Studio¿Í ¸¹Àº ºÎºÐÀÌ
À¯»çÇϸç Widget Template Palette(À©µµ¿ìÁî ¿ë¾î·Î ÇÑ´Ù¸é ControlÂë¿¡
ÇØ´çÇÏ°Ú´Ù) ÅÛÇø®Æ® ÆÈ·¹Æ®¿¡ ÀÖ´Â À§Á¬µéÀ» µå·¡±× ¾Ø µå·ÓÀ¸·Î
GUI Æû°ú ±× À§ÀÇ GUI °´Ã¼µéÀ» »ý¼ºÇÏ°í À̵éÀÇ ÇÁ·ÎÆÛƼµéÀ» Á¶Á¤ÇÏ°í
½Ã±×³Î Çڵ鷯(À©µµ¿ìÁî·Î ÇÑ´Ù¸é ¸Þ½ÃÁö ¸Ê ÇÔ¼ö) µî·Ï/»èÁ¦/º¯°æÇÏ¿©
C, C++ ¼Ò½º(C++ÀÇ °æ¿ì addonÀÎ glade--°¡ ÇÊ¿ä)¸¦ »ý¼ºÇÒ ¼ö
ÀÖ´Â ÅëÇÕ °³¹ß ȯ°æÀÌ´Ù.
¾ÕÀ¸·Î C ¼Ò½º¸¦ »ý¼ºÇÏ´Â °Í¿¡¸¸ ÃÐÁ¡À» ¸ÂÃç¼ ¾ê±âÇÏ°Ú´Ù.
Source¿Í Binary
GLADEÀº ÇöÀç 0.5.7¹öÀü±îÁö releaseµÇ¾úÀ¸¸ç °ø½Ä web site´Â
http://glade.pn.orgÀÌ´Ù.
´ÙÀ½ ±×¸²
GLADE °ø½Ä Ȩ »çÀÌÆ®Àº
GLADE°ø½Ä Ȩ »çÀÌÆ® ¸ð½ÀÀÌ´Ù.
ÀÌ°÷¿¡¼ °¡Àå ÃÖ±Ù ¹öÀüÀÇ ¼Ò½º¸¦ ´Ù¿î·ÎµåÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ°÷¿¡´Â ¹Ì¸®
¸¸µé¾îÁø binary¸¦ ÆÑŰ¡ÇÑ RedHat RPM, Debian, Slackware, NetBsd
packageµéµµ ¸¶·ÃµÇ¾î ÀÖ´Ù. ±ÞÇϽŠºÐÀº ÀÌ·± binaryÀÇ ÆÑŰ¡À» ¼±ÅÃÇÒ
¼öµµ ÀÖ°Ú´Ù.
¹®¼
¾ÆÁ÷ °ø½Ä ¹èÆ÷µÇ´Â ¹®¼´Â ¾ø´Ù. ±×·¯³ª ´ÙÀ½°ú °°Àº ³»¿ëµéÀ» ÂüÁ¶ÇÒ ¼ö
ÀÖ°Ú´Ù:
¼³Ä¡¸¦ À§Çؼ ÇÊ¿äÇÑ °Íµé(requirements)
GLADE¸¦ ¼³Ä¡ÇÏ·Á¸é ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÇÊ¿äÇÏ´Ù.
binary package ¼³Ä¡
RPM µî°ú °°Àº binaryÇüÅÂÀÇ ÆÑÅ°Áö´Â ±× ¼³Ä¡°¡ ¿ëÀÌÇÏ´Ù. ¿¹¸¦ µé¾î¼
RPMÀº ´ÙÀ½°ú °°ÀÌ ¼³Ä¡ÇÑ´Ù:
rpm -Uvh glade-0.5.7-2.i386.rpm
¼Ò½º·Î ¼³Ä¡
¼Ò½º·Î ¼³Ä¡Çϱâ À§Çؼ´Â automake 1.4¿Í autoconf 2.13ÀÌ ÇÊ¿äÇÏ´Ù. À̵éÀº
´ëºÎºÐÀÇ linux¿¡ ¼³Ä¡µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ¾ø´Ù¸é ã¾Æ¼ ¼³Ä¡ÇØÁÖÀÚ. ±×¸®°í
¼Ò½º·Î ¼³Ä¡ÇÏ´Â °ÍÀº ´ÙÀ½°ú °°ÀÌ, ¸®´ª½º ¼Ò½º ¼³Ä¡ÀÇ ÀüÇüÀûÀÎ ¹æ¹ýÀ»
µû¸£¸ç, ±×·¸°Ô ¾î·Á¿î °ÍÀÌ ¾Æ´Ï´Ù:
- ¸Ç¸ÕÀú ÇØ¾ß ÇÒ ÀÏÀº ´Ù¿î ·Îµå ¹ÞÀº ÆÄÀÏÀÇ ¾ÐÃàÀ» Ǫ´Â °ÍÀÌ´Ù.
[simje@rurulala /usr/src/local/gtk]$ tar xvzf glade-0.5.5.tar.gz
- ´ÙÀ½Àº »õ·Î »ý¼ºµÈ µð·ºÅ丮·Î À̵¿Çؼ 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
- ´ÙÀ½Àº makeÀ» ½ÇÇà½ÃÄÑ ÄÄÆÄÀÏÇÏ´Â °ÍÀÌ´Ù.
[simje@rurulala /usr/src/local/gtk/glade-0.5.5]$ make
- ÄÄÆÄÀÏÀÌ ³¡³ª¸é ´ÙÀ½°ú °°ÀÌ ¼³Ä¡ÇÑ´Ù.
[simje@rurulala /usr/src/local/gtk/glade-0.5.5]$ su -c "make install"
¼³Ä¡°¡ Á¦´ë·Î µÇ¾ú´Â°¡? ±×·¸´Ù¸é ½ÇÇàÀ» Çغ¸ÀÚ. ÀÌ»ó¾øÀÌ ½ÇÇàµÇ¾ú´Ù¸é
ÀÌÁ¦ ´Ü¼øÇÑ ¿¹Á¦ °³¹ßÀ» ÅëÇؼ GLADE¸¦ ÀÍÇô º¸µµ·Ï ÇÏÀÚ:
±×³É µå·¡±× ¾Ø µå¶øÀ¸·Î °³¹ßÇÒ ¼öµµ ÀÖÁö¸¸ ¿ÜÇüÀ» ¸¸µå´Â °Íº¸´Ù Á» ´õ
±í¼÷È÷ µé¾î°¥·Á¸é ´ÙÀ½°ú °°Àº »çÀü Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù:
¶óÀ̺귯¸®
GLADE°¡ GUI¸¦ ¸¸µé±â À§Çؼ ¸¹ÀÌ »ç¿ëÇÏ´Â ¶óÀ̺귯µé·Î½á ´ÙÀ½°ú °°Àº
°ÍµéÀÌ ÀÖ´Ù:
- GTK+
-
ÀÌ°ÍÀº °¡Àå ±âÃÊÀûÀÎ ±â¹Ý Áö½ÄÀ¸·Î½á ´ÙÀ½°ú
°°Àº ¹®¼¸¦ ÅëÇؼ ½±°Ô ÀÚ°¡ ÇнÀ ÇÒ ¼ö ÀÖ´Ù
http://kldp.org/KoreanDoc/html/GtkTutorial/GtkTutorial.html.
±×·¯³ª Á» ´õ ÀÚ¼¼È÷ µé¿©´Ù º¸°Å³ª library APIµéÀ» º¸·Á¸é ´ÙÀ½ »çÀÌÆ®¸¦
ã¾Æ¾ß ÇÒ °ÍÀÌ´Ù.
http://www.gtk.org. ÀÌ°÷¿¡´Â ¸¹Àº ¹®¼µé°ú
·¹ÆÛ·±½ºµéÀÌ ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â
gtk_
xxx, ¸Þ¸ð¸® °´Ã¼´Â Gtk
Xxx,
¸ÅÅ©·Î´Â GTK_
XXX
°ú °°Àº ÇüŸ¦ °¡Áø´Ù.
- GDK
-
XlibÀÇ ²À´ë±â¿¡ ÀÖ´Â wrapper library·Î °í¾ÈµÈ
¶óÀ̺귯¸®ÀÌ´Ù. ÀÌ°ÍÀº GTK+°¡ ÇȽº¸ÊÀ̳ª ÆùÆ® Ä÷¯µîÀ» ´Ù·ê ¶§ »ç¿ëµÇ´Â
°ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ¹®¼µµ
http://www.gtk.org¿¡ °¡¸é ãÀ» ¼ö
ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â gdk_
xxx,
¸Þ¸ð¸® °´Ã¼´Â Gdk
Xxx, ¸ÅÅ©·Î´Â
GDK_
XXX °ú °°Àº ÇüŸ¦
°¡Áø´Ù.
- Glib
-
ÀÌ°ÍÀº ¸Þ¸ð¸® ±¸Á¶(¸µÅ©µå ¸®½ºÆ®, ¸®½ºÆ®, Çؽ¬, ij½¬,
Æ®¸®)³ª ŸÀ̸Ó, ÅؽºÆ® Ãâ·Â°ú °°Àº °ÍÀ» ´Ù·ê ¶§ »ç¿ëµÇ´Â °ÍÀÌ´Ù. ÀÌ¿¡
´ëÇÑ ¹®¼µµ
http://www.gtk.org¿¡ °¡¸é ãÀ» ¼ö
ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® °´Ã¼µéÀº ´ë°³ ÇÔ¼ö´Â g_
xxx, ¸Þ¸ð¸®
°´Ã¼´Â g
xxx, ¸ÅÅ©·Î´Â G
XXX
°ú °°Àº ÇüŸ¦ °¡Áø´Ù.
À̸¦ ±¸Á¶ÈÇؼ ±×¸²À¸·Î ³ªÅ¸³½´Ù¸é ´ÙÀ½°ú °°´Ù(
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·Î ¸¸µç ¾îÇø®ÄÉÀÌ¼Ç ³»ºÎ °èÃþ ±¸Á¶°ú °°Àº ³»ºÎ
°èÃþ ±¸Á¶¸¦ °®´Â´Ù.
¼¼ °³ÀÇ µðÆúÆ® À©µµ¿ì
GLADE¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°Àº ¼¼°³ÀÇ Ã¢ÀÌ µðÆúÆ®·Î ¶á´Ù:
- ÁÖ À©µµ¿ì(main glade window)
-
ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ®¸¦ ±¸¼ºÇÏ´Â ¸ðµç âµé°ú ´ëÈ»óÀÚµéÀ» ´ã°í ÀÖ´Ù. À̵é ÁßÀÇ
Çϳª¸¦ ´õºí Ŭ¸¯Çϸé ÀÌ¿¡ ´ëÀÀÇϴ âÀ̳ª ´ëÈ»óÀÚ ÅÛÇø®Æ®°¡ ¶á´Ù.
±×¸®°í ÀÌ¿¡ ´ëÀÀÇϴ âÀ̳ª ´ëÈ»óÀÚÀÇ ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï
ÇÁ·ÎÆÛƼ ¿¡µðÅÍ °´Ã¼°¡ ÀÌ°ÍÀ¸·Î º¯°æµÈ´Ù.
- À§Á¬ ÆÈ·¹Æ® À©µµ¿ì(widget palette window)
-
ÀÌ°ÍÀº °¡´ÉÇÑ ¸ðµç À§Á¬µéÀÇ µé¾î ÀÖ´Â ÆÈ·¹Æ®ÀÌ´Ù. »õ·Î¿î âÀ̳ª ´ëÈ
»óÀÚ¸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÏ·Á¸é ÆÈ·¹Æ®¿¡ Àִ âÀ̳ª ´ëÈ»óÀÚ¸¦ Ŭ¸¯Çϱ⸸
ÇϸéµÈ´Ù. ÀÌ·¸°Ô »ý¼ºµÈ âÀ̳ª ´ëÈ»óÀÚ¿¡ À§Á¬À» ºÙÀÌ·Á¸é À§Á¬À»
Ŭ¸¯Çؼ ¼±ÅÃÇÑ ´ÙÀ½ ´õÇÏ°íÀÚ ÇÏ´Â À§Ä¡¿¡ Ŭ¸¯ÇÏ¸é µÈ´Ù.
- ¼Ó¼º ÆíÁý±â À©µµ¿ì(property editor window)
-
ÀÌ°ÍÀº âÀ̳ª ´ëÈ»óÀÚ, ±×¸®°í À̵é À§¿¡ ÀÖ´Â À§Á¬µéÀÇ Å©±â ¶Ç´Â ÅؽºÆ®
µî°ú °°Àº ¼Ó¼ºµéÀ» º¯°æÇÒ ¶§ »ç¿ëÇÑ´Ù. ÁÖ À©µµ¿ì¿¡ Àִ âÀ̳ª
´ëÈ»óÀÚ¸¦ Ŭ¸¯ÇÏ¿©, ¶Ç´Â âÀ̳ª ´ëÈ»óÀÚ À§¿¡ ÀÖ´Â À§Á¬À» Ŭ¸¯Çؼ,
ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÒ ´ë»ó °´Ã¼¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.
±âŸ º¸Á¶ âµé
GLADE´Â ´ÙÀ½°ú °°Àº º¸Á¶ âµéÀ» °¡Áö°í ÀÖÀ¸¸ç ÁÖ·Î ¸Þ´º¸¦
ÅëÇؼ Á¢±ÙµÉ ¼ö ÀÖ´Ù:
- ¸Þ´º ÀÛ¼º À©µµ¿ì
-
ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ® â¿¡ ¸Þ´º¸¦ Ãß°¡ÇÑ °æ¿ì ÀÌ ¸Þ´º¸¦ Ŭ¸¯ÇÑÈÄ ¼Ó¼º
ÆíÁý±â À©µµ¿ì¿¡ ³ªÅ¸³ª´Â edit menu ¹öÆ°À» ´©¸£¸é ³ªÅ¸³´Ù.
ÀÌ°ÍÀ» ÅëÇؼ ¿©·¯ºÐÀº ÇÁ·ÎÁ§Æ®ÀÇ ¸Þ´º¸¦ ÆíÁýÇÒ ¼ö ÀÖ´Ù.
ÀÌ°÷¿¡¼ »ý¼ºµÈ ¸Þ´º´Â ¼Ò½º¿¡ ÀÚµ¿À¸·Î µé¾î°¡°Ô µÈ´Ù.
add¸¦ ´©¸¥ ÈÄ¿¡ Stock Item ÄÞº¸¹Ú½º¸¦ ´·¯¼ ¹Ì¸®
Á¤ÀǵÈ, ±×¸®°í ³Î¸® ¾²ÀÌ´Â ¸Þ´º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀÌ ¶§ Handler°¡ ÀÌ¿¡
¸ÂÃç Á¤ÇüÈµÈ ²Ã·Î ³ªÅ¸³ª°Ô µÇ¾î ÀÖ´Â µ¥, ÇѱÛÈµÈ ¹öÀüÀÇ °æ¿ì Çѱ۷ΠµÈ
ÇÔ¼ö°¡ Handler°¡ µÇ¾î¼ ¼Ò½º¿¡ ±úÁö°Å³ª ÇÑ±Û ºÎºÐÀÌ
¾ð´õ¶óÀÎÀ¸·Î ä¿öÁø ÇÔ¼ö°¡ ³ªÅ¸³ª°Ô µÈ´Ù. °í·Î Handler ºÎºÐÀº
µÇµµ·ÏÀÌ¸é ¿µ¹®À¸·Î ¹Ù²ã ÁÖ´Â °ÍÀÌ ÁÁ°Ú´Ù.
- À§Á¬ Æ®¸®(widget tree)
-
ÀÌ°ÍÀº ÇÁ·ÎÁ§Æ®¿¡ »ç¿ëµÈ ¸ðµç À§Á¬µéÀÇ Æ®¸® ±¸Á¶¸¦ º¸¿©ÁÖ´Â À©µµ¿ìÀÌ´Ù.
ÀÌ°ÍÀº ÁÖ À©µµ¿ìÀÇ View/Show WidgetTreeÀ» ¼±ÅÃÇؼ º¼ ¼ö ÀÖ´Ù.
¿ì¸®°¡ ¸¸µé°íÀÚ ÇÏ´Â ÅؽºÆ® ¿¡µðÅÍ´Â ´Ü¼øÇÑ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ÇÀ¸·Î½á
¿ì¼± À©µµ¿ìÁîÀÇ notepad¸¦ ´à¾Ò´Ù°í »ý°¢ÇÏ½Ã¸é µÈ´Ù. ±×·¸´Ù¸é ÀÌ ¿¡µðÅÍ°¡
Áö¿øÇØ¾ß ÇÏ´Â ±×·¡¼ ±¸ÇöÇØ¾ß ÇÏ´Â ±â´Éµé ¸®½ºÆ®¸¦ »ìÆ캸ÀÚ:
- ÆíÁýâ¿¡ ¹®ÀÚ ÀÔ·Â, ¼±ÅÃ, º¹»ç, »èÁ¦, ºÙÀ̱⠱â´É
- ÆíÁýµÈ ³»¿ëÀ» ÀúÀåÇÏ´Â ±â´É
- ÆÄÀÏÀ» Àоî¿Í ÆíÁýâ¿¡ µð½ºÇ÷¹ÀÌ ÇÏ´Â ±â´É
- Á¾·á ±â´É
- about ´ëÈ »óÀÚ ±â´É
GLADE¸¦ ½ÇÇà½ÃÅ°¸é À§¿¡¼ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ ¼¼°³ÀÇ Ã¢ÀÌ ¶á´Ù.
¿©±â¿¡¼´Â ÀÌ·± »óȲ¿¡¼ ´ÙÀ½°ú °°Àº ´Ü°èº° Á¢±ÙÀ¸·Î À§¿¡¼ Á¤ÀǵÈ
±â´ÉÀ» °¡Áø ÅؽºÆ® ¿¡µðÅ͸¦ °³¹ßÇÏ´Â ¸ð½ÀÀ» »ìÇǵµ·Ï ÇÑ´Ù:
- ¹ÙÅÁ À©µµ¿ì - »ý¼º
-
¿ì¼± ÅؽºÆ® ¿¡µðÅÍÀÇ ¹ÙÅÁÀÌ µÇ´Â âÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ±×·²·Á¸é À§Á¬
ÆÈ·¹Æ® À©µµ¿ì¿¡¼ ´ÙÀ½ ±×¸²ÀÇ ¿ÞÂÊ »ó´ÜÀÇ À§Á¬À» Ŭ¸¯Çؼ ¸¸µé ¼ö ÀÖ´Ù.
±×·¯¸é ´ÙÀ½ ±×¸²°ú °°Àº ¹ÙÅÁ âÀ» ¾ò´Â´Ù. ÀÌ ±×¸²À» ÀÚ¼¼È÷ º¸¸é »ç¼±
°ÝÀÚµéÀÌ ÃÎÃÎÈ÷ ȸ»öÀ¸·Î ±×·ÁÁ® ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ·± Ç¥½Ã´Â
¾ÕÀ¸·Îµµ ³ª¿À°ÚÁö¸¸ ¹«¾ð°¡¸¦ ºÙÀÏ ¼ö ÀÖ´Â °÷À̶ó´Â ¾ê±âÀÌ´Ù. ¸¶Ä¡ Á¢Âø½Ä
¾Ù¹üÀÇ ºñ´ÒÀ» µé¾î ¿Ã¸®¸é ³ªÅ¸³ª´Â Á¢ÂøÁ¦ »ç¼±°ú °°Àº °ÍÀ̶ó°í »ý°¢ÇÒ ¼ö
ÀÖ°Ú´Ù.
ÀÌÁ¦´Â ¿©±â¿¡´Ù ÇÊ¿äÇÑ À§Á¬µéÀ» ºÙ¿©¾ß µÇ°Ú´Ù. ¸ÕÀú ÇÊ¿äÇÑ °ÍµéÀ»
»ý°¢Çغ¸¸é ¸Þ´º, Åø¹Ù, ÅؽºÆ® ¹Ú½º, ±×¸®°í »óÅ ¹Ù°¡ ÀÖ°Ú´Ù. ÀÌ°ÍÀ» ±×³É
Çϳª¾¿ Çϳª¾¿ ºÙÀÏ ¼ö ÀÖÀ»±î. ¹Ù·Î À§ÀÇ ±×¸²À» ÀÚ¼¼È÷ º¸¸é ºÙÀÏ ¼ö ÀÖ´Â
Á¢ÂøÁ¦ ºÎºÐÀº Ä¿´Ù¶þÁö¸¸ ±¸È¹ÀÌ ³ª´©¾îÁ® ÀÖÁö ¾Ê´Ù. Áï ÇϳªÀÇ
°´Ã¼¸¸À» ºÙÀÏ ¼ö ÀÖ´Ù´Â ¾ê±â°¡ µÈ´Ù. ±×·¯¹Ç·Î ¾î¶»°Ô ÇØ¾ß ÇÒ ±î?
- ¹ÙÅÁ À©µµ¿ì - ¸Þ´º¹Ù À§Á¬ ºÙÀ̱â
-
´äÀº À§¿¡¼ ¾ð±ÞÇÑ ¹Ù ÀÖ´Â, ´ÙÀ½ ±×¸²°ú °°Àº ¼öÁ÷ ¹Ú½º¶ó´Â
À§Á¬À» »ç¿ëÇÏ¸é µÈ´Ù. ÀÌ°ÍÀ» ºÙÀÌ¸é ±× ±× À§¿¡ ¿©·¯°³ÀÇ Á¢Âø °¡´ÉÇÑ
±¸È¹ÀÌ »ý±â°Ô µÇ¾î ¿©·¯°¡Áö À§Á¬µéÀ» ºÙÀÏ ¼ö ÀÖ°Ô µÈ´Ù.
ÀÌ°ÍÀ» Ŭ¸¯ÇÏ¸é ¸¶¿ì½º°¡ ½ÊÀÚ°¡ ¸ð¾çÀ¸·Î ¹Ù²ï´Ù. ÀÌ ¶§ ÀÌ ¸¶¿ì½º Ä¿¼¸¦
¹ÙÅÁ À©µµ¿ì¿¡ ´ë°í Ŭ¸¯ÇÏ¸é ´ÙÀ½ ±×¸²°ú °°ÀÌ ¸î °³ÀÇ ¼öÁ÷ ¹Ú½º¸¦ ¸¸µé
°ÍÀΰ¡¸¦ ¹¯´Â ´ëÈ»óÀÚ°¡ ³ªÅ¸³´Ù.
¿©±â¼ ¿ì¸®´Â 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¸¦ ¼±ÅÃÇغ¸ÀÚ.
±×·¯¸é ´ÙÀ½ ±×¸²°ú °°Àº Project Options¶ó´Â ´ëÈ»óÀÚ°¡ ¶á´Ù.
¿©±â¿¡ ÀûÀýÇÑ °ªÀ» ÀÔ·ÂÇÏ°í OK¸¦ ´©¸£¸é ÇÁ·ÎÁ§Æ®°¡ ÀúÀåµÈ´Ù. ´Ü, »ý¼ºµÉ
¾ð¾î·Î´Â C¸¦ ¼±ÅÃÇϵµ·Ï ÇÏÀÚ.
±×¸®°í À§¿¡¼ º» File ¸Þ´ºÀÇ Build Source CodeÀ»
¼±ÅÃÇÏ¸é ´«¿¡ º¸ÀÌÁö ¾ÊÁö¸¸ ¼Ò½º°¡ »ý¼ºµÈ´Ù. À§ÀÇ ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÏ´Â
°÷¿¡¼ ÁöÁ¤ÇÑ µð·ºÅ丮¿¡ °¡º¸¸é src
¶ó´Â µð·ºÅ丮°¡ ÀÖ´Â µ¥
¿©±â¿¡ ¸ðµç ¼Ò½º°¡ »ý¼ºµÈ´Ù. ¾Æ½±°Ôµµ ¹Ù·Î ¹º°¡¸¦ Ŭ¸®Çؼ »ý¼ºµÈ ¼Ò½º¸¦
°¡Áö°í ½ÇÇà ÆÄÀÏÀ» ¸¸µå´Â ¹æ¹ýÀº ¾ÆÁ÷ ¾ø´Ù. ±×·¡¼ ¾î¿¼ö ¾øÀÌ ½©À»
ÅëÇؼ ½ÇÇà ÆÄÀÏÀ» ¸¸µé¼ö¹Û¿¡ ¾ø´Ù. ÇÁ·ÎÁ§Æ®ÀÇ ·çÆ® µð·ºÅ丮¸¦ ls·Î
Ãâ·ÂÇغ¸°í ¿©±â¿¡ ¸¶·ÃµÈ autogen.sh
¸¦ ½ÇÇàÇϸé ȯ°æ ¼³Á¤ÀÌ
ÀÌ·ç¾îÁø´Ù.
±×¸®°í ³ª¼ make
À» ½ÇÇàÇÏ¸é ¿øÇÏ´Â ½ÇÇà ÆÄÀÏÀ» ¾òÀ» ¼ö ÀÖ´Ù.
make
ÀÇ °á°ú´Â src
¿¡ ÇÁ·ÎÁ§Æ® À̸§À» °¡Áø ½ÇÇà ÆÄÀÏÀÌ
»ý±â´Â °ÍÀÌ´Ù. ÀÌ°ÍÀ» ½ÇÇàÇÑ °á°ú´Â ´ÙÀ½°ú °°´Ù.
- ¹ÙÅÁ À©µµ¿ì - ½ÇÇà ÈÄ Á×À̱â
-
ÀÌÁ¦ Á¾·áÇغ¸ÀÚ. º¸Åë ÇϵíÀÌ ¿À¸¥ÂÊ À§¿¡ ÀÖ´Â ´Ý±â ¹öÆ°À» ´·¯µµ ¿ì¸®°¡
¸¸µç ¾îÇø®ÄÉÀ̼ÇÀº Á×Áö ¾Ê´Â´Ù. ¾Æ»Ô»ç. ¿ì¸®´Â ºÒ»ç½ÅÀ» ¸¸µé¾î³½
°ÍÀÌ´Ù. ÀÌÁ¦ ÀÌ ºÒ»ç½ÅÀ» Á׿©º¸µµ·Ï ÇÏÀÚ. ±×·²·¯¸é ÀÌÀü¿¡ ¾ê±âÇÑ
GTK Æ©Å͸®¾ó ¼½¼Ç¿¡ ÀÖ´Â ½Ã±×³ÎÀ» ¾Ë¾Æ¾ß ÇÏ°í °¡Àå ±âº»ÀûÀÎ
delete_event¶ó´Â ½Ã±×³ÎÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ÀÌ°ÍÀº ´Ù¸¥ °ÍÀÌ ¾Æ´Ï°í
½ÇÇà ÆÄÀÏÀÇ close ¸Þ´º
ÀÌ°ÍÀº â°ü¸®ÀÚ°¡ ºÙÀÎ ¸Þ´º¸¦
¸»ÇÑ´Ù. ÀÌ°ÍÀº ¿ì¸®°¡ ¸¸µç ¾îÇø®ÄÉÀ̼ÇÀÇ ¸Þ´º¿Í ´Ù¸£´Ù
¸¦
¼±ÅÃÇϰųª title bar¿¡¼
´Ý±â¸¦ ¼±ÅÃÇϸé X À©µµ¿ì °ü¸®ÀÚ°¡ ½ÇÇà ÆÄÀÏ¿¡°Ô ÀüÇÏ´Â À̺¥Æ®ÀÌ´Ù.
ÀÌ°ÍÀ» ¹Þ¾Æ¼ ó¸®ÇÏ·Á¸é ´ÙÀ½ ±×¸²°ú °°ÀÌ ¹ÙÅÁ À©µµ¿ìÀÇ ÇÁ·ÎÆÛƼ
À©µµ¿ìÀÇ ¿©·¯ Åǵé Áß¿¡¼ ½Ã±×³Î ÅÇ¿¡¼ ½Ã±×³Î Çڵ鷯 À̸§°ú ÇÔ²²
µî·ÏÇØÁÖ¾î¾ß ÇÑ´Ù.
±×·¯¸é ´ÙÀ½ ±×¸²°ú °°ÀÌ µî·ÏµÉ °ÍÀÌ´Ù.
¿©±â¼ ¿ì¸®´Â ÀÚµ¿À¸·Î ½Ã±×³Î Çڵ鷯 À̸§ÀÌ
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 ÀÇ ÀÛ¾÷ ´ë»óÀÌ µÇ´Â °´Ã¼¸¦ Æû, ¶Ç´Â ÅÛÇø´À̶ó°í
ºÎ¸£ÀÚ. ±×¸®°í
½ÇÁ¦ ½ÇÇàµÈ ÈÄÀÇ °á°ú´Â ±× °á°úÀÇ ¼Ó¼º´ë·Î ºÎ¸£±â·Î ÇÏÀÚ. ¿¹¸¦ µé¾î¼
¹ÙÅÁ À©µµ¿ì Æû ¿¡¼ ¹«¾ù ¹«¾ùÀ» ÀÛ¾÷ÇÏ¸é ¹ÙÅÁ À©µµ¿ì¿¡
¾î¶² ¾î¶² È¿°ú°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù¶ó´Â ½ÄÀ¸·Î Ç¥ÇöÇϱâ·Î ÇÏÀÚ.
¸¹Àº gnome ÇÁ·Î±×·¥µéÀº Ç¥ÁØÈµÈ ·è¾ØÇÊÀ» °®´Â´Ù. ÀÌ Áß¿¡¼µµ
¸Þ´º, Åø¹Ù, »óŹÙ, ±×¸®°í about ´ëÈ »óÀÚ°¡ µÎµå·¯Áø´Ù. ¹°·Ð ´Ù¸¥ °Íµµ
ÀÖ´Ù. ¿¹¸¦ µé¸é »ö»óÇ¥ ´ëÈ »óÀÚ, ÆÄÀÏ ¼±Åñâ(À©µµ¿ìÁîÀÇ File Open,
Save, Save As¿Í À¯»ç) µîÀÌ ±×°ÍÀÌ´Ù. ¿ì¸®´Â ¿©±â¼ about ´ëÈ »óÀÚ¸¦
¸¸µé°í ÀÌ°ÍÀ» ³Ö¾î º¸µµ·Ï ÇÏÀÚ.
- about ´ëÈ»óÀÚ - ´ëÈ»óÀÚ ¸¸µé±â
-
´ëÈ »óÀÚ¸¦ ¸¸µé ¶§ GTK+°¡ Á¦°øÇÏ´Â ´ëÈ»óÀÚ À§Á¬À» ±×´ë·Î
»ç¿ëÇؼ ±× À§¿¡ ´Ù¸¥ ¿©·¯ À§Á¬µéÀ» ºÙ¿©¼ ¸¸µé¾îµµ µÇ°í,
gnomeÀÌ Á¦°øÇÏ´Â ´ÙÀ½°ú °°Àº À§Á¬À» »ç¿ëÇÏ¿© ´õ ½±°Ô ¸¸µé ¼öµµ
ÀÖ´Ù. ¿ì¸®´Â ÀÌ°ÍÀ» ÅÃÇغ¸µµ·Ï ÇÏÀÚ.
ÀÌ°ÍÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°í °°Àº ´ëÈ»óÀÚ°¡ ³ªÅ¸³´Ù.
¿ì¸®´Â ÀÌ ¶§, °°ÀÌ º¯ÇÑ ÇÁ·ÎÆÛƼ À©µµ¿ìÀÇ Copyright,
Author, Comments, ±×¸®°í Logo¸¦ ¹Ù²Ù¾î¼ ÀÌ
about ´ëÈ»óÀÚ¸¦ ´ÜÀå½ÃÄÑ º¸µµ·Ï ÇÏÀÚ. ¸ÕÀú Copyright¿Í
Author, Comments´Â ´ÙÀ½ ±×¸²Ã³·³ º¯°æÇÑ´Ù.
½ÇÁ¦ ¶È°°ÀÌ Çغ¸½Ã¸é ¾Ë°ÚÁö¸¸ ÀÌµé ³»¿ëÀÌ ¸¹¾ÆÁö¸é ´ëÈ»óÀÚÀÇ Àüü Å©±â
µîÀÌ ÀÚµ¿À¸·Î ´Ã¾îµé¾ú´Ù ÁÙ¾îµé¾ú´Ù ÇÑ´Ù.
±×¸®°í ¸¶Áö¸·À¸·Î Logo¸¦ ÁöÁ¤Çغ¸µµ·Ï ÇÏÀÚ. ÀÌ·¸°Ô ÇÏ·Á¸é
Logo ¿·ÀÇ ÆíÁý¹Ú½º¿¡ Á÷Á¢ Æнº¸¦ ÀÔ·ÂÇصµ µÇ°í ±× ¿·¿¡ ÀÖ´Â
»ý·«ÇüÀ» Ŭ¸¯Çؼ ÆÄÀÏ ¼±Åà ´ëÈ»óÀÚ¸¦ ºÒ·¯ ÀÌ°ÍÀ» ÅëÇؼ ¼±ÅÃÇصµ µÈ´Ù.
ÀÚ ÀÌÁ¦ ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÑ´Ù.
- 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 ¹öÆ°À» ¼±ÅÃÇÑ µÚ ÇÁ·ÎÆÛƼ À©µµ¿ìÀÇ ½Ã±×³Î ÅÇ¿¡¼ À§¿Í
°°ÀÌ ½Ã±×³Î Çڵ鷯¸¦ µî·ÏÇÏÀÚ(´ÙÀ½ ±×¸² ÂüÁ¶). ±×¸®°í ³ª¼ ÀÌ Çڵ鷯
¾È¿¡ ¸Þ´º¿Í µ¿ÀÏÇÑ Äڵ带 ³Ö¾î ÁÖ¸é µÈ´Ù(¾Æ´Ï¸é °øÅë ÇÔ¼ö¸¦ ¸¸µé¾î À̸¦
È£ÃâÇصµ µÇ°í).
±×·±µ¥ ÀÌ °ÍÀÌ Á¦´ë·Î ½ÇÇàµÈ´Ù ÇÏ´õ¶óµµ ÀÌ»óÇÑ Á¡ÀÌ ÀÖ´Ù. Áï ¿ì¸®°¡
³Ö¾ú´ø ·Î°í°¡ Á¦´ë·Î Ãâ·ÂµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ¿Ö ±×·²±î?
GLADE´Â ¸¸µé¾îÁö´Â ¾îÇø®ÄÉÀ̼ÇÀÇ pixmap µð·ºÅ丮ÀÇ µðÆúÆ®¸¦
"/usr/share/pixmaps" ¾Æ·¡ ¾îÇø®ÄÉÀÌ¼Ç À̸§À¸·Î ¼³Á¤ÇÑ´Ù. Á¤È®ÇÏ°Ô
¸»Çϸé gnome-config --datadir
ÀÇ °á°ú°ªÀ»
¾ò¾î¼
ÀÌ°ÍÀº ´ë°³ "/usr/share" ÀÌ´Ù
¿©±â¿¡
"pixmaps" ¿Í ¾îÇø®ÄÉÀÌ¼Ç À̸§À» µ¡ºÙÀÎ °ÍÀÌ ·Î°í µî ±×¸² ÆÄÀÏÀÌ
ÀúÀåµÇ´Â À§Ä¡°¡ µÈ´Ù.
±×·¯¹Ç·Î »ç¿ëÀÚ°¡ º¹»ç¸¦ ÇϵçÁö ¾Æ´Ï¸é ·çÆ® ±ÇÇÑÀ¸·Î¼ make
install
ÇÏ¸é ·Î°í µî ±×¸² ÆÄÀϵéÀÌ À§ÀÇ µð·¹Å丮·Î
º¹»çÇÑ´Ù. ±×·¯¸é ¿©±â¿¡ ÀÖ´Â ÆÄÀÏÀÌ »ç¿ëµÇ¾î About ´ëÈ»óÀÚÀÇ ±×¸²ÀÌ
º¸ÀÌ°Ô µÉ °ÍÀÌ´Ù.
- about ´ëÈ»óÀÚ - ´ëÈ»óÀÚ ¾ø¾Ö±â
-
ÀÌ·¸°Ô Çؼ ¸¸µé¾îÁø about ´ëÈ»óÀÚ´Â »ç¿ëÀÚ°¡ ¸Þ´º³ª Åø¹Ù¸¦ ÅëÇؼ ¶ç¿ï
¼ö ÀÖ´Ù. ±×¸®°í ÀÌ ´ëÈ»óÀÚÀÇ È®ÀÎ ¹öÆ°À» ´©¸£¸é ¾ðÁ¦µçÁö ´ÝÀ» ¼ö ÀÖ´Ù.
¸ÕÀú ´ÙÀ½
ÆÄÀÏ ¼±Åà ´ëÈ»óÀÚ À§Á¬À»
"À§Á¬ À©µµ¿ì"-"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 ¹öÆ°À» Ŭ¸¯ÇÒ ¶§¸¶´Ù ´ÙÀ½°ú °°Àº ÆÄÀÏ ¼±Åà ´ëÈ»óÀÚ°¡ ³ª¿Ã
°ÍÀÌ´Ù.
ÀÚ ÀÌÁ¦´Â ÀÌ ´ëÈ »óÀÚ¿Í ÀÎÅÍÆäÀ̽º¸¦ ÇØ¾ß ÇÑ´Ù. »ç¿ëÀÚ°¡
È®ÀÎ ¹öÆ°À» ´©¸£¸é ÀÔ·ÂµÈ ÆÄÀÏÀ» °¡Á®¿À°í ´ëÈ»óÀÚ¸¦ Á¾·áÇϸç,
Ãë¼Ò ¹öÆ°À» ´©¸£¸é ±×³É ´ëÈ»óÀÚ¸¦ Á¾·áÇÏÀÚ.
ÀÚ ÀÌÁ¦ °¢ ¹öÆ° ½Ã±×³Î Çڵ鷯µéÀ» µî·ÏÇغ¸ÀÚ.
- ¹®Á¦ ¹× »çÀü Áö½Ä
-
- ¹ÙÅÁ À©µµ¿ì¿¡¼ »õ·Î¿î ´ëÈ»óÀÚ¸¦ À§ÀÇ ÄÚµåó·³ »ý¼ºÇÏ¿´´Â µ¥, ±× °á°ú
À§Á¬¿¡ ´ëÇÑ Á¤º¸, Áï À§Á¬ Æ÷ÀÎÅ͸¦ µû·Î ÀúÀåÇÏÁö ¾Ê¾Ò´Ù. ÀÌ °ÍÀ» ¾Ë¾Æ¾ß
¹ÙÅÁ À©µµ¿ì³ª Çڵ鷯¿¡¼ ´ëÈ»óÀÚ¸¦ ´Ý°Å³ª ¼±ÅÃµÈ ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦
¾ò¾î ¿Ã ¼ö ÀÖ´Ù. °á°úÀûÀ¸·Î ´ëÈ»óÀÚ¿¡ ´ëÇÑ Á¶ÀÛÀ» ó¸®ÇÒ ¶§,
Àü¿ªº¯¼ö ´Ù¸¥ ¹æ¹ýÀ» ÅëÇؼ ´ëÈ»óÀÚ Æ÷ÀÎÅ͸¦ ¾Ë¾Æ³»¾ß ÇÑ´Ù.
- ¼±ÅÃµÈ ÆÄÀÏÀº
gtk_file_selection_get_filename
(GTK_FILE_SELECTION(
widget_pointer)))
ÀÇ ¸®ÅÏ°ªÀÎ
¹®ÀÚ¿ÀÌ´Ù.
- gtk_signal_connect() ÇÔ¼ö·Î ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯¸¦ ¿¬°áÇÒ ¶§
¸¶Áö¸· ÆĶó¹ÌÅÍ·Î
void *
¸¦ ¸»ÇÏ´Â gpointer Çü °ªÀ» ÁÙ ¼ö ÀÖ°í
¹Þ´Â ÂÊ, Áï ½Ã±×³Î Çڵ鷯 ÂÊ¿¡¼µµ gpointer ÇüÀÇ °ªÀ» ¹Þ´Â´Ù.
- ½Ã±×³Î°ú ½Ã±×³Î Çڵ鷯¸¦ ¿¬°áÇÒ ¶§
gtk_signal_connect_object
¸¦ ¾µ ¼öµµ ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â ´Ù¸¥
°´Ã¼ÀÇ Äݹé ÇÔ¼ö¸¦ ½Ã±×³Î Çڵ鷯·Î ¿¬°áÇÒ ¶§ »ç¿ëµÈ´Ù. ±×¸®°í ÀÌ ÇÔ¼ö´Â
Ç¥ÁØ ÇÔ¼ö(¿¹: gtk_widget_show µî)¸¦ ½Ã±×³Î Çڵ鷯·Î ¿¬°áÇÒ ¶§ À¯¿ëÇÏ´Ù.
ÀÌ ÇÔ¼öÀÇ ³×¹ø° ÆĶó¹ÌÅÍ´Â ¿¬°áµÇ´Â ½Ã±×³Î Çڵ鷯ÀÇ Ã¹¹ø° ÆĶó¹ÌÅÍ·Î
Àü´ÞµÈ´Ù.
- GLADE ´Â ´ëÈ»óÀÚÀÇ ¹öÆ°¿¡ ´ëÇÑ Çڵ鷯¸¦ °³¹ßÀÚ°¡ Ãß°¡ÇÒ ¶§ Data
¶Ç´Â Object ¸¦ ¾²Áö ¾ÊÀ¸¸é
gtk_signal_connect() ¶ó´Â ÇÔ¼ö¸¸À» ½á¼, ¸¶Áö¸· ÆĶó¹ÌÅͷδ ¹«Á¶°Ç NULL
À» ÁÖ°í¼ µî·ÏÇÑ´Ù. ±×·¯³ª Data ¸¦ »ç¿ëÇÏ¸é ¸¶Áö¸· ÆĶó¹ÌÅͷνá ÁöÁ¤µÈ
°ªÀ» »ç¿ëÇÏ¿© »ý¼ºÇϸç Object ¸¦ »ç¿ëÇϸé gtk_signal_connect_object()
ÇÔ¼ö¸¦ ¾²¸ç ¸¶Áö¸· ÆĶó¹ÌÅÍ·Î Object ¿¡¼ ÁöÁ¤ÇÑ °ÍÀ» ¾´´Ù. ±×¸®°í After
¹öÆ°À» Ŭ¸¯Çϸé gtk_signal_connect_after() ¸¦ »ç¿ëÇÏ¿© ½Ã±×³ÎÀ»
µî·ÏÇÑ´Ù.
- 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 );
/* Ãß°¡ ³¡ */
}
¿ì¼±Àº ¼±ÅÃµÈ ÆÄÀÏÀ» ÅؽºÆ®·Î Å͹̳ο¡ Ãâ·ÂÇÏ´Â °ÍÀ¸·Î ÀÌ ¼½¼ÇÀÇ ¾ê±â¸¦
³¡³»µµ·Ï ÇÏÀÚ. ³ªÁß¿¡ ÀÌ °ªÀ» È°¿ëÇϱâ·Î ÇÏ°í.
¸ÕÀú ´ÙÀ½
ÆùÆ® ¼±Åà ´ëÈ»óÀÚ À§Á¬À»
"À§Á¬ À©µµ¿ì"-"GTK+ Basic ÆгÎ" ¿¡¼ Ŭ¸¯Çϸé ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÈ´Ù.
À§¿¡¼ º» ÆÄÀÏ ¼±Åà ´ëÈ»óÀÚ¿Í °ÅÀÇ ¸ðµç ¸é¿¡¼ µ¿ÀÏÇϱ⠶§¹®¿¡ ¸¹Àº
ºÎºÐÀ» »ý·«ÇÑ´Ù. ±×·¯³ª »ç¿ëÀÚ°¡ È®ÀÎÀ̳ª Àû¿ëÀ» ´·¶À» °æ¿ì »ç¿ëÀÚ°¡
¼±ÅÃÇÑ ³»¿ëÀ» ¾ò¾î¿À´Â ºÎºÐÀº ¿©±â¼ ´Ù·ç±â·Î ÇÑ´Ù. ÀÌ·± ¿ªÇÒÀ» ÇÏ´Â
ÇÔ¼ö´Â ÆÄÀϼ±Åðú´Â ´Þ¸® 1°³°¡ ¾Æ´Ï¶ó 3°³Á¤µµ ÀÖ´Ù.
- gtk_font_selection_dialog_get_font()
- gtk_font_selection_dialog_get_font_name()
- 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 );
/* Ãß°¡ ³¡ */
}
ÀÌ ÆùÆ® ¼±Åà ´ëÈ»óÀÚ¸¦ ¶ç¿ì´Â ¸Þ´º¸¦ Çϳª Ãß°¡ÇÏ¿© ÀÌ ´ëÈ»óÀÚ¸¦
±¸µ¿½ÃÄѺ¸ÀÚ(
¸Þ´º ¿¡µðÅ͸¦ È°¿ëÇÏÀÚ).
½ÇÇàÈÄ °á°ú´Â ´ÙÀ½°ú °°´Ù(¿À¸¥ÂÊ Å͹̳ο¡ ÂïÈù ³»¿ëÀ» ÁÖ¸ñÇÏÀÚ).
ÀÚ ÀÌÁ¦ ÅؽºÆ® ¿µ¿ªÀ» Á¦¾îÇغ¸ÀÚ. ±âº»ÀûÀ¸·Î ÅؽºÆ® ¿µ¿ª À§Á¬ ÀÚü°¡
ÅؽºÆ® ÀÔ·Â ±â´É, ÀÔ·ÂµÈ ÅؽºÆ®ÀÇ ¼±Åà ±â´É, ¹æÇâÅ° ¹× ¹é½ºÆäÀ̽º Å°
±â´É µîÀ» Áö¿øÇÑ´Ù. ±×¸®°í 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 ÇÔ¼ö´Â ´ÙÀ½°ú °°´Ù.
- gtk_text_insert() - ÅؽºÆ® ¿µ¿ªÀÇ ÇöÀç Ä¿¼ ÀÌÈÄ¿¡ ÁÖ¾îÁø ¹öÆÛÀÇ
³»¿ëÀ» ä¿î´Ù.
- 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)·Î
µð½ºÇ÷¹ÀÌ°¡ ¾ÈµÈ´Ù.
»óŹٴ 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 );
½ÇÇà ÈÄ »óŹٿ¡ ¸Þ½ÃÁö°¡ ¶ß´Â ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù:
ºñ·Ï ´Ü¼øÇϳª¸¶ ¿ì¸®´Â GLADE¸¦ °¡Áö°í¼ ÅؽºÆ® ¿¡µðÅ͸¦ ¸¸µé¾î
º¸¾Ò´Ù. ¾î¶²°¡? À©µµ¿ìÁîÀÇ ºñÁÖ¾ó ½ºÆ©µð¿À¸¸Å ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. ±×·¯³ª
´Ù¼Ò ¹ÌÁøÇÑ ºÎºÐµéÀÌ ÀÖ¾î¼ ¿©±â¿¡ ±×°ÍÀ» Á¤¸®ÇÏ°íÀÚ ÇÑ´Ù.
GLADE´Â À¯±âÀûÀÎ »ý¸íüó·³ ÁøÈÇÏ°í ÀÖ´Â °³Ã¼ÀÌ´Ù.
»ý¸íüÀ̹ǷΠ°è¼ÓµÇ´Â ½ÅÁø´ë»ç°¡ ÀÖ¾î¾ß ÇÏ´Â °Í ¾Æ´Ï°Ú´Â°¡? ³ª´Â ±×·±
Àǹ̿¡¼ ´ÙÀ½°ú °°ÀÌ GLADE°¡ °¡Á³À¸¸é ÇÏ´Â ±â´ÉµéÀ» »Ì¾Æ
º¸¾Ò´Ù. ÀÌ ¹®¼¸¦ º¸½Ã´Â ºÐµé Áß¿¡ GLADE¿¡ ÀÌ·± ±â´Éµé ÁßÀÇ
ÀϺθ¦ Á¦°øÇÒ ¼ö ÀÖ´Â ±âȸ°¡ µÇ½Ã´Â ºÐµéÀÌ ¸¹¾ÒÀ¸¸é ÇÑ´Ù.
- µ¥ÀÌÅÍ º£À̽º ¿¬µ¿ ±â´É
-
ÀÌ°ÍÀº ¸®´ª½º°¡ »ó¾÷ÀûÀ¸·Î È°¿ëµÇ±â À§Çؼ °¡Àå ÇÊ¿äÇÑ ±â´ÉÀÌ´Ù. ´Ù¸¥
RAD Åø¿¡¼ Á¦°øÇÏ´Â °Íó·³ ODBC, JDBC µî°ú
°°Àº ¿¬µ¿ ä³ÎÀÌ °ø±ÞµÇ¾î¾ß Çϸç, À̸¦ ¹ÙÅÁÀ¸·Î ÇÑ ´Ù¾çÇÑ µ¥ÀÌÅÍ º£À̽º
Çڵ鸵 À§Á¬µéÀÌ °ø±ÞµÇ¾î¾ß ÇÒ °ÍÀÌ´Ù.
- ±×·¡ÇÈ ±â´É
-
µ¿¿µ»óÀ̳ª Á¤Áö ¿µ»óÀ» ó¸® ¹× º¸¿©ÁÖ´Â À§Á¬ÀÌ Ãß°¡µÇ¾úÀ¸¸é ÇÑ´Ù.
- Åë½Å ¹× ÀÎÅÍ³Ý ±â´É
-
½Ã¸®¾ó
¹°·Ð socket Àº Áö¿øÇÑ´Ù
±×¸®°í
´õ ³ª¾Æ°¡ ÀÎÅͳݱîÁö À̵éÀ» ó¸®ÇÏ°í
º¸¿©ÁÖ´Â À§Á¬À» Ãß°¡µÇ¾úÀ¸¸é ÇÑ´Ù.
³í¿ÜÀÇ ¾ê±âÁö¸¸ GTK ÀÇ ¾Æų·¹½º°ÇÀº ¾ÆÁ÷ ÇѱÛȶó°í º»´Ù. ¸ðµç GTK
¶óÀ̺귯¸® ÇÔ¼öµé¾È¿¡¼ ÇѱÛÈ°¡ Á¶¼ÓÈ÷ ÀÌ·ç¾îÁö±â¸¦ ¹Ù¶ó°í ³ªµµ °Å±â¿¡
µ¿ÂüÇÒ ¼ö ÀÖ´Â ±âȸ°¡ ÁÖ¾îÁø´Ù¸é Âü ÁÁ°Ú´Ù.