Skip to content

Commit

Permalink
tweak toggle simulator settings menu option in headless mode
Browse files Browse the repository at this point in the history
  • Loading branch information
riknoll committed Oct 19, 2023
1 parent cd04849 commit 8a1053a
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
4 changes: 4 additions & 0 deletions webapp/src/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,10 @@ export class ProjectView
return;
}

if (pxt.appTarget.simulator?.headless && !this.state.collapseEditorTools) {
this.toggleSimulatorCollapse();
}

const mainBlocks = pkg.mainEditorPkg().files[pxt.MAIN_BLOCKS];
if (this.isJavaScriptActive() || (this.shouldTryDecompile && !this.state.embedSimView))
this.textEditor.openBlocks();
Expand Down
11 changes: 8 additions & 3 deletions webapp/src/container.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ export interface SettingsMenuProps extends ISettingsProps {
greenScreen: boolean;
accessibleBlocks: boolean;
showShare?: boolean;
inBlocks: boolean;
}

// This Component overrides shouldComponentUpdate, be sure to update that if the state is updated
Expand Down Expand Up @@ -281,7 +282,8 @@ export class SettingsMenu extends data.Component<SettingsMenuProps, SettingsMenu
shouldComponentUpdate(nextProps: SettingsMenuProps, nextState: SettingsMenuState, nextContext: any): boolean {
return this.state.greenScreen != nextState.greenScreen
|| this.state.accessibleBlocks != nextState.accessibleBlocks
|| this.state.showShare != nextState.showShare;
|| this.state.showShare != nextState.showShare
|| nextProps.inBlocks !== this.props.inBlocks
}

renderCore() {
Expand All @@ -296,10 +298,11 @@ export class SettingsMenu extends data.Component<SettingsMenuProps, SettingsMenu
const disableFileAccessinMaciOs = targetTheme.disableFileAccessinMaciOs && (pxt.BrowserUtils.isIOS() || pxt.BrowserUtils.isMac())
const disableFileAccessinAndroid = pxt.appTarget.appTheme.disableFileAccessinAndroid && pxt.BrowserUtils.isAndroid();

const headless = pxt.appTarget.simulator?.headless;
const showHome = !targetTheme.lockedEditor && !isController && auth.hasIdentity();
const showShare = this.props.showShare && pxt.appTarget.cloud?.sharing && !isController;
const showSave = !readOnly && !isController && !!targetTheme.saveInMenu && !disableFileAccessinMaciOs && !disableFileAccessinAndroid;
const showSimCollapse = !readOnly && !isController && !!targetTheme.simCollapseInMenu;
const showSimCollapse = !readOnly && !isController && !!targetTheme.simCollapseInMenu && !(headless && this.props.inBlocks);
const showGreenScreen = targetTheme.greenScreen || /greenscreen=1/i.test(window.location.href);
const showPrint = targetTheme.print && !pxt.BrowserUtils.isIE();
const showProjectSettings = targetTheme.showProjectSettings;
Expand All @@ -313,6 +316,8 @@ export class SettingsMenu extends data.Component<SettingsMenuProps, SettingsMenu

const showCenterDivider = targetTheme.selectLanguage || targetTheme.highContrast || showGreenScreen || githubUser;

const simCollapseText = headless ? lf("Toggle the File Explorer") : lf("Toggle the simulator");

return <sui.DropdownMenu role="menuitem" icon={'setting large'} title={lf("More...")} className="item icon more-dropdown-menuitem" ref={ref => this.dropdown = ref}>
{showHome && <sui.Item className="mobile only inherit" role="menuitem" icon="home" title={lf("Home")} text={lf("Home")} ariaLabel={lf("Home screen")} onClick={this.showExitAndSaveDialog} />}
{showShare && <sui.Item className="mobile only inherit" role="menuitem" icon="share alternate" title={lf("Publish your game to create a shareable link")} text={lf("Share")} ariaLabel={lf("Share Project")} onClick={this.showShareDialog} />}
Expand All @@ -325,7 +330,7 @@ export class SettingsMenu extends data.Component<SettingsMenuProps, SettingsMenu
{showSave ? <sui.Item role="menuitem" icon="save" text={lf("Save Project")} onClick={this.saveProject} /> : undefined}
{!isController ? <sui.Item role="menuitem" icon="trash" text={lf("Delete Project")} onClick={this.removeProject} /> : undefined}
{targetTheme.timeMachine ? <sui.Item role="menuitem" icon="history" text={lf("Version History")} onClick={this.showTurnBackTimeDialog} /> : undefined}
{showSimCollapse ? <sui.Item role="menuitem" icon='toggle right' text={lf("Toggle the simulator")} onClick={this.toggleCollapse} /> : undefined}
{showSimCollapse ? <sui.Item role="menuitem" icon='toggle right' text={simCollapseText} onClick={this.toggleCollapse} /> : undefined}
<div className="ui divider"></div>
{targetTheme.selectLanguage ? <sui.Item icon='xicon globe' role="menuitem" text={lf("Language")} onClick={this.showLanguagePicker} /> : undefined}
{targetTheme.highContrast ? <sui.Item role="menuitem" text={highContrast ? lf("High Contrast Off") : lf("High Contrast On")} onClick={this.toggleHighContrast} /> : undefined}
Expand Down
2 changes: 1 addition & 1 deletion webapp/src/headerbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ export class HeaderBar extends data.Component<ISettingsProps, {}> {
return <projects.ProjectSettingsMenu parent={this.props.parent} />
case "tutorial-tab":
case "editor":
return <container.SettingsMenu parent={this.props.parent} greenScreen={greenScreen} accessibleBlocks={accessibleBlocks} showShare={!!header} />
return <container.SettingsMenu parent={this.props.parent} greenScreen={greenScreen} accessibleBlocks={accessibleBlocks} showShare={!!header} inBlocks={this.props.parent.isBlocksActive()} />
default:
return <div />
}
Expand Down

0 comments on commit 8a1053a

Please sign in to comment.