summaryrefslogtreecommitdiff
path: root/cad/plugins/NanoVision-1/src/nv1.h
blob: c17189ae180443ad1cfcb1ccc7de7e28ecf25076 (plain)
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
// Copyright 2007 Nanorex, Inc.  See LICENSE file for details.

#ifndef NV1_H
#define NV1_H

#include <map>
#include <string>
using namespace std;

#include <QtGui>
#include <QMainWindow>
#include <QFileDialog>
#include <QCloseEvent>

#include "Nanorex/Utility/NXCommandLine.h"
#include "Nanorex/Interface/NXEntityManager.h"
#include "Nanorex/Interface/NXGraphicsManager.h"
using namespace Nanorex;

#include "AboutBox.h"
#include "ResultsWindow.h"
#include "LogHandlerWidget.h"
#include "JobSelectorDialog.h"
#include "PreferencesDialog.h"
#include "MainWindowTabWidget.h"
#include "JobManagement/JobMonitor.h"
#include "JobManagement/GROMACS_JobMonitor.h"


/* CLASS: nv1 */
class nv1 : public QMainWindow {
	Q_OBJECT

public:
	nv1(NXEntityManager* entityManager,
	    NXGraphicsManager *graphicsManager,
	    LogHandlerWidget* logHandlerWidget);
	~nv1();
	
	void processCommandLine(int argc, char *argv[]);
	void loadFile(const string& filename, const string& processType,
				  const string& processInit);

protected:
	void closeEvent (QCloseEvent *event);

public slots:
	void updateMenus();
	void addMonitoredJob(const QString& processType, const QString& id,
						 const QString& title);
	void removeMonitoredJob(const QString& id);
	void raiseLogDockWidget();

private slots:
	void open();
    void close();
	void about();
	void updateWindowMenu();
	void abortJob(const QString& id);
	void checkForActiveJobs(string& filename, string& processType,
							string& processInit, bool notify = false);
	void openActiveJobs();
	void showPreferences();
	void toggleLogWindow();
	void fixHDF5_DataStore();

private:
	NXEntityManager* entityManager;
	NXGraphicsManager *graphicsManager;
	
	QToolBar* fileToolBar;
	QToolBar* jobsToolBar;
	QDockWidget* logDockWidget;

	MainWindowTabWidget* mainWindowTabs;
	ResultsWindow* resultsWindow;
	
	QMenu* fileMenu;
	QMenu* viewMenu;
	QMenu* toolsMenu;
	QMenu* jobsMenu;
	QMenu* windowMenu;
	QMenu* helpMenu;

	// File
	QAction* openAction;
    QAction* closeAction;
    QAction* exitAction;
	
	// View
	QAction* logWindowAction;
	
	// Tools
	//
	// Job Management
	QAction* openJobsAction;
	QAction* abortJobAction;
	
	QAction* fixHDF5_DataStoreAction;
	QAction* preferencesAction;
	
	// Window
    QAction* windowCloseAction;
	QAction* windowCloseAllAction;
	QAction* windowTileAction;
	QAction* windowCascadeAction;
	QAction* windowArrangeAction;
	QAction* windowNextAction;
	QAction* windowPreviousAction;
	QAction* windowSeparatorAction;
	
	// Help
	QAction* aboutAction;
	
	map<QString, JobMonitor*> jobMonitors;
    
    // Currently opened file
    QString currentFileName;
	
	void createActions();
	void createMenus();
	void createToolBars();
	void createStatusBar();
	void readSettings();
	void writeSettings();
};

#endif