· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Glade-KLDP

You are not allowed to 'LikePages'

ÀÌ°÷¿¡¼­ °¡Àå ÃÖ±Ù ¹öÀüÀÇ ¼Ò½º¸¦ ´Ù¿î·ÎµåÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ°÷¿¡´Â ¹Ì¸® ¸¸µé¾îÁø binary¸¦ ÆÑŰ¡ÇÑ RedHat RPM, Debian, Slackware, NetBsd packageµéµµ ¸¶·ÃµÇ¾î ÀÖ´Ù. ±ÞÇϽŠºÐÀº ÀÌ·± binaryÀÇ ÆÑŰ¡À» ¼±ÅÃÇÒ ¼öµµ ÀÖ°Ú´Ù.

¹®¼­

¾ÆÁ÷ °ø½Ä ¹èÆ÷µÇ´Â ¹®¼­´Â ¾ø´Ù. ±×·¯³ª ´ÙÀ½°ú °°Àº ³»¿ëµéÀ» ÂüÁ¶ÇÒ ¼ö ÀÖ°Ú´Ù:

1.3 GLADE ¼³Ä¡

¼³Ä¡¸¦ À§Çؼ­ ÇÊ¿äÇÑ °Íµé(requirements)

GLADE¸¦ ¼³Ä¡ÇÏ·Á¸é ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÇÊ¿äÇÏ´Ù.

binary package ¼³Ä¡

RPM µî°ú °°Àº binaryÇüÅÂÀÇ ÆÑÅ°Áö´Â ±× ¼³Ä¡°¡ ¿ëÀÌÇÏ´Ù. ¿¹¸¦ µé¾î¼­ RPMÀº ´ÙÀ½°ú °°ÀÌ ¼³Ä¡ÇÑ´Ù:

rpm -Uvh glade-0.5.7-2.i386.rpm

¼Ò½º·Î ¼³Ä¡

¼Ò½º·Î ¼³Ä¡Çϱâ À§Çؼ­´Â 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)

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

¶óÀ̺귯¸®

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 ¾ÆÅ°ÅØÃÄ).

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·Î ¸¸µç ¾îÇø®ÄÉÀÌ¼Ç ³»ºÎ °èÃþ ±¸Á¶°ú °°Àº ³»ºÎ °èÃþ ±¸Á¶¸¦ °®´Â´Ù.

2.2 GLADE »ìÇDZâ

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

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

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

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

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

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

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

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

±âŸ º¸Á¶ âµé

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

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

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

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

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

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

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

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

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

  • ÆíÁýâ¿¡ ¹®ÀÚ ÀÔ·Â, ¼±ÅÃ, º¹»ç, »èÁ¦, ºÙÀ̱⠱â´É
  • ÆíÁýµÈ ³»¿ëÀ» ÀúÀåÇÏ´Â ±â´É
  • ÆÄÀÏÀ» Àоî¿Í ÆíÁýâ¿¡ µð½ºÇ÷¹ÀÌ ÇÏ´Â ±â´É
  • Á¾·á ±â´É
  • 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¸¦ ¼±ÅÃÇغ¸ÀÚ.

±×·¯¸é ´ÙÀ½ ±×¸²°ú °°Àº 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 ÀÇ ÀÛ¾÷ ´ë»óÀÌ µÇ´Â °´Ã¼¸¦ Æû, ¶Ç´Â ÅÛÇø´À̶ó°í ºÎ¸£ÀÚ. ±×¸®°í ½ÇÁ¦ ½ÇÇàµÈ ÈÄÀÇ °á°ú´Â ±× °á°úÀÇ ¼Ó¼º´ë·Î ºÎ¸£±â·Î ÇÏÀÚ. ¿¹¸¦ µé¾î¼­ ¹ÙÅÁ À©µµ¿ì Æû ¿¡¼­ ¹«¾ù ¹«¾ùÀ» ÀÛ¾÷ÇÏ¸é ¹ÙÅÁ À©µµ¿ì¿¡ ¾î¶² ¾î¶² È¿°ú°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù¶ó´Â ½ÄÀ¸·Î Ç¥ÇöÇϱâ·Î ÇÏÀÚ.

3.2 °³¹ß µÎ¹ø° ´Ü°è - about ´ëÈ­»óÀÚ

¸¹Àº 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 ´ëÈ­»óÀÚ´Â »ç¿ëÀÚ°¡ ¸Þ´º³ª Åø¹Ù¸¦ ÅëÇؼ­ ¶ç¿ï ¼ö ÀÖ´Ù. ±×¸®°í ÀÌ ´ëÈ­»óÀÚÀÇ È®ÀÎ ¹öÆ°À» ´©¸£¸é ¾ðÁ¦µçÁö ´ÝÀ» ¼ö ÀÖ´Ù.

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 ¶óÀ̺귯¸® ÇÔ¼öµé¾È¿¡¼­ ÇѱÛÈ­°¡ Á¶¼ÓÈ÷ ÀÌ·ç¾îÁö±â¸¦ ¹Ù¶ó°í ³ªµµ °Å±â¿¡ µ¿ÂüÇÒ ¼ö ÀÖ´Â ±âȸ°¡ ÁÖ¾îÁø´Ù¸é Âü ÁÁ°Ú´Ù.



GLADE¸¦ »ç¿ëÇÑ ¸®´ª½º µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß

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¶õ ¹«¾ùÀΰ¡?

GLADE ´Â ´Ù¸¥ À©µµ¿ìÁî(Windows NT/9x¸¦ ¾ÕÀ¸·Î ÀÌ·¸°Ô ºÎ¸£°Ú´Ù)Visual Studio¿Í ¸¹Àº ºÎºÐÀÌ À¯»çÇϸç Widget Template Palette(À©µµ¿ìÁî ¿ë¾î·Î ÇÑ´Ù¸é ControlÂë¿¡ ÇØ´çÇÏ°Ú´Ù) ÅÛÇø®Æ® ÆÈ·¹Æ®¿¡ ÀÖ´Â À§Á¬µéÀ» µå·¡±× ¾Ø µå·ÓÀ¸·Î GUI Æû°ú ±× À§ÀÇ GUI °´Ã¼µéÀ» »ý¼ºÇÏ°í À̵éÀÇ ÇÁ·ÎÆÛƼµéÀ» Á¶Á¤ÇÏ°í ½Ã±×³Î Çڵ鷯(À©µµ¿ìÁî·Î ÇÑ´Ù¸é ¸Þ½ÃÁö ¸Ê ÇÔ¼ö) µî·Ï/»èÁ¦/º¯°æÇÏ¿© C, C++ ¼Ò½º(C++ÀÇ °æ¿ì addonÀÎ glade--°¡ ÇÊ¿ä)¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ÅëÇÕ °³¹ß ȯ°æÀÌ´Ù.

¾ÕÀ¸·Î C ¼Ò½º¸¦ »ý¼ºÇÏ´Â °Í¿¡¸¸ ÃÐÁ¡À» ¸ÂÃç¼­ ¾ê±âÇÏ°Ú´Ù.

1.2 GLADE¸¦ ¾îµð¼­ ±¸ÇÒ °ÍÀΰ¡?

Source¿Í Binary

GLADEÀº ÇöÀç 0.5.7¹öÀü±îÁö releaseµÇ¾úÀ¸¸ç °ø½Ä web site´Â http://glade.pn.orgÀÌ´Ù.

´ÙÀ½ ±×¸² GLADE °ø½Ä Ȩ »çÀÌÆ®Àº GLADE°ø½Ä Ȩ »çÀÌÆ® ¸ð½ÀÀÌ´Ù.

GLADE °ø½Ä Ȩ »çÀÌÆ® gnome ¾ÆÅ°ÅØÃÄ GTK·Î ¸¸µç ¾îÇø®ÄÉÀÌ¼Ç ³»ºÎ °èÃþ ±¸Á¶ GLADE ¸ÞÀÎ À©µµ¿ì GLADE À§Á¬ ÆÈ·¹Æ® À©µµ¿ì GLADE ¼Ó¼º ÆíÁý±â À©µµ¿ì GLADE ¸Þ´º ÀÛ¼º À©µµ¿ì GLADE À§Á¬ Æ®¸® À©µµ¿ì À§Á¬ ¹ÙÅÁ À©µµ¿ì ¼öÁ÷ ¹Ú½º À§Á¬ ¼öÁ÷ ¹Ú½º À§Á¬ °³¼ö¸¦ ¹¯´Â ´ëÈ­»óÀÚ ¼öÁ÷ ¹Ú½º¸¦ ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ¸ð½À ¸Þ´º À§Á¬ ¸Þ´º À§Á¬À» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ¸Þ´º ÆíÁý ¹öÆ° ¸Þ´º ÆíÁý ¿¹Á¦ Åø¹Ù À§Á¬ Åø¹ÙÀÇ ¹öÆ° ¼ö¸¦ ¹¯´Â ´ëÈ­»óÀÚ Åø¹Ù¸¦ ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ¹öÆ° À§Á¬ ÇÑ°³ÀÇ ¹öÆ°À» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ¹Ì¸® ÁغñµÈ ¹öÆ°µé Åø¹Ù¿¡ ¸ðµç ¹öÆ°µéÀ» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ÅؽºÆ® ¹Ú½º À§Á¬ ÅؽºÆ® ¹Ú½º À§Á¬À» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì ¹ÙÅÁ À©µµ¿ìÀÇ Å©±â Á¶Á¤ »óŹ٠À§Á¬ ¸ðµç À§Á¬µéÀ» ºÙÀÎ ÈÄÀÇ ¹ÙÅÁ À©µµ¿ì GLADEÀÇ ÆÄÀÏ ¸Þ´º GLADEÀÇ ÇÁ·ÎÁ§Æ® ¿É¼Ç ´ëÈ­»óÀÚ ls¸í·É°ú autogen.sh½ÇÇà È­¸é ù¹ø° ½ÇÇà °á°ú ¹ÙÅÁ À©µµ¿ì window1ÀÇ delete_event µî·Ï ÈÄÀÇ ¸ð½À GNOMEÀÇ About ´ëÈ­»óÀÚ À§Á¬ GNOMEÀÇ About ´ëÈ­»óÀÚ Ãʱ⠸ð½À GNOMEÀÇ About ´ëÈ­»óÀÚ ¼ÕÁúÈÄÀÇ ¸ð½À GNOMEÀÇ About ´ëÈ­»óÀÚ¿¡ ·Î°í¸¦ ³ÖÀº ¸ð½À About ¹öÆ°ÀÇ ½Ã±×³Î ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ ÄÁƲ·Ñ ½ÇÇàÈÄ ÆÄÀÏ ¼±Åà ´ëÈ­»óÀÚ È®ÀÎ ¹öÆ° ½Ã±×³Î Çڵ鷯 µî·Ï Ãë¼Ò ¹öÆ°¿¡ ´ëÇÑ Çڵ鷯 µî·Ï ÆùÆ® ¼±Åà ´ëÈ­»óÀÚ ÄÁƲ·Ñ ÆùÆ® ¼±Åà ´ëÈ­»óÀÚ ½ÇÇà È­¸é ÆùÆ® º¯°æ ÈÄÀÇ ½ÇÇàÈ­¸é ½ÇÇàÈÄ »óŹ٠¸ð½À
ID
Password
Join
He who invents adages for others to peruse takes along rowboat when going on cruise.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-11-18 18:09:11
Processing time 0.0015 sec