/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*-------------------------- Pro/Toolkit includes ---------------------------*/
#include <ProToolkit.h>
#include <ProMdl.h>
#include <ProCsys.h>
#include <ProDrawing.h>
#include <ProDtlnote.h>
#include <ProDwgtable.h>
/*-------------------------- Application includes ---------------------------*/
#include <TestError.h>
ProError UserTableColorAction (
ProDwgtable *table,
ProError filter_status,
ProAppData data)
{
int ncols, nrows, c, r;
ProError status;
ProColor *p_color = (ProColor*)data;
status = ProDwgtableRowsCount(table, &nrows);
ERROR_CHECK("UserTableColorChange","prodrw_count_table_rows",(nrows<1));
if (nrows<1) return (PRO_TK_NOT_VALID);
status = ProDwgtableColumnsCount(table, &ncols);
ERROR_CHECK("UserTableColorChange","ProDwgtableColumnsCount",(ncols<1));
if (ncols<1) return (PRO_TK_NOT_VALID);
/*--------------------------------------------------------*\
For each row and column in the table...
\*--------------------------------------------------------*/
for (r = 1; r <= nrows; r++)
{
for (c = 1; c <= ncols; c++)
{
ProDtlnote note;
ProDtlnotedata notedata;
/*-----------------------------------------------*\
Get the identifier of the note in this cell.
\*-----------------------------------------------*/
status = ProDwgtableCellNoteGet(table, c, r, ¬e);
ERROR_CHECK("UserTableColorChange", "ProDwgtableCellNoteGet",status);
/*-----------------------------------------------*\
Get the data structure for the note.
\*-----------------------------------------------*/
status = ProDtlnoteDataGet(¬e, NULL, PRODISPMODE_NUMERIC, ¬edata);
ERROR_CHECK("UserTableColorChange", "ProDtlnoteDataGet",status);
/*-----------------------------------------------*\
Modify its color.
\*-----------------------------------------------*/
status = ProDtlnotedataColorSet(notedata, p_color);
status = ProDtlnoteRemove(¬e);
ERROR_CHECK("UserTableColorChange", "ProDtlnoteRemove",status);
status = ProDtlnoteModify(¬e, NULL, notedata);
ERROR_CHECK("UserTableColorChange", "ProDtlnoteModify",status);
status = ProDtlnoteShow(¬e);
ERROR_CHECK("UserTableColorChange", "ProDtlnoteShow",status);
}
}
return PRO_TK_NO_ERROR;
}
/*=================================================================*\
FUNCTION : UserTableColorChange
PURPOSE : Change the color of the notes in a drawing table
\*=================================================================*/
ProError UserTableColorChange ()
{
ProError status;
ProDrawing p_draw;
int table_id;
int win_id;
int color_index;
ProColor color;
int i_range[2]= {0 , PRO_COLOR_MAX};
ProFileName WMSGFIL = {'m','s','g','_','u','g','d','w','g','.','t','x','t','\0'};
/*------------------------------------------------------------*\
Get the current model
\*------------------------------------------------------------*/
status = ProMdlCurrentGet((ProMdl*)&p_draw);
ERROR_CHECK("UserTableColorChange","ProMdlCurrentGet",status);
if (status != PRO_TK_NO_ERROR) return (status);
/*------------------------------------------------------------*\
Ask the user the color of the notes
\*------------------------------------------------------------*/
status = ProMessageDisplay(WMSGFIL, "USER %0s",
"Enter the color index : ");
ERROR_CHECK("UserTableColorChange","ProMessageDisplay",status);
status = ProMessageIntegerRead(i_range, &color_index);
ERROR_CHECK("UserTableColorChange","ProMessageIntegerRead",status);
if (status != PRO_TK_NO_ERROR) return (status);
color.method = PRO_COLOR_METHOD_TYPE;
color.value.type = (ProColortype)color_index;
/*------------------------------------------------------------*\
For each table in the drawing
\*------------------------------------------------------------*/
status = ProDrawingTableVisit(p_draw, (ProDwgtableVisitAction)UserTableColorAction,
(ProDwgtableFilterAction)NULL, (ProAppData)&color);
/*------------------------------------------------------------*\
Update the changes by repainting the window
\*------------------------------------------------------------*/
status = ProWindowCurrentGet(&win_id);
ERROR_CHECK("UserSheetAdd","ProWindowCurrentGet",status);
status = ProWindowRepaint (win_id);
ERROR_CHECK("UserSheetAdd","ProWindowRepaint",status);
return (PRO_TK_NO_ERROR);
}