Isis Developer Reference
Application.h
Go to the documentation of this file.
1#ifndef Application_h
2#define Application_h
3
9/* SPDX-License-Identifier: CC0-1.0 */
10
11#include "Environment.h"
12
13#include <sys/types.h>
14#include <unistd.h>
15#include <sys/socket.h>
16#include <sys/un.h>
17
18#include <iostream>
19#include <fstream>
20#include <QString>
21#include <QElapsedTimer>
22#include <string>
23#include <ctime>
24
25#include "Pvl.h"
26#include "UserInterface.h"
27
28class QLocalSocket;
29
30namespace Isis {
31 class Gui;
32 class IException;
33 class Progress;
34
101 class Application : public Environment {
102 public:
103 Application(int &argc, char *argv[]);
104 ~Application();
105
106 int Run(void (*funct)());
109
111 static void Log(PvlGroup &results);
112 static void GuiLog(const Pvl &results);
113 static void GuiLog(const PvlGroup &results);
114 static void GuiLog(const QString &results);
115 static QString Name();
116
118
122 void RegisterGuiHelpers(std::map<QString, void *> helpers) {
123 p_guiHelpers = helpers;
124 };
125
129 void *GetGuiHelper(QString helper) {
130 return p_guiHelpers[helper];
131 };
132
133 void GuiReportError(IException &e);
134
135 static QString UserName();
136 static QString HostName();
137 static QString DateTime(time_t *curtime = 0);
138 static QString Version();
139
140 static bool HasParent();
141
142 private:
143 int p_BatchlistPass;
144 int DirectIO();
145 int PageFaults();
146 int ProcessSwaps();
147
148 QLocalSocket *p_connectionToParent;
149 time_t p_startTime;
150 clock_t p_startClock;
151 QElapsedTimer m_connectTime;
152 QString p_datetime;
153 int p_startDirectIO;
154 int p_startPageFaults;
155 int p_startProcessSwaps;
156 pid_t p_childPid;
157 bool p_childCaught;
158
159 UserInterface *p_ui;
160
161 void SendParentData(QString, const QString &);
162 void SendParentErrors(PvlObject &errors);
163
164 static PvlGroup GetUnameInfo();
165 static PvlGroup GetEnviromentInfo();
166 static QString GetSystemDiskSpace();
167 static QString GetLibraryDependencies(QString file);
168
169 friend class Gui;
170 void FunctionCleanup();
171 int FunctionError(IException &e);
172
173 friend class Progress;
174 friend class ProgramLauncher;
175 void UpdateProgress(const QString &text, bool print);
176 void UpdateProgress(int percent, bool print);
177 void ProcessGuiEvents();
178
182 void SetParentConnection(QLocalSocket *p_connection) {
183 p_connectionToParent = p_connection;
184 }
185 void EstablishConnections();
186 void WaitForCommand(int childSocket);
187
188 pid_t p_pid;
189 std::map<QString, void *> p_guiHelpers;
190 static QString p_appName;
191
192 };
193
194 extern Application *iApp;
195};
196
197#endif
Definition Application.h:101
int Run(void(*funct)())
Runs the program defined in the function funct.
Definition Application.cpp:176
static QString DateTime(time_t *curtime=0)
Returns the date and time as a QString.
Definition Application.cpp:802
PvlObject History()
Creates an application history PvlObject.
Definition Application.cpp:250
static void Log(PvlGroup &results)
Writes Pvl results to sessionlog and printfile.
Definition Application.cpp:352
PvlGroup Accounting()
Creates accounting PvlGroup.
Definition Application.cpp:280
static void GuiLog(const Pvl &results)
Writes the Pvl results to the sessionlog, but not to the printfile.
Definition Application.cpp:395
static QString HostName()
Returns the host name.
Definition Application.cpp:825
void GuiReportError(IException &e)
Loads the error message into the gui, but does not write it to the session log.
Definition Application.cpp:708
static QString Version()
The Isis Version for this application.
Definition Application.cpp:834
static QString Name()
Returns the name of the application.
Definition Application.cpp:729
void RegisterGuiHelpers(std::map< QString, void * > helpers)
Definition Application.h:122
static bool p_applicationForceGuiApp
Definition Application.h:117
static bool HasParent()
Returns whether the application has a parent or not.
Definition Application.cpp:472
static QString UserName()
Returns the user name.
Definition Application.cpp:816
void * GetGuiHelper(QString helper)
Definition Application.h:129
static UserInterface & GetUserInterface()
Returns the UserInterface object.
Definition Application.cpp:463
Application(int &argc, char *argv[])
Constuctor for the Application object.
Definition Application.cpp:63
~Application()
Destroys the Application object.
Definition Application.cpp:162
Definition Environment.h:36
Gui for Isis Applications.
Definition Gui.h:73
Isis exception class.
Definition IException.h:91
Execute External Programs and Commands.
Definition ProgramLauncher.h:34
Program progress reporter.
Definition Progress.h:42
Contains multiple PvlContainers.
Definition PvlGroup.h:41
Container for cube-like labels.
Definition Pvl.h:119
Contains Pvl Groups and Pvl Objects.
Definition PvlObject.h:61
Command Line and Xml loader, validation, and access.
Definition UserInterface.h:139
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Application * iApp
Definition Application.cpp:50