gtkmm を使用してカスタム ウィジェットを作成していますが、空き地で動作させることができませんでした。(ウィジェット自体はほとんど機能しません。動作します。次のステップに進む前に、Grade で動作させたいと思います。) Glade はウィジェットを見つけますが、ウィンドウに配置しようとすると、glade がクラッシュします。
さまざまな検索中に見つけたヒントに基づいて、次のコードをメイン ソース ファイルに追加しました。
extern "C"
{
GType date_chooser_get_type(void)
{
return DateChooser::get_type();
}
}
上記のコードが正しくないのではないかと疑っていますが、この関数が何をすべきかについての gtkmm やグレードのドキュメントが見つかりません。
グレードのカタログ ドキュメントに基づいて、次の XML を作成しました。
<?xml version="1.0" encoding="UTF-8"?>
<glade-catalog name="gtk-date-chooser" library="libgtkdatechooser-0.1.so" language="c++">
<glade-widget-classes>
<glade-widget-class name="DateChooser" generic-name="date-chooser" title="Date Chooser" />
</glade-widget-classes>
<glade-widget-group name="date" title="Date">
<glade-widget-class-ref name="DateChooser"/>
</glade-widget-group>
</glade-catalog>
これは、ウィジェットのソース ディレクトリのルートにあり、名前はgtk-date-chooser.xml
. 次を使用して、そのディレクトリでグレードを実行します。
GLADE_CATALOG_SEARCH_PATH=. GLADE_MODULE_SEARCH_PATH=./.libs glade
ウィンドウが表示されると、ウィジェットはカタログで指定された特別な「日付」グループにデフォルトのアイコンで表示されます。ウィンドウを配置し、ウィンドウに配置するウィジェットを選択すると、glade がクラッシュします。コンソールに次のように表示されます。
GladeUI-Message: 2 missing displayable value for GtkWidget::events
GladeUI-Message: No displayable values for property GtkTreeSelection::mode
GladeUI-Message: 1 missing displayable value for GtkCellRendererAccel::accel-mode
GladeUI-Message: 14 missing displayable value for GtkCellRendererAccel::accel-mods
(glade:23757): GladeUI-CRITICAL **: gwa_list_signals: assertion `real_type != 0' failed
(glade:23757): GLib-GObject-WARNING **: cannot retrieve class for invalid (unclassed) type `<invalid>'
(glade:23757): GLib-GObject-CRITICAL **: g_object_class_list_properties: assertion `G_IS_OBJECT_CLASS (class)' failed
(glade:23757): GLib-GObject-WARNING **: cannot retrieve class for invalid (unclassed) type `<invalid>'
(glade:23757): Gtk-CRITICAL **: gtk_container_class_list_child_properties: assertion `GTK_IS_CONTAINER_CLASS (cclass)' failed
GladeUI-Message: Glade needs artwork; a default icon will be used for the following classes:
DateChooser needs an icon named 'widget-gtk-date-chooser-date-chooser'
**
GladeUI:ERROR:glade-signal-model.c:800:glade_signal_model_iter_n_children: code should not be reached
この (未回答の) 質問への回答が手がかりになるようですが、その質問に対する回答や、私の問題を解決する手がかりを見つけることができませんでした。
私が使用しているバージョン:
- Ubuntu: 12.04
- gtkmm: 3.4.0-0ubuntu1
- グレード: 3.12.0-0ubuntu1
(トランクのバージョン、または Centos 6 または Fedora 16 に基づいてソリューションをテストしたいと思います。)