-GtkWindow* PrefsDlg::BuildDialog(){
- PreferencesDialog_addInterfacePreferences( FreeCaller1<PreferencesPage&, Interface_constructPreferences>() );
- Mouse_registerPreferencesPage();
-
- GtkWindow* dialog = create_floating_window( "NetRadiant Preferences", m_parent );
-
- {
- GtkWidget* mainvbox = gtk_vbox_new( FALSE, 5 );
- gtk_container_add( GTK_CONTAINER( dialog ), mainvbox );
- gtk_container_set_border_width( GTK_CONTAINER( mainvbox ), 5 );
- gtk_widget_show( mainvbox );
-
- {
- GtkWidget* hbox = gtk_hbox_new( FALSE, 5 );
- gtk_widget_show( hbox );
- gtk_box_pack_end( GTK_BOX( mainvbox ), hbox, FALSE, TRUE, 0 );
-
- {
- GtkButton* button = create_dialog_button( "OK", G_CALLBACK( dialog_button_ok ), &m_modal );
- gtk_box_pack_end( GTK_BOX( hbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
- }
- {
- GtkButton* button = create_dialog_button( "Cancel", G_CALLBACK( dialog_button_cancel ), &m_modal );
- gtk_box_pack_end( GTK_BOX( hbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
- }
- {
- GtkButton* button = create_dialog_button( "Clean", G_CALLBACK( OnButtonClean ), this );
- gtk_box_pack_end( GTK_BOX( hbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
- }
- }
-
- {
- GtkWidget* hbox = gtk_hbox_new( FALSE, 5 );
- gtk_box_pack_start( GTK_BOX( mainvbox ), hbox, TRUE, TRUE, 0 );
- gtk_widget_show( hbox );
-
- {
- GtkWidget* sc_win = gtk_scrolled_window_new( 0, 0 );
- gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( sc_win ), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );
- gtk_box_pack_start( GTK_BOX( hbox ), sc_win, FALSE, FALSE, 0 );
- gtk_widget_show( sc_win );
- gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( sc_win ), GTK_SHADOW_IN );
-
- // prefs pages notebook
- m_notebook = 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 );
- gtk_box_pack_start( GTK_BOX( hbox ), m_notebook, TRUE, TRUE, 0 );
- gtk_widget_show( m_notebook );
-
-
- {
- GtkTreeStore* store = gtk_tree_store_new( 2, G_TYPE_STRING, G_TYPE_POINTER );
-
- GtkWidget* view = gtk_tree_view_new_with_model( GTK_TREE_MODEL( store ) );
- gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( view ), FALSE );
-
- {
- GtkCellRenderer* renderer = gtk_cell_renderer_text_new();
- GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes( "Preferences", renderer, "text", 0, NULL );
- gtk_tree_view_append_column( GTK_TREE_VIEW( view ), column );
- }
-
- {
- GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) );
- g_signal_connect( G_OBJECT( selection ), "changed", G_CALLBACK( treeSelection ), this );
- }
-
- gtk_widget_show( view );
-
- gtk_container_add( GTK_CONTAINER( sc_win ), view );
-
- {
- /********************************************************************/
- /* Add preference tree options */
- /********************************************************************/
- // Front page...
- //GtkWidget* front =
- PreferencePages_addPage( m_notebook, "Front Page" );
-
- {
- GtkWidget* global = PreferencePages_addPage( m_notebook, "Global Preferences" );
- {
- PreferencesPage preferencesPage( *this, getVBox( global ) );
- Global_constructPreferences( preferencesPage );
- }
- GtkTreeIter group = PreferenceTree_appendPage( store, 0, "Global", global );
- {
- GtkWidget* game = PreferencePages_addPage( m_notebook, "Game" );
- PreferencesPage preferencesPage( *this, getVBox( game ) );
- g_GamesDialog.CreateGlobalFrame( preferencesPage );
-
- PreferenceTree_appendPage( store, &group, "Game", game );
- }
- }
-
- {
- GtkWidget* interfacePage = PreferencePages_addPage( m_notebook, "Interface Preferences" );
- {
- PreferencesPage preferencesPage( *this, getVBox( interfacePage ) );
- PreferencesPageCallbacks_constructPage( g_interfacePreferences, preferencesPage );
- }
-
- GtkTreeIter group = PreferenceTree_appendPage( store, 0, "Interface", interfacePage );
- PreferenceTreeGroup preferenceGroup( *this, m_notebook, store, group );
-
- PreferenceGroupCallbacks_constructGroup( g_interfaceCallbacks, preferenceGroup );
- }
-
- {
- GtkWidget* display = PreferencePages_addPage( m_notebook, "Display Preferences" );
- {
- PreferencesPage preferencesPage( *this, getVBox( display ) );
- PreferencesPageCallbacks_constructPage( g_displayPreferences, preferencesPage );
- }
- GtkTreeIter group = PreferenceTree_appendPage( store, 0, "Display", display );
- PreferenceTreeGroup preferenceGroup( *this, m_notebook, store, group );
-
- PreferenceGroupCallbacks_constructGroup( g_displayCallbacks, preferenceGroup );
- }
-
- {
- GtkWidget* settings = PreferencePages_addPage( m_notebook, "General Settings" );
- {
- PreferencesPage preferencesPage( *this, getVBox( settings ) );
- PreferencesPageCallbacks_constructPage( g_settingsPreferences, preferencesPage );
- }
-
- GtkTreeIter group = PreferenceTree_appendPage( store, 0, "Settings", settings );
- PreferenceTreeGroup preferenceGroup( *this, m_notebook, store, group );
-
- PreferenceGroupCallbacks_constructGroup( g_settingsCallbacks, preferenceGroup );
- }
- }
-
- gtk_tree_view_expand_all( GTK_TREE_VIEW( view ) );
-
- g_object_unref( G_OBJECT( store ) );
- }
- }
- }
- }
-
- gtk_notebook_set_page( GTK_NOTEBOOK( m_notebook ), 0 );
-
- return dialog;
+ui::Window PrefsDlg::BuildDialog()
+{
+ PreferencesDialog_addInterfacePreferences(makeCallbackF(Interface_constructPreferences));
+ Mouse_registerPreferencesPage();
+
+ ui::Window dialog = ui::Window(create_floating_window("NetRadiant Preferences", m_parent));
+
+ {
+ auto mainvbox = ui::VBox(FALSE, 5);
+ dialog.add(mainvbox);
+ gtk_container_set_border_width(GTK_CONTAINER(mainvbox), 5);
+ mainvbox.show();
+
+ {
+ auto hbox = ui::HBox(FALSE, 5);
+ hbox.show();
+ mainvbox.pack_end(hbox, FALSE, TRUE, 0);
+
+ {
+ auto button = create_dialog_button("OK", G_CALLBACK(dialog_button_ok), &m_modal);
+ hbox.pack_end(button, FALSE, FALSE, 0);
+ }
+ {
+ auto button = create_dialog_button("Cancel", G_CALLBACK(dialog_button_cancel), &m_modal);
+ hbox.pack_end(button, FALSE, FALSE, 0);
+ }
+ {
+ auto button = create_dialog_button("Clean", G_CALLBACK(OnButtonClean), this);
+ hbox.pack_end(button, FALSE, FALSE, 0);
+ }
+ }
+
+ {
+ auto hbox = ui::HBox(FALSE, 5);
+ mainvbox.pack_start(hbox, TRUE, TRUE, 0);
+ hbox.show();
+
+ {
+ 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));
+ }
+ }
+ }
+ }
+
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(m_notebook), 0);
+
+ return dialog;