/*
	Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/


/*-------------------------- Pro/Toolkit includes ---------------------------*/
#include <ProToolkit.h>
#include <ProMdl.h>
#include <ProCsys.h>

/*-------------------------- Application includes ---------------------------*/
#include <TestError.h>



/*================================================================*\
FUNCTION  : UserSheetCopy()
PURPOSE   : Adds a drawing sheet to the current drawing-type object
\*================================================================*/
ProError UserSheetCopy ()
{
    ProError       status;
    int            win_id, sheet_num;
    ProCharLine	   astr;
    ProDrawing 	   drawing;
    ProMdl mdl;
    int sheet_to_copy, sheet_copy;
    ProMdlType type;
    ProFileName WMSGFIL = {'m','s','g','_','u','g','d','w','g','.','t','x','t','\0'};

    ProTKSprintf (astr, "Inside UserSheetCopy()");
    status = ProMessageDisplay (WMSGFIL,"USER %0s", astr); 
    
    /*------------------------------------------------------------*\
      Get the current model 
    \*------------------------------------------------------------*/
    status = ProMdlCurrentGet(&mdl);
    ERROR_CHECK("UserSheetCopy","ProMdlCurrentGet", status);
    if (status != PRO_TK_NO_ERROR) return(status);

    status = ProMdlTypeGet(mdl, &type);
    ERROR_CHECK("UserSheetCopy","ProMdlTypeGet",status);
    if (status != PRO_TK_NO_ERROR) return(status);
    
    if(type != PRO_DRAWING)
    {
    	ProTKSprintf (astr, "Current model is not a drawing!", status);
    	status = ProMessageDisplay (WMSGFIL,"USER %0s", astr);
    	ERROR_CHECK("UserSheetCopy","ProMessageDisplay",status);
	return(PRO_TK_GENERAL_ERROR);
    }

    /*------------------------------------------------------------*\
      Create a copy of the current drawing sheet.
    \*------------------------------------------------------------*/
    
    sheet_to_copy = -1;
    
    status = ProDrawingSheetCopy((ProDrawing)mdl, sheet_to_copy, &sheet_copy);
    ERROR_CHECK("UserSheetCopy","ProDrawingSheetCopy", 
    			(status != PRO_TK_NO_ERROR));  

    if (status != PRO_TK_NO_ERROR) return (status);

    /*------------------------------------------------------------*\
      Print a message in the message window
    \*------------------------------------------------------------*/
    if (status != PRO_TK_NO_ERROR)
     {
	ProTKSprintf (astr, "Error %d while adding sheet", status);
    	status = ProMessageDisplay (WMSGFIL,"USER %0s", astr);
    	ERROR_CHECK("UserSheetCopy","ProMessageDisplay",status);
	return(PRO_TK_GENERAL_ERROR);
     }

    ProTKSprintf (astr, "Sheet No. %0d added to drawing.", sheet_copy);
    status = ProMessageDisplay (WMSGFIL,"USER %0s", astr); 
    ERROR_CHECK("UserSheetCopy","ProMessageDisplay",status);

    /*------------------------------------------------------------*\
      Update the changes by repainting the window
    \*------------------------------------------------------------*/
    status = ProWindowCurrentGet(&win_id);
    ERROR_CHECK("UserSheetCopy","ProWindowCurrentGet",status);
    if (status != PRO_TK_NO_ERROR) return(status);

    status = ProWindowRepaint (win_id);
    ERROR_CHECK("UserSheetCopy","ProWindowRepaint",status);
    return(status);
}