1 /** 2 * UGENE - Integrated Bioinformatics Tools. 3 * Copyright (C) 2008-2021 UniPro <ugene@unipro.ru> 4 * http://ugene.net 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 9 * of the License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 19 * MA 02110-1301, USA. 20 */ 21 22 #ifndef _U2_APPCONTEXT_H_ 23 #define _U2_APPCONTEXT_H_ 24 25 #include <QObject> 26 27 #include "global.h" 28 29 namespace U2 { 30 31 template<class T> 32 class IdRegistry; 33 class AlignmentAlgorithmsRegistry; 34 class AnnotationSettingsRegistry; 35 class AppFileStorage; 36 class AppGlobalObject; 37 class AppSettings; 38 class AppSettingsGUI; 39 class AssemblyConsensusAlgorithmRegistry; 40 class AutoAnnotationsSupport; 41 class CDSearchFactoryRegistry; 42 class CMDLineRegistry; 43 class ConvertFactoryRegistry; 44 class CredentialsAsker; 45 class CudaGpuRegistry; 46 class DBXRefRegistry; 47 class DNAAlphabetRegistry; 48 class DNATranslationRegistry; 49 class DashboardInfoRegistry; 50 class DataBaseRegistry; 51 class DnaAssemblyAlgRegistry; 52 class DocumentFormatRegistry; 53 class ExternalToolRegistry; 54 class GObjectViewFactoryRegistry; 55 class GenomeAssemblyAlgRegistry; 56 class IOAdapterRegistry; 57 class MSAConsensusAlgorithmRegistry; 58 class MSADistanceAlgorithmRegistry; 59 class MainWindow; 60 class MolecularSurfaceFactoryRegistry; 61 class MsaColorSchemeRegistry; 62 class MsaHighlightingSchemeRegistry; 63 class OPCommonWidgetFactoryRegistry; 64 class OPWidgetFactoryRegistry; 65 class OpenCLGpuRegistry; 66 class PWMConversionAlgorithmRegistry; 67 class PasswordStorage; 68 class PasteFactory; 69 class PhyTreeGeneratorRegistry; 70 class PluginSupport; 71 class PluginViewer; 72 class Project; 73 class ProjectFilterTaskRegistry; 74 class ProjectLoader; 75 class ProjectService; 76 class ProjectView; 77 class ProtocolInfoRegistry; 78 class QDActorPrototypeRegistry; 79 class RecentlyDownloadedCache; 80 class RemoteMachineMonitor; 81 class RepeatFinderTaskFactoryRegistry; 82 class ResourceTracker; 83 class SWMulAlignResultNamesTagsRegistry; 84 class SWResultFilterRegistry; 85 class ScriptingToolRegistry; 86 class SecStructPredictAlgRegistry; 87 class ServiceRegistry; 88 class Settings; 89 class SmithWatermanTaskFactoryRegistry; 90 class SplicedAlignmentTaskRegistry; 91 class StructuralAlignmentAlgorithmRegistry; 92 class SubstMatrixRegistry; 93 class TaskScheduler; 94 class TestFramework; 95 class U2DataPathRegistry; 96 class U2DbiRegistry; 97 class UGUITestBase; 98 class UdrSchemaRegistry; 99 class VirtualFileSystemRegistry; 100 class WelcomePageAction; 101 class WorkflowScriptRegistry; 102 103 class U2CORE_EXPORT AppContext : public QObject { 104 Q_OBJECT 105 public: ~AppContext()106 virtual ~AppContext() { 107 } 108 getPluginSupport()109 static PluginSupport *getPluginSupport() { 110 return getInstance()->_getPluginSupport(); 111 } 112 getServiceRegistry()113 static ServiceRegistry *getServiceRegistry() { 114 return getInstance()->_getServiceRegistry(); 115 } 116 getProjectLoader()117 static ProjectLoader *getProjectLoader() { 118 return getInstance()->_getProjectLoader(); 119 } 120 getProject()121 static Project *getProject() { 122 return getInstance()->_getProject(); 123 } 124 getProjectService()125 static ProjectService *getProjectService() { 126 return getInstance()->_getProjectService(); 127 } 128 getPluginViewer()129 static PluginViewer *getPluginViewer() { 130 return getInstance()->_getPluginViewer(); 131 } 132 133 /** admin level, readonly settings*/ getGlobalSettings()134 static const Settings *getGlobalSettings() { 135 return getInstance()->_getGlobalSettings(); 136 } 137 138 /** per-user settings*/ getSettings()139 static Settings *getSettings() { 140 return getInstance()->_getSettings(); 141 } 142 143 /** structured and preloaded settings */ getAppSettings()144 static AppSettings *getAppSettings() { 145 return getInstance()->_getAppSettings(); 146 } 147 148 /** GUI for structured and preloaded settings */ getAppSettingsGUI()149 static AppSettingsGUI *getAppSettingsGUI() { 150 return getInstance()->_getAppSettingsGUI(); 151 } 152 getMainWindow()153 static MainWindow *getMainWindow() { 154 return getInstance()->_getMainWindow(); 155 } 156 getProjectView()157 static ProjectView *getProjectView() { 158 return getInstance()->_getProjectView(); 159 } 160 getDocumentFormatRegistry()161 static DocumentFormatRegistry *getDocumentFormatRegistry() { 162 return getInstance()->_getDocumentFormatRegistry(); 163 } 164 getIOAdapterRegistry()165 static IOAdapterRegistry *getIOAdapterRegistry() { 166 return getInstance()->_getIOAdapterRegistry(); 167 } 168 getDNATranslationRegistry()169 static DNATranslationRegistry *getDNATranslationRegistry() { 170 return getInstance()->_getDNATranslationRegistry(); 171 } 172 getDNAAlphabetRegistry()173 static DNAAlphabetRegistry *getDNAAlphabetRegistry() { 174 return getInstance()->_getDNAAlphabetRegistry(); 175 } 176 getObjectViewFactoryRegistry()177 static GObjectViewFactoryRegistry *getObjectViewFactoryRegistry() { 178 return getInstance()->_getObjectViewFactoryRegistry(); 179 } 180 getTaskScheduler()181 static TaskScheduler *getTaskScheduler() { 182 return getInstance()->_getTaskScheduler(); 183 } 184 getResourceTracker()185 static ResourceTracker *getResourceTracker() { 186 return getInstance()->_getResourceTracker(); 187 } 188 getAnnotationsSettingsRegistry()189 static AnnotationSettingsRegistry *getAnnotationsSettingsRegistry() { 190 return getInstance()->_getAnnotationsSettingsRegistry(); 191 } 192 getTestFramework()193 static TestFramework *getTestFramework() { 194 return getInstance()->_getTestFramework(); 195 } 196 getDBXRefRegistry()197 static DBXRefRegistry *getDBXRefRegistry() { 198 return getInstance()->_getDBXRefRegistry(); 199 } 200 getSubstMatrixRegistry()201 static SubstMatrixRegistry *getSubstMatrixRegistry() { 202 return getInstance()->_getSubstMatrixRegistry(); 203 } 204 getSmithWatermanTaskFactoryRegistry()205 static SmithWatermanTaskFactoryRegistry *getSmithWatermanTaskFactoryRegistry() { 206 return getInstance()->_getSmithWatermanTaskFactoryRegistry(); 207 } 208 getSWMulAlignResultNamesTagsRegistry()209 static SWMulAlignResultNamesTagsRegistry *getSWMulAlignResultNamesTagsRegistry() { 210 return getInstance()->_getSWMulAlignResultNamesTagsRegistry(); 211 } 212 getMolecularSurfaceFactoryRegistry()213 static MolecularSurfaceFactoryRegistry *getMolecularSurfaceFactoryRegistry() { 214 return getInstance()->_getMolecularSurfaceFactoryRegistry(); 215 } 216 getSWResultFilterRegistry()217 static SWResultFilterRegistry *getSWResultFilterRegistry() { 218 return getInstance()->_getSWResultFilterRegistry(); 219 } 220 getMsaColorSchemeRegistry()221 static MsaColorSchemeRegistry *getMsaColorSchemeRegistry() { 222 return getInstance()->_getMsaColorSchemeRegistry(); 223 } 224 getMsaHighlightingSchemeRegistry()225 static MsaHighlightingSchemeRegistry *getMsaHighlightingSchemeRegistry() { 226 return getInstance()->_getMsaHighlightingSchemeRegistry(); 227 } 228 getSecStructPredictAlgRegistry()229 static SecStructPredictAlgRegistry *getSecStructPredictAlgRegistry() { 230 return getInstance()->_getSecStructPredictAlgRegistry(); 231 } 232 getCudaGpuRegistry()233 static CudaGpuRegistry *getCudaGpuRegistry() { 234 return getInstance()->_getCudaGpuRegistry(); 235 } 236 getOpenCLGpuRegistry()237 static OpenCLGpuRegistry *getOpenCLGpuRegistry() { 238 return getInstance()->_getOpenCLGpuRegistry(); 239 } 240 getRecentlyDownloadedCache()241 static RecentlyDownloadedCache *getRecentlyDownloadedCache() { 242 return getInstance()->_getRecentlyDownloadedCache(); 243 } 244 getProtocolInfoRegistry()245 static ProtocolInfoRegistry *getProtocolInfoRegistry() { 246 return getInstance()->_getProtocolInfoRegistry(); 247 } 248 getRemoteMachineMonitor()249 static RemoteMachineMonitor *getRemoteMachineMonitor() { 250 return getInstance()->_getRemoteMachineMonitor(); 251 } 252 getPhyTreeGeneratorRegistry()253 static PhyTreeGeneratorRegistry *getPhyTreeGeneratorRegistry() { 254 return getInstance()->_getPhyTreeGeneratorRegistry(); 255 } 256 getCMDLineRegistry()257 static CMDLineRegistry *getCMDLineRegistry() { 258 return getInstance()->_getCMDLineRegistry(); 259 } 260 getMSAConsensusAlgorithmRegistry()261 static MSAConsensusAlgorithmRegistry *getMSAConsensusAlgorithmRegistry() { 262 return getInstance()->_getMSAConsensusAlgorithmRegistry(); 263 } 264 getMSADistanceAlgorithmRegistry()265 static MSADistanceAlgorithmRegistry *getMSADistanceAlgorithmRegistry() { 266 return getInstance()->_getMSADistanceAlgorithmRegistry(); 267 } 268 getAssemblyConsensusAlgorithmRegistry()269 static AssemblyConsensusAlgorithmRegistry *getAssemblyConsensusAlgorithmRegistry() { 270 return getInstance()->_getAssemblyConsensusAlgorithmRegistry(); 271 } 272 getPWMConversionAlgorithmRegistry()273 static PWMConversionAlgorithmRegistry *getPWMConversionAlgorithmRegistry() { 274 return getInstance()->_getPWMConversionAlgorithmRegistry(); 275 } 276 getVirtualFileSystemRegistry()277 static VirtualFileSystemRegistry *getVirtualFileSystemRegistry() { 278 return getInstance()->_getVirtualFileSystemRegistry(); 279 } 280 getDnaAssemblyAlgRegistry()281 static DnaAssemblyAlgRegistry *getDnaAssemblyAlgRegistry() { 282 return getInstance()->_getDnaAssemblyAlgRegistry(); 283 } 284 getGenomeAssemblyAlgRegistry()285 static GenomeAssemblyAlgRegistry *getGenomeAssemblyAlgRegistry() { 286 return getInstance()->_getGenomeAssemblyAlgRegistry(); 287 } 288 getRepeatFinderTaskFactoryRegistry()289 static RepeatFinderTaskFactoryRegistry *getRepeatFinderTaskFactoryRegistry() { 290 return getInstance()->_getRepeatFinderTaskFactoryRegistry(); 291 } 292 getAutoAnnotationsSupport()293 static AutoAnnotationsSupport *getAutoAnnotationsSupport() { 294 return getInstance()->_getAutoAnnotationsSupport(); 295 } 296 getCDSFactoryRegistry()297 static CDSearchFactoryRegistry *getCDSFactoryRegistry() { 298 return getInstance()->_getCDSFactoryRegistry(); 299 } 300 301 /** Registers application global resource */ registerGlobalObject(AppGlobalObject * obj)302 static void registerGlobalObject(AppGlobalObject *obj) { 303 return getInstance()->_registerGlobalObject(obj); 304 } 305 306 /** Unregisters application global resource */ unregisterGlobalObject(const QString & id)307 static void unregisterGlobalObject(const QString &id) { 308 return getInstance()->_unregisterGlobalObject(id); 309 } 310 311 /** Finds application global resource */ getGlobalObjectById(const QString & id)312 static AppGlobalObject *getGlobalObjectById(const QString &id) { 313 return getInstance()->_getGlobalObjectById(id); 314 } 315 getDataBaseRegistry()316 static DataBaseRegistry *getDataBaseRegistry() { 317 return getInstance()->_getDataBaseRegistry(); 318 } 319 getExternalToolRegistry()320 static ExternalToolRegistry *getExternalToolRegistry() { 321 return getInstance()->_getExternalToolRegistry(); 322 } 323 getQDActorProtoRegistry()324 static QDActorPrototypeRegistry *getQDActorProtoRegistry() { 325 return getInstance()->_getQDActorFactoryRegistry(); 326 } 327 getStructuralAlignmentAlgorithmRegistry()328 static StructuralAlignmentAlgorithmRegistry *getStructuralAlignmentAlgorithmRegistry() { 329 return getInstance()->_getStructuralAlignmentAlgorithmRegistry(); 330 } 331 getSplicedAlignmentTaskRegistry()332 static SplicedAlignmentTaskRegistry *getSplicedAlignmentTaskRegistry() { 333 return getInstance()->_getSplicedAlignmentTaskRegistry(); 334 } 335 getOPCommonWidgetFactoryRegistry()336 static OPCommonWidgetFactoryRegistry *getOPCommonWidgetFactoryRegistry() { 337 return getInstance()->_getOPCommonWidgetFactoryRegistry(); 338 } 339 getOPWidgetFactoryRegistry()340 static OPWidgetFactoryRegistry *getOPWidgetFactoryRegistry() { 341 return getInstance()->_getOPWidgetFactoryRegistry(); 342 } 343 getDbiRegistry()344 static U2DbiRegistry *getDbiRegistry() { 345 return getInstance()->_getDbiRegistry(); 346 } 347 getUdrSchemaRegistry()348 static UdrSchemaRegistry *getUdrSchemaRegistry() { 349 return getInstance()->_getUdrSchemaRegistry(); 350 } 351 getDataPathRegistry()352 static U2DataPathRegistry *getDataPathRegistry() { 353 return getInstance()->_getDataPathRegistry(); 354 } 355 isGUIMode()356 static bool isGUIMode() { 357 return getInstance()->_isGUIMode(); 358 } 359 getWorkflowScriptRegistry()360 static WorkflowScriptRegistry *getWorkflowScriptRegistry() { 361 return getInstance()->_getWorkflowScriptRegistry(); 362 } 363 getActiveWindowName()364 static QString getActiveWindowName() { 365 return getInstance()->_getActiveWindowName(); 366 } setActiveWindowName(const QString & name)367 static void setActiveWindowName(const QString &name) { 368 getInstance()->_setActiveWindowName(name); 369 } 370 getAppFileStorage()371 static AppFileStorage *getAppFileStorage() { 372 return getInstance()->_getAppFileStorage(); 373 } 374 getAlignmentAlgorithmsRegistry()375 static AlignmentAlgorithmsRegistry *getAlignmentAlgorithmsRegistry() { 376 return getInstance()->_getAlignmentAlgorithmsRegistry(); 377 } 378 getScriptingToolRegistry()379 static ScriptingToolRegistry *getScriptingToolRegistry() { 380 return getInstance()->_getScriptingToolRegistry(); 381 } 382 getConvertFactoryRegistry()383 static ConvertFactoryRegistry *getConvertFactoryRegistry() { 384 return getInstance()->_getConvertFactoryRegistry(); 385 } 386 getWelcomePageActionRegistry()387 static IdRegistry<WelcomePageAction> *getWelcomePageActionRegistry() { 388 return getInstance()->_getWelcomePageActionRegistry(); 389 } 390 getWorkingDirectoryPath()391 static QString getWorkingDirectoryPath() { 392 return getInstance()->_getWorkingDirectoryPath(); 393 } 394 getCredentialsAsker()395 static CredentialsAsker *getCredentialsAsker() { 396 return getInstance()->_getCredentialsAsker(); 397 } 398 getPasswordStorage()399 static PasswordStorage *getPasswordStorage() { 400 return getInstance()->_getPasswordStorage(); 401 } 402 getProjectFilterTaskRegistry()403 static ProjectFilterTaskRegistry *getProjectFilterTaskRegistry() { 404 return getInstance()->_getProjectFilterTaskRegistry(); 405 } 406 getPasteFactory()407 static PasteFactory *getPasteFactory() { 408 return getInstance()->_getPasteFactory(); 409 } 410 getDashboardInfoRegistry()411 static DashboardInfoRegistry *getDashboardInfoRegistry() { 412 return getInstance()->_getDashboardInfoRegistry(); 413 } 414 415 protected: getInstance()416 static AppContext *getInstance() { 417 assert(instance); 418 return instance; 419 } 420 421 virtual PluginSupport *_getPluginSupport() const = 0; 422 virtual ServiceRegistry *_getServiceRegistry() const = 0; 423 virtual ProjectLoader *_getProjectLoader() const = 0; 424 virtual Project *_getProject() const = 0; 425 virtual ProjectService *_getProjectService() const = 0; 426 virtual PluginViewer *_getPluginViewer() const = 0; 427 virtual Settings *_getSettings() const = 0; 428 virtual Settings *_getGlobalSettings() const = 0; 429 virtual MainWindow *_getMainWindow() const = 0; 430 virtual ProjectView *_getProjectView() const = 0; 431 virtual DocumentFormatRegistry *_getDocumentFormatRegistry() const = 0; 432 virtual IOAdapterRegistry *_getIOAdapterRegistry() const = 0; 433 virtual DNATranslationRegistry *_getDNATranslationRegistry() const = 0; 434 virtual DNAAlphabetRegistry *_getDNAAlphabetRegistry() const = 0; 435 virtual GObjectViewFactoryRegistry *_getObjectViewFactoryRegistry() const = 0; 436 virtual TaskScheduler *_getTaskScheduler() const = 0; 437 virtual ResourceTracker *_getResourceTracker() const = 0; 438 virtual AnnotationSettingsRegistry *_getAnnotationsSettingsRegistry() const = 0; 439 virtual AppSettings *_getAppSettings() const = 0; 440 virtual AppSettingsGUI *_getAppSettingsGUI() const = 0; 441 virtual TestFramework *_getTestFramework() const = 0; 442 virtual DBXRefRegistry *_getDBXRefRegistry() const = 0; 443 virtual SubstMatrixRegistry *_getSubstMatrixRegistry() const = 0; 444 virtual SmithWatermanTaskFactoryRegistry *_getSmithWatermanTaskFactoryRegistry() const = 0; 445 virtual MolecularSurfaceFactoryRegistry *_getMolecularSurfaceFactoryRegistry() const = 0; 446 virtual SWMulAlignResultNamesTagsRegistry *_getSWMulAlignResultNamesTagsRegistry() const = 0; 447 virtual SWResultFilterRegistry *_getSWResultFilterRegistry() const = 0; 448 virtual MsaColorSchemeRegistry *_getMsaColorSchemeRegistry() const = 0; 449 virtual MsaHighlightingSchemeRegistry *_getMsaHighlightingSchemeRegistry() const = 0; 450 virtual SecStructPredictAlgRegistry *_getSecStructPredictAlgRegistry() const = 0; 451 virtual CudaGpuRegistry *_getCudaGpuRegistry() const = 0; 452 virtual OpenCLGpuRegistry *_getOpenCLGpuRegistry() const = 0; 453 virtual RecentlyDownloadedCache *_getRecentlyDownloadedCache() const = 0; 454 virtual ProtocolInfoRegistry *_getProtocolInfoRegistry() const = 0; 455 virtual RemoteMachineMonitor *_getRemoteMachineMonitor() const = 0; 456 virtual PhyTreeGeneratorRegistry *_getPhyTreeGeneratorRegistry() const = 0; 457 virtual CMDLineRegistry *_getCMDLineRegistry() const = 0; 458 virtual MSAConsensusAlgorithmRegistry *_getMSAConsensusAlgorithmRegistry() const = 0; 459 virtual MSADistanceAlgorithmRegistry *_getMSADistanceAlgorithmRegistry() const = 0; 460 virtual AssemblyConsensusAlgorithmRegistry *_getAssemblyConsensusAlgorithmRegistry() const = 0; 461 virtual PWMConversionAlgorithmRegistry *_getPWMConversionAlgorithmRegistry() const = 0; 462 virtual VirtualFileSystemRegistry *_getVirtualFileSystemRegistry() const = 0; 463 virtual DnaAssemblyAlgRegistry *_getDnaAssemblyAlgRegistry() const = 0; 464 virtual GenomeAssemblyAlgRegistry *_getGenomeAssemblyAlgRegistry() const = 0; 465 virtual DataBaseRegistry *_getDataBaseRegistry() const = 0; 466 virtual ExternalToolRegistry *_getExternalToolRegistry() const = 0; 467 virtual RepeatFinderTaskFactoryRegistry *_getRepeatFinderTaskFactoryRegistry() const = 0; 468 virtual QDActorPrototypeRegistry *_getQDActorFactoryRegistry() const = 0; 469 virtual StructuralAlignmentAlgorithmRegistry *_getStructuralAlignmentAlgorithmRegistry() const = 0; 470 virtual AutoAnnotationsSupport *_getAutoAnnotationsSupport() const = 0; 471 virtual U2DbiRegistry *_getDbiRegistry() const = 0; 472 virtual UdrSchemaRegistry *_getUdrSchemaRegistry() const = 0; 473 virtual CDSearchFactoryRegistry *_getCDSFactoryRegistry() const = 0; 474 virtual SplicedAlignmentTaskRegistry *_getSplicedAlignmentTaskRegistry() const = 0; 475 virtual OPCommonWidgetFactoryRegistry *_getOPCommonWidgetFactoryRegistry() const = 0; 476 virtual OPWidgetFactoryRegistry *_getOPWidgetFactoryRegistry() const = 0; 477 virtual WorkflowScriptRegistry *_getWorkflowScriptRegistry() const = 0; 478 virtual AppFileStorage *_getAppFileStorage() const = 0; 479 virtual AlignmentAlgorithmsRegistry *_getAlignmentAlgorithmsRegistry() const = 0; 480 virtual U2DataPathRegistry *_getDataPathRegistry() const = 0; 481 virtual ScriptingToolRegistry *_getScriptingToolRegistry() const = 0; 482 virtual CredentialsAsker *_getCredentialsAsker() const = 0; 483 virtual PasswordStorage *_getPasswordStorage() const = 0; 484 virtual ConvertFactoryRegistry *_getConvertFactoryRegistry() const = 0; 485 virtual IdRegistry<WelcomePageAction> *_getWelcomePageActionRegistry() const = 0; 486 virtual ProjectFilterTaskRegistry *_getProjectFilterTaskRegistry() const = 0; 487 virtual PasteFactory *_getPasteFactory() const = 0; 488 virtual DashboardInfoRegistry *_getDashboardInfoRegistry() const = 0; 489 490 virtual void _registerGlobalObject(AppGlobalObject *go) = 0; 491 virtual void _unregisterGlobalObject(const QString &id) = 0; 492 virtual AppGlobalObject *_getGlobalObjectById(const QString &id) const = 0; 493 virtual bool _isGUIMode() const = 0; 494 virtual QString _getActiveWindowName() const = 0; 495 virtual void _setActiveWindowName(const QString &name) = 0; 496 virtual QString _getWorkingDirectoryPath() const = 0; 497 498 static AppContext *instance; 499 }; 500 501 } // namespace U2 502 503 #endif 504