Files
Jungfraujoch/viewer/jfjoch_viewer.cpp
Filip Leonarski 224cc8b89c
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 7m46s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 8m45s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 6m56s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 5m58s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 6m59s
Build Packages / build:rpm (rocky8) (push) Successful in 7m33s
Build Packages / Generate python client (push) Successful in 19s
Build Packages / Build documentation (push) Successful in 41s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky9) (push) Successful in 8m45s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 7m51s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 7m12s
Build Packages / Unit tests (push) Successful in 1h8m51s
v1.0.0-rc.110 (#16)
This is an UNSTABLE release.

* jfjoch_broker: Add auto-contrast option for preview images
* Frontend: Add logo image
* jfjoch_viewer: Add logo image
* jfjoch_viewer: For image chart allow to set min value to zero
* jfjoch_viewer: For resolution estimation plots, visualization uses 1/d^2 as measure
* jfjoch_viewer: Add 3D unit cell visualization (experimental/WIP/not really there)
* Documentation: Add logo image

Reviewed-on: #16
Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
Co-committed-by: Filip Leonarski <filip.leonarski@psi.ch>
2025-11-28 12:47:35 +01:00

84 lines
2.8 KiB
C++

#include <QApplication>
#include <QCommandLineParser>
#include <QCommandLineOption>
#include <QSplashScreen>
#include <QTimer>
#include "JFJochViewerWindow.h"
#include "../writer/HDF5Objects.h"
#include "../common/GitInfo.h"
int main(int argc, char *argv[]) {
qRegisterMetaType<std::shared_ptr<const JFJochReaderDataset>>("std::shared_ptr<const JFJochReaderDataset>");
qRegisterMetaType<std::shared_ptr<const JFJochReaderImage>>("std::shared_ptr<const JFJochReaderImage>");
RegisterHDF5Filter();
QApplication app(argc, argv);
QIcon appIcon(":/jfjoch.png");
app.setWindowIcon(appIcon);
app.setApplicationName("JFJoch Viewer");
app.setApplicationVersion(QString::fromStdString(jfjoch_version()));
// Parse command line arguments
QCommandLineParser parser;
parser.setApplicationDescription("JFJoch Image Viewer");
parser.addHelpOption();
parser.addVersionOption();
// Add --dbus option with a value option that defaults to true
QCommandLineOption dbusOption(QStringList() << "d" << "dbus",
"Enable or disable D-Bus interface (default: enabled)",
"enable", "true");
parser.addOption(dbusOption);
// Process the actual command line arguments
parser.process(app);
// Get any positional arguments (files to open)
QString fileToOpen;
QStringList positionalArgs = parser.positionalArguments();
if (!positionalArgs.isEmpty()) {
// Use the last argument as the file to open
fileToOpen = positionalArgs.last();
}
// Check if D-Bus should be enabled or disabled
bool enableDBus = true; // Default is enabled
QString dbusValue = parser.value(dbusOption).toLower();
if (dbusValue == "false" || dbusValue == "0" || dbusValue == "no" || dbusValue == "off") {
enableDBus = false;
qDebug() << "D-Bus interface disabled";
} else {
qDebug() << "D-Bus interface enabled";
}
// Create and show the main window with the appropriate settings
JFJochViewerWindow mainWindow(nullptr, enableDBus, fileToOpen);
mainWindow.show();
QPixmap pixmap(":/jfjoch.png");
QPixmap splash_pixmap(256+2*50, 256+50+50+30);
splash_pixmap.fill(Qt::white);
QPainter painter(&splash_pixmap);
painter.drawPixmap(50, 50, pixmap);
QSplashScreen *splash = new QSplashScreen(splash_pixmap);
splash->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::SplashScreen);
QString version(QString::fromStdString(jfjoch_version()));
splash->showMessage(
"Jungfrujoch Image viewer\n Version " + version + "\nPaul Scherrer Institut",
Qt::AlignBottom | Qt::AlignHCenter,
Qt::black
);
splash->show();
QTimer::singleShot(8000, splash, &QSplashScreen::close);
return QApplication::exec();
}