diff --git a/package-lock.json b/package-lock.json index dc4f69e0..9ffcd2e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "sortablejs": "^1.15.0", "splitpanes": "^2.4.1", "textarea-caret": "^3.1.0", - "tigerpython-parser": "github:neilccbrown/TigerPython-Parser#fix-empty-global", + "tigerpython-parser": "github:Tobias-Kohn/TigerPython-Parser", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", "v-blur": "^1.0.4", @@ -17123,8 +17123,8 @@ "dev": true }, "node_modules/tigerpython-parser": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/neilccbrown/TigerPython-Parser.git#02027148cd7a0d69ca1b7281b4a285ddfbe4f213" + "version": "1.0.2", + "resolved": "git+ssh://git@github.com/Tobias-Kohn/TigerPython-Parser.git#a97aae8ddec588eeb74617c3122bfe98fc9a63bd" }, "node_modules/tinytim": { "version": "0.1.1", diff --git a/package.json b/package.json index 2fc22229..156ce6ff 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "sortablejs": "^1.15.0", "splitpanes": "^2.4.1", "textarea-caret": "^3.1.0", - "tigerpython-parser": "github:neilccbrown/TigerPython-Parser#fix-empty-global", + "tigerpython-parser": "github:Tobias-Kohn/TigerPython-Parser", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", "v-blur": "^1.0.4", diff --git a/src/App.vue b/src/App.vue index c64e03dd..5423515a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -36,6 +36,7 @@
@@ -208,6 +209,14 @@ export default Vue.extend({ return this.isBeingDragged || !!this.appStore.frameObjects[this.frameId].isBeingDragged; }, + parsingErrorMessage(): string { + return this.appStore.frameObjects[this.frameId].atParsingError ?? ""; + }, + + hasParsingError(): boolean { + return this.parsingErrorMessage.length > 0; + }, + runTimeErrorMessage(): string { return this.appStore.frameObjects[this.frameId].runTimeError ?? ""; }, @@ -220,6 +229,14 @@ export default Vue.extend({ return this.appStore.wasLastRuntimeErrorFrameId == this.frameId; }, + errorPopupTitle(): string { + return this.$t((this.hasParsingError) ? "errorMessage.errorTitle" : ((this.hasRuntimeError) ? "PEA.runtimeErrorConsole" : "errorMessage.pastFrameErrTitle")) as string; + }, + + errorPopupContent(): string { + return (this.hasParsingError) ? this.parsingErrorMessage : ((this.hasRuntimeError) ? this.runTimeErrorMessage : this.runtimeErrorAtLastRunMsg); + }, + deletableFrame(): boolean{ return (this.appStore.potentialDeleteFrameIds?.includes(this.frameId)) ?? false; }, @@ -1051,6 +1068,14 @@ export default Vue.extend({ deleteOuter(): void { this.appStore.deleteOuterFrames(this.frameId); }, + + showFrameParseErrorPopupOnHeaderFocus(isFocusing: boolean): void{ + // We need to be able to show the frame error popup programmatically + // (if applies) when we navigate to the error - we make sure the frame still exists. + if(this.appStore.frameObjects[this.frameId] && this.hasParsingError){ + (this.$refs.errorPopover as InstanceType).$emit((isFocusing) ? "open" : "close"); + } + }, }, }); diff --git a/src/components/FrameHeader.vue b/src/components/FrameHeader.vue index 76a5a977..87227940 100644 --- a/src/components/FrameHeader.vue +++ b/src/components/FrameHeader.vue @@ -1,5 +1,5 @@