Install SeisComP and scanloc ARM64 nightly packages

This commit is contained in:
Enrico Ellguth
2025-10-29 12:34:04 +00:00
parent 2ff097f9d1
commit 165b829fb7
606 changed files with 24438 additions and 16358 deletions

View File

@ -87,6 +87,7 @@ namespace Gui {
class ConnectionDialog;
class ProcessManager;
struct MessageGroups {
@ -200,6 +201,7 @@ class SC_GUI_API Application : public QObject, public Client::Application {
//! Sets the mainwidget which is used as hint to close the
//! splashscreen when the widget is shown
void setMainWidget(QWidget*);
QWidget *mainWidget();
void showMessage(const char*) override;
void showWarning(const char*) override;
@ -219,6 +221,8 @@ class SC_GUI_API Application : public QObject, public Client::Application {
QPalette palette() const;
void setPalette(const QPalette &pal);
ProcessManager *processManager();
protected:
bool init() override;
@ -259,6 +263,8 @@ class SC_GUI_API Application : public QObject, public Client::Application {
void removeObject(const QString &parentID, Seiscomp::DataModel::Object*);
void updateObject(const QString &parentID, Seiscomp::DataModel::Object*);
void processManagerCreated();
public slots:
void showSettings();
@ -304,6 +310,7 @@ class SC_GUI_API Application : public QObject, public Client::Application {
struct _GUI_Core_Settings : System::Application::AbstractSettings {
bool fullScreen{false};
bool interactive{true};
std::string styleSheet;
std::string guiGroup{"GUI"};
std::string commandTargetClient;
@ -340,6 +347,8 @@ class SC_GUI_API Application : public QObject, public Client::Application {
QSocketNotifier *_signalNotifier;
int _signalSocketFd[2];
ProcessManager *_processManager{nullptr};
};
@ -367,10 +376,12 @@ class Kicker : public Application {
setupUi(w);
setMainWidget(w);
if ( startFullScreen() )
if ( startFullScreen() ) {
w->showFullScreen();
else
}
else {
w->showNormal();
}
return Application::run();
}

View File

@ -29,8 +29,7 @@
#include <QPixmap>
namespace Seiscomp {
namespace Gui {
namespace Seiscomp::Gui {
class SC_GUI_API ConnectionStateLabel : public QLabel {
@ -41,26 +40,23 @@ class SC_GUI_API ConnectionStateLabel : public QLabel {
void setPixmaps(const QPixmap &connected, const QPixmap &disconnected);
public slots:
void start(const QString &source);
void stop();
signals:
void customInfoWidgetRequested(const QPoint &pos);
protected:
void mouseReleaseEvent(QMouseEvent *event) override;
protected:
void mousePressEvent(QMouseEvent *event);
QPixmap _connected;
QPixmap _disconnected;
bool _isConnected{false};
};
}
}

View File

@ -0,0 +1,106 @@
/***************************************************************************
* Copyright (C) gempa GmbH *
* All rights reserved. *
* Contact: gempa GmbH (seiscomp-dev@gempa.de) *
* *
* GNU Affero General Public License Usage *
* This file may be used under the terms of the GNU Affero *
* Public License version 3.0 as published by the Free Software Foundation *
* and appearing in the file LICENSE included in the packaging of this *
* file. Please review the following information to ensure the GNU Affero *
* Public License version 3.0 requirements will be met: *
* https://www.gnu.org/licenses/agpl-3.0.html. *
* *
* Other Usage *
* Alternatively, this file may be used in accordance with the terms and *
* conditions contained in a signed written agreement between you and *
* gempa GmbH. *
***************************************************************************/
#ifndef SEISCOMP_GUI_CORE_ICON_H
#define SEISCOMP_GUI_CORE_ICON_H
#include <QIcon>
#include <QPixmap>
namespace Seiscomp::Gui {
/**
* @brief Returns an icon by name.
*
* Icons will be looked up as SVG resources with path :/sc/icons/{name}.svg.
*
* The returned icon gets a dedicated QIconEngine which will render the icon
* in a given colour or using the application palette for the different states.
*
* Rendering the icon in a given colour involves blending a coloured quad with
* blending mode SourceAtop on the rendered icon. This will effectively render
* the icon single coloured. As Qt does not support currentColor with SVG yet,
* there is no other option. Multi-coloured icon are a special case anyway and
* not easy to fit with all possible application palettes, e.g. dark mode.
*
* @param name The name of the icon which is effectively the basename of the SVG file.
* @return The icon possibly invalid if an invalid name was given.
*/
QIcon icon(QString name);
/**
* @brief Convenience function which takes a primarly color.
* @param name The name of the icon which is effectively the basename of the SVG file.
* @param cOnOff The primary color of the icon. This will ignore the application palette.
* @return The icon possibly invalid if an invalid name was given.
*/
QIcon icon(QString name, const QColor &cOnOff);
/**
* @brief Convenience function which takes an on and an off color.
* @param name The name of the icon which is effectively the basename of the SVG file.
* @param cOn The color of the icon for state = On.
* @param cOff The color of the icon for state = Off.
* @return The icon possibly invalid if an invalid name was given.
*/
QIcon icon(QString name, const QColor &cOn, const QColor &cOff);
/**
* @brief Returns an icon pixmap by name.
*
* Renders an icon in the requested size and optional color.
*
* @param name The name of the icon which is effectively the basename of the SVG file.
* @param size The requested size
* @param dpr The device pixel ratio
* @param color An optional color.
* @param scaledColor An optional color towards which all pixmap colors will be blended.
* @return The pixmap possibly invalid if an invalid name was given.
*/
QPixmap pixmap(const QString &name, const QSize &size, double dpr, const QColor &c = QColor(), const QColor &scaledColor = QColor());
/**
* @brief Convenience function which takes a primarly color.
* @param fm The fontMetrics used to calculate the icon size.
* @param name The name of the icon which is effectively the basename of the SVG file.
* @param color The primary color of the icon. This will ignore the application palette.
* @param dpr The device pixel ratio
* @return The pixmap possibly invalid if an invalid name was given.
*/
QPixmap pixmap(const QFontMetrics &fm, const QString &name, const QColor &color, double dpr);
/**
* @brief Convenience function which takes a primarly color.
* @param parent The parent widget to extract the pixmap for.
* @param name The name of the icon which is effectively the basename of the SVG file.
* @param color The primary color of the icon. This will ignore the application palette.
* @param scale The size scaling factor.
* @return The pixmap possibly invalid if an invalid name was given.
*/
QPixmap pixmap(const QWidget *parent, const QString &name, const QColor &color = QColor(), double scale = 1.0);
}
#endif

View File

@ -70,17 +70,20 @@ DEFINE_SMARTPOINTER(Object);
namespace Gui {
class ProcessManager;
class ProcessStateLabel;
class SC_GUI_API MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget * parent = 0, Qt::WindowFlags = Qt::WindowFlags());
MainWindow(QWidget *parent = 0, Qt::WindowFlags = Qt::WindowFlags());
~MainWindow();
public:
bool restoreGeometry(const QByteArray & geometry);
bool restoreGeometry(const QByteArray &geometry);
protected:
@ -89,10 +92,10 @@ class SC_GUI_API MainWindow : public QMainWindow {
void dropEvent(QDropEvent *);
void dragEnterEvent(QDragEnterEvent *);
virtual void toggledFullScreen(bool);
virtual void toggledFullScreen(bool isFullScreen);
signals:
void fullScreenToggled(bool);
void fullScreenToggled(bool isFullScreen);
public slots:
void showNormal();
@ -112,20 +115,22 @@ class SC_GUI_API MainWindow : public QMainWindow {
void inspectConfig();
void inspectInventory();
void showNotification(NotificationLevel level, QString message);
static void showNotification(const NotificationLevel &level,
const QString &message);
protected:
QAction* _actionToggleFullScreen;
QAction* _actionShowSettings;
QAction *_actionToggleFullScreen{nullptr};
QAction *_actionShowSettings{nullptr};
private:
QMenuBar *_menuBar;
QWidget *_menuWidget;
ConnectionStateLabel *_connectionState;
QMenuBar *_menuBar{nullptr};
QWidget *_menuWidget{nullptr};
ConnectionStateLabel *_connectionState{nullptr};
ProcessStateLabel *_processState{nullptr};
QString _title;
bool _showFullscreen;
bool _showFullscreen{false};
};

View File

@ -45,8 +45,9 @@ namespace Gui {
* with type Tile
* 4 - Add two new methods to notify about asynchronous tile loading
* success and cancellation
* 5 - Add ImageTree::lockCache and ImageTree::unlockCache.
*/
#define TILESTORE_VERSION 4
#define TILESTORE_VERSION 5
struct SC_GUI_API MapsDesc {

View File

@ -0,0 +1,283 @@
/***************************************************************************
* Copyright (C) gempa GmbH *
* All rights reserved. *
* Contact: gempa GmbH (seiscomp-dev@gempa.de) *
* *
* GNU Affero General Public License Usage *
* This file may be used under the terms of the GNU Affero *
* Public License version 3.0 as published by the Free Software Foundation *
* and appearing in the file LICENSE included in the packaging of this *
* file. Please review the following information to ensure the GNU Affero *
* Public License version 3.0 requirements will be met: *
* https://www.gnu.org/licenses/agpl-3.0.html. *
* *
* Other Usage *
* Alternatively, this file may be used in accordance with the terms and *
* conditions contained in a signed written agreement between you and *
* gempa GmbH. *
***************************************************************************/
#ifndef SEISCOMP_GUI_PROCESSMANAGER_H
#define SEISCOMP_GUI_PROCESSMANAGER_H
#include <seiscomp/gui/core/ui_processmanager.h>
#include <seiscomp/core/datetime.h>
#include <seiscomp/gui/core/spinninglabel.h>
#include <seiscomp/gui/qt.h>
#include <QAbstractTableModel>
#include <QIcon>
#include <QLabel>
#include <QMainWindow>
#include <QMap>
#include <QProcess>
#include <QSet>
#include <QSortFilterProxyModel>
#include <QTextEdit>
#include <QVariantAnimation>
#include <QVector>
namespace Seiscomp::Gui {
class ProcessStateLabel;
class SC_GUI_API ProcessManager : public QMainWindow {
Q_OBJECT
// ------------------------------------------------------------------
// X'struction
// ------------------------------------------------------------------
public:
explicit ProcessManager(QWidget *parent = nullptr,
Qt::WindowFlags f = Qt::WindowFlags());
// ------------------------------------------------------------------
// Protected Interface
// ------------------------------------------------------------------
public:
/**
* @brief Creates a process with the given name, description and icon.
* The process is managed by this instance.
* @param name Name of the process
* @param description Description of the process shown as tool tip
* @param icon Icon to be shown next to the name
* @return QProcess instance mananged by this instance
*/
QProcess *createProcess(QString name, QString description={},
QIcon icon={});
/**
* @brief Wait for the process to start. If the start up fails logging
* entries are created, the corresponding item is selected in the
* process table and the process manager is shown if not already active.
* @param process The process to wait to start for
* @param timeout Start timeout in milliseconds
* @return True if the process could be launched
*/
bool waitForStarted(QProcess *process, int timeout = 5000);
/**
* @brief Registers output streams to which the stdout and stderr data
* of the given process are written to in addition to the console tabs
* visible in the process manager.
* @param process The process to register the output streams for
* @param osOut The output stream used for stdout data
* @param osErr The output stream used for stderr data
* @return True if the process is managed by the process manager
*/
bool setOutputStreams(QProcess *process, std::ostream *osOut,
std::ostream *osErr=nullptr);
/**
* @brief Limits the data written to the console tabs visible in the
* process manager.
* @param process The process to implement limits for
* @param charsOut Maximum number of characters shown in the stdout tab.
* Use a negative number to remove any limit. Use 0 to disable any
* output to the stdout tab.
* @param charsErr Maximum number of characters shown in the stderr tab.
* Use a negative number to remove any limit. Use 0 to disable any
* output to the stderr tab.
* @return True if the process is managed by the process manager
*/
bool setConsoleLimits(QProcess *process, int charsOut,
int charsErr = -1);
/**
* @brief Create a log entry for the process.
* @param process The process to log a message for
* @param message The message to add to the process log
*/
void log(QProcess *process, const QString &message);
/**
* @brief Return total number of processes.
* @return Total number of processes
*/
int processCount();
/**
* @brief Return number of running processes.
* @return Number of running
*/
int runningCount();
/**
* @brief Return number of erroneous processes. This includes processes
* that couldn't bestarted, that crashed or exited on error code other
* than 0.
* @return Number of erroneous processes
*/
int erroneousCount();
/**
* @brief Stop execution of the process by sending the SIGSTOP (19)
* signal. The process may be resumed via SIGCONT (18) later on.
* @param process Process to terminate
* @return True if the SIGSTOP signal could be sent
*/
bool stop(QProcess *process);
/**
* @brief Continue execution of the process by sending the SIGCONT (18)
* signal. The process must have been stopped via SIGSTOP (19) before.
* @param process Process to continue
* @return True if the SIGCONT signal could be sent
*/
bool continue_(QProcess *process);
/**
* @brief Terminate the process gracefully by sending the SIGTERM (9)
* signal.
* @param process Process to terminate
* @return True if the SIGTERM signal could be sent
*/
bool terminate(QProcess *process);
/**
* @brief Forcefully kill the process by sending the SIGKILL (15)
* signal.
* @param process Process to kill
* @return True if the SIGKILL signal could be sent
*/
bool kill(QProcess *process);
// friend class ProcessStateLabel;
// ------------------------------------------------------------------
// Signals
// ------------------------------------------------------------------
signals:
// emitted if a process was added/removed or any of the managed
// processes changed state
void stateChanged();
// ------------------------------------------------------------------
// Protected Slots
// ------------------------------------------------------------------
protected slots:
void onDataChanged(const QModelIndex &topLeft,
const QModelIndex &bottomRight,
const QVector<int> &roles = QVector<int>());
void onCurrentChanged(const QModelIndex &current,
const QModelIndex &previous);
void onSelectionChanged(const QItemSelection &selected,
const QItemSelection &deselected);
void onProcessReadyReadStandardOutput();
void onProcessReadyReadStandardError();
void onProcessStateChanged();
void onStopClicked();
void onContinueClicked();
void onTerminateClicked();
void onKillClicked();
void onRemoveClicked();
void onClearClicked();
void onProgressAnimationChanged(const QVariant &value);
void onTableContextMenuRequested(const QPoint &pos);
// ------------------------------------------------------------------
// Protected Interface
// ------------------------------------------------------------------
protected:
// forward declaration
struct Item;
class Model;
void init();
void updateControls();
void updateItemState(Item *item);
static void addConsoleOutput(QTextEdit *textEdit, const QString &text,
int maxChars = -1);
static void addLog(const Item *item, const Core::Time &time,
const QString &message);
// ------------------------------------------------------------------
// Protected data members
// ------------------------------------------------------------------
protected:
Ui::ProcessManager _ui;
Model *_model{nullptr};
QSortFilterProxyModel *_proxyModel{nullptr};
QMap<QProcess*, Item*> _items;
QSet<QProcess*> _running;
QSet<QProcess*> _erroneous;
QVariantAnimation _progressAnimation;
// ------------------------------------------------------------------
// Private methods
// ------------------------------------------------------------------
private:
Item *itemForProcess(QProcess *process) const;
Item *itemForProcessSender() const;
inline const Item *itemForProxyIndex(const QModelIndex &index) const;
inline QModelIndex proxyIndexForItem(const Item *item) const;
};
class ProcessStateLabel : public SpinningLabel {
Q_OBJECT
// ------------------------------------------------------------------
// X'struction
// ------------------------------------------------------------------
public:
ProcessStateLabel(ProcessManager *manager, QWidget *parent = nullptr);
// ------------------------------------------------------------------
// Protected Slots
// ------------------------------------------------------------------
protected slots:
void mousePressEvent(QMouseEvent *event) override;
void onProcessStateChanged();
// ------------------------------------------------------------------
// Protected Interface
// ------------------------------------------------------------------
protected:
void init();
// ------------------------------------------------------------------
// Protected data members
// ------------------------------------------------------------------
protected:
ProcessManager *_manager{nullptr};
QPixmap _defaultPixmap;
QPixmap _progressPixmap;
QPixmap _erroneousPixmap;
};
} // namespace Seiscomp::Gui
#endif

View File

@ -79,8 +79,8 @@ class SC_GUI_API RecordPolyline : public AbstractRecordPolyline,
bool optimization = true);
void create(RecordSequence const *,
const Core::Time &start,
const Core::Time &end,
const OPT(Core::Time) &start,
const OPT(Core::Time) &end,
double pixelPerSecond,
double amplMin, double amplMax, double amplOffset,
int height, float *timingQuality = nullptr,
@ -150,8 +150,8 @@ class SC_GUI_API RecordPolylineF : public AbstractRecordPolyline,
bool optimization = true);
void create(RecordSequence const *,
const Core::Time &start,
const Core::Time &end,
const OPT(Core::Time) &start,
const OPT(Core::Time) &end,
double pixelPerSecond,
double amplMin, double amplMax, double amplOffset,
int height, float *timingQuality = nullptr,

View File

@ -48,9 +48,9 @@ class SC_GUI_API RecordStreamThread : public QThread {
public:
bool connect();
void setStartTime(const Seiscomp::Core::Time&);
void setEndTime(const Seiscomp::Core::Time&);
void setTimeWindow(const Seiscomp::Core::TimeWindow&);
void setStartTime(const OPT(Core::Time) &);
void setEndTime(const OPT(Core::Time) &);
void setTimeWindow(const Core::TimeWindow &);
bool setTimeout(int seconds);
@ -62,12 +62,8 @@ class SC_GUI_API RecordStreamThread : public QThread {
// Needs to be called after connect()
bool addStream(const std::string& network, const std::string& station,
const std::string& location, const std::string& channel,
const Seiscomp::Core::Time &stime, const Seiscomp::Core::Time &etime);
// Needs to be called after connect()
bool addStream(const std::string& network, const std::string& station,
const std::string& location, const std::string& channel,
double gain);
const OPT(Seiscomp::Core::Time) &stime,
const OPT(Seiscomp::Core::Time) &etime);
void stop(bool waitForTermination);
@ -112,17 +108,15 @@ class SC_GUI_API RecordStreamThread : public QThread {
private:
typedef std::map<std::string, double> GainMap;
int _id;
std::string _recordStreamURL;
bool _requestedClose;
bool _readingStreams;
Seiscomp::IO::RecordStreamPtr _recordStream;
QMutex _mutex;
static int _numberOfThreads;
GainMap _gainMap;
Array::DataType _dataType;
Record::Hint _recordHint;
int _id;
std::string _recordStreamURL;
bool _requestedClose;
bool _readingStreams;
Seiscomp::IO::RecordStreamPtr _recordStream;
QMutex _mutex;
static int _numberOfThreads;
Array::DataType _dataType;
Record::Hint _recordHint;
};

View File

@ -312,6 +312,10 @@ class SC_GUI_API RecordView : public QWidget {
//! Whether to show record borders
void showRecordBorders(bool enable);
//! Whether to show engineering values with unit prefix such as
//! milli, kilo, etc.
void showEngineeringValues(bool enable);
//! Whether to draw the background using alternating colors
//! The item background will be drawn using QPalette::Base and
//! QPalette::AlternateBase
@ -422,7 +426,7 @@ class SC_GUI_API RecordView : public QWidget {
//! Finds a row by its text using regular expressions.
//! The first occurence according the sorting is returned.
//! If no item matches then -1 is returned.
int findByText(int row, QRegExp &regexp, int startRow = 0) const;
int findByText(int row, const QRegularExpression &regexp, int startRow = 0) const;
//! Sort the items by the time value of the markers with
//! text markerText
@ -603,66 +607,66 @@ class SC_GUI_API RecordView : public QWidget {
typedef QVector<RecordViewItem*> Rows;
typedef QSet<RecordViewItem*> SelectionList;
SelectionMode _selectionMode;
SelectionMode _selectionMode{NoSelection};
RecordStreamThread* _thread;
RecordViewItem* _currentItem;
RecordStreamThread *_thread{nullptr};
RecordViewItem *_currentItem{nullptr};
TimeScale* _timeScaleWidget;
QScrollArea* _scrollArea;
QWidget* _timeScaleInfo;
QLayout* _timeScaleAuxLayout;
TimeScale *_timeScaleWidget{nullptr};
QScrollArea *_scrollArea{nullptr};
QWidget *_timeScaleInfo{nullptr};
QLayout *_timeScaleAuxLayout{nullptr};
QAction* _filterAction;
QAction* _absTimeAction;
QAction *_filterAction{nullptr};
QAction *_absTimeAction{nullptr};
QTimer _recordUpdateTimer;
QTimer _recordUpdateTimer;
SelectionList _selectedItems;
SelectionList _selectedItems;
Mode _mode;
Seiscomp::Core::Time _timeStart;
Mode _mode{RING_BUFFER};
Seiscomp::Core::Time _timeStart;
Seiscomp::Core::TimeSpan _timeSpan;
Items _items;
Rows _rows;
Core::Time _alignment;
Items _items;
Rows _rows;
Core::Time _alignment;
QPointF _zoomSpot;
QPointF _zoomSpot{0.5, 0.5};
int _rowHeight;
int _minRowHeight;
int _maxRowHeight;
int _numberOfRows;
int _defaultRowHeight;
float _zoomFactor;
int _rowHeight;
int _minRowHeight;
int _maxRowHeight{-1};
int _numberOfRows{-1};
int _defaultRowHeight{16};
float _zoomFactor{2.0f};
double _tmin, _tmax;
float _amin, _amax; // amplitude range
double _tmin{0}, _tmax{0};
double _timeScale; // pixels per second
double _minTimeScale;
double _amplScale; // amplitude units per pixel
double _timeScale{1.0 / 3.0}; // pixels per second
double _minTimeScale{0.0};
double _amplScale{0.0}; // amplitude units per pixel
bool _filtering; // the filter state
bool _alternatingColors;
bool _showAllRecords;
bool _showRecordBorders;
bool _autoInsertItems;
bool _autoScale;
bool _autoMaxScale;
bool _filtering{false}; // the filter state
bool _alternatingColors{false};
bool _showAllRecords{false};
bool _showRecordBorders{false};
bool _showEngineeringValues{true};
bool _autoInsertItems{true};
bool _autoScale{false};
bool _autoMaxScale{false};
bool _frames;
int _frameMargin;
int _horizontalSpacing;
int _rowSpacing;
bool _frames{false};
int _frameMargin{0};
int _horizontalSpacing{0};
int _rowSpacing{0};
int _labelWidth;
int _labelColumns;
int _labelWidth{70};
int _labelColumns{3};
RecordWidget::RecordBorderDrawMode _recordBorderDrawMode;
RecordWidget::Filter *_filter;
RecordWidget::Filter *_filter{nullptr};
friend class RecordViewItem;
};

View File

@ -217,8 +217,10 @@ class SC_GUI_API RecordWidget : public QWidget {
};
enum ShadowWidgetFlags {
Raw = 0x01,
Filtered = 0x02
Notify = 0x00,
Raw = 0x01,
Filtered = 0x02,
Style = 0x08
};
enum AxisPosition {
@ -240,25 +242,26 @@ class SC_GUI_API RecordWidget : public QWidget {
double dyMin{0}; // Data minimum value
double dyMax{0}; // Data maximum value
double dOffset{0}; // Data offset
double absMax{0};
int pyMin{0}; //
double yMin{0}; // Minimum value to render
double yMax{0}; // Maximum value to render
double yOffset{0}; // Offset to render
double absMax{0}; // Maximum data amplitude
int pyMin{0};
int pyMax{0};
double fyMin{-1};
double fyMax{1};
double yMin{0};
double yMax{0};
double yOffset{0}; // The used offset
float timingQuality{-1};
int timingQualityCount{0};
bool dirtyData{false};
bool dirty{false};
bool visible{false};
AbstractRecordPolylinePtr poly;
QString status;
void reset() {
dyMin = dyMax = dOffset = absMax = 0;
fyMin = -1; fyMax = 1;
pyMin = pyMax = 0;
visible = false;
@ -363,8 +366,8 @@ class SC_GUI_API RecordWidget : public QWidget {
//! Available record slots are copied by reference
//! in that way that the listener is not the owner of the
//! data. Available marker are copied by value.
void setShadowWidget(RecordWidget *shadow, bool copyMarker,
int flags = Raw);
void setShadowWidget(RecordWidget *shadow, bool copyMarker = false,
int flags = Raw | Style);
//! Returns the current shadow widget
RecordWidget *shadowWidget() const { return _shadowWidget; }
@ -393,7 +396,7 @@ class SC_GUI_API RecordWidget : public QWidget {
double smin() const { return _smin; }
double smax() const { return _smax; }
Seiscomp::Core::Time alignment() { return _alignment; }
Seiscomp::Core::Time centerTime();
@ -412,11 +415,11 @@ class SC_GUI_API RecordWidget : public QWidget {
QPair<double,double> amplitudeRange(int slot) const;
void ensureVisibility(const Seiscomp::Core::Time &time, int pixelMargin);
//! Method to inform the widget about a newly inserted
//! record.
virtual void fed(int slot, const Seiscomp::Record *rec);
//! Causes the widget to rebuild its internal data
//! according its size and parameters
void setDirty();
@ -432,6 +435,9 @@ class SC_GUI_API RecordWidget : public QWidget {
void showScaledValues(bool enable);
bool areScaledValuesShown() const { return _showScaledValues; }
void showEngineeringValues(bool enable);
bool areEngineeringValuesShown() const { return _showEngineeringValues; }
//! Adds a marker to the widget. The ownership takes
//! the widget.
bool addMarker(RecordMarker*);
@ -565,7 +571,7 @@ class SC_GUI_API RecordWidget : public QWidget {
void alignOnMarker(const QString& text);
void setAmplScale(double);
void enableFiltering(bool enable);
void setGridSpacing(double, double, double);
void setGridVSpacing(double, double, double);
@ -577,7 +583,6 @@ class SC_GUI_API RecordWidget : public QWidget {
void setAutoMaxScale(bool);
void setNormalizationWindow(const Seiscomp::Core::TimeWindow&);
void setOffsetWindow(const Seiscomp::Core::TimeWindow&);
//! Sets the maximum slot index for which setFilter(filter) is
//! applied. The semantics of 'any' is bound to value -1.
@ -666,10 +671,6 @@ class SC_GUI_API RecordWidget : public QWidget {
virtual void customPaintTracesBegin(QPainter &painter);
virtual void customPaintTracesEnd(QPainter &painter);
virtual void createPolyline(int slot, AbstractRecordPolylinePtr &polyline,
RecordSequence const *, double pixelPerSecond,
double amplMin, double amplMax, double amplOffset,
int height, bool optimization, bool highPrecision);
virtual const double *value(int slot, const Seiscomp::Core::Time&) const;
@ -730,8 +731,6 @@ class SC_GUI_API RecordWidget : public QWidget {
const Record*, const Record*,
double tolerance) const;
void prepareRecords(Stream *s);
void drawRecords(Stream *s, int slot);
void drawTrace(QPainter &painter,
const Trace *trace,
const RecordSequence *seq,
@ -745,8 +744,16 @@ class SC_GUI_API RecordWidget : public QWidget {
int canvasWidth() const;
int canvasHeight() const;
void alignTrace(Trace &trace);
void prepareRecords(Stream *s);
void createPolyline(Stream *s, AbstractRecordPolylinePtr &polyline,
RecordSequence const *, double pixelPerSecond,
double amplMin, double amplMax, double amplOffset,
int height);
void render(Stream *s);
private:
protected:
typedef QVector<Stream*> StreamMap;
QVariant _data;
@ -754,7 +761,7 @@ class SC_GUI_API RecordWidget : public QWidget {
RecordBorderDrawMode _recordBorderDrawMode;
Seiscomp::Core::Time _alignment;
bool _clipRows{true};
double _tmin; // time range min
double _tmax; // time range max
double _smin, _smax; // selection
@ -775,6 +782,7 @@ class SC_GUI_API RecordWidget : public QWidget {
bool _active{false};
bool _filtering{false};
bool _showScaledValues{false};
bool _showEngineeringValues{true};
bool _drawRecords{false};
bool _drawRecordID{true};
@ -815,10 +823,9 @@ class SC_GUI_API RecordWidget : public QWidget {
int _margins[4];
QString _cursorText;
Seiscomp::Core::Time _cursorPos;
Seiscomp::Core::Time _startDragPos;
OPT(Seiscomp::Core::Time) _startDragPos;
Seiscomp::Core::TimeWindow _normalizationWindow;
Seiscomp::Core::TimeWindow _offsetWindow;
RecordWidget *_shadowWidget;
RecordWidget *_markerSourceWidget;
@ -829,6 +836,10 @@ class SC_GUI_API RecordWidget : public QWidget {
};
inline int RecordWidget::currentRecords() const {
return _currentSlot;
}
inline const QRect &RecordWidget::canvasRect() const {
return _canvasRect;
}

View File

@ -137,13 +137,13 @@ class SC_GUI_API Ruler : public QFrame
//! Converts ruler position to point in widget coordinates, rx is the
//! position on the ruler, ry the distance from the rulers baseline
QPoint r2wPos(int rx, int ry) const;
QPointF r2wPos(int rx, int ry) const;
//! Converts widget coordinates to ruler position
QPoint w2rPos(int x, int y) const;
QPointF w2rPos(int x, int y) const;
//! Converts ruler rectangle to rectangle in widget coordinates.
//! rx is the position on the ruler, ry the distance from the rulers
//! baseline
QRect r2wRect(int rx, int ry, int rw, int rh) const;
QRectF r2wRect(int rx, int ry, int rw, int rh) const;
//! Draws text at the specified ruler position (rx) with
//! the specified distance (ry) from the rulers baseline.
//! If allowRotate is set to 'true' the text is rotated

View File

@ -50,45 +50,42 @@ class SC_GUI_API Scheme {
Colors();
struct Splash {
Splash();
QColor version;
QColor message;
QColor version{0, 104, 158,255};
QColor message{128, 128, 128, 255};
};
struct Picks {
Picks();
QColor manual;
QColor automatic;
QColor undefined;
QColor disabled;
QColor manual{Qt::green};
QColor automatic{Qt::red};
QColor undefined{Qt::gray};
QColor disabled{Qt::gray};
};
struct Arrivals {
Arrivals();
QColor manual;
QColor automatic;
QColor theoretical;
QColor undefined;
QColor disabled;
QPen uncertainties;
QPen defaultUncertainties;
QColor manual{0, 160, 0};
QColor automatic{160, 0, 0};
QColor theoretical{0, 0, 160};
QColor undefined{160, 0, 0};
QColor disabled{Qt::gray};
QPen uncertainties{{Qt::gray}, 0.8};
QPen defaultUncertainties{{{128,128,128,64}}, 0.8};
Gradient residuals;
};
struct Magnitudes {
Magnitudes();
QColor set;
QColor unset;
QColor disabled;
QColor set{0, 160, 0};
QColor unset{Qt::transparent};
QColor disabled{Qt::gray};
Gradient residuals;
};
struct RecordStates {
RecordStates();
QColor unrequested;
QColor requested;
QColor inProgress;
QColor notAvailable;
QColor unrequested{0,0,0,128};
QColor requested{255,255,0,128};
QColor inProgress{0,255,0,16};
QColor notAvailable{255,0,0,128};
};
struct BrushPen {
@ -104,49 +101,46 @@ class SC_GUI_API Scheme {
};
struct Records {
Records();
QColor alignment;
QColor alignment{Qt::red};
QColor background;
QColor alternateBackground;
QColor foreground;
QColor alternateForeground;
QColor spectrogram;
QPen offset;
QPen gridPen;
QPen subGridPen;
QBrush gaps;
QBrush overlaps;
QColor foreground{128, 128, 128};
QColor alternateForeground{128, 128, 128};
QColor spectrogram{Qt::black};
QPen offset{{192,192,255}};
QPen gridPen{{{0,0,0,32}}, 1, Qt::DashLine};
QPen subGridPen{{{0,0,0,0}}, 1, Qt::DotLine};
QBrush gaps{{255, 255, 0, 64}};
QBrush overlaps{{255, 0, 255, 64}};
RecordStates states;
RecordBorders borders;
};
struct Stations {
Stations();
QColor text;
QColor associated;
QColor selected;
QColor triggering;
QColor triggered0;
QColor triggered1;
QColor triggered2;
QColor disabled;
QColor idle;
QColor text{Qt::white};
QColor associated{130, 173, 88};
QColor selected{77, 77, 184};
QColor triggering{Qt::red};
QColor triggered0{0, 128, 255};
QColor triggered1{0, 0, 255};
QColor triggered2{0, 0, 128};
QColor disabled{102, 102, 102, 100};
QColor idle{102, 102, 102, 128};
};
struct QC {
QC();
QColor delay0;
QColor delay1;
QColor delay2;
QColor delay3;
QColor delay4;
QColor delay5;
QColor delay6;
QColor delay7;
QColor qcWarning;
QColor qcError;
QColor qcOk;
QColor qcNotSet;
QColor delay0{0, 255, 255};
QColor delay1{0, 255, 0};
QColor delay2{255, 253, 0};
QColor delay3{255, 102, 51};
QColor delay4{255, 0, 0};
QColor delay5{204, 204, 204};
QColor delay6{153, 153, 153};
QColor delay7{102, 102, 102};
QColor qcWarning{Qt::yellow};
QColor qcError{Qt::red};
QColor qcOk{Qt::green};
QColor qcNotSet{0, 0, 0};
};
struct ConfigGradient {
@ -156,67 +150,63 @@ class SC_GUI_API Scheme {
struct OriginSymbol {
OriginSymbol();
bool classic;
bool classic{false};
ConfigGradient depth;
};
struct OriginStatus {
OriginStatus();
QColor automatic;
QColor manual;
QColor automatic{Qt::red};
QColor manual{Qt::darkGreen};
};
struct GroundMotion {
GroundMotion();
QColor gmNotSet;
QColor gm0;
QColor gm1;
QColor gm2;
QColor gm3;
QColor gm4;
QColor gm5;
QColor gm6;
QColor gm7;
QColor gm8;
QColor gm9;
QColor gmNotSet{0, 0, 0};
QColor gm0{0, 0, 255};
QColor gm1{0, 0, 255};
QColor gm2{0, 167, 255};
QColor gm3{0, 238, 255};
QColor gm4{0, 255, 0};
QColor gm5{255, 255, 0};
QColor gm6{255, 210, 0};
QColor gm7{255, 160, 0};
QColor gm8{255, 0, 0};
QColor gm9{160, 0, 60};
};
struct RecordView {
RecordView();
QColor selectedTraceZoom;
QColor selectedTraceZoom{192, 192, 255, 192};
};
struct Map {
Map();
QColor lines;
QColor outlines;
QPen directivity;
QPen grid;
QColor stationAnnotations;
QColor cityLabels;
QColor cityOutlines;
QColor cityCapital;
QColor cityNormal;
QColor lines{255, 255, 255, 64};
QColor outlines{255, 255, 255};
QPen directivity{{255 ,160, 0}};
QPen grid{Qt::white, 1, Qt::DotLine};
QColor stationAnnotations{Qt::red};
QColor cityLabels{Qt::black};
QColor cityOutlines{Qt::black};
QColor cityCapital{255, 160, 122};
QColor cityNormal{Qt::white};
QColor cityHalo{Qt::white};
struct {
QPen normalText;
QPen normalBorder;
QBrush normalBackground;
QPen normalText{{192,192,192}};
QPen normalBorder{{160,160,164}};
QBrush normalBackground{{32,32,32,192}};
QPen highlightedText;
QPen highlightedBorder;
QBrush highlightedBackground;
QPen highlightedText{{0,0,0}};
QPen highlightedBorder{{160,160,164}};
QBrush highlightedBackground{{255,255,255,192}};
int textSize;
int textSize{9};
} annotations;
};
struct Legend {
Legend();
QColor background;
QColor border;
QColor text;
QColor headerText;
QColor background{255, 255, 255, 224};
QColor border{160, 160, 160};
QColor text{64, 64, 64};
QColor headerText{0, 0, 0};
};
public:
@ -239,7 +229,6 @@ class SC_GUI_API Scheme {
};
struct Fonts {
Fonts();
void setBase(const QFont& f);
QFont base;
@ -257,85 +246,82 @@ class SC_GUI_API Scheme {
};
struct Splash {
Splash();
struct Pos {
QPoint pos;
int align;
};
Pos version;
Pos message;
Pos version{{390, 145}, Qt::AlignRight | Qt::AlignTop};
Pos message{{200, 260}, Qt::AlignHCenter | Qt::AlignBottom};
};
struct Map {
Map();
enum class StationSymbol {
Triangle,
Diamond,
Box
};
int stationSize;
int originSymbolMinSize;
bool vectorLayerAntiAlias;
bool bilinearFilter;
bool showGrid;
bool showLayers;
bool showCities;
bool showLegends;
int cityPopulationWeight;
bool toBGR;
int polygonRoughness;
std::string projection;
int stationSize{12};
StationSymbol stationSymbol{StationSymbol::Triangle};
int originSymbolMinSize{9};
double originSymbolMinMag{1.2};
double originSymbolScaleMag{4.9};
bool vectorLayerAntiAlias{true};
bool bilinearFilter{true};
bool showGrid{true};
bool showLayers{true};
bool showCities{true};
bool showLegends{false};
int cityPopulationWeight{150};
int cityHaloWidth{0};
bool toBGR{false};
int polygonRoughness{3};
std::string projection;
int maxZoom{24};
};
struct Marker {
Marker();
int lineWidth;
int lineWidth{1};
};
struct RecordBorders {
RecordBorders();
Gui::RecordWidget::RecordBorderDrawMode drawMode;
Gui::RecordWidget::RecordBorderDrawMode drawMode{Gui::RecordWidget::Box};
};
struct Records {
Records();
int lineWidth;
bool antiAliasing;
bool optimize;
int lineWidth{1};
bool antiAliasing{true};
bool optimize{true};
bool showEngineeringValues{true};
RecordBorders recordBorders;
};
struct Precision {
Precision();
int depth;
int distance;
int location;
int magnitude;
int originTime;
int pickTime;
int traceValues;
int rms;
int uncertainties;
int depth{0};
int distance{1};
int location{2};
int magnitude{1};
int originTime{0};
int pickTime{1};
int traceValues{1};
int rms{1};
int uncertainties{0};
};
struct Unit {
Unit();
bool distanceInKM;
bool distanceInKM{false};
};
struct DateTime {
DateTime();
bool useLocalTime;
bool useLocalTime{false};
};
public:
bool showMenu;
bool showStatusBar;
int tabPosition;
bool showMenu{true};
bool showStatusBar{true};
int tabPosition{-1};
bool distanceHypocentral{false};
Splash splash;
Colors colors;

View File

@ -116,6 +116,7 @@ class SC_GUI_API SpectrogramRenderer {
void setTransferFunction(Math::Restitution::FFT::TransferFunction *tf);
bool isDirty() const { return _dirty; }
bool isAmplitudeRangeDirty() const { return _updatedAmplitudeRange; }
//! Creates the spectrogram. This is usually done in render if the
//! spectrogram is dirty but can called from outside.
@ -131,7 +132,8 @@ class SC_GUI_API SpectrogramRenderer {
int paddingOuter = 6, int paddingInner = 0,
bool stretch = false);
QPair<double,double> range() const;
QPair<double,double> amplitudeRange() const;
QPair<double,double> frequencyRange() const;
// ----------------------------------------------------------------------
@ -211,7 +213,7 @@ class SC_GUI_API SpectrogramRenderer {
QImage::Format _imageFormat;
TransferFunctionPtr _transferFunction;
Core::TimeWindow _timeWindow;
OPT(Core::TimeWindow) _timeWindow;
Core::Time _alignment;
double _tmin, _tmax;
double _scale;
@ -227,12 +229,17 @@ class SC_GUI_API SpectrogramRenderer {
bool _logarithmic;
bool _smoothTransform;
bool _dirty;
bool _updatedAmplitudeRange;
double _renderedFmin;
double _renderedFmax;
};
inline QPair<double,double> SpectrogramRenderer::range() const {
inline QPair<double,double> SpectrogramRenderer::amplitudeRange() const {
return QPair<double,double>(_normalizationAmpRange[0], _normalizationAmpRange[1]);
}
inline QPair<double,double> SpectrogramRenderer::frequencyRange() const {
return QPair<double,double>(_renderedFmin, _renderedFmax);
}

View File

@ -0,0 +1,51 @@
/***************************************************************************
* Copyright (C) gempa GmbH *
* All rights reserved. *
* *
* GNU Affero General Public License Usage *
* This file may be used under the terms of the GNU Affero *
* Public License version 3.0 as published by the Free Software Foundation *
* and appearing in the file LICENSE included in the packaging of this *
* file. Please review the following information to ensure the GNU Affero *
* Public License version 3.0 requirements will be met: *
* https://www.gnu.org/licenses/agpl-3.0.html. *
***************************************************************************/
#ifndef SEISCOMP_GUI_CORE_SPECTROGRAMSETTINGS
#define SEISCOMP_GUI_CORE_SPECTROGRAMSETTINGS
#include <seiscomp/system/application.h>
#ifndef Q_MOC_RUN
#include <seiscomp/gui/core/recordview.h>
#endif
#include <QWidget>
#include <seiscomp/gui/core/ui_spectrogramsettings.h>
namespace Seiscomp::Gui {
class SpectrogramSettings : public QWidget {
Q_OBJECT
public:
SpectrogramSettings(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
public:
void init(const System::Application *app, const std::string &prefix);
signals:
void apply();
public:
Ui::SpectrogramSettings ui;
};
}
#endif

View File

@ -0,0 +1,78 @@
/***************************************************************************
* Copyright (C) gempa GmbH *
* All rights reserved. *
* Contact: gempa GmbH (seiscomp-dev@gempa.de) *
* *
* GNU Affero General Public License Usage *
* This file may be used under the terms of the GNU Affero *
* Public License version 3.0 as published by the Free Software Foundation *
* and appearing in the file LICENSE included in the packaging of this *
* file. Please review the following information to ensure the GNU Affero *
* Public License version 3.0 requirements will be met: *
* https://www.gnu.org/licenses/agpl-3.0.html. *
* *
* Other Usage *
* Alternatively, this file may be used in accordance with the terms and *
* conditions contained in a signed written agreement between you and *
* gempa GmbH. *
***************************************************************************/
#ifndef SEISCOMP_GUI_CORE_SPINNINGLABEL_H
#define SEISCOMP_GUI_CORE_SPINNINGLABEL_H
#include <QLabel>
#include <QVariantAnimation>
#include <seiscomp/gui/qt.h>
namespace Seiscomp::Gui {
class SC_GUI_API SpinningLabel : public QLabel {
Q_OBJECT
Q_PROPERTY(int duration READ duration WRITE setDuration)
Q_PROPERTY(QEasingCurve easingCurve READ easingCurve WRITE setEasingCurve)
public:
explicit SpinningLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
public:
/**
* @brief Starts the spinning animation if the label is shown or visible.
* This is the default state.
*/
void start();
/**
* @brief Stops the spinning animation if the label is shown or visible.
*/
void stop();
int duration() const;
void setDuration(int msecs);
QEasingCurve easingCurve() const;
void setEasingCurve(const QEasingCurve &easing);
protected:
void showEvent(QShowEvent *event) override;
void hideEvent(QHideEvent *event) override;
void paintEvent(QPaintEvent *event) override;
private slots:
void animationChanged(const QVariant &);
protected:
QVariantAnimation _animation;
double _angle;
bool _shouldRun{true};
};
}
#endif

View File

@ -28,15 +28,15 @@
#define REPAINT_WITHOUT_ERASE FALSE
#define REPAINT_AFTER_ERASE TRUE
namespace Seiscomp {
namespace Gui {
namespace Seiscomp::Gui {
class SC_GUI_API TimeScale : public Ruler {
Q_OBJECT
public:
TimeScale(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags(), Position pos = Bottom);
~TimeScale(){}
TimeScale(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags(),
Position pos = Bottom);
~TimeScale() override = default;
void setTimeRange(double tmin, double tmax) {
setRange(tmin, tmax);
@ -53,9 +53,9 @@ class SC_GUI_API TimeScale : public Ruler {
void setAbsoluteTimeEnabled(bool absoluteTime, bool absoluteDate = true);
protected:
bool getTickText(double pos, double lastPos,
int line, QString &str) const;
void updateIntervals();
bool getTickText(double pos, double lastPos, int line,
QString &str) const override;
void updateIntervals() override;
protected:
Core::Time _alignment;
@ -67,7 +67,6 @@ class SC_GUI_API TimeScale : public Ruler {
};
}
}
# endif

View File

@ -30,10 +30,10 @@ public:
QTabWidget *tabWidget;
QWidget *tab;
QGridLayout *gridLayout;
QLabel *label_3;
QLabel *labelVersion;
QLabel *label_6;
QLabel *label_7;
QLabel *label_3;
QLabel *label_6;
QLabel *label;
QLabel *label_5;
QLabel *label_4;
@ -71,25 +71,25 @@ public:
gridLayout->setContentsMargins(9, 9, 9, 9);
#endif
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
label_3 = new QLabel(tab);
label_3->setObjectName(QString::fromUtf8("label_3"));
gridLayout->addWidget(label_3, 1, 1, 1, 1);
labelVersion = new QLabel(tab);
labelVersion->setObjectName(QString::fromUtf8("labelVersion"));
gridLayout->addWidget(labelVersion, 0, 1, 1, 1);
label_6 = new QLabel(tab);
label_6->setObjectName(QString::fromUtf8("label_6"));
gridLayout->addWidget(label_6, 2, 1, 1, 1);
label_7 = new QLabel(tab);
label_7->setObjectName(QString::fromUtf8("label_7"));
gridLayout->addWidget(label_7, 4, 1, 1, 1);
gridLayout->addWidget(label_7, 1, 1, 1, 1);
label_3 = new QLabel(tab);
label_3->setObjectName(QString::fromUtf8("label_3"));
gridLayout->addWidget(label_3, 2, 1, 1, 1);
label_6 = new QLabel(tab);
label_6->setObjectName(QString::fromUtf8("label_6"));
gridLayout->addWidget(label_6, 4, 1, 1, 1);
label = new QLabel(tab);
label->setObjectName(QString::fromUtf8("label"));
@ -169,10 +169,10 @@ public:
void retranslateUi(QWidget *AboutWidget)
{
AboutWidget->setWindowTitle(QCoreApplication::translate("AboutWidget", "About SeisComP::GUI", nullptr));
label_3->setText(QCoreApplication::translate("AboutWidget", "GFZ Potsdam", nullptr));
labelVersion->setText(QCoreApplication::translate("AboutWidget", "-", nullptr));
label_6->setText(QCoreApplication::translate("AboutWidget", "German Research Centre for Geosciences", nullptr));
label_7->setText(QCoreApplication::translate("AboutWidget", "gempa GmbH (http://www.gempa.de)", nullptr));
label_3->setText(QCoreApplication::translate("AboutWidget", "GFZ Potsdam", nullptr));
label_6->setText(QCoreApplication::translate("AboutWidget", "German Research Centre for Geosciences", nullptr));
label->setText(QCoreApplication::translate("AboutWidget", "Version:", nullptr));
label_5->setText(QCoreApplication::translate("AboutWidget", "geofon_dc@gfz-potsdam.de", nullptr));
label_4->setText(QCoreApplication::translate("AboutWidget", "Contact:", nullptr));

View File

@ -10,7 +10,6 @@
#define UI_INSPECTOR_H
#include <QtCore/QVariant>
#include <QtGui/QIcon>
#include <QtWidgets/QApplication>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLineEdit>
@ -47,8 +46,6 @@ public:
buttonBack = new QToolButton(Inspector);
buttonBack->setObjectName(QString::fromUtf8("buttonBack"));
buttonBack->setEnabled(false);
const QIcon icon = QIcon(QString::fromUtf8(":/icons/icons/undo.png"));
buttonBack->setIcon(icon);
vboxLayout->addWidget(buttonBack);

View File

@ -0,0 +1,193 @@
/********************************************************************************
** Form generated from reading UI file 'processmanager.ui'
**
** Created by: Qt User Interface Compiler version 5.15.13
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_PROCESSMANAGER_H
#define UI_PROCESSMANAGER_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QFrame>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QSplitter>
#include <QtWidgets/QTabWidget>
#include <QtWidgets/QTableView>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_ProcessManager
{
public:
QWidget *centralwidget;
QHBoxLayout *layoutMain;
QSplitter *splitter;
QFrame *frame;
QVBoxLayout *layoutLeft;
QTableView *table;
QHBoxLayout *layoutButtons;
QSpacerItem *spacerButtons;
QPushButton *btnStop;
QPushButton *btnContinue;
QPushButton *btnTerminate;
QPushButton *btnKill;
QPushButton *btnRemove;
QPushButton *btnClear;
QTabWidget *twOutput;
QWidget *tabStdout;
QVBoxLayout *layoutStdout;
QWidget *tabStderr;
QVBoxLayout *layoutStderr;
QWidget *tabProcessLog;
QVBoxLayout *layoutLog;
void setupUi(QMainWindow *ProcessManager)
{
if (ProcessManager->objectName().isEmpty())
ProcessManager->setObjectName(QString::fromUtf8("ProcessManager"));
ProcessManager->resize(1024, 768);
centralwidget = new QWidget(ProcessManager);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
layoutMain = new QHBoxLayout(centralwidget);
layoutMain->setObjectName(QString::fromUtf8("layoutMain"));
splitter = new QSplitter(centralwidget);
splitter->setObjectName(QString::fromUtf8("splitter"));
splitter->setOrientation(Qt::Orientation::Horizontal);
frame = new QFrame(splitter);
frame->setObjectName(QString::fromUtf8("frame"));
frame->setFrameShape(QFrame::Shape::StyledPanel);
frame->setFrameShadow(QFrame::Shadow::Raised);
layoutLeft = new QVBoxLayout(frame);
layoutLeft->setObjectName(QString::fromUtf8("layoutLeft"));
table = new QTableView(frame);
table->setObjectName(QString::fromUtf8("table"));
layoutLeft->addWidget(table);
layoutButtons = new QHBoxLayout();
layoutButtons->setObjectName(QString::fromUtf8("layoutButtons"));
spacerButtons = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
layoutButtons->addItem(spacerButtons);
btnStop = new QPushButton(frame);
btnStop->setObjectName(QString::fromUtf8("btnStop"));
btnStop->setEnabled(false);
layoutButtons->addWidget(btnStop);
btnContinue = new QPushButton(frame);
btnContinue->setObjectName(QString::fromUtf8("btnContinue"));
btnContinue->setEnabled(false);
layoutButtons->addWidget(btnContinue);
btnTerminate = new QPushButton(frame);
btnTerminate->setObjectName(QString::fromUtf8("btnTerminate"));
btnTerminate->setEnabled(false);
layoutButtons->addWidget(btnTerminate);
btnKill = new QPushButton(frame);
btnKill->setObjectName(QString::fromUtf8("btnKill"));
btnKill->setEnabled(false);
layoutButtons->addWidget(btnKill);
btnRemove = new QPushButton(frame);
btnRemove->setObjectName(QString::fromUtf8("btnRemove"));
btnRemove->setEnabled(false);
layoutButtons->addWidget(btnRemove);
btnClear = new QPushButton(frame);
btnClear->setObjectName(QString::fromUtf8("btnClear"));
btnClear->setEnabled(false);
layoutButtons->addWidget(btnClear);
layoutLeft->addLayout(layoutButtons);
splitter->addWidget(frame);
twOutput = new QTabWidget(splitter);
twOutput->setObjectName(QString::fromUtf8("twOutput"));
tabStdout = new QWidget();
tabStdout->setObjectName(QString::fromUtf8("tabStdout"));
layoutStdout = new QVBoxLayout(tabStdout);
layoutStdout->setObjectName(QString::fromUtf8("layoutStdout"));
twOutput->addTab(tabStdout, QString());
tabStderr = new QWidget();
tabStderr->setObjectName(QString::fromUtf8("tabStderr"));
layoutStderr = new QVBoxLayout(tabStderr);
layoutStderr->setObjectName(QString::fromUtf8("layoutStderr"));
twOutput->addTab(tabStderr, QString());
tabProcessLog = new QWidget();
tabProcessLog->setObjectName(QString::fromUtf8("tabProcessLog"));
layoutLog = new QVBoxLayout(tabProcessLog);
layoutLog->setObjectName(QString::fromUtf8("layoutLog"));
twOutput->addTab(tabProcessLog, QString());
splitter->addWidget(twOutput);
layoutMain->addWidget(splitter);
ProcessManager->setCentralWidget(centralwidget);
retranslateUi(ProcessManager);
twOutput->setCurrentIndex(2);
QMetaObject::connectSlotsByName(ProcessManager);
} // setupUi
void retranslateUi(QMainWindow *ProcessManager)
{
ProcessManager->setWindowTitle(QCoreApplication::translate("ProcessManager", "Manage processes", nullptr));
#if QT_CONFIG(tooltip)
btnStop->setToolTip(QCoreApplication::translate("ProcessManager", "Stop execution of selected processes by sending SIGSTOP. Execution may be continued later on.", nullptr));
#endif // QT_CONFIG(tooltip)
btnStop->setText(QCoreApplication::translate("ProcessManager", "Stop", nullptr));
#if QT_CONFIG(tooltip)
btnContinue->setToolTip(QCoreApplication::translate("ProcessManager", "Continue execution of selected processes by sending SIGCONT.", nullptr));
#endif // QT_CONFIG(tooltip)
btnContinue->setText(QCoreApplication::translate("ProcessManager", "Continue", nullptr));
#if QT_CONFIG(tooltip)
btnTerminate->setToolTip(QCoreApplication::translate("ProcessManager", "Terminate selected processes by sending SIGTERM.", nullptr));
#endif // QT_CONFIG(tooltip)
btnTerminate->setText(QCoreApplication::translate("ProcessManager", "Terminate", nullptr));
#if QT_CONFIG(tooltip)
btnKill->setToolTip(QCoreApplication::translate("ProcessManager", "Kill selected processes by sending SIGKILL.", nullptr));
#endif // QT_CONFIG(tooltip)
btnKill->setText(QCoreApplication::translate("ProcessManager", "Kill", nullptr));
#if QT_CONFIG(tooltip)
btnRemove->setToolTip(QCoreApplication::translate("ProcessManager", "Remove selected processes which have terminated.", nullptr));
#endif // QT_CONFIG(tooltip)
btnRemove->setText(QCoreApplication::translate("ProcessManager", "Remove", nullptr));
#if QT_CONFIG(tooltip)
btnClear->setToolTip(QCoreApplication::translate("ProcessManager", "Remove all stopped processes which have terminated.", nullptr));
#endif // QT_CONFIG(tooltip)
btnClear->setText(QCoreApplication::translate("ProcessManager", "Clear", nullptr));
twOutput->setTabText(twOutput->indexOf(tabStdout), QCoreApplication::translate("ProcessManager", "Stdout", nullptr));
twOutput->setTabText(twOutput->indexOf(tabStderr), QCoreApplication::translate("ProcessManager", "Stderr", nullptr));
twOutput->setTabText(twOutput->indexOf(tabProcessLog), QCoreApplication::translate("ProcessManager", "Process Log", nullptr));
} // retranslateUi
};
namespace Ui {
class ProcessManager: public Ui_ProcessManager {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_PROCESSMANAGER_H

View File

@ -0,0 +1,273 @@
/********************************************************************************
** Form generated from reading UI file 'spectrogramsettings.ui'
**
** Created by: Qt User Interface Compiler version 5.15.13
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_SPECTROGRAMSETTINGS_H
#define UI_SPECTROGRAMSETTINGS_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QDoubleSpinBox>
#include <QtWidgets/QFrame>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_SpectrogramSettings
{
public:
QVBoxLayout *verticalLayout;
QFrame *frame;
QGridLayout *gridLayout;
QLabel *label_9;
QLabel *label;
QCheckBox *cbSmoothing;
QLabel *label_2;
QCheckBox *cbLogScale;
QLabel *label_3;
QLabel *label_4;
QDoubleSpinBox *spinMinAmp;
QLabel *label_5;
QDoubleSpinBox *spinMaxAmp;
QLabel *label_6;
QDoubleSpinBox *spinTimeWindow;
QLabel *label_7;
QDoubleSpinBox *spinOverlap;
QLabel *label_8;
QCheckBox *cbShowAxis;
QLabel *label_10;
QDoubleSpinBox *spinMinFrequency;
QDoubleSpinBox *spinMaxFrequency;
QComboBox *cbNormalization;
QHBoxLayout *horizontalLayout;
QSpacerItem *horizontalSpacer;
QPushButton *btnApply;
QSpacerItem *verticalSpacer;
void setupUi(QWidget *SpectrogramSettings)
{
if (SpectrogramSettings->objectName().isEmpty())
SpectrogramSettings->setObjectName(QString::fromUtf8("SpectrogramSettings"));
SpectrogramSettings->resize(541, 503);
verticalLayout = new QVBoxLayout(SpectrogramSettings);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
frame = new QFrame(SpectrogramSettings);
frame->setObjectName(QString::fromUtf8("frame"));
frame->setFrameShape(QFrame::StyledPanel);
frame->setFrameShadow(QFrame::Raised);
gridLayout = new QGridLayout(frame);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
label_9 = new QLabel(frame);
label_9->setObjectName(QString::fromUtf8("label_9"));
label_9->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_9, 6, 0, 1, 1);
label = new QLabel(frame);
label->setObjectName(QString::fromUtf8("label"));
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(label->sizePolicy().hasHeightForWidth());
label->setSizePolicy(sizePolicy);
label->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label, 0, 0, 1, 1);
cbSmoothing = new QCheckBox(frame);
cbSmoothing->setObjectName(QString::fromUtf8("cbSmoothing"));
QSizePolicy sizePolicy1(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(cbSmoothing->sizePolicy().hasHeightForWidth());
cbSmoothing->setSizePolicy(sizePolicy1);
gridLayout->addWidget(cbSmoothing, 0, 1, 1, 1);
label_2 = new QLabel(frame);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_2, 1, 0, 1, 1);
cbLogScale = new QCheckBox(frame);
cbLogScale->setObjectName(QString::fromUtf8("cbLogScale"));
gridLayout->addWidget(cbLogScale, 1, 1, 1, 1);
label_3 = new QLabel(frame);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_3, 2, 0, 1, 1);
label_4 = new QLabel(frame);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_4, 4, 0, 1, 1);
spinMinAmp = new QDoubleSpinBox(frame);
spinMinAmp->setObjectName(QString::fromUtf8("spinMinAmp"));
spinMinAmp->setMinimum(-99.989999999999995);
spinMinAmp->setValue(-15.000000000000000);
gridLayout->addWidget(spinMinAmp, 4, 1, 1, 1);
label_5 = new QLabel(frame);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_5, 5, 0, 1, 1);
spinMaxAmp = new QDoubleSpinBox(frame);
spinMaxAmp->setObjectName(QString::fromUtf8("spinMaxAmp"));
spinMaxAmp->setMinimum(-99.989999999999995);
spinMaxAmp->setValue(-5.000000000000000);
gridLayout->addWidget(spinMaxAmp, 5, 1, 1, 1);
label_6 = new QLabel(frame);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_6, 8, 0, 1, 1);
spinTimeWindow = new QDoubleSpinBox(frame);
spinTimeWindow->setObjectName(QString::fromUtf8("spinTimeWindow"));
spinTimeWindow->setMinimum(0.100000000000000);
spinTimeWindow->setMaximum(600.000000000000000);
spinTimeWindow->setValue(20.000000000000000);
gridLayout->addWidget(spinTimeWindow, 8, 1, 1, 1);
label_7 = new QLabel(frame);
label_7->setObjectName(QString::fromUtf8("label_7"));
label_7->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_7, 9, 0, 1, 1);
spinOverlap = new QDoubleSpinBox(frame);
spinOverlap->setObjectName(QString::fromUtf8("spinOverlap"));
spinOverlap->setMinimum(0.000000000000000);
spinOverlap->setMaximum(99.000000000000000);
spinOverlap->setValue(50.000000000000000);
gridLayout->addWidget(spinOverlap, 9, 1, 1, 1);
label_8 = new QLabel(frame);
label_8->setObjectName(QString::fromUtf8("label_8"));
label_8->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_8, 3, 0, 1, 1);
cbShowAxis = new QCheckBox(frame);
cbShowAxis->setObjectName(QString::fromUtf8("cbShowAxis"));
gridLayout->addWidget(cbShowAxis, 3, 1, 1, 1);
label_10 = new QLabel(frame);
label_10->setObjectName(QString::fromUtf8("label_10"));
label_10->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_10, 7, 0, 1, 1);
spinMinFrequency = new QDoubleSpinBox(frame);
spinMinFrequency->setObjectName(QString::fromUtf8("spinMinFrequency"));
spinMinFrequency->setMaximum(10000.000000000000000);
gridLayout->addWidget(spinMinFrequency, 6, 1, 1, 1);
spinMaxFrequency = new QDoubleSpinBox(frame);
spinMaxFrequency->setObjectName(QString::fromUtf8("spinMaxFrequency"));
spinMaxFrequency->setMaximum(10000.000000000000000);
gridLayout->addWidget(spinMaxFrequency, 7, 1, 1, 1);
cbNormalization = new QComboBox(frame);
cbNormalization->addItem(QString());
cbNormalization->addItem(QString());
cbNormalization->addItem(QString());
cbNormalization->setObjectName(QString::fromUtf8("cbNormalization"));
gridLayout->addWidget(cbNormalization, 2, 1, 1, 1);
verticalLayout->addWidget(frame);
horizontalLayout = new QHBoxLayout();
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
horizontalSpacer = new QSpacerItem(558, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
horizontalLayout->addItem(horizontalSpacer);
btnApply = new QPushButton(SpectrogramSettings);
btnApply->setObjectName(QString::fromUtf8("btnApply"));
horizontalLayout->addWidget(btnApply);
verticalLayout->addLayout(horizontalLayout);
verticalSpacer = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout->addItem(verticalSpacer);
retranslateUi(SpectrogramSettings);
QMetaObject::connectSlotsByName(SpectrogramSettings);
} // setupUi
void retranslateUi(QWidget *SpectrogramSettings)
{
SpectrogramSettings->setWindowTitle(QCoreApplication::translate("SpectrogramSettings", "Spectrogram Settings", nullptr));
label_9->setText(QCoreApplication::translate("SpectrogramSettings", "Min. frequency:", nullptr));
label->setText(QCoreApplication::translate("SpectrogramSettings", "Smoothing:", nullptr));
cbSmoothing->setText(QString());
label_2->setText(QCoreApplication::translate("SpectrogramSettings", "Log scale:", nullptr));
cbLogScale->setText(QString());
label_3->setText(QCoreApplication::translate("SpectrogramSettings", "Normalization:", nullptr));
label_4->setText(QCoreApplication::translate("SpectrogramSettings", "Min. amplitude:", nullptr));
spinMinAmp->setSuffix(QCoreApplication::translate("SpectrogramSettings", " log10(amp^2)", nullptr));
label_5->setText(QCoreApplication::translate("SpectrogramSettings", "Max. amplitude:", nullptr));
spinMaxAmp->setSuffix(QCoreApplication::translate("SpectrogramSettings", " log10(amp^2)", nullptr));
label_6->setText(QCoreApplication::translate("SpectrogramSettings", "Time window:", nullptr));
spinTimeWindow->setSuffix(QCoreApplication::translate("SpectrogramSettings", "s", nullptr));
label_7->setText(QCoreApplication::translate("SpectrogramSettings", "Overlap:", nullptr));
spinOverlap->setSuffix(QCoreApplication::translate("SpectrogramSettings", "%", nullptr));
label_8->setText(QCoreApplication::translate("SpectrogramSettings", "Show axis:", nullptr));
cbShowAxis->setText(QString());
label_10->setText(QCoreApplication::translate("SpectrogramSettings", "Max. frequency:", nullptr));
spinMinFrequency->setSpecialValueText(QString());
spinMinFrequency->setSuffix(QCoreApplication::translate("SpectrogramSettings", " Hz", nullptr));
spinMaxFrequency->setSpecialValueText(QCoreApplication::translate("SpectrogramSettings", "Auto", nullptr));
spinMaxFrequency->setSuffix(QCoreApplication::translate("SpectrogramSettings", " Hz", nullptr));
cbNormalization->setItemText(0, QCoreApplication::translate("SpectrogramSettings", "Fixed", nullptr));
cbNormalization->setItemText(1, QCoreApplication::translate("SpectrogramSettings", "Frequency", nullptr));
cbNormalization->setItemText(2, QCoreApplication::translate("SpectrogramSettings", "Time", nullptr));
btnApply->setText(QCoreApplication::translate("SpectrogramSettings", "Apply", nullptr));
} // retranslateUi
};
namespace Ui {
class SpectrogramSettings: public Ui_SpectrogramSettings {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_SPECTROGRAMSETTINGS_H

View File

@ -26,39 +26,92 @@
#include <seiscomp/gui/qt.h>
#include <seiscomp/core/datetime.h>
#include <seiscomp/core/defs.h>
#include <QIcon>
#include <QWidget>
#include <string_view>
#include <vector>
class QLabel;
namespace Seiscomp {
namespace Gui {
namespace Seiscomp::Gui {
struct AuxiliaryChannelProfile {
QString name;
std::vector<std::string> patterns;
double minimumDistance{0};
double maximumDistance{1000};
bool visible{true};
};
using AuxiliaryChannelProfiles = std::vector<AuxiliaryChannelProfile>;
SC_GUI_API extern QChar degrees;
SC_GUI_API extern std::string colorConvertError;
SC_GUI_API bool fromString(QColor &value, const std::string &str);
SC_GUI_API bool fromString(QColor &value, std::string_view str);
SC_GUI_API QColor readColor(const std::string &query, const std::string &str,
const QColor &base, bool *ok = nullptr);
SC_GUI_API Qt::PenStyle stringToPenStyle(const std::string &str);
SC_GUI_API Qt::PenStyle readPenStyle(const std::string &query, const std::string &str,
SC_GUI_API Qt::PenStyle readPenStyle(const std::string &query,
const std::string &str,
Qt::PenStyle base, bool *ok = nullptr);
SC_GUI_API Qt::BrushStyle stringToBrushStyle(const std::string &str);
SC_GUI_API Qt::BrushStyle readBrushStyle(const std::string &query, const std::string &str,
Qt::BrushStyle base, bool *ok = nullptr);
SC_GUI_API Qt::BrushStyle readBrushStyle(const std::string &query,
const std::string &str,
Qt::BrushStyle base,
bool *ok = nullptr);
SC_GUI_API QString latitudeToString(double lat, bool withValue = true, bool withUnit = true, int precision = 2);
SC_GUI_API QString longitudeToString(double lon, bool withValue = true, bool withUnit = true, int precision = 2);
SC_GUI_API QString latitudeToString(double lat, bool withValue = true,
bool withUnit = true, int precision = 2);
SC_GUI_API QString longitudeToString(double lon, bool withValue = true,
bool withUnit = true, int precision = 2);
SC_GUI_API QString depthToString(double depth, int precision = 0);
SC_GUI_API QString timeToString(const Core::Time &t, const char *fmt, bool addTimeZone = false);
SC_GUI_API void timeToLabel(QLabel *label, const Core::Time &t, const char *fmt, bool addTimeZone = false);
SC_GUI_API QString timeToString(const Core::Time &t, const char *fmt,
bool addTimeZone = false);
SC_GUI_API void timeToLabel(QLabel *label, const Core::Time &t, const char *fmt,
bool addTimeZone = false);
SC_GUI_API QString elapsedTimeString(const Core::TimeSpan &dt);
SC_GUI_API QString numberToEngineering(double value, int precision = 1);
/**
* @brief Derives the hypocentral distance from an epicentral distance
* and the source depth and the target elevation.
* @param epicentral Epicentral distance in degrees.
* @param depth Source depth in km.
* @param elev Target elevation in meters.
* @return The hypocentral distance in degrees.
*/
SC_GUI_API double hypocentralDistance(double epicentral, double depth,
double elev);
/**
* @brief Computes the distance in degrees according to the scheme setting.
* This is either the epicentral or hypocentral distance.
* @param lat1 Source latitude.
* @param lon1 Source longitude.
* @param depth1 Source depth in km.
* @param lat2 Target latitude.
* @param lon2 Target longitude.
* @param elev2 Target elevation in meters.
* @param az The output azimuth from source to target.
* @param baz The output back-azimuth from target to source.
* @param epicentral The output epicentral distance.
* @return Distance in degrees.
*/
SC_GUI_API double computeDistance(double lat1, double lon1, double depth1,
double lat2, double lon2, double elev2,
double *az = nullptr, double *baz = nullptr,
double *epicentral = nullptr);
SC_GUI_API void setMaxWidth(QWidget *w, int numCharacters);
SC_GUI_API void fixWidth(QWidget *w, int numCharacters);
@ -84,14 +137,84 @@ class SC_GUI_API EllipsisDrawer : public QObject {
bool eventFilter(QObject *obj, QEvent *event);
};
/**
* @brief Constructs an icon from a file path, application resource file or
* fontawsome identifier. Supported schemes:
* - qrc: Application resource read from qrc file
* - file: File path
* - fa: Fontawesome symbol, regular style
* - far: Fontawesome symbol, regular style
* - fas: Fontawesome symbol, solid style
* - fa6: Fontawesome6 symbol, regular style
* - far6: Fontawesome6 symbol, regular style
* - fas6: Fontawesome6 symbol, solid style
*
* If the URL contains no scheme the default QIcon(QString) constructor is
* used.
*
* Examples:
* file:/path/to/file.png File path
* /path/to/file.png File path, same as above
* qrc:images/images/connect_no.png Application resource read from qrc file
* :images/images/connect_no.png Application resource, same as above
* fa:ballon Fontawesome ballon, regular
* fas:ballon Fontawesome ballon, solid
*
* @param url Icon URL string.
* @return QIcon instanance.
*/
SC_GUI_API QIcon iconFromURL(const QString &url);
template <typename T>
class ObjectChangeList : public std::vector<std::pair<typename Core::SmartPointer<T>::Impl, bool> > {
using ObjectChangeList = std::vector<std::pair<Core::SmartPointer<T>, bool>>;
class ColorTheme {
private:
/**
* @brief Private constructor
* This avoids static instances in custom code and maintains binary compatibility
* if more attributes are added as the only interface is via pointers.
*/
ColorTheme() = default;
/**
* @brief Private copy constructor
* This avoids static instances in custom code and maintains binary compatibility
* if more attributes are added as the only interface is via pointers.
*/
ColorTheme(const ColorTheme &) = default;
public:
/**
* @brief Figure if Dark Mode has been set.
* @return true if dark mode, false otherwise.
*/
static bool IsDarkMode();
/**
* @brief Returns the current color theme based on mode (light or dark).
* @return A constant pointer to the current instance.
*/
static const ColorTheme *Current();
public:
QColor backgroundConfirm;
QColor foregroundConfirm;
QColor green;
QColor orange;
QColor petrol;
QColor blue;
QColor red;
QColor lightRed;
QColor white;
};
}
}
} // ns Seiscomp::Gui
#endif

View File

@ -0,0 +1,71 @@
/***************************************************************************
* Copyright (C) gempa GmbH *
* All rights reserved. *
* Contact: gempa GmbH (seiscomp-dev@gempa.de) *
* *
* GNU Affero General Public License Usage *
* This file may be used under the terms of the GNU Affero *
* Public License version 3.0 as published by the Free Software Foundation *
* and appearing in the file LICENSE included in the packaging of this *
* file. Please review the following information to ensure the GNU Affero *
* Public License version 3.0 requirements will be met: *
* https://www.gnu.org/licenses/agpl-3.0.html. *
* *
* Other Usage *
* Alternatively, this file may be used in accordance with the terms and *
* conditions contained in a signed written agreement between you and *
* gempa GmbH. *
***************************************************************************/
#ifndef SEISCOMP_GUI_CORE_VRULER_H
#define SEISCOMP_GUI_CORE_VRULER_H
#include <seiscomp/gui/core/ruler.h>
namespace Seiscomp {
namespace Gui {
class RecordWidget;
/**
* @brief The VRuler class implements a vertical ruler and adds support for
* updating its limits from a RecordWidget.
*/
class VRuler : public Ruler {
Q_OBJECT
public:
VRuler(QWidget *p = 0, Qt::WindowFlags f = Qt::WindowFlags());
public:
void setAnnotation(QString annotation);
const QString &annotation() const;
virtual bool getTickText(double pos, double lastPos,
int line, QString &str) const;
public slots:
void updateScale(Seiscomp::Gui::RecordWidget*);
protected:
void paintEvent(QPaintEvent *) override;
private:
QString _annotation;
};
}
}
#endif

View File

@ -164,6 +164,7 @@ class SC_GUI_API AmplitudeRecordLabel : public StandardRecordLabel {
public:
double latitude;
double longitude;
double elevation;
const DataModel::SensorLocation *location;
Core::TimeWindow timeWindow;
@ -204,6 +205,7 @@ class SC_GUI_API AmplitudeView : public QMainWindow {
QString recordURL;
FilterList filters;
AuxiliaryChannelProfiles auxiliaryChannelProfiles;
bool showAllComponents;
bool loadStrongMotionData;
@ -220,6 +222,11 @@ class SC_GUI_API AmplitudeView : public QMainWindow {
Core::TimeSpan preOffset;
Core::TimeSpan postOffset;
double defaultNoiseBegin{-30};
double defaultNoiseEnd{0};
double defaultSignalBegin{0};
double defaultSignalEnd{30};
Config();
void addFilter(const QString &f, const QString &n) {
@ -385,17 +392,19 @@ class SC_GUI_API AmplitudeView : public QMainWindow {
void openConnectionInfo(const QPoint &);
void ttInterfaceChanged(QString);
void ttTableChanged(QString);
void ttInterfaceChanged(int);
void ttTableChanged(int);
protected:
void showEvent(QShowEvent* event);
void changeEvent(QEvent *e) override;
RecordLabel* createLabel(RecordViewItem*) const;
private:
void applyThemeColors();
void figureOutTravelTimeTable();
void init();

View File

@ -21,6 +21,7 @@
#ifndef SEISCOMP_GUI_EVENTEDIT_H
#define SEISCOMP_GUI_EVENTEDIT_H
#include <QWidget>
#include <string>
#include <list>
@ -36,16 +37,25 @@
#endif
#include <seiscomp/gui/qt.h>
#include <seiscomp/gui/datamodel/originsymbol.h>
#include <seiscomp/gui/datamodel/stationsymbol.h>
#include <seiscomp/gui/datamodel/tensorsymbol.h>
#include <seiscomp/gui/map/mapwidget.h>
#include <seiscomp/gui/datamodel/ui_eventedit.h>
namespace Seiscomp {
namespace Gui {
namespace Map {
class AnnotationLayer;
}
// Extends tensor symbol by label and reference position
class SC_GUI_API ExtTensorSymbol : public TensorSymbol {
class SC_GUI_API ExtTensorSymbol : public TensorSymbol {
public:
ExtTensorSymbol(const Math::Tensor2Sd &t,
const DataModel::FocalMechanism *fm,
@ -57,28 +67,29 @@ class SC_GUI_API ExtTensorSymbol : public TensorSymbol {
void setDrawAgency(bool enabled) { _drawAgency = enabled; }
void setDrawMagnitude(bool enabled) { _drawMagnitude = enabled; }
void setDrawDepth(bool enabled) { _drawDepth = enabled; }
void setReferencePositionEnabled(bool enabled) { _refPosEnabled = enabled; }
void setReferencePosition(const QPointF &refPos) { _refPos = refPos; }
QPointF referencePosition() const { return _refPos; }
const QString& agencyID() const { return _agency; }
const Core::Time& created() const { return _created; }
const DataModel::FocalMechanism *model() const { return _fm.get(); }
const QString &agencyID() const { return _agency; }
OPT(Core::Time) created() const { return _created; }
protected:
virtual void customDraw(const Map::Canvas *canvas, QPainter &painter);
private:
bool _selected;
bool _refPosEnabled;
QPointF _refPos;
DataModel::FocalMechanismCPtr _fm;
bool _selected;
QPointF _refPos;
QString _agency;
QString _magnitude;
QString _depth;
Core::Time _created;
QString _agency;
QString _magnitude;
QString _depth;
OPT(Core::Time) _created;
bool _drawAgency;
bool _drawMagnitude;
bool _drawDepth;
bool _drawAgency;
bool _drawMagnitude;
bool _drawDepth;
};
@ -102,23 +113,29 @@ class SC_GUI_API FMMap : public MapWidget {
void setCurrentFM(const std::string &id);
void setEvent(const DataModel::Event *event);
void setDrawStations(bool draw);
void setDrawStationAnnotations(bool draw);
protected:
void contextMenuEvent(QContextMenuEvent *e);
private:
void init();
void updateSmartLayout();
void updateStations(const DataModel::FocalMechanism *fm);
private:
typedef std::map<std::string, ExtTensorSymbol*> FMSymbols;
using FMSymbols = std::map<std::string, ExtTensorSymbol*>;
FMSymbols _fmSymbols;
OriginSymbol *_originSymbol;
Map::Layer *_symbolLayer;
Map::AnnotationLayer *_annotationLayer;
std::string _currentFMID;
bool _drawAgency;
bool _drawMagnitude;
bool _drawDepth;
bool _drawStations;
bool _smartLayout;
bool _groupByAgency;
@ -163,6 +180,8 @@ class SC_GUI_API EventEdit : public QWidget, public DataModel::Observer {
void updateFM(Seiscomp::DataModel::FocalMechanism*);
void showTab(int);
void drawStations(bool);
void drawStationAnnotations(bool);
private slots:
@ -320,4 +339,5 @@ class SC_GUI_API EventEdit : public QWidget, public DataModel::Observer {
}
}
#endif

View File

@ -18,15 +18,17 @@
***************************************************************************/
#ifndef SEISCOMP_GUI_EVENTLISTVIEW_H
#define SEISCOMP_GUI_EVENTLISTVIEW_H
#ifndef SEISCOMP_GUI_ORIGINLISTVIEW_H
#define SEISCOMP_GUI_ORIGINLISTVIEW_H
#include <seiscomp/gui/core/connectiondialog.h>
#include <seiscomp/gui/core/utils.h>
#include <seiscomp/gui/qt.h>
#include <seiscomp/datamodel/databasequery.h>
#include <seiscomp/datamodel/station.h>
#include <seiscomp/datamodel/eventparameters_package.h>
#ifndef Q_MOC_RUN
#include <seiscomp/core/baseobject.h>
#include <seiscomp/core/timewindow.h>
#include <seiscomp/geo/boundingbox.h>
#endif
@ -38,6 +40,7 @@
class QTreeWidget;
class QTreeWidgetItem;
namespace Ui {
class EventListView;
class EventListViewRegionFilterDialog;
@ -46,21 +49,6 @@ namespace Ui {
namespace Seiscomp {
namespace DataModel {
DEFINE_SMARTPOINTER(Event);
DEFINE_SMARTPOINTER(Origin);
DEFINE_SMARTPOINTER(FocalMechanism);
DEFINE_SMARTPOINTER(Pick);
DEFINE_SMARTPOINTER(Station);
DEFINE_SMARTPOINTER(Amplitude);
class OriginReference;
class DatabaseQuery;
class Notifier;
}
namespace Client {
DEFINE_SMARTPOINTER(Connection);
@ -87,6 +75,7 @@ class EventFilterWidget;
class CommandMessage;
class EventListViewPrivate;
class SC_GUI_API EventListView : public QWidget {
@ -107,11 +96,20 @@ class SC_GUI_API EventListView : public QWidget {
OPT(float) minLongitude, maxLongitude;
OPT(float) minDepth, maxDepth;
OPT(float) minMagnitude, maxMagnitude;
OPT(int) minPhaseCount, maxPhaseCount;
std::string eventID;
bool isNull() const;
};
struct Region {
QString name;
Geo::GeoBoundingBox bbox;
const Geo::GeoFeature *poly{nullptr};
};
using FilterRegions = QList<Region>;
// ------------------------------------------------------------------
// X'truction
@ -142,8 +140,8 @@ class SC_GUI_API EventListView : public QWidget {
QList<Seiscomp::DataModel::Event*> selectedEvents();
QTreeWidget *eventTree() { return _treeWidget; }
Seiscomp::DataModel::Event *eventFromTreeItem(QTreeWidgetItem *item) const;
QTreeWidget *eventTree();
static Seiscomp::DataModel::Event *eventFromTreeItem(QTreeWidgetItem *item);
int eventCount() const;
@ -236,6 +234,8 @@ class SC_GUI_API EventListView : public QWidget {
void onShowOtherEvents(int checked);
void onShowForeignEvents(int checked);
void onHideOutsideRegion(int checked);
void onHideFinalRejectedEvents(int checked);
void onHideNewEvents(int checked);
void onFilterRegionModeChanged(int mode);
void updateAgencyState();
@ -263,6 +263,8 @@ class SC_GUI_API EventListView : public QWidget {
const QString &script,
int error);
//! \since 17.0.0
void updateOTimeAgo();
protected:
bool eventFilter(QObject *obj, QEvent *event);
@ -291,72 +293,11 @@ class SC_GUI_API EventListView : public QWidget {
void loadItem(QTreeWidgetItem*);
public:
struct ProcessColumn {
int pos;
QString script;
};
struct ItemConfig {
ItemConfig() : createFMLink(false) {}
QColor disabledColor;
bool createFMLink;
QStringList header;
QVector<int> columnMap;
int customColumn;
std::string originCommentID;
std::string eventCommentID;
QString customDefaultText;
QMap<std::string, QColor> customColorMap;
QVector<ProcessColumn> originScriptColumns;
QVector<ProcessColumn> eventScriptColumns;
QSet<int> eventScriptPositions;
QHash<QString, int> originScriptColumnMap;
QHash<QString, int> eventScriptColumnMap;
QSet<int> hiddenEventTypes;
QSet<QString> preferredAgencies;
};
struct Region {
QString name;
Geo::GeoBoundingBox bbox;
const Geo::GeoFeature *poly{nullptr};
};
typedef QList<Region> FilterRegions;
//! \since 17.0.0
void updateOTimeAgoTimer();
private:
::Ui::EventListView *_ui;
Private::EventFilterWidget *_filterWidget;
ItemConfig _itemConfig;
FilterRegions _filterRegions;
QTreeWidget *_treeWidget;
QTreeWidgetItem *_unassociatedEventItem;
QWidget *_commandWaitDialog;
QMovie *_busyIndicator;
QLabel *_busyIndicatorLabel;
//StationMap _associatedStations;
Seiscomp::DataModel::DatabaseQuery *_reader;
Seiscomp::Core::TimeSpan _timeAgo;
Filter _filter;
bool _autoSelect;
bool _withOrigins;
bool _withFocalMechanisms;
bool _updateLocalEPInstance;
//bool _withComments;
bool _blockSelection;
bool _blockRemovingOfExpiredEvents;
bool _blockCountSignal;
bool _hideOtherEvents;
bool _hideForeignEvents;
bool _hideOutsideRegion;
bool _checkEventAgency;
bool _showOnlyLatestPerAgency;
int _regionIndex;
mutable int _visibleEventCount;
EventListViewPrivate *_d_ptr;
};
@ -383,7 +324,7 @@ class SC_GUI_API EventListViewRegionFilterDialog : public QDialog {
// Slots
// ------------------------------------------------------------------
private slots:
void regionSelectionChanged(const QString &);
void regionSelectionChanged(int idx);
void showError(const QString &);

View File

@ -116,7 +116,7 @@ class SC_GUI_API MagRow : public QWidget
class SC_GUI_API MagList : public QWidget
{
Q_OBJECT
public:
MagList(QWidget *parent = 0);
~MagList();
@ -168,6 +168,10 @@ class SC_GUI_API EventSummaryView : public QWidget
QWidget * parent = 0);
~EventSummaryView();
public:
void setCache(DataModel::PublicObjectCache *cache);
void setToolButtonText(const QString&);
void setScript0(const std::string&, bool oldStyle, bool exportMap);
@ -186,6 +190,7 @@ class SC_GUI_API EventSummaryView : public QWidget
void addObject(const QString &parentID, Seiscomp::DataModel::Object *obj);
void updateObject(const QString &parentID, Seiscomp::DataModel::Object *obj);
void removeObject(const QString &parentID, Seiscomp::DataModel::Object *obj);
void setDrawStationAnnotations(bool);
void showEvent(Seiscomp::DataModel::Event* event, Seiscomp::DataModel::Origin* org = nullptr);
//! Shows an origin that maybe does not belong to an event yet
void showOrigin(Seiscomp::DataModel::Origin* origin);
@ -266,22 +271,23 @@ class SC_GUI_API EventSummaryView : public QWidget
private:
Ui::EventSummaryView *_ui;
Ui::Hypocenter *_uiHypocenter;
MagList *_magList;
Ui::EventSummaryView *_ui;
Ui::Hypocenter *_uiHypocenter;
MagList *_magList;
DataModel::PublicObjectCache *_cache{nullptr};
Seiscomp::DataModel::EventPtr _currentEvent;
Seiscomp::DataModel::EventPtr _lastEvent;
Seiscomp::DataModel::OriginPtr _currentOrigin;
Seiscomp::DataModel::OriginPtr _lastAutomaticOrigin;
Seiscomp::DataModel::FocalMechanismPtr _currentFocalMechanism;
Seiscomp::DataModel::FocalMechanismPtr _lastAutomaticFocalMechanism;
Seiscomp::DataModel::MagnitudePtr _currentNetMag;
DataModel::EventPtr _currentEvent;
DataModel::EventPtr _lastEvent;
DataModel::OriginPtr _currentOrigin;
DataModel::OriginPtr _lastAutomaticOrigin;
DataModel::FocalMechanismPtr _currentFocalMechanism;
DataModel::FocalMechanismPtr _lastAutomaticFocalMechanism;
DataModel::MagnitudePtr _currentNetMag;
Seiscomp::Gui::Map::ImageTreePtr _maptree;
Map::ImageTreePtr _maptree;
OriginLocatorMap *_map;
Seiscomp::DataModel::DatabaseQuery* _reader;
DataModel::DatabaseQuery *_reader;
QColor _automaticOriginColor;
QColor _automaticFMColor;
@ -299,7 +305,7 @@ class SC_GUI_API EventSummaryView : public QWidget
bool _enableFullTensor;
int _maxMinutesSecondDisplay;
QTimer* _mapTimer;
QTimer *_mapTimer;
double _maxHotspotDist;
double _minHotspotPopulation;

View File

@ -18,17 +18,22 @@
***************************************************************************/
#ifndef SEISCOMP_GUI_IMPORTPICKS_H
#define SEISCOMP_GUI_IMPORTPICKS_H
#include <QtGui>
#include <seiscomp/gui/datamodel/ui_importpicks.h>
#include <seiscomp/utils/stringfirewall.h>
#include <seiscomp/gui/qt.h>
namespace Seiscomp {
#include <QDialog>
#include <set>
#include <string>
namespace Gui {
namespace Seiscomp::Gui {
class ImportPicksPrivate;
class SC_GUI_API ImportPicksDialog : public QDialog {
@ -42,25 +47,45 @@ class SC_GUI_API ImportPicksDialog : public QDialog {
AllOrigins
};
enum CBSelection {
CBUndefined = -1,
CBNone = 0,
CBImportAllPicks = 1 << 0,
CBImportAllPhases = 1 << 1,
CBPreferTargetPhases = 1 << 2,
};
public:
ImportPicksDialog(QWidget * parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
public:
static void setDefaultAcceptedPhases(QString phases);
static void setDefaultSelection(Selection sel);
static void setDefaultOptions(int options);
void accept() override;
Selection currentSelection() const;
bool importAllPicks() const;
bool importAllPhases() const;
bool preferTargetPhases() const;
Util::StringFirewall allowedPhases() const;
private:
::Ui::ImportPicks _ui;
int currentCBSelection() const;
private:
ImportPicksPrivate *_d_ptr;
static Selection _lastSelection;
static int _lastCBSelection;
static QString _lastPhases;
};
}
}
#endif

View File

@ -26,6 +26,7 @@
#include <seiscomp/gui/map/mapwidget.h>
#ifndef Q_MOC_RUN
#include <seiscomp/datamodel/origin.h>
#include <seiscomp/datamodel/publicobjectcache.h>
#endif
#include <seiscomp/gui/qt.h>
@ -58,6 +59,10 @@ class SC_GUI_API OriginLocatorMap : public MapWidget {
OriginLocatorMap(Map::ImageTree* mapTree,
QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
public:
void setCache(DataModel::PublicObjectCache *cache);
//! Sets the maximum distance for stations to be displayed
//! if they are not part of the origin
void setStationsMaxDist(double);
@ -113,15 +118,16 @@ class SC_GUI_API OriginLocatorMap : public MapWidget {
private:
DataModel::OriginPtr _origin;
OriginSymbol *_originSymbol;
Map::Layer *_symbolLayer;
Map::AnnotationLayer *_annotationLayer;
bool _waveformPropagation{false};
bool _enabledCreateOrigin{false};
QVector<int> _arrivals;
std::map<std::string, int> _stationCodes;
double _stationsMaxDist{-1};
DataModel::PublicObjectCache *_cache{nullptr};
DataModel::OriginPtr _origin;
OriginSymbol *_originSymbol;
Map::Layer *_symbolLayer;
Map::AnnotationLayer *_annotationLayer;
bool _waveformPropagation{false};
bool _enabledCreateOrigin{false};
QVector<int> _arrivals;
std::map<std::string, int> _stationCodes;
double _stationsMaxDist{-1};
};

View File

@ -102,6 +102,7 @@ class SC_GUI_API ArrivalModel : public QAbstractTableModel {
void setRowEnabled(int row, bool enabled);
bool isRowEnabled(int row) const;
void setDistance(int row, const QVariant &val);
void setTakeOffAngle(int row, const QVariant &val);
bool useNoArrivals() const;
@ -126,11 +127,13 @@ class SC_GUI_API ArrivalModel : public QAbstractTableModel {
QVector<int> _used;
QVector<int> _hoverState;
QVector<QVariant> _takeOffs;
QVector<QVariant> _distances;
QVector<bool> _enableState;
QVector<QVariant> _backgroundColors;
QColor _disabledForeground;
QStringList _header;
std::string _pickTimeFormat;
std::string _pickCTimeFormat;
};
@ -211,6 +214,7 @@ class SC_GUI_API OriginLocatorPlot : public DiagramWidget {
class OriginLocatorViewPrivate;
class ProcessManager;
class SC_GUI_API OriginLocatorView : public QWidget {
@ -386,6 +390,7 @@ class SC_GUI_API OriginLocatorView : public QWidget {
void runScript0();
void runScript1();
void commandStart();
void evalResultAvailable(const QString &originID,
const QString &className,
@ -417,7 +422,7 @@ class SC_GUI_API OriginLocatorView : public QWidget {
void updateOrigin(Seiscomp::DataModel::Origin*);
void updateContent();
void addArrival(int idx, DataModel::Arrival* arrival, const Core::Time &, const QColor&);
void addArrival(int idx, const DataModel::Arrival* arrival, const DataModel::Pick* pick, const QColor&);
void readPicks(Seiscomp::DataModel::Origin*);
@ -467,7 +472,6 @@ class SC_GUI_API OriginLocatorView : public QWidget {
void commitWithOptions(const void *options);
private:
OriginLocatorViewPrivate *_d_ptr;
};

View File

@ -137,9 +137,9 @@ class SC_GUI_API PickerRecordLabel : public StandardRecordLabel {
protected:
void visibilityChanged(bool);
void resizeEvent(QResizeEvent *e);
void paintEvent(QPaintEvent *e);
void visibilityChanged(bool) override;
void resizeEvent(QResizeEvent *e) override;
void paintEvent(QPaintEvent *e) override;
public slots:
@ -150,24 +150,28 @@ class SC_GUI_API PickerRecordLabel : public StandardRecordLabel {
private:
bool _isLinkedItem;
bool _isExpanded;
QPushButton *_btnExpand;
RecordViewItem *_linkedItem;
bool _hasLabelColor;
QColor _labelColor;
bool _isLinkedItem;
bool _isExpanded;
QPushButton *_btnExpand;
RecordViewItem *_linkedItem;
bool _hasLabelColor;
QColor _labelColor;
private:
double latitude;
double longitude;
int unit;
QString gainUnit[3];
ThreeComponentTrace data;
Math::Matrix3d orientationZNE;
Math::Matrix3d orientationZRT;
double latitude;
double longitude;
double elevation;
int unit;
QString gainUnit[3];
double gainToSI[3];
ThreeComponentTrace data;
Math::Matrix3d orientationZNE;
Math::Matrix3d orientationZRT;
Math::Matrix3d orientationLQT;
bool hasGotData;
bool isEnabledByConfig;
bool hasGotData;
bool isEnabledByConfig;
const AuxiliaryChannelProfile *auxiliaryProfile{nullptr};
friend class Gui::PickerView;
};
@ -224,6 +228,40 @@ class SC_GUI_API PickerView : public QMainWindow {
typedef QList<QString> StringList;
typedef StringList PhaseList;
MAKEENUM(
RotationType,
EVALUES(
RT_123,
RT_ZNE,
RT_ZRT,
RT_LQT,
RT_ZH
),
ENAMES(
"123",
"ZNE",
"ZRT",
"LQT",
"ZH(L2)"
)
);
MAKEENUM(
UnitType,
EVALUES(
UT_RAW,
UT_ACC,
UT_VEL,
UT_DISP
),
ENAMES(
"Sensor",
"Acceleration",
"Velocity",
"Displacement"
)
);
struct PhaseGroup {
QString name;
QList<PhaseGroup> childs;
@ -238,11 +276,12 @@ class SC_GUI_API PickerView : public QMainWindow {
QString recordURL;
ChannelMap channelMap;
AuxiliaryChannelProfiles auxiliaryChannelProfiles;
FilterList filters;
QString integrationFilter;
bool onlyApplyIntegrationFilterOnce;
bool onlyApplyIntegrationFilterOnce{true};
GroupList phaseGroups;
PhaseList favouritePhases;
@ -252,45 +291,47 @@ class SC_GUI_API PickerView : public QMainWindow {
UncertaintyProfiles uncertaintyProfiles;
QString uncertaintyProfile;
bool showCrossHair;
bool showCrossHair{false};
bool ignoreUnconfiguredStations;
bool ignoreDisabledStations;
bool loadAllComponents;
bool loadAllPicks;
bool loadStrongMotionData;
bool usePerStreamTimeWindows;
bool limitStations;
bool showAllComponents;
bool hideStationsWithoutData;
bool hideDisabledStations;
bool ignoreUnconfiguredStations{false};
bool ignoreDisabledStations{true};
bool loadAllComponents{true};
bool loadAllPicks{true};
bool loadStrongMotionData{false};
bool usePerStreamTimeWindows{false};
bool limitStations{false};
bool showAllComponents{false};
bool hideStationsWithoutData{false};
bool hideDisabledStations{false};
bool showDataInSensorUnit{false};
bool limitFilterToZoomTrace{false};
int limitStationCount;
double allComponentsMaximumStationDistance;
double defaultAddStationsDistance;
RotationType initialRotation{RT_123};
UnitType initialUnit{UT_RAW};
double defaultDepth;
int limitStationCount{10};
double allComponentsMaximumStationDistance{10.0};
double defaultAddStationsDistance{15.0};
bool loadStationsWithinDistanceInitially{false};
bool removeAutomaticStationPicks;
bool removeAutomaticPicks;
double defaultDepth{10.0};
Core::TimeSpan preOffset;
Core::TimeSpan postOffset;
Core::TimeSpan minimumTimeWindow;
bool removeAutomaticStationPicks{false};
bool removeAutomaticPicks{false};
double alignmentPosition;
double offsetWindowStart;
double offsetWindowEnd;
Core::TimeSpan preOffset{60, 0};
Core::TimeSpan postOffset{120, 0};
Core::TimeSpan minimumTimeWindow{1800, 0};
QColor timingQualityLow;
QColor timingQualityMedium;
QColor timingQualityHigh;
double alignmentPosition{0.5};
QColor timingQualityLow{Qt::darkRed};
QColor timingQualityMedium{Qt::yellow};
QColor timingQualityHigh{Qt::darkGreen};
OPT(double) repickerSignalStart;
OPT(double) repickerSignalEnd;
Config();
void addFilter(const QString &f, const QString &n) {
filters.push_back(QPair<QString, QString>(f, n));
}
@ -332,9 +373,6 @@ class SC_GUI_API PickerView : public QMainWindow {
void setBroadBandCodes(const std::vector<std::string> &codes);
void setStrongMotionCodes(const std::vector<std::string> &codes);
void setAuxiliaryChannels(const std::vector<std::string> &patterns,
double minimumDistance, double maximumDistance);
//! Sets an origin an inserts the traces for each arrival
//! in the view.
bool setOrigin(Seiscomp::DataModel::Origin*,
@ -399,12 +437,8 @@ class SC_GUI_API PickerView : public QMainWindow {
void updateRecordValue(Seiscomp::Core::Time);
void showTraceScaleToggled(bool);
void specLogToggled(bool);
void specSmoothToggled(bool);
void specMinValue(double);
void specMaxValue(double);
void specTimeWindow(double);
void specApply();
void specAmplitudesChanged(double, double);
void limitFilterToZoomTrace(bool);
@ -471,7 +505,9 @@ class SC_GUI_API PickerView : public QMainWindow {
void setCurrentRowDisabled(bool);
void loadNextStations();
void loadAuxiliaryStations(QAction *action);
void showUsedStations(bool);
void showAuxiliaryStations(QAction *action);
void moveTraces(double offset);
void move(double offset);
@ -515,18 +551,22 @@ class SC_GUI_API PickerView : public QMainWindow {
void openConnectionInfo(const QPoint &);
void destroyedSpectrumWidget(QObject *);
void ttInterfaceChanged(QString);
void ttTableChanged(QString);
void ttInterfaceChanged(int);
void ttTableChanged(int);
protected:
void showEvent(QShowEvent* event);
void showEvent(QShowEvent* event) override;
void changeEvent(QEvent *e) override;
RecordLabel* createLabel(RecordViewItem*) const;
private:
void applyThemeColors();
void announceAmplitude();
void figureOutTravelTimeTable();
void updateTransformations(PrivatePickerView::PickerRecordLabel *label);
void init();
void initPhases();
@ -571,6 +611,8 @@ class SC_GUI_API PickerView : public QMainWindow {
void updateOriginInformation();
void loadNextStations(float distance);
void loadAuxiliaryStationProfile(const AuxiliaryChannelProfile &profile);
void showAuxiliaryStationProfile(const AuxiliaryChannelProfile &profile);
void setCursorText(const QString&);
void setCursorPos(const Seiscomp::Core::Time&, bool always = false);
@ -588,6 +630,7 @@ class SC_GUI_API PickerView : public QMainWindow {
//! the time range will be left aligned.
void ensureVisibility(double &tmin, double &tmax);
void ensureVisibility(const Seiscomp::Core::Time &time, int pixelMargin);
bool getVisibilityState(RecordViewItem *item);
void updatePhaseMarker(Seiscomp::Gui::RecordWidget*, const Seiscomp::Core::Time&);
void declareArrival(Seiscomp::Gui::RecordMarker *m, const QString &phase, bool);

View File

@ -50,20 +50,22 @@ class SC_GUI_API SelectStation : public QDialog {
explicit SelectStation(Core::Time time, bool ignoreDisabledStations,
const QSet<QString> &blackList,
QWidget* parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
~SelectStation();
QList<DataModel::Station*> selectedStations() const;
void setReferenceLocation(double lat, double lon);
protected:
void keyPressEvent(QKeyEvent *event) override;
private slots:
void listMatchingStations();
// ------------------------------------------------------------------
// Private Interface
// ------------------------------------------------------------------
private slots:
void listMatchingStations(const QString& substr);
private:
void init(Core::Time, bool ignoreDisabledStations,
const QSet<QString> *blackList);

View File

@ -86,7 +86,6 @@ class SC_GUI_API StationSymbol : public Map::Symbol {
protected:
QPolygon generateShape(int posX, int posY, int radius);
const QPolygon &stationPolygon() const;

View File

@ -10,7 +10,6 @@
#define UI_AMPLITUDEVIEW_H
#include <QtCore/QVariant>
#include <QtGui/QIcon>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QFrame>
@ -59,7 +58,7 @@ public:
QAction *actionMaximizeAmplitudes;
QAction *actionComputeMagnitudes;
QAction *actionShowTheoreticalArrivals;
QAction *actionShowAllStations;
QAction *actionAddStationsInDistanceRange;
QAction *actionShowUsedStations;
QAction *actionShowZComponent;
QAction *actionShowNComponent;
@ -136,24 +135,12 @@ public:
AmplitudeView->setIconSize(QSize(16, 16));
actionIncreaseAmplitudeScale = new QAction(AmplitudeView);
actionIncreaseAmplitudeScale->setObjectName(QString::fromUtf8("actionIncreaseAmplitudeScale"));
QIcon icon;
icon.addFile(QString::fromUtf8(":/icons/icons/vzoomin.png"), QSize(), QIcon::Normal, QIcon::Off);
actionIncreaseAmplitudeScale->setIcon(icon);
actionDecreaseAmplitudeScale = new QAction(AmplitudeView);
actionDecreaseAmplitudeScale->setObjectName(QString::fromUtf8("actionDecreaseAmplitudeScale"));
QIcon icon1;
icon1.addFile(QString::fromUtf8(":/icons/icons/vzoomout.png"), QSize(), QIcon::Normal, QIcon::Off);
actionDecreaseAmplitudeScale->setIcon(icon1);
actionTimeScaleUp = new QAction(AmplitudeView);
actionTimeScaleUp->setObjectName(QString::fromUtf8("actionTimeScaleUp"));
QIcon icon2;
icon2.addFile(QString::fromUtf8(":/icons/icons/zoomout.png"), QSize(), QIcon::Normal, QIcon::Off);
actionTimeScaleUp->setIcon(icon2);
actionTimeScaleDown = new QAction(AmplitudeView);
actionTimeScaleDown->setObjectName(QString::fromUtf8("actionTimeScaleDown"));
QIcon icon3;
icon3.addFile(QString::fromUtf8(":/icons/icons/zoomin.png"), QSize(), QIcon::Normal, QIcon::Off);
actionTimeScaleDown->setIcon(icon3);
actionScrollLeft = new QAction(AmplitudeView);
actionScrollLeft->setObjectName(QString::fromUtf8("actionScrollLeft"));
actionScrollRight = new QAction(AmplitudeView);
@ -168,16 +155,12 @@ public:
actionScrollFineRight->setObjectName(QString::fromUtf8("actionScrollFineRight"));
actionIncreaseRowHeight = new QAction(AmplitudeView);
actionIncreaseRowHeight->setObjectName(QString::fromUtf8("actionIncreaseRowHeight"));
actionIncreaseRowHeight->setIcon(icon);
actionDecreaseRowHeight = new QAction(AmplitudeView);
actionDecreaseRowHeight->setObjectName(QString::fromUtf8("actionDecreaseRowHeight"));
actionDecreaseRowHeight->setIcon(icon1);
actionIncreaseRowTimescale = new QAction(AmplitudeView);
actionIncreaseRowTimescale->setObjectName(QString::fromUtf8("actionIncreaseRowTimescale"));
actionIncreaseRowTimescale->setIcon(icon3);
actionDecreaseRowTimescale = new QAction(AmplitudeView);
actionDecreaseRowTimescale->setObjectName(QString::fromUtf8("actionDecreaseRowTimescale"));
actionDecreaseRowTimescale->setIcon(icon2);
actionSelectFirstRow = new QAction(AmplitudeView);
actionSelectFirstRow->setObjectName(QString::fromUtf8("actionSelectFirstRow"));
actionSelectLastRow = new QAction(AmplitudeView);
@ -186,87 +169,48 @@ public:
actionResetDefaultConfig->setObjectName(QString::fromUtf8("actionResetDefaultConfig"));
actionAlignOnPArrival = new QAction(AmplitudeView);
actionAlignOnPArrival->setObjectName(QString::fromUtf8("actionAlignOnPArrival"));
actionAlignOnPArrival->setCheckable(false);
actionAlignOnPArrival->setCheckable(true);
actionAlignOnPArrival->setChecked(false);
QIcon icon4;
icon4.addFile(QString::fromUtf8(":/icons/icons/align_p.png"), QSize(), QIcon::Normal, QIcon::Off);
actionAlignOnPArrival->setIcon(icon4);
actionAlignOnOriginTime = new QAction(AmplitudeView);
actionAlignOnOriginTime->setObjectName(QString::fromUtf8("actionAlignOnOriginTime"));
actionAlignOnOriginTime->setCheckable(false);
QIcon icon5;
icon5.addFile(QString::fromUtf8(":/icons/icons/align_t.png"), QSize(), QIcon::Normal, QIcon::Off);
actionAlignOnOriginTime->setIcon(icon5);
actionAlignOnOriginTime->setCheckable(true);
actionDefaultView = new QAction(AmplitudeView);
actionDefaultView->setObjectName(QString::fromUtf8("actionDefaultView"));
QIcon icon6;
icon6.addFile(QString::fromUtf8(":/icons/icons/home.png"), QSize(), QIcon::Normal, QIcon::Off);
actionDefaultView->setIcon(icon6);
actionSortAlphabetically = new QAction(AmplitudeView);
actionSortAlphabetically->setObjectName(QString::fromUtf8("actionSortAlphabetically"));
actionSortAlphabetically->setCheckable(true);
QIcon icon7;
icon7.addFile(QString::fromUtf8(":/icons/icons/sort_abc.png"), QSize(), QIcon::Normal, QIcon::Off);
actionSortAlphabetically->setIcon(icon7);
actionSortByDistance = new QAction(AmplitudeView);
actionSortByDistance->setObjectName(QString::fromUtf8("actionSortByDistance"));
actionSortByDistance->setCheckable(true);
actionSortByDistance->setChecked(true);
QIcon icon8;
icon8.addFile(QString::fromUtf8(":/icons/icons/sort_dist.png"), QSize(), QIcon::Normal, QIcon::Off);
actionSortByDistance->setIcon(icon8);
actionToggleFilter = new QAction(AmplitudeView);
actionToggleFilter->setObjectName(QString::fromUtf8("actionToggleFilter"));
actionToggleFilter->setCheckable(false);
actionToggleFilter->setChecked(false);
QIcon icon9;
icon9.addFile(QString::fromUtf8(":/icons/icons/filter.png"), QSize(), QIcon::Normal, QIcon::Off);
actionToggleFilter->setIcon(icon9);
actionMaximizeAmplitudes = new QAction(AmplitudeView);
actionMaximizeAmplitudes->setObjectName(QString::fromUtf8("actionMaximizeAmplitudes"));
QIcon icon10;
icon10.addFile(QString::fromUtf8(":/icons/icons/vmax.png"), QSize(), QIcon::Normal, QIcon::Off);
actionMaximizeAmplitudes->setIcon(icon10);
actionComputeMagnitudes = new QAction(AmplitudeView);
actionComputeMagnitudes->setObjectName(QString::fromUtf8("actionComputeMagnitudes"));
QIcon icon11;
icon11.addFile(QString::fromUtf8(":/icons/icons/locate.png"), QSize(), QIcon::Normal, QIcon::Off);
actionComputeMagnitudes->setIcon(icon11);
actionShowTheoreticalArrivals = new QAction(AmplitudeView);
actionShowTheoreticalArrivals->setObjectName(QString::fromUtf8("actionShowTheoreticalArrivals"));
actionShowTheoreticalArrivals->setCheckable(true);
actionShowTheoreticalArrivals->setChecked(true);
actionShowAllStations = new QAction(AmplitudeView);
actionShowAllStations->setObjectName(QString::fromUtf8("actionShowAllStations"));
actionShowAllStations->setCheckable(false);
QIcon icon12;
icon12.addFile(QString::fromUtf8(":/icons/icons/mindistance.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowAllStations->setIcon(icon12);
actionAddStationsInDistanceRange = new QAction(AmplitudeView);
actionAddStationsInDistanceRange->setObjectName(QString::fromUtf8("actionAddStationsInDistanceRange"));
actionAddStationsInDistanceRange->setCheckable(false);
actionShowUsedStations = new QAction(AmplitudeView);
actionShowUsedStations->setObjectName(QString::fromUtf8("actionShowUsedStations"));
actionShowUsedStations->setCheckable(true);
QIcon icon13;
icon13.addFile(QString::fromUtf8(":/icons/icons/withpick.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowUsedStations->setIcon(icon13);
actionShowZComponent = new QAction(AmplitudeView);
actionShowZComponent->setObjectName(QString::fromUtf8("actionShowZComponent"));
actionShowZComponent->setCheckable(true);
actionShowZComponent->setChecked(true);
QIcon icon14;
icon14.addFile(QString::fromUtf8(":/icons/icons/channelZ.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowZComponent->setIcon(icon14);
actionShowNComponent = new QAction(AmplitudeView);
actionShowNComponent->setObjectName(QString::fromUtf8("actionShowNComponent"));
actionShowNComponent->setCheckable(true);
QIcon icon15;
icon15.addFile(QString::fromUtf8(":/icons/icons/channelN.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowNComponent->setIcon(icon15);
actionShowEComponent = new QAction(AmplitudeView);
actionShowEComponent->setObjectName(QString::fromUtf8("actionShowEComponent"));
actionShowEComponent->setCheckable(true);
QIcon icon16;
icon16.addFile(QString::fromUtf8(":/icons/icons/channelE.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowEComponent->setIcon(icon16);
actionGotoNextMarker = new QAction(AmplitudeView);
actionGotoNextMarker->setObjectName(QString::fromUtf8("actionGotoNextMarker"));
actionGotoPreviousMarker = new QAction(AmplitudeView);
@ -299,24 +243,14 @@ public:
actionDisablePicking->setObjectName(QString::fromUtf8("actionDisablePicking"));
actionRecalculateAmplitudes = new QAction(AmplitudeView);
actionRecalculateAmplitudes->setObjectName(QString::fromUtf8("actionRecalculateAmplitudes"));
QIcon icon17;
icon17.addFile(QString::fromUtf8(":/icons/icons/ok.png"), QSize(), QIcon::Normal, QIcon::Off);
actionRecalculateAmplitudes->setIcon(icon17);
actionPickAmplitude = new QAction(AmplitudeView);
actionPickAmplitude->setObjectName(QString::fromUtf8("actionPickAmplitude"));
QIcon icon18;
icon18.addFile(QString::fromUtf8(":/icons/icons/pick_p.png"), QSize(), QIcon::Normal, QIcon::Off);
actionPickAmplitude->setIcon(icon18);
actionRecalculateAmplitude = new QAction(AmplitudeView);
actionRecalculateAmplitude->setObjectName(QString::fromUtf8("actionRecalculateAmplitude"));
QIcon icon19;
icon19.addFile(QString::fromUtf8(":/icons/icons/ok_single.png"), QSize(), QIcon::Normal, QIcon::Off);
actionRecalculateAmplitude->setIcon(icon19);
actionSetAmplitude = new QAction(AmplitudeView);
actionSetAmplitude->setObjectName(QString::fromUtf8("actionSetAmplitude"));
actionResetScale = new QAction(AmplitudeView);
actionResetScale->setObjectName(QString::fromUtf8("actionResetScale"));
actionResetScale->setIcon(icon6);
centralwidget = new QWidget(AmplitudeView);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
vboxLayout = new QVBoxLayout(centralwidget);
@ -462,7 +396,6 @@ public:
btnRowAccept->setSizePolicy(sizePolicy5);
btnRowAccept->setMinimumSize(QSize(32, 32));
btnRowAccept->setMaximumSize(QSize(32, 32));
btnRowAccept->setIcon(icon17);
btnRowAccept->setIconSize(QSize(24, 24));
btnRowAccept->setCheckable(true);
btnRowAccept->setFlat(false);
@ -475,9 +408,6 @@ public:
btnRowRemove->setSizePolicy(sizePolicy5);
btnRowRemove->setMinimumSize(QSize(32, 32));
btnRowRemove->setMaximumSize(QSize(32, 32));
QIcon icon20;
icon20.addFile(QString::fromUtf8(":/icons/icons/remove.png"), QSize(), QIcon::Normal, QIcon::Off);
btnRowRemove->setIcon(icon20);
btnRowRemove->setIconSize(QSize(24, 24));
btnRowRemove->setCheckable(true);
@ -489,9 +419,6 @@ public:
btnRowReset->setSizePolicy(sizePolicy5);
btnRowReset->setMinimumSize(QSize(32, 32));
btnRowReset->setMaximumSize(QSize(32, 32));
QIcon icon21;
icon21.addFile(QString::fromUtf8(":/icons/icons/erase.png"), QSize(), QIcon::Normal, QIcon::Off);
btnRowReset->setIcon(icon21);
btnRowReset->setIconSize(QSize(24, 24));
hboxLayout3->addWidget(btnRowReset);
@ -605,23 +532,21 @@ public:
toolBarComputeMagnitudes->setIconSize(QSize(24, 24));
AmplitudeView->addToolBar(Qt::TopToolBarArea, toolBarComputeMagnitudes);
toolBarScale->addAction(actionDefaultView);
toolBarScale->addSeparator();
toolBarScale->addAction(actionIncreaseRowHeight);
toolBarScale->addAction(actionDecreaseRowHeight);
toolBarScale->addSeparator();
toolBarScale->addAction(actionIncreaseRowTimescale);
toolBarScale->addAction(actionDecreaseRowTimescale);
toolBarScale->addSeparator();
toolBarScale->addAction(actionIncreaseRowHeight);
toolBarScale->addAction(actionDecreaseRowHeight);
toolBarScale->addAction(actionMaximizeAmplitudes);
toolBarScale->addSeparator();
toolBarScale->addAction(actionDefaultView);
toolBarSort->addAction(actionSortByDistance);
toolBarSort->addAction(actionSortAlphabetically);
toolBarAlign->addAction(actionAlignOnPArrival);
toolBarAlign->addAction(actionAlignOnOriginTime);
toolBarAlign->addAction(actionAlignOnPArrival);
toolBarComponent->addAction(actionShowZComponent);
toolBarComponent->addAction(actionShowNComponent);
toolBarComponent->addAction(actionShowEComponent);
toolBarStations->addAction(actionShowAllStations);
toolBarStations->addAction(actionAddStationsInDistanceRange);
toolBarStations->addAction(actionShowUsedStations);
toolBarPicking->addAction(actionPickAmplitude);
menuBar->addAction(menuView->menuAction());
@ -636,10 +561,10 @@ public:
menuView->addAction(menuZoomtrace->menuAction());
menuView->addAction(menuTraces->menuAction());
menuView->addAction(menuComponents->menuAction());
menuZoomtrace->addAction(actionIncreaseAmplitudeScale);
menuZoomtrace->addAction(actionDecreaseAmplitudeScale);
menuZoomtrace->addAction(actionTimeScaleUp);
menuZoomtrace->addAction(actionTimeScaleDown);
menuZoomtrace->addAction(actionIncreaseAmplitudeScale);
menuZoomtrace->addAction(actionDecreaseAmplitudeScale);
menuZoomtrace->addAction(actionResetScale);
menuZoomtrace->addSeparator();
menuZoomtrace->addAction(actionClipComponentsToViewport);
@ -652,8 +577,8 @@ public:
menuTraces->addAction(actionResetDefaultConfig);
menuTraces->addSeparator();
menuTraces->addAction(menuAlignArrival->menuAction());
menuAlignArrival->addAction(actionAlignOnPArrival);
menuAlignArrival->addAction(actionAlignOnOriginTime);
menuAlignArrival->addAction(actionAlignOnPArrival);
menuComponents->addAction(actionShowZComponent);
menuComponents->addAction(actionShowNComponent);
menuComponents->addAction(actionShowEComponent);
@ -669,7 +594,6 @@ public:
toolBarFilter->addAction(actionToggleFilter);
toolBarSetup->addAction(actionRecalculateAmplitude);
toolBarSetup->addAction(actionRecalculateAmplitudes);
toolBarComputeMagnitudes->addAction(actionComputeMagnitudes);
retranslateUi(AmplitudeView);
@ -680,7 +604,6 @@ public:
{
AmplitudeView->setWindowTitle(QCoreApplication::translate("AmplitudeView", "Amplitude picker", nullptr));
actionIncreaseAmplitudeScale->setText(QCoreApplication::translate("AmplitudeView", "Scale amplitudes up", nullptr));
actionIncreaseAmplitudeScale->setIconText(QCoreApplication::translate("AmplitudeView", "Scale amplitudes up", nullptr));
#if QT_CONFIG(tooltip)
actionIncreaseAmplitudeScale->setToolTip(QCoreApplication::translate("AmplitudeView", "Increase amplitude scale of current trace", nullptr));
#endif // QT_CONFIG(tooltip)
@ -688,7 +611,6 @@ public:
actionIncreaseAmplitudeScale->setShortcut(QCoreApplication::translate("AmplitudeView", "Ctrl+Up", nullptr));
#endif // QT_CONFIG(shortcut)
actionDecreaseAmplitudeScale->setText(QCoreApplication::translate("AmplitudeView", "Scale amplitudes down", nullptr));
actionDecreaseAmplitudeScale->setIconText(QCoreApplication::translate("AmplitudeView", "Scale amplitudes down", nullptr));
#if QT_CONFIG(tooltip)
actionDecreaseAmplitudeScale->setToolTip(QCoreApplication::translate("AmplitudeView", "Descrease amplitude scale of current trace", nullptr));
#endif // QT_CONFIG(tooltip)
@ -703,7 +625,6 @@ public:
actionTimeScaleUp->setShortcut(QCoreApplication::translate("AmplitudeView", "Ctrl+Right", nullptr));
#endif // QT_CONFIG(shortcut)
actionTimeScaleDown->setText(QCoreApplication::translate("AmplitudeView", "Decrease visible timespan", nullptr));
actionTimeScaleDown->setIconText(QCoreApplication::translate("AmplitudeView", "Decrease visible timespan", nullptr));
#if QT_CONFIG(tooltip)
actionTimeScaleDown->setToolTip(QCoreApplication::translate("AmplitudeView", "Decrease visible timespan", nullptr));
#endif // QT_CONFIG(tooltip)
@ -725,17 +646,14 @@ public:
actionScrollRight->setShortcut(QCoreApplication::translate("AmplitudeView", "Shift+Right", nullptr));
#endif // QT_CONFIG(shortcut)
actionSelectNextTrace->setText(QCoreApplication::translate("AmplitudeView", "Next trace", nullptr));
actionSelectNextTrace->setIconText(QCoreApplication::translate("AmplitudeView", "Next trace", nullptr));
#if QT_CONFIG(shortcut)
actionSelectNextTrace->setShortcut(QCoreApplication::translate("AmplitudeView", "Down", nullptr));
#endif // QT_CONFIG(shortcut)
actionSelectPreviousTrace->setText(QCoreApplication::translate("AmplitudeView", "Previous trace", nullptr));
actionSelectPreviousTrace->setIconText(QCoreApplication::translate("AmplitudeView", "Previous trace", nullptr));
#if QT_CONFIG(shortcut)
actionSelectPreviousTrace->setShortcut(QCoreApplication::translate("AmplitudeView", "Up", nullptr));
#endif // QT_CONFIG(shortcut)
actionScrollFineLeft->setText(QCoreApplication::translate("AmplitudeView", "Scroll fine left", nullptr));
actionScrollFineLeft->setIconText(QCoreApplication::translate("AmplitudeView", "Scroll fine left", nullptr));
#if QT_CONFIG(tooltip)
actionScrollFineLeft->setToolTip(QCoreApplication::translate("AmplitudeView", "Scroll current trace left with finer steps", nullptr));
#endif // QT_CONFIG(tooltip)
@ -743,7 +661,6 @@ public:
actionScrollFineLeft->setShortcut(QCoreApplication::translate("AmplitudeView", "Left", nullptr));
#endif // QT_CONFIG(shortcut)
actionScrollFineRight->setText(QCoreApplication::translate("AmplitudeView", "Scroll fine right", nullptr));
actionScrollFineRight->setIconText(QCoreApplication::translate("AmplitudeView", "Scroll fine right", nullptr));
#if QT_CONFIG(tooltip)
actionScrollFineRight->setToolTip(QCoreApplication::translate("AmplitudeView", "Scroll current trace right with finer steps", nullptr));
#endif // QT_CONFIG(tooltip)
@ -791,7 +708,6 @@ public:
actionResetDefaultConfig->setShortcut(QCoreApplication::translate("AmplitudeView", "Shift+W", nullptr));
#endif // QT_CONFIG(shortcut)
actionAlignOnPArrival->setText(QCoreApplication::translate("AmplitudeView", "Align on trigger time", nullptr));
actionAlignOnPArrival->setIconText(QCoreApplication::translate("AmplitudeView", "Align on trigger time", nullptr));
#if QT_CONFIG(tooltip)
actionAlignOnPArrival->setToolTip(QCoreApplication::translate("AmplitudeView", "Align on trigger time", nullptr));
#endif // QT_CONFIG(tooltip)
@ -799,7 +715,6 @@ public:
actionAlignOnPArrival->setShortcut(QCoreApplication::translate("AmplitudeView", "Ctrl+1", nullptr));
#endif // QT_CONFIG(shortcut)
actionAlignOnOriginTime->setText(QCoreApplication::translate("AmplitudeView", "Align on origin time", nullptr));
actionAlignOnOriginTime->setIconText(QCoreApplication::translate("AmplitudeView", "Align on origin time", nullptr));
#if QT_CONFIG(tooltip)
actionAlignOnOriginTime->setToolTip(QCoreApplication::translate("AmplitudeView", "Align on origin time (Ctrl+0)", nullptr));
#endif // QT_CONFIG(tooltip)
@ -814,7 +729,6 @@ public:
actionDefaultView->setShortcut(QCoreApplication::translate("AmplitudeView", "Shift+N", nullptr));
#endif // QT_CONFIG(shortcut)
actionSortAlphabetically->setText(QCoreApplication::translate("AmplitudeView", "Sort by names", nullptr));
actionSortAlphabetically->setIconText(QCoreApplication::translate("AmplitudeView", "Sort by names", nullptr));
#if QT_CONFIG(tooltip)
actionSortAlphabetically->setToolTip(QCoreApplication::translate("AmplitudeView", "Sorts the traces by name (Alt+A)", nullptr));
#endif // QT_CONFIG(tooltip)
@ -836,15 +750,13 @@ public:
actionToggleFilter->setShortcut(QCoreApplication::translate("AmplitudeView", "F", nullptr));
#endif // QT_CONFIG(shortcut)
actionMaximizeAmplitudes->setText(QCoreApplication::translate("AmplitudeView", "Maximize visible amplitudes", nullptr));
actionMaximizeAmplitudes->setIconText(QCoreApplication::translate("AmplitudeView", "Maximize visible amplitudes", nullptr));
#if QT_CONFIG(tooltip)
actionMaximizeAmplitudes->setToolTip(QCoreApplication::translate("AmplitudeView", "Maximize visible amplitudes (S)", nullptr));
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(shortcut)
actionMaximizeAmplitudes->setShortcut(QCoreApplication::translate("AmplitudeView", "S", nullptr));
#endif // QT_CONFIG(shortcut)
actionComputeMagnitudes->setText(QCoreApplication::translate("AmplitudeView", "&Apply", nullptr));
actionComputeMagnitudes->setIconText(QCoreApplication::translate("AmplitudeView", "Apply", nullptr));
actionComputeMagnitudes->setText(QCoreApplication::translate("AmplitudeView", "&Apply all", nullptr));
#if QT_CONFIG(tooltip)
actionComputeMagnitudes->setToolTip(QCoreApplication::translate("AmplitudeView", "Compute the magnitude and update it in the origin.", nullptr));
#endif // QT_CONFIG(tooltip)
@ -855,25 +767,21 @@ public:
actionComputeMagnitudes->setShortcut(QCoreApplication::translate("AmplitudeView", "F5", nullptr));
#endif // QT_CONFIG(shortcut)
actionShowTheoreticalArrivals->setText(QCoreApplication::translate("AmplitudeView", "Show theoretical arrivals", nullptr));
actionShowTheoreticalArrivals->setIconText(QCoreApplication::translate("AmplitudeView", "Show theoretical arrivals", nullptr));
#if QT_CONFIG(tooltip)
actionShowTheoreticalArrivals->setToolTip(QCoreApplication::translate("AmplitudeView", "Shows theoretical arrivals as blue bars in the traces", nullptr));
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(shortcut)
actionShowTheoreticalArrivals->setShortcut(QCoreApplication::translate("AmplitudeView", "Ctrl+T", nullptr));
#endif // QT_CONFIG(shortcut)
actionShowAllStations->setText(QCoreApplication::translate("AmplitudeView", "Add stations in range", nullptr));
actionShowAllStations->setIconText(QCoreApplication::translate("AmplitudeView", "Add stations in range", nullptr));
actionAddStationsInDistanceRange->setText(QCoreApplication::translate("AmplitudeView", "Add stations in range", nullptr));
#if QT_CONFIG(tooltip)
actionShowAllStations->setToolTip(QCoreApplication::translate("AmplitudeView", "Adds all stations next to the origin with distance lower or equal than the entered value that haven't triggered. When view mode is \"used stations only\" you won't see the new stations until leaving this mode.", nullptr));
actionAddStationsInDistanceRange->setToolTip(QCoreApplication::translate("AmplitudeView", "Adds all stations next to the origin with distance lower or equal than the entered value that haven't triggered. When view mode is \"used stations only\" you won't see the new stations until leaving this mode.", nullptr));
#endif // QT_CONFIG(tooltip)
actionShowUsedStations->setText(QCoreApplication::translate("AmplitudeView", "&Show used stations only", nullptr));
actionShowUsedStations->setIconText(QCoreApplication::translate("AmplitudeView", "Used stations only", nullptr));
#if QT_CONFIG(tooltip)
actionShowUsedStations->setToolTip(QCoreApplication::translate("AmplitudeView", "Toggles between hiding unpicked and deactivated stations and showing all stations", nullptr));
#endif // QT_CONFIG(tooltip)
actionShowZComponent->setText(QCoreApplication::translate("AmplitudeView", "Vertical", nullptr));
actionShowZComponent->setIconText(QCoreApplication::translate("AmplitudeView", "Vertical", nullptr));
#if QT_CONFIG(tooltip)
actionShowZComponent->setToolTip(QCoreApplication::translate("AmplitudeView", "Show Vertical Component (Z)", nullptr));
#endif // QT_CONFIG(tooltip)
@ -881,7 +789,6 @@ public:
actionShowZComponent->setShortcut(QCoreApplication::translate("AmplitudeView", "Z", nullptr));
#endif // QT_CONFIG(shortcut)
actionShowNComponent->setText(QCoreApplication::translate("AmplitudeView", "North", nullptr));
actionShowNComponent->setIconText(QCoreApplication::translate("AmplitudeView", "North", nullptr));
#if QT_CONFIG(tooltip)
actionShowNComponent->setToolTip(QCoreApplication::translate("AmplitudeView", "Show North Component (N)", nullptr));
#endif // QT_CONFIG(tooltip)
@ -889,7 +796,6 @@ public:
actionShowNComponent->setShortcut(QCoreApplication::translate("AmplitudeView", "N", nullptr));
#endif // QT_CONFIG(shortcut)
actionShowEComponent->setText(QCoreApplication::translate("AmplitudeView", "East", nullptr));
actionShowEComponent->setIconText(QCoreApplication::translate("AmplitudeView", "East", nullptr));
#if QT_CONFIG(tooltip)
actionShowEComponent->setToolTip(QCoreApplication::translate("AmplitudeView", "Show East Component (E)", nullptr));
#endif // QT_CONFIG(tooltip)
@ -897,7 +803,6 @@ public:
actionShowEComponent->setShortcut(QCoreApplication::translate("AmplitudeView", "E", nullptr));
#endif // QT_CONFIG(shortcut)
actionGotoNextMarker->setText(QCoreApplication::translate("AmplitudeView", "Goto next marker", nullptr));
actionGotoNextMarker->setIconText(QCoreApplication::translate("AmplitudeView", "Goto next marker", nullptr));
#if QT_CONFIG(tooltip)
actionGotoNextMarker->setToolTip(QCoreApplication::translate("AmplitudeView", "Goto next marker", nullptr));
#endif // QT_CONFIG(tooltip)
@ -905,7 +810,6 @@ public:
actionGotoNextMarker->setShortcut(QCoreApplication::translate("AmplitudeView", "Alt+Right", nullptr));
#endif // QT_CONFIG(shortcut)
actionGotoPreviousMarker->setText(QCoreApplication::translate("AmplitudeView", "Goto previous marker", nullptr));
actionGotoPreviousMarker->setIconText(QCoreApplication::translate("AmplitudeView", "Goto previous marker", nullptr));
#if QT_CONFIG(tooltip)
actionGotoPreviousMarker->setToolTip(QCoreApplication::translate("AmplitudeView", "Goto previous marker", nullptr));
#endif // QT_CONFIG(tooltip)
@ -913,7 +817,6 @@ public:
actionGotoPreviousMarker->setShortcut(QCoreApplication::translate("AmplitudeView", "Alt+Left", nullptr));
#endif // QT_CONFIG(shortcut)
actionSwitchFullscreen->setText(QCoreApplication::translate("AmplitudeView", "Toggle fullscreen", nullptr));
actionSwitchFullscreen->setIconText(QCoreApplication::translate("AmplitudeView", "Toggle fullscreen", nullptr));
#if QT_CONFIG(tooltip)
actionSwitchFullscreen->setToolTip(QCoreApplication::translate("AmplitudeView", "Toggle fullscreen", nullptr));
#endif // QT_CONFIG(tooltip)
@ -938,13 +841,12 @@ public:
#if QT_CONFIG(shortcut)
actionLimitFilterToZoomTrace->setShortcut(QCoreApplication::translate("AmplitudeView", "Shift+F", nullptr));
#endif // QT_CONFIG(shortcut)
actionShowTraceValuesInNmS->setText(QCoreApplication::translate("AmplitudeView", "Show trace values in nm/s", nullptr));
actionShowTraceValuesInNmS->setText(QCoreApplication::translate("AmplitudeView", "Show trace values in nano units", nullptr));
actionClipComponentsToViewport->setText(QCoreApplication::translate("AmplitudeView", "Clip components to viewport", nullptr));
#if QT_CONFIG(shortcut)
actionClipComponentsToViewport->setShortcut(QCoreApplication::translate("AmplitudeView", "C", nullptr));
#endif // QT_CONFIG(shortcut)
actionCreateAmplitude->setText(QCoreApplication::translate("AmplitudeView", "Create amplitude", nullptr));
actionCreateAmplitude->setIconText(QCoreApplication::translate("AmplitudeView", "Create amplitude", nullptr));
#if QT_CONFIG(tooltip)
actionCreateAmplitude->setToolTip(QCoreApplication::translate("AmplitudeView", "Create amplitude", nullptr));
#endif // QT_CONFIG(tooltip)
@ -952,7 +854,6 @@ public:
actionCreateAmplitude->setShortcut(QCoreApplication::translate("AmplitudeView", "Enter", nullptr));
#endif // QT_CONFIG(shortcut)
actionConfirmAmplitude->setText(QCoreApplication::translate("AmplitudeView", "Confirm amplitude", nullptr));
actionConfirmAmplitude->setIconText(QCoreApplication::translate("AmplitudeView", "Confirm amplitude", nullptr));
#if QT_CONFIG(tooltip)
actionConfirmAmplitude->setToolTip(QCoreApplication::translate("AmplitudeView", "Confirm amplitude", nullptr));
#endif // QT_CONFIG(tooltip)
@ -960,7 +861,6 @@ public:
actionConfirmAmplitude->setShortcut(QCoreApplication::translate("AmplitudeView", "Shift+Return", nullptr));
#endif // QT_CONFIG(shortcut)
actionDeleteAmplitude->setText(QCoreApplication::translate("AmplitudeView", "Delete amplitude", nullptr));
actionDeleteAmplitude->setIconText(QCoreApplication::translate("AmplitudeView", "Delete amplitude", nullptr));
#if QT_CONFIG(tooltip)
actionDeleteAmplitude->setToolTip(QCoreApplication::translate("AmplitudeView", "Delete amplitude (Del)", nullptr));
#endif // QT_CONFIG(tooltip)
@ -968,7 +868,6 @@ public:
actionDeleteAmplitude->setShortcut(QCoreApplication::translate("AmplitudeView", "Del", nullptr));
#endif // QT_CONFIG(shortcut)
actionDisablePicking->setText(QCoreApplication::translate("AmplitudeView", "Leave picking mode", nullptr));
actionDisablePicking->setIconText(QCoreApplication::translate("AmplitudeView", "Leave picking mode", nullptr));
#if QT_CONFIG(tooltip)
actionDisablePicking->setToolTip(QCoreApplication::translate("AmplitudeView", "Leave picking mode (Esc)", nullptr));
#endif // QT_CONFIG(tooltip)
@ -976,15 +875,13 @@ public:
actionDisablePicking->setShortcut(QCoreApplication::translate("AmplitudeView", "Esc", nullptr));
#endif // QT_CONFIG(shortcut)
actionRecalculateAmplitudes->setText(QCoreApplication::translate("AmplitudeView", "Remeasure all amplitudes", nullptr));
actionRecalculateAmplitudes->setIconText(QCoreApplication::translate("AmplitudeView", "Remeasure all amplitudes", nullptr));
#if QT_CONFIG(tooltip)
actionRecalculateAmplitudes->setToolTip(QCoreApplication::translate("AmplitudeView", "Remeasure all amplitudes", nullptr));
actionRecalculateAmplitudes->setToolTip(QCoreApplication::translate("AmplitudeView", "Remeasure all amplitudes (Shift+R)", nullptr));
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(shortcut)
actionRecalculateAmplitudes->setShortcut(QCoreApplication::translate("AmplitudeView", "Shift+R", nullptr));
#endif // QT_CONFIG(shortcut)
actionPickAmplitude->setText(QCoreApplication::translate("AmplitudeView", "Pick amplitudes", nullptr));
actionPickAmplitude->setIconText(QCoreApplication::translate("AmplitudeView", "Pick amplitudes", nullptr));
#if QT_CONFIG(tooltip)
actionPickAmplitude->setToolTip(QCoreApplication::translate("AmplitudeView", "Drag time window for measuring amplitudes", nullptr));
#endif // QT_CONFIG(tooltip)
@ -992,9 +889,8 @@ public:
actionPickAmplitude->setShortcut(QCoreApplication::translate("AmplitudeView", "1", nullptr));
#endif // QT_CONFIG(shortcut)
actionRecalculateAmplitude->setText(QCoreApplication::translate("AmplitudeView", "Remeasure amplitude of selected waveform", nullptr));
actionRecalculateAmplitude->setIconText(QCoreApplication::translate("AmplitudeView", "Remeasure amplitude of selected waveform", nullptr));
#if QT_CONFIG(tooltip)
actionRecalculateAmplitude->setToolTip(QCoreApplication::translate("AmplitudeView", "Remeasure amplitude of selected waveform", nullptr));
actionRecalculateAmplitude->setToolTip(QCoreApplication::translate("AmplitudeView", "Remeasure amplitude of selected waveform (R)", nullptr));
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(shortcut)
actionRecalculateAmplitude->setShortcut(QCoreApplication::translate("AmplitudeView", "R", nullptr));

View File

@ -171,7 +171,7 @@ public:
{
if (EventEdit->objectName().isEmpty())
EventEdit->setObjectName(QString::fromUtf8("EventEdit"));
EventEdit->resize(835, 795);
EventEdit->resize(1415, 1094);
hboxLayout = new QHBoxLayout(EventEdit);
hboxLayout->setSpacing(0);
hboxLayout->setContentsMargins(0, 0, 0, 0);
@ -226,6 +226,9 @@ public:
hboxLayout1->addWidget(frameMap);
treeMagnitudes = new QTreeWidget(originWidget);
QTreeWidgetItem *__qtreewidgetitem = new QTreeWidgetItem();
__qtreewidgetitem->setText(0, QString::fromUtf8("1"));
treeMagnitudes->setHeaderItem(__qtreewidgetitem);
treeMagnitudes->setObjectName(QString::fromUtf8("treeMagnitudes"));
QSizePolicy sizePolicy2(QSizePolicy::Preferred, QSizePolicy::Expanding);
sizePolicy2.setHorizontalStretch(0);
@ -261,9 +264,7 @@ public:
#ifndef Q_OS_MAC
gridLayout1->setSpacing(6);
#endif
#ifndef Q_OS_MAC
gridLayout1->setContentsMargins(9, 9, 9, 9);
#endif
gridLayout1->setContentsMargins(0, 0, 0, 0);
gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
comboTypes = new QComboBox(frameInformation);
comboTypes->setObjectName(QString::fromUtf8("comboTypes"));
@ -272,7 +273,6 @@ public:
sizePolicy4.setVerticalStretch(0);
sizePolicy4.setHeightForWidth(comboTypes->sizePolicy().hasHeightForWidth());
comboTypes->setSizePolicy(sizePolicy4);
comboTypes->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
comboTypes->setMinimumContentsLength(9);
gridLayout1->addWidget(comboTypes, 2, 1, 1, 3);
@ -479,9 +479,7 @@ public:
#ifndef Q_OS_MAC
gridLayout2->setSpacing(6);
#endif
#ifndef Q_OS_MAC
gridLayout2->setContentsMargins(9, 9, 9, 9);
#endif
gridLayout2->setContentsMargins(0, 0, 0, 0);
gridLayout2->setObjectName(QString::fromUtf8("gridLayout2"));
buttonReleaseMagnitudeType = new QPushButton(frameInformationM);
buttonReleaseMagnitudeType->setObjectName(QString::fromUtf8("buttonReleaseMagnitudeType"));
@ -599,6 +597,9 @@ public:
#endif
hboxLayout2->setObjectName(QString::fromUtf8("hboxLayout2"));
fmTree = new QTreeWidget(fmTop);
QTreeWidgetItem *__qtreewidgetitem1 = new QTreeWidgetItem();
__qtreewidgetitem1->setText(0, QString::fromUtf8("1"));
fmTree->setHeaderItem(__qtreewidgetitem1);
fmTree->setObjectName(QString::fromUtf8("fmTree"));
sizePolicy.setHeightForWidth(fmTree->sizePolicy().hasHeightForWidth());
fmTree->setSizePolicy(sizePolicy);
@ -619,9 +620,7 @@ public:
#ifndef Q_OS_MAC
gridLayout3->setSpacing(6);
#endif
#ifndef Q_OS_MAC
gridLayout3->setContentsMargins(9, 9, 9, 9);
#endif
gridLayout3->setContentsMargins(0, 0, 0, 0);
gridLayout3->setObjectName(QString::fromUtf8("gridLayout3"));
fmDist = new QLabel(fmInfo);
fmDist->setObjectName(QString::fromUtf8("fmDist"));
@ -1046,6 +1045,9 @@ public:
retranslateUi(EventEdit);
tabWidget->setCurrentIndex(0);
QMetaObject::connectSlotsByName(EventEdit);
} // setupUi
@ -1115,7 +1117,7 @@ public:
fmNP2L->setText(QCoreApplication::translate("EventEdit", "NP2:", nullptr));
fmMethodL->setText(QCoreApplication::translate("EventEdit", "Method:", nullptr));
fmCountL->setText(QCoreApplication::translate("EventEdit", "Count:", nullptr));
fmFixButton->setText(QCoreApplication::translate("EventEdit", "Fix FM", nullptr));
fmFixButton->setText(QCoreApplication::translate("EventEdit", "Fix", nullptr));
#if QT_CONFIG(tooltip)
fmGap->setToolTip(QCoreApplication::translate("EventEdit", "Azimuthal Gap", nullptr));
#endif // QT_CONFIG(tooltip)
@ -1141,7 +1143,7 @@ public:
fmMethod->setToolTip(QCoreApplication::translate("EventEdit", "Method ID", nullptr));
#endif // QT_CONFIG(tooltip)
fmMethod->setText(QString());
fmAutoButton->setText(QCoreApplication::translate("EventEdit", "Automatic FM selection", nullptr));
fmAutoButton->setText(QCoreApplication::translate("EventEdit", "Unfix focal mechanism", nullptr));
#if QT_CONFIG(tooltip)
fmMisfit->setToolTip(QCoreApplication::translate("EventEdit", "Misfit", nullptr));
#endif // QT_CONFIG(tooltip)

View File

@ -27,32 +27,38 @@ class Ui_EventFilter
public:
QVBoxLayout *vboxLayout;
QGridLayout *gridLayout;
Seiscomp::Gui::OptionalDoubleSpinBox *toLatitude;
QFrame *frame;
QLineEdit *editEventID;
Seiscomp::Gui::OptionalDoubleSpinBox *fromLatitude;
QLabel *label_11;
QLabel *label_14;
Seiscomp::Gui::OptionalDoubleSpinBox *fromMagnitude;
QLabel *label_4;
QFrame *frame_3;
QFrame *frame_4;
Seiscomp::Gui::OptionalDoubleSpinBox *fromLongitude;
QLabel *label_15;
Seiscomp::Gui::OptionalDoubleSpinBox *toLongitude;
Seiscomp::Gui::OptionalDoubleSpinBox *fromDepth;
QFrame *frame_2;
QLabel *label;
Seiscomp::Gui::OptionalDoubleSpinBox *toDepth;
QLabel *label_5;
QFrame *frame_3;
QLabel *label_14;
QLabel *label_11;
QLabel *label_8;
QLabel *label_10;
QLabel *label_6;
QLabel *label_12;
QLabel *label_9;
Seiscomp::Gui::OptionalDoubleSpinBox *fromLatitude;
QLabel *label_6;
QLabel *label_7;
QLabel *label_8;
Seiscomp::Gui::OptionalDoubleSpinBox *fromDepth;
QLabel *label_4;
Seiscomp::Gui::OptionalDoubleSpinBox *toMagnitude;
Seiscomp::Gui::OptionalDoubleSpinBox *fromLongitude;
QFrame *frame;
QLabel *label_2;
QLabel *label_5;
QFrame *frame_2;
QLabel *label_10;
Seiscomp::Gui::OptionalDoubleSpinBox *toDepth;
Seiscomp::Gui::OptionalDoubleSpinBox *toLatitude;
QLabel *label_7;
QLabel *label;
QLabel *label_13;
QFrame *frame_4;
QLineEdit *editEventID;
QFrame *frame_6;
QLabel *label_3;
QLabel *label_16;
Seiscomp::Gui::OptionalDoubleSpinBox *fromPhase;
Seiscomp::Gui::OptionalDoubleSpinBox *toPhase;
QFrame *frame_5;
QToolButton *btnReset;
@ -62,29 +68,136 @@ public:
EventFilter->setObjectName(QString::fromUtf8("EventFilter"));
EventFilter->resize(407, 419);
vboxLayout = new QVBoxLayout(EventFilter);
#ifndef Q_OS_MAC
vboxLayout->setSpacing(6);
#endif
#ifndef Q_OS_MAC
vboxLayout->setContentsMargins(9, 9, 9, 9);
#endif
vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
vboxLayout->setContentsMargins(9, 9, 9, 9);
gridLayout = new QGridLayout();
#ifndef Q_OS_MAC
gridLayout->setSpacing(6);
#endif
#ifndef Q_OS_MAC
gridLayout->setContentsMargins(0, 0, 0, 0);
#endif
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
toLatitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toLatitude->setObjectName(QString::fromUtf8("toLatitude"));
toLatitude->setDecimals(4);
toLatitude->setMaximum(90.000000000000000);
toLatitude->setMinimum(-90.000000000000000);
toLatitude->setValue(-90.000000000000000);
gridLayout->setContentsMargins(0, 0, 0, 0);
editEventID = new QLineEdit(EventFilter);
editEventID->setObjectName(QString::fromUtf8("editEventID"));
gridLayout->addWidget(toLatitude, 3, 3, 1, 1);
gridLayout->addWidget(editEventID, 0, 1, 1, 3);
fromLatitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromLatitude->setObjectName(QString::fromUtf8("fromLatitude"));
fromLatitude->setDecimals(4);
fromLatitude->setMinimum(-90.000000000000000);
fromLatitude->setMaximum(90.000000000000000);
fromLatitude->setValue(-90.000000000000000);
gridLayout->addWidget(fromLatitude, 3, 1, 1, 1);
label_11 = new QLabel(EventFilter);
label_11->setObjectName(QString::fromUtf8("label_11"));
label_11->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_11, 9, 0, 1, 1);
label_14 = new QLabel(EventFilter);
label_14->setObjectName(QString::fromUtf8("label_14"));
label_14->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_14, 15, 0, 1, 1);
fromMagnitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromMagnitude->setObjectName(QString::fromUtf8("fromMagnitude"));
fromMagnitude->setDecimals(1);
fromMagnitude->setMinimum(-10.000000000000000);
fromMagnitude->setMaximum(20.000000000000000);
fromMagnitude->setSingleStep(0.500000000000000);
fromMagnitude->setValue(-10.000000000000000);
gridLayout->addWidget(fromMagnitude, 15, 1, 1, 1);
frame_3 = new QFrame(EventFilter);
frame_3->setObjectName(QString::fromUtf8("frame_3"));
frame_3->setFrameShape(QFrame::HLine);
frame_3->setFrameShadow(QFrame::Sunken);
gridLayout->addWidget(frame_3, 10, 0, 1, 4);
frame_4 = new QFrame(EventFilter);
frame_4->setObjectName(QString::fromUtf8("frame_4"));
frame_4->setFrameShape(QFrame::HLine);
frame_4->setFrameShadow(QFrame::Sunken);
gridLayout->addWidget(frame_4, 1, 0, 1, 4);
fromLongitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromLongitude->setObjectName(QString::fromUtf8("fromLongitude"));
fromLongitude->setDecimals(4);
fromLongitude->setMinimum(-180.000000000000000);
fromLongitude->setMaximum(180.000000000000000);
fromLongitude->setValue(-180.000000000000000);
gridLayout->addWidget(fromLongitude, 6, 1, 1, 1);
label_15 = new QLabel(EventFilter);
label_15->setObjectName(QString::fromUtf8("label_15"));
gridLayout->addWidget(label_15, 15, 2, 1, 1);
toLongitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toLongitude->setObjectName(QString::fromUtf8("toLongitude"));
toLongitude->setDecimals(4);
toLongitude->setMinimum(-180.000000000000000);
toLongitude->setMaximum(180.000000000000000);
toLongitude->setValue(-180.000000000000000);
gridLayout->addWidget(toLongitude, 6, 3, 1, 1);
label_6 = new QLabel(EventFilter);
label_6->setObjectName(QString::fromUtf8("label_6"));
QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(label_6->sizePolicy().hasHeightForWidth());
label_6->setSizePolicy(sizePolicy);
gridLayout->addWidget(label_6, 3, 2, 1, 1);
label_12 = new QLabel(EventFilter);
label_12->setObjectName(QString::fromUtf8("label_12"));
gridLayout->addWidget(label_12, 9, 2, 1, 1);
label_9 = new QLabel(EventFilter);
label_9->setObjectName(QString::fromUtf8("label_9"));
gridLayout->addWidget(label_9, 6, 2, 1, 1);
label_8 = new QLabel(EventFilter);
label_8->setObjectName(QString::fromUtf8("label_8"));
label_8->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_8, 6, 0, 1, 1);
fromDepth = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromDepth->setObjectName(QString::fromUtf8("fromDepth"));
fromDepth->setMinimum(-999.000000000000000);
fromDepth->setMaximum(999.000000000000000);
fromDepth->setValue(-999.000000000000000);
gridLayout->addWidget(fromDepth, 9, 1, 1, 1);
label_4 = new QLabel(EventFilter);
label_4->setObjectName(QString::fromUtf8("label_4"));
sizePolicy.setHeightForWidth(label_4->sizePolicy().hasHeightForWidth());
label_4->setSizePolicy(sizePolicy);
gridLayout->addWidget(label_4, 0, 0, 1, 1);
toMagnitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toMagnitude->setObjectName(QString::fromUtf8("toMagnitude"));
toMagnitude->setDecimals(1);
toMagnitude->setMinimum(-10.000000000000000);
toMagnitude->setMaximum(20.000000000000000);
toMagnitude->setSingleStep(0.500000000000000);
toMagnitude->setValue(-10.000000000000000);
gridLayout->addWidget(toMagnitude, 15, 3, 1, 1);
frame = new QFrame(EventFilter);
frame->setObjectName(QString::fromUtf8("frame"));
@ -93,67 +206,10 @@ public:
gridLayout->addWidget(frame, 4, 0, 1, 4);
fromMagnitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromMagnitude->setObjectName(QString::fromUtf8("fromMagnitude"));
fromMagnitude->setDecimals(1);
fromMagnitude->setMaximum(20.000000000000000);
fromMagnitude->setMinimum(-10.000000000000000);
fromMagnitude->setSingleStep(0.500000000000000);
fromMagnitude->setValue(-10.000000000000000);
label_2 = new QLabel(EventFilter);
label_2->setObjectName(QString::fromUtf8("label_2"));
gridLayout->addWidget(fromMagnitude, 12, 1, 1, 1);
label_4 = new QLabel(EventFilter);
label_4->setObjectName(QString::fromUtf8("label_4"));
QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(label_4->sizePolicy().hasHeightForWidth());
label_4->setSizePolicy(sizePolicy);
gridLayout->addWidget(label_4, 0, 0, 1, 1);
label_15 = new QLabel(EventFilter);
label_15->setObjectName(QString::fromUtf8("label_15"));
gridLayout->addWidget(label_15, 12, 2, 1, 1);
toLongitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toLongitude->setObjectName(QString::fromUtf8("toLongitude"));
toLongitude->setDecimals(4);
toLongitude->setMaximum(180.000000000000000);
toLongitude->setMinimum(-180.000000000000000);
toLongitude->setValue(-180.000000000000000);
gridLayout->addWidget(toLongitude, 6, 3, 1, 1);
fromDepth = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromDepth->setObjectName(QString::fromUtf8("fromDepth"));
fromDepth->setMaximum(999.000000000000000);
fromDepth->setMinimum(-999.000000000000000);
fromDepth->setValue(-999.000000000000000);
gridLayout->addWidget(fromDepth, 9, 1, 1, 1);
frame_2 = new QFrame(EventFilter);
frame_2->setObjectName(QString::fromUtf8("frame_2"));
frame_2->setFrameShape(QFrame::HLine);
frame_2->setFrameShadow(QFrame::Sunken);
gridLayout->addWidget(frame_2, 7, 0, 1, 4);
label = new QLabel(EventFilter);
label->setObjectName(QString::fromUtf8("label"));
gridLayout->addWidget(label, 2, 0, 1, 4);
toDepth = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toDepth->setObjectName(QString::fromUtf8("toDepth"));
toDepth->setMaximum(999.000000000000000);
toDepth->setMinimum(-999.000000000000000);
toDepth->setValue(-999.000000000000000);
gridLayout->addWidget(toDepth, 9, 3, 1, 1);
gridLayout->addWidget(label_2, 11, 0, 1, 4);
label_5 = new QLabel(EventFilter);
label_5->setObjectName(QString::fromUtf8("label_5"));
@ -166,102 +222,88 @@ public:
gridLayout->addWidget(label_5, 3, 0, 1, 1);
frame_3 = new QFrame(EventFilter);
frame_3->setObjectName(QString::fromUtf8("frame_3"));
frame_3->setFrameShape(QFrame::HLine);
frame_3->setFrameShadow(QFrame::Sunken);
frame_2 = new QFrame(EventFilter);
frame_2->setObjectName(QString::fromUtf8("frame_2"));
frame_2->setFrameShape(QFrame::HLine);
frame_2->setFrameShadow(QFrame::Sunken);
gridLayout->addWidget(frame_3, 10, 0, 1, 4);
label_14 = new QLabel(EventFilter);
label_14->setObjectName(QString::fromUtf8("label_14"));
label_14->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_14, 12, 0, 1, 1);
label_11 = new QLabel(EventFilter);
label_11->setObjectName(QString::fromUtf8("label_11"));
label_11->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_11, 9, 0, 1, 1);
label_8 = new QLabel(EventFilter);
label_8->setObjectName(QString::fromUtf8("label_8"));
label_8->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_8, 6, 0, 1, 1);
gridLayout->addWidget(frame_2, 7, 0, 1, 4);
label_10 = new QLabel(EventFilter);
label_10->setObjectName(QString::fromUtf8("label_10"));
gridLayout->addWidget(label_10, 8, 0, 1, 4);
label_12 = new QLabel(EventFilter);
label_12->setObjectName(QString::fromUtf8("label_12"));
toDepth = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toDepth->setObjectName(QString::fromUtf8("toDepth"));
toDepth->setMinimum(-999.000000000000000);
toDepth->setMaximum(999.000000000000000);
toDepth->setValue(-999.000000000000000);
gridLayout->addWidget(label_12, 9, 2, 1, 1);
gridLayout->addWidget(toDepth, 9, 3, 1, 1);
label_9 = new QLabel(EventFilter);
label_9->setObjectName(QString::fromUtf8("label_9"));
toLatitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toLatitude->setObjectName(QString::fromUtf8("toLatitude"));
toLatitude->setDecimals(4);
toLatitude->setMinimum(-90.000000000000000);
toLatitude->setMaximum(90.000000000000000);
toLatitude->setValue(-90.000000000000000);
gridLayout->addWidget(label_9, 6, 2, 1, 1);
fromLatitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromLatitude->setObjectName(QString::fromUtf8("fromLatitude"));
fromLatitude->setDecimals(4);
fromLatitude->setMaximum(90.000000000000000);
fromLatitude->setMinimum(-90.000000000000000);
fromLatitude->setValue(-90.000000000000000);
gridLayout->addWidget(fromLatitude, 3, 1, 1, 1);
label_6 = new QLabel(EventFilter);
label_6->setObjectName(QString::fromUtf8("label_6"));
sizePolicy.setHeightForWidth(label_6->sizePolicy().hasHeightForWidth());
label_6->setSizePolicy(sizePolicy);
gridLayout->addWidget(label_6, 3, 2, 1, 1);
gridLayout->addWidget(toLatitude, 3, 3, 1, 1);
label_7 = new QLabel(EventFilter);
label_7->setObjectName(QString::fromUtf8("label_7"));
gridLayout->addWidget(label_7, 5, 0, 1, 4);
toMagnitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toMagnitude->setObjectName(QString::fromUtf8("toMagnitude"));
toMagnitude->setDecimals(1);
toMagnitude->setMaximum(20.000000000000000);
toMagnitude->setMinimum(-10.000000000000000);
toMagnitude->setSingleStep(0.500000000000000);
toMagnitude->setValue(-10.000000000000000);
label = new QLabel(EventFilter);
label->setObjectName(QString::fromUtf8("label"));
gridLayout->addWidget(toMagnitude, 12, 3, 1, 1);
fromLongitude = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromLongitude->setObjectName(QString::fromUtf8("fromLongitude"));
fromLongitude->setDecimals(4);
fromLongitude->setMaximum(180.000000000000000);
fromLongitude->setMinimum(-180.000000000000000);
fromLongitude->setValue(-180.000000000000000);
gridLayout->addWidget(fromLongitude, 6, 1, 1, 1);
gridLayout->addWidget(label, 2, 0, 1, 4);
label_13 = new QLabel(EventFilter);
label_13->setObjectName(QString::fromUtf8("label_13"));
gridLayout->addWidget(label_13, 11, 0, 1, 4);
gridLayout->addWidget(label_13, 14, 0, 1, 4);
frame_4 = new QFrame(EventFilter);
frame_4->setObjectName(QString::fromUtf8("frame_4"));
frame_4->setFrameShape(QFrame::HLine);
frame_4->setFrameShadow(QFrame::Sunken);
frame_6 = new QFrame(EventFilter);
frame_6->setObjectName(QString::fromUtf8("frame_6"));
QSizePolicy sizePolicy2(QSizePolicy::Minimum, QSizePolicy::Fixed);
sizePolicy2.setHorizontalStretch(0);
sizePolicy2.setVerticalStretch(0);
sizePolicy2.setHeightForWidth(frame_6->sizePolicy().hasHeightForWidth());
frame_6->setSizePolicy(sizePolicy2);
frame_6->setFrameShape(QFrame::HLine);
frame_6->setFrameShadow(QFrame::Sunken);
gridLayout->addWidget(frame_4, 1, 0, 1, 4);
gridLayout->addWidget(frame_6, 13, 0, 1, 4);
editEventID = new QLineEdit(EventFilter);
editEventID->setObjectName(QString::fromUtf8("editEventID"));
label_3 = new QLabel(EventFilter);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(editEventID, 0, 1, 1, 3);
gridLayout->addWidget(label_3, 12, 0, 1, 1);
label_16 = new QLabel(EventFilter);
label_16->setObjectName(QString::fromUtf8("label_16"));
gridLayout->addWidget(label_16, 12, 2, 1, 1);
fromPhase = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
fromPhase->setObjectName(QString::fromUtf8("fromPhase"));
fromPhase->setDecimals(0);
fromPhase->setMinimum(1.000000000000000);
fromPhase->setMaximum(999.000000000000000);
gridLayout->addWidget(fromPhase, 12, 1, 1, 1);
toPhase = new Seiscomp::Gui::OptionalDoubleSpinBox(EventFilter);
toPhase->setObjectName(QString::fromUtf8("toPhase"));
toPhase->setDecimals(0);
toPhase->setMinimum(1.000000000000000);
toPhase->setMaximum(999.000000000000000);
gridLayout->addWidget(toPhase, 12, 3, 1, 1);
vboxLayout->addLayout(gridLayout);
@ -294,36 +336,41 @@ public:
void retranslateUi(QWidget *EventFilter)
{
EventFilter->setWindowTitle(QCoreApplication::translate("EventFilter", "Filter Settings", nullptr));
toLatitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
toLatitude->setSuffix(QCoreApplication::translate("EventFilter", "\302\260", nullptr));
fromMagnitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
label_4->setText(QCoreApplication::translate("EventFilter", "Event ID", nullptr));
label_15->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
toLongitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
toLongitude->setSuffix(QCoreApplication::translate("EventFilter", "\302\260", nullptr));
fromDepth->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
fromDepth->setSuffix(QCoreApplication::translate("EventFilter", "km", nullptr));
label->setText(QCoreApplication::translate("EventFilter", "Latitude range", nullptr));
toDepth->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
toDepth->setSuffix(QCoreApplication::translate("EventFilter", "km", nullptr));
label_5->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
label_14->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
label_11->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
label_8->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
label_10->setText(QCoreApplication::translate("EventFilter", "Depth range", nullptr));
label_12->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
label_9->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
fromLatitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
fromLatitude->setSuffix(QCoreApplication::translate("EventFilter", "\302\260", nullptr));
label_6->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
label_7->setText(QCoreApplication::translate("EventFilter", "Longitude range", nullptr));
toMagnitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
fromLongitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
fromLongitude->setSuffix(QCoreApplication::translate("EventFilter", "\302\260", nullptr));
label_13->setText(QCoreApplication::translate("EventFilter", "Magnitude range", nullptr));
#if QT_CONFIG(tooltip)
editEventID->setToolTip(QCoreApplication::translate("EventFilter", "EventID filter which allows wildcards (* and ?)", nullptr));
#endif // QT_CONFIG(tooltip)
fromLatitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
fromLatitude->setSuffix(QCoreApplication::translate("EventFilter", "\302\260", nullptr));
label_11->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
label_14->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
fromMagnitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
fromLongitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
fromLongitude->setSuffix(QCoreApplication::translate("EventFilter", "\302\260", nullptr));
label_15->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
toLongitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
toLongitude->setSuffix(QCoreApplication::translate("EventFilter", "\302\260", nullptr));
label_6->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
label_12->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
label_9->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
label_8->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
fromDepth->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
fromDepth->setSuffix(QCoreApplication::translate("EventFilter", "km", nullptr));
label_4->setText(QCoreApplication::translate("EventFilter", "Event ID", nullptr));
toMagnitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
label_2->setText(QCoreApplication::translate("EventFilter", "Phase count range", nullptr));
label_5->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
label_10->setText(QCoreApplication::translate("EventFilter", "Depth range", nullptr));
toDepth->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
toDepth->setSuffix(QCoreApplication::translate("EventFilter", "km", nullptr));
toLatitude->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
toLatitude->setSuffix(QCoreApplication::translate("EventFilter", "\302\260", nullptr));
label_7->setText(QCoreApplication::translate("EventFilter", "Longitude range", nullptr));
label->setText(QCoreApplication::translate("EventFilter", "Latitude range", nullptr));
label_13->setText(QCoreApplication::translate("EventFilter", "Magnitude range", nullptr));
label_3->setText(QCoreApplication::translate("EventFilter", "from", nullptr));
label_16->setText(QCoreApplication::translate("EventFilter", "to", nullptr));
fromPhase->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
toPhase->setSpecialValueText(QCoreApplication::translate("EventFilter", "Unset", nullptr));
btnReset->setText(QCoreApplication::translate("EventFilter", "Reset all", nullptr));
} // retranslateUi

View File

@ -10,7 +10,6 @@
#define UI_EVENTLISTVIEW_H
#include <QtCore/QVariant>
#include <QtGui/QIcon>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>
@ -65,6 +64,10 @@ public:
QComboBox *lstFilterRegions;
QToolButton *btnChangeRegion;
QLabel *lbFilterRegions;
QSpacerItem *spacer;
QCheckBox *cbHideFinalRejected;
QSpacerItem *spacer_2;
QCheckBox *cbHideNew;
QSpacerItem *spacerItem5;
void setupUi(QWidget *EventListView)
@ -75,11 +78,9 @@ public:
actionCopyRowToClipboard = new QAction(EventListView);
actionCopyRowToClipboard->setObjectName(QString::fromUtf8("actionCopyRowToClipboard"));
vboxLayout = new QVBoxLayout(EventListView);
#ifndef Q_OS_MAC
vboxLayout->setSpacing(6);
#endif
vboxLayout->setContentsMargins(0, 0, 0, 0);
vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
vboxLayout->setContentsMargins(0, 0, 0, 0);
frameList = new QFrame(EventListView);
frameList->setObjectName(QString::fromUtf8("frameList"));
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
@ -96,19 +97,13 @@ public:
frameControls->setObjectName(QString::fromUtf8("frameControls"));
frameControls->setFrameShadow(QFrame::Plain);
vboxLayout1 = new QVBoxLayout(frameControls);
#ifndef Q_OS_MAC
vboxLayout1->setSpacing(6);
#endif
vboxLayout1->setContentsMargins(0, 0, 0, 0);
vboxLayout1->setObjectName(QString::fromUtf8("vboxLayout1"));
vboxLayout1->setContentsMargins(0, 0, 0, 0);
hboxLayout = new QHBoxLayout();
#ifndef Q_OS_MAC
hboxLayout->setSpacing(6);
#endif
#ifndef Q_OS_MAC
hboxLayout->setContentsMargins(0, 0, 0, 0);
#endif
hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
hboxLayout->setContentsMargins(0, 0, 0, 0);
btnClear = new QToolButton(frameControls);
btnClear->setObjectName(QString::fromUtf8("btnClear"));
btnClear->setEnabled(false);
@ -122,10 +117,6 @@ public:
btnFilter = new QToolButton(frameControls);
btnFilter->setObjectName(QString::fromUtf8("btnFilter"));
sizePolicy1.setHeightForWidth(btnFilter->sizePolicy().hasHeightForWidth());
btnFilter->setSizePolicy(sizePolicy1);
const QIcon icon = QIcon(QString::fromUtf8(":/icons/icons/filter2.png"));
btnFilter->setIcon(icon);
hboxLayout->addWidget(btnFilter);
@ -224,11 +215,9 @@ public:
vboxLayout->addWidget(frame);
hboxLayout1 = new QHBoxLayout();
#ifndef Q_OS_MAC
hboxLayout1->setSpacing(6);
#endif
hboxLayout1->setContentsMargins(0, 0, 0, 0);
hboxLayout1->setObjectName(QString::fromUtf8("hboxLayout1"));
hboxLayout1->setContentsMargins(0, 0, 0, 0);
cbHideOther = new QCheckBox(EventListView);
cbHideOther->setObjectName(QString::fromUtf8("cbHideOther"));
cbHideOther->setChecked(true);
@ -262,21 +251,17 @@ public:
vboxLayout->addLayout(hboxLayout1);
hboxLayout2 = new QHBoxLayout();
#ifndef Q_OS_MAC
hboxLayout2->setSpacing(6);
#endif
hboxLayout2->setContentsMargins(0, 0, 0, 0);
hboxLayout2->setObjectName(QString::fromUtf8("hboxLayout2"));
hboxLayout2->setContentsMargins(0, 0, 0, 0);
frameRegionFilter = new QFrame(EventListView);
frameRegionFilter->setObjectName(QString::fromUtf8("frameRegionFilter"));
frameRegionFilter->setFrameShape(QFrame::NoFrame);
frameRegionFilter->setFrameShadow(QFrame::Raised);
hboxLayout3 = new QHBoxLayout(frameRegionFilter);
#ifndef Q_OS_MAC
hboxLayout3->setSpacing(6);
#endif
hboxLayout3->setContentsMargins(0, 0, 0, 0);
hboxLayout3->setObjectName(QString::fromUtf8("hboxLayout3"));
hboxLayout3->setContentsMargins(0, 0, 0, 0);
cbFilterRegions = new QCheckBox(frameRegionFilter);
cbFilterRegions->setObjectName(QString::fromUtf8("cbFilterRegions"));
@ -307,6 +292,24 @@ public:
hboxLayout2->addWidget(frameRegionFilter);
spacer = new QSpacerItem(8, 23, QSizePolicy::Minimum, QSizePolicy::Minimum);
hboxLayout2->addItem(spacer);
cbHideFinalRejected = new QCheckBox(EventListView);
cbHideFinalRejected->setObjectName(QString::fromUtf8("cbHideFinalRejected"));
hboxLayout2->addWidget(cbHideFinalRejected);
spacer_2 = new QSpacerItem(16, 23, QSizePolicy::Minimum, QSizePolicy::Minimum);
hboxLayout2->addItem(spacer_2);
cbHideNew = new QCheckBox(EventListView);
cbHideNew->setObjectName(QString::fromUtf8("cbHideNew"));
hboxLayout2->addWidget(cbHideNew);
spacerItem5 = new QSpacerItem(351, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
hboxLayout2->addItem(spacerItem5);
@ -366,6 +369,14 @@ public:
btnChangeRegion->setText(QCoreApplication::translate("EventListView", "...", nullptr));
lbFilterRegions->setText(QCoreApplication::translate("EventListView", "region", nullptr));
#if QT_CONFIG(tooltip)
cbHideFinalRejected->setToolTip(QCoreApplication::translate("EventListView", "Hides/shows final and rejected events", nullptr));
#endif // QT_CONFIG(tooltip)
cbHideFinalRejected->setText(QCoreApplication::translate("EventListView", "Hide F/X events", nullptr));
#if QT_CONFIG(tooltip)
cbHideNew->setToolTip(QCoreApplication::translate("EventListView", "Hides/shows events with OT later than given end time", nullptr));
#endif // QT_CONFIG(tooltip)
cbHideNew->setText(QCoreApplication::translate("EventListView", "Hide new events", nullptr));
} // retranslateUi
};

View File

@ -15,6 +15,7 @@
#include <QtWidgets/QDialog>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QRadioButton>
#include <QtWidgets/QSpacerItem>
@ -47,6 +48,9 @@ public:
QCheckBox *checkAllAgencies;
QCheckBox *checkAllPhases;
QCheckBox *checkPreferTargetPhases;
QHBoxLayout *horizontalLayout;
QLabel *label_6;
QLineEdit *lineEditAcceptedPhases;
QHBoxLayout *hboxLayout4;
QSpacerItem *spacerItem5;
QPushButton *okButton;
@ -56,7 +60,7 @@ public:
{
if (ImportPicks->objectName().isEmpty())
ImportPicks->setObjectName(QString::fromUtf8("ImportPicks"));
ImportPicks->resize(415, 499);
ImportPicks->resize(630, 735);
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
@ -194,6 +198,21 @@ public:
vboxLayout->addWidget(checkPreferTargetPhases);
horizontalLayout = new QHBoxLayout();
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
label_6 = new QLabel(ImportPicks);
label_6->setObjectName(QString::fromUtf8("label_6"));
horizontalLayout->addWidget(label_6);
lineEditAcceptedPhases = new QLineEdit(ImportPicks);
lineEditAcceptedPhases->setObjectName(QString::fromUtf8("lineEditAcceptedPhases"));
horizontalLayout->addWidget(lineEditAcceptedPhases);
vboxLayout->addLayout(horizontalLayout);
hboxLayout4 = new QHBoxLayout();
#ifndef Q_OS_MAC
hboxLayout4->setSpacing(6);
@ -240,6 +259,10 @@ public:
checkAllAgencies->setText(QCoreApplication::translate("ImportPicks", "Import picks from all agencies instead of using only own picks.", nullptr));
checkAllPhases->setText(QCoreApplication::translate("ImportPicks", "Import all phases and do not map only to P and S.", nullptr));
checkPreferTargetPhases->setText(QCoreApplication::translate("ImportPicks", "Prefer phases of target in case of duplicates.", nullptr));
label_6->setText(QCoreApplication::translate("ImportPicks", "Accepted phases:", nullptr));
#if QT_CONFIG(tooltip)
lineEditAcceptedPhases->setToolTip(QCoreApplication::translate("ImportPicks", "Sets an array of accepted phases separated by comma. If left empty then all phases are accepted.", nullptr));
#endif // QT_CONFIG(tooltip)
okButton->setText(QCoreApplication::translate("ImportPicks", "OK", nullptr));
cancelButton->setText(QCoreApplication::translate("ImportPicks", "Cancel", nullptr));
} // retranslateUi

View File

@ -10,7 +10,6 @@
#define UI_ORIGINLOCATORVIEW_H
#include <QtCore/QVariant>
#include <QtGui/QIcon>
#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QComboBox>
@ -689,8 +688,7 @@ public:
btnLocatorSettings = new QToolButton(frameLocator);
btnLocatorSettings->setObjectName(QString::fromUtf8("btnLocatorSettings"));
btnLocatorSettings->setEnabled(false);
const QIcon icon = QIcon(QString::fromUtf8(":/icons/icons/configure.png"));
btnLocatorSettings->setIcon(icon);
btnLocatorSettings->setIconSize(QSize(24, 24));
btnLocatorSettings->setAutoRaise(true);
hboxLayout4->addWidget(btnLocatorSettings);
@ -814,9 +812,6 @@ public:
buttonEditComment = new QToolButton(frame);
buttonEditComment->setObjectName(QString::fromUtf8("buttonEditComment"));
buttonEditComment->setEnabled(false);
buttonEditComment->setMaximumSize(QSize(25, 25));
const QIcon icon1 = QIcon(QString::fromUtf8(":/icons/icons/comment.png"));
buttonEditComment->setIcon(icon1);
buttonEditComment->setIconSize(QSize(24, 24));
buttonEditComment->setAutoRaise(true);
@ -938,12 +933,14 @@ public:
label_5->setText(QCoreApplication::translate("OriginLocatorView", "Filter is", nullptr));
labelPlotFilter->setText(QCoreApplication::translate("OriginLocatorView", "<a href=\"filter\">not active</a>", nullptr));
btnRelocate->setText(QCoreApplication::translate("OriginLocatorView", "Relocate", nullptr));
#if QT_CONFIG(shortcut)
btnRelocate->setShortcut(QCoreApplication::translate("OriginLocatorView", "R", nullptr));
#endif // QT_CONFIG(shortcut)
btnCustom0->setText(QCoreApplication::translate("OriginLocatorView", "Custom1", nullptr));
btnCustom1->setText(QCoreApplication::translate("OriginLocatorView", "Custom2", nullptr));
#if QT_CONFIG(tooltip)
btnLocatorSettings->setToolTip(QCoreApplication::translate("OriginLocatorView", "Change locator settings", nullptr));
#endif // QT_CONFIG(tooltip)
btnLocatorSettings->setText(QCoreApplication::translate("OriginLocatorView", "...", nullptr));
label_2->setText(QCoreApplication::translate("OriginLocatorView", "Profile:", nullptr));
cbFixedDepth->setText(QCoreApplication::translate("OriginLocatorView", "Fix depth", nullptr));
label_3->setText(QCoreApplication::translate("OriginLocatorView", "km", nullptr));
@ -959,10 +956,15 @@ public:
#if QT_CONFIG(tooltip)
buttonEditComment->setToolTip(QCoreApplication::translate("OriginLocatorView", "Create a new comment on this event or edit an existing one.", nullptr));
#endif // QT_CONFIG(tooltip)
buttonEditComment->setText(QString());
btnShowWaveforms->setText(QCoreApplication::translate("OriginLocatorView", "Picker", nullptr));
#if QT_CONFIG(shortcut)
btnShowWaveforms->setShortcut(QCoreApplication::translate("OriginLocatorView", "P", nullptr));
#endif // QT_CONFIG(shortcut)
btnImportAllArrivals->setText(QCoreApplication::translate("OriginLocatorView", "Import picks", nullptr));
btnMagnitudes->setText(QCoreApplication::translate("OriginLocatorView", "Compute magnitudes", nullptr));
#if QT_CONFIG(shortcut)
btnMagnitudes->setShortcut(QCoreApplication::translate("OriginLocatorView", "M", nullptr));
#endif // QT_CONFIG(shortcut)
btnCommit->setText(QCoreApplication::translate("OriginLocatorView", "Commit", nullptr));
} // retranslateUi

View File

@ -79,7 +79,6 @@ public:
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(labelHeadline->sizePolicy().hasHeightForWidth());
labelHeadline->setSizePolicy(sizePolicy);
labelHeadline->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/comment.png")));
labelHeadline->setScaledContents(false);
vboxLayout1->addWidget(labelHeadline);

View File

@ -35,7 +35,6 @@ public:
QVBoxLayout *vboxLayout1;
QHBoxLayout *hboxLayout;
QCheckBox *cbFixSolution;
QCheckBox *cbFixMagnitudeType;
QGridLayout *gridLayout;
QLabel *label_21;
QLabel *label_2;
@ -107,12 +106,6 @@ public:
vboxLayout1->addLayout(hboxLayout);
cbFixMagnitudeType = new QCheckBox(frameEventOptions);
cbFixMagnitudeType->setObjectName(QString::fromUtf8("cbFixMagnitudeType"));
cbFixMagnitudeType->setChecked(true);
vboxLayout1->addWidget(cbFixMagnitudeType);
gridLayout = new QGridLayout();
#ifndef Q_OS_MAC
gridLayout->setSpacing(6);
@ -276,7 +269,6 @@ public:
cbFixSolution->setToolTip(QCoreApplication::translate("OriginCommitOptions", "If checked this origin will be fixed as preferred solution.", nullptr));
#endif // QT_CONFIG(tooltip)
cbFixSolution->setText(QCoreApplication::translate("OriginCommitOptions", "Fix this origin as preferred location.", nullptr));
cbFixMagnitudeType->setText(QCoreApplication::translate("OriginCommitOptions", "Fix event preferred magnitude type %1", nullptr));
label_21->setText(QCoreApplication::translate("OriginCommitOptions", "Set origin status to", nullptr));
label_2->setText(QCoreApplication::translate("OriginCommitOptions", "Set event type to", nullptr));
label_3->setText(QCoreApplication::translate("OriginCommitOptions", "Set event certainty to", nullptr));

View File

@ -10,7 +10,6 @@
#define UI_PICKERSETTINGS_H
#include <QtCore/QVariant>
#include <QtGui/QIcon>
#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QComboBox>
@ -30,6 +29,7 @@
#include <QtWidgets/QTableView>
#include <QtWidgets/QTimeEdit>
#include <QtWidgets/QToolBox>
#include <QtWidgets/QToolButton>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
@ -71,6 +71,7 @@ public:
QWidget *pagePickSettings;
QVBoxLayout *vboxLayout2;
QCheckBox *cbShowCrossHair;
QCheckBox *cbShowSensorUnits;
QHBoxLayout *hboxLayout4;
QLabel *labelPickUncertainties;
QComboBox *listPickUncertainties;
@ -133,11 +134,11 @@ public:
QHBoxLayout *hboxLayout13;
QTableView *tableFilter;
QVBoxLayout *vboxLayout6;
QPushButton *btnAddPickFilter;
QPushButton *btnRemovePickFilter;
QToolButton *btnAddPickFilter;
QToolButton *btnRemovePickFilter;
QSpacerItem *spacerItem10;
QPushButton *btnMovePickFilterUp;
QPushButton *btnMovePickFilterDown;
QToolButton *btnMovePickFilterUp;
QToolButton *btnMovePickFilterDown;
QGroupBox *groupBox;
QGridLayout *gridLayout;
QLabel *label_15;
@ -161,11 +162,11 @@ public:
QHBoxLayout *hboxLayout16;
QTableView *tableAFilter;
QVBoxLayout *vboxLayout8;
QPushButton *btnAddAmplitudeFilter;
QPushButton *btnRemoveAmplitudeFilter;
QToolButton *btnAddAmplitudeFilter;
QToolButton *btnRemoveAmplitudeFilter;
QSpacerItem *spacerItem14;
QPushButton *btnMoveAmplitudeFilterUp;
QPushButton *btnMoveAmplitudeFilterDown;
QToolButton *btnMoveAmplitudeFilterUp;
QToolButton *btnMoveAmplitudeFilterDown;
QHBoxLayout *hboxLayout17;
QPushButton *saveButton;
QSpacerItem *spacerItem15;
@ -176,7 +177,7 @@ public:
{
if (PickerSettings->objectName().isEmpty())
PickerSettings->setObjectName(QString::fromUtf8("PickerSettings"));
PickerSettings->resize(571, 771);
PickerSettings->resize(749, 973);
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
@ -194,7 +195,7 @@ public:
toolBox->setObjectName(QString::fromUtf8("toolBox"));
pageLocator = new QWidget();
pageLocator->setObjectName(QString::fromUtf8("pageLocator"));
pageLocator->setGeometry(QRect(0, 0, 553, 543));
pageLocator->setGeometry(QRect(0, 0, 731, 699));
pageLocator->setAutoFillBackground(true);
vboxLayout1 = new QVBoxLayout(pageLocator);
#ifndef Q_OS_MAC
@ -361,7 +362,7 @@ public:
toolBox->addItem(pageLocator, QString::fromUtf8("Global settings"));
pagePickSettings = new QWidget();
pagePickSettings->setObjectName(QString::fromUtf8("pagePickSettings"));
pagePickSettings->setGeometry(QRect(0, 0, 96, 26));
pagePickSettings->setGeometry(QRect(0, 0, 715, 1139));
pagePickSettings->setAutoFillBackground(true);
vboxLayout2 = new QVBoxLayout(pagePickSettings);
#ifndef Q_OS_MAC
@ -376,6 +377,11 @@ public:
vboxLayout2->addWidget(cbShowCrossHair);
cbShowSensorUnits = new QCheckBox(pagePickSettings);
cbShowSensorUnits->setObjectName(QString::fromUtf8("cbShowSensorUnits"));
vboxLayout2->addWidget(cbShowSensorUnits);
hboxLayout4 = new QHBoxLayout();
#ifndef Q_OS_MAC
hboxLayout4->setSpacing(6);
@ -568,8 +574,8 @@ public:
editRepickerStart->setObjectName(QString::fromUtf8("editRepickerStart"));
editRepickerStart->setEnabled(false);
editRepickerStart->setAlignment(Qt::AlignRight);
editRepickerStart->setMaximum(100.000000000000000);
editRepickerStart->setMinimum(-100.000000000000000);
editRepickerStart->setMaximum(100.000000000000000);
editRepickerStart->setValue(-30.000000000000000);
hboxLayout7->addWidget(editRepickerStart);
@ -596,8 +602,8 @@ public:
editRepickerEnd->setObjectName(QString::fromUtf8("editRepickerEnd"));
editRepickerEnd->setEnabled(false);
editRepickerEnd->setAlignment(Qt::AlignRight);
editRepickerEnd->setMaximum(100.000000000000000);
editRepickerEnd->setMinimum(-100.000000000000000);
editRepickerEnd->setMaximum(100.000000000000000);
editRepickerEnd->setValue(10.000000000000000);
hboxLayout8->addWidget(editRepickerEnd);
@ -758,7 +764,7 @@ public:
toolBox->addItem(pagePickSettings, QString::fromUtf8("Picker settings"));
pagePickFilters = new QWidget();
pagePickFilters->setObjectName(QString::fromUtf8("pagePickFilters"));
pagePickFilters->setGeometry(QRect(0, 0, 96, 26));
pagePickFilters->setGeometry(QRect(0, 0, 731, 699));
pagePickFilters->setAutoFillBackground(true);
vboxLayout5 = new QVBoxLayout(pagePickFilters);
#ifndef Q_OS_MAC
@ -787,22 +793,13 @@ public:
vboxLayout6->setSpacing(2);
vboxLayout6->setContentsMargins(0, 0, 0, 0);
vboxLayout6->setObjectName(QString::fromUtf8("vboxLayout6"));
btnAddPickFilter = new QPushButton(pagePickFilters);
btnAddPickFilter = new QToolButton(pagePickFilters);
btnAddPickFilter->setObjectName(QString::fromUtf8("btnAddPickFilter"));
QSizePolicy sizePolicy2(QSizePolicy::Fixed, QSizePolicy::Fixed);
sizePolicy2.setHorizontalStretch(0);
sizePolicy2.setVerticalStretch(0);
sizePolicy2.setHeightForWidth(btnAddPickFilter->sizePolicy().hasHeightForWidth());
btnAddPickFilter->setSizePolicy(sizePolicy2);
btnAddPickFilter->setMaximumSize(QSize(20, 20));
vboxLayout6->addWidget(btnAddPickFilter);
btnRemovePickFilter = new QPushButton(pagePickFilters);
btnRemovePickFilter = new QToolButton(pagePickFilters);
btnRemovePickFilter->setObjectName(QString::fromUtf8("btnRemovePickFilter"));
sizePolicy2.setHeightForWidth(btnRemovePickFilter->sizePolicy().hasHeightForWidth());
btnRemovePickFilter->setSizePolicy(sizePolicy2);
btnRemovePickFilter->setMaximumSize(QSize(20, 20));
vboxLayout6->addWidget(btnRemovePickFilter);
@ -810,23 +807,13 @@ public:
vboxLayout6->addItem(spacerItem10);
btnMovePickFilterUp = new QPushButton(pagePickFilters);
btnMovePickFilterUp = new QToolButton(pagePickFilters);
btnMovePickFilterUp->setObjectName(QString::fromUtf8("btnMovePickFilterUp"));
btnMovePickFilterUp->setMaximumSize(QSize(20, 20));
const QIcon icon = QIcon(QString::fromUtf8(":/icons/icons/arrow_up.png"));
btnMovePickFilterUp->setIcon(icon);
btnMovePickFilterUp->setIconSize(QSize(12, 12));
btnMovePickFilterUp->setFlat(false);
vboxLayout6->addWidget(btnMovePickFilterUp);
btnMovePickFilterDown = new QPushButton(pagePickFilters);
btnMovePickFilterDown = new QToolButton(pagePickFilters);
btnMovePickFilterDown->setObjectName(QString::fromUtf8("btnMovePickFilterDown"));
btnMovePickFilterDown->setMaximumSize(QSize(20, 20));
const QIcon icon1 = QIcon(QString::fromUtf8(":/icons/icons/arrow_down.png"));
btnMovePickFilterDown->setIcon(icon1);
btnMovePickFilterDown->setIconSize(QSize(12, 12));
btnMovePickFilterDown->setFlat(false);
vboxLayout6->addWidget(btnMovePickFilterDown);
@ -872,7 +859,7 @@ public:
toolBox->addItem(pagePickFilters, QString::fromUtf8("Picker filters"));
pageAmplitudeSettings = new QWidget();
pageAmplitudeSettings->setObjectName(QString::fromUtf8("pageAmplitudeSettings"));
pageAmplitudeSettings->setGeometry(QRect(0, 0, 96, 26));
pageAmplitudeSettings->setGeometry(QRect(0, 0, 731, 699));
vboxLayout7 = new QVBoxLayout(pageAmplitudeSettings);
#ifndef Q_OS_MAC
vboxLayout7->setSpacing(6);
@ -958,7 +945,7 @@ public:
toolBox->addItem(pageAmplitudeSettings, QString::fromUtf8("Amplitude settings"));
pageAmplitudeFilters = new QWidget();
pageAmplitudeFilters->setObjectName(QString::fromUtf8("pageAmplitudeFilters"));
pageAmplitudeFilters->setGeometry(QRect(0, 0, 96, 26));
pageAmplitudeFilters->setGeometry(QRect(0, 0, 731, 699));
hboxLayout16 = new QHBoxLayout(pageAmplitudeFilters);
#ifndef Q_OS_MAC
hboxLayout16->setSpacing(6);
@ -976,19 +963,13 @@ public:
vboxLayout8->setSpacing(2);
vboxLayout8->setContentsMargins(0, 0, 0, 0);
vboxLayout8->setObjectName(QString::fromUtf8("vboxLayout8"));
btnAddAmplitudeFilter = new QPushButton(pageAmplitudeFilters);
btnAddAmplitudeFilter = new QToolButton(pageAmplitudeFilters);
btnAddAmplitudeFilter->setObjectName(QString::fromUtf8("btnAddAmplitudeFilter"));
sizePolicy2.setHeightForWidth(btnAddAmplitudeFilter->sizePolicy().hasHeightForWidth());
btnAddAmplitudeFilter->setSizePolicy(sizePolicy2);
btnAddAmplitudeFilter->setMaximumSize(QSize(20, 20));
vboxLayout8->addWidget(btnAddAmplitudeFilter);
btnRemoveAmplitudeFilter = new QPushButton(pageAmplitudeFilters);
btnRemoveAmplitudeFilter = new QToolButton(pageAmplitudeFilters);
btnRemoveAmplitudeFilter->setObjectName(QString::fromUtf8("btnRemoveAmplitudeFilter"));
sizePolicy2.setHeightForWidth(btnRemoveAmplitudeFilter->sizePolicy().hasHeightForWidth());
btnRemoveAmplitudeFilter->setSizePolicy(sizePolicy2);
btnRemoveAmplitudeFilter->setMaximumSize(QSize(20, 20));
vboxLayout8->addWidget(btnRemoveAmplitudeFilter);
@ -996,21 +977,13 @@ public:
vboxLayout8->addItem(spacerItem14);
btnMoveAmplitudeFilterUp = new QPushButton(pageAmplitudeFilters);
btnMoveAmplitudeFilterUp = new QToolButton(pageAmplitudeFilters);
btnMoveAmplitudeFilterUp->setObjectName(QString::fromUtf8("btnMoveAmplitudeFilterUp"));
btnMoveAmplitudeFilterUp->setMaximumSize(QSize(20, 20));
btnMoveAmplitudeFilterUp->setIcon(icon);
btnMoveAmplitudeFilterUp->setIconSize(QSize(12, 12));
btnMoveAmplitudeFilterUp->setFlat(false);
vboxLayout8->addWidget(btnMoveAmplitudeFilterUp);
btnMoveAmplitudeFilterDown = new QPushButton(pageAmplitudeFilters);
btnMoveAmplitudeFilterDown = new QToolButton(pageAmplitudeFilters);
btnMoveAmplitudeFilterDown->setObjectName(QString::fromUtf8("btnMoveAmplitudeFilterDown"));
btnMoveAmplitudeFilterDown->setMaximumSize(QSize(20, 20));
btnMoveAmplitudeFilterDown->setIcon(icon1);
btnMoveAmplitudeFilterDown->setIconSize(QSize(12, 12));
btnMoveAmplitudeFilterDown->setFlat(false);
vboxLayout8->addWidget(btnMoveAmplitudeFilterDown);
@ -1115,8 +1088,6 @@ public:
QObject::connect(cbLimitStationCount, SIGNAL(toggled(bool)), spinLimitStationCount, SLOT(setEnabled(bool)));
toolBox->setCurrentIndex(0);
btnMovePickFilterUp->setDefault(false);
btnMoveAmplitudeFilterUp->setDefault(false);
QMetaObject::connectSlotsByName(PickerSettings);
@ -1171,6 +1142,7 @@ public:
cbShowCrossHair->setToolTip(QCoreApplication::translate("PickerSettings", "If checked a cross hair cursor is shown when in picking mode whith the configured uncertainty widths.", nullptr));
#endif // QT_CONFIG(tooltip)
cbShowCrossHair->setText(QCoreApplication::translate("PickerSettings", "Show cross hair cursor", nullptr));
cbShowSensorUnits->setText(QCoreApplication::translate("PickerSettings", "Show sensor units", nullptr));
labelPickUncertainties->setText(QCoreApplication::translate("PickerSettings", "Uncertainties:", nullptr));
#if QT_CONFIG(tooltip)
listPickUncertainties->setToolTip(QCoreApplication::translate("PickerSettings", "Selects the current set of predefined pick uncertainties.", nullptr));
@ -1242,8 +1214,6 @@ public:
btnRemovePickFilter->setToolTip(QCoreApplication::translate("PickerSettings", "Remove current filter", nullptr));
#endif // QT_CONFIG(tooltip)
btnRemovePickFilter->setText(QCoreApplication::translate("PickerSettings", "-", nullptr));
btnMovePickFilterUp->setText(QString());
btnMovePickFilterDown->setText(QString());
groupBox->setTitle(QCoreApplication::translate("PickerSettings", "Waveform numerical integration", nullptr));
label_15->setText(QCoreApplication::translate("PickerSettings", "Apply pre-filter only once:", nullptr));
#if QT_CONFIG(tooltip)
@ -1263,13 +1233,9 @@ public:
#if QT_CONFIG(tooltip)
btnAddAmplitudeFilter->setToolTip(QCoreApplication::translate("PickerSettings", "Add a new filter", nullptr));
#endif // QT_CONFIG(tooltip)
btnAddAmplitudeFilter->setText(QCoreApplication::translate("PickerSettings", "+", nullptr));
#if QT_CONFIG(tooltip)
btnRemoveAmplitudeFilter->setToolTip(QCoreApplication::translate("PickerSettings", "Remove current filter", nullptr));
#endif // QT_CONFIG(tooltip)
btnRemoveAmplitudeFilter->setText(QCoreApplication::translate("PickerSettings", "-", nullptr));
btnMoveAmplitudeFilterUp->setText(QString());
btnMoveAmplitudeFilterDown->setText(QString());
toolBox->setItemText(toolBox->indexOf(pageAmplitudeFilters), QCoreApplication::translate("PickerSettings", "Amplitude filters", nullptr));
saveButton->setText(QCoreApplication::translate("PickerSettings", "Save", nullptr));
okButton->setText(QCoreApplication::translate("PickerSettings", "OK", nullptr));

View File

@ -10,7 +10,6 @@
#define UI_PICKERVIEW_H
#include <QtCore/QVariant>
#include <QtGui/QIcon>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QFrame>
@ -19,6 +18,7 @@
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QProgressBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QSplitter>
@ -59,12 +59,11 @@ public:
QAction *actionMaximizeAmplitudes;
QAction *actionPickP;
QAction *actionPickS;
QAction *actionPickOther;
QAction *actionDisablePicking;
QAction *actionConfirmPick;
QAction *actionDeletePick;
QAction *actionRelocate;
QAction *actionShowAllStations;
QAction *actionAddStationsInDistanceRange;
QAction *actionShowUsedStations;
QAction *actionSortByResidual;
QAction *actionShowZComponent;
@ -116,6 +115,7 @@ public:
QLabel *label1;
QLabel *labelAzimuth;
QSpacerItem *spacerItem;
QProgressBar *progressAmpLevel;
QFrame *frameCurrentRow;
QHBoxLayout *hboxLayout2;
QFrame *frameZoomControls;
@ -133,7 +133,6 @@ public:
QToolBar *toolBarStations;
QToolBar *toolBarPicking;
QToolBar *toolBarFilter;
QToolBar *toolBarSpectrogram;
QToolBar *toolBarTTT;
QToolBar *toolBarRelocate;
QMenuBar *menuBar;
@ -147,33 +146,22 @@ public:
QMenu *menuTraces;
QMenu *menuAlignArrival;
QMenu *menu_Zoomtrace;
QMenu *menuWindow;
void setupUi(QMainWindow *PickerView)
{
if (PickerView->objectName().isEmpty())
PickerView->setObjectName(QString::fromUtf8("PickerView"));
PickerView->resize(945, 738);
PickerView->resize(1063, 798);
PickerView->setIconSize(QSize(16, 16));
actionIncreaseAmplitudeScale = new QAction(PickerView);
actionIncreaseAmplitudeScale->setObjectName(QString::fromUtf8("actionIncreaseAmplitudeScale"));
QIcon icon;
icon.addFile(QString::fromUtf8(":/icons/icons/vzoomin.png"), QSize(), QIcon::Normal, QIcon::Off);
actionIncreaseAmplitudeScale->setIcon(icon);
actionDecreaseAmplitudeScale = new QAction(PickerView);
actionDecreaseAmplitudeScale->setObjectName(QString::fromUtf8("actionDecreaseAmplitudeScale"));
QIcon icon1;
icon1.addFile(QString::fromUtf8(":/icons/icons/vzoomout.png"), QSize(), QIcon::Normal, QIcon::Off);
actionDecreaseAmplitudeScale->setIcon(icon1);
actionTimeScaleUp = new QAction(PickerView);
actionTimeScaleUp->setObjectName(QString::fromUtf8("actionTimeScaleUp"));
QIcon icon2;
icon2.addFile(QString::fromUtf8(":/icons/icons/zoomout.png"), QSize(), QIcon::Normal, QIcon::Off);
actionTimeScaleUp->setIcon(icon2);
actionTimeScaleDown = new QAction(PickerView);
actionTimeScaleDown->setObjectName(QString::fromUtf8("actionTimeScaleDown"));
QIcon icon3;
icon3.addFile(QString::fromUtf8(":/icons/icons/zoomin.png"), QSize(), QIcon::Normal, QIcon::Off);
actionTimeScaleDown->setIcon(icon3);
actionScrollLeft = new QAction(PickerView);
actionScrollLeft->setObjectName(QString::fromUtf8("actionScrollLeft"));
actionScrollRight = new QAction(PickerView);
@ -188,86 +176,47 @@ public:
actionScrollFineRight->setObjectName(QString::fromUtf8("actionScrollFineRight"));
actionIncreaseRowHeight = new QAction(PickerView);
actionIncreaseRowHeight->setObjectName(QString::fromUtf8("actionIncreaseRowHeight"));
actionIncreaseRowHeight->setIcon(icon);
actionDecreaseRowHeight = new QAction(PickerView);
actionDecreaseRowHeight->setObjectName(QString::fromUtf8("actionDecreaseRowHeight"));
actionDecreaseRowHeight->setIcon(icon1);
actionIncreaseRowTimescale = new QAction(PickerView);
actionIncreaseRowTimescale->setObjectName(QString::fromUtf8("actionIncreaseRowTimescale"));
actionIncreaseRowTimescale->setIcon(icon3);
actionDecreaseRowTimescale = new QAction(PickerView);
actionDecreaseRowTimescale->setObjectName(QString::fromUtf8("actionDecreaseRowTimescale"));
actionDecreaseRowTimescale->setIcon(icon2);
actionSelectFirstRow = new QAction(PickerView);
actionSelectFirstRow->setObjectName(QString::fromUtf8("actionSelectFirstRow"));
actionSelectLastRow = new QAction(PickerView);
actionSelectLastRow->setObjectName(QString::fromUtf8("actionSelectLastRow"));
actionAlignOnPArrival = new QAction(PickerView);
actionAlignOnPArrival->setObjectName(QString::fromUtf8("actionAlignOnPArrival"));
actionAlignOnPArrival->setCheckable(false);
actionAlignOnPArrival->setCheckable(true);
actionAlignOnPArrival->setChecked(false);
QIcon icon4;
icon4.addFile(QString::fromUtf8(":/icons/icons/align_p.png"), QSize(), QIcon::Normal, QIcon::Off);
actionAlignOnPArrival->setIcon(icon4);
actionAlignOnSArrival = new QAction(PickerView);
actionAlignOnSArrival->setObjectName(QString::fromUtf8("actionAlignOnSArrival"));
actionAlignOnSArrival->setCheckable(false);
QIcon icon5;
icon5.addFile(QString::fromUtf8(":/icons/icons/align_s.png"), QSize(), QIcon::Normal, QIcon::Off);
actionAlignOnSArrival->setIcon(icon5);
actionAlignOnSArrival->setCheckable(true);
actionAlignOnOriginTime = new QAction(PickerView);
actionAlignOnOriginTime->setObjectName(QString::fromUtf8("actionAlignOnOriginTime"));
actionAlignOnOriginTime->setCheckable(false);
QIcon icon6;
icon6.addFile(QString::fromUtf8(":/icons/icons/align_t.png"), QSize(), QIcon::Normal, QIcon::Off);
actionAlignOnOriginTime->setIcon(icon6);
actionAlignOnOriginTime->setCheckable(true);
actionDefaultView = new QAction(PickerView);
actionDefaultView->setObjectName(QString::fromUtf8("actionDefaultView"));
QIcon icon7;
icon7.addFile(QString::fromUtf8(":/icons/icons/home.png"), QSize(), QIcon::Normal, QIcon::Off);
actionDefaultView->setIcon(icon7);
actionSortAlphabetically = new QAction(PickerView);
actionSortAlphabetically->setObjectName(QString::fromUtf8("actionSortAlphabetically"));
actionSortAlphabetically->setCheckable(true);
QIcon icon8;
icon8.addFile(QString::fromUtf8(":/icons/icons/sort_abc.png"), QSize(), QIcon::Normal, QIcon::Off);
actionSortAlphabetically->setIcon(icon8);
actionSortByDistance = new QAction(PickerView);
actionSortByDistance->setObjectName(QString::fromUtf8("actionSortByDistance"));
actionSortByDistance->setCheckable(true);
actionSortByDistance->setChecked(true);
QIcon icon9;
icon9.addFile(QString::fromUtf8(":/icons/icons/sort_dist.png"), QSize(), QIcon::Normal, QIcon::Off);
actionSortByDistance->setIcon(icon9);
actionToggleFilter = new QAction(PickerView);
actionToggleFilter->setObjectName(QString::fromUtf8("actionToggleFilter"));
actionToggleFilter->setCheckable(false);
actionToggleFilter->setChecked(false);
QIcon icon10;
icon10.addFile(QString::fromUtf8(":/icons/icons/filter.png"), QSize(), QIcon::Normal, QIcon::Off);
actionToggleFilter->setIcon(icon10);
actionMaximizeAmplitudes = new QAction(PickerView);
actionMaximizeAmplitudes->setObjectName(QString::fromUtf8("actionMaximizeAmplitudes"));
QIcon icon11;
icon11.addFile(QString::fromUtf8(":/icons/icons/vmax.png"), QSize(), QIcon::Normal, QIcon::Off);
actionMaximizeAmplitudes->setIcon(icon11);
actionPickP = new QAction(PickerView);
actionPickP->setObjectName(QString::fromUtf8("actionPickP"));
actionPickP->setCheckable(false);
QIcon icon12;
icon12.addFile(QString::fromUtf8(":/icons/icons/pick_p.png"), QSize(), QIcon::Normal, QIcon::Off);
actionPickP->setIcon(icon12);
actionPickP->setCheckable(true);
actionPickS = new QAction(PickerView);
actionPickS->setObjectName(QString::fromUtf8("actionPickS"));
actionPickS->setCheckable(false);
QIcon icon13;
icon13.addFile(QString::fromUtf8(":/icons/icons/pick_s.png"), QSize(), QIcon::Normal, QIcon::Off);
actionPickS->setIcon(icon13);
actionPickOther = new QAction(PickerView);
actionPickOther->setObjectName(QString::fromUtf8("actionPickOther"));
QIcon icon14;
icon14.addFile(QString::fromUtf8(":/icons/icons/pick_other.png"), QSize(), QIcon::Normal, QIcon::Off);
actionPickOther->setIcon(icon14);
actionPickS->setCheckable(true);
actionDisablePicking = new QAction(PickerView);
actionDisablePicking->setObjectName(QString::fromUtf8("actionDisablePicking"));
actionConfirmPick = new QAction(PickerView);
@ -276,46 +225,25 @@ public:
actionDeletePick->setObjectName(QString::fromUtf8("actionDeletePick"));
actionRelocate = new QAction(PickerView);
actionRelocate->setObjectName(QString::fromUtf8("actionRelocate"));
QIcon icon15;
icon15.addFile(QString::fromUtf8(":/icons/icons/locate.png"), QSize(), QIcon::Normal, QIcon::Off);
actionRelocate->setIcon(icon15);
actionShowAllStations = new QAction(PickerView);
actionShowAllStations->setObjectName(QString::fromUtf8("actionShowAllStations"));
actionShowAllStations->setCheckable(false);
QIcon icon16;
icon16.addFile(QString::fromUtf8(":/icons/icons/mindistance.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowAllStations->setIcon(icon16);
actionAddStationsInDistanceRange = new QAction(PickerView);
actionAddStationsInDistanceRange->setObjectName(QString::fromUtf8("actionAddStationsInDistanceRange"));
actionAddStationsInDistanceRange->setCheckable(false);
actionShowUsedStations = new QAction(PickerView);
actionShowUsedStations->setObjectName(QString::fromUtf8("actionShowUsedStations"));
actionShowUsedStations->setCheckable(true);
QIcon icon17;
icon17.addFile(QString::fromUtf8(":/icons/icons/withpick.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowUsedStations->setIcon(icon17);
actionSortByResidual = new QAction(PickerView);
actionSortByResidual->setObjectName(QString::fromUtf8("actionSortByResidual"));
actionSortByResidual->setCheckable(true);
QIcon icon18;
icon18.addFile(QString::fromUtf8(":/icons/icons/sort_res.png"), QSize(), QIcon::Normal, QIcon::Off);
actionSortByResidual->setIcon(icon18);
actionShowZComponent = new QAction(PickerView);
actionShowZComponent->setObjectName(QString::fromUtf8("actionShowZComponent"));
actionShowZComponent->setCheckable(true);
actionShowZComponent->setChecked(true);
QIcon icon19;
icon19.addFile(QString::fromUtf8(":/icons/icons/channelZ.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowZComponent->setIcon(icon19);
actionShowNComponent = new QAction(PickerView);
actionShowNComponent->setObjectName(QString::fromUtf8("actionShowNComponent"));
actionShowNComponent->setCheckable(true);
QIcon icon20;
icon20.addFile(QString::fromUtf8(":/icons/icons/channelN.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowNComponent->setIcon(icon20);
actionShowEComponent = new QAction(PickerView);
actionShowEComponent->setObjectName(QString::fromUtf8("actionShowEComponent"));
actionShowEComponent->setCheckable(true);
QIcon icon21;
icon21.addFile(QString::fromUtf8(":/icons/icons/channelE.png"), QSize(), QIcon::Normal, QIcon::Off);
actionShowEComponent->setIcon(icon21);
actionGotoNextMarker = new QAction(PickerView);
actionGotoNextMarker->setObjectName(QString::fromUtf8("actionGotoNextMarker"));
actionGotoPreviousMarker = new QAction(PickerView);
@ -370,14 +298,10 @@ public:
actionSortByAzimuth = new QAction(PickerView);
actionSortByAzimuth->setObjectName(QString::fromUtf8("actionSortByAzimuth"));
actionSortByAzimuth->setCheckable(true);
QIcon icon22;
icon22.addFile(QString::fromUtf8(":/icons/icons/sort_az.png"), QSize(), QIcon::Normal, QIcon::Off);
actionSortByAzimuth->setIcon(icon22);
actionOpenSpectrum = new QAction(PickerView);
actionOpenSpectrum->setObjectName(QString::fromUtf8("actionOpenSpectrum"));
actionResetScale = new QAction(PickerView);
actionResetScale->setObjectName(QString::fromUtf8("actionResetScale"));
actionResetScale->setIcon(icon7);
actionResetScale->setVisible(true);
actionShowAllComponents = new QAction(PickerView);
actionShowAllComponents->setObjectName(QString::fromUtf8("actionShowAllComponents"));
@ -493,6 +417,16 @@ public:
hboxLayout->addItem(spacerItem);
progressAmpLevel = new QProgressBar(frameCurrentRowLabel);
progressAmpLevel->setObjectName(QString::fromUtf8("progressAmpLevel"));
sizePolicy2.setHeightForWidth(progressAmpLevel->sizePolicy().hasHeightForWidth());
progressAmpLevel->setSizePolicy(sizePolicy2);
progressAmpLevel->setMinimum(0);
progressAmpLevel->setMaximum(100);
progressAmpLevel->setValue(0);
hboxLayout->addWidget(progressAmpLevel);
vboxLayout2->addWidget(frameCurrentRowLabel);
@ -535,9 +469,6 @@ public:
btnRowAccept->setSizePolicy(sizePolicy5);
btnRowAccept->setMinimumSize(QSize(32, 32));
btnRowAccept->setMaximumSize(QSize(32, 32));
QIcon icon23;
icon23.addFile(QString::fromUtf8(":/icons/icons/ok.png"), QSize(), QIcon::Normal, QIcon::Off);
btnRowAccept->setIcon(icon23);
btnRowAccept->setIconSize(QSize(24, 24));
btnRowAccept->setCheckable(true);
btnRowAccept->setFlat(false);
@ -550,9 +481,6 @@ public:
btnRowRemove->setSizePolicy(sizePolicy5);
btnRowRemove->setMinimumSize(QSize(32, 32));
btnRowRemove->setMaximumSize(QSize(32, 32));
QIcon icon24;
icon24.addFile(QString::fromUtf8(":/icons/icons/remove.png"), QSize(), QIcon::Normal, QIcon::Off);
btnRowRemove->setIcon(icon24);
btnRowRemove->setIconSize(QSize(24, 24));
btnRowRemove->setCheckable(true);
@ -564,9 +492,6 @@ public:
btnRowReset->setSizePolicy(sizePolicy5);
btnRowReset->setMinimumSize(QSize(32, 32));
btnRowReset->setMaximumSize(QSize(32, 32));
QIcon icon25;
icon25.addFile(QString::fromUtf8(":/icons/icons/erase.png"), QSize(), QIcon::Normal, QIcon::Off);
btnRowReset->setIcon(icon25);
btnRowReset->setIconSize(QSize(24, 24));
hboxLayout3->addWidget(btnRowReset);
@ -646,10 +571,6 @@ public:
toolBarFilter->setOrientation(Qt::Horizontal);
toolBarFilter->setIconSize(QSize(24, 24));
PickerView->addToolBar(Qt::TopToolBarArea, toolBarFilter);
toolBarSpectrogram = new QToolBar(PickerView);
toolBarSpectrogram->setObjectName(QString::fromUtf8("toolBarSpectrogram"));
toolBarSpectrogram->setOrientation(Qt::Horizontal);
PickerView->addToolBar(Qt::TopToolBarArea, toolBarSpectrogram);
toolBarTTT = new QToolBar(PickerView);
toolBarTTT->setObjectName(QString::fromUtf8("toolBarTTT"));
toolBarTTT->setOrientation(Qt::Horizontal);
@ -661,7 +582,7 @@ public:
PickerView->addToolBar(Qt::TopToolBarArea, toolBarRelocate);
menuBar = new QMenuBar(PickerView);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 945, 38));
menuBar->setGeometry(QRect(0, 0, 1063, 38));
menu_Filter = new QMenu(menuBar);
menu_Filter->setObjectName(QString::fromUtf8("menu_Filter"));
menu_Locate = new QMenu(menuBar);
@ -682,38 +603,38 @@ public:
menuAlignArrival->setObjectName(QString::fromUtf8("menuAlignArrival"));
menu_Zoomtrace = new QMenu(menuView);
menu_Zoomtrace->setObjectName(QString::fromUtf8("menu_Zoomtrace"));
menuWindow = new QMenu(menuBar);
menuWindow->setObjectName(QString::fromUtf8("menuWindow"));
PickerView->setMenuBar(menuBar);
toolBarScale->addAction(actionDefaultView);
toolBarScale->addSeparator();
toolBarScale->addAction(actionIncreaseRowHeight);
toolBarScale->addAction(actionDecreaseRowHeight);
toolBarScale->addSeparator();
toolBarScale->addAction(actionIncreaseRowTimescale);
toolBarScale->addAction(actionDecreaseRowTimescale);
toolBarScale->addSeparator();
toolBarScale->addAction(actionIncreaseRowHeight);
toolBarScale->addAction(actionDecreaseRowHeight);
toolBarScale->addAction(actionMaximizeAmplitudes);
toolBarScale->addSeparator();
toolBarScale->addAction(actionDefaultView);
toolBarSort->addAction(actionSortByDistance);
toolBarSort->addAction(actionSortByAzimuth);
toolBarSort->addAction(actionSortAlphabetically);
toolBarSort->addAction(actionSortByResidual);
toolBarAlign->addAction(actionAlignOnOriginTime);
toolBarAlign->addAction(actionAlignOnPArrival);
toolBarAlign->addAction(actionAlignOnSArrival);
toolBarAlign->addAction(actionAlignOnOriginTime);
toolBarComponent->addAction(actionShowZComponent);
toolBarComponent->addAction(actionShowNComponent);
toolBarComponent->addAction(actionShowEComponent);
toolBarStations->addAction(actionShowAllStations);
toolBarStations->addAction(actionAddStationsInDistanceRange);
toolBarStations->addAction(actionShowUsedStations);
toolBarPicking->addAction(actionPickP);
toolBarPicking->addAction(actionPickS);
toolBarRelocate->addAction(actionRelocate);
menuBar->addAction(menuView->menuAction());
menuBar->addAction(menu_Navigation->menuAction());
menuBar->addAction(menuPicking->menuAction());
menuBar->addAction(menu_Filter->menuAction());
menuBar->addAction(menu_Tools->menuAction());
menuBar->addAction(menu_Locate->menuAction());
menuBar->addAction(menuWindow->menuAction());
menu_Filter->addAction(actionToggleFilter);
menu_Filter->addAction(actionLimitFilterToZoomTrace);
menu_Locate->addAction(actionRelocate);
@ -939,7 +860,6 @@ public:
#if QT_CONFIG(shortcut)
actionPickS->setShortcut(QCoreApplication::translate("PickerView", "F2", nullptr));
#endif // QT_CONFIG(shortcut)
actionPickOther->setText(QCoreApplication::translate("PickerView", "Pick other phase", nullptr));
actionDisablePicking->setText(QCoreApplication::translate("PickerView", "Leave picking mode", nullptr));
actionDisablePicking->setIconText(QCoreApplication::translate("PickerView", "Leave picking mode", nullptr));
#if QT_CONFIG(tooltip)
@ -962,8 +882,8 @@ public:
#if QT_CONFIG(shortcut)
actionDeletePick->setShortcut(QCoreApplication::translate("PickerView", "Del", nullptr));
#endif // QT_CONFIG(shortcut)
actionRelocate->setText(QCoreApplication::translate("PickerView", "&Apply", nullptr));
actionRelocate->setIconText(QCoreApplication::translate("PickerView", "Apply", nullptr));
actionRelocate->setText(QCoreApplication::translate("PickerView", "&Apply all", nullptr));
actionRelocate->setIconText(QCoreApplication::translate("PickerView", "Apply all", nullptr));
#if QT_CONFIG(tooltip)
actionRelocate->setToolTip(QCoreApplication::translate("PickerView", "Apply the changed picks to the origin and update the residuals. \"Relocate\" has to be done manually! (F5)", nullptr));
#endif // QT_CONFIG(tooltip)
@ -973,10 +893,10 @@ public:
#if QT_CONFIG(shortcut)
actionRelocate->setShortcut(QCoreApplication::translate("PickerView", "F5", nullptr));
#endif // QT_CONFIG(shortcut)
actionShowAllStations->setText(QCoreApplication::translate("PickerView", "Add stations in range", nullptr));
actionShowAllStations->setIconText(QCoreApplication::translate("PickerView", "Add stations in range", nullptr));
actionAddStationsInDistanceRange->setText(QCoreApplication::translate("PickerView", "Add stations in range", nullptr));
actionAddStationsInDistanceRange->setIconText(QCoreApplication::translate("PickerView", "Add stations in range", nullptr));
#if QT_CONFIG(tooltip)
actionShowAllStations->setToolTip(QCoreApplication::translate("PickerView", "Adds all stations next to the origin with distance lower or equal than the entered value that haven't triggered. When view mode is \"used stations only\" you won't see the new stations until leaving this mode.", nullptr));
actionAddStationsInDistanceRange->setToolTip(QCoreApplication::translate("PickerView", "Adds all stations next to the origin with distance lower or equal than the entered value that haven't triggered. When view mode is \"used stations only\" you won't see the new stations until leaving this mode.", nullptr));
#endif // QT_CONFIG(tooltip)
actionShowUsedStations->setText(QCoreApplication::translate("PickerView", "&Show used stations only", nullptr));
actionShowUsedStations->setIconText(QCoreApplication::translate("PickerView", "Used stations only", nullptr));
@ -1072,7 +992,7 @@ public:
#if QT_CONFIG(shortcut)
actionRepickAutomatically->setShortcut(QCoreApplication::translate("PickerView", "R", nullptr));
#endif // QT_CONFIG(shortcut)
actionShowTraceValuesInNmS->setText(QCoreApplication::translate("PickerView", "Show trace values in nano sensor units", nullptr));
actionShowTraceValuesInNmS->setText(QCoreApplication::translate("PickerView", "Show trace values in sensor units", nullptr));
actionClipComponentsToViewport->setText(QCoreApplication::translate("PickerView", "Clip components to viewport", nullptr));
#if QT_CONFIG(shortcut)
actionClipComponentsToViewport->setShortcut(QCoreApplication::translate("PickerView", "C", nullptr));
@ -1186,7 +1106,6 @@ public:
toolBarStations->setWindowTitle(QCoreApplication::translate("PickerView", "Add stations", nullptr));
toolBarPicking->setWindowTitle(QCoreApplication::translate("PickerView", "Picking", nullptr));
toolBarFilter->setWindowTitle(QCoreApplication::translate("PickerView", "Filter", nullptr));
toolBarSpectrogram->setWindowTitle(QCoreApplication::translate("PickerView", "Spectrogram", nullptr));
toolBarTTT->setWindowTitle(QCoreApplication::translate("PickerView", "Travel times", nullptr));
toolBarRelocate->setWindowTitle(QCoreApplication::translate("PickerView", "Apply", nullptr));
menu_Filter->setTitle(QCoreApplication::translate("PickerView", "&Filter", nullptr));
@ -1199,6 +1118,7 @@ public:
menuTraces->setTitle(QCoreApplication::translate("PickerView", "&Traces", nullptr));
menuAlignArrival->setTitle(QCoreApplication::translate("PickerView", "Align", nullptr));
menu_Zoomtrace->setTitle(QCoreApplication::translate("PickerView", "&Zoomtrace", nullptr));
menuWindow->setTitle(QCoreApplication::translate("PickerView", "&Window", nullptr));
} // retranslateUi
};

View File

@ -11,7 +11,10 @@
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QDialog>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
@ -26,9 +29,20 @@ QT_BEGIN_NAMESPACE
class Ui_SelectStation
{
public:
QVBoxLayout *vboxLayout;
QLabel *stationListLabel;
QLineEdit *stationLineEdit;
QVBoxLayout *verticalLayout;
QGridLayout *gridLayout;
QLabel *labelNSLC;
QLineEdit *lineEditNSLC;
QCheckBox *cbExcludeNSLC;
QLabel *label;
QComboBox *comboNetworkType;
QCheckBox *cbExcludeNetworkType;
QLabel *label_2;
QComboBox *comboStationType;
QCheckBox *cbExcludeStationType;
QLabel *label_3;
QComboBox *comboSensorUnit;
QCheckBox *cbExcludeSensorUnit;
QTableView *table;
QHBoxLayout *hboxLayout;
QSpacerItem *spacerItem;
@ -38,38 +52,88 @@ public:
{
if (SelectStation->objectName().isEmpty())
SelectStation->setObjectName(QString::fromUtf8("SelectStation"));
SelectStation->resize(400, 400);
vboxLayout = new QVBoxLayout(SelectStation);
#ifndef Q_OS_MAC
vboxLayout->setSpacing(6);
#endif
#ifndef Q_OS_MAC
vboxLayout->setContentsMargins(9, 9, 9, 9);
#endif
vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
stationListLabel = new QLabel(SelectStation);
stationListLabel->setObjectName(QString::fromUtf8("stationListLabel"));
SelectStation->resize(854, 788);
verticalLayout = new QVBoxLayout(SelectStation);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
gridLayout = new QGridLayout();
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
labelNSLC = new QLabel(SelectStation);
labelNSLC->setObjectName(QString::fromUtf8("labelNSLC"));
vboxLayout->addWidget(stationListLabel);
gridLayout->addWidget(labelNSLC, 0, 0, 1, 1);
stationLineEdit = new QLineEdit(SelectStation);
stationLineEdit->setObjectName(QString::fromUtf8("stationLineEdit"));
lineEditNSLC = new QLineEdit(SelectStation);
lineEditNSLC->setObjectName(QString::fromUtf8("lineEditNSLC"));
vboxLayout->addWidget(stationLineEdit);
gridLayout->addWidget(lineEditNSLC, 0, 1, 1, 1);
cbExcludeNSLC = new QCheckBox(SelectStation);
cbExcludeNSLC->setObjectName(QString::fromUtf8("cbExcludeNSLC"));
gridLayout->addWidget(cbExcludeNSLC, 0, 2, 1, 1);
label = new QLabel(SelectStation);
label->setObjectName(QString::fromUtf8("label"));
gridLayout->addWidget(label, 1, 0, 1, 1);
comboNetworkType = new QComboBox(SelectStation);
comboNetworkType->addItem(QString());
comboNetworkType->setObjectName(QString::fromUtf8("comboNetworkType"));
gridLayout->addWidget(comboNetworkType, 1, 1, 1, 1);
cbExcludeNetworkType = new QCheckBox(SelectStation);
cbExcludeNetworkType->setObjectName(QString::fromUtf8("cbExcludeNetworkType"));
gridLayout->addWidget(cbExcludeNetworkType, 1, 2, 1, 1);
label_2 = new QLabel(SelectStation);
label_2->setObjectName(QString::fromUtf8("label_2"));
gridLayout->addWidget(label_2, 2, 0, 1, 1);
comboStationType = new QComboBox(SelectStation);
comboStationType->addItem(QString());
comboStationType->setObjectName(QString::fromUtf8("comboStationType"));
gridLayout->addWidget(comboStationType, 2, 1, 1, 1);
cbExcludeStationType = new QCheckBox(SelectStation);
cbExcludeStationType->setObjectName(QString::fromUtf8("cbExcludeStationType"));
gridLayout->addWidget(cbExcludeStationType, 2, 2, 1, 1);
label_3 = new QLabel(SelectStation);
label_3->setObjectName(QString::fromUtf8("label_3"));
gridLayout->addWidget(label_3, 3, 0, 1, 1);
comboSensorUnit = new QComboBox(SelectStation);
comboSensorUnit->addItem(QString());
comboSensorUnit->setObjectName(QString::fromUtf8("comboSensorUnit"));
gridLayout->addWidget(comboSensorUnit, 3, 1, 1, 1);
cbExcludeSensorUnit = new QCheckBox(SelectStation);
cbExcludeSensorUnit->setObjectName(QString::fromUtf8("cbExcludeSensorUnit"));
gridLayout->addWidget(cbExcludeSensorUnit, 3, 2, 1, 1);
verticalLayout->addLayout(gridLayout);
table = new QTableView(SelectStation);
table->setObjectName(QString::fromUtf8("table"));
table->setAlternatingRowColors(true);
table->setSelectionBehavior(QAbstractItemView::SelectRows);
vboxLayout->addWidget(table);
verticalLayout->addWidget(table);
hboxLayout = new QHBoxLayout();
#ifndef Q_OS_MAC
hboxLayout->setSpacing(6);
#endif
hboxLayout->setContentsMargins(0, 0, 0, 0);
hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
hboxLayout->setContentsMargins(0, 0, 0, 0);
spacerItem = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
hboxLayout->addItem(spacerItem);
@ -80,8 +144,17 @@ public:
hboxLayout->addWidget(btnAdd);
vboxLayout->addLayout(hboxLayout);
verticalLayout->addLayout(hboxLayout);
QWidget::setTabOrder(lineEditNSLC, cbExcludeNSLC);
QWidget::setTabOrder(cbExcludeNSLC, comboNetworkType);
QWidget::setTabOrder(comboNetworkType, cbExcludeNetworkType);
QWidget::setTabOrder(cbExcludeNetworkType, comboStationType);
QWidget::setTabOrder(comboStationType, cbExcludeStationType);
QWidget::setTabOrder(cbExcludeStationType, comboSensorUnit);
QWidget::setTabOrder(comboSensorUnit, cbExcludeSensorUnit);
QWidget::setTabOrder(cbExcludeSensorUnit, table);
QWidget::setTabOrder(table, btnAdd);
retranslateUi(SelectStation);
QObject::connect(btnAdd, SIGNAL(clicked()), SelectStation, SLOT(accept()));
@ -92,7 +165,20 @@ public:
void retranslateUi(QDialog *SelectStation)
{
SelectStation->setWindowTitle(QCoreApplication::translate("SelectStation", "Add station(s)", nullptr));
stationListLabel->setText(QCoreApplication::translate("SelectStation", "Station List:", nullptr));
labelNSLC->setText(QCoreApplication::translate("SelectStation", "NET.STA:", nullptr));
cbExcludeNSLC->setText(QCoreApplication::translate("SelectStation", "Exclude", nullptr));
label->setText(QCoreApplication::translate("SelectStation", "Network type:", nullptr));
comboNetworkType->setItemText(0, QCoreApplication::translate("SelectStation", "- No filter -", nullptr));
cbExcludeNetworkType->setText(QCoreApplication::translate("SelectStation", "Exclude", nullptr));
label_2->setText(QCoreApplication::translate("SelectStation", "Station type:", nullptr));
comboStationType->setItemText(0, QCoreApplication::translate("SelectStation", "- No filter -", nullptr));
cbExcludeStationType->setText(QCoreApplication::translate("SelectStation", "Exclude", nullptr));
label_3->setText(QCoreApplication::translate("SelectStation", "Sensor unit:", nullptr));
comboSensorUnit->setItemText(0, QCoreApplication::translate("SelectStation", "- No filter- ", nullptr));
cbExcludeSensorUnit->setText(QCoreApplication::translate("SelectStation", "Exclude", nullptr));
btnAdd->setText(QCoreApplication::translate("SelectStation", "Add", nullptr));
} // retranslateUi

View File

@ -56,6 +56,22 @@ class CheckBox : public QCheckBox {
};
SC_GUI_API double elevation(const DataModel::SensorLocation *sloc);
SC_GUI_API double elevation(const DataModel::Station *sta);
SC_GUI_API double computeDistance(const DataModel::Origin *org,
const DataModel::Station *sta,
double defaultDepth,
double *az = nullptr, double *baz = nullptr,
double *epicentral = nullptr);
SC_GUI_API double computeDistance(const DataModel::Origin *org,
const DataModel::SensorLocation *sloc,
double defaultDepth,
double *az = nullptr, double *baz = nullptr,
double *epicentral = nullptr);
}
}

View File

@ -142,6 +142,9 @@ class SC_GUI_API Canvas : public QObject {
bool setZoomLevel(float);
float zoomLevel() const;
void setMaxZoomLevel(float);
float maxZoomLevel() const;
float pixelPerDegree() const;
void setView(QPoint c, float zoom);
@ -411,7 +414,7 @@ class SC_GUI_API Canvas : public QObject {
QColor _backgroundColor{Qt::lightGray};
uint _polygonRoughness;
double _maxZoom;
float _maxZoom;
QPointF _center;
float _zoomLevel{1.0f};
bool _grayScale{false};

View File

@ -57,7 +57,8 @@ class SC_GUI_API CitiesLayer : public Layer {
private:
const Math::Geo::CityD *_selectedCity;
int _topPopulatedPlaces;
int _topPopulatedPlaces;
QPen _penHalo;
};

View File

@ -32,9 +32,7 @@
#include <QImage>
namespace Seiscomp {
namespace Gui {
namespace Map {
namespace Seiscomp::Gui::Map {
class Canvas;
@ -47,7 +45,7 @@ class SC_GUI_API GeoFeatureLayer : public Layer,
public:
GeoFeatureLayer(QObject *parent = nullptr);
virtual ~GeoFeatureLayer();
~GeoFeatureLayer() override;
public:
@ -76,12 +74,12 @@ class SC_GUI_API GeoFeatureLayer : public Layer,
*/
void renderFeatures(Canvas *canvas, QPainter &painter);
virtual void setVisible(bool flag);
virtual void bufferUpdated(Canvas *canvas, QPainter &painter);
void setVisible(bool flag) override;
void bufferUpdated(Canvas *canvas, QPainter &painter) override;
virtual QMenu *menu(QMenu*) const;
QMenu *menu(QMenu*) const override;
virtual void geoFeatureSetUpdated();
void geoFeatureSetUpdated() override;
private slots:
@ -125,7 +123,7 @@ class SC_GUI_API GeoFeatureLayer : public Layer,
int roughness{-1};
bool filled{false};
int symbolSize{8};
QImage symbolIcon;
QPixmap symbolIcon;
QPoint symbolIconHotspot;
SymbolShape symbolShape{Disabled};
QPolygon symbolPolygon;
@ -194,9 +192,7 @@ class SC_GUI_API GeoFeatureLayer : public Layer,
};
}
}
}
} // ns Seiscomp::Gui::Map
#endif

View File

@ -28,7 +28,9 @@
#endif
#include <seiscomp/gui/core/maps.h>
#include <QObject>
#include <QImage>
#include <QMutex>
namespace Seiscomp {
@ -162,11 +164,27 @@ class SC_GUI_API ImageTree : public QObject, public Core::BaseObject {
//! This function was introduced in API 1.1
bool hasPendingRequests() const { return _store && _store->hasPendingRequests(); }
//! Returns the currently attached cache instance.
//! If no cache is yet attached a new cache is
//! created and stored in the object.
/**
* @brief Returns the currently attached cache instance.
* If no cache is yet attached a new cache is created and stored in
* the object.
* @return The cache instance
*/
TextureCache *getCache();
/**
* @brief Locks the cache and avoids concurrent updates.
* This is required with multithreading applications which render in
* a different thread than the main thread and use asynchronous tile
* loading.
*/
void lockCache();
/**
* @brief Unlocks the previously locked cache.
*/
void unlockCache();
//! Empties the texture cache and tells the store to do a refresh
//! as well.
//! This function was introduced in API 1.1.
@ -194,6 +212,7 @@ class SC_GUI_API ImageTree : public QObject, public Core::BaseObject {
TileStorePtr _store;
bool _isMercatorProjected;
size_t _cacheSize;
QMutex _cacheMutex;
friend class TileStore;

View File

@ -57,7 +57,8 @@ class SC_GUI_API CitiesLayer : public Layer {
private:
const Math::Geo::CityD *_selectedCity;
int _topPopulatedPlaces;
int _topPopulatedPlaces;
QPen _penHalo;
};

View File

@ -32,9 +32,7 @@
#include <QImage>
namespace Seiscomp {
namespace Gui {
namespace Map {
namespace Seiscomp::Gui::Map {
class Canvas;
@ -47,7 +45,7 @@ class SC_GUI_API GeoFeatureLayer : public Layer,
public:
GeoFeatureLayer(QObject *parent = nullptr);
virtual ~GeoFeatureLayer();
~GeoFeatureLayer() override;
public:
@ -76,12 +74,12 @@ class SC_GUI_API GeoFeatureLayer : public Layer,
*/
void renderFeatures(Canvas *canvas, QPainter &painter);
virtual void setVisible(bool flag);
virtual void bufferUpdated(Canvas *canvas, QPainter &painter);
void setVisible(bool flag) override;
void bufferUpdated(Canvas *canvas, QPainter &painter) override;
virtual QMenu *menu(QMenu*) const;
QMenu *menu(QMenu*) const override;
virtual void geoFeatureSetUpdated();
void geoFeatureSetUpdated() override;
private slots:
@ -125,7 +123,7 @@ class SC_GUI_API GeoFeatureLayer : public Layer,
int roughness{-1};
bool filled{false};
int symbolSize{8};
QImage symbolIcon;
QPixmap symbolIcon;
QPoint symbolIconHotspot;
SymbolShape symbolShape{Disabled};
QPolygon symbolPolygon;
@ -194,9 +192,7 @@ class SC_GUI_API GeoFeatureLayer : public Layer,
};
}
}
}
} // ns Seiscomp::Gui::Map
#endif

View File

@ -57,6 +57,8 @@ class SC_GUI_API Legend : public QObject {
Legend &operator =(const Legend &other);
public:
virtual void bringToFront();
virtual Legend* clone() const { return nullptr; }
@ -108,17 +110,17 @@ class SC_GUI_API Legend : public QObject {
protected:
int _margin;
int _spacing;
QFont _font;
QFont _titleFont;
QSize _size;
Layer *_layer;
QString _title;
Qt::Alignment _alignment;
bool _enabled;
QPoint _pos;
bool _visible;
int _margin{9};
int _spacing{4};
QFont _font;
QFont _titleFont;
QSize _size;
Layer *_layer{nullptr};
QString _title;
Qt::Alignment _alignment{Qt::AlignLeft | Qt::AlignTop};
bool _enabled{true};
QPoint _pos;
bool _visible{true};
friend class Canvas;

View File

@ -214,11 +214,11 @@ class SC_GUI_API Symbol {
// Private data members
// ----------------------------------------------------------------------
protected:
int _type;
int _type{0};
std::string _id;
Priority _priority;
bool _clipped;
bool _visible;
Priority _priority{NONE};
bool _clipped{false};
bool _visible{true};
QPointF _location;
QPoint _position;
QSize _size;

View File

@ -41,11 +41,11 @@ class QSpinBox;
namespace Seiscomp {
namespace Gui {
class SaveBNADialog : public QDialog {
class SaveGeoFeatureDialog : public QDialog {
Q_OBJECT
public:
SaveBNADialog(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
SaveGeoFeatureDialog(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
public:
QLineEdit *name;
@ -63,8 +63,9 @@ class SC_GUI_API MapWidget : public QWidget {
MapWidget(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
MapWidget(const MapsDesc &meta, QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
MapWidget(Map::ImageTree *mapTree, QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
virtual ~MapWidget();
public:
Map::Canvas &canvas() { return _canvas; }
const Map::Canvas &canvas() const { return _canvas; }
@ -134,15 +135,18 @@ class SC_GUI_API MapWidget : public QWidget {
std::string _currentProjection;
bool _firstDrag;
bool _isDragging;
bool _isMeasuring;
bool _filterMap;
bool _forceGrayScale;
bool _firstDrag{false};
bool _isDragging{false};
bool _isZooming{false};
bool _isMeasuring{false};
bool _filterMap{false};
bool _forceGrayScale{false};
QVector<QPointF> _measurePoints;
QString _measureText;
SaveBNADialog *_measureBNADialog;
QVector<QPointF> _measurePoints;
QString _measureText;
SaveGeoFeatureDialog *_measureSaveDialog;
QPoint _firstDraggingPosition;
QPoint _lastDraggingPosition;
QMenu *_contextProjectionMenu;