-void Brush_constructMenu(GtkMenu* menu)
-{
- create_menu_item_with_mnemonic(menu, "Prism...", "BrushPrism");
- create_menu_item_with_mnemonic(menu, "Cone...", "BrushCone");
- create_menu_item_with_mnemonic(menu, "Sphere...", "BrushSphere");
- menu_separator (menu);
- {
- GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "CSG");
- create_menu_item_with_mnemonic(menu_in_menu, "Make _Hollow", "CSGHollow");
- create_menu_item_with_mnemonic(menu_in_menu, "CSG _Subtract", "CSGSubtract");
- create_menu_item_with_mnemonic(menu_in_menu, "CSG _Merge", "CSGMerge");
- }
- menu_separator(menu);
- {
- GtkMenu* menu_in_menu = create_sub_menu_with_mnemonic (menu, "Clipper");
-
- create_menu_item_with_mnemonic(menu_in_menu, "Clip selection", "ClipSelected");
- create_menu_item_with_mnemonic(menu_in_menu, "Split selection", "SplitSelected");
- create_menu_item_with_mnemonic(menu_in_menu, "Flip Clip orientation", "FlipClip");
- }
- menu_separator(menu);
- create_menu_item_with_mnemonic(menu, "Make detail", "MakeDetail");
- create_menu_item_with_mnemonic(menu, "Make structural", "MakeStructural");
-
- create_check_menu_item_with_mnemonic(menu, "Texture Lock", "TogTexLock");
- menu_separator(menu);
- create_menu_item_with_mnemonic(menu, "Copy Face Texture", "FaceCopyTexture");
- create_menu_item_with_mnemonic(menu, "Paste Face Texture", "FacePasteTexture");
-
- command_connect_accelerator("Brush3Sided");
- command_connect_accelerator("Brush4Sided");
- command_connect_accelerator("Brush5Sided");
- command_connect_accelerator("Brush6Sided");
- command_connect_accelerator("Brush7Sided");
- command_connect_accelerator("Brush8Sided");
- command_connect_accelerator("Brush9Sided");
+void ClipSelected(){
+ if ( ClipMode() ) {
+ UndoableCommand undo( "clipperClip" );
+ Clip();
+ }
+}
+
+void SplitSelected(){
+ if ( ClipMode() ) {
+ UndoableCommand undo( "clipperSplit" );
+ SplitClip();
+ }
+}
+
+void FlipClipper(){
+ FlipClip();
+}
+
+
+Callback<void()> g_texture_lock_status_changed;
+ConstReferenceCaller<bool, void(const Callback<void(bool)> &), PropertyImpl<bool>::Export> g_texdef_movelock_caller( g_brush_texturelock_enabled );
+ToggleItem g_texdef_movelock_item( g_texdef_movelock_caller );
+
+void Texdef_ToggleMoveLock(){
+ g_brush_texturelock_enabled = !g_brush_texturelock_enabled;
+ g_texdef_movelock_item.update();
+ g_texture_lock_status_changed();
+}
+
+
+void Brush_registerCommands(){
+ GlobalToggles_insert( "TogTexLock", makeCallbackF(Texdef_ToggleMoveLock), ToggleItem::AddCallbackCaller( g_texdef_movelock_item ), Accelerator( 'T', (GdkModifierType)GDK_SHIFT_MASK ) );
+
+ GlobalCommands_insert( "BrushPrism", BrushPrefab::SetCaller( g_brushprism ) );
+ GlobalCommands_insert( "BrushCone", BrushPrefab::SetCaller( g_brushcone ) );
+ GlobalCommands_insert( "BrushSphere", BrushPrefab::SetCaller( g_brushsphere ) );
+ GlobalCommands_insert( "BrushRock", BrushPrefab::SetCaller( g_brushrock ) );
+
+ GlobalCommands_insert( "Brush3Sided", BrushMakeSided::SetCaller( g_brushmakesided3 ), Accelerator( '3', (GdkModifierType)GDK_CONTROL_MASK ) );
+ GlobalCommands_insert( "Brush4Sided", BrushMakeSided::SetCaller( g_brushmakesided4 ), Accelerator( '4', (GdkModifierType)GDK_CONTROL_MASK ) );
+ GlobalCommands_insert( "Brush5Sided", BrushMakeSided::SetCaller( g_brushmakesided5 ), Accelerator( '5', (GdkModifierType)GDK_CONTROL_MASK ) );
+ GlobalCommands_insert( "Brush6Sided", BrushMakeSided::SetCaller( g_brushmakesided6 ), Accelerator( '6', (GdkModifierType)GDK_CONTROL_MASK ) );
+ GlobalCommands_insert( "Brush7Sided", BrushMakeSided::SetCaller( g_brushmakesided7 ), Accelerator( '7', (GdkModifierType)GDK_CONTROL_MASK ) );
+ GlobalCommands_insert( "Brush8Sided", BrushMakeSided::SetCaller( g_brushmakesided8 ), Accelerator( '8', (GdkModifierType)GDK_CONTROL_MASK ) );
+ GlobalCommands_insert( "Brush9Sided", BrushMakeSided::SetCaller( g_brushmakesided9 ), Accelerator( '9', (GdkModifierType)GDK_CONTROL_MASK ) );
+
+ GlobalCommands_insert( "ClipSelected", makeCallbackF(ClipSelected), Accelerator( GDK_KEY_Return ) );
+ GlobalCommands_insert( "SplitSelected", makeCallbackF(SplitSelected), Accelerator( GDK_KEY_Return, (GdkModifierType)GDK_SHIFT_MASK ) );
+ GlobalCommands_insert( "FlipClip", makeCallbackF(FlipClipper), Accelerator( GDK_KEY_Return, (GdkModifierType)GDK_CONTROL_MASK ) );
+
+ GlobalCommands_insert( "MakeDetail", makeCallbackF(Select_MakeDetail), Accelerator( 'M', (GdkModifierType)GDK_CONTROL_MASK ) );
+ GlobalCommands_insert( "MakeStructural", makeCallbackF(Select_MakeStructural), Accelerator( 'S', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) );
+}
+
+void Brush_constructMenu( ui::Menu menu ){
+ create_menu_item_with_mnemonic( menu, "Prism...", "BrushPrism" );
+ create_menu_item_with_mnemonic( menu, "Cone...", "BrushCone" );
+ create_menu_item_with_mnemonic( menu, "Sphere...", "BrushSphere" );
+ create_menu_item_with_mnemonic( menu, "Rock...", "BrushRock" );
+ menu_separator( menu );
+ {
+ auto menu_in_menu = create_sub_menu_with_mnemonic( menu, "CSG" );
+ if ( g_Layout_enableDetachableMenus.m_value ) {
+ menu_tearoff( menu_in_menu );
+ }
+ create_menu_item_with_mnemonic( menu_in_menu, "Make _Hollow", "CSGMakeHollow" );
+ create_menu_item_with_mnemonic( menu_in_menu, "Make _Room", "CSGMakeRoom" );
+ create_menu_item_with_mnemonic( menu_in_menu, "CSG _Subtract", "CSGSubtract" );
+ create_menu_item_with_mnemonic( menu_in_menu, "CSG _Merge", "CSGMerge" );
+ }
+ menu_separator( menu );
+ {
+ auto menu_in_menu = create_sub_menu_with_mnemonic( menu, "Clipper" );
+ if ( g_Layout_enableDetachableMenus.m_value ) {
+ menu_tearoff( menu_in_menu );
+ }
+
+ create_menu_item_with_mnemonic( menu_in_menu, "Clip selection", "ClipSelected" );
+ create_menu_item_with_mnemonic( menu_in_menu, "Split selection", "SplitSelected" );
+ create_menu_item_with_mnemonic( menu_in_menu, "Flip Clip orientation", "FlipClip" );
+ }
+ menu_separator( menu );
+ create_menu_item_with_mnemonic( menu, "Make detail", "MakeDetail" );
+ create_menu_item_with_mnemonic( menu, "Make structural", "MakeStructural" );
+ create_menu_item_with_mnemonic( menu, "Snap selection to _grid", "SnapToGrid" );
+
+ create_check_menu_item_with_mnemonic( menu, "Texture Lock", "TogTexLock" );
+ menu_separator( menu );
+ create_menu_item_with_mnemonic( menu, "Copy Face Texture", "FaceCopyTexture" );
+ create_menu_item_with_mnemonic( menu, "Paste Face Texture", "FacePasteTexture" );
+
+ command_connect_accelerator( "Brush3Sided" );
+ command_connect_accelerator( "Brush4Sided" );
+ command_connect_accelerator( "Brush5Sided" );
+ command_connect_accelerator( "Brush6Sided" );
+ command_connect_accelerator( "Brush7Sided" );
+ command_connect_accelerator( "Brush8Sided" );
+ command_connect_accelerator( "Brush9Sided" );