/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
#include <ProToolkit.h>
#include <ProFeature.h>
#include <ProAnnotationElem.h>
#include <ProAnnotationFeat.h>
#include <ProWindows.h>
#include <ProUtil.h>
#include <PTUDFExamples.h>
#include <PTApplsUnicodeUtils.h>
static ProBoolean append_to_file;
/*====================================================================*\
FUNCTION: PTUDFExAEParamsWrite
PURPOSE: Write AE params to a file.
\*====================================================================*/
static ProError PTUDFExAEParamsWrite (ProAnnotationElem* elem,
PTUDFExParamInfoFormat format,
wchar_t* file_name)
{
status = PTUDFExParamInfoWrite (elem, format, file_name, append_to_file,
NULL, NULL);
append_to_file = PRO_B_TRUE;
return (PRO_TK_NO_ERROR);
}
/*====================================================================*\
FUNCTION: PTUDFExAEParamsWriteTxt
PURPOSE: Write AE params to a file using text based format.
\*====================================================================*/
ProError PTUDFExAEParamsWriteTxt (ProAnnotationElem* elem,
ProError filter_status,
ProAppData app_data)
{
wchar_t* filename = (wchar_t*) app_data;
status = PTUDFExAEParamsWrite (elem, PT_UDF_EX_PARAM_INFO_TEXT, filename);
/* Write constraints on the AE parameters */
PTUDFExAEConstraintsWrite (elem, filename, PRO_B_TRUE);
return (status);
}
/*====================================================================*\
FUNCTION: PTUDFExAEParamsWriteCSV
PURPOSE: Write AE params to a file using CSV based format.
\*====================================================================*/
ProError PTUDFExAEParamsWriteCSV (ProAnnotationElem* elem,
ProError filter_status,
ProAppData app_data)
{
wchar_t* filename = (wchar_t*) app_data;
return (PTUDFExAEParamsWrite (elem, PT_UDF_EX_PARAM_INFO_CSV, filename));
}
/*====================================================================*\
FUNCTION: PTUDFExPostLibraryEditAction
PURPOSE: Notification function to write AE param info when a .gph file is
created or modified.
\*====================================================================*/
ProError PTUDFExPostLibraryEditAction(ProName name, ProFeature* features)
{
ProFileName file_name;
ProFileName csv_file_name;
int num_feats;
ProPath dir_path, path;
int window_id;
int i;
ProWstringCopy (name, file_name, PRO_VALUE_UNUSED);
ProWstringCopy (name, csv_file_name, PRO_VALUE_UNUSED);
ProWstringConcatenate (L".txt", file_name, PRO_VALUE_UNUSED);
ProWstringConcatenate (L".csv", csv_file_name, PRO_VALUE_UNUSED);
/*----------------------------------------------------------------------*\
Features would be NULL if the .gph file is Standalone and being
modified without its reference model in session.
\*----------------------------------------------------------------------*/
if (features != NULL)
{
status = ProArraySizeGet (features, &num_feats);
PT_TEST_LOG_SUCC ("ProArraySizeGet()");
append_to_file = PRO_B_FALSE;
for (i = 0; i < num_feats; i++)
{
status = ProFeatureAnnotationelemsVisit (&features [i],
PTUDFExAEParamsWriteTxt,
NULL,
file_name);
}
append_to_file = PRO_B_FALSE;
for (i = 0; i < num_feats; i++)
{
status = ProFeatureAnnotationelemsVisit (&features [i],
PTUDFExAEParamsWriteCSV,
NULL,
csv_file_name);
}
}
if (show_ui)
{
/*----------------------------------------------------------------------*\
Show the text results in the browser window for review.
\*----------------------------------------------------------------------*/
ProDirectoryCurrentGet (dir_path);
ProStringToWstring (path, "file://");
ProWstringConcatenate (dir_path, path,
PRO_VALUE_UNUSED);
ProWstringConcatenate (file_name, path, PRO_VALUE_UNUSED);
ProWindowCurrentGet (&window_id);
ProWindowURLShow(window_id, path);
PT_TEST_LOG_SUCC ("ProWindowURLShow()");
}
return (PRO_TK_NO_ERROR);
}