nodeguy/src/lib/core/FlexLayout/index.ts
2019-09-02 23:33:56 +02:00

48 lines
1.5 KiB
TypeScript

import addon from "../addon";
import { NodeWidget } from "../../QtWidgets/QWidget";
import { NodeLayout } from "../../QtWidgets/QLayout";
import { FlexNode } from "../YogaWidget";
import { NativeElement } from "../Component";
export class FlexLayout extends NodeLayout {
native: NativeElement = new addon.FlexLayout();
protected flexNode?: FlexNode;
addWidget = (childWidget: NodeWidget, childFlexNode?: FlexNode) => {
const childYogaNode = childFlexNode || childWidget.getFlexNode();
this.children.add(childWidget);
this.native.addWidget(childWidget.native, childYogaNode);
};
insertChildBefore = (
childWidget: NodeWidget,
beforeChildWidget: NodeWidget,
childFlexNode?: FlexNode,
beforeChildFlexNode?: FlexNode
) => {
const childYogaNode = childFlexNode || childWidget.getFlexNode();
const beforeChildYogaNode =
beforeChildFlexNode || beforeChildWidget.getFlexNode();
this.children.add(childWidget); // No orderer required yet, so just inserting at the end.
this.native.insertChildBefore(
childWidget.native,
beforeChildYogaNode,
childYogaNode
);
};
removeWidget = (childWidget: NodeWidget, childFlexNode?: FlexNode) => {
if (!this.children.has(childWidget)) {
return;
}
const childYogaNode = childFlexNode || childWidget.getFlexNode();
this.children.delete(childWidget);
this.native.removeWidget(childWidget.native, childYogaNode);
};
setFlexNode = (flexNode: FlexNode) => {
this.flexNode = flexNode;
this.native.setFlexNode(flexNode);
};
}