/*****************************************************************************\
FILE    : UgViewsList.c
PURPOSE : Pro/TOOLKIT User Guide - drawing view creation
HISTORY..
DATE      BUILD   AUTHOR    MODIFICATIONS
04-Dec-97 H-02-02 Philippe  $$1    Created
\*****************************************************************************/
/*-------------------------- Pro/Develop includes ---------------------------*/
#include <prodevelop.h>
#include <select3d.h>

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

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



/*---------------------------------------------------------------------------*\
Function : UserViewsList()
Purpose : List all the Views in a drawing
\*---------------------------------------------------------------------------*/
ProError UserViewsList() 
{
   int         	status;
   ProMdl  	p_draw;
   ProMdldata   drawing_data;
   char         drawing_name[PRO_NAME_SIZE];
   char         drawing_type[PRO_TYPE_SIZE];
   int        	view_id, sheet; 
   double     	outline[2][3]; 
   double     	view_scale;
   FILE *      	fp;
   ProCharName  filename = {'v','i','e','w','s','.','l','s','t','\0'};
   ProFileName  wfilename;

   /*------------------------------------------*\
     get information about the current drawing
   \*------------------------------------------*/
   status = ProMdlCurrentGet( &p_draw);
   ERROR_CHECK( "UserViewsList", "ProMdlCurrentGet", status );
   if (status != PRO_TK_NO_ERROR) return(status);

   status = ProMdlDataGet( p_draw, &drawing_data);
   ERROR_CHECK( "UserViewsList", "ProMdlDataGet", status );
   if (status != PRO_TK_NO_ERROR) return(status);

   /*------------------------------------------*\
     Open file and write drawing data as header
   \*------------------------------------------*/
   fp = fopen(filename, "w");
   ProWstringToString(drawing_name, drawing_data.name);
   ProWstringToString(drawing_type, drawing_data.type);
   fprintf(fp, "%s.%s contains the following views :\n",
                drawing_name, drawing_type);

   /*------------------------------------------*\
     Visit all the views in this drawing
   \*------------------------------------------*/
   for (view_id = prodrw_get_first_view_id ((Prohandle) p_draw);
        view_id > -1;
        view_id = prodrw_get_next_view_id ((Prohandle) p_draw, view_id))
   {
        sheet = prodrw_get_view_sheet ((Prohandle) p_draw, view_id);
        ERROR_CHECK( "UserViewsList", "prodrw_get_view_sheet", (sheet < 0));
	if (sheet < 0) return (PRO_TK_GENERAL_ERROR);
 
        status = prodrw_get_view_outline ((Prohandle) p_draw, 
					  view_id, outline);
        ERROR_CHECK( "UserViewsList", "prodrw_get_view_outline",(status <=0));
        if (status <=0) return (PRO_TK_GENERAL_ERROR);

        status = prodrw_get_view_scale ((Prohandle) p_draw, 
					view_id, &view_scale);
        ERROR_CHECK( "UserViewsList", "prodrw_get_view_scale",(status <=0));
        if (status <=0) return (PRO_TK_GENERAL_ERROR);

        fprintf (fp,"  View %d, sheet %d :-\n", view_id, sheet); 
        fprintf (fp,"    Bottom left %5.2f, %5.2f\n", outline[0][0],
                     outline[0][1]);
        fprintf (fp,"    Top right   %5.2f, %5.2f\n", outline[1][0],
                     outline[1][1]);
        fprintf (fp,"    Scale %f\n", view_scale); 
   }

   fclose(fp);

   /*------------------------------------------*\
     display the file in an information window
   \*------------------------------------------*/
   ProStringToWstring(wfilename, filename);
   status = ProInfoWindowDisplay(wfilename, NULL, NULL);
   ERROR_CHECK( "UserViewsList", "ProInfoWindowDisplay", status );
   return(status);
}
