@@ -2005,7 +2005,7 @@ class ScreenWindowView extends React.Component<{sw : ScreenWindow}, {}> {
}
render() {
- let {sw} = this.props;
+ let {screen} = this.props;
let win = this.getWindow();
if (win == null || !win.loaded.get()) {
return this.renderError("...", true);
@@ -2022,16 +2022,15 @@ class ScreenWindowView extends React.Component<{sw : ScreenWindow}, {}> {
}
let idx = 0;
let line : LineType = null;
- let screen = GlobalModel.getScreenById(sw.sessionId, sw.screenId);
- let session = GlobalModel.getSessionById(sw.sessionId);
- let isActive = sw.isActive();
- let selectedLine = sw.getSelectedLine();
+ let session = GlobalModel.getSessionById(screen.sessionId);
+ let isActive = screen.isActive();
+ let selectedLine = screen.getSelectedLine();
let lines = win.getNonArchivedLines();
let renderMode = this.renderMode.get();
return (
-
{sw.name.get()}
+
{screen.name.get()}
@@ -2042,11 +2041,11 @@ class ScreenWindowView extends React.Component<{sw : ScreenWindow}, {}> {
0}>
-
+
-
[session="{session.name.get()}" screen="{screen.name.get()}" window="{sw.name.get()}"]
+
[session="{session.name.get()}" screen="{screen.name.get()}" window="{screen.name.get()}"]
@@ -2058,22 +2057,17 @@ class ScreenWindowView extends React.Component<{sw : ScreenWindow}, {}> {
class ScreenView extends React.Component<{screen : Screen}, {}> {
render() {
let {screen} = this.props;
- let sw : ScreenWindow = null;
- if (screen != null) {
- sw = screen.getActiveSW();
- }
- if (screen == null || sw == null) {
+ if (screen == null) {
return (
- (no screen or window)
+ (no screen found)
);
}
let fontSize = GlobalModel.termFontSize.get();
- let swKey = sw.windowId + "-fs" + fontSize;
return (
-
-
+
+
);
}
@@ -2160,7 +2154,8 @@ class ScreenTabs extends React.Component<{session : Session}, {}> {
let index = 0;
let showingScreens = [];
let activeScreenId = session.activeScreenId.get();
- for (let screen of session.screens) {
+ let screens = GlobalModel.getSessionScreens(session.sessionId);
+ for (let screen of screens) {
if (!screen.archived.get() || activeScreenId == screen.screenId) {
showingScreens.push(screen);
}
@@ -2328,17 +2323,14 @@ class MainSideBar extends React.Component<{}, {}> {
let model = GlobalModel;
let activeSessionId = model.activeSessionId.get();
let activeWindow = model.getActiveWindow();
+ let activeScreen = model.getActiveScreen();
let activeRemoteId : string = null;
- if (activeWindow != null) {
- let rptr = activeWindow.curRemote.get();
+ if (activeScreen != null) {
+ let rptr = activeScreen.curRemote.get();
if (rptr != null && !isBlank(rptr.remoteid)) {
activeRemoteId = rptr.remoteid;
}
}
- let sw : ScreenWindow = null;
- if (GlobalModel.debugSW.get()) {
- sw = GlobalModel.getActiveSW();
- }
let session : Session = null;
let remotes = model.remotes ?? [];
let remote : RemoteType = null;
@@ -2397,7 +2389,7 @@ class MainSideBar extends React.Component<{}, {}> {
HISTORY
Playbooks
@@ -2407,11 +2399,11 @@ class MainSideBar extends React.Component<{}, {}> {
prompt-dev
-
+
- focus={sw.focusType.get()}
- sline={sw.getSelectedLine()}
- termfocus={sw.termLineNumFocus.get()}
+ focus={activeScreen.focusType.get()}
+ sline={activeScreen.getSelectedLine()}
+ termfocus={activeScreen.termLineNumFocus.get()}
diff --git a/src/model.ts b/src/model.ts
index 0a962086d..7b9926519 100644
--- a/src/model.ts
+++ b/src/model.ts
@@ -5,7 +5,7 @@ import {debounce} from "throttle-debounce";
import {handleJsonFetchResponse, base64ToArray, genMergeData, genMergeSimpleData, boundInt, isModKeyPress} from "./util";
import {TermWrap} from "./term";
import {v4 as uuidv4} from "uuid";
-import type {SessionDataType, WindowDataType, LineType, RemoteType, HistoryItem, RemoteInstanceType, RemotePtrType, CmdDataType, FeCmdPacketType, TermOptsType, RemoteStateType, ScreenDataType, ScreenWindowType, ScreenOptsType, LayoutType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, UIContextType, HistoryInfoType, HistoryQueryOpts, FeInputPacketType, TermWinSize, RemoteInputPacketType, FeStateType, ContextMenuOpts, RendererContext, RendererModel, PtyDataType, BookmarkType, ClientDataType, HistoryViewDataType, AlertMessageType, HistorySearchParams} from "./types";
+import type {SessionDataType, LineType, RemoteType, HistoryItem, RemoteInstanceType, RemotePtrType, CmdDataType, FeCmdPacketType, TermOptsType, RemoteStateType, ScreenDataType, ScreenOptsType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, UIContextType, HistoryInfoType, HistoryQueryOpts, FeInputPacketType, TermWinSize, RemoteInputPacketType, FeStateType, ContextMenuOpts, RendererContext, RendererModel, PtyDataType, BookmarkType, ClientDataType, HistoryViewDataType, AlertMessageType, HistorySearchParams, FocusTypeStrs, ScreenLinesType} from "./types";
import {WSControl} from "./ws";
import {ImageRendererModel} from "./imagerenderer";
import {measureText, getMonoFontSize} from "./textmeasure";
@@ -28,6 +28,7 @@ const DevServerWsEndpoint = "ws://localhost:8091";
const DefaultTermFontSize = 12;
const MinFontSize = 8;
const MaxFontSize = 15;
+const InputChunkSize = 500;
// @ts-ignore
const VERSION = __PROMPT_VERSION__;
@@ -50,7 +51,7 @@ type LineContainerModel = {
type SWLinePtr = {
line : LineType,
win : Window,
- sw : ScreenWindow,
+ screen : Screen,
};
function windowWidthToCols(width : number, fontSize : number) : number {
@@ -249,6 +250,13 @@ class Cmd {
if (!this.isRunning()) {
return;
}
+ for (let pos=0; pos;
opts : OV;
name : OV;
- activeWindowId : OV;
- windows : OArr;
archived : OV;
-
+ curRemote : OV;
+ lastCols : number;
+ lastRows : number;
+ selectedLine : OV;
+ focusType : OV;
+ anchorLine : number = null;
+ anchorOffset : number = 0;
+ termLineNumFocus : OV;
+ setAnchor_debounced : (anchorLine : number, anchorOffset : number) => void;
+ renderers : Record = {}; // cmdid => TermWrap
+
constructor(sdata : ScreenDataType) {
this.sessionId = sdata.sessionid;
this.screenId = sdata.screenid;
+ this.windowId = sdata.windowid;
this.name = mobx.observable.box(sdata.name, {name: "screen-name"});
this.screenIdx = mobx.observable.box(sdata.screenidx, {name: "screen-screenidx"});
this.opts = mobx.observable.box(sdata.screenopts, {name: "screen-opts"});
- this.activeWindowId = mobx.observable.box(ces(sdata.activewindowid), {name: "screen-activewindowid"});
this.archived = mobx.observable.box(!!sdata.archived, {name: "screen-archived"});
- let swArr : ScreenWindow[] = [];
- let wins = sdata.windows || [];
- for (let i=0; i {
- if (data.screenidx != 0) {
- this.screenIdx.set(data.screenidx);
- }
- if (data.screenopts != null) {
- this.opts.set(data.screenopts);
- }
- if (!isBlank(data.name)) {
- this.name.set(data.name);
- }
- if (!isBlank(data.activewindowid)) {
- this.activeWindowId.set(data.activewindowid);
- }
+ this.screenIdx.set(data.screenidx);
+ this.opts.set(data.screenopts);
+ this.name.set(data.name);
this.archived.set(!!data.archived);
- // TODO merge windows
+ let oldSelectedLine = this.selectedLine.get();
+ let oldFocusType = this.focusType.get();
+ this.selectedLine.set(data.selectedline);
+ this.focusType.set(data.focustype);
+ this.refocusLine(data, oldFocusType, oldSelectedLine);
+ // do not update anchorLine/anchorOffset (only stored)
})();
}
- getActiveSW() : ScreenWindow {
- return this.getSW(this.activeWindowId.get());
- }
-
- getTabColor() : string {
- let tabColor = "green";
- let screenOpts = this.opts.get();
- if (screenOpts != null && !isBlank(screenOpts.tabcolor)) {
- tabColor = screenOpts.tabcolor;
- }
- return tabColor;
- }
-
- getSW(windowId : string) : ScreenWindow {
- if (windowId == null) {
- return null;
- }
- for (let i=0; i;
- layout : OV;
- lastCols : number;
- lastRows : number;
- selectedLine : OV;
- focusType : OV<"input"|"cmd"|"cmd-fg">;
- anchorLine : number = null;
- anchorOffset : number = 0;
- termLineNumFocus : OV;
-
- // cmdid => TermWrap
- renderers : Record = {};
-
- setAnchor_debounced : (anchorLine : number, anchorOffset : number) => void;
-
- constructor(swdata : ScreenWindowType) {
- this.sessionId = swdata.sessionid;
- this.screenId = swdata.screenid;
- this.windowId = swdata.windowid;
- this.name = mobx.observable.box(swdata.name, {name: "name"});
- this.layout = mobx.observable.box(swdata.layout, {name: "layout"});
- this.focusType = mobx.observable.box(swdata.focustype, {name: "focusType"});
- this.selectedLine = mobx.observable.box(swdata.selectedline == 0 ? null : swdata.selectedline, {name: "selectedLine"});
- this.setAnchor_debounced = debounce(1000, this.setAnchor.bind(this));
- if (swdata.selectedline != 0) {
- this.setAnchorFields(swdata.selectedline, 0, "init");
- }
- this.termLineNumFocus = mobx.observable.box(0, {name: "termLineNumFocus"});
- }
-
getCmd(line : LineType) : Cmd {
return GlobalModel.getCmd(line);
}
@@ -382,37 +336,46 @@ class ScreenWindow {
return sprintf("%d:%d", this.anchorLine, this.anchorOffset);
}
+ getWindowId() : string {
+ return this.windowId;
+ }
+
+ getTabColor() : string {
+ let tabColor = "green";
+ let screenOpts = this.opts.get();
+ if (screenOpts != null && !isBlank(screenOpts.tabcolor)) {
+ tabColor = screenOpts.tabcolor;
+ }
+ return tabColor;
+ }
+
+ getCurRemoteInstance() : RemoteInstanceType {
+ let session = GlobalModel.getSessionById(this.sessionId);
+ let rptr = this.curRemote.get();
+ if (rptr == null) {
+ return null;
+ }
+ return session.getRemoteInstance(this.windowId, rptr);
+ }
+
setAnchorFields(anchorLine : number, anchorOffset : number, reason : string) {
this.anchorLine = anchorLine;
this.anchorOffset = anchorOffset;
// console.log("set-anchor-fields", anchorLine, anchorOffset, reason);
}
- updateSelf(swdata : ScreenWindowType) {
- mobx.action(() => {
- this.name.set(swdata.name);
- this.layout.set(swdata.layout);
- let oldSelectedLine = this.selectedLine.get();
- let oldFocusType = this.focusType.get();
- this.selectedLine.set(swdata.selectedline);
- this.focusType.set(swdata.focustype);
- this.refocusLine(swdata, oldFocusType, oldSelectedLine);
- // do not update anchorLine/anchorOffset (only stored)
- })();
- }
-
- refocusLine(swdata : ScreenWindowType, oldFocusType : string, oldSelectedLine : number) : void {
- let isCmdFocus = (swdata.focustype == "cmd" || swdata.focustype == "cmd-fg");
+ refocusLine(sdata : ScreenDataType, oldFocusType : string, oldSelectedLine : number) : void {
+ let isCmdFocus = (sdata.focustype == "cmd" || sdata.focustype == "cmd-fg");
if (!isCmdFocus) {
return;
}
let curLineFocus = GlobalModel.getFocusedLine();
let sline : LineType = null;
- if (swdata.selectedline != 0) {
- sline = this.getLineByNum(swdata.selectedline);
+ if (sdata.selectedline != 0) {
+ sline = this.getLineByNum(sdata.selectedline);
}
- // console.log("refocus", curLineFocus.linenum, "=>", swdata.selectedline, sline.cmdid);
- if (curLineFocus.cmdInputFocus || (curLineFocus.linenum != null && curLineFocus.linenum != swdata.selectedline)) {
+ // console.log("refocus", curLineFocus.linenum, "=>", sdata.selectedline, sline.cmdid);
+ if (curLineFocus.cmdInputFocus || (curLineFocus.linenum != null && curLineFocus.linenum != sdata.selectedline)) {
(document.activeElement as HTMLElement).blur();
}
if (sline != null && sline.cmdid != null) {
@@ -423,19 +386,15 @@ class ScreenWindow {
}
}
- setFocusType(ftype : "input" | "cmd" | "cmd-fg") : void {
+ setFocusType(ftype : FocusTypeStrs) : void {
mobx.action(() => {
this.focusType.set(ftype);
})();
}
- getFocusType() : "input" | "cmd" | "cmd-fg" {
- return this.focusType.get();
- }
-
setAnchor(anchorLine : number, anchorOffset : number) : void {
let setVal = ((anchorLine == null || anchorLine == 0) ? "0" : sprintf("%d:%d", anchorLine, anchorOffset));
- GlobalCommandRunner.swSetAnchor(this.sessionId, this.screenId, this.windowId, setVal);
+ GlobalCommandRunner.screenSetAnchor(this.sessionId, this.screenId, this.windowId, setVal);
}
getMaxLineNum() : number {
@@ -564,10 +523,10 @@ class ScreenWindow {
// console.log("SW setTermFocus", lineNum, focus);
mobx.action(() => this.termLineNumFocus.set(focus ? lineNum : 0))();
if (focus && this.selectedLine.get() != lineNum) {
- GlobalCommandRunner.swSelectLine(String(lineNum), "cmd");
+ GlobalCommandRunner.screenSelectLine(String(lineNum), "cmd");
}
else if (focus && this.focusType.get() == "input") {
- GlobalCommandRunner.swSetFocus("cmd");
+ GlobalCommandRunner.screenSetFocus("cmd");
}
}
@@ -697,6 +656,10 @@ class ScreenWindow {
return GlobalModel.getWindowById(this.sessionId, this.windowId);
}
+ getFocusType() : FocusTypeStrs {
+ return this.focusType.get();
+ }
+
giveFocus() : void {
if (!this.isActive()) {
return;
@@ -720,17 +683,19 @@ class ScreenWindow {
}
}
+// fake window for now (this is really ScreenLines)
class Window {
sessionId : string;
+ screenId : string;
windowId : string;
- curRemote : OV = mobx.observable.box(null, {name: "window-curRemote"});
loaded : OV = mobx.observable.box(false, {name: "window-loaded"});
loadError : OV = mobx.observable.box(null);
lines : OArr = mobx.observable.array([], {name: "window-lines", deep: false});
cmds : Record = {};
- constructor(sessionId : string, windowId : string) {
+ constructor(sessionId : string, screenId : string, windowId : string) {
this.sessionId = sessionId;
+ this.screenId = screenId;
this.windowId = windowId;
}
@@ -746,17 +711,13 @@ class Window {
return rtn;
}
- updateWindow(win : WindowDataType, load : boolean) {
+ updateWindow(slines : ScreenLinesType, load : boolean) {
mobx.action(() => {
- if (win.curremote != null && win.curremote.remoteid != "") {
- this.curRemote.set(win.curremote);
- }
if (load) {
this.loaded.set(true);
}
- genMergeSimpleData(this.lines, win.lines, (l : LineType) => String(l.lineid), (l : LineType) => sprintf("%013d:%s", l.ts, l.lineid));
-
- let cmds = win.cmds || [];
+ genMergeSimpleData(this.lines, slines.lines, (l : LineType) => String(l.lineid), (l : LineType) => sprintf("%013d:%s", l.ts, l.lineid));
+ let cmds = slines.cmds || [];
for (let i=0; i;
activeScreenId : OV;
sessionIdx : OV;
- screens : OArr;
notifyNum : OV = mobx.observable.box(0);
remoteInstances : OArr;
archived : OV;
@@ -886,13 +837,6 @@ class Session {
this.name = mobx.observable.box(sdata.name);
this.sessionIdx = mobx.observable.box(sdata.sessionidx);
this.archived = mobx.observable.box(!!sdata.archived);
- let screenData = sdata.screens || [];
- let screens : Screen[] = [];
- for (let i=0; i s.screenId, (s : ScreenDataType) => s.screenid, (data : ScreenDataType) => new Screen(data), (s : Screen) => s.screenIdx.get());
if (!isBlank(sdata.activescreenid)) {
let screen = this.getScreenById(sdata.activescreenid);
if (screen == null) {
@@ -943,12 +886,7 @@ class Session {
if (screenId == null) {
return null;
}
- for (let i=0; i = mobx.observable.box(null, {name: "activeSessionId"});
sessionListLoaded : OV = mobx.observable.box(false, {name: "sessionListLoaded"});
sessionList : OArr = mobx.observable.array([], {name: "SessionList", deep: false});
+ screenList : OArr = mobx.observable.array([], {name: "ScreenList", deep: false});
ws : WSControl;
remotes : OArr = mobx.observable.array([], {name: "remotes", deep: false});
remotesLoaded : OV = mobx.observable.box(false, {name: "remotesLoaded"});
- windows : OMap = mobx.observable.map({}, {name: "windows", deep: false}); // key = "sessionid/windowid"
+ windows : OMap = mobx.observable.map({}, {name: "windows", deep: false}); // key = "sessionid/windowid" (screenlines)
termUsedRowsCache : Record = {};
debugCmds : number = 0;
- debugSW : OV = mobx.observable.box(false);
+ debugScreen : OV = mobx.observable.box(false);
localServerRunning : OV;
authKey : string;
isDev : boolean;
@@ -2492,21 +2420,6 @@ class Model {
})();
}
- dumpStructure() : void {
- for (let i=0; i", newStatus);
let lines = this.getActiveLinesByCmdId(sessionId, cmdId);
for (let ptr of lines) {
- let sw = ptr.sw;
- let renderer = sw.getRenderer(cmdId);
+ let screen = ptr.screen;
+ let renderer = screen.getRenderer(cmdId);
if (renderer != null) {
renderer.cmdDone();
}
@@ -2614,19 +2521,19 @@ class Model {
}
onMetaPageUp() : void {
- GlobalCommandRunner.swSelectLine("-1");
+ GlobalCommandRunner.screenSelectLine("-1");
}
onMetaPageDown() : void {
- GlobalCommandRunner.swSelectLine("+1");
+ GlobalCommandRunner.screenSelectLine("+1");
}
onMetaArrowUp() : void {
- GlobalCommandRunner.swSelectLine("-1");
+ GlobalCommandRunner.screenSelectLine("-1");
}
onMetaArrowDown() : void {
- GlobalCommandRunner.swSelectLine("+1");
+ GlobalCommandRunner.screenSelectLine("+1");
}
onBracketCmd(e : any, arg : {relative: number}, mods : KeyModsType) {
@@ -2700,6 +2607,18 @@ class Model {
}
}
}
+ if ("screens" in update) {
+ if (update.connect) {
+ this.screenList.clear();
+ }
+ genMergeData(this.screenList, update.screens, (s : Screen) => s.screenId, (sdata : ScreenDataType) => sdata.screenid, (sdata : ScreenDataType) => new Screen(sdata), null);
+ for (let i=0; i {
let rtn : Record = {};
- for (let i=0; i {
- let winKey = win.sessionid + "/" + win.windowid;
- if (win.remove) {
- this.windows.delete(winKey);
- return;
- }
+ let winKey = slines.sessionid + "/" + slines.windowid;
let existingWin = this.windows.get(winKey);
if (existingWin == null) {
if (!load) {
console.log("cannot update window that does not exist", winKey);
return;
}
- let newWindow = new Window(win.sessionid, win.windowid);
+ let newWindow = new Window(slines.sessionid, slines.screenid, slines.windowid);
this.windows.set(winKey, newWindow);
- newWindow.updateWindow(win, load);
+ newWindow.updateWindow(slines, load);
return;
}
else {
- existingWin.updateWindow(win, load);
+ existingWin.updateWindow(slines, load);
existingWin.loaded.set(true);
}
})();
}
- updateSW(swdata : ScreenWindowType) {
- let sw = this.getSWByIds(swdata.sessionid, swdata.screenid, swdata.windowid);
- if (sw == null) {
- return;
- }
- sw.updateSelf(swdata);
+ removeWindowByScreenId(screenId : string) {
+ mobx.action(() => {
+ for (let winKey of this.windows.keys()) {
+ let win = this.windows.get(winKey);
+ if (win.screenId == screenId) {
+ this.windows.delete(winKey);
+ return;
+ }
+ }
+ })();
}
getScreenById(sessionId : string, screenId : string) : Screen {
- let session = this.getSessionById(sessionId);
- if (session == null) {
- return null;
+ for (let i=0; i handleJsonFetchResponse(url, resp)).then((data) => {
if (data.data == null) {
console.log("null window returned from get-window");
return;
}
- this.updateWindow(data.data, true);
+ let slines : ScreenLinesType = data.data;
+ this.updateScreenLines(slines, true);
return;
}).catch((err) => {
this.errorHandler(sprintf("getting window=%s", newWin.windowId), err, false);
});
}
- loadWindow(sessionId : string, windowId : string) : Window {
- let newWin = new Window(sessionId, windowId);
+ loadWindow(sessionId : string, screenId : string, windowId : string) : Window {
+ let newWin = new Window(sessionId, screenId, windowId);
setTimeout(() => this._loadWindowAsync(newWin), 0);
return newWin;
}
@@ -3139,10 +3037,8 @@ class Model {
}
}
if (winLine != null) {
- let sws = session.getSWs(win.windowId);
- for (let sw of sws) {
- rtn.push({line : winLine, win: win, sw: sw});
- }
+ let screen = this.getScreenById(win.sessionId, win.screenId);
+ rtn.push({line : winLine, win: win, screen: screen});
}
}
return rtn;
@@ -3151,7 +3047,7 @@ class Model {
updatePtyData(ptyMsg : PtyDataUpdateType) : void {
let activeLinePtrs = this.getActiveLinesByCmdId(ptyMsg.sessionid, ptyMsg.cmdid);
for (let lineptr of activeLinePtrs) {
- lineptr.sw.updatePtyData(ptyMsg);
+ lineptr.screen.updatePtyData(ptyMsg);
}
}
@@ -3217,10 +3113,7 @@ class CommandRunner {
lineView(sessionId : string, screenId : string, lineNum : number) {
let screen = GlobalModel.getScreenById(sessionId, screenId);
if (screen != null) {
- let sw = screen.getActiveSW();
- if (sw != null) {
- sw.setAnchorFields(lineNum, 0, "line:view");
- }
+ screen.setAnchorFields(lineNum, 0, "line:view");
}
GlobalModel.submitCommand("line", "view", [sessionId, screenId, String(lineNum)], {"nohist": "1"}, false);
}
@@ -3238,7 +3131,7 @@ class CommandRunner {
}
resizeWindow(windowId : string, rows : number, cols : number) {
- GlobalModel.submitCommand("sw", "resize", null, {"nohist": "1", "window": windowId, "cols": String(cols), "rows": String(rows)}, false);
+ GlobalModel.submitCommand("screen", "resize", null, {"nohist": "1", "window": windowId, "cols": String(cols), "rows": String(rows)}, false);
}
showRemote(remoteid : string) {
@@ -3290,7 +3183,7 @@ class CommandRunner {
GlobalModel.submitCommand("remote", "archive", null, {"remote": remoteid, "nohist": "1"}, true);
}
- swSelectLine(lineArg : string, focusVal? : string) {
+ screenSelectLine(lineArg : string, focusVal? : string) {
let kwargs : Record = {
"nohist": "1",
"line": lineArg,
@@ -3298,7 +3191,7 @@ class CommandRunner {
if (focusVal != null) {
kwargs["focus"] = focusVal;
}
- GlobalModel.submitCommand("sw", "set", null, kwargs, true);
+ GlobalModel.submitCommand("screen", "set", null, kwargs, false);
}
setTermUsedRows(termContext : RendererContext, height : number) {
@@ -3311,7 +3204,7 @@ class CommandRunner {
GlobalModel.submitCommand("line", "setheight", posargs, kwargs, false);
}
- swSetAnchor(sessionId : string, screenId : string, windowId : string, anchorVal : string) : void {
+ screenSetAnchor(sessionId : string, screenId : string, windowId : string, anchorVal : string) : void {
let kwargs = {
"nohist": "1",
"anchor": anchorVal,
@@ -3319,11 +3212,11 @@ class CommandRunner {
"screen": screenId,
"window": windowId,
};
- GlobalModel.submitCommand("sw", "set", null, kwargs, true);
+ GlobalModel.submitCommand("screen", "set", null, kwargs, false);
}
- swSetFocus(focusVal : string) : void {
- GlobalModel.submitCommand("sw", "set", null, {"focus": focusVal, "nohist": "1"}, true);
+ screenSetFocus(focusVal : string) : void {
+ GlobalModel.submitCommand("screen", "set", null, {"focus": focusVal, "nohist": "1"}, false);
}
lineStar(lineId : string, starVal : number) {
@@ -3439,7 +3332,7 @@ if ((window as any).GlobalModel == null) {
GlobalModel = (window as any).GlobalModel;
GlobalCommandRunner = (window as any).GlobalCommandRunner;
-export {Model, Session, Window, GlobalModel, GlobalCommandRunner, Cmd, Screen, ScreenWindow, riToRPtr, windowWidthToCols, windowHeightToRows, termWidthFromCols, termHeightFromRows, getPtyData, getRemotePtyData};
+export {Model, Session, Window, GlobalModel, GlobalCommandRunner, Cmd, Screen, riToRPtr, windowWidthToCols, windowHeightToRows, termWidthFromCols, termHeightFromRows, getPtyData, getRemotePtyData};
export type {LineContainerModel};
diff --git a/src/types.ts b/src/types.ts
index dc4c8da9b..21d2e8f52 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,6 +1,7 @@
import * as mobx from "mobx";
type ShareModeType = "local" | "private" | "view" | "shared";
+type FocusTypeStrs = "input"|"cmd"|"cmd-fg";
type SessionDataType = {
sessionid : string,
@@ -10,7 +11,6 @@ type SessionDataType = {
sessionidx : number,
sharemode : ShareModeType,
archived? : boolean,
- screens : ScreenDataType[],
remotes : RemoteInstanceType[],
// for updates
@@ -42,47 +42,25 @@ type LineType = {
type ScreenOptsType = {
tabcolor? : string,
+ pterm? : string,
}
type ScreenDataType = {
sessionid : string,
screenid : string,
+ windowid : string,
screenidx : number,
- activewindowid : string,
name : string,
archived? : boolean,
- windows : ScreenWindowType[],
screenopts : ScreenOptsType,
-
- // for updates
- remove? : boolean,
- full? : boolean,
-};
-
-type LayoutType = {
- type : string,
- parent? : string,
- zindex? : number,
- float? : boolean,
- top? : string,
- bottom? : string,
- left? : string,
- right? : string,
- width? : string,
- height? : string,
-};
-
-type ScreenWindowType = {
- sessionid : string,
- screenid : string,
- windowid : string,
- name : string,
- layout : LayoutType,
+ curremote : RemotePtrType,
+ nextlinenum : number,
selectedline : number,
- focustype : "input"|"cmd"|"cmd-fg",
+ focustype : FocusTypeStrs,
anchor : {anchorline : number, anchoroffset : number},
// for updates
+ full? : boolean,
remove? : boolean,
};
@@ -142,18 +120,6 @@ type RemotePtrType = {
name? : string,
};
-type WindowDataType = {
- sessionid : string,
- windowid : string,
- curremote : RemotePtrType,
- nextlinenum : number,
- lines : LineType[],
- cmds : CmdDataType[],
-
- // for updates
- remove? : boolean,
-};
-
type HistoryItem = {
historyid : string,
ts : number,
@@ -273,12 +239,20 @@ type PtyDataUpdateType = {
ptydatalen : number,
};
+type ScreenLinesType = {
+ sessionid : string,
+ screenid : string,
+ windowid : string,
+ lines : LineType[],
+ cmds : CmdDataType[],
+};
+
type ModelUpdateType = {
interactive : boolean,
sessions? : SessionDataType[],
activesessionid? : string,
- windows? : WindowDataType[],
- screenwindows? : ScreenWindowType[],
+ screens? : ScreenDataType[],
+ screenlines? : ScreenLinesType,
line? : LineType,
lines? : LineType[],
cmd? : CmdDataType,
@@ -445,4 +419,4 @@ type HistorySearchParams = {
type RenderModeType = "normal" | "collapsed";
-export type {SessionDataType, LineType, RemoteType, RemoteStateType, RemoteInstanceType, WindowDataType, HistoryItem, CmdRemoteStateType, FeCmdPacketType, TermOptsType, CmdStartPacketType, CmdDataType, ScreenDataType, ScreenOptsType, ScreenWindowType, LayoutType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, RemotePtrType, UIContextType, HistoryInfoType, HistoryQueryOpts, WatchScreenPacketType, TermWinSize, FeInputPacketType, RemoteInputPacketType, RemoteEditType, FeStateType, ContextMenuOpts, RendererContext, WindowSize, RendererModel, PtyDataType, BookmarkType, ClientDataType, PlaybookType, PlaybookEntryType, HistoryViewDataType, RenderModeType, AlertMessageType, HistorySearchParams};
+export type {SessionDataType, LineType, RemoteType, RemoteStateType, RemoteInstanceType, HistoryItem, CmdRemoteStateType, FeCmdPacketType, TermOptsType, CmdStartPacketType, CmdDataType, ScreenDataType, ScreenOptsType, PtyDataUpdateType, ModelUpdateType, UpdateMessage, InfoType, CmdLineUpdateType, RemotePtrType, UIContextType, HistoryInfoType, HistoryQueryOpts, WatchScreenPacketType, TermWinSize, FeInputPacketType, RemoteInputPacketType, RemoteEditType, FeStateType, ContextMenuOpts, RendererContext, WindowSize, RendererModel, PtyDataType, BookmarkType, ClientDataType, PlaybookType, PlaybookEntryType, HistoryViewDataType, RenderModeType, AlertMessageType, HistorySearchParams, ScreenLinesType, FocusTypeStrs};