Kazuhiro NISHIYAMA
zn****@mbf*****
2005年 4月 28日 (木) 18:47:57 JST
西山和広です。 >>>>> On Tue, 26 Apr 2005 09:57:51 +0900 >>>>> poinc****@ikezo*****(Hiroyuki Ikezoe) said: > 3は別になくてもいいかなと思ったんですが、なんとなくつけてしまいました。 > > あと、「%」は「%%」っていうか表記で使えるようにした方がよさげなので、ま > たまたパッチを送ってもらえるのを待ってます。 > > # 今年はふりょさんの力を搾取しまくるつもり * t%t%t -> TitleTitleTitle * %test% -> Title などのバグっぽい動作を見つけたので、直していたら、 結局状態を導入しないとうまくいかないような気がして しまったので、ついでに「%%」も対応してみました。 -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA) -------------- next part -------------- Index: src/actions/kz-actions.c =================================================================== RCS file: /cvsroot/kazehakase/kazehakase/src/actions/kz-actions.c,v retrieving revision 1.196 diff -u -p -r1.196 kz-actions.c --- src/actions/kz-actions.c 26 Apr 2005 01:07:01 -0000 1.196 +++ src/actions/kz-actions.c 28 Apr 2005 09:42:16 -0000 @@ -895,21 +895,63 @@ act_copy_in_user_format(GtkAction *actio { gchar **temp = g_alloca(sizeof(gchar*) * (counts + 1)); splited = g_strsplit(format , "%" , counts); + gint st = 0; - for(i = 0;i < counts;i++) + for(i = 0; i < counts-1; i++) { - if(splited[i][0] == 't') + if(st == 0) + { + /* first state */ + temp[i] = splited[i]; + st = 1; + } + else if (st == 2) + { + /* after %t% and so on */ + temp[i] = splited[i]; + st = 1; + } + else if (splited[i][0] == '\0') + { + /* "%%" */ + temp[i] = "%"; + st = 0; + } + else if (splited[i][1] != '\0') + { + /* %text% */ + temp[i] = splited[i]; + st = 1; + } + else if(splited[i][0] == 't') + { + /* %t% */ temp[i] = (gchar*)kz_embed_get_title(KZ_EMBED(widget)); + st = 2; + } else if(splited[i][0] == 'u') + { + /* %u% */ temp[i] = (gchar*)kz_embed_get_location(KZ_EMBED(widget)); + st = 2; + } else if(splited[i][0] == 's') + { + /* %s% */ temp[i] = text; + st = 2; + } else + { + /* '%' + other char + '%' */ temp[i] = splited[i]; + st = 1; + } } + temp[counts-1] = splited[counts-1]; temp[counts] = NULL; - str = g_strjoinv(NULL , temp); + str = g_strjoinv(NULL, temp); g_strfreev(splited); } else @@ -921,7 +963,7 @@ act_copy_in_user_format(GtkAction *actio gtkutil_copy_text(str); - if(str) g_free(str); + if(str) g_free(str); if(text) g_free(text); }