From 00f967f070c73c68a84462eed6c574b59769ce82 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Thu, 5 May 2022 07:27:47 -0700 Subject: [PATCH] Add 'Select all of model type" to the Edit menu. --- src/mainframe.cpp | 4 ++++ src/select.cpp | 22 ++++++++++++++++++++++ src/select.h | 2 ++ 3 files changed, 28 insertions(+) diff --git a/src/mainframe.cpp b/src/mainframe.cpp index efea26f..915b1ba 100644 --- a/src/mainframe.cpp +++ b/src/mainframe.cpp @@ -1970,6 +1970,8 @@ ui::MenuItem create_edit_menu() }*/ create_menu_item_with_mnemonic(convert_menu, "To Whole _Entities", "ExpandSelectionToEntities"); + create_menu_item_with_mnemonic(menu, "Select all of model type", "SelectAllOfModel"); + menu_separator(menu); create_menu_item_with_mnemonic(menu, "Pre_ferences...", "Preferences"); @@ -3271,6 +3273,8 @@ void MainFrame_Construct() GlobalCommands_insert("SelectAllOfType", makeCallbackF(Select_AllOfType), Accelerator('A', (GdkModifierType) GDK_SHIFT_MASK)); + GlobalCommands_insert("SelectAllOfModel", makeCallbackF(Select_AllOfModel)); + GlobalCommands_insert("TexRotateClock", makeCallbackF(Texdef_RotateClockwise), Accelerator(GDK_KEY_Next, (GdkModifierType) GDK_SHIFT_MASK)); GlobalCommands_insert("TexRotateCounter", makeCallbackF(Texdef_RotateAntiClockwise), diff --git a/src/select.cpp b/src/select.cpp index a69a933..d2d3bb5 100644 --- a/src/select.cpp +++ b/src/select.cpp @@ -751,6 +751,28 @@ void Select_AllOfType() } } +void Select_AllOfModel() +{ + if (GlobalSelectionSystem().Mode() == SelectionSystem::eComponent) { + if (GlobalSelectionSystem().ComponentMode() == SelectionSystem::eFace) { + GlobalSelectionSystem().setSelectedAllComponents(false); + Scene_BrushSelectByShader_Component(GlobalSceneGraph(), + TextureBrowser_GetSelectedShader(GlobalTextureBrowser())); + } + } else { + PropertyValues propertyvalues; + const char *prop = EntityInspector_getCurrentKey(); + if (!prop || !*prop) { + prop = "model"; + } + Scene_EntityGetPropertyValues(GlobalSceneGraph(), prop, propertyvalues); + GlobalSelectionSystem().setSelectedAll(false); + if (!propertyvalues.empty()) { + Scene_EntitySelectByPropertyValues(GlobalSceneGraph(), prop, propertyvalues); + } + } +} + void Select_Inside(void) { SelectByBounds::DoSelection(); diff --git a/src/select.h b/src/select.h index 2870558..643c240 100644 --- a/src/select.h +++ b/src/select.h @@ -57,6 +57,8 @@ void Selection_MoveUp(); void Select_AllOfType(); +void Select_AllOfModel(); + void DoRotateDlg(); void DoScaleDlg();