Windows/aboutWindow.js

/**
 *      _  _ 
 *     | \| |
 *     | .` |
 *     |_|\_|eptune
 *
 *     Capstone Project 2022
 * 
 *     About Window
 */

/**
 * NodeGUI
 */
const NodeGUI = require("@nodegui/nodegui");
const NeptuneWindow = require("./NeptuneWindow");


class aboutWindow extends NeptuneWindow {

    /**
     * Close window button
     * @type {NodeGUI.QPushButton}
     */
    btnClose;

	constructor(arg) {
		super(arg);

        try {
            this.setWindowTitle('Neptune | About');
            this.setFixedSize(450, 250);
            this.setWindowFlag(NodeGUI.WindowType.Dialog | NodeGUI.WindowType.MSWindowsFixedSizeDialogHint, true);

            let centralwidget = new NodeGUI.QWidget(this);
            centralwidget.setObjectName("centralwidget");
            let verticalLayout = new NodeGUI.QBoxLayout(NodeGUI.Direction.TopToBottom, centralwidget);
            verticalLayout.setObjectName("verticalLayout");
            let lblTitle = new NodeGUI.QLabel(centralwidget);
            lblTitle.setObjectName("lblTitle");
            let font = new NodeGUI.QFont();
            font.setPointSize(14);
            font.setBold(true);
            font.setWeight(75);
            lblTitle.setFont(font);
            lblTitle.setAlignment(NodeGUI.AlignmentFlag.AlignCenter);
            lblTitle.setText("Neptune");

            verticalLayout.addWidget(lblTitle);

            let lblVersion = new NodeGUI.QLabel(centralwidget);
            lblVersion.setObjectName("lblVersion");
            lblVersion.setAlignment(NodeGUI.AlignmentFlag.AlignCenter);
            lblVersion.setText("Version " + global.Neptune.version.toString());

            verticalLayout.addWidget(lblVersion);

            let hlayGitButton = new NodeGUI.QBoxLayout(NodeGUI.Direction.LeftToRight);
            hlayGitButton.setObjectName("hlayGitButton");
            let btnViewOnGit = new NodeGUI.QPushButton(centralwidget);
            btnViewOnGit.setObjectName("btnViewOnGit");
            btnViewOnGit.setMinimumSize(100, 0);
            btnViewOnGit.setMaximumSize(100, 16777215);
            btnViewOnGit.setFlat(true);
            btnViewOnGit.setText("View on GitHub");
            btnViewOnGit.addEventListener('clicked', (checked) => {
                // Open in browser
                var start = (process.platform == 'darwin'? 'open': process.platform == 'win32'? 'start': 'xdg-open');
                require('node:child_process').exec(start + ' https://github.com/SCCapstone/Neptune');
            });
            btnViewOnGit.setCursor(NodeGUI.CursorShape.PointingHandCursor);

            hlayGitButton.addWidget(btnViewOnGit);


            verticalLayout.addLayout(hlayGitButton);

            let lblProjectBy = new NodeGUI.QLabel(centralwidget);
            lblProjectBy.setObjectName("lblProjectBy");
            lblProjectBy.setAlignment(NodeGUI.AlignmentFlag.AlignBottom | NodeGUI.AlignmentFlag.AlignHCenter);
            lblProjectBy.setText("U(of)SC Capstone Project by:");

            verticalLayout.addWidget(lblProjectBy);

            let lblNames = new NodeGUI.QLabel(centralwidget);
            lblNames.setObjectName("lblNames");
            lblNames.setMinimumSize(0, 75);
            lblNames.setAlignment(NodeGUI.AlignmentFlag.AlignHCenter | NodeGUI.AlignmentFlag.AlignTop);
            lblNames.setText("Matthew Sprinkle\nWill Amos\nRidge Johnson\nCody Newberry");

            verticalLayout.addWidget(lblNames);

            let hlayCloseButton = new NodeGUI.QBoxLayout(NodeGUI.Direction.LeftToRight);
            hlayCloseButton.setObjectName("hlayCloseButton");
            let btnClose = new NodeGUI.QPushButton(centralwidget);
            btnClose.setObjectName("btnClose");
            btnClose.setMinimumSize(150, 0);
            btnClose.setMaximumSize(150, 16777215);
            btnClose.setAutoDefault(true);
            btnClose.setText("Close");
            btnClose.addEventListener('clicked', (checked) => this.close());
            btnClose.setCursor(NodeGUI.CursorShape.PointingHandCursor);


            hlayCloseButton.addWidget(btnClose);
            verticalLayout.addLayout(hlayCloseButton);
            this.setCentralWidget(centralwidget);


            btnViewOnGit.setDefault(false);
            btnClose.setDefault(true);
        } catch (e) {
            console.log(e);
            this.close();
        }
	}
}

module.exports = aboutWindow;