~ubuntu-branches/ubuntu/trusty/ginkgocadx/trusty

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
/*
 *  
 *  $Id: entorno.h $
 *  Ginkgo CADx Project
 *
 *  Copyright 2008-12 MetaEmotion S.L. All rights reserved.
 *  http://ginkgo-cadx.com
 *
 *  This file is licensed under LGPL v3 license.
 *  See License.txt for details
 *
 *
 */
#pragma once
#include <list>
#include <string>

#include <api/internal.h>
#include <api/globals.h>
#include <api/ientorno.h>
#include <api/ilock.h>

class VentanaPrincipal;
class wxWindow;
class wxApp;
class wxSizer;

namespace GNC {
	namespace GCS {
		class IExtensionsObserver;
		class IObservadorVistas;
		class IEventsController;
	}
}

namespace GNC {
	class Entorno : public GNC::GCS::IEntorno {
	public:

		typedef std::list<GNC::GCS::IExtensionsObserver*> ExtensionsObserversList;
		typedef std::list<GNC::GCS::IObservadorVistas*>   ViewsObserversList;
		
		bool m_isChildInstance;

	protected:

		/* Constructor */
		Entorno();
		/* Destructor */
		~Entorno();

		static Entorno* m_pInstancia;

	public:
		static Entorno* Instance();
		static void FreeInstance();
		
		
		bool IsChildInstance() {
			return m_isChildInstance;
		}
		
		void SetChildInstance(bool child) {
			m_isChildInstance = child;
		}

		// Miembros estaticos

		//region version

		/** Gets the GinkgoCADx version full string **/
		virtual const std::string& GetGinkgoVersionString();

		/** Gets the GinkgoCADx version string **/
		virtual std::string GetGinkgoVersion();

		/** Gets the revision mark (incremental) **/
		virtual int GetGinkgoRevision();

		/** Gets the build mark (incremental) **/
		virtual std::string GetGinkgoBuild();

		/** Gets the mayor version number **/
		virtual int GetGinkgoMayorVersionNumber();
		
		/** Gets the mayor version minor **/
		virtual int GetGinkgoMinorVersionNumber();

		/** Gets the application name */
		virtual std::string GetApplicationName();

		/** Gets the application subtitle */
		virtual std::string GetApplicationSubTitle();
		
		/** Gets the application credits */
		virtual std::string GetApplicationCredits();

		/** Gets the application eula */
		virtual std::string GetApplicationEula();
		//endregion
		
		//region license
		virtual const std::string& GetLicenseMessage();
		virtual void SetLicenseMessage(const std::string& license);
		
		virtual const std::string& GetGinkgoCopyRight();
		//enregion

		//region helpers
		virtual int ParseSVNBuild(const char* str);
		//endregion

		virtual const std::string& GetPluginsPath();
		virtual const std::string& GetGinkgoUserDir();
		virtual const std::string& GetGinkgoTempDir();
		virtual std::string CreateGinkgoTempDir();
		virtual void RemoveDirRecursive(const std::string& path);
		virtual std::string CreateGinkgoTempFile();
		virtual const std::string& GetGinkgoLanguageDir();
		virtual const std::string& GetGinkgoResourcesDir();
		virtual std::string CrearDirectorioTemporal();
		virtual std::string  GetDicomLocalAET();

		std::string ParseAET(const std::string& AET);

		virtual wxApp* GetApp();
		virtual void SetApp(wxApp* app);

		virtual void YieldApp();

		virtual VentanaPrincipal* GetVentanaPrincipal();
		virtual void SetVentanaPrincipal(VentanaPrincipal* ventana);

		virtual wxWindow* GetVentanaRaiz();
		virtual void SetVentanaRaiz(wxWindow* window);

		virtual GNC::GCS::ICommandController* GetCommandController();

		virtual GIL::DICOM::IPACSController* GetPACSController();

		virtual GNC::GCS::IControladorVistas* GetControladorVistas();

		virtual GNC::GCS::IEventsController* GetControladorEventos();

		virtual GNC::GCS::IControladorCarga* GetControladorCarga();

		virtual GNC::GCS::IControladorPermisos* GetControladorPermisos();

		virtual GNC::GCS::IControladorExtensiones* GetControladorExtensiones();

		virtual GNC::GCS::IControladorAcciones*  GetControladorAcciones();

		virtual GNC::GCS::IControladorInternacionalizacion*  GetControladorInternacionalizacion();

		virtual GNC::GCS::IConfigurationController* GetConfigurationController();

		virtual GNC::GCS::IWidgetsManager* NewWidgetsManager(GNC::GCS::IVista* pVista);
		virtual void FreeWidgetsManager(GNC::GCS::IWidgetsManager* pManager);

		virtual GNC::GCS::IEntorno::MapaUbicaciones& GetUbicaciones() { return m_Ubicaciones; }


//------------------------------------------------------------------------------
//region "Extensions observers registry interface"

	public:
		virtual void RegisterExtensionsObserver(GNC::GCS::IExtensionsObserver* observer);
		virtual void UnRegisterExtensionsObserver(GNC::GCS::IExtensionsObserver* observer);
	
	public: // TODO
		ExtensionsObserversList ExtensionsObservers;
		GNC::GCS::ILockable ExtensionsObserversLock;
//endregion

//------------------------------------------------------------------------------
//region "Views observers registry interface"

	public:
		virtual void RegisterViewsObserver(GNC::GCS::IObservadorVistas* observer);
		virtual void UnRegisterViewsObserver(GNC::GCS::IObservadorVistas* observer);
		
	public: // TODO
		ViewsObserversList ViewsObservers;
		GNC::GCS::ILockable ViewsObserversLock;
//endregion

	private:
		std::string m_GinkgoVersion;
		std::string m_GinkgoCopyRight;
		std::string m_GinkgoPluginsDir;
		std::string m_GinkgoUserDir;
		std::string m_GinkgoTempDir;
		std::string m_GinkgoLanguageDir;
		std::string m_GinkgoResourcesDir;
		std::string m_GinkgoLicenseMessage;

		int m_mayorVersionNumber;
		int m_minorVersionNumber;

		wxApp* m_pApp;
		VentanaPrincipal* m_pVentanaPrincipal;
		wxWindow* m_pVentanaRaiz;

		friend class ::VentanaPrincipal;
	};
}