+ {
+ auto sc_win = ui::ScrolledWindow(ui::New);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sc_win), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ hbox.pack_start(sc_win, FALSE, FALSE, 0);
+ sc_win.show();
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sc_win), GTK_SHADOW_IN);
+
+ // prefs pages notebook
+ m_notebook = ui::Widget::from(gtk_notebook_new());
+ // hide the notebook tabs since its not supposed to look like a notebook
+ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(m_notebook), FALSE);
+ hbox.pack_start(m_notebook, TRUE, TRUE, 0);
+ m_notebook.show();
+
+
+ {
+ auto store = ui::TreeStore::from(gtk_tree_store_new(2, G_TYPE_STRING, G_TYPE_POINTER));
+
+ auto view = ui::TreeView(ui::TreeModel::from(store._handle));
+ gtk_tree_view_set_headers_visible(view, FALSE);
+
+ {
+ auto renderer = ui::CellRendererText(ui::New);
+ auto column = ui::TreeViewColumn("Preferences", renderer, {{"text", 0}});
+ gtk_tree_view_append_column(view, column);
+ }
+
+ {
+ auto selection = ui::TreeSelection::from(gtk_tree_view_get_selection(view));
+ selection.connect("changed", G_CALLBACK(treeSelection), this);
+ }
+
+ view.show();
+
+ sc_win.add(view);
+
+ {
+ /********************************************************************/
+ /* Add preference tree options */
+ /********************************************************************/
+ // Front page...
+ //GtkWidget* front =
+ PreferencePages_addPage(m_notebook, "Front Page");
+
+ {
+ auto global = PreferencePages_addPage(m_notebook, "Global Preferences");
+ {
+ PreferencesPage preferencesPage(*this, getVBox(global));
+ Global_constructPreferences(preferencesPage);
+ }
+ auto group = PreferenceTree_appendPage(store, 0, "Global", global);
+ {
+ auto game = PreferencePages_addPage(m_notebook, "Game");
+ PreferencesPage preferencesPage(*this, getVBox(game));
+ g_GamesDialog.CreateGlobalFrame(preferencesPage);
+
+ PreferenceTree_appendPage(store, &group, "Game", game);
+ }
+ }
+
+ {
+ auto interfacePage = PreferencePages_addPage(m_notebook, "Interface Preferences");
+ {
+ PreferencesPage preferencesPage(*this, getVBox(interfacePage));
+ PreferencesPageCallbacks_constructPage(g_interfacePreferences, preferencesPage);
+ }
+
+ auto group = PreferenceTree_appendPage(store, 0, "Interface", interfacePage);
+ PreferenceTreeGroup preferenceGroup(*this, m_notebook, store, group);
+
+ PreferenceGroupCallbacks_constructGroup(g_interfaceCallbacks, preferenceGroup);
+ }
+
+ {
+ auto display = PreferencePages_addPage(m_notebook, "Display Preferences");
+ {
+ PreferencesPage preferencesPage(*this, getVBox(display));
+ PreferencesPageCallbacks_constructPage(g_displayPreferences, preferencesPage);
+ }
+ auto group = PreferenceTree_appendPage(store, 0, "Display", display);
+ PreferenceTreeGroup preferenceGroup(*this, m_notebook, store, group);
+
+ PreferenceGroupCallbacks_constructGroup(g_displayCallbacks, preferenceGroup);
+ }
+
+ {
+ auto settings = PreferencePages_addPage(m_notebook, "General Settings");
+ {
+ PreferencesPage preferencesPage(*this, getVBox(settings));
+ PreferencesPageCallbacks_constructPage(g_settingsPreferences, preferencesPage);
+ }
+
+ auto group = PreferenceTree_appendPage(store, 0, "Settings", settings);
+ PreferenceTreeGroup preferenceGroup(*this, m_notebook, store, group);
+
+ PreferenceGroupCallbacks_constructGroup(g_settingsCallbacks, preferenceGroup);
+ }
+ }
+
+ gtk_tree_view_expand_all(view);
+
+ g_object_unref(G_OBJECT(store));
+ }