GtkWindow* CGameDialog::BuildDialog(){ GtkFrame* frame = create_dialog_frame( "Game settings", GTK_SHADOW_ETCHED_IN ); GtkVBox* vbox2 = create_dialog_vbox( 0, 4 ); gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( vbox2 ) ); { PreferencesPage preferencesPage( *this, GTK_WIDGET( vbox2 ) ); Global_constructPreferences( preferencesPage ); CreateGlobalFrame( preferencesPage ); } return create_simple_modal_dialog_window( "Global Preferences", m_modal, GTK_WIDGET( frame ) ); }
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; }