Skip to content

Commit 83dba6c

Browse files
authored
Allow to open the custom object editor from objects drop-down menu (#7039)
1 parent 7a4aea6 commit 83dba6c

File tree

18 files changed

+94
-2
lines changed

18 files changed

+94
-2
lines changed

Core/GDCore/Extensions/PlatformExtension.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -808,6 +808,24 @@ gd::String PlatformExtension::GetObjectFullType(const gd::String &extensionName,
808808
return extensionName + separator + objectName;
809809
}
810810

811+
gd::String PlatformExtension::GetExtensionFromFullObjectType(const gd::String& type) {
812+
const auto separatorIndex =
813+
type.find(PlatformExtension::GetNamespaceSeparator());
814+
if (separatorIndex == std::string::npos) {
815+
return "";
816+
}
817+
return type.substr(0, separatorIndex);
818+
}
819+
820+
gd::String PlatformExtension::GetObjectNameFromFullObjectType(const gd::String& type) {
821+
const auto separatorIndex =
822+
type.find(PlatformExtension::GetNamespaceSeparator());
823+
if (separatorIndex == std::string::npos) {
824+
return "";
825+
}
826+
return type.substr(separatorIndex + 2);
827+
}
828+
811829
PlatformExtension::PlatformExtension()
812830
: deprecated(false), category(_("General")) {}
813831

Core/GDCore/Extensions/PlatformExtension.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,11 @@ class GD_CORE_API PlatformExtension {
653653
static gd::String GetObjectFullType(const gd::String &extensionName,
654654
const gd::String &objectName);
655655

656+
657+
static gd::String GetExtensionFromFullObjectType(const gd::String& type);
658+
659+
static gd::String GetObjectNameFromFullObjectType(const gd::String& type);
660+
656661
private:
657662
/**
658663
* Set the namespace (the string all actions/conditions/expressions start

GDevelop.js/Bindings/Bindings.idl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2211,6 +2211,8 @@ interface PlatformExtension {
22112211
[Const] DOMString extensionName, [Const] DOMString behaviorName);
22122212
[Const, Value] DOMString STATIC_GetObjectFullType(
22132213
[Const] DOMString extensionName, [Const] DOMString objectName);
2214+
[Const, Value] DOMString STATIC_GetExtensionFromFullObjectType([Const] DOMString type);
2215+
[Const, Value] DOMString STATIC_GetObjectNameFromFullObjectType([Const] DOMString type);
22142216
};
22152217

22162218
interface EventsList {

GDevelop.js/Bindings/Wrapper.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,8 @@ typedef ExtensionAndMetadata<ExpressionMetadata> ExtensionAndExpressionMetadata;
707707
#define STATIC_GetNamespaceSeparator GetNamespaceSeparator
708708
#define STATIC_GetBehaviorFullType GetBehaviorFullType
709709
#define STATIC_GetObjectFullType GetObjectFullType
710+
#define STATIC_GetExtensionFromFullObjectType GetExtensionFromFullObjectType
711+
#define STATIC_GetObjectNameFromFullObjectType GetObjectNameFromFullObjectType
710712
#define STATIC_ApplyRefactoringForVariablesContainer \
711713
ApplyRefactoringForVariablesContainer
712714
#define STATIC_ApplyRefactoringForGroupVariablesContainer \

GDevelop.js/types.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1672,6 +1672,8 @@ export class PlatformExtension extends EmscriptenObject {
16721672
static getNamespaceSeparator(): string;
16731673
static getBehaviorFullType(extensionName: string, behaviorName: string): string;
16741674
static getObjectFullType(extensionName: string, objectName: string): string;
1675+
static getExtensionFromFullObjectType(type: string): string;
1676+
static getObjectNameFromFullObjectType(type: string): string;
16751677
}
16761678

16771679
export class EventsList extends EmscriptenObject {

GDevelop.js/types/gdplatformextension.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ declare class gdPlatformExtension {
5858
static getNamespaceSeparator(): string;
5959
static getBehaviorFullType(extensionName: string, behaviorName: string): string;
6060
static getObjectFullType(extensionName: string, objectName: string): string;
61+
static getExtensionFromFullObjectType(type: string): string;
62+
static getObjectNameFromFullObjectType(type: string): string;
6163
delete(): void;
6264
ptr: number;
6365
};

newIDE/app/src/MainFrame/EditorContainers/BaseEditor.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ export type RenderEditorContainerProps = {|
131131
extensionName: string,
132132
eventsBasedObjectName: string
133133
) => void,
134+
onOpenEventBasedObjectEditor: (
135+
extensionName: string,
136+
eventsBasedObjectName: string
137+
) => void,
134138
|};
135139

136140
export type RenderEditorContainerPropsWithRef = {|

newIDE/app/src/MainFrame/EditorContainers/CustomObjectEditorContainer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ export class CustomObjectEditorContainer extends React.Component<RenderEditorCon
196196
this.props.onEventsBasedObjectChildrenEdited
197197
}
198198
onExtractAsEventBasedObject={this.props.onExtractAsEventBasedObject}
199+
onOpenEventBasedObjectEditor={this.props.onOpenEventBasedObjectEditor}
199200
/>
200201
</div>
201202
);

newIDE/app/src/MainFrame/EditorContainers/ExternalLayoutEditorContainer.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,9 @@ export class ExternalLayoutEditorContainer extends React.Component<
256256
openBehaviorEvents={this.props.openBehaviorEvents}
257257
onExtractAsExternalLayout={this.props.onExtractAsExternalLayout}
258258
onExtractAsEventBasedObject={this.props.onExtractAsEventBasedObject}
259+
onOpenEventBasedObjectEditor={
260+
this.props.onOpenEventBasedObjectEditor
261+
}
259262
onObjectEdited={objectWithContext =>
260263
this.props.onSceneObjectEdited(layout, objectWithContext)
261264
}

newIDE/app/src/MainFrame/EditorContainers/SceneEditorContainer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ export class SceneEditorContainer extends React.Component<RenderEditorContainerP
148148
openBehaviorEvents={this.props.openBehaviorEvents}
149149
onExtractAsExternalLayout={this.props.onExtractAsExternalLayout}
150150
onExtractAsEventBasedObject={this.props.onExtractAsEventBasedObject}
151+
onOpenEventBasedObjectEditor={this.props.onOpenEventBasedObjectEditor}
151152
onObjectEdited={objectWithContext =>
152153
this.props.onSceneObjectEdited(layout, objectWithContext)
153154
}

0 commit comments

Comments
 (0)