Acknowledge all bundled third-party software and satisfy attribution/notice requirements, while keeping it maintainable: - THIRD_PARTY_NOTICES.md: human-readable manifest (component, copyright, SPDX license, link) for fetched, vendored, and runtime/SDK dependencies. - licenses/: verbatim license texts; COLLECT.sh regenerates them from the build trees and system SDK locations. - Bundle the verbatim Qt LGPL-3.0 text and the CUDA Toolkit 12.8 EULA. - frontend: self-contained npm attribution generator (`npm run licenses` -> dist/THIRD_PARTY_LICENSES.txt), wired into the frontend build target. - Install LICENSE + notices + licenses/ into share/doc/jfjoch for every packaged component. - viewer: Help > "Third-party Licenses" window (QTextBrowser) showing a generated, self-contained HTML built from licenses/. - docs/SOFTWARE.md: drop the stale hand-kept dependency lists; point at the manifest. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
53 lines
1.5 KiB
C++
53 lines
1.5 KiB
C++
// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
#pragma once
|
|
|
|
#include <QMenuBar>
|
|
|
|
#include "windows/JFJochHelperWindow.h"
|
|
|
|
class JFJochLicenseWindow;
|
|
|
|
class JFJochViewerMenu : public QMenuBar {
|
|
Q_OBJECT
|
|
QAction *toggleImageWindowAction = nullptr;
|
|
QAction *toggleMetadataWindowAction = nullptr;
|
|
QAction *toggleSpotWindowAction = nullptr;
|
|
QAction *toggleReflectionWindowAction = nullptr;
|
|
QAction *toggleProcessingWindowAction = nullptr;
|
|
QAction *toggleCalibrationWindowAction = nullptr;
|
|
|
|
QMenu *windowMenu = nullptr;
|
|
JFJochLicenseWindow *licenseWindow = nullptr;
|
|
public:
|
|
explicit JFJochViewerMenu(QWidget *parent = nullptr);
|
|
~JFJochViewerMenu() override = default;
|
|
|
|
void AddWindowEntry(JFJochHelperWindow *window, const QString &name);
|
|
|
|
signals:
|
|
void fileOpenSelected(const QString &filename, qint64 image_number, qint64 summation, bool retry);
|
|
void fileCloseSelected();
|
|
|
|
void saveUserMaskTiffSelected(const QString &filename);
|
|
void loadUserMaskTiffSelected(const QString &filename, bool replace);
|
|
void uploadUserMaskSelected();
|
|
void clearUserMaskSelected();
|
|
void openDatasetInfo();
|
|
|
|
private slots:
|
|
void aboutSelected();
|
|
void licensesSelected();
|
|
void quitSelected();
|
|
void openSelected();
|
|
void openHttpSelected();
|
|
void closeSelected();
|
|
|
|
void saveUserMaskAsTiffSelected();
|
|
void uploadUserMaskAction();
|
|
|
|
private:
|
|
void openLoadUserMaskTiff(bool replace);
|
|
};
|