From 957d591d996d95dd9fca4397b6ee140d2aab537b Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Fri, 25 Oct 2024 15:47:28 +1000 Subject: [PATCH] feat(ui): "Auto-Mask" -> "Select Object" --- invokeai/frontend/web/public/locales/en.json | 4 +- .../EntityListSelectedEntityActionBar.tsx | 4 +- ...ctedEntityActionBarSelectObjectButton.tsx} | 8 +-- .../components/CanvasMainPanelContent.tsx | 4 +- .../ControlLayer/ControlLayerMenuItems.tsx | 4 +- .../RasterLayer/RasterLayerMenuItems.tsx | 4 +- .../SelectObject.tsx} | 54 ++++++++++--------- .../SelectObjectInvert.tsx} | 6 +-- .../SelectObjectPointType.tsx} | 10 ++-- ... => CanvasEntityMenuItemsSelectObject.tsx} | 6 +-- 10 files changed, 53 insertions(+), 51 deletions(-) rename invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/{EntityListSelectedEntityActionBarAutoMaskButton.tsx => EntityListSelectedEntityActionBarSelectObjectButton.tsx} (76%) rename invokeai/frontend/web/src/features/controlLayers/components/{SegmentAnything/SegmentAnything.tsx => SelectObject/SelectObject.tsx} (78%) rename invokeai/frontend/web/src/features/controlLayers/components/{SegmentAnything/SegmentAnythingInvert.tsx => SelectObject/SelectObjectInvert.tsx} (84%) rename invokeai/frontend/web/src/features/controlLayers/components/{SegmentAnything/SegmentAnythingPointType.tsx => SelectObject/SelectObjectPointType.tsx} (82%) rename invokeai/frontend/web/src/features/controlLayers/components/common/{CanvasEntityMenuItemsSegment.tsx => CanvasEntityMenuItemsSelectObject.tsx} (77%) diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 1d873d5707..1664ff38a4 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -1886,8 +1886,8 @@ "apply": "Apply", "cancel": "Cancel" }, - "segment": { - "autoMask": "Auto Mask", + "selectObject": { + "selectObject": "Select Object", "pointType": "Point Type", "invertSelection": "Invert Selection", "include": "Include", diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBar.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBar.tsx index c8799a8628..2ec01041e2 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBar.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBar.tsx @@ -1,10 +1,10 @@ import { Flex, Spacer } from '@invoke-ai/ui-library'; import { EntityListGlobalActionBarAddLayerMenu } from 'features/controlLayers/components/CanvasEntityList/EntityListGlobalActionBarAddLayerMenu'; -import { EntityListSelectedEntityActionBarAutoMaskButton } from 'features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarAutoMaskButton'; import { EntityListSelectedEntityActionBarDuplicateButton } from 'features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarDuplicateButton'; import { EntityListSelectedEntityActionBarFill } from 'features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarFill'; import { EntityListSelectedEntityActionBarFilterButton } from 'features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarFilterButton'; import { EntityListSelectedEntityActionBarOpacity } from 'features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarOpacity'; +import { EntityListSelectedEntityActionBarSelectObjectButton } from 'features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarSelectObjectButton'; import { EntityListSelectedEntityActionBarTransformButton } from 'features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarTransformButton'; import { memo } from 'react'; @@ -17,7 +17,7 @@ export const EntityListSelectedEntityActionBar = memo(() => { - + diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarAutoMaskButton.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarSelectObjectButton.tsx similarity index 76% rename from invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarAutoMaskButton.tsx rename to invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarSelectObjectButton.tsx index 38a0b3c995..900a56894d 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarAutoMaskButton.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarSelectObjectButton.tsx @@ -7,7 +7,7 @@ import { memo } from 'react'; import { useTranslation } from 'react-i18next'; import { PiMaskHappyBold } from 'react-icons/pi'; -export const EntityListSelectedEntityActionBarAutoMaskButton = memo(() => { +export const EntityListSelectedEntityActionBarSelectObjectButton = memo(() => { const { t } = useTranslation(); const selectedEntityIdentifier = useAppSelector(selectSelectedEntityIdentifier); const segment = useEntitySegmentAnything(selectedEntityIdentifier); @@ -27,11 +27,11 @@ export const EntityListSelectedEntityActionBarAutoMaskButton = memo(() => { size="sm" variant="link" alignSelf="stretch" - aria-label={t('controlLayers.segment.autoMask')} - tooltip={t('controlLayers.segment.autoMask')} + aria-label={t('controlLayers.selectObject.selectObject')} + tooltip={t('controlLayers.selectObject.selectObject')} icon={} /> ); }); -EntityListSelectedEntityActionBarAutoMaskButton.displayName = 'EntityListSelectedEntityActionBarAutoMaskButton'; +EntityListSelectedEntityActionBarSelectObjectButton.displayName = 'EntityListSelectedEntityActionBarSelectObjectButton'; diff --git a/invokeai/frontend/web/src/features/controlLayers/components/CanvasMainPanelContent.tsx b/invokeai/frontend/web/src/features/controlLayers/components/CanvasMainPanelContent.tsx index a7d6eb7ceb..1e8dccfd39 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/CanvasMainPanelContent.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/CanvasMainPanelContent.tsx @@ -10,7 +10,7 @@ import { CanvasDropArea } from 'features/controlLayers/components/CanvasDropArea import { Filter } from 'features/controlLayers/components/Filters/Filter'; import { CanvasHUD } from 'features/controlLayers/components/HUD/CanvasHUD'; import { InvokeCanvasComponent } from 'features/controlLayers/components/InvokeCanvasComponent'; -import { SegmentAnything } from 'features/controlLayers/components/SegmentAnything/SegmentAnything'; +import { SelectObject } from 'features/controlLayers/components/SelectObject/SelectObject'; import { StagingAreaIsStagingGate } from 'features/controlLayers/components/StagingArea/StagingAreaIsStagingGate'; import { StagingAreaToolbar } from 'features/controlLayers/components/StagingArea/StagingAreaToolbar'; import { CanvasToolbar } from 'features/controlLayers/components/Toolbar/CanvasToolbar'; @@ -102,7 +102,7 @@ export const CanvasMainPanelContent = memo(() => { - + diff --git a/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItems.tsx b/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItems.tsx index 7c34bd59d6..ab77f238bc 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItems.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItems.tsx @@ -6,7 +6,7 @@ import { CanvasEntityMenuItemsDelete } from 'features/controlLayers/components/c import { CanvasEntityMenuItemsDuplicate } from 'features/controlLayers/components/common/CanvasEntityMenuItemsDuplicate'; import { CanvasEntityMenuItemsFilter } from 'features/controlLayers/components/common/CanvasEntityMenuItemsFilter'; import { CanvasEntityMenuItemsSave } from 'features/controlLayers/components/common/CanvasEntityMenuItemsSave'; -import { CanvasEntityMenuItemsSegment } from 'features/controlLayers/components/common/CanvasEntityMenuItemsSegment'; +import { CanvasEntityMenuItemsSelectObject } from 'features/controlLayers/components/common/CanvasEntityMenuItemsSelectObject'; import { CanvasEntityMenuItemsTransform } from 'features/controlLayers/components/common/CanvasEntityMenuItemsTransform'; import { ControlLayerMenuItemsConvertToSubMenu } from 'features/controlLayers/components/ControlLayer/ControlLayerMenuItemsConvertToSubMenu'; import { ControlLayerMenuItemsCopyToSubMenu } from 'features/controlLayers/components/ControlLayer/ControlLayerMenuItemsCopyToSubMenu'; @@ -24,7 +24,7 @@ export const ControlLayerMenuItems = memo(() => { - + diff --git a/invokeai/frontend/web/src/features/controlLayers/components/RasterLayer/RasterLayerMenuItems.tsx b/invokeai/frontend/web/src/features/controlLayers/components/RasterLayer/RasterLayerMenuItems.tsx index 69b17f5f04..212720e064 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/RasterLayer/RasterLayerMenuItems.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/RasterLayer/RasterLayerMenuItems.tsx @@ -6,7 +6,7 @@ import { CanvasEntityMenuItemsDelete } from 'features/controlLayers/components/c import { CanvasEntityMenuItemsDuplicate } from 'features/controlLayers/components/common/CanvasEntityMenuItemsDuplicate'; import { CanvasEntityMenuItemsFilter } from 'features/controlLayers/components/common/CanvasEntityMenuItemsFilter'; import { CanvasEntityMenuItemsSave } from 'features/controlLayers/components/common/CanvasEntityMenuItemsSave'; -import { CanvasEntityMenuItemsSegment } from 'features/controlLayers/components/common/CanvasEntityMenuItemsSegment'; +import { CanvasEntityMenuItemsSelectObject } from 'features/controlLayers/components/common/CanvasEntityMenuItemsSelectObject'; import { CanvasEntityMenuItemsTransform } from 'features/controlLayers/components/common/CanvasEntityMenuItemsTransform'; import { RasterLayerMenuItemsConvertToSubMenu } from 'features/controlLayers/components/RasterLayer/RasterLayerMenuItemsConvertToSubMenu'; import { RasterLayerMenuItemsCopyToSubMenu } from 'features/controlLayers/components/RasterLayer/RasterLayerMenuItemsCopyToSubMenu'; @@ -23,7 +23,7 @@ export const RasterLayerMenuItems = memo(() => { - + diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnything.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObject.tsx similarity index 78% rename from invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnything.tsx rename to invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObject.tsx index 6a50bd769c..0edea450b9 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnything.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObject.tsx @@ -19,8 +19,8 @@ import { useAppSelector } from 'app/store/storeHooks'; import { useFocusRegion, useIsRegionFocused } from 'common/hooks/focus'; import { CanvasAutoProcessSwitch } from 'features/controlLayers/components/CanvasAutoProcessSwitch'; import { CanvasOperationIsolatedLayerPreviewSwitch } from 'features/controlLayers/components/CanvasOperationIsolatedLayerPreviewSwitch'; -import { SegmentAnythingInvert } from 'features/controlLayers/components/SegmentAnything/SegmentAnythingInvert'; -import { SegmentAnythingPointType } from 'features/controlLayers/components/SegmentAnything/SegmentAnythingPointType'; +import { SelectObjectInvert } from 'features/controlLayers/components/SelectObject/SelectObjectInvert'; +import { SelectObjectPointType } from 'features/controlLayers/components/SelectObject/SelectObjectPointType'; import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate'; import type { CanvasEntityAdapterControlLayer } from 'features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterControlLayer'; import type { CanvasEntityAdapterRasterLayer } from 'features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterRasterLayer'; @@ -31,7 +31,7 @@ import { memo, useCallback, useRef } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { PiArrowsCounterClockwiseBold, PiFloppyDiskBold, PiInfoBold, PiStarBold, PiXBold } from 'react-icons/pi'; -const SegmentAnythingContent = memo( +const SelectObjectContent = memo( ({ adapter }: { adapter: CanvasEntityAdapterRasterLayer | CanvasEntityAdapterControlLayer }) => { const { t } = useTranslation(); const ref = useRef(null); @@ -91,9 +91,9 @@ const SegmentAnythingContent = memo( - {t('controlLayers.segment.autoMask')} + {t('controlLayers.selectObject.selectObject')} - }> + }> @@ -105,8 +105,8 @@ const SegmentAnythingContent = memo( - - + + @@ -114,32 +114,32 @@ const SegmentAnythingContent = memo( leftIcon={} onClick={adapter.segmentAnything.processImmediate} isLoading={isProcessing} - loadingText={t('controlLayers.segment.process')} + loadingText={t('controlLayers.selectObject.process')} variant="ghost" isDisabled={!hasPoints || autoProcess} > - {t('controlLayers.segment.process')} + {t('controlLayers.selectObject.process')} } isLoading={isProcessing} - loadingText={t('controlLayers.segment.saveAs')} + loadingText={t('controlLayers.selectObject.saveAs')} variant="ghost" isDisabled={!hasImageState} > - {t('controlLayers.segment.saveAs')} + {t('controlLayers.selectObject.saveAs')} @@ -163,7 +163,7 @@ const SegmentAnythingContent = memo( loadingText={t('common.cancel')} variant="ghost" > - {t('controlLayers.segment.cancel')} + {t('controlLayers.selectObject.cancel')} @@ -171,9 +171,9 @@ const SegmentAnythingContent = memo( } ); -SegmentAnythingContent.displayName = 'SegmentAnythingContent'; +SelectObjectContent.displayName = 'SegmentAnythingContent'; -export const SegmentAnything = () => { +export const SelectObject = memo(() => { const canvasManager = useCanvasManager(); const adapter = useStore(canvasManager.stateApi.$segmentingAdapter); @@ -181,8 +181,10 @@ export const SegmentAnything = () => { return null; } - return ; -}; + return ; +}); + +SelectObject.displayName = 'SelectObject'; const Bold = (props: PropsWithChildren) => ( @@ -190,27 +192,27 @@ const Bold = (props: PropsWithChildren) => ( ); -const SegmentAnythingHelpTooltipContent = memo(() => { +const SelectObjectHelpTooltipContent = memo(() => { const { t } = useTranslation(); return ( - }} /> + }} /> - }} /> + }} /> - + - {t('controlLayers.segment.clickToAdd')} - {t('controlLayers.segment.dragToMove')} - {t('controlLayers.segment.clickToRemove')} + {t('controlLayers.selectObject.clickToAdd')} + {t('controlLayers.selectObject.dragToMove')} + {t('controlLayers.selectObject.clickToRemove')} ); }); -SegmentAnythingHelpTooltipContent.displayName = 'SegmentAnythingHelpTooltipContent'; +SelectObjectHelpTooltipContent.displayName = 'SelectObjectHelpTooltipContent'; diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnythingInvert.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObjectInvert.tsx similarity index 84% rename from invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnythingInvert.tsx rename to invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObjectInvert.tsx index 9215a23c30..639f5d5696 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnythingInvert.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObjectInvert.tsx @@ -5,7 +5,7 @@ import type { CanvasEntityAdapterRasterLayer } from 'features/controlLayers/konv import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -export const SegmentAnythingInvert = memo( +export const SelectObjectInvert = memo( ({ adapter }: { adapter: CanvasEntityAdapterRasterLayer | CanvasEntityAdapterControlLayer }) => { const { t } = useTranslation(); const invert = useStore(adapter.segmentAnything.$invert); @@ -16,11 +16,11 @@ export const SegmentAnythingInvert = memo( return ( - {t('controlLayers.segment.invertSelection')} + {t('controlLayers.selectObject.invertSelection')} ); } ); -SegmentAnythingInvert.displayName = 'SegmentAnythingInvert'; +SelectObjectInvert.displayName = 'SelectObjectInvert'; diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnythingPointType.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObjectPointType.tsx similarity index 82% rename from invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnythingPointType.tsx rename to invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObjectPointType.tsx index b119da584c..9e51b10b13 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/SegmentAnything/SegmentAnythingPointType.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/SelectObject/SelectObjectPointType.tsx @@ -6,7 +6,7 @@ import { SAM_POINT_LABEL_STRING_TO_NUMBER, zSAMPointLabelString } from 'features import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -export const SegmentAnythingPointType = memo( +export const SelectObjectPointType = memo( ({ adapter }: { adapter: CanvasEntityAdapterRasterLayer | CanvasEntityAdapterControlLayer }) => { const { t } = useTranslation(); const pointType = useStore(adapter.segmentAnything.$pointTypeString); @@ -22,14 +22,14 @@ export const SegmentAnythingPointType = memo( return ( - {t('controlLayers.segment.pointType')} + {t('controlLayers.selectObject.pointType')} - {t('controlLayers.segment.include')} + {t('controlLayers.selectObject.include')} - {t('controlLayers.segment.exclude')} + {t('controlLayers.selectObject.exclude')} @@ -38,4 +38,4 @@ export const SegmentAnythingPointType = memo( } ); -SegmentAnythingPointType.displayName = 'SegmentAnythingPointType'; +SelectObjectPointType.displayName = 'SelectObject'; diff --git a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSegment.tsx b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSelectObject.tsx similarity index 77% rename from invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSegment.tsx rename to invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSelectObject.tsx index b7677bb880..d0235d3161 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSegment.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityMenuItemsSelectObject.tsx @@ -5,16 +5,16 @@ import { memo } from 'react'; import { useTranslation } from 'react-i18next'; import { PiMaskHappyBold } from 'react-icons/pi'; -export const CanvasEntityMenuItemsSegment = memo(() => { +export const CanvasEntityMenuItemsSelectObject = memo(() => { const { t } = useTranslation(); const entityIdentifier = useEntityIdentifierContext(); const segmentAnything = useEntitySegmentAnything(entityIdentifier); return ( } isDisabled={segmentAnything.isDisabled}> - {t('controlLayers.segment.autoMask')} + {t('controlLayers.selectObject.selectObject')} ); }); -CanvasEntityMenuItemsSegment.displayName = 'CanvasEntityMenuItemsSegment'; +CanvasEntityMenuItemsSelectObject.displayName = 'CanvasEntityMenuItemsSelectObject';