// mainfunctions.cpp
#include "stdafx.h"
#include "InternalView.h"

char *plug_name = "Интеграция с kAssist";  // Имя плагина
char *plug_descr = "Интеграция с kAssist"; // Описание плагина

extern HINSTANCE _hDllInst;

__declspec(dllexport) char* GetAddInName() {return plug_name; }
__declspec(dllexport) char* GetAddInDescription() {return plug_descr;}

__declspec (dllexport) bool add_function_0_1(CaplAPI* api, aplExtent& inExtent, bool bUpdateUI, aplExtent &out_ext, int &out_cmd);
__declspec (dllexport) bool add_function_0_2(CaplAPI* api, aplExtent& inExtent, bool bUpdateUI, aplExtent &out_ext, int &out_cmd);
__declspec (dllexport) bool add_references(CaplAPI* api, aplExtent& inExtent, bool bUpdateUI, aplExtent &out_ext, int &out_cmd);
__declspec (dllexport) bool check_references(CaplAPI* api, aplExtent& inExtent, bool bUpdateUI, aplExtent &out_ext, int &out_cmd);


// Здесь задаются функции меню
CaplItemInfo functionArray []=
{
	// Внимание!  add_function_01, add_function_02 и т.д. - это названия функций.
	// Чтобы они работали надо не забыть прописать их номера в файле plg_kAssist.def

	// Добавляем пункт в главное меню
	CaplItemInfo(aplPopUp, "", "ТехЭксперт\\Функция 1", "add_function_0_1", IDI_ICON1, -1,""),
	CaplItemInfo(aplPopUp, "", "ТехЭксперт\\Функция 2", "add_function_0_2", -1, -1,""),
	
	// Добавляем пункт в контекстное меню изделия
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_PRODUCT, "[4]", "", -1, -1,""), // разделитель
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_PRODUCT, "[5]ТехЭксперт\\Добавить ссылки", "add_references", IDI_ADD, -1,""),
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_PRODUCT, "[5]ТехЭксперт\\Проверить ссылки", "check_references", IDI_CHECK, -1,""),

	// Добавляем пункт в контекстное меню документа
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_DOCUMENT, "[4]", "", -1, -1,""), // разделитель
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_DOCUMENT, "[5]", "", -1, -1,""), // разделитель
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_DOCUMENT, "[5]ТехЭксперт\\Добавить ссылки", "add_references", IDI_ADD, -1,""),
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_DOCUMENT, "[5]ТехЭксперт\\Проверить ссылки", "check_references", IDI_CHECK, -1,""),

	// Добавляем пункт в контекстное меню справочника
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_CLASSIFIERSYSTEM, "[4]", "", -1, -1,""), // разделитель
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_CLASSIFIERSYSTEM, "[4]ТехЭксперт\\Добавить ссылки", "add_references", IDI_ADD, -1,""),
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_CLASSIFIERSYSTEM, "[4]ТехЭксперт\\Проверить ссылки", "check_references", IDI_CHECK, -1,""),

	// Добавляем пункт в контекстное меню элемента справочника
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_CLASSIFIERLEVEL, "[4]", "", -1, -1,""), // разделитель
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_CLASSIFIERLEVEL, "[4]ТехЭксперт\\Добавить ссылки", "add_references", IDI_ADD, -1,""),
	CaplItemInfo(aplPopUp, APL_TREE_ITEM_CLASSIFIERLEVEL, "[4]ТехЭксперт\\Проверить ссылки", "check_references", IDI_CHECK, -1,""),

};


//************************************************************************
__declspec(dllexport) bool GetFunctionsList(CArray<CaplItemInfo*, CaplItemInfo*> *strArray)
{
	int functionArraySize= sizeof(functionArray)/sizeof(CaplItemInfo);
	for(int i= 0; i<functionArraySize; i++) strArray->Add(&functionArray[i]);
	return true;
}



UINT iItemTypes = 0
| APL_PRD_ITEM   // Показывать на изделих
| APL_PDF_ITEM   // Показывать на версиях изделий
| APL_DOC_ITEM  // Показывать на документах
| APL_DOC_REVISION_ITEM  // Показывать на версяих документов
| APL_CLASSIFIER_LEVEL_ITEM; // Показывать на элементах структуры справочника



// Создание вкладки
__declspec(dllexport) bool CreateTabViewsEx(CWnd* parent, RECT Rect, UINT *msg, CaplAddinViews *views)
{
	/* Элементы msg
	1 - Update Tree Item
	2 - Disconnect Message
	*/
	if(views==0) return true;
	if(parent==0) return false;
	if(msg<0) return false;
	CInternalView* view = (CInternalView*)(RUNTIME_CLASS(CInternalView)->CreateObject());
	if(view==0) return false;
	CaplSetResourceHandle setres(_hDllInst);
	view->Create(0,0,WS_VISIBLE|WS_CHILD|WS_BORDER,Rect,parent,IDD_DOCTABVIEW,NULL);
	HICON ico=LoadIcon(_hDllInst,MAKEINTRESOURCE(IDI_KASSIST));
	if(ico!=0) view->SetIcon(ico,FALSE);
	view->OnInitialUpdate();
	view->ShowWindow(SW_HIDE);
	view->m_update_msg = msg[0];
	view->m_disconnect_msg = msg[1];
	views->AddView(view, iItemTypes, 1, APL_T("kAssist"), APL_T("kAssist"));
	return true;
}

// Подготовка данных для отображения при подключении плагинов
__declspec(dllexport) bool GetTabViews(CaplAddinViews *views) // То отображать в диалоге настроект плагинов
{
	views->AddView(0, iItemTypes, 1, APL_T("kAssist"), APL_T("kAssist"));
	return true;
}

