/***************************************************************************
 *                          Zanoza Modeler v2.x                            *
 *      This is unpublished propietary source code of Zanoza Software.     *
 *      The copyright notice does not evidence any actual or intended      *
 *                    publication of such source code.                     *
 *                                                                         *
 *                Copyright (c) 2002-2003 Zanoza Software.                 *
 *                                                                         *
 *                        All rights reserved.                             *
 ***************************************************************************
 *--------------------------------------------------------------------------
 * @author:   Oleg M.
 *--------------------------------------------------------------------------
 * @purpose:  ZModeler 2.x services helper classes
 *--------------------------------------------------------------------------
 * @histroy: 03.04.2003. Created
 */
#ifndef serviceshelper_h_included
#define serviceshelper_h_included

#include <services/IDialogSizingService.h>
#include <services/IProfilingService.h>
#include <services/IDialogDisplayService.h>
#include <services/IErrorMessagingService.h>
#include <services/IMessageBoxService.h>
#include <services/IMultyDialogDisplayService.h>
#include <services/IMenuService.h>
#include <services/INodeService.h>
#include <services/IConfigurationService.h>
#include <services/IViewportService.h>
#include <services/IXMLParseService.h>
#include <services/IMaterialsService.h>
#include <services/ITexturesService.h>
#include <services/IBindService.h>
#include <services/IHotkeysService.h>
#include <services/ISnappingService.h>
#include <services/IPropertiesService.h>
#include <services/IOpenSaveService.h>
#include <services/IImportExportService.h>
#include <services/IUndoService.h>
#include <services/ITimerService.h>
#include <services/ILocalizationService.h>

namespace services
{
  DLL_LINKAGE ZRESULT ZAPICALL getErrorMessagingService(IErrorMessagingService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getMessageBoxService(IMessageBoxService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getDialogSizingService(IDialogSizingService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getProfilingService(IProfilingService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getDialogDisplayService(IDialogDisplayService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getMultyDialogDisplayService(IMultyDialogDisplayService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getMainMenuService(IMenuService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getConfigurationService(IConfigurationService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getViewportService(IViewportService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getXMLParseService(IXMLParseService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getMaterialsService(IMaterialsService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getTexturesService(ITexturesService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getBindService(ZString strClassName, IBindService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getHotkeysService(IHotkeysService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getSnappingService(ISnappingService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getPropertiesService(IPropertiesService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getStaticPropertiesConfiguration(IPropertiesService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getOpenSaveService(IOpenSaveService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getImportExportService(IImportExportService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getUndoService(IUndoService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getTimerService(ITimerService** ppService);
  DLL_LINKAGE ZRESULT ZAPICALL getLocalizationService(ILocalizationService** ppService);

  //helper routines
  DLL_LINKAGE ZRESULT ZAPICALL createService(LPCTSTR strClass, LPCSTR _IID_, void** ppResult);

  //-------------------------------------------------------
  // @name : markConfigMidification
  // marks changes in configuration service. 
  //
  // @return ZRESULT : 
  //-------------------------------------------------------
  DLL_LINKAGE ZRESULT ZAPICALL markConfigMidification();

  //-------------------------------------------------------
  // @name : ZAPICALL localizeResource
  // Initializes resource localization
  // @param LPTSTR pszBranch               :
  // @param CWnd* pWnd                     : 
  //
  // @return DLL_LINKAGE ZRESULT : 
  //-------------------------------------------------------
  DLL_LINKAGE ZRESULT ZAPICALL localizeResource(LPTSTR pszBranch, CWnd* pWnd, ZString* pTitle = NULL);

};//services


#endif //serviceshelper_h_included



