Adds basic calculator UI
This commit is contained in:
parent
3b4ec63771
commit
86fa07bb05
23
demo.ts
23
demo.ts
@ -66,8 +66,13 @@ const testGridLayout = () => {
|
||||
|
||||
const testFlexLayout = () => {
|
||||
const win = new QMainWindow();
|
||||
const rootView = new QWidget();
|
||||
const rootLayout = new FlexLayout();
|
||||
rootLayout.setFlexNode(rootView.getFlexNode());
|
||||
rootView.setLayout(rootLayout);
|
||||
win.setCentralWidget(rootView);
|
||||
|
||||
const view = new QWidget();
|
||||
win.setCentralWidget(view);
|
||||
view.setStyleSheet(
|
||||
`
|
||||
background-color: green;
|
||||
@ -94,14 +99,26 @@ const testFlexLayout = () => {
|
||||
color:white;
|
||||
qproperty-alignSelf: 'stretch';
|
||||
`);
|
||||
view.setLayout(flayout);
|
||||
|
||||
flayout.addWidget(label2, label2.getFlexNode());
|
||||
flayout.addWidget(label, label.getFlexNode());
|
||||
view.setLayout(flayout);
|
||||
|
||||
const view2 = new QWidget();
|
||||
const flayout2 = new FlexLayout();
|
||||
flayout2.setFlexNode(view2.getFlexNode());
|
||||
view2.setLayout(flayout2);
|
||||
|
||||
const button = new QPushButton();
|
||||
button.setText("Hululu");
|
||||
flayout2.addWidget(button, button.getFlexNode());
|
||||
|
||||
rootLayout.addWidget(view, view.getFlexNode());
|
||||
rootLayout.addWidget(view2, view2.getFlexNode());
|
||||
|
||||
win.show();
|
||||
return win;
|
||||
};
|
||||
|
||||
(global as any).win1 = testGridLayout(); //to keep gc from collecting
|
||||
// (global as any).win1 = testGridLayout(); //to keep gc from collecting
|
||||
(global as any).win2 = testFlexLayout(); //to keep gc from collecting
|
||||
|
||||
@ -22,15 +22,35 @@ const getButton = (
|
||||
|
||||
// Main Window
|
||||
const win = new QMainWindow();
|
||||
win.resize(400, 600);
|
||||
|
||||
// Root view
|
||||
const rootView = new QWidget();
|
||||
win.setCentralWidget(rootView);
|
||||
rootView.setStyleSheet(
|
||||
`
|
||||
qproperty-flex: 1;
|
||||
qproperty-flexDirection: column;
|
||||
`
|
||||
);
|
||||
const rootViewFlexLayout = new FlexLayout();
|
||||
rootViewFlexLayout.setFlexNode(rootView.getFlexNode());
|
||||
rootView.setLayout(rootViewFlexLayout);
|
||||
|
||||
// Top Row
|
||||
const btnClear = getButton("AC", "AC", "command");
|
||||
btnClear.ui.setStyleSheet(`
|
||||
qproperty-flex: 0.3;
|
||||
`);
|
||||
const resultText = new QLabel();
|
||||
resultText.setText(0);
|
||||
resultText.setStyleSheet(`
|
||||
qproperty-flex: 0.7;
|
||||
qproperty-alignment: AlignCenter;
|
||||
`);
|
||||
const row0 = new QWidget();
|
||||
row0.setStyleSheet(`
|
||||
qproperty-flex: 1;
|
||||
qproperty-flexDirection: row;
|
||||
`);
|
||||
const row0Layout = new FlexLayout();
|
||||
row0Layout.setFlexNode(row0.getFlexNode());
|
||||
@ -44,6 +64,10 @@ const btn8 = getButton("8", 8, "value");
|
||||
const btn9 = getButton("9", 9, "value");
|
||||
const btnDivide = getButton("/", "/", "command");
|
||||
const row1 = new QWidget();
|
||||
row1.setStyleSheet(`
|
||||
qproperty-flex: 1;
|
||||
qproperty-flexDirection: row;
|
||||
`);
|
||||
const row1Layout = new FlexLayout();
|
||||
row1Layout.setFlexNode(row1.getFlexNode());
|
||||
row1Layout.addWidget(btn7.ui, btn7.ui.getFlexNode());
|
||||
@ -58,6 +82,10 @@ const btn5 = getButton("5", 5, "value");
|
||||
const btn6 = getButton("6", 6, "value");
|
||||
const btnMultiply = getButton("x", "*", "command");
|
||||
const row2 = new QWidget();
|
||||
row2.setStyleSheet(`
|
||||
qproperty-flex: 1;
|
||||
qproperty-flexDirection: row;
|
||||
`);
|
||||
const row2Layout = new FlexLayout();
|
||||
row2Layout.setFlexNode(row2.getFlexNode());
|
||||
row2Layout.addWidget(btn4.ui, btn4.ui.getFlexNode());
|
||||
@ -72,6 +100,10 @@ const btn2 = getButton("2", 2, "value");
|
||||
const btn3 = getButton("3", 3, "value");
|
||||
const btnMinus = getButton("-", "-", "command");
|
||||
const row3 = new QWidget();
|
||||
row3.setStyleSheet(`
|
||||
qproperty-flex: 1;
|
||||
qproperty-flexDirection: row;
|
||||
`);
|
||||
const row3Layout = new FlexLayout();
|
||||
row3Layout.setFlexNode(row3.getFlexNode());
|
||||
row3Layout.addWidget(btn1.ui, btn1.ui.getFlexNode());
|
||||
@ -86,6 +118,10 @@ const btnDot = getButton(".", ".", "command");
|
||||
const btnEquals = getButton("=", "=", "command");
|
||||
const btnPlus = getButton("+", "+", "command");
|
||||
const row4 = new QWidget();
|
||||
row4.setStyleSheet(`
|
||||
qproperty-flex: 1;
|
||||
qproperty-flexDirection: row;
|
||||
`);
|
||||
const row4Layout = new FlexLayout();
|
||||
row4Layout.setFlexNode(row4.getFlexNode());
|
||||
row4Layout.addWidget(btn0.ui, btn0.ui.getFlexNode());
|
||||
@ -94,23 +130,16 @@ row4Layout.addWidget(btnEquals.ui, btnEquals.ui.getFlexNode());
|
||||
row4Layout.addWidget(btnPlus.ui, btnPlus.ui.getFlexNode());
|
||||
row4.setLayout(row4Layout);
|
||||
|
||||
// Root view
|
||||
const rootView = new QWidget();
|
||||
win.setCentralWidget(rootView);
|
||||
rootView.setStyleSheet(
|
||||
`
|
||||
qproperty-flex: 1;
|
||||
`
|
||||
);
|
||||
const rootViewFlexLayout = new FlexLayout();
|
||||
rootViewFlexLayout.setFlexNode(rootView.getFlexNode());
|
||||
// Add to root view
|
||||
rootViewFlexLayout.addWidget(row0, row0.getFlexNode());
|
||||
rootViewFlexLayout.addWidget(row1, row1.getFlexNode());
|
||||
rootViewFlexLayout.addWidget(row2, row2.getFlexNode());
|
||||
rootViewFlexLayout.addWidget(row3, row3.getFlexNode());
|
||||
rootViewFlexLayout.addWidget(row4, row4.getFlexNode());
|
||||
rootView.setLayout(rootViewFlexLayout);
|
||||
|
||||
win.show();
|
||||
|
||||
setTimeout(() => {
|
||||
win.resize(400, 600); // This is a hack to solve layout issues on initial render. Will need to fix this.
|
||||
}, 10);
|
||||
globals.win = win; //to keep gc from collecting ui widgets
|
||||
|
||||
Loading…
Reference in New Issue
Block a user