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

12. ÅؽºÆ® widget

ÅؽºÆ® widgetÀº ¿©·¯ ÁÙÀÇ ÅؽºÆ®¸¦ º¸¿©Áְųª ÆíÁýÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ¿©·¯°¡Áö »öÀ̳ª ±Û²ÃÀ» ¿øÇÏ´Â ´ë·Î µ¿½Ã¿¡ ¼¯¾î¼­ ¾µ ¼ö ÀÖ´Ù. ¶ÇÇÑ Å°ÀԷ¿¡ ¹ÙÅÁÀ» µÐ ¸¹Àº ¼öÀÇ Emacs¿Í ȣȯ ÅؽºÆ® ÆíÁý ¸í·Éµéµµ Áö¿øÇÑ´Ù.

ÅؽºÆ® widgetÀº ÇÑ ´Ü¾î³ª ÇÑÁÙ Àüü¸¦ ¼±ÅÃ(select)ÇÏ´Â ´õºí Ŭ¸¯, Æ®¸®Çà Ŭ¸¯À» Æ÷ÇÔÇؼ­ ¿ÏÀüÇÑ cut-and-paste ±â´ÉÀ» °®°í ÀÖ´Ù.

12.1 ÅؽºÆ® »óÀÚ ¸¸µé±â¿Í ¼³Á¤.

ÅؽºÆ® widgetÀ» ¸¸µå´Â ÇÔ¼ö´Â ´Ü Çϳª»ÓÀÌ´Ù.

GtkWidget* gtk_text_new (GtkAdjustment *hadj,
                         GtkAdjustment *vadj);

ÀÎÀÚµéÀº ÇöÀç widgetÀÌ º¸¿©ÁÖ°í ÀÖ´Â ÅؽºÆ®ÀÇ À§Ä¡¸¦ ÃßÀûÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â AdjustmentÀÇ Æ÷ÀÎÅÍÀÌ´Ù. µÎ ÀÎÀÚ Áß Çϳª³ª µÑ ¸ðµÎ¿¡ NULLÀ» ³Ñ°ÜÁÖ¸é gtk_text_new ÇÔ¼ö´Â ÀÚ±â ÀÚ½ÅÀÇ °ÍÀ» »õ·ÎÀÌ ¸¸µç´Ù.

void gtk_text_set_adjustments (GtkText       *text,
                               GtkAdjustment *hadj,
                               GtkAdjustment *vadj);

À§ ÇÔ¼ö´Â ¾Æ¹« ¶§³ª ÅؽºÆ® widgetÀÇ ¼öÁ÷, ¼öÆò adjustment¸¦ ¹Ù²Ü ¼ö ÀÖ°Ô ÇØÁØ´Ù.

ÅؽºÆ® À§Á¬Àº ÅؽºÆ®ÀÇ ¾çÀÌ À©µµ¿¡ ´Ù Ãâ·ÂµÇ±â¿¡ ³Ê¹« ±æ¾îµµ ÀÚµ¿ÀûÀ¸·Î ½ºÅ©·Ñ ¹Ù¸¦ ¸¸µéÁö´Â ¾Ê´Â´Ù. ±×·¯¹Ç·Î ¿ì¸®´Â Á÷Á¢ ±×°ÍµéÀ» ¸¸µé¾î¼­ Ãâ·Â ·¹À̾ƿô¿¡ Ãß°¡ÇÏ¿©¾ß ÇÑ´Ù.

  vscrollbar = gtk_vscrollbar_new (GTK_TEXT(text)->vadj);
  gtk_box_pack_start(GTK_BOX(hbox), vscrollbar, FALSE, FALSE, 0);
  gtk_widget_show (vscrollbar);

À§ÀÇ ÄÚµå´Â ¼öÁ÷ ½ºÅ©·Ñ¹Ù¸¦ Çϳª ¸¸µé°í À̸¦ ÅؽºÆ® widgetÀÎ textÀÇ ¼öÁ÷ adjustment¿¡ ºÙÀδÙ. ±×¸®°í´Â Á¤»óÀûÀÎ ¹æ¹ý´ë·Î box¿¡ ³Ö´Â´Ù.

ÅؽºÆ® widgetÀ» »ç¿ëÇÏ´Â ÁÖµÈ µÎ°¡Áö ±æÀÌ ÀÖ´Ù. »ç¿ëÀÚ¿¡°Ô ÅؽºÆ®ÀÇ ³»¿ëÀ» ÆíÁýÇÒ ¼ö ÀÖ°Ô Çϰųª ¶Ç´Â »ç¿ëÀÚ¿¡°Ô ¿©·¯ ÁÙÀÇ ÅؽºÆ®¸¦ º¸¿©Áֱ⸸ ÇÒ ¼ö ÀÖ´Ù. ÀÌ µÎ°¡Áö ¸ðµå »çÀ̸¦ ¿Ô´Ù°¬´ÙÇϱâ À§Çؼ­ ÅؽºÆ® widgetÀº ´ÙÀ½ ÇÔ¼ö¸¦ °®°í ÀÖ´Ù.

void gtk_text_set_editable    (GtkText *text,
                               gint    editable);

ÀÎÀÚ editable¿¡ TRUE³ª FALSE¸¦ Á־ »ç¿ëÀÚ°¡ ÅؽºÆ® widgetÀÇ ³»¿ëÀ» ÆíÁý °¡´É, ¶Ç´Â ºÒ°¡´ÉÇϵµ·Ï ¸¸µé ¼ö ÀÖ´Ù. ÅؽºÆ® widgetÀÌ ÆíÁý °¡´ÉÇÑ »óŸé ÇöÀç ÀÔ·Â À§Ä¡¿¡ Ä¿¼­°¡ ³ªÅ¸³­´Ù.

ÀÌ µÎ°¡Áö ¸ðµå¿¡¼­ ÅؽºÆ® widgetÀ» ¾²´Â °ÍÀº º°´Ù¸¥ Á¦ÇÑÀÌ ¾ø´Ù. ¾Æ¹« ¶§³ª ÅؽºÆ® widgetÀÇ ÆíÁý °¡´É»óŸ¦ ¹Ù²Ü ¼ö ÀÖ°í ¾Æ¹« ¶§³ª ÅؽºÆ®¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù.

ÅؽºÆ® widgetÀº Ãâ·Â À©µµÀÇ ÇÑÁÙ¿¡ ´Ù º¸¿©Áú ¼ö ¾øÀ» ¸¸Å­ ±ä ÁÙµéÀ» wrappingÇÏ´Â ´É·ÂÀÌ ÀÖ´Ù. ÁÙÀÌ ³Ñ¾î°¡´Â À§Ä¡¿¡ ÀÖ´Â ´Ü¾î¸¦ ¾çÂÊÀ¸·Î ÂÉ°³´Â °ÍÀÌ ±âº» µ¿ÀÛÀÌ´Ù. ÀÌ´Â ´ÙÀ½ ÇÔ¼ö·Î ¹Ù²Ü ¼ö ÀÖ´Ù.

void gtk_text_set_word_wrap (GtkText *text,
                             gint    word_wrap);

ÀÌ ÇÔ¼ö¸¦ ½á¼­ ÅؽºÆ® widgetÀÌ ´Ü¾î¸¦ ÂÉ°³Áö ¾Ê°í wrapÇϵµ·Ï ÁöÁ¤ÇØ ÁÙ ¼ö ÀÖ´Ù. ÀÎÀÚ word_wrap´Â TRUE³ª FALSEÀÇ °ªÀ» °®´Â´Ù.

12.2 ÅؽºÆ® ´Ù·ç±â

ÅؽºÆ® widgetÀÇ ÀÔ·Â Æ÷ÀÎÆ®´Â ´ÙÀ½ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ÁöÁ¤ÇÑ´Ù.

void gtk_text_set_point (GtkText *text,
                         guint   index);
index°¡ ÀÔ·Â Æ÷ÀÎÆ®ÀÇ À§Ä¡ÀÌ´Ù.

ÇöÀç ÀÔ·Â Æ÷ÀÎÆ®¸¦ ±¸ÇÏ´Â °Íµµ À¯»çÇÏ´Ù.

guint gtk_text_get_point (GtkText *text);

À§ÀÇ µÎ ÇÔ¼ö¿Í °°ÀÌ ¾²¸é ÁÁÀº ÇÔ¼ö´Â

guint gtk_text_get_length (GtkText *text);
ÀÌ´Ù. ÀÌ´Â ÅؽºÆ® widgetÀÇ ±æÀ̸¦ µ¹·Áº¸³½´Ù. ÀÌ ±æÀÌ´Â ÇÑ ÁÙÀÇ ³¡À» ³ªÅ¸³»´Â ij¸®Áö-¸®ÅÏÀ» Æ÷ÇÔÇÑ ÅؽºÆ® ¾ÈÀÇ ¸ðµç ij¸¯ÅÍ ¼ýÀÚÀÌ´Ù.

ÇöÀç ÀÔ·Â Æ÷ÀÎÆ®¿¡ ÅؽºÆ®¸¦ ³ÖÀ¸·Á¸é ÅؽºÆ®ÀÇ »ö, ¹ÙÅÁ»ö, ±Û²ÃÀ» ÁöÁ¤µµ ÇÏ´Â gtk_text_insert ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

void gtk_text_insert (GtkText    *text,
                      GdkFont    *font,
                      GdkColor   *fore,
                      GdkColor   *back,
                      const char *chars,
                      gint       length);

»ö, ¹ÙÅÁ»ö, ±Û²ÃÀ» ÁöÁ¤ÇÏ´Â ÀÎÀÚ¿¡ NULLÀ» ³ÖÀ¸¸é ÀÌ Àü¿¡ ¾²ÀÎ widget style ³»ÀÇ °ªÀÌ ÀÌ¿ëµÈ´Ù. ÀÎÀÚ length¿¡ -1À» ³ÖÀ¸¸é ÁÖ¾îÁø ÅؽºÆ®ÀÇ ÀüºÎ°¡ ´Ù ÀԷµȴÙ.

ÅؽºÆ® widgetÀº gtk_main ÇÔ¼ö ¹Û¿¡¼­µµ ½º½º·Î¸¦ µ¿ÀûÀ¸·Î ´Ù½Ã ±×¸®´Â(redraw) GTK ³»¿¡¼­ ¸î ¾ÈµÇ´Â Á¸ÀçÀÌ´Ù. ÀÌ´Â ÅؽºÆ® widgetÀÇ ³»¿ëÀ» º¯°æÇϸé Áï½Ã ±× È¿°ú°¡ ±×´ë·Î ³ªÅ¸³­´Ù´Â ÀǹÌÀÌ´Ù. ÀÌ·¯ÇÑ °ÍÀº ÅؽºÆ®ÀÇ ³»¿ëÀ» ÇѲ¨¹ø¿¡ ¿©·¯¹ø º¯°æÇÏ´Â °æ¿ì ¹Ù¶óÁö ¾Ê´Â ÀÏÀÏ ¼öµµ ÀÖ´Ù. ÅؽºÆ® widgetÀÌ ²÷ÀÓ¾øÀÌ ½º½º·Î¸¦ ´Ù½Ã ±×¸®´Â ÀÏ ¾øÀÌ ¿©·¯¹ø º¯°æÇϱâ À§Çؼ­ widgetÀ» ±×·¯Áö ¸øÇϵµ·Ï Àӽ÷Π°íÁ¤ÇØ ¹ö¸± ¼ö ÀÖ´Ù. ±×¸®°í º¯°æÀÌ ´Ù ¿Ïº®È÷ ³¡³­ µÚ¿¡ ´Ù½Ã widgetÀ» Ç®¾îÁÖ¸é µÈ´Ù.

´ÙÀ½ µÎ ÇÔ¼ö·Î °íÁ¤Çϰųª Ç®¾îÁÖ´Â ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù.

void gtk_text_freeze (GtkText *text);
void gtk_text_thaw   (GtkText *text);         

ÅؽºÆ®´Â ´ÙÀ½ ÇÔ¼öµéÀ» ½á¼­ ÇöÀç ÀÔ·Â Æ÷ÀÎÆ®¿¡¼­ ¾ÕÂÊÀ¸·Î³ª µÞÂÊ ¹æÇâÀ¸·Î ÅؽºÆ® widget¿¡¼­ Áö¿öÁú ¼ö ÀÖ´Ù.

gint gtk_text_backward_delete (GtkText *text,
                               guint   nchars);
gint gtk_text_forward_delete  (GtkText *text,
                               guint   nchars);

ÅؽºÆ® widgetÀÇ ³»¿ëÀ» ²¨³»°í ½Í´Ù¸é ¸ÅÅ©·Î GTK_TEXT_INDEX(t, index)°¡ ÅؽºÆ® widget tÀÇ index À§Ä¡ÀÇ Ä³¸¯Å͸¦ ²¨³¾ ¼ö ÀÖ°Ô ÇØÁØ´Ù.

´õ ¸¹Àº ¾çÀÇ ÅؽºÆ®¸¦ ÇѲ¨¹ø¿¡ ²¨³¾·Á¸é ´ÙÀ½ ÇÔ¼ö¸¦ ¾´´Ù.

gchar *gtk_editable_get_chars (GtkEditable *editable,
                               gint        start_pos,
                               gint        end_pos);   

ÀÌ°ÍÀº ÅؽºÆ® widgetÀÇ ºÎ¸ð Ŭ·¡½ºÀÇ ÇÔ¼öÀÌ´Ù. end_posÀÇ °ªÀÌ -1À̸é ÀÌ´Â ÅؽºÆ®ÀÇ ³¡À» ÀǹÌÇÑ´Ù. ÅؽºÆ®ÀÇ ½ÃÀÛÀº 0ÀÌ´Ù.

ÀÌ ÇÔ¼ö´Â ²¨³¾ ÅؽºÆ®¸¦ À§ÇÑ »õ·Î¿î ¸Þ¸ð¸® ¿µ¿ªÀ» ÇÒ´çÇÑ´Ù. ±×·¯¹Ç·Î ´Ù ÀÌ¿ëÇÑ µÚ¿¡´Â g_free ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¸Þ¸ð¸® ¿µ¿ªÀ» Ç®¾îÁÖ´Â °ÍÀ» ÀØÁö¸»¶ó.

12.3 Å°º¸µå ´ÜÃàÅ°

ÅؽºÆ® widgetÀº ÆíÁý, À̵¿, ¼±ÅÃ(selection)À» À§ÇÑ ¹Ì¸® ÁöÁ¤µÈ Å°º¸µå ´ÜÃàÅ°µéÀ» °®°í ÀÖ´Ù. À̵éÀº Control, Alt Å°¿ÍÀÇ Á¶ÇÕÀÌ´Ù.

¿©±â¿¡ µ¡ºÙ¿© Ä¿¼­Å°·Î À̵¿ÇÒ ¶§ Control¸¦ ´©¸£°í ÀÖÀ¸¸é Ä¿¼­°¡ ÇÑ ¹®ÀÚ ´ÜÀ§°¡ ¾Æ´Ï¶ó ÇÑ ´Ü¾î ´ÜÀ§·Î ¿òÁ÷ÀδÙ. Shift¸¦ ´©¸£°í ÀÖÀ¸¸é Ä¿¼­°¡ À̵¿ÇÑ ºÎºÐÀÌ ÀÚµ¿ÀûÀ¸·Î ¼±ÅõȴÙ.

À̵¿ ´ÜÃàÅ°

ÆíÁý ´ÜÃàÅ°

Selection ´ÜÃàÅ°


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