X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fmainframe.cpp;h=c4d2f40dcdb29ae7db3f2991cfb00ffd3c0f443c;hb=2a1cfc426e60b77c7b212d827e2592de01041266;hp=8d652ef2fa25ffdf3102cde25d91475cd0f04d3d;hpb=1ce2d1a4685918788e3f22c8f26f652e474da6c0;p=xonotic%2Fnetradiant.git diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp index 8d652ef2..c4d2f40d 100644 --- a/radiant/mainframe.cpp +++ b/radiant/mainframe.cpp @@ -26,6 +26,7 @@ // #include "mainframe.h" +#include "globaldefs.h" #include @@ -148,6 +149,8 @@ void VFS_Refresh(){ QE_InitVFS(); GlobalFileSystem().refresh(); g_vfsInitialized = true; + // also refresg models + RefreshReferences(); // also refresh texture browser TextureBrowser_RefreshShaders(); } @@ -178,7 +181,7 @@ void VFS_Destroy(){ // Home Paths -#ifdef WIN32 +#if GDEF_OS_WINDOWS #include #include const GUID qFOLDERID_SavedGames = {0x4C5C32FF, 0xBB9D, 0x43b0, {0xB5, 0xB4, 0x2D, 0x72, 0xE5, 0x4E, 0xAA, 0xA4}}; @@ -195,7 +198,7 @@ void HomePaths_Realise(){ if ( !string_empty( prefix ) ) { StringOutputStream path( 256 ); -#if defined( __APPLE__ ) +#if GDEF_OS_MACOS path.clear(); path << DirectoryCleaned( g_get_home_dir() ) << "Library/Application Support" << ( prefix + 1 ) << "/"; if ( file_is_directory( path.c_str() ) ) { @@ -206,7 +209,7 @@ void HomePaths_Realise(){ path << DirectoryCleaned( g_get_home_dir() ) << prefix << "/"; #endif -#if defined( WIN32 ) +#if GDEF_OS_WINDOWS TCHAR mydocsdir[MAX_PATH + 1]; wchar_t *mydocsdirw; HMODULE shfolder = LoadLibrary( "shfolder.dll" ); @@ -245,7 +248,7 @@ void HomePaths_Realise(){ } #endif -#if defined( POSIX ) +#if GDEF_OS_POSIX path.clear(); path << DirectoryCleaned( g_get_home_dir() ) << prefix << "/"; g_qeglobals.m_userEnginePath = path.c_str(); @@ -414,12 +417,12 @@ const char* GameToolsPath_get(){ void EnginePathImport( CopiedString& self, const char* value ){ setEnginePath( value ); } -typedef ReferenceCaller1 EnginePathImportCaller; +typedef ReferenceCaller EnginePathImportCaller; void Paths_constructPreferences( PreferencesPage& page ){ page.appendPathEntry( "Engine Path", true, - StringImportCallback( EnginePathImportCaller( g_strEnginePath ) ), - StringExportCallback( StringExportCaller( g_strEnginePath ) ) + {ImportExportCallback::Import_t( EnginePathImportCaller( g_strEnginePath ) ), + ImportExportCallback::Export_t( StringExportCaller( g_strEnginePath ) )} ); } void Paths_constructPage( PreferenceGroup& group ){ @@ -427,7 +430,7 @@ void Paths_constructPage( PreferenceGroup& group ){ Paths_constructPreferences( page ); } void Paths_registerPreferencesPage(){ - PreferencesDialog_addSettingsPage( FreeCaller1() ); + PreferencesDialog_addSettingsPage( makeCallbackF(Paths_constructPage) ); } @@ -441,7 +444,7 @@ ui::Window BuildDialog(){ frame.add(vbox2); { - PreferencesPage preferencesPage( *this, ui::Widget(GTK_WIDGET( vbox2 )) ); + PreferencesPage preferencesPage( *this, vbox2 ); Paths_constructPreferences( preferencesPage ); } @@ -518,36 +521,27 @@ void gamemode_set( const char* gamemode ){ #include "os/dir.h" -class CLoadModule -{ -const char* m_path; -public: -CLoadModule( const char* path ) : m_path( path ){ -} -void operator()( const char* name ) const { - char fullname[1024]; - ASSERT_MESSAGE( strlen( m_path ) + strlen( name ) < 1024, "" ); - strcpy( fullname, m_path ); - strcat( fullname, name ); - globalOutputStream() << "Found '" << fullname << "'\n"; - GlobalModuleServer_loadModule( fullname ); -} -}; - const char* const c_library_extension = #if defined( CMAKE_SHARED_MODULE_SUFFIX ) CMAKE_SHARED_MODULE_SUFFIX -#elif defined( WIN32 ) +#elif GDEF_OS_WINDOWS "dll" -#elif defined ( __APPLE__ ) +#elif GDEF_OS_MACOS "dylib" -#elif defined( __linux__ ) || defined ( __FreeBSD__ ) +#elif GDEF_OS_LINUX || GDEF_OS_BSD "so" #endif ; void Radiant_loadModules( const char* path ){ - Directory_forEach( path, MatchFileExtension( c_library_extension, CLoadModule( path ) ) ); + Directory_forEach(path, matchFileExtension(c_library_extension, [&](const char *name) { + char fullname[1024]; + ASSERT_MESSAGE(strlen(path) + strlen(name) < 1024, ""); + strcpy(fullname, path); + strcat(fullname, name); + globalOutputStream() << "Found '" << fullname << "'\n"; + GlobalModuleServer_loadModule(fullname); + })); } void Radiant_loadModulesFromRoot( const char* directory ){ @@ -796,8 +790,8 @@ void ColorScheme_Ydnar(){ XY_UpdateAllWindows(); } -typedef Callback1 GetColourCallback; -typedef Callback1 SetColourCallback; +typedef Callback GetColourCallback; +typedef Callback SetColourCallback; class ChooseColour { @@ -820,37 +814,37 @@ void operator()(){ void Colour_get( const Vector3& colour, Vector3& other ){ other = colour; } -typedef ConstReferenceCaller1 ColourGetCaller; +typedef ConstReferenceCaller ColourGetCaller; void Colour_set( Vector3& colour, const Vector3& other ){ colour = other; SceneChangeNotify(); } -typedef ReferenceCaller1 ColourSetCaller; +typedef ReferenceCaller ColourSetCaller; void BrushColour_set( const Vector3& other ){ g_xywindow_globals.color_brushes = other; SetWorldspawnColour( g_xywindow_globals.color_brushes ); SceneChangeNotify(); } -typedef FreeCaller1 BrushColourSetCaller; +typedef FreeCaller BrushColourSetCaller; void ClipperColour_set( const Vector3& other ){ g_xywindow_globals.color_clipper = other; Brush_clipperColourChanged(); SceneChangeNotify(); } -typedef FreeCaller1 ClipperColourSetCaller; +typedef FreeCaller ClipperColourSetCaller; void TextureBrowserColour_get( Vector3& other ){ other = TextureBrowser_getBackgroundColour( GlobalTextureBrowser() ); } -typedef FreeCaller1 TextureBrowserColourGetCaller; +typedef FreeCaller TextureBrowserColourGetCaller; void TextureBrowserColour_set( const Vector3& other ){ TextureBrowser_setBackgroundColour( GlobalTextureBrowser(), other ); } -typedef FreeCaller1 TextureBrowserColourSetCaller; +typedef FreeCaller TextureBrowserColourSetCaller; class ColoursMenu @@ -955,13 +949,13 @@ void OpenBugReportURL(){ } -ui::Widget g_page_console; +ui::Widget g_page_console{ui::null}; void Console_ToggleShow(){ GroupDialog_showPage( g_page_console ); } -ui::Widget g_page_entity; +ui::Widget g_page_entity{ui::null}; void EntityInspector_ToggleShow(){ GroupDialog_showPage( g_page_entity ); @@ -1005,24 +999,24 @@ template class BoolFunctionExport { public: -static void apply( const BoolImportCallback& importCallback ){ +static void apply( const ImportExportCallback::Import_t& importCallback ){ importCallback( BoolFunction() ); } }; -typedef FreeCaller1::apply> EdgeModeApplyCaller; +typedef FreeCaller::Import_t&), &BoolFunctionExport::apply> EdgeModeApplyCaller; EdgeModeApplyCaller g_edgeMode_button_caller; -BoolExportCallback g_edgeMode_button_callback( g_edgeMode_button_caller ); +ImportExportCallback::Export_t g_edgeMode_button_callback( g_edgeMode_button_caller ); ToggleItem g_edgeMode_button( g_edgeMode_button_callback ); -typedef FreeCaller1::apply> VertexModeApplyCaller; +typedef FreeCaller::Import_t&), &BoolFunctionExport::apply> VertexModeApplyCaller; VertexModeApplyCaller g_vertexMode_button_caller; -BoolExportCallback g_vertexMode_button_callback( g_vertexMode_button_caller ); +ImportExportCallback::Export_t g_vertexMode_button_callback( g_vertexMode_button_caller ); ToggleItem g_vertexMode_button( g_vertexMode_button_callback ); -typedef FreeCaller1::apply> FaceModeApplyCaller; +typedef FreeCaller::Import_t&), &BoolFunctionExport::apply> FaceModeApplyCaller; FaceModeApplyCaller g_faceMode_button_caller; -BoolExportCallback g_faceMode_button_callback( g_faceMode_button_caller ); +ImportExportCallback::Export_t g_faceMode_button_callback( g_faceMode_button_caller ); ToggleItem g_faceMode_button( g_faceMode_button_callback ); void ComponentModeChanged(){ @@ -1296,44 +1290,44 @@ void Selection_NudgeRight(){ } -void TranslateToolExport( const BoolImportCallback& importCallback ){ +void TranslateToolExport( const ImportExportCallback::Import_t& importCallback ){ importCallback( GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eTranslate ); } -void RotateToolExport( const BoolImportCallback& importCallback ){ +void RotateToolExport( const ImportExportCallback::Import_t& importCallback ){ importCallback( GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eRotate ); } -void ScaleToolExport( const BoolImportCallback& importCallback ){ +void ScaleToolExport( const ImportExportCallback::Import_t& importCallback ){ importCallback( GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eScale ); } -void DragToolExport( const BoolImportCallback& importCallback ){ +void DragToolExport( const ImportExportCallback::Import_t& importCallback ){ importCallback( GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eDrag ); } -void ClipperToolExport( const BoolImportCallback& importCallback ){ +void ClipperToolExport( const ImportExportCallback::Import_t& importCallback ){ importCallback( GlobalSelectionSystem().ManipulatorMode() == SelectionSystem::eClip ); } -FreeCaller1 g_translatemode_button_caller; -BoolExportCallback g_translatemode_button_callback( g_translatemode_button_caller ); +FreeCaller::Import_t&), TranslateToolExport> g_translatemode_button_caller; +ImportExportCallback::Export_t g_translatemode_button_callback( g_translatemode_button_caller ); ToggleItem g_translatemode_button( g_translatemode_button_callback ); -FreeCaller1 g_rotatemode_button_caller; -BoolExportCallback g_rotatemode_button_callback( g_rotatemode_button_caller ); +FreeCaller::Import_t&), RotateToolExport> g_rotatemode_button_caller; +ImportExportCallback::Export_t g_rotatemode_button_callback( g_rotatemode_button_caller ); ToggleItem g_rotatemode_button( g_rotatemode_button_callback ); -FreeCaller1 g_scalemode_button_caller; -BoolExportCallback g_scalemode_button_callback( g_scalemode_button_caller ); +FreeCaller::Import_t&), ScaleToolExport> g_scalemode_button_caller; +ImportExportCallback::Export_t g_scalemode_button_callback( g_scalemode_button_caller ); ToggleItem g_scalemode_button( g_scalemode_button_callback ); -FreeCaller1 g_dragmode_button_caller; -BoolExportCallback g_dragmode_button_callback( g_dragmode_button_caller ); +FreeCaller::Import_t&), DragToolExport> g_dragmode_button_caller; +ImportExportCallback::Export_t g_dragmode_button_callback( g_dragmode_button_caller ); ToggleItem g_dragmode_button( g_dragmode_button_callback ); -FreeCaller1 g_clipper_button_caller; -BoolExportCallback g_clipper_button_callback( g_clipper_button_caller ); +FreeCaller::Import_t&), ClipperToolExport> g_clipper_button_caller; +ImportExportCallback::Export_t g_clipper_button_callback( g_clipper_button_caller ); ToggleItem g_clipper_button( g_clipper_button_callback ); void ToolChanged(){ @@ -1628,7 +1622,7 @@ WaitDialog create_wait_dialog( const char* title, const char* text ){ gtk_misc_set_alignment( GTK_MISC( dialog.m_label ), 0.0, 0.5 ); gtk_label_set_justify( dialog.m_label, GTK_JUSTIFY_LEFT ); dialog.m_label.show(); - gtk_widget_set_size_request( GTK_WIDGET( dialog.m_label ), 200, -1 ); + dialog.m_label.dimensions(200, -1); dialog.m_window.add(dialog.m_label); } @@ -1656,7 +1650,7 @@ bool MainFrame_isActiveApp(){ for ( GList* i = list; i != 0; i = g_list_next( i ) ) { //globalOutputStream() << "toplevel.. "; - if ( gtk_window_is_active( GTK_WINDOW( i->data ) ) ) { + if ( gtk_window_is_active( ui::Window::from( i->data ) ) ) { //globalOutputStream() << "is active\n"; return true; } @@ -1674,7 +1668,7 @@ bool ScreenUpdates_Enabled(){ } void ScreenUpdates_process(){ - if ( redrawRequired() && gtk_widget_get_visible( g_wait.m_window ) ) { + if ( redrawRequired() && g_wait.m_window.visible() ) { ui::process(); } } @@ -1689,15 +1683,15 @@ void ScreenUpdates_Disable( const char* message, const char* title ){ bool isActiveApp = MainFrame_isActiveApp(); g_wait = create_wait_dialog( title, message ); - gtk_grab_add( GTK_WIDGET( g_wait.m_window ) ); + gtk_grab_add( g_wait.m_window ); if ( isActiveApp ) { g_wait.m_window.show(); ScreenUpdates_process(); } } - else if ( gtk_widget_get_visible( g_wait.m_window ) ) { - gtk_label_set_text( g_wait.m_label, message ); + else if ( g_wait.m_window.visible() ) { + g_wait.m_label.text(message); ScreenUpdates_process(); } g_wait_stack.push_back( message ); @@ -1708,16 +1702,16 @@ void ScreenUpdates_Enable(){ g_wait_stack.pop_back(); if ( g_wait_stack.empty() ) { EverySecondTimer_enable(); - //gtk_widget_set_sensitive(GTK_WIDGET(MainFrame_getWindow()), TRUE); + //gtk_widget_set_sensitive(MainFrame_getWindow(), TRUE); - gtk_grab_remove( GTK_WIDGET( g_wait.m_window ) ); + gtk_grab_remove( g_wait.m_window ); destroy_floating_window( g_wait.m_window ); g_wait.m_window = ui::Window{ui::null}; //gtk_window_present(MainFrame_getWindow()); } - else if ( gtk_widget_get_visible( g_wait.m_window ) ) { - gtk_label_set_text( g_wait.m_label, g_wait_stack.back().c_str() ); + else if ( g_wait.m_window.visible() ) { + g_wait.m_label.text(g_wait_stack.back().c_str()); ScreenUpdates_process(); } } @@ -1776,10 +1770,10 @@ void ClipperChangeNotify(){ } -LatchedInt g_Layout_viewStyle( 0, "Window Layout" ); -LatchedBool g_Layout_enableDetachableMenus( true, "Detachable Menus" ); -LatchedBool g_Layout_enablePatchToolbar( true, "Patch Toolbar" ); -LatchedBool g_Layout_enablePluginToolbar( true, "Plugin Toolbar" ); +LatchedValue g_Layout_viewStyle( 0, "Window Layout" ); +LatchedValue g_Layout_enableDetachableMenus( true, "Detachable Menus" ); +LatchedValue g_Layout_enablePatchToolbar( true, "Patch Toolbar" ); +LatchedValue g_Layout_enablePluginToolbar( true, "Plugin Toolbar" ); @@ -1875,10 +1869,10 @@ void fill_view_xz_front_menu( ui::Menu menu ){ } -ui::Widget g_toggle_z_item; -ui::Widget g_toggle_console_item; -ui::Widget g_toggle_entity_item; -ui::Widget g_toggle_entitylist_item; +ui::Widget g_toggle_z_item{ui::null}; +ui::Widget g_toggle_console_item{ui::null}; +ui::Widget g_toggle_entity_item{ui::null}; +ui::Widget g_toggle_entitylist_item{ui::null}; ui::MenuItem create_view_menu( MainFrame::EViewStyle style ){ // View menu @@ -2091,15 +2085,15 @@ ui::MenuItem create_misc_menu(){ } #if 0 - create_menu_item_with_mnemonic( menu, "_Benchmark", FreeCaller() ); + create_menu_item_with_mnemonic( menu, "_Benchmark", makeCallbackF(GlobalCamera_Benchmark) ); #endif menu.add(create_colours_menu()); create_menu_item_with_mnemonic( menu, "Find brush...", "FindBrush" ); create_menu_item_with_mnemonic( menu, "Map Info...", "MapInfo" ); // http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=394 -// create_menu_item_with_mnemonic(menu, "_Print XY View", FreeCaller()); - create_menu_item_with_mnemonic( menu, "_Background select", FreeCaller() ); +// create_menu_item_with_mnemonic(menu, "_Print XY View", FreeCaller()); + create_menu_item_with_mnemonic( menu, "_Background select", makeCallbackF(WXY_BackgroundSelect) ); return misc_menu_item; } @@ -2156,14 +2150,14 @@ ui::MenuItem create_help_menu(){ // it will take care of hooking the Sys_OpenURL calls etc. create_game_help_menu( menu ); - create_menu_item_with_mnemonic( menu, "Bug report", FreeCaller() ); - create_menu_item_with_mnemonic( menu, "Shortcuts list", FreeCaller() ); - create_menu_item_with_mnemonic( menu, "_About", FreeCaller() ); + create_menu_item_with_mnemonic( menu, "Bug report", makeCallbackF(OpenBugReportURL) ); + create_menu_item_with_mnemonic( menu, "Shortcuts list", makeCallbackF(DoCommandListDlg) ); + create_menu_item_with_mnemonic( menu, "_About", makeCallbackF(DoAbout) ); return help_menu_item; } -GtkMenuBar* create_main_menu( MainFrame::EViewStyle style ){ +ui::MenuBar create_main_menu( MainFrame::EViewStyle style ){ auto menu_bar = ui::MenuBar(GTK_MENU_BAR( gtk_menu_bar_new() )); menu_bar.show(); @@ -2318,7 +2312,7 @@ ui::Toolbar create_main_toolbar( MainFrame::EViewStyle style ){ toolbar.show(); auto space = [&]() { - auto btn = ui::Widget(GTK_WIDGET(gtk_separator_tool_item_new())); + auto btn = ui::ToolItem(gtk_separator_tool_item_new()); btn.show(); toolbar.add(btn); }; @@ -2383,8 +2377,8 @@ ui::Toolbar create_main_toolbar( MainFrame::EViewStyle style ){ // disable the console and texture button in the regular layouts if ( style == MainFrame::eRegular || style == MainFrame::eRegularLeft ) { - gtk_widget_set_sensitive( GTK_WIDGET( g_view_console_button ), FALSE ); - gtk_widget_set_sensitive( GTK_WIDGET( g_view_textures_button ), FALSE ); + gtk_widget_set_sensitive( g_view_console_button , FALSE ); + gtk_widget_set_sensitive( g_view_textures_button , FALSE ); } return toolbar; @@ -2399,15 +2393,15 @@ ui::Widget create_main_statusbar( ui::Widget pStatusLabel[c_count_status] ){ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 ); gtk_misc_set_padding( GTK_MISC( label ), 4, 2 ); label.show(); - gtk_table_attach_defaults( table, GTK_WIDGET( label ), 0, 1, 0, 1 ); - pStatusLabel[c_command_status] = ui::Widget(GTK_WIDGET( label )); + table.attach(label, {0, 1, 0, 1}); + pStatusLabel[c_command_status] = ui::Widget(label ); } - for ( int i = 1; i < c_count_status; ++i ) + for (unsigned int i = 1; (int) i < c_count_status; ++i) { auto frame = ui::Frame(); frame.show(); - gtk_table_attach_defaults( table, GTK_WIDGET( frame ), i, i + 1, 0, 1 ); + table.attach(frame, {i, i + 1, 0, 1}); gtk_frame_set_shadow_type( frame, GTK_SHADOW_IN ); auto label = ui::Label( "Label" ); @@ -2416,10 +2410,10 @@ ui::Widget create_main_statusbar( ui::Widget pStatusLabel[c_count_status] ){ gtk_misc_set_padding( GTK_MISC( label ), 4, 2 ); label.show(); frame.add(label); - pStatusLabel[i] = ui::Widget(GTK_WIDGET( label )); + pStatusLabel[i] = ui::Widget(label ); } - return ui::Widget(GTK_WIDGET( table )); + return ui::Widget(table ); } #if 0 @@ -2467,7 +2461,7 @@ WindowFocusPrinter g_mainframeFocusPrinter( "mainframe" ); class MainWindowActive { static gboolean notify( ui::Window window, gpointer dummy, MainWindowActive* self ){ - if ( g_wait.m_window && gtk_window_is_active( window ) && !gtk_widget_get_visible( g_wait.m_window ) ) { + if ( g_wait.m_window && gtk_window_is_active( window ) && !g_wait.m_window.visible() ) { g_wait.m_window.show(); } @@ -2509,7 +2503,7 @@ ui::Window MainFrame_getWindow() std::vector g_floating_windows; -MainFrame::MainFrame() : m_window( 0 ), m_idleRedrawStatusText( RedrawStatusTextCaller( *this ) ){ +MainFrame::MainFrame() : m_idleRedrawStatusText( RedrawStatusTextCaller( *this ) ){ m_pXYWnd = 0; m_pCamWnd = 0; m_pZWnd = 0; @@ -2517,9 +2511,8 @@ MainFrame::MainFrame() : m_window( 0 ), m_idleRedrawStatusText( RedrawStatusText m_pXZWnd = 0; m_pActiveXY = 0; - for ( int n = 0; n < c_count_status; n++ ) - { - m_pStatusLabel[n] = ui::root; + for (auto &n : m_pStatusLabel) { + n = NULL; } m_bSleeping = false; @@ -2530,16 +2523,16 @@ MainFrame::MainFrame() : m_window( 0 ), m_idleRedrawStatusText( RedrawStatusText MainFrame::~MainFrame(){ SaveWindowInfo(); - gtk_widget_hide( GTK_WIDGET( m_window ) ); + m_window.hide(); Shutdown(); for ( std::vector::iterator i = g_floating_windows.begin(); i != g_floating_windows.end(); ++i ) { - gtk_widget_destroy( *i ); + i->destroy(); } - gtk_widget_destroy( GTK_WIDGET( m_window ) ); + m_window.destroy(); } void MainFrame::SetActiveXY( XYWnd* p ){ @@ -2601,7 +2594,7 @@ void MainFrame::CreateContexts(){ #endif } -#ifdef _DEBUG +#if GDEF_DEBUG //#define DBG_SLEEP #endif @@ -2672,7 +2665,7 @@ ui::Window create_splash(){ image.show(); window.add(image); - gtk_widget_set_size_request( GTK_WIDGET( window ), -1, -1 ); + window.dimensions(-1, -1); window.show(); return window; @@ -2687,7 +2680,7 @@ void show_splash(){ } void hide_splash(){ - gtk_widget_destroy( GTK_WIDGET( splash_screen ) ); + splash_screen.destroy(); } WindowPositionTracker g_posCamWnd; @@ -2710,7 +2703,7 @@ void MainFrame::Create(){ gtk_window_set_transient_for( splash_screen, window ); -#if !defined( WIN32 ) +#if !GDEF_OS_WINDOWS { GdkPixbuf* pixbuf = pixbuf_new_from_file_with_mask( "bitmaps/icon.png" ); if ( pixbuf != 0 ) { @@ -2720,7 +2713,7 @@ void MainFrame::Create(){ } #endif - gtk_widget_add_events( GTK_WIDGET( window ), GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK ); + gtk_widget_add_events( window , GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK ); window.connect( "delete_event", G_CALLBACK( mainframe_delete ), this ); m_position_tracker.connect( window ); @@ -2734,7 +2727,7 @@ void MainFrame::Create(){ GetPlugInMgr().Init( window ); - ui::Widget vbox = ui::VBox( FALSE, 0 ); + auto vbox = ui::VBox( FALSE, 0 ); window.add(vbox); vbox.show(); @@ -2744,20 +2737,20 @@ void MainFrame::Create(){ register_shortcuts(); - GtkMenuBar* main_menu = create_main_menu( CurrentStyle() ); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( main_menu ), FALSE, FALSE, 0 ); + auto main_menu = create_main_menu( CurrentStyle() ); + vbox.pack_start( main_menu, FALSE, FALSE, 0 ); - GtkToolbar* main_toolbar = create_main_toolbar( CurrentStyle() ); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( main_toolbar ), FALSE, FALSE, 0 ); + auto main_toolbar = create_main_toolbar( CurrentStyle() ); + vbox.pack_start( main_toolbar, FALSE, FALSE, 0 ); - GtkToolbar* plugin_toolbar = create_plugin_toolbar(); + auto plugin_toolbar = create_plugin_toolbar(); if ( !g_Layout_enablePluginToolbar.m_value ) { - gtk_widget_hide( GTK_WIDGET( plugin_toolbar ) ); + plugin_toolbar.hide(); } - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( plugin_toolbar ), FALSE, FALSE, 0 ); + vbox.pack_start( plugin_toolbar, FALSE, FALSE, 0 ); - ui::Widget main_statusbar = create_main_statusbar( m_pStatusLabel ); - gtk_box_pack_end( GTK_BOX( vbox ), main_statusbar, FALSE, TRUE, 2 ); + ui::Widget main_statusbar = create_main_statusbar(reinterpret_cast(m_pStatusLabel)); + vbox.pack_end(main_statusbar, FALSE, TRUE, 2); GroupDialog_constructWindow( window ); g_page_entity = GroupDialog_addPage( "Entities", EntityInspector_constructWindow( GroupDialog_getWindow() ), RawStringExportCaller( "Entities" ) ); @@ -2766,7 +2759,7 @@ void MainFrame::Create(){ g_page_console = GroupDialog_addPage( "Console", Console_constructWindow( GroupDialog_getWindow() ), RawStringExportCaller( "Console" ) ); } -#ifdef WIN32 +#if GDEF_OS_WINDOWS if ( g_multimon_globals.m_bStartOnPrimMon ) { PositionWindowOnPrimaryScreen( g_layout_globals.m_position ); window_set_position( window, g_layout_globals.m_position ); @@ -2789,9 +2782,9 @@ void MainFrame::Create(){ if ( CurrentStyle() == eRegular || CurrentStyle() == eRegularLeft ) { { - ui::Widget vsplit = ui::VPaned(); + ui::Widget vsplit = ui::VPaned(ui::New); m_vSplit = vsplit; - gtk_box_pack_start( GTK_BOX( vbox ), vsplit, TRUE, TRUE, 0 ); + vbox.pack_start( vsplit, TRUE, TRUE, 0 ); vsplit.show(); // console @@ -2799,7 +2792,7 @@ void MainFrame::Create(){ gtk_paned_pack2( GTK_PANED( vsplit ), console_window, FALSE, TRUE ); { - ui::Widget hsplit = ui::HPaned(); + ui::Widget hsplit = ui::HPaned(ui::New); hsplit.show(); m_hSplit = hsplit; gtk_paned_add1( GTK_PANED( vsplit ), hsplit ); @@ -2807,10 +2800,10 @@ void MainFrame::Create(){ // xy m_pXYWnd = new XYWnd(); m_pXYWnd->SetViewType( XY ); - ui::Widget xy_window = ui::Widget(GTK_WIDGET( create_framed_widget( m_pXYWnd->GetWidget() ) )); + ui::Widget xy_window = ui::Widget(create_framed_widget( m_pXYWnd->GetWidget( ) )); { - ui::Widget vsplit2 = ui::VPaned(); + ui::Widget vsplit2 = ui::VPaned(ui::New); vsplit2.show(); m_vSplit2 = vsplit2; @@ -2829,14 +2822,14 @@ void MainFrame::Create(){ m_pCamWnd = NewCamWnd(); GlobalCamera_setCamWnd( *m_pCamWnd ); CamWnd_setParent( *m_pCamWnd, window ); - GtkFrame* camera_window = create_framed_widget( CamWnd_getWidget( *m_pCamWnd ) ); + auto camera_window = create_framed_widget( CamWnd_getWidget( *m_pCamWnd ) ); - gtk_paned_add1( GTK_PANED( vsplit2 ), GTK_WIDGET( camera_window ) ); + gtk_paned_add1( GTK_PANED( vsplit2 ), camera_window ); // textures - GtkFrame* texture_window = create_framed_widget( TextureBrowser_constructWindow( window ) ); + auto texture_window = create_framed_widget( TextureBrowser_constructWindow( window ) ); - gtk_paned_add2( GTK_PANED( vsplit2 ), GTK_WIDGET( texture_window ) ); + gtk_paned_add2( GTK_PANED( vsplit2 ), texture_window ); } } } @@ -2931,8 +2924,8 @@ void MainFrame::Create(){ } { - GtkFrame* frame = create_framed_widget( TextureBrowser_constructWindow( GroupDialog_getWindow() ) ); - g_page_textures = GroupDialog_addPage( "Textures", ui::Widget(GTK_WIDGET( frame )), TextureBrowserExportTitleCaller() ); + auto frame = create_framed_widget( TextureBrowser_constructWindow( GroupDialog_getWindow() ) ); + g_page_textures = GroupDialog_addPage( "Textures", frame, TextureBrowserExportTitleCaller() ); } GroupDialog_show(); @@ -2960,12 +2953,12 @@ void MainFrame::Create(){ ui::Widget xz = m_pXZWnd->GetWidget(); - GtkHPaned* split = create_split_views( camera, yz, xy, xz ); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( split ), TRUE, TRUE, 0 ); + auto split = create_split_views( camera, yz, xy, xz ); + vbox.pack_start( split, TRUE, TRUE, 0 ); { - GtkFrame* frame = create_framed_widget( TextureBrowser_constructWindow( window ) ); - g_page_textures = GroupDialog_addPage( "Textures", ui::Widget(GTK_WIDGET( frame )), TextureBrowserExportTitleCaller() ); + auto frame = create_framed_widget( TextureBrowser_constructWindow( window ) ); + g_page_textures = GroupDialog_addPage( "Textures", frame, TextureBrowserExportTitleCaller() ); } } @@ -2978,7 +2971,7 @@ void MainFrame::Create(){ SetActiveXY( m_pXYWnd ); AddGridChangeCallback( SetGridStatusCaller( *this ) ); - AddGridChangeCallback( ReferenceCaller( *this ) ); + AddGridChangeCallback( ReferenceCaller( *this ) ); g_defaultToolMode = DragMode; g_defaultToolMode(); @@ -3006,7 +2999,7 @@ void MainFrame::SaveWindowInfo(){ g_layout_globals.m_position = m_position_tracker.getPosition(); - g_layout_globals.nState = gdk_window_get_state( gtk_widget_get_window(GTK_WIDGET( m_window )) ); + g_layout_globals.nState = gdk_window_get_state( gtk_widget_get_window(m_window ) ); } void MainFrame::Shutdown(){ @@ -3038,11 +3031,11 @@ void MainFrame::Shutdown(){ } void MainFrame::RedrawStatusText(){ - gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_command_status] ), m_command_status.c_str() ); - gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_position_status] ), m_position_status.c_str() ); - gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_brushcount_status] ), m_brushcount_status.c_str() ); - gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_texture_status] ), m_texture_status.c_str() ); - gtk_label_set_text( GTK_LABEL( m_pStatusLabel[c_grid_status] ), m_grid_status.c_str() ); + ui::Label::from(m_pStatusLabel[c_command_status]).text(m_command_status.c_str()); + ui::Label::from(m_pStatusLabel[c_position_status]).text(m_position_status.c_str()); + ui::Label::from(m_pStatusLabel[c_brushcount_status]).text(m_brushcount_status.c_str()); + ui::Label::from(m_pStatusLabel[c_texture_status]).text(m_texture_status.c_str()); + ui::Label::from(m_pStatusLabel[c_grid_status]).text(m_grid_status.c_str()); } void MainFrame::UpdateStatusText(){ @@ -3106,11 +3099,11 @@ void GlobalGL_sharedContextCreated(){ GlobalShaderCache().realise(); Textures_Realise(); -#ifdef WIN32 +#if GDEF_OS_WINDOWS /* win32 is dodgy here, just use courier new then */ g_font = glfont_create( "arial 9" ); #else - GtkSettings *settings = gtk_settings_get_default(); + auto settings = gtk_settings_get_default(); gchar *fontname; g_object_get( settings, "gtk-font-name", &fontname, NULL ); g_font = glfont_create( fontname ); @@ -3133,26 +3126,22 @@ void Layout_constructPreferences( PreferencesPage& page ){ page.appendRadioIcons( "Window Layout", STRING_ARRAY_RANGE( layouts ), - LatchedIntImportCaller( g_Layout_viewStyle ), - IntExportCaller( g_Layout_viewStyle.m_latched ) + mkImportExportCallback( g_Layout_viewStyle ) ); } page.appendCheckBox( "", "Detachable Menus", - LatchedBoolImportCaller( g_Layout_enableDetachableMenus ), - BoolExportCaller( g_Layout_enableDetachableMenus.m_latched ) + mkImportExportCallback( g_Layout_enableDetachableMenus ) ); if ( !string_empty( g_pGameDescription->getKeyValue( "no_patch" ) ) ) { page.appendCheckBox( "", "Patch Toolbar", - LatchedBoolImportCaller( g_Layout_enablePatchToolbar ), - BoolExportCaller( g_Layout_enablePatchToolbar.m_latched ) + mkImportExportCallback( g_Layout_enablePatchToolbar ) ); } page.appendCheckBox( "", "Plugin Toolbar", - LatchedBoolImportCaller( g_Layout_enablePluginToolbar ), - BoolExportCaller( g_Layout_enablePluginToolbar.m_latched ) + mkImportExportCallback( g_Layout_enablePluginToolbar ) ); } @@ -3162,7 +3151,7 @@ void Layout_constructPage( PreferenceGroup& group ){ } void Layout_registerPreferencesPage(){ - PreferencesDialog_addInterfacePage( FreeCaller1() ); + PreferencesDialog_addInterfacePage( makeCallbackF(Layout_constructPage) ); } @@ -3170,75 +3159,75 @@ void Layout_registerPreferencesPage(){ #include "stringio.h" void MainFrame_Construct(){ - GlobalCommands_insert( "OpenManual", FreeCaller(), Accelerator( GDK_KEY_F1 ) ); - - GlobalCommands_insert( "Sleep", FreeCaller(), Accelerator( 'P', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) ); - GlobalCommands_insert( "NewMap", FreeCaller() ); - GlobalCommands_insert( "OpenMap", FreeCaller(), Accelerator( 'O', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "ImportMap", FreeCaller() ); - GlobalCommands_insert( "SaveMap", FreeCaller(), Accelerator( 'S', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "SaveMapAs", FreeCaller() ); - GlobalCommands_insert( "ExportSelected", FreeCaller() ); - GlobalCommands_insert( "SaveRegion", FreeCaller() ); - GlobalCommands_insert( "RefreshReferences", FreeCaller() ); - GlobalCommands_insert( "ProjectSettings", FreeCaller() ); - GlobalCommands_insert( "Exit", FreeCaller() ); - - GlobalCommands_insert( "Undo", FreeCaller(), Accelerator( 'Z', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "Redo", FreeCaller(), Accelerator( 'Y', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "Copy", FreeCaller(), Accelerator( 'C', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "Paste", FreeCaller(), Accelerator( 'V', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "PasteToCamera", FreeCaller(), Accelerator( 'V', (GdkModifierType)GDK_MOD1_MASK ) ); - GlobalCommands_insert( "CloneSelection", FreeCaller(), Accelerator( GDK_KEY_space ) ); - GlobalCommands_insert( "CloneSelectionAndMakeUnique", FreeCaller(), Accelerator( GDK_KEY_space, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "DeleteSelection", FreeCaller(), Accelerator( GDK_KEY_BackSpace ) ); - GlobalCommands_insert( "ParentSelection", FreeCaller() ); - GlobalCommands_insert( "UnSelectSelection", FreeCaller(), Accelerator( GDK_KEY_Escape ) ); - GlobalCommands_insert( "InvertSelection", FreeCaller(), Accelerator( 'I' ) ); - GlobalCommands_insert( "SelectInside", FreeCaller() ); - GlobalCommands_insert( "SelectTouching", FreeCaller() ); - GlobalCommands_insert( "ExpandSelectionToEntities", FreeCaller(), Accelerator( 'E', (GdkModifierType)( GDK_MOD1_MASK | GDK_CONTROL_MASK ) ) ); - GlobalCommands_insert( "Preferences", FreeCaller(), Accelerator( 'P' ) ); - - GlobalCommands_insert( "ToggleConsole", FreeCaller(), Accelerator( 'O' ) ); - GlobalCommands_insert( "ToggleEntityInspector", FreeCaller(), Accelerator( 'N' ) ); - GlobalCommands_insert( "EntityList", FreeCaller(), Accelerator( 'L' ) ); - - GlobalCommands_insert( "ShowHidden", FreeCaller(), Accelerator( 'H', (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "HideSelected", FreeCaller(), Accelerator( 'H' ) ); - - GlobalToggles_insert( "DragVertices", FreeCaller(), ToggleItem::AddCallbackCaller( g_vertexMode_button ), Accelerator( 'V' ) ); - GlobalToggles_insert( "DragEdges", FreeCaller(), ToggleItem::AddCallbackCaller( g_edgeMode_button ), Accelerator( 'E' ) ); - GlobalToggles_insert( "DragFaces", FreeCaller(), ToggleItem::AddCallbackCaller( g_faceMode_button ), Accelerator( 'F' ) ); - - GlobalCommands_insert( "MirrorSelectionX", FreeCaller() ); - GlobalCommands_insert( "RotateSelectionX", FreeCaller() ); - GlobalCommands_insert( "MirrorSelectionY", FreeCaller() ); - GlobalCommands_insert( "RotateSelectionY", FreeCaller() ); - GlobalCommands_insert( "MirrorSelectionZ", FreeCaller() ); - GlobalCommands_insert( "RotateSelectionZ", FreeCaller() ); - - GlobalCommands_insert( "ArbitraryRotation", FreeCaller() ); - GlobalCommands_insert( "ArbitraryScale", FreeCaller() ); - - GlobalCommands_insert( "BuildMenuCustomize", FreeCaller() ); - - GlobalCommands_insert( "FindBrush", FreeCaller() ); - - GlobalCommands_insert( "MapInfo", FreeCaller(), Accelerator( 'M' ) ); - - - GlobalToggles_insert( "ToggleClipper", FreeCaller(), ToggleItem::AddCallbackCaller( g_clipper_button ), Accelerator( 'X' ) ); - - GlobalToggles_insert( "MouseTranslate", FreeCaller(), ToggleItem::AddCallbackCaller( g_translatemode_button ), Accelerator( 'W' ) ); - GlobalToggles_insert( "MouseRotate", FreeCaller(), ToggleItem::AddCallbackCaller( g_rotatemode_button ), Accelerator( 'R' ) ); - GlobalToggles_insert( "MouseScale", FreeCaller(), ToggleItem::AddCallbackCaller( g_scalemode_button ) ); - GlobalToggles_insert( "MouseDrag", FreeCaller(), ToggleItem::AddCallbackCaller( g_dragmode_button ), Accelerator( 'Q' ) ); - - GlobalCommands_insert( "ColorSchemeOriginal", FreeCaller() ); - GlobalCommands_insert( "ColorSchemeQER", FreeCaller() ); - GlobalCommands_insert( "ColorSchemeBlackAndGreen", FreeCaller() ); - GlobalCommands_insert( "ColorSchemeYdnar", FreeCaller() ); + GlobalCommands_insert( "OpenManual", makeCallbackF(OpenHelpURL), Accelerator( GDK_KEY_F1 ) ); + + GlobalCommands_insert( "Sleep", makeCallbackF(thunk_OnSleep), Accelerator( 'P', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) ); + GlobalCommands_insert( "NewMap", makeCallbackF(NewMap) ); + GlobalCommands_insert( "OpenMap", makeCallbackF(OpenMap), Accelerator( 'O', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "ImportMap", makeCallbackF(ImportMap) ); + GlobalCommands_insert( "SaveMap", makeCallbackF(SaveMap), Accelerator( 'S', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "SaveMapAs", makeCallbackF(SaveMapAs) ); + GlobalCommands_insert( "ExportSelected", makeCallbackF(ExportMap) ); + GlobalCommands_insert( "SaveRegion", makeCallbackF(SaveRegion) ); + GlobalCommands_insert( "RefreshReferences", makeCallbackF(VFS_Refresh) ); + GlobalCommands_insert( "ProjectSettings", makeCallbackF(DoProjectSettings) ); + GlobalCommands_insert( "Exit", makeCallbackF(Exit) ); + + GlobalCommands_insert( "Undo", makeCallbackF(Undo), Accelerator( 'Z', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "Redo", makeCallbackF(Redo), Accelerator( 'Y', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "Copy", makeCallbackF(Copy), Accelerator( 'C', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "Paste", makeCallbackF(Paste), Accelerator( 'V', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "PasteToCamera", makeCallbackF(PasteToCamera), Accelerator( 'V', (GdkModifierType)GDK_MOD1_MASK ) ); + GlobalCommands_insert( "CloneSelection", makeCallbackF(Selection_Clone), Accelerator( GDK_KEY_space ) ); + GlobalCommands_insert( "CloneSelectionAndMakeUnique", makeCallbackF(Selection_Clone_MakeUnique), Accelerator( GDK_KEY_space, (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "DeleteSelection", makeCallbackF(deleteSelection), Accelerator( GDK_KEY_BackSpace ) ); + GlobalCommands_insert( "ParentSelection", makeCallbackF(Scene_parentSelected) ); + GlobalCommands_insert( "UnSelectSelection", makeCallbackF(Selection_Deselect), Accelerator( GDK_KEY_Escape ) ); + GlobalCommands_insert( "InvertSelection", makeCallbackF(Select_Invert), Accelerator( 'I' ) ); + GlobalCommands_insert( "SelectInside", makeCallbackF(Select_Inside) ); + GlobalCommands_insert( "SelectTouching", makeCallbackF(Select_Touching) ); + GlobalCommands_insert( "ExpandSelectionToEntities", makeCallbackF(Scene_ExpandSelectionToEntities), Accelerator( 'E', (GdkModifierType)( GDK_MOD1_MASK | GDK_CONTROL_MASK ) ) ); + GlobalCommands_insert( "Preferences", makeCallbackF(PreferencesDialog_showDialog), Accelerator( 'P' ) ); + + GlobalCommands_insert( "ToggleConsole", makeCallbackF(Console_ToggleShow), Accelerator( 'O' ) ); + GlobalCommands_insert( "ToggleEntityInspector", makeCallbackF(EntityInspector_ToggleShow), Accelerator( 'N' ) ); + GlobalCommands_insert( "EntityList", makeCallbackF(EntityList_toggleShown), Accelerator( 'L' ) ); + + GlobalCommands_insert( "ShowHidden", makeCallbackF(Select_ShowAllHidden), Accelerator( 'H', (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "HideSelected", makeCallbackF(HideSelected), Accelerator( 'H' ) ); + + GlobalToggles_insert( "DragVertices", makeCallbackF(SelectVertexMode), ToggleItem::AddCallbackCaller( g_vertexMode_button ), Accelerator( 'V' ) ); + GlobalToggles_insert( "DragEdges", makeCallbackF(SelectEdgeMode), ToggleItem::AddCallbackCaller( g_edgeMode_button ), Accelerator( 'E' ) ); + GlobalToggles_insert( "DragFaces", makeCallbackF(SelectFaceMode), ToggleItem::AddCallbackCaller( g_faceMode_button ), Accelerator( 'F' ) ); + + GlobalCommands_insert( "MirrorSelectionX", makeCallbackF(Selection_Flipx) ); + GlobalCommands_insert( "RotateSelectionX", makeCallbackF(Selection_Rotatex) ); + GlobalCommands_insert( "MirrorSelectionY", makeCallbackF(Selection_Flipy) ); + GlobalCommands_insert( "RotateSelectionY", makeCallbackF(Selection_Rotatey) ); + GlobalCommands_insert( "MirrorSelectionZ", makeCallbackF(Selection_Flipz) ); + GlobalCommands_insert( "RotateSelectionZ", makeCallbackF(Selection_Rotatez) ); + + GlobalCommands_insert( "ArbitraryRotation", makeCallbackF(DoRotateDlg) ); + GlobalCommands_insert( "ArbitraryScale", makeCallbackF(DoScaleDlg) ); + + GlobalCommands_insert( "BuildMenuCustomize", makeCallbackF(DoBuildMenu) ); + + GlobalCommands_insert( "FindBrush", makeCallbackF(DoFind) ); + + GlobalCommands_insert( "MapInfo", makeCallbackF(DoMapInfo), Accelerator( 'M' ) ); + + + GlobalToggles_insert( "ToggleClipper", makeCallbackF(ClipperMode), ToggleItem::AddCallbackCaller( g_clipper_button ), Accelerator( 'X' ) ); + + GlobalToggles_insert( "MouseTranslate", makeCallbackF(TranslateMode), ToggleItem::AddCallbackCaller( g_translatemode_button ), Accelerator( 'W' ) ); + GlobalToggles_insert( "MouseRotate", makeCallbackF(RotateMode), ToggleItem::AddCallbackCaller( g_rotatemode_button ), Accelerator( 'R' ) ); + GlobalToggles_insert( "MouseScale", makeCallbackF(ScaleMode), ToggleItem::AddCallbackCaller( g_scalemode_button ) ); + GlobalToggles_insert( "MouseDrag", makeCallbackF(DragMode), ToggleItem::AddCallbackCaller( g_dragmode_button ), Accelerator( 'Q' ) ); + + GlobalCommands_insert( "ColorSchemeOriginal", makeCallbackF(ColorScheme_Original) ); + GlobalCommands_insert( "ColorSchemeQER", makeCallbackF(ColorScheme_QER) ); + GlobalCommands_insert( "ColorSchemeBlackAndGreen", makeCallbackF(ColorScheme_Black) ); + GlobalCommands_insert( "ColorSchemeYdnar", makeCallbackF(ColorScheme_Ydnar) ); GlobalCommands_insert( "ChooseTextureBackgroundColor", makeCallback( g_ColoursMenu.m_textureback ) ); GlobalCommands_insert( "ChooseGridBackgroundColor", makeCallback( g_ColoursMenu.m_xyback ) ); GlobalCommands_insert( "ChooseGridMajorColor", makeCallback( g_ColoursMenu.m_gridmajor ) ); @@ -3255,39 +3244,39 @@ void MainFrame_Construct(){ GlobalCommands_insert( "ChooseOrthoViewNameColor", makeCallback( g_ColoursMenu.m_viewname ) ); - GlobalCommands_insert( "CSGSubtract", FreeCaller(), Accelerator( 'U', (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "CSGMerge", FreeCaller(), Accelerator( 'U', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "CSGHollow", FreeCaller() ); + GlobalCommands_insert( "CSGSubtract", makeCallbackF(CSG_Subtract), Accelerator( 'U', (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "CSGMerge", makeCallbackF(CSG_Merge), Accelerator( 'U', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "CSGHollow", makeCallbackF(CSG_MakeHollow) ); Grid_registerCommands(); - GlobalCommands_insert( "SnapToGrid", FreeCaller(), Accelerator( 'G', (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "SnapToGrid", makeCallbackF(Selection_SnapToGrid), Accelerator( 'G', (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "SelectAllOfType", FreeCaller(), Accelerator( 'A', (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "SelectAllOfType", makeCallbackF(Select_AllOfType), Accelerator( 'A', (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "TexRotateClock", FreeCaller(), Accelerator( GDK_KEY_Next, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "TexRotateCounter", FreeCaller(), Accelerator( GDK_KEY_Prior, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "TexScaleUp", FreeCaller(), Accelerator( GDK_KEY_Up, (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "TexScaleDown", FreeCaller(), Accelerator( GDK_KEY_Down, (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "TexScaleLeft", FreeCaller(), Accelerator( GDK_KEY_Left, (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "TexScaleRight", FreeCaller(), Accelerator( GDK_KEY_Right, (GdkModifierType)GDK_CONTROL_MASK ) ); - GlobalCommands_insert( "TexShiftUp", FreeCaller(), Accelerator( GDK_KEY_Up, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "TexShiftDown", FreeCaller(), Accelerator( GDK_KEY_Down, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "TexShiftLeft", FreeCaller(), Accelerator( GDK_KEY_Left, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "TexShiftRight", FreeCaller(), Accelerator( GDK_KEY_Right, (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "TexRotateClock", makeCallbackF(Texdef_RotateClockwise), Accelerator( GDK_KEY_Next, (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "TexRotateCounter", makeCallbackF(Texdef_RotateAntiClockwise), Accelerator( GDK_KEY_Prior, (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "TexScaleUp", makeCallbackF(Texdef_ScaleUp), Accelerator( GDK_KEY_Up, (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "TexScaleDown", makeCallbackF(Texdef_ScaleDown), Accelerator( GDK_KEY_Down, (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "TexScaleLeft", makeCallbackF(Texdef_ScaleLeft), Accelerator( GDK_KEY_Left, (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "TexScaleRight", makeCallbackF(Texdef_ScaleRight), Accelerator( GDK_KEY_Right, (GdkModifierType)GDK_CONTROL_MASK ) ); + GlobalCommands_insert( "TexShiftUp", makeCallbackF(Texdef_ShiftUp), Accelerator( GDK_KEY_Up, (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "TexShiftDown", makeCallbackF(Texdef_ShiftDown), Accelerator( GDK_KEY_Down, (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "TexShiftLeft", makeCallbackF(Texdef_ShiftLeft), Accelerator( GDK_KEY_Left, (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "TexShiftRight", makeCallbackF(Texdef_ShiftRight), Accelerator( GDK_KEY_Right, (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "MoveSelectionDOWN", FreeCaller(), Accelerator( GDK_KEY_KP_Subtract ) ); - GlobalCommands_insert( "MoveSelectionUP", FreeCaller(), Accelerator( GDK_KEY_KP_Add ) ); + GlobalCommands_insert( "MoveSelectionDOWN", makeCallbackF(Selection_MoveDown), Accelerator( GDK_KEY_KP_Subtract ) ); + GlobalCommands_insert( "MoveSelectionUP", makeCallbackF(Selection_MoveUp), Accelerator( GDK_KEY_KP_Add ) ); - GlobalCommands_insert( "SelectNudgeLeft", FreeCaller(), Accelerator( GDK_KEY_Left, (GdkModifierType)GDK_MOD1_MASK ) ); - GlobalCommands_insert( "SelectNudgeRight", FreeCaller(), Accelerator( GDK_KEY_Right, (GdkModifierType)GDK_MOD1_MASK ) ); - GlobalCommands_insert( "SelectNudgeUp", FreeCaller(), Accelerator( GDK_KEY_Up, (GdkModifierType)GDK_MOD1_MASK ) ); - GlobalCommands_insert( "SelectNudgeDown", FreeCaller(), Accelerator( GDK_KEY_Down, (GdkModifierType)GDK_MOD1_MASK ) ); + GlobalCommands_insert( "SelectNudgeLeft", makeCallbackF(Selection_NudgeLeft), Accelerator( GDK_KEY_Left, (GdkModifierType)GDK_MOD1_MASK ) ); + GlobalCommands_insert( "SelectNudgeRight", makeCallbackF(Selection_NudgeRight), Accelerator( GDK_KEY_Right, (GdkModifierType)GDK_MOD1_MASK ) ); + GlobalCommands_insert( "SelectNudgeUp", makeCallbackF(Selection_NudgeUp), Accelerator( GDK_KEY_Up, (GdkModifierType)GDK_MOD1_MASK ) ); + GlobalCommands_insert( "SelectNudgeDown", makeCallbackF(Selection_NudgeDown), Accelerator( GDK_KEY_Down, (GdkModifierType)GDK_MOD1_MASK ) ); Patch_registerCommands(); XYShow_registerCommands(); - typedef FreeCaller1 ComponentModeSelectionChangedCaller; + typedef FreeCaller ComponentModeSelectionChangedCaller; GlobalSelectionSystem().addSelectionChangeCallback( ComponentModeSelectionChangedCaller() ); GlobalPreferenceSystem().registerPreference( "DetachableMenus", BoolImportStringCaller( g_Layout_enableDetachableMenus.m_latched ), BoolExportStringCaller( g_Layout_enableDetachableMenus.m_latched ) ); @@ -3312,11 +3301,11 @@ void MainFrame_Construct(){ { const char* ENGINEPATH_ATTRIBUTE = -#if defined( WIN32 ) +#if GDEF_OS_WINDOWS "enginepath_win32" -#elif defined( __APPLE__ ) +#elif GDEF_OS_MACOS "enginepath_macos" -#elif defined( __linux__ ) || defined ( __FreeBSD__ ) +#elif GDEF_OS_LINUX || GDEF_OS_BSD "enginepath_linux" #else #error "unknown platform" @@ -3337,8 +3326,8 @@ void MainFrame_Construct(){ Layout_registerPreferencesPage(); Paths_registerPreferencesPage(); - g_brushCount.setCountChangedCallback( FreeCaller() ); - g_entityCount.setCountChangedCallback( FreeCaller() ); + g_brushCount.setCountChangedCallback( makeCallbackF(QE_brushCountChanged) ); + g_entityCount.setCountChangedCallback( makeCallbackF(QE_entityCountChanged) ); GlobalEntityCreator().setCounter( &g_entityCount ); GLWidget_sharedContextCreated = GlobalGL_sharedContextCreated; @@ -3351,8 +3340,8 @@ void MainFrame_Destroy(){ GlobalEntityClassManager().detach( g_WorldspawnColourEntityClassObserver ); GlobalEntityCreator().setCounter( 0 ); - g_entityCount.setCountChangedCallback( Callback() ); - g_brushCount.setCountChangedCallback( Callback() ); + g_entityCount.setCountChangedCallback( Callback() ); + g_brushCount.setCountChangedCallback( Callback() ); }