X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fpreferences.cpp;h=0fee7ef9377e3ef9c83dd36857429de7dcc20bb1;hb=074614f03092ddf3ddaae4d945f4570a4435130d;hp=7d21c16ce6e022cb376b821531ade78728dd76b6;hpb=f0350b355f68497312c517c1bfd1fc216c722992;p=xonotic%2Fnetradiant.git diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index 7d21c16c..0fee7ef9 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -334,33 +334,6 @@ ui::Window CGameDialog::BuildDialog(){ return create_simple_modal_dialog_window( "Global Preferences", m_modal, frame ); } -class LoadGameFile -{ -std::list& mGames; -const char* mPath; -public: -LoadGameFile( std::list& games, const char* path ) : mGames( games ), mPath( path ){ -} -void operator()( const char* name ) const { - if ( !extension_equal( path_get_extension( name ), "game" ) ) { - return; - } - StringOutputStream strPath( 256 ); - strPath << mPath << name; - globalOutputStream() << strPath.c_str() << '\n'; - - xmlDocPtr pDoc = xmlParseFile( strPath.c_str() ); - if ( pDoc ) { - mGames.push_front( new CGameDescription( pDoc, name ) ); - xmlFreeDoc( pDoc ); - } - else - { - globalErrorStream() << "XML parser failed on '" << strPath.c_str() << "'\n"; - } -} -}; - void CGameDialog::ScanForGames(){ StringOutputStream strGamesPath( 256 ); strGamesPath << AppPath_get() << "games/"; @@ -377,7 +350,22 @@ void CGameDialog::ScanForGames(){ (if that's really needed) */ - Directory_forEach( path, LoadGameFile( mGames, path ) ); + Directory_forEach(path, [&](const char *name) { + if (!extension_equal(path_get_extension(name), "game")) { + return; + } + StringOutputStream strPath(256); + strPath << path << name; + globalOutputStream() << strPath.c_str() << '\n'; + + xmlDocPtr pDoc = xmlParseFile(strPath.c_str()); + if (pDoc) { + mGames.push_front(new CGameDescription(pDoc, name)); + xmlFreeDoc(pDoc); + } else { + globalErrorStream() << "XML parser failed on '" << strPath.c_str() << "'\n"; + } + }); } CGameDescription* CGameDialog::GameDescriptionForComboItem(){ @@ -542,7 +530,7 @@ void PrefsDlg::showPrefPage( ui::Widget prefpage ){ return; } -static void treeSelection( GtkTreeSelection* selection, gpointer data ){ +static void treeSelection( ui::TreeSelection selection, gpointer data ){ PrefsDlg *dlg = (PrefsDlg*)data; GtkTreeModel* model; @@ -633,7 +621,7 @@ inline ui::VBox getVBox( ui::Bin page ){ return ui::VBox::from(gtk_bin_get_child(page)); } -GtkTreeIter PreferenceTree_appendPage( GtkTreeStore* store, GtkTreeIter* parent, const char* name, ui::Widget page ){ +GtkTreeIter PreferenceTree_appendPage( ui::TreeStore store, GtkTreeIter* parent, const char* name, ui::Widget page ){ GtkTreeIter group; gtk_tree_store_append( store, &group, parent ); gtk_tree_store_set( store, &group, 0, name, 1, page, -1 ); @@ -663,10 +651,10 @@ class PreferenceTreeGroup : public PreferenceGroup { Dialog& m_dialog; ui::Widget m_notebook; -GtkTreeStore* m_store; +ui::TreeStore m_store; GtkTreeIter m_group; public: -PreferenceTreeGroup( Dialog& dialog, ui::Widget notebook, GtkTreeStore* store, GtkTreeIter group ) : +PreferenceTreeGroup( Dialog& dialog, ui::Widget notebook, ui::TreeStore store, GtkTreeIter group ) : m_dialog( dialog ), m_notebook( notebook ), m_store( store ), @@ -731,19 +719,19 @@ ui::Window PrefsDlg::BuildDialog(){ { - auto store = gtk_tree_store_new( 2, G_TYPE_STRING, G_TYPE_POINTER ); + auto store = ui::TreeStore(gtk_tree_store_new( 2, G_TYPE_STRING, G_TYPE_POINTER )); - ui::Widget view = ui::TreeView(ui::TreeModel( GTK_TREE_MODEL( store ) )); - gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( view ), FALSE ); + auto view = ui::TreeView(ui::TreeModel(store)); + gtk_tree_view_set_headers_visible(view, FALSE ); { auto renderer = ui::CellRendererText(ui::New); - GtkTreeViewColumn* column = ui::TreeViewColumn( "Preferences", renderer, {{"text", 0}} ); - gtk_tree_view_append_column( GTK_TREE_VIEW( view ), column ); + auto column = ui::TreeViewColumn( "Preferences", renderer, {{"text", 0}} ); + gtk_tree_view_append_column(view, column ); } { - auto selection = ui::TreeSelection(gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) )); + auto selection = ui::TreeSelection(gtk_tree_view_get_selection(view )); selection.connect( "changed", G_CALLBACK( treeSelection ), this ); } @@ -765,7 +753,7 @@ ui::Window PrefsDlg::BuildDialog(){ PreferencesPage preferencesPage( *this, getVBox( global ) ); Global_constructPreferences( preferencesPage ); } - GtkTreeIter group = PreferenceTree_appendPage( store, 0, "Global", global ); + auto group = PreferenceTree_appendPage( store, 0, "Global", global ); { auto game = PreferencePages_addPage( m_notebook, "Game" ); PreferencesPage preferencesPage( *this, getVBox( game ) ); @@ -782,7 +770,7 @@ ui::Window PrefsDlg::BuildDialog(){ PreferencesPageCallbacks_constructPage( g_interfacePreferences, preferencesPage ); } - GtkTreeIter group = PreferenceTree_appendPage( store, 0, "Interface", interfacePage ); + auto group = PreferenceTree_appendPage( store, 0, "Interface", interfacePage ); PreferenceTreeGroup preferenceGroup( *this, m_notebook, store, group ); PreferenceGroupCallbacks_constructGroup( g_interfaceCallbacks, preferenceGroup ); @@ -794,7 +782,7 @@ ui::Window PrefsDlg::BuildDialog(){ PreferencesPage preferencesPage( *this, getVBox( display ) ); PreferencesPageCallbacks_constructPage( g_displayPreferences, preferencesPage ); } - GtkTreeIter group = PreferenceTree_appendPage( store, 0, "Display", display ); + auto group = PreferenceTree_appendPage( store, 0, "Display", display ); PreferenceTreeGroup preferenceGroup( *this, m_notebook, store, group ); PreferenceGroupCallbacks_constructGroup( g_displayCallbacks, preferenceGroup ); @@ -807,14 +795,14 @@ ui::Window PrefsDlg::BuildDialog(){ PreferencesPageCallbacks_constructPage( g_settingsPreferences, preferencesPage ); } - GtkTreeIter group = PreferenceTree_appendPage( store, 0, "Settings", settings ); + 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( GTK_TREE_VIEW( view ) ); + gtk_tree_view_expand_all(view ); g_object_unref( G_OBJECT( store ) ); }