From oshiro@mibai.tec.u-ryukyu.ac.jp Wed Jun 27 14:34:32 2001 From: oshiro@mibai.tec.u-ryukyu.ac.jp (OSHIRO Naoki) Newsgroups: fj.comp.applications.misc,fj.comp.x11 Subject: gimp =?ISO-2022-JP?B?GyRCJWElSyVlITwkSzJoQXwbKEI=?= Date: 27 Jun 2001 14:33:49 +0900 Message-ID: Content-Type: text/plain; charset=ISO-2022-JP gimp のフィルタメニューにそのフィルタの適用例のアイコンというかサムネ イルというかそのような画像を貼り込みたいのですが,これは可能でしょうか? フィルタの適用例を紹介している Web ページは存在しますが,これをアプリ ケーションのメニューに含めたいのです. gtk のアプリケーションでメニューに画像があるものを見かけたことがない気 がします.いまのところ無理なのかな. ============================================= OSHIRO Naoki: oshiro@mibai.tec.u-ryukyu.ac.jp http://mibai.tec.u-ryukyu.ac.jp/~oshiro/ From masata-y@gyve.aist-nara.ac.jp Fri Jun 29 05:44:54 2001 From: Masatake YAMATO Newsgroups: fj.comp.applications.misc Subject: Re: gimp =?iso-2022-jp?b?GyRCJWElSyVlITwkSzJoQXwbKEI=?= Date: 29 Jun 2001 04:18:16 +0900 Message-ID: References: > gimp のフィルタメニューにそのフィルタの適用例のアイコンというかサムネ > イルというかそのような画像を貼り込みたいのですが,これは可能でしょうか? > フィルタの適用例を紹介している Web ページは存在しますが,これをアプリ > ケーションのメニューに含めたいのです. gtkmenuitem.cにこんなのがあります。 GtkWidget* gtk_menu_item_new_with_label (const gchar *label) { GtkWidget *menu_item; GtkWidget *accel_label; menu_item = gtk_menu_item_new (); accel_label = gtk_accel_label_new (label); gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5); gtk_container_add (GTK_CONTAINER (menu_item), accel_label); gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (accel_label), menu_item); gtk_widget_show (accel_label); return menu_item; } これ真似して GtkWidget* gtk_menu_item_new_with_label_and_image (const gchar *label, Image * image) { GtkWidget *menu_item; GtkWidget *accel_label; GtkWidget *hbox; menu_item = gtk_menu_item_new (); hbox = gtk_hbox_new(); accel_label = gtk_accel_label_new (label); gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5); gtk_container_add (GTK_CONTAINER (hbox), accel_label); gtk_container_add (GTK_CONTAINER (hbox), image); gtk_container_add (GTK_CONTAINER (menu_item), hbox); gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (accel_label), menu_item); gtk_widget_show_all (hbox); return menu_item; } なんてのを作って...どうでしょう。 From oshiro@mibai.tec.u-ryukyu.ac.jp Fri Jun 29 18:46:00 2001 From: oshiro@mibai.tec.u-ryukyu.ac.jp (OSHIRO Naoki) Newsgroups: fj.comp.applications.misc Subject: Re: gimp =?iso-2022-jp?b?GyRCJWElSyVlITwkSzJoQXwbKEI=?= Date: 29 Jun 2001 18:45:47 +0900 Message-ID: References: NNTP-Posting-Date: 29 Jun 2001 09:45:49 GMT In-reply-to: Masatake YAMATO's message of 29 Jun 2001 04:18:16 +0900 In article Masatake YAMATO writes: > > gimp のフィルタメニューにそのフィルタの適用例のアイコンというかサムネ .. > gtkmenuitem.cにこんなのがあります。 gimp に即画像を組み込めるということではなく,gtk レベルで処理しなけれ ばならないのですね. > これ真似して .. > GtkWidget* > gtk_menu_item_new_with_label_and_image (const gchar *label, Image * image) ちょっと手元の参考書では Image タイプというのがわからなかったので, pixmap にして hbox で貼り込んでみました.サンプルプログラムを後ろに付 けます.メニューに gimp キャラクターを1つ貼り込んだだけなので,他のフィ ルタの適用画像がずらずら並んだときにどうなるかわかりませんが,見にくく なりそうな感じもしますね.それとフィルタ毎にどのようなサンプルアイコン を選択・作成するかはセンスが必要そうです. ひとまず,これで進めていけば目的の動作には達せると思います. ありがとうございました. * --ここから--------------------------------------------------------------- /* * imgmenu-test.c: */ /* gcc -o imgmenu-test imgmenu-test.c `gtk-config --cflags` `gtk-config --libs` */ #include /* メニューに表示するアイコン */ static gchar * gimp_icon_xpm[] = { "24 18 32 1", " c None", ". c #969592","+ c #B7B4B0","@ c #A19E9A", "# c #A9A6A1","$ c #8E8C8A","% c #7F7767","& c #766954", "* c #675B46","= c #5D574C","- c #4D4738","; c #6F6E6A", "> c #3E392C",", c #322715","' c #291F10",") c #1A1306", "! c #35342B","~ c #656258","{ c #625F53","] c #848381", "^ c #C6C4C1","/ c #68665F","( c #4C4232","_ c #302D24", ": c #444034","< c #585344","[ c #E6E3E3","} c #524C3D", "| c #4F4F4D","1 c #3B3A37","2 c #4A4941","3 c #777672", " . ", " + @# $% ", " ##+$&*=-=;$ @&% ", " +%>,,''')))!#$~{] ", " ^&,,,''))))'/~{=$ ", " #*(((>___!:<=<~$ ", " [^.+^#/}----}}/$ ", " $//@[+.[[^^#{<-:::|;. ", " ]$12+~|[[;2@{<(>!!|3@ ", "$=/12%%%@^;~%=}:>!!=$+ ", "#11|/~&%%%%/=-:>!_1;#^ ", "^;|/3<={~{{<---:>!|]+ ", " ]3~:-}}2:>}*&%%%3$.]. ", " ~1_'''!2=->-&]@#;2~]", " 3|!__1:_''_1=3$.]]@", " ;=211112=/3].# ", " .]33333].@ ", " "}; static gchar * null_icon_xpm[] = { "24 18 1 1", " c None"}; /* ラベルと画像のメニューアイテム */ GtkWidget* gtk_menu_item_new_with_label_and_pixmap(const gchar *label, const GtkWidget *pixmapid) { GtkWidget *menu_item; GtkWidget *accel_label; GtkWidget *hbox; menu_item = gtk_menu_item_new(); hbox = gtk_hbox_new(FALSE, 0); accel_label = gtk_accel_label_new(label); gtk_misc_set_alignment (GTK_MISC(accel_label), 0.0, 0.5); if (pixmapid!=NULL) gtk_box_pack_start(GTK_BOX(hbox), pixmapid, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), accel_label, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER (menu_item), hbox); gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (accel_label), menu_item); gtk_widget_show_all (hbox); return menu_item; } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *text; GtkWidget *vbox; GtkWidget *menu_bar; GtkWidget *file_menu, *file_item; GtkWidget *sub_item; GtkWidget *pixmapid; GtkPixmap *pixmap; GtkStyle *style; GdkBitmap *mask; /* 初期化 */ gtk_set_locale(); gtk_init(&argc,&argv); /* 全体のコンテナ */ window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); gtk_widget_show(window); /* vbox */ vbox=gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_widget_show(vbox); /* メニューバー */ menu_bar=gtk_menu_bar_new(); gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 0); gtk_widget_show(menu_bar); /* ファイルメニューアイテム */ file_item=gtk_menu_item_new_with_label("File"); gtk_widget_show(file_item); gtk_menu_bar_append(GTK_MENU_BAR(menu_bar), file_item); /* ファイルメニュー */ file_menu=gtk_menu_new(); /*****/ style=gtk_widget_get_style(window); pixmap=gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], gimp_icon_xpm); pixmapid=gtk_pixmap_new(pixmap, mask); sub_item=gtk_menu_item_new_with_label_and_pixmap("Open", pixmapid); gtk_menu_append(GTK_MENU(file_menu), sub_item); gtk_widget_show(sub_item); /*****/ style=gtk_widget_get_style(window); pixmap=gdk_pixmap_create_from_xpm_d(window->window, &mask, &style->bg[GTK_STATE_NORMAL], null_icon_xpm); pixmapid=gtk_pixmap_new(pixmap, mask); sub_item=gtk_menu_item_new_with_label_and_pixmap("Save", pixmapid); gtk_menu_append(GTK_MENU(file_menu), sub_item); gtk_widget_show(sub_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_item), file_menu); /* テキストウィジェット */ text=gtk_text_new(NULL,NULL); gtk_box_pack_start(GTK_BOX(vbox), text, TRUE, TRUE, 0); gtk_text_set_editable(GTK_TEXT(text), TRUE); gtk_widget_show(text); gtk_main(); return 0; } --ここまで--------------------------------------------------------------- ============================================= OSHIRO Naoki: oshiro@mibai.tec.u-ryukyu.ac.jp http://mibai.tec.u-ryukyu.ac.jp/~oshiro/