/usr/include/OpenMS/VISUAL/APPLICATIONS/TOPPASBase.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 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | // --------------------------------------------------------------------------
// 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: Johannes Junker $
// $Authors: Johannes Junker, Chris Bielow $
// --------------------------------------------------------------------------
#ifndef OPENMS_VISUAL_APPLICATIONS_TOPPASBASE_H
#define OPENMS_VISUAL_APPLICATIONS_TOPPASBASE_H
//OpenMS
#include <OpenMS/DATASTRUCTURES/DefaultParamHandler.h>
#include <OpenMS/VISUAL/TOPPASTreeView.h>
//QT
#include <QtGui/QMainWindow>
#include <QtGui/QWorkspace>
#include <QtGui/QButtonGroup>
#include <QtCore/QProcess>
#include <QtGui/QSplashScreen>
class QToolBar;
class QListWidget;
class QTextEdit;
class QWorkspace;
class QLabel;
class QWidget;
class QTreeWidget;
class QTreeWidgetItem;
class QWebView;
class QNetworkAccessManager;
class QNetworkReply;
namespace OpenMS
{
class TOPPASWidget;
class TOPPASScene;
class TOPPASTabBar;
class TOPPASLogWindow;
class TOPPASResources;
/**
@brief Main window of the TOPPAS tool
@ingroup TOPPAS_elements
*/
class OPENMS_GUI_DLLAPI TOPPASBase :
public QMainWindow,
public DefaultParamHandler
{
Q_OBJECT
public:
///Constructor
TOPPASBase(QWidget* parent = 0);
///Destructor
virtual ~TOPPASBase();
/**
@brief Loads the preferences from the filename given.
If the filename is empty, the application name + ".ini" is used as filename
*/
void loadPreferences(String filename = "");
/// stores the preferences (used when this window is closed)
void savePreferences();
/// loads the files and updates the splash screen
void loadFiles(const StringList& list, QSplashScreen* splash_screen);
public slots:
/// opens the file in a new window
void addTOPPASFile(const String& file_name, bool in_new_window = true);
/// shows the dialog for opening files
void openFileDialog();
/// shows the dialog for opening example files
void openExampleDialog();
/// shows the dialog for creating a new file (pass IDINITIALUNTITLED as @p id if its the first call)
void newPipeline(const int id = -1);
/// shows the dialog for including another workflow in the currently opened one
void includePipeline();
/// shows the dialog for saving the current file and updates the current tab caption
void saveCurrentPipelineAs();
/// saves the pipeline (determined by Qt's sender mechanism)
void savePipeline();
/// exports the current pipeline as image
void exportAsImage();
/// shows a file dialog for selecting the resource file to load
void loadPipelineResourceFile();
/// shows a file dialog for selecting the resource file to write to
void savePipelineResourceFile();
/// opens the OpenMS Homepage to download example workflows
void openOnlinePipelineRepository();
/// shows the preferences dialog
void preferencesDialog();
/// changes the current path according to the currently active window/layer
void updateCurrentPath();
/// brings the tab corresponding to the active window in front
void updateTabBar(QWidget* w);
/// Shows the 'About' dialog
void showAboutDialog();
/// shows the URL stored in the data of the sender QAction
void showURL();
/**
@brief Shows a status message in the status bar.
If @p time is 0 the status message is displayed until showStatusMessage is called with an empty message or a new message.
Otherwise the message is displayed for @p time ms.
*/
void showStatusMessage(std::string msg, OpenMS::UInt time);
/// shows x,y coordinates in the status bar
void showCursorStatus(double x, double y);
/// closes the active window
void closeFile();
/// updates the toolbar
void updateToolBar();
/// Runs the pipeline of the current window
void runPipeline();
/// Terminates the current pipeline
void abortPipeline();
/// Called when a tool is started
void toolStarted();
/// Called when a tool is finished
void toolFinished();
/// Called when a tool crashes
void toolCrashed();
/// Called when a tool execution fails
void toolFailed();
/// Called when a file was successfully written to an output vertex
void outputVertexFinished(const String& file);
/// Called when a TOPP tool produces (error) output.
void updateTOPPOutputLog(const QString& out);
/// Called by the scene if the pipeline execution finishes successfully
void showPipelineFinishedLogMessage();
/// Saves @p scene to the clipboard
void saveToClipboard(TOPPASScene* scene);
/// Sends the clipboard content to the sender of the connected signal
void sendClipboardContent();
/// Refreshes the parameters of the TOPP tools of the current workflow and stores an updated workflow including the current parameters
void refreshParameters();
/// Open files in a new TOPPView instance
void openFilesInTOPPView(QStringList all_files);
/// Opens a toppas file
void openToppasFile(QString filename);
protected slots:
/** @name Tab bar slots
*/
//@{
/// Closes the window corresponding to the data of the tab with identifier @p id
void closeByTab(int id);
/// Raises the window corresponding to the data of the tab with identifier @p id
void focusByTab(int id);
//@}
/// enable/disable menu entries depending on the current state
void updateMenu();
/// Shows the widget as window in the workspace (the special_id is only used for the first untitled widget (to be able to auto-close it later)
void showAsWindow_(TOPPASWidget* sw, const String& caption, const int special_id = -1);
/// Inserts a new TOPP tool in the current window at (x,y)
void insertNewVertex_(double x, double y, QTreeWidgetItem* item = 0);
/// Inserts the @p item in the middle of the current window
void insertNewVertexInCenter_(QTreeWidgetItem* item);
/// triggered when user clicks a link - if it ends in .TOPPAS we're done
void downloadTOPPASfromHomepage_(const QUrl& url);
/// triggered when download of .toppas file is finished, so we can store & open it
void toppasFileDownloaded_(QNetworkReply* r);
/// user edited the workflow description
void descriptionUpdated_();
protected:
/// Log output window
TOPPASLogWindow* log_;
/// Workflow Description window
QTextEdit* desc_;
/** @name Toolbar
*/
//@{
QToolBar* tool_bar_;
//@}
/// Main workspace
QWorkspace* ws_;
/// OpenMS homepage workflow browser
QWebView* webview_;
/// download .toppas files from homepage
QNetworkAccessManager* network_manager_;
///Tab bar. The address of the corresponding window to a tab is stored as an int in tabData()
TOPPASTabBar* tab_bar_;
/// Tree view of all available TOPP tools
QTreeWidget* tools_tree_view_;
/// List of ready analysis pipelines
QListWidget* blocks_list_;
/** @name Status bar
*/
//@{
/// Label for messages in the status bar
QLabel* message_label_;
//@}
///returns the window with id @p id
TOPPASWidget* window_(int id) const;
/// The current path (used for loading and storing).
/// Depending on the preferences this is static or changes with the current window/layer.
String current_path_;
/// The path for temporary files
String tmp_path_;
/// Offset counter for new inserted nodes (to avoid invisible stacking)
static int node_offset_;
/// z-value counter for new inserted nodes (new nodes should be on top)
static qreal z_value_;
///returns a pointer to the active TOPPASWidget (0 if none is active)
TOPPASWidget* activeWindow_() const;
///@name reimplemented Qt events
//@{
void closeEvent(QCloseEvent* event);
void keyPressEvent(QKeyEvent* e);
//@}
///Log message states
enum LogState
{
LS_NOTICE, ///< Notice
LS_WARNING, ///< Warning
LS_ERROR ///< Fatal error
};
/// Shows a log message in the log_ window
void showLogMessage_(LogState state, const String& heading, const String& body);
/// The clipboard
TOPPASScene* clipboard_scene_;
public:
/// use this for the first call to newPipeline(), to ensure that the first empty (and unmodified) workspace is closed iff existing workflows are loaded
static int const IDINITIALUNTITLED = 1000;
/// @name common functions used in TOPPAS and TOPPView
//@{
/// Creates and fills a tree widget with all available tools
static TOPPASTreeView* createTOPPToolsTreeWidget(QWidget* parent_widget = 0);
/// Saves the workflow in the provided TOPPASWidget to a user defined location.
/// Returns the full file name or "" if no valid one is selected.
static QString savePipelineAs(TOPPASWidget* w, QString current_path);
/// Loads and sets the resources of the TOPPASWidget.
static QString loadPipelineResourceFile(TOPPASWidget* w, QString current_path);
/// Saves the resources of the TOPPASWidget.
static QString savePipelineResourceFile(TOPPASWidget* w, QString current_path);
/// Refreshes the TOPP tools parameters of the pipeline
static QString refreshPipelineParameters(TOPPASWidget* tw, QString current_path);
//@}
}; //class
} //namespace
#endif // OPENMS_APPLICATIONS_TOPPASBASE_H
|