/usr/include/OpenMS/VISUAL/SpectrumWidget.h is in libopenms-dev 1.11.1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | // --------------------------------------------------------------------------
// OpenMS -- Open-Source Mass Spectrometry
// --------------------------------------------------------------------------
// Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
// ETH Zurich, and Freie Universitaet Berlin 2002-2013.
//
// This software is released under a three-clause BSD license:
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of any author or any participating institution
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
// For a full list of authors, refer to the file AUTHORS.
// --------------------------------------------------------------------------
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
// INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// --------------------------------------------------------------------------
// $Maintainer: Timo Sachsenberg $
// $Authors: Marc Sturm $
// --------------------------------------------------------------------------
#ifndef OPENMS_VISUAL_SPECTRUMWIDGET_H
#define OPENMS_VISUAL_SPECTRUMWIDGET_H
//OpenMS
#include <OpenMS/CONCEPT/Types.h>
#include <OpenMS/MATH/STATISTICS/Histogram.h>
#include <OpenMS/VISUAL/SpectrumCanvas.h>
#include <OpenMS/VISUAL/EnhancedTabBarWidgetInterface.h>
class QGridLayout;
class QScrollBar;
class QCloseEvent;
class QMimeData;
namespace OpenMS
{
class AxisWidget;
/**
@brief Base class for spectrum widgets
This class is the base class for the different MDI window
types in the TOPPView application. For each type of spectrum
view (such as 1D view, 2D view etc.), there must exist a
corresponding class derived from this class.
To integrate a new spectrum view (i.e. classes derived from
SpectrumWidget and SpectrumCanvas) into the TOPPView application,
a class must be derived from this class which holds an
instance of the SpectrumCanvas class as a child widget.
This Widget also provides axis widgets and scrollbars.
@todo Add support to store the displayed data as SVG image (HiWi)
*/
class OPENMS_GUI_DLLAPI SpectrumWidget :
public QWidget,
public EnhancedTabBarWidgetInterface
{
Q_OBJECT
public:
/** @name Type definitions */
//@{
/// Main data type (experiment)
typedef LayerData::ExperimentType ExperimentType;
/// Main data type (features)
typedef LayerData::FeatureMapType FeatureMapType;
/// Spectrum type
typedef ExperimentType::SpectrumType SpectrumType;
//@}
/// Default constructor
SpectrumWidget(const Param & preferences, QWidget * parent = 0);
/// Destructor
virtual ~SpectrumWidget();
/**
@brief Returns a pointer to canvas object
The canvas object is set with the setCanvas_() method.
This is usually done in the constructor.
*/
SpectrumCanvas * canvas()
{
return canvas_;
}
SpectrumCanvas * canvas() const
{
return canvas_;
}
///Returns a pointer to the x-axis axis widget.
virtual inline AxisWidget * xAxis()
{
return x_axis_;
}
///Returns a pointer to the y-axis axis widget.
virtual inline AxisWidget * yAxis()
{
return y_axis_;
}
///Get the mouse action mode
Int getActionMode() const;
/// Returns if the axis labels are shown
virtual bool isLegendShown() const;
/// Shows/hides axis labels
virtual void showLegend(bool show);
/// Sets the intensity mode of the SpectrumCanvas
void setIntensityMode(SpectrumCanvas::IntensityModes mode);
/// Hides x-axis and y-axis
virtual void hideAxes();
/// Saves the widget's content as image file
virtual void saveAsImage();
/// getter for the EnhancedTabBar window id as defined in the interface
virtual Int getWindowId();
/// setter for the EnhancedTabBar window id as defined in the interface
virtual void setWindowId(Int window_id);
signals:
/// Emits a status message that should be displayed for @p time ms. If @p time is 0 the message should be displayed until the next message is emitted.
void sendStatusMessage(std::string, OpenMS::UInt);
/// Emitted when the cursor position changes (for displaying e.g. in status bar)
void sendCursorStatus(double mz = -1.0, double rt = -1.0);
/// Message about the destruction of this widget
void aboutToBeDestroyed(int window_id);
/// Shows the main preferences dialog
void openPreferences();
/// Signal that is emitted, when a drag-and-drop action ends on this widget
void dropReceived(const QMimeData * data, QWidget * source, int id);
public slots:
/// Shows statistics about the data (count, min, max, avg of intensity, charge, quality and meta data)
void showStatistics();
/// Shows the intensity distribution of the current layer
void showIntensityDistribution();
/// Shows the meta data distribution of vlaue @p name of the current layer
void showMetaDistribution(const String & name);
/// Updates the axes by setting the right labels and calling recalculateAxes_();
void updateAxes();
/**
@brief Updates the horizontal scrollbar
@param min The overall minimum of the range
@param disp_min The displayed minimum
@param disp_max The displayed maximum
@param max The overall maximum of the range
*/
void updateHScrollbar(float min, float disp_min, float disp_max, float max);
/**
@brief Updates the vertical scrollbar
@param min The overall minimum of the range
@param disp_min The displayed minimum
@param disp_max The displayed maximum
@param max The overall maximum of the range
*/
void updateVScrollbar(float min, float disp_min, float disp_max, float max);
/// Shows a goto dialog
virtual void showGoToDialog() = 0;
/// Toggles the axis legend visibility
void changeLegendVisibility();
protected:
/// @name Reimplemented Qt events
//@{
void closeEvent(QCloseEvent * e);
//@}
/**
@brief Adds the canvas, axes and scrollbars to the layout
@p row and @p col define the position of the canvas.
Axes and scrollbars are added to the left and bottom of the canvas.
*/
void setCanvas_(SpectrumCanvas * canvas, UInt row = 0, UInt col = 2);
/// Switch between different intensitiy modes
virtual void intensityModeChange_();
/// creates the intensity distribution of the current layer
virtual Math::Histogram<> createIntensityDistribution_() const = 0;
/// creates the meta data distribution of value @p name of the current layer
virtual Math::Histogram<> createMetaDistribution_(const String & name) const = 0;
/// recalculates the Axis ticks
virtual void recalculateAxes_() = 0;
///@name reimplemented Qt events
//@{
void dragEnterEvent(QDragEnterEvent * event);
void dragMoveEvent(QDragMoveEvent * event);
void dropEvent(QDropEvent * event);
//@}
/// Pointer to the canvas widget
SpectrumCanvas * canvas_;
///Main layout
QGridLayout * grid_;
/// Vertical axis
AxisWidget * y_axis_;
/// Horizontal axis
AxisWidget * x_axis_;
/// Horizontal scrollbar
QScrollBar * x_scrollbar_;
/// Vertical scrollbar
QScrollBar * y_scrollbar_;
Int window_id_;
};
}
#endif
|