| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
Glade コンボボックスの攻略法Glade コンボボックスの攻略法 – glade コンボをこのクラスで使用する方法
Glade コンボボックスの攻略法ユーザインターフェイスを Glade でデザインするのは、 非常に便利で簡単です。しかし、このコンボでは独自のクラスを使用することができません。 Gtk2 の MVC モデルのおかげで、この強力なコンボを使用しつつ 内部では Gtk2_IndexedComboBox と同じモデルである Gtk2_IndexedComboBox_Model を使用することができます。 使用する Glade ファイル <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> <glade-interface> <widget class="GtkWindow" id="wndTest"> <property name="visible">True</property> <property name="title" translatable="yes">Gtk2_IndexedComboBox_Model test</property> <property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="window_position">GTK_WIN_POS_NONE</property> <property name="modal">False</property> <property name="resizable">True</property> <property name="destroy_with_parent">False</property> <property name="decorated">True</property> <property name="skip_taskbar_hint">False</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <signal name="destroy" handler="Gtk::main_quit"/> <child> <widget class="GtkComboBox" id="cmbNormal"> <property name="visible">True</property> </widget> </child> </widget> </glade-interface> PHP コード <?php require_once 'Gtk2/IndexedComboBox/Model.php'; $glade = new GladeXML(dirname(__FILE__) . '/glade.glade'); $glade->signal_autoconnect(); $combo = $glade->get_widget('cmbNormal'); $combo->connect('changed', 'comboChanged'); //show the second column only $renderer = new GtkCellRendererText(); $combo->pack_start($renderer); $combo->set_attributes($renderer, 'text', 1); $mod = new Gtk2_IndexedComboBox_Model(); $combo->set_model($mod); $mod->append(1, 'One'); $mod->append_array(array(2 => 'Two', 3 => 'Three')); $mod->prepend(4, 'Four'); function comboChanged($combo) { $nActive = $combo->get_active(); $iter = $combo->get_model()->get_iter($nActive); $key = $combo->get_model()->get_key($iter); $text = $combo->get_model()->get_text($iter); echo 'Selected: ' . $key . ' => ' . $text . "\r\n"; } Gtk::main(); ?> 注意すべき点は、自分でセルレンダラを設定し、 モデルのどのカラムを表示するのかを指定しなければならないということです。 それを除けば、あとは普通にモデルを作成し、それを set_model() で設定するだけです。 これまでの例で見てきたすべての Gtk2_IndexedComboBox のメソッドは、Gtk2_IndexedComboBox_Model でも使用できます。しかし get_active_key() と get_active_text() だけはこのモデルでは使用できません。 なぜなら、このモデルは選択状態を知らないからです。選択されている GtkTreeIter を取得するには、 get_active() と get_iter() を組み合わせて使用し、この iter オブジェクトを get_key() および get_text() に渡します。 |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「Glade コンボボックスの攻略法」をGoogle検索
|