SimpleText DAY 4 - lookup_widget関数を使ってみる

いよいよソフトの機能を構築するところに入っていきます。

OPENボタンをclickすると、entryに入力されているファイル名を開く
という機能を実装したいので、ひとまず、
OPENボタンをclickすると、entryに入力されている文字をコマンドラインに出力
するようにしてみましょう。


手を加えるのは、callbacks.con_button_open_cliecked です。
entry内の文字列を取得する関数は


const gchar* gtk_entry_get_text (GtkEntry *entry);

という形で定義されていて、entryのポインタが必要です。


callback関数の引数に渡しておくという手もあるのですが、今回はlookup_widget関数を使ってみます。

lookup_widgetはgladeがsupport.c内に準備してくれた関数で、
]同じウィンドウにある他のwidgetのポインタを取得することができます。
具体的にやってみましょう。
on_button_open_clicked関数内では、
buttonのポインタがすでにあるので、それを使って
buttonの親widget上にあるentryのポインタを取得することができます。



on_button_open_clicked ( GtkButton *button, gpointer user_data)
{
GtkEntry *entry = (GtkEntry *)lookup_widget((GtkWidget *)button, (gchar *)"entry");
}
lookup_widget

  • 第1引数:分かっているwidgetのポインタ、
  • 第2引数:ポインタが欲しいwidgetの名前
  • 返り値 :欲しいポインタ

これでentryのポインタを持ってこれたので、entry内の文字列をコマンドライン上に出力します。



on_button_open_clicked ( GtkButton *button, gpointer user_data)
{
GtkEntry *entry = (GtkEntry *)lookup_widget((GtkWidget *)button, (gchar *)"entry");
gchar *filename = (gchar *)gtk_entry_get_text(entry);
g_print("%s\n", filename);
}

コンパイルして実行してみてください。

うまくいったでしょうか?


参考にしたサイト
lookup_widgetに関して:Gladeを用いたGUIアプリケーション開発
このSimpleTextのデザインもこのサイトからヒントを得ました。

GtkEntryに関して:GNOME Documentation Library GtkEntry
unstableとか書いてあるけど大丈夫でしょう...