add getCmd to linecontainer

This commit is contained in:
sawka
2023-03-02 00:41:16 -08:00
parent adfec86d8b
commit 075e98c4cf
2 changed files with 28 additions and 13 deletions
+18 -12
View File
@@ -125,7 +125,7 @@ class LineAvatar extends React.Component<{line : LineType, cmd : Cmd}, {}> {
@mobxReact.observer @mobxReact.observer
class LineCmd extends React.Component<{sw : LineContainerModel, line : LineType, width : number, staticRender : boolean, visible : OV<boolean>, onHeightChange : HeightChangeCallbackType, topBorder : boolean, renderMode : RenderModeType, overrideCollapsed : OV<boolean>}, {}> { class LineCmd extends React.Component<{sw : LineContainerModel, line : LineType, width : number, staticRender : boolean, visible : OV<boolean>, onHeightChange : HeightChangeCallbackType, topBorder : boolean, renderMode : RenderModeType, overrideCollapsed : OV<boolean>, noSelect? : boolean}, {}> {
lineRef : React.RefObject<any> = React.createRef(); lineRef : React.RefObject<any> = React.createRef();
cmdTextRef : React.RefObject<any> = React.createRef(); cmdTextRef : React.RefObject<any> = React.createRef();
rtnStateDiff : mobx.IObservableValue<string> = mobx.observable.box(null, {name: "linecmd-rtn-state-diff"}); rtnStateDiff : mobx.IObservableValue<string> = mobx.observable.box(null, {name: "linecmd-rtn-state-diff"});
@@ -139,7 +139,7 @@ class LineCmd extends React.Component<{sw : LineContainerModel, line : LineType,
} }
checkStateDiffLoad() : void { checkStateDiffLoad() : void {
let {line, staticRender, visible} = this.props; let {sw, line, staticRender, visible} = this.props;
if (staticRender || this.isCollapsed()) { if (staticRender || this.isCollapsed()) {
return; return;
} }
@@ -150,7 +150,7 @@ class LineCmd extends React.Component<{sw : LineContainerModel, line : LineType,
} }
return; return;
} }
let cmd = GlobalModel.getCmd(line); let cmd = sw.getCmd(line);
if (cmd == null || !cmd.getRtnState() || this.rtnStateDiffFetched) { if (cmd == null || !cmd.getRtnState() || this.rtnStateDiffFetched) {
return; return;
} }
@@ -310,7 +310,10 @@ class LineCmd extends React.Component<{sw : LineContainerModel, line : LineType,
@boundMethod @boundMethod
handleClick() { handleClick() {
let {line} = this.props; let {line, noSelect} = this.props;
if (noSelect) {
return;
}
let sel = window.getSelection(); let sel = window.getSelection();
if (this.lineRef.current != null) { if (this.lineRef.current != null) {
let selText = sel.toString(); let selText = sel.toString();
@@ -375,7 +378,7 @@ class LineCmd extends React.Component<{sw : LineContainerModel, line : LineType,
renderSimple() { renderSimple() {
let {sw, line, width, topBorder, renderMode} = this.props; let {sw, line, width, topBorder, renderMode} = this.props;
let cmd = GlobalModel.getCmd(line); let cmd = sw.getCmd(line);
let isCollapsed = this.isCollapsed(); let isCollapsed = this.isCollapsed();
let mainDivCn = cn( let mainDivCn = cn(
"line", "line",
@@ -432,7 +435,7 @@ class LineCmd extends React.Component<{sw : LineContainerModel, line : LineType,
return this.renderSimple(); return this.renderSimple();
} }
let formattedTime = getLineDateTimeStr(line.ts); let formattedTime = getLineDateTimeStr(line.ts);
let cmd = model.getCmd(line); let cmd = sw.getCmd(line);
if (cmd == null) { if (cmd == null) {
return ( return (
<div className="line line-invalid" id={this.getLineDomId()} ref={this.lineRef} data-lineid={line.lineid} data-linenum={line.linenum} data-windowid={line.windowid}> <div className="line line-invalid" id={this.getLineDomId()} ref={this.lineRef} data-lineid={line.lineid} data-linenum={line.linenum} data-windowid={line.windowid}>
@@ -517,7 +520,7 @@ class LineCmd extends React.Component<{sw : LineContainerModel, line : LineType,
} }
@mobxReact.observer @mobxReact.observer
class Line extends React.Component<{sw : LineContainerModel, line : LineType, width : number, staticRender : boolean, visible : OV<boolean>, onHeightChange : HeightChangeCallbackType, overrideCollapsed : OV<boolean>, topBorder : boolean, renderMode : RenderModeType}, {}> { class Line extends React.Component<{sw : LineContainerModel, line : LineType, width : number, staticRender : boolean, visible : OV<boolean>, onHeightChange : HeightChangeCallbackType, overrideCollapsed : OV<boolean>, topBorder : boolean, renderMode : RenderModeType, noSelect? : boolean}, {}> {
render() { render() {
let line = this.props.line; let line = this.props.line;
if (line.archived) { if (line.archived) {
@@ -571,10 +574,13 @@ class Prompt extends React.Component<{rptr : RemotePtrType, festate : FeStateTyp
} }
@mobxReact.observer @mobxReact.observer
class LineText extends React.Component<{sw : LineContainerModel, line : LineType, renderMode : RenderModeType, topBorder : boolean}, {}> { class LineText extends React.Component<{sw : LineContainerModel, line : LineType, renderMode : RenderModeType, topBorder : boolean, noSelect? : boolean}, {}> {
@boundMethod @boundMethod
clickHandler() { clickHandler() {
let {line} = this.props; let {line, noSelect} = this.props;
if (noSelect) {
return;
}
GlobalCommandRunner.swSelectLine(String(line.linenum)); GlobalCommandRunner.swSelectLine(String(line.linenum));
} }
@@ -675,7 +681,7 @@ class ImageRenderer extends React.Component<{sw : LineContainerModel, line : Lin
loadImage() : void { loadImage() : void {
let {sw, line} = this.props; let {sw, line} = this.props;
let model = GlobalModel; let model = GlobalModel;
let cmd = model.getCmd(line); let cmd = sw.getCmd(line);
if (cmd == null) { if (cmd == null) {
return; return;
} }
@@ -782,7 +788,7 @@ class TerminalRenderer extends React.Component<{sw : LineContainerModel, line :
loadTerminal() : void { loadTerminal() : void {
let {sw, line} = this.props; let {sw, line} = this.props;
let model = GlobalModel; let model = GlobalModel;
let cmd = model.getCmd(line); let cmd = sw.getCmd(line);
if (cmd == null) { if (cmd == null) {
return; return;
} }
@@ -827,7 +833,7 @@ class TerminalRenderer extends React.Component<{sw : LineContainerModel, line :
let swFocusType = sw.getFocusType(); let swFocusType = sw.getFocusType();
return isPhysicalFocused && (swFocusType == "cmd" || swFocusType == "cmd-fg") return isPhysicalFocused && (swFocusType == "cmd" || swFocusType == "cmd-fg")
}, {name: "computed-isFocused"}).get(); }, {name: "computed-isFocused"}).get();
let cmd = GlobalModel.getCmd(line); // will not be null let cmd = sw.getCmd(line); // will not be null
let usedRows = sw.getUsedRows(line, cmd, width); let usedRows = sw.getUsedRows(line, cmd, width);
let termHeight = termHeightFromRows(usedRows, GlobalModel.termFontSize.get()); let termHeight = termHeightFromRows(usedRows, GlobalModel.termFontSize.get());
let termLoaded = this.termLoaded.get(); let termLoaded = this.termLoaded.get();
+10 -1
View File
@@ -37,6 +37,7 @@ type LineContainerModel = {
getRenderer : (cmdId : string) => RendererModel, getRenderer : (cmdId : string) => RendererModel,
getFocusType : () => "input" | "cmd" | "cmd-fg", getFocusType : () => "input" | "cmd" | "cmd-fg",
getSelectedLine : () => number, getSelectedLine : () => number,
getCmd : (line : LineType) => Cmd,
} }
@@ -365,6 +366,10 @@ class ScreenWindow {
this.termLineNumFocus = mobx.observable.box(0, {name: "termLineNumFocus"}); this.termLineNumFocus = mobx.observable.box(0, {name: "termLineNumFocus"});
} }
getCmd(line : LineType) : Cmd {
return GlobalModel.getCmd(line);
}
getAnchorStr() : string { getAnchorStr() : string {
if (this.anchorLine == null || this.anchorLine == 0) { if (this.anchorLine == null || this.anchorLine == 0) {
return "0"; return "0";
@@ -725,7 +730,7 @@ class Window {
dispose() { dispose() {
} }
getCmd(cmdId : string) { getCmd(cmdId : string) : Cmd {
return this.cmds[cmdId]; return this.cmds[cmdId];
} }
@@ -1638,6 +1643,10 @@ class SpecialHistoryViewLineContainer {
constructor(hitem : HistoryItem) { constructor(hitem : HistoryItem) {
this.historyItem = hitem; this.historyItem = hitem;
} }
getCmd(line : LineType) : Cmd {
return null;
}
loadTerminalRenderer(elem : Element, line : LineType, cmd : Cmd, width : number) : void { loadTerminalRenderer(elem : Element, line : LineType, cmd : Cmd, width : number) : void {
this.unloadRenderer(null); this.unloadRenderer(null);