¸®´ª½º ±âŸ ÀÚ·á

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   gtk °­Á #10 1998/07/10 (17:33)
À̸§ ±èÈ¿¿ø
¹øÈ£ 94
Á¶È¸ 394
º»¹®
************
*** 17. glib
************

 glib´Â GDK ¹× GTK ¾îÇÃÀ» °³¹ßÇÒ ¶§ ¸¹Àº À¯¿ëÇÑ ÇÔ¼ö¿Í Á¤ÀǵéÀ» Á¦°øÇÑ´Ù.
³ª´Â ¿©±â¼­ ±×µéÀ» °£´ÜÇÑ ¼³¸í°ú ÇÔ²² º¸ÀÏ °ÍÀÌ´Ù.  »ó´ç¼ö´Â Ç¥ÁØÀÇ libc¿Í
Áߺ¹µÇ±â ¶§¹®¿¡ ±×µé¿¡ ´ëÇØ ÀÚ¼¼È÷ ´Ù·çÁø ¾Ê´Â´Ù.  ÀÌ°ÍÀº ÁÖ·Î ÇϳªÀÇ
Âü°í·Î¼­, ¾î¶² °ÍÀ» ÀÌ¿ëÇÒ ¼ö Àִ°¡¸¦ ÆľÇÇÏ°Ô ÇÒ °ÍÀÌ´Ù.

***
*** 17-1. Á¤ÀÇ
***
  ¸¹Àº ÀÚ·áÇüµé¿¡ ´ëÇÑ extreme °ªµéÀÇ Á¤ÀÇ´Â ÀÌ·¸´Ù.

 G_MINFLOAT
 G_MAXFLOAT
 G_MINDOUBLE
 G_MAXDOUBLE
 G_MINSHORT
 G_MAXSHORT
 G_MININT
 G_MAXINT
 G_MINLONG
 G_MAXLONG

 ¶ÇÇÑ, typedefµéµµ ÀÖ´Ù.  ¿ÞÂÊÀÇ °ÍµéÀº ±â°èÀÇ architecture¿¡ ÀÇÇØ ´Ù¸£°Ô
¼¼ÆõȴÙ.  È£È¯¼ºÀ» À¯ÁöÇÏ·Á¸é Æ÷ÀÎÅÍÀÇ Å©±â¸¦ Àç¾î¼­´Â ¾ÈµÈ´Ù´Â °ÍÀ» ¸í½É
Ç϶ó.  ÇϳªÀÇ Æ÷ÀÎÅÍ´Â Alpha ¿¡¼­ 8¹ÙÀÌÆ®, ÇÏÁö¸¸ Intel¿¡¼­´Â 4¹ÙÀÌÆ®ÀÌ´Ù.

      char   gchar;
      short  gshort;
      long   glong;
      int    gint;
      char   gboolean;

      unsigned char   guchar;
      unsigned short  gushort;
      unsigned long   gulong;
      unsigned int    guint;

      float   gfloat;
      double  gdouble;
      long double gldouble;

      void* gpointer;

      gint8
      guint8
      gint16
      guint16
      gint32
      guint32

***
*** 17-2. ÀÌÁß ¿¬°á ¸®½ºÆ®µé
***
 ¾Æ·¡ÀÇ ÇÔ¼öµéÀº ÀÌÁß ¿¬°á ¸®½ºÆ®µéÀ» ¸¸µé°í, °ü¸®ÇÏ°í, ¶Ç Æı«Çϱâ À§ÇØ
¾²ÀÌ´Â °ÍµéÀÌ´Ù.  ÀÌ ¹®¼­¿¡¼­ ¿¬°á¸®½ºÆ®°¡ ¹«¾ùÀÎÁö ´Ù·ê ¼ø ¾ø±â¿¡, ³ª´Â
¿©·¯ºÐÀÌ ±×°ÍÀ» ÀÌ¹Ì ¾Ë°í ÀÖ´Ù°í °¡Á¤ÇÑ´Ù.  ¹°·Ð, ±×°ÍÀº GTKÀÇ ÀϹÝÀûÀÎ
¾²ÀÓ»õ¸¦ ¾Ë±â À§ÇØ ²À ÇÊ¿äÇÑ °ÍÀº ¾Æ´ÏÁö¸¸, ±×·¡µµ ¾Ë¸é ÁÁÀº °ÍÀÌ´Ù.

 GList* g_list_alloc       (void);

 void   g_list_free        (GList     *list);

 void   g_list_free_1      (GList     *list);

 GList* g_list_append      (GList     *list,
                            gpointer   data);

 GList* g_list_prepend     (GList     *list,
                            gpointer   data);

 GList* g_list_insert      (GList     *list,
                            gpointer   data,
                            gint       position);

 GList* g_list_remove      (GList     *list,
                            gpointer   data);

 GList* g_list_remove_link (GList     *list,
                            GList     *link);

 GList* g_list_reverse     (GList     *list);

 GList* g_list_nth         (GList     *list,
                            gint       n);

 GList* g_list_find        (GList     *list,
                            gpointer   data);

 GList* g_list_last        (GList     *list);

 GList* g_list_first       (GList     *list);

 gint   g_list_length      (GList     *list);

 void   g_list_foreach     (GList     *list,
                            GFunc      func,
                            gpointer   user_data);

***
*** 17-3. ¿¬°á ¸®½ºÆ®
***
 À§¿¡ ÀÖ´Â ¸¹Àº ÇÔ¼öµéÀº ´ÜÀÏ ¿¬°á¸®½ºÆ®µé¿¡ ´ëÇؼ­µµ ¾²ÀÏ ¼ö ÀÖ´Â °Íµé
ÀÌ´Ù.  ¿©±â ¿ÏÀüÇÑ ÇÔ¼öÀÇ ¸®½ºÆ®°¡ ÀÖ´Ù.

 GSList* g_slist_alloc       (void);

 void    g_slist_free        (GSList   *list);

 void    g_slist_free_1      (GSList   *list);

 GSList* g_slist_append      (GSList   *list,
                              gpointer  data);

 GSList* g_slist_prepend     (GSList   *list,
                              gpointer  data);

 GSList* g_slist_insert      (GSList   *list,
                              gpointer  data,
                              gint      position);

 GSList* g_slist_remove      (GSList   *list,
                              gpointer  data);

 GSList* g_slist_remove_link (GSList   *list,
                              GSList   *link);

 GSList* g_slist_reverse     (GSList   *list);

 GSList* g_slist_nth         (GSList   *list,
                              gint      n);

 GSList* g_slist_find        (GSList   *list,
                              gpointer  data);

 GSList* g_slist_last        (GSList   *list);

 gint    g_slist_length      (GSList   *list);

 void    g_slist_foreach     (GSList   *list,
                              GFunc     func,
                              gpointer  user_data);

***
*** 17-4. ¸Þ¸ð¸® °ü¸®
***

      gpointer g_malloc      (gulong    size);

 ÀÌ°ÍÀº malloc()À» ´ëüÇÏ´Â °ÍÀÌ´Ù.  ÀÌ ÇÔ¼öÀÇ ³»ºÎ¿¡¼­ ¸®ÅÏ°ª¿¡ ´ëÇÑ
üũ°¡ ÀÌ·ç¾îÁö¹Ç·Î ¿ì¸®°¡ µû·Î ±×°ÍÀ» ÇØÁÙ ÇÊ¿ä´Â ¾ø´Ù.

      gpointer g_malloc0     (gulong    size);

 À§¿Í °°Áö¸¸, ±×°ÍÀ» ÇâÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇϱâ Àü±îÁø 0ÀÌ´Ù.

 gpointer g_realloc     (gpointer  mem,
                         gulong    size);

 "mem"¿¡¼­ ½ÃÀÛÇÏ¿© "size"¸¸Å­ÀÇ ¹ÙÀÌÆ®¸¦ ´Ù½Ã ÇÒ´çÇÑ´Ù.  ¹°·Ð ±× ¸Þ¸ð¸®´Â
ÀÌÀü¿¡ ÇÒ´çµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.

      void     g_free        (gpointer  mem);

 °£´ÜÇÏ´Ù, ¸Þ¸ð¸®¸¦ ¹Ý³³ÇÑ´Ù.

      void     g_mem_profile (void);

 »ç¿ëµÈ ¸Þ¸ð¸®ÀÇ profileÀ» ½ñ¾Æ³» ÁØ´Ù.  ÇÏÁö¸¸ ÀÌ°ÍÀ» ¾²±â À§Çؼ± ¿ì¸®´Â
glib/gmem.cÀÇ Á¦ÀÏ À­ºÎºÐ¿¡ #define MEM_PROFILEÀ» ´õÇØÁÖ°í make¸¦ ´Ù½Ã Çؾß
ÇÑ´Ù.

      void     g_mem_check   (gpointer  mem);

 ¸Þ¸ð¸®ÀÇ À§Ä¡°¡ À¯È¿ÇÑ °ÍÀÎÁö üũÇÑ´Ù.  gmem.cÀÇ Á¦ÀÏ À­ºÎºÐ¿¡ #define
MEM_CHECKÀ» ´õÇØÁÖ°í make¸¦ ´Ù½Ã ÇØ¾ß ÇÑ´Ù.

***
*** 17-5. ŸÀ̸Ó
***
 Å¸ÀÌ¸Ó ÇÔ¼öµéÀÌ´Ù.

      GTimer* g_timer_new     (void);

      void    g_timer_destroy (GTimer  *timer);

      void    g_timer_start   (GTimer  *timer);

      void    g_timer_stop    (GTimer  *timer);

      void    g_timer_reset   (GTimer  *timer);

      gdouble g_timer_elapsed (GTimer  *timer,
                               gulong  *microseconds);

***
*** 17-6. ¹®ÀÚ¿­ ´Ù·ç±â
***
 ¹®ÀÚ¿­À» ´Ù·ç´Â ÇÔ¼öµéÀÌ´Ù.  À̵éÀº ¸ðµÎ »ó´çÈ÷ Èï¹Ì·Ó°í, ¶ÇÇÑ Ç¥ÁØ C
¹®ÀÚ¿­ ÇÔ¼öµéº¸´Ù ´õ ¸¹Àº ±â´ÉµéÀÌ ÀÖÀ» °ÍÀÌ´Ù.  ÇÏÁö¸¸ À̵鿡 ¹®¼­°¡ ÇÊ¿ä
ÇÒ °ÍÀÌ´Ù.

      GString* g_string_new       (gchar   *init);
      void     g_string_free      (GString *string,
                                   gint     free_segment);

      GString* g_string_assign    (GString *lval,
                                   gchar   *rval);

      GString* g_string_truncate  (GString *string,
                                   gint     len);

      GString* g_string_append    (GString *string,
                                   gchar   *val);

      GString* g_string_append_c  (GString *string,
                                   gchar    c);

      GString* g_string_prepend   (GString *string,
                                   gchar   *val);

      GString* g_string_prepend_c (GString *string,
                                   gchar    c);

      void     g_string_sprintf   (GString *string,
                                   gchar   *fmt,
                                   ...);

      void     g_string_sprintfa  (GString *string,
                                   gchar   *fmt,
                                   ...);

***
*** 17-7. Utility ¿Í Error ÇÔ¼öµé
***

      gchar* g_strdup    (const gchar *str);

 strdupÇÔ¼ö¸¦ ´ëüÇÑ´Ù.  ¿ø·¡ÀÇ ¹®ÀÚ¿­À» »õ·Ó°Ô ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ º¹»çÇÏ°í,
±× °÷¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù.

      gchar* g_strerror  (gint errnum);

 ¸ðµç ¿¡·¯ ¸Þ½ÃÁö¿¡ ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÒ °ÍÀ» ±ÇÇÑ´Ù.  ÀÌ°ÍÀº perror()³ª ´Ù¸¥
°Íº¸´Ù ÈξÀ ¸ÚÁö°í, È®À强 ÁÁÀº °ÍÀÌ´Ù.  Ãâ·ÂÀº º¸Åë ÀÌ·± Çü½ÄÀÌ´Ù.

      program name:function that failed:file or further description:strerror

 ÀÌ°ÍÀº ¿ì¸®ÀÇ hello_world ÇÁ·Î±×·¥¿¡ ¾²ÀÎ ¿¹Á¦ÀÌ´Ù.

      g_print("hello_world:open:%s:%s\n", filename, g_strerror(errno));

      void g_error   (gchar *format, ...);

 ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.  Çü½ÄÀº printf¿Í °°Áö¸¸, Ãâ·ÂÀÇ ¾Õ¸Ó¸®¿¡ "** ERROR
**: "¸¦ ºÙÀÌ°í, ±×¸®°í ÇÁ·Î±×·¥À» ³¡³½´Ù.  Ä¡¸íÀûÀÎ ¿¡·¯¿¡¸¸ »ç¿ëÇ϶ó.

      void g_warning (gchar *format, ...);

 À§¿Í °°´Ù, ÇÏÁö¸¸ "** WARNING **: "À» ¾Õ¸Ó¸®¿¡ ºÙÀÌ°í, ¶ÇÇÑ ÇÁ·Î±×·¥À»
³¡³»Áø ¾Ê´Â´Ù.

      void g_message (gchar *format, ...);

 ¿ì¸®°¡ Ãâ·ÂÇÏ·Á´Â ¹®ÀÚ¿­¿¡ "message: "¸¦ ¾Õ¿¡¼­ ºÙ¿© Ãâ·ÂÇØÁØ´Ù.

      void g_print   (gchar *format, ...);

 printf¸¦ ´ëüÇÑ´Ù.

 ±×¸®°í ¿ì¸®ÀÇ ¸¶Áö¸· ÇÔ¼ö´Â ÀÌ°ÍÀÌ´Ù.

      gchar* g_strsignal (gint signum);

 ÀÎÀÚ·Î ÁØ ½Ã±×³Î ¹øÈ£¿¡ ÇØ´çÇÏ´Â À¯´Ð½º ½Ã½ºÅÛÀÇ ½Ã±×³Î À̸§À» Ãâ·ÂÇØÁØ´Ù.
´ë´Ù¼öÀÇ ½Ã±×³Î ´Ù·ç´Â ÇÔ¼öµé¿¡°Ô À¯¿ëÇÏ´Ù.

 À§¿¡ ¼Ò°³µÈ ¸ðµç °ÍµéÀº glib.h¿¡¼­ ¸¶±¸ÀâÀÌ·Î ÀοëÇÑ °ÍÀÌ´Ù.  ¿©·¯ºÐ Áß
´©±¸¶óµµ ¾î¶² ÇÔ¼ö¿¡ ´ëÇÑ ¹®¼­È­¸¦ ÇÏ°Ú´Ù¸é, ³ª¿¡°Ô emailÀ» º¸³»ÁÖ±æ!



*********************
*** 18. GTKÀÇ rc ÆÄÀÏ
*********************

 GTK´Â rc ÆÄÀÏÀ» ÀÌ¿ëÇؼ­ ¾îÇÃÀÇ µðÆúÆ® ȯ°æÀ» ´Ù·é´Ù.  À̵éÀº ¾Õ¼­ ¼³¸íÇÑ
¾î¶² widgetÀÇ »ö±òÀº ¹°·Ð ¹è°æ¿¡ ³ÖÀ» pixmapÀ» ¼³Á¤ÇÒ ¼öµµ ÀÖ´Ù.

***
*** 18-1. rc ÆÄÀÏÀ» À§ÇÑ ÇÔ¼ö
***
 ¾îÇÃÀ» ½ÃÀÛÇÏ´Â ºÎºÐ¿¡¼­ ÀÌ ÇÔ¼ö¸¦ Æ÷ÇÔ½ÃÅ°ÀÚ.

      void gtk_rc_parse (char *filename);

 ÀÎÀÚ´Â ¿ì¸® rc ÆÄÀÏÀÇ À̸§ÀÌ´Ù.  ÀÌ°ÍÀº GTK°¡ ÀÌ ÆÄÀÏÀ» Àо widgetµéÀÇ
½ºÅ¸ÀÏÀ» ±×°÷¿¡ Á¤ÀÇµÈ ´ë·Î ¼¼ÆÃÇϵµ·Ï ÇÑ´Ù.

 ¸¸¾à widgetµé Áß¿¡ ´Ù¸¥ °Íµé°ú ±¸º°µÇ¾î¾ß ÇÒ Æ¯º°ÇÑ ½ºÅ¸ÀÏÀ» °¡Á®¾ß ÇÒ
°ÍÀÌ ÀÖ´Ù¸é, ¶Ç´Â ´Ù¸¥ ¸ñÀûÀ¸·Î widgetµéÀ» ³í¸®ÀûÀ¸·Î ºÐ·ùÇÏ·Á¸é, ÀÌ ÇÔ¼ö¸¦
ÀÌ¿ëÇÑ´Ù.

      void gtk_widget_set_name (GtkWidget *widget,
                                gchar *name);

 Ã¹¹ø° ÀÎÀÚ·Î »õ·Î ¸¸µç widgetÀ» ÁÖ°í, µÎ¹ø° ÀÎÀÚ´Â ±×°Í¿¡ ºÎ¿©ÇÏ°íÀÚ
ÇÏ´Â À̸§ÀÌ´Ù.  ÀÌ°ÍÀº ÀÌ widgetÀÇ ¼Ó¼ºÀ» rc ÆÄÀÏ¿¡ ÀÖ´Â À̸§À» ÅëÇÏ¿©
¹Ù²Ü ¼ö ÀÖ°Ô ÇÑ´Ù.

 ÀÌ·± ½ÄÀ¸·Î ÇÔ¼ö¸¦ È£ÃâÇß´Ù°í »ý°¢ÇØ º¸ÀÚ.

      button = gtk_button_new_with_label ("Special Button");
      gtk_widget_set_name (button, "special button");

 ±×·³ ÀÌ ¹öÆ°Àº "special button"À¸·Î À̸§ºÙ°í rc ÆÄÀÏ¿¡¼­ "special button.
GtkButton"À̶ó´Â À̸§À¸·Î µÉ °ÍÀÌ´Ù.  (È®ÀÎÇØ º¸ÀÚ!)

 ¾Æ·¡ÀÇ rc ÆÄÀÏ ¿¹Á¦´Â main À©µµÀÇ ¼Ó¼ºÀ» ¼¼ÆÃÇÏ°í, ±× main À©µµÀÇ child
µéÀº "main button"ÀÇ ½ºÅ¸ÀÏÀ» »ó¼Ó¹Þ°Ô µÈ´Ù.  ÀÌ ¾îÇÿ¡¼­ ¾²ÀÎ ÄÚµå´Â ÀÌ·¸°Ô
µÈ´Ù.

      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_widget_set_name (window, "main window");

 ±×¸®°í rc ÆÄÀÏ¿¡¼­ Á¤ÀǵǴ ½ºÅ¸ÀÏÀº ÀÌ·¸°Ô µÈ´Ù.

      widget "main window.*GtkButton*" style "main_button"

 "main window"¿¡ ÀÖ´Â ¸ðµç GtkButton widgetÀ» rc ÆÄÀÏ¿¡¼­ Á¤ÀÇÇÑ "main_
buttons"ÀÇ ½ºÅ¸ÀÏ´ë·Î ¼¼ÆÃÇÑ´Ù.

 º¸´Ù½ÃÇÇ, ÀÌ°ÍÀº »ó´çÈ÷ °­·ÂÇÏ°í À¯¿¬ÇÑ ½Ã½ºÅÛÀÌ´Ù.  ÀÌ°ÍÀ¸·Î ÃÖ°íÀÇ
È¿°ú¸¦ ¾ò±â À§ÇØ °¢ÀÚ »ó»ó·ÂÀ» µ¿¿øÇØ º¸±â ¹Ù¶õ´Ù.

***
*** 18-2. GTK rc ÆÄÀÏÀÇ Æ÷¸Ë
***
 GTK rc ÆÄÀÏÀÇ Æ÷¸ËÀº µÚµû¸£´Â ¿¹Á¦¿¡¼­ º¸¿©Áö°í ÀÖ´Ù.  ÀÌ°ÍÀº GTK ¹èÆ÷º»¿¡
ÇÔ²² ÀÖ´Â testgtkrc ÆÄÀÏÀÌ°í, ³»°¡ ¾à°£ÀÇ ÁÖ¼® °°Àº °ÍÀ» ´õÇß´Ù.  ´©±¸µçÁö
ÀÌ°ÍÀ» ¾îÇÿ¡ Æ÷ÇÔ½ÃÄѼ­ »ç¿ëÀÚµéÀÌ ÀÌ¿ëÇÏ°Ô ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

 WidgetÀÇ ¼Ó¼ºÀ» º¯È­½Ãų ¶§ ¸î°¡Áö Á÷°üÀûÀÎ °ÍµéÀÌ ÀÖ´Ù.

 o fg - WidgetÀÇ foreground »ö±ò

 o bg - WidgetÀÇ background »ö±ò

 o bg_pixmap - WidgetÀÇ background¿¡ ¾²ÀÏ ÇȽº¸Ê

 o font - ÁÖ¾îÁø widget¿¡ ¾²ÀÏ ÆùÆ®

 À̰͵鿡 µ¡ºÙ¿©, widgetµé¿¡ °¡ÇØÁú ¼ö ÀÖ´Â ¸î°¡Áö state°¡ ÀÖ°í, ¿ì¸®´Â
´Ù¸¥ »ö±ò, ÇȽº¸Ê, ±×¸®°í ÆùÆ®¸¦ °¢ »óÅ¿¡ ¼¼ÆÃÇØ ÁÙ ¼ö ÀÖ´Ù.  ÀÌ stateµéÀº
´ÙÀ½°ú °°´Ù.

 o NORMAL - WidgetÀÇ Æò»ó½Ã »óÅÂ.  ¸¶¿ì½º°¡ ±× widgetÀÇ À§¿¡ ¿ÀÁö ¾Ê¾Ò°í,
            ¶Ç ´­·¯ÁöÁöµµ ¾ÊÀº µîÀÇ »óÅ´Ù.

 o PRELIGHT - ¸¶¿ì½º Æ÷ÀÎÅÍ°¡ ¾î¶² widgetÀÇ À§·Î ¿À°Ô µÇ¸é, ÀÌ state¿¡¼­
              Á¤ÀÇÇÑ »ö±òµéÀÌ È¿·ÂÀ» °¡Áö°Ô µÈ´Ù.

 o ACTIVE - WidgetÀÌ ´­·¯Áö°Å³ª Ŭ¸¯µÇ¸é activeÀÌ°í, ÀÌ tag¿¡ ÀÇÇؼ­
            Á¤ÀÇµÈ ¼Ó¼ºµéÀÌ È¿·ÂÀ» °¡Áø´Ù.

 o INSENSITIVE - ¾î¶² widgetÀÌ insensitive·Î, ±×¸®°í activeµÉ ¼ö ¾øµµ·Ï
                 ¼¼ÆÃµÇ¸é ¿©±â¼­ÀÇ ¼Ó¼ºÀ» µû¸£°Ô µÈ´Ù.

 o  SELECTED - Object°¡ selectedµÇ¸é ¿©±â¼­ÀÇ ¼Ó¼ºÀ» µû¸£°Ô µÈ´Ù.

 WidgetÀÇ »ö±òÀ» º¯È­½ÃÅ°´Â Å°¿öµåÀÎ "fg"¿Í "bg"¸¦ »ç¿ëÇÒ ¶§ÀÇ Æ÷¸ËÀº
ÀÌ·¸´Ù.

      fg[<STATE>] = { Red, Green, Blue }

 ¿©±â¼­ STATE´Â À§ÀÇ Ç¥Çöµé(PRELIGHT, ACTIVE µî) Áß Çϳª°í, Red, Green,
Blue´Â 0ºÎÅÍ 1±îÁöÀÇ ºÎµ¿¼Ò¼öÁ¡ ¼ö´Ù.  À̵éÀº ¹Ýµå½Ã ºÎµ¿¼Ò¼ö·Î Ç¥ÇöµÇ¾î¾ß
Çϸç, ±×·¸Áö ¾ÊÀ¸¸é 0À¸·Î ÀÎ½ÄµÉ °ÍÀÌ´Ù.  "1"Àº µ¿ÀÛÇÏÁö ¾Ê´Â´Ù, ²À "1.0"
À¸·Î ÇØ¾ß ÇÑ´Ù.  ´Ü¼øÈ÷ "0"À̶ó°í ÇÏ´Â °ÍÀº ÀνĵÇÁö ¾Ê´Â °ªÀÌ 0À̹ǷÎ
¹«¹æÇÒ °ÍÀÌ´Ù.

 bg_pixmapÀº À§ÀÇ °æ¿ì¿Í ¸Å¿ì ºñ½ÁÇÏ´Ù, color°¡ filenameÀ¸·Î ´ëÄ¡µÉ »Ó.

 pixmap_path´Â ":"À¸·Î ±¸ºÐµÈ °æ·ÎÀÇ ¸®½ºÆ®´Ù.  ÀÌ °æ·Î´Â ¿ì¸®°¡ ¼³Á¤ÇÑ
´ë·Î ¾î¶² ÇȽº¸ÊÀÌ¶óµµ Ã£À» °ÍÀÌ´Ù.

 fontµµ Á÷°üÀûÀ¸·Î ÀÌ·¸°Ô¸¸ ÇÏ¸é µÈ´Ù.

      font = "<font name>"

 µü Çϳª ¾î·Á¿î °Ô ÀÖ´Ù¸é ÆùÆ® À̸§ÀÇ ¹®ÀÚ¿­À» ´Ù·ç´Â °ÍÀÌ´Ù.  xfontsel
À̳ª À¯»çÇÑ À¯Æ¿¸®Æ¼µéÀÌ µµ¿òÀÌ µÉ °ÍÀÌ´Ù.

 "widget_class"´Â widgetµéÀÇ Å¬·¡½º ½ºÅ¸ÀÏÀ» ¼¼ÆÃÇÑ´Ù.  ÀÌ Å¬·¡½ºµéÀº
widgetÀÇ °³¿ä ºÎºÐ¿¡¼­ º¸ÀΠŬ·¡½º °èÃþ±¸Á¶¿¡ ³ª¿Í ÀÖ´Ù.

 "widget"Àº Á÷°üÀûÀ¸·Î, À̸§ ºÙ¿©Áø widgetÀÇ ÁýÇÕÀ» ÁÖ¾îÁø ½ºÅ¸ÀÏ´ë·Î
¼³Á¤Çϸç, ÁÖ¾îÁø widget Ŭ·¡½º¿¡ ´ëÇØ ¾î¶² ½ºÅ¸ÀÏÀÌ¶óµµ ¿À¹ö·ÎµåÇÑ´Ù.  ÀÌ·±
widgetµéÀº gtk_widget_set_name() ÇÔ¼ö¿¡ ÀÇÇØ ¾îÇà ³»ºÎ¿¡ µî·ÏµÇ¾î ÀÖ´Ù.
ÀÌ°ÍÀº widget Ŭ·¡½º ÀüüÀûÀ¸·Î°¡ ¾Æ´Ï¶ó ¾î¶² widgetÀ» basis·Î ÇÏ°í ÀÖ´Â
¾î´À ÇÑ widgetÀÇ Æ¯¼ºÀ» ¼³Á¤ÇØ ÁÙ ¼ö ÀÖµµ·Ï ÇÑ´Ù.  »ç¿ëÀÚµéÀÌ ³ª¸§´ë·Î ¼³Á¤
Çؼ­ ÀÌ¿ëÇÒ ÀÖµµ·Ï, ÀÌ·± Ưº°ÇÑ widgetÀ̶ó¸é ¹¹µçÁö ¹®¼­È­ÇØ µÑ °ÍÀ» Àû±Ø
±ÇÇÏ´Â ¹ÙÀÌ´Ù.

 Å°¿öµå "parent"°¡ ¼Ó¼º ¼³Á¤¿¡ ¾²À̸é, ±× widgetÀº parentÀÇ ¼Ó¼ºÀ» µû¸£°Ô
µÈ´Ù.

 ½ºÅ¸ÀÏÀ» Á¤ÀÇÇϸ鼭, ÀÌÀü¿¡ Á¤ÀÇµÈ ½ºÅ¸ÀÏÀ» »õ·Î¿î °Í¿¡ ´ëÀÔÇØ ÁÖ´Â °Íµµ
°¡´ÉÇÏ´Ù.

      style "main_button" = "button"
      {
        font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
        bg[PRELIGHT] = { 0.75, 0, 0 }
      }

 ÀÌ ¿¹Á¦´Â "button"ÀÇ ½ºÅ¸ÀÏÀ» ÃëÇؼ­, ´ÜÁö ÀÌ°Í¿¡¼­ font¿Í prelight
background color¸¦ ¹Ù²Ù´Â °ÍÀ¸·Î »õ·Î¿î "main_button" ½ºÅ¸ÀÏÀ» ¸¸µé¾î³½´Ù.

 ¹°·Ð, ÀÌ·± ¼Ó¼º Áß ¸¹Àº °ÍµéÀº ¸ðµç widget¿¡ ´ëÇØ Àû¿ë°¡´ÉÇÑ °ÍÀÌ ¾Æ´Ï´Ù.
ÀÌ°ÍÀº »ó½ÄÀûÀÌ°í °£´ÜÇÑ °ÍÀÌ´Ù.  Àû¿ë°¡´ÉÇÑ °ÍÀÌ ÀÖ´Ù¸é Àû¿ëÇÏ¸é µÈ´Ù.

***
*** 18-3. rc ÆÄÀÏÀÇ ¿¹Á¦
***

 # pixmap_path "<dir 1>:<dir 2>:<dir 3>:..."
 #
 pixmap_path "/usr/include/X11R6/pixmaps:/home/imain/pixmaps"
 #
 # style <name> [= <name>]
 # {
 #   <option>
 # }
 #
 # widget <widget_set> style <style_name>
 # widget_class <widget_class_set> style <style_name>

 # ÀÌ°ÍÀº °¡´ÉÇÑ stateµéÀÇ ¸®½ºÆ®´Ù.  À̵é Áß ÀϺδ ƯÁ¤ÇÑ widgetµé¿¡
 # ´ëÇؼ­´Â Àû¿ëµÇÁö ¾ÊÀ½À» ÁÖÀÇÇ϶ó.
 #
 # NORMAL - The normal state of a widget, without the mouse over top of
 # it, and not being pressed etc.
 #
 # PRELIGHT - When the mouse is over top of the widget, colors defined
 # using this state will be in effect.
 #
 # ACTIVE - When the widget is pressed or clicked it will be active, and
 # the attributes assigned by this tag will be in effect.
 #
 # INSENSITIVE - When a widget is set insensitive, and cannot be
 # activated, it will take these attributes.
 #
 # SELECTED - When an object is selected, it takes these attributes.
 #
 # Given these states, we can set the attributes of the widgets in each of
 # these states using the following directives.
 #
 # fg - Sets the foreground color of a widget.
 # fg - Sets the background color of a widget.
 # bg_pixmap - Sets the background of a widget to a tiled pixmap.
 # font - Sets the font to be used with the given widget.
 #

 # ¿©±â¼­ "button"À̶ó ºÒ¸®¿ì´Â ½ºÅ¸ÀÏÀ» ¼¼ÆÃÇÑ´Ù.  ÆÄÀÏÀÇ ¸¶Áö¸· ºÎºÐ¿¡¼­
 # ½ÇÁ¦ÀÇ widget¿¡ ÁöÁ¤µÇ°í ÀÖÀ¸¹Ç·Î ¿©±â¼­ÀÇ À̸§Àº Áß¿äÇÏÁö ¾Ê´Ù.

 style "window"
 {
   # ÀÌ°ÍÀº ÁÖ¾îÁø ÇȽº¸ÊÀ¸·Î À©µµÀÇ ÆеùÀ» ¼¼ÆÃÇÑ´Ù.
   #bg_pixmap[<STATE>] = "<pixmap filename>"
   bg_pixmap[NORMAL] = "warning.xpm"
 }

 style "scale"
 {
   # "NORMAL" state¿¡¼­ foreground(font) »ö±òÀ» red·Î ¼¼ÆÃÇÑ´Ù.

   fg[NORMAL] = { 1.0, 0, 0 }

   # ÀÌ widgetÀÇ background pixmapÀ» parentÀÇ ±×°ÍÀ¸·Î ¼¼ÆÃÇÑ´Ù.
   bg_pixmap[NORMAL] = "<parent>"
 }

 style "button"
 {
   # ¿©±â¼­ ¾î¶² ¹öÆ°¿¡ ´ëÇÏ¿© °¡´ÉÇÑ ¸ðµç state¸¦ º¸¿©ÁØ´Ù.  µü Çϳª
   # Àû¿ëµÇÁö ¾Ê´Â °ÍÀº SELECTED state´Ù.

   fg[PRELIGHT] = { 0, 1.0, 1.0 }
   bg[PRELIGHT] = { 0, 0, 1.0 }
   bg[ACTIVE] = { 1.0, 0, 0 }
   fg[ACTIVE] = { 0, 1.0, 0 }
   bg[NORMAL] = { 1.0, 1.0, 0 }
   fg[NORMAL] = { .99, 0, .99 }
   bg[INSENSITIVE] = { 1.0, 1.0, 1.0 }
   fg[INSENSITIVE] = { 1.0, 0, 1.0 }
 }

 # ÀÌ ¿¹Á¦¿¡¼­, ¿ì¸®´Â "button" ½ºÅ¸ÀÏÀÇ ¼Ó¼ºÀ» »ó¼Ó¹Þ´Â´Ù.  ±×¸®°í
 # »õ·Î "main_button" ½ºÅ¸ÀÏÀ» ¸¸µé°Ô µÉ¶§¸é font¿Í background »ö±òÀº
 # µû·Î ÁöÁ¤Çؼ­ ¾´´Ù.

 style "main_button" = "button"
 {
   font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
   bg[PRELIGHT] = { 0.75, 0, 0 }
 }

 style "toggle_button" = "button"
 {
   fg[NORMAL] = { 1.0, 0, 0 }
   fg[ACTIVE] = { 1.0, 0, 0 }

   # toggle_buttonÀÇ background pixmapÀ» ±×°ÍÀÇ parent widget(¾îÇÿ¡¼­
   # Á¤Àǵȴë·Î)ÀÇ ¼Ó¼ºÀ¸·Î ¼¼ÆÃÇÑ´Ù.
   bg_pixmap[NORMAL] = "<parent>"
 }

 style "text"
 {
   bg_pixmap[NORMAL] = "marble.xpm"
   fg[NORMAL] = { 1.0, 1.0, 1.0 }
 }

 style "ruler"
 {
   font = "-adobe-helvetica-medium-r-normal--*-80-*-*-*-*-*-*"
 }

 # pixmap_path "~/.pixmaps"

 # À̵éÀº widgetÀÇ Å¸ÀÔµéÀ» À§¿¡¼­ Á¤ÀÇµÈ ½ºÅ¸ÀÏ¿¡ µû¸£°Ô ÇÑ´Ù.
 # Widget ŸÀÔµéÀº Ŭ·¡½º °èÃþ±¸Á¶¿¡ ¸®½ºÆ®µÇ¾î ÀÖÁö¸¸, ÀÌ ¹®¼­¿¡ ¸®½ºÆ®µÈ
 # °Íµéµµ »ç¿ëÀڵ鿡°Ô ÁÁÀº Âü°í°¡ µÉ ¼ö ÀÖ´Ù.

 widget_class "GtkWindow" style "window"
 widget_class "GtkDialog" style "window"
 widget_class "GtkFileSelection" style "window"
 widget_class "*Gtk*Scale" style "scale"
 widget_class "*GtkCheckButton*" style "toggle_button"
 widget_class "*GtkRadioButton*" style "toggle_button"
 widget_class "*GtkButton*" style "button"
 widget_class "*Ruler" style "ruler"
 widget_class "*GtkText" style "text"

 # ÀÌ°ÍÀº ¸ðµç ¹öÆ°µé("main window"ÀÇ childrenµé)À» main_buttonÀÇ ½ºÅ¸ÀÏ
 # ´ë·Î ¼¼ÆÃÇÑ´Ù.
 widget "main window.*GtkButton*" style "main_button"

HomePage Backward Forward Post Reply List
1998 by swindler