Isis 3 Programmer Reference
Application.h
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 <QTime>
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
117 static bool p_applicationForceGuiApp;
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;
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
160
161 void SendParentData(QString, const QString &);
162 void SendParentErrors(PvlObject &errors);
163
164 static PvlGroup GetUnameInfo();
166 static QString GetSystemDiskSpace();
167 static QString GetLibraryDependencies(QString file);
168
169 friend class Gui;
170 void FunctionCleanup();
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
int Run(void(*funct)())
Runs the program defined in the function funct.
QTime m_connectTime
Used to calculate program's run time.
static QString DateTime(time_t *curtime=0)
Returns the date and time as a QString.
PvlObject History()
Creates an application history PvlObject.
void FunctionCleanup()
Cleans up after the function by writing the log, saving the history, and either sending the log to th...
static void Log(PvlGroup &results)
Writes Pvl results to sessionlog and printfile.
PvlGroup Accounting()
Creates accounting PvlGroup.
void SendParentData(QString, const QString &)
static void GuiLog(const Pvl &results)
Writes the Pvl results to the sessionlog, but not to the printfile.
static QString HostName()
Returns the host name.
void GuiReportError(IException &e)
Loads the error message into the gui, but does not write it to the session log.
int DirectIO()
Returns the current number of I/O's.
static QString Version()
The Isis Version for this application.
static QString Name()
Returns the name of the application.
void RegisterGuiHelpers(std::map< QString, void * > helpers)
int PageFaults()
Returns the current number of faults.
void ProcessGuiEvents()
Processes the gui events.
int ProcessSwaps()
Returns the current number of swaps.
static QString GetLibraryDependencies(QString file)
Runs ldd on linux and sun and otool on macs to get information about the applicaiton run.
static bool HasParent()
Returns whether the application has a parent or not.
static QString GetSystemDiskSpace()
Runs df to see the disk space availability.
void UpdateProgress(const QString &text, bool print)
Updates the progress bar in the gui.
void SendParentErrors(PvlObject &errors)
Sends errors to the parent.
UserInterface * p_ui
Pointer to a User Interface object.
static PvlGroup GetEnviromentInfo()
Runs some printenv commands that return Isis related Enviroment Variables.
static QString UserName()
Returns the user name.
void * GetGuiHelper(QString helper)
static UserInterface & GetUserInterface()
Returns the UserInterface object.
Application(int &argc, char *argv[])
Constuctor for the Application object.
void SetParentConnection(QLocalSocket *p_connection)
int FunctionError(IException &e)
Adds the error to the session log, sends the error to the parent if it has one, loads the error messa...
~Application()
Destroys the Application object.
static PvlGroup GetUnameInfo()
Runs various system specific uname commands and returns the results.
Gui for Isis Applications.
Definition Gui.h:73
Isis exception class.
Definition IException.h:91
Execute External Programs and Commands.
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.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16