Files
Jungfraujoch/viewer/jfjoch_viewer.cpp
leonarski_f 75e401f0e5
Build Packages / Unit tests (push) Successful in 1h31m59s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 8m43s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m5s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 9m27s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m56s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m24s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m27s
Build Packages / build:rpm (rocky8) (push) Successful in 9m20s
Build Packages / build:rpm (rocky9) (push) Successful in 10m50s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m54s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m38s
Build Packages / DIALS test (push) Successful in 12m13s
Build Packages / XDS test (durin plugin) (push) Successful in 7m8s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m8s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m50s
Build Packages / Generate python client (push) Successful in 16s
Build Packages / Build documentation (push) Successful in 50s
Build Packages / Create release (push) Skipped
v1.0.0-rc.153 (#63)
This is an UNSTABLE release. It includes many experimental features, as well as many AI generated fixes. We recommend using rc.152 for production use.

* jfjoch_broker: Add EXPERIMENTAL pixelrefine mode for image processing
* jfjoch_broker: Allow to load user mask from 8-bit and 16-bit TIFF files
* jfjoch_broker: Add ROI calculation in non-FPGA workflow
* jfjoch_broker: Fixes to TCP image pusher
* jfjoch_broker: Remove NUMA bindings
* jfjoch_broker: Improvements to indexing
* jfjoch_broker: For PSI EIGER, trimming energies are taken from the detector configuration (now compulsory) instead of hardcoded values
* jfjoch_writer: Save ROI definitions and the per-pixel ROI bitmap in the master file; azimuthal ROIs support phi (angular) sectors
* jfjoch_viewer: Major redesign with dockable panels and saved layouts, plus on-canvas creation/move/resize of box, circle and azimuthal ROIs
* jfjoch_viewer: Run jfjoch_process reprocessing jobs from inside the GUI and overlay per-run results

Reviewed-on: #63
2026-06-23 20:29:49 +02:00

101 lines
3.8 KiB
C++

#include <QApplication>
#include <QCommandLineParser>
#include <QCommandLineOption>
#include <QSplashScreen>
#include <QTimer>
#include <QPalette>
#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);
// Theme via the palette (robust across widgets): salmon panels, white entry fields that fall back
// to salmon when disabled, and a navy accent for selections and progress-bar chunks.
app.setStyle("Fusion");
QPalette pal = app.palette();
pal.setColor(QPalette::Window, QColor(255, 235, 230));
pal.setColor(QPalette::Base, Qt::white);
pal.setColor(QPalette::AlternateBase, QColor(255, 245, 242));
pal.setColor(QPalette::Button, QColor(255, 235, 230));
pal.setColor(QPalette::Disabled, QPalette::Base, QColor(255, 235, 230));
pal.setColor(QPalette::Highlight, QColor(0x1f, 0x3a, 0x5f));
pal.setColor(QPalette::HighlightedText, Qt::white);
app.setPalette(pal);
// Fusion fills QGroupBox interiors with a flat light colour; make them transparent so they show
// the salmon window background like the rest of the UI (entry widgets stay white via the palette).
app.setStyleSheet("QGroupBox { background-color: transparent; }");
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(
"<b>Jungfrujoch image viewer</b><br/> Version " + version + "<br/>Paul Scherrer Institut",
Qt::AlignBottom | Qt::AlignHCenter,
Qt::black
);
splash->show();
QTimer::singleShot(5000, splash, &QSplashScreen::close);
return QApplication::exec();
}