48 lines
1.5 KiB
TypeScript
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);
|
|
};
|
|
}
|