/*====================================================================*\ FILE : TestSetup.c PURPOSE : Test of the Set Up menu functionality. HISTORY: DATE BUILD AUTHOR MODIFICATIONS 10-Oct-96 H-01-13 Bojan $$1 - Created. 23-Nov-96 H-01-18 amin $$2 ProType => ProMdlType 20-Nov-96 H-01-19 YHC $$3 Added ProTestSetupName(). 06-Dec-96 H-01-19+ YHC $$4 Fixed ProMdlType. 16-Dec-96 H-01-20 mgs $$5 Fixed some logging macros 27-Dec-96 H-01-21 Bojan $$6 Fixed reg failure on ProModelitemNameSet 20-Jan-97 H-01-21 Alexey $$7 Added calls some function 28-Mar-97 H-01-30 Pavel $$8 Added support for PT/Products Toolkit Used UtilCollect.h 17-Jun-97 H-03-14 Alexey $$9 Added extra argument to ProNoteCreate 15-Sep-97 H-03-22 Pavel $$10 Replace Pro/D on Pro/E 17-Sep-97 H-03-22 Akula $$11 Correct to fit sgi 18-Sep-97 H-03-23 Pavel $$12 Added calls of ProNote and ProTextStyle functions 26-Sep-97 H-03-24 Pavel $$13 Added call of ProNotePlacementGet() 06-Oct-97 H-03-25 Pavel $$14 Fix warning 17-Oct-97 H-03-27 Pavel $$15 Replaced Visit functions by UtilCollect 04-Nov-97 H-03-29 Pavel $$16 Corrected TEST_CALL_REPORTs 26-Nov-98 I-01-27 akh $$17 Fix some bugs and correct TEST_CALL_REPORT 31-May-99 I-03-11 mka $$18 Remove unused variable 13-Mar-00 J-01-04 akh $$19 Added "-Gtol" menu item. \*====================================================================*/ /*--------------------------------------------------------------------*\ Pro/Toolkit includes -- include this first \*--------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*--------------------------------------------------------------------*\ Application includes \*--------------------------------------------------------------------*/ #include "TestError.h" #include "TestSetup.h" #include "UtilMessage.h" #include "UtilString.h" #include "TestFiletypes.h" #include "UtilTypes.h" #include "UtilCollect.h" #include "UtilMath.h" #include "UtilMatrix.h" /*--------------------------------------------------------------------*\ Application macros \*--------------------------------------------------------------------*/ #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #define ADD_NOTE 0 #define DELETE_NOTE 1 #define SHOW_NOTE 2 #define TEXT_STYLE 3 #define DISPLAY_NOTE 4 #define EREASE_NOTE 5 #define MODIFY_HEIGHT 10 #define MODIFY_WIDTH 11 #define MODIFY_ANGLE 12 #define MODIFY_THIKNESS 13 #define MODIFY_MIRROR 14 #define MODIFY_UNDERLINE 16 #define MODIFY_FONTANGLE 18 #define MAX_NUM_LINES 120 #define GET_NAME 1 #define SET_NAME 2 /*====================================================================*\ FUNCTION : ProTestSetupMnu PURPOSE : Top level menu for the Setup Menu testing. \*====================================================================*/ int ProTestSetupMnu(ProMdl *model) { ProMdlType model_type; int ProTestNoteMnu(); ProError TestGtolMainMenu(); ProError status; int id; status = ProMdlTypeGet(model, &model_type); TEST_CALL_REPORT("ProMdlTypeGet()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister("TkSetup", "tksetup.mnu", &id); TEST_CALL_REPORT("ProMenuFileRegister()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetup", "TkSetup", (ProMenubuttonAction)ProMenuDelete, NULL, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetup", "Names", (ProMenubuttonAction)ProTestSetupNameMnu, *model, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetup", "-Notes", (ProMenubuttonAction)ProTestNoteMnu, *model, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetup", "-Gtol", (ProMenubuttonAction)TestGtolMainMenu, NULL, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetup", "-Done/Return", (ProMenubuttonAction)ProMenuDelete, NULL, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuCreate(PROMENUTYPE_MAIN, "TkSetup", &id); TEST_CALL_REPORT("ProMenuCreate()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuProcess("TkSetup", &id); TEST_CALL_REPORT("ProMenuProcess()", "ProTestSetupMnu()", status, status != PRO_TK_NO_ERROR); return (0); } /*====================================================================*\ FUNCTION : ProTestFeatMnu PURPOSE : Top level menu for the Note testing. \*====================================================================*/ int ProTestNoteMnu(ProMdl model) { #ifndef PT_PRODUCTS_BUILD ProMdlType model_type; int ProTestNote(); ProError status; int id; status = ProMdlTypeGet(model, &model_type); TEST_CALL_REPORT("ProMdlTypeGet()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister("TkNote", "tknote.mnu", &id); TEST_CALL_REPORT("ProMenuFileRegister()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkNote", "TkNote", (ProMenubuttonAction)ProMenuDelete, NULL, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkNote", "-Add Note", (ProMenubuttonAction)ProTestNote, model, ADD_NOTE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkNote", "-Delete Note", (ProMenubuttonAction)ProTestNote, model, DELETE_NOTE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkNote", "-Show Note", (ProMenubuttonAction)ProTestNote, model, SHOW_NOTE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkNote", "-Display notes", (ProMenubuttonAction)ProTestNote, model, DISPLAY_NOTE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkNote", "-Erease notes", (ProMenubuttonAction)ProTestNote, model, EREASE_NOTE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkNote", "-Text style", (ProMenubuttonAction)ProTestNote, model, TEXT_STYLE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuCreate(PROMENUTYPE_MAIN, "TkNote", &id); TEST_CALL_REPORT("ProMenuCreate()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuProcess("TkNote", &id); TEST_CALL_REPORT("ProMenuProcess()", "ProTestNoteMnu()", status, status != PRO_TK_NO_ERROR); #endif /* #ifndef PT_PRODUCTS_BUILD */ return (0); } #ifndef PT_PRODUCTS_BUILD /*====================================================================*\ FUNCTION : ProTestSelectAttr() PURPOSE : Action function for selecting attach attrs. \*====================================================================*/ int ProTestSelectAttr( ProMdl model, int action) { ProMenuDeleteWithStatus (action); return (0); } /*====================================================================*\ FUNCTION : ProTestNote() PURPOSE : General action function for the Note testing. \*====================================================================*/ int ProTestNote( ProMdl model, int action) { ProError status; ProModelitem note_item, *notes; ProLinelist p_line_list; int i, j, n_lines=0, p_size=0, n_notes=0, num_note = 0; wchar_t w_line[PRO_LINE_SIZE]; char str[PRO_LINE_SIZE]; int id, attrib; FILE *note_fp; char filename[] = "note_test.inf"; wchar_t wfilename[PRO_LINE_SIZE]; char opt[] = "edge"; int max_count = -1, num_attach; ProSelection *sel_attach, *sel_note; ProNoteAttach note_attach; ProURL wstr_url; ProTextStyle text_style; ProMouseButton mouse_button; ProPoint3d free_point, note_point, outline[2]; double text_double; int text_int; ProMatrix matrix, inv_matrix; ProDrawMode draw_mode = PRO_DRAW_NO_MODE; ProModelitem note_owner; switch(action) { case ADD_NOTE : status = ProArrayAlloc(1, sizeof(ProLine), 1, (ProArray*)&p_line_list); TEST_CALL_REPORT("ProArrayAlloc()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); /* Get several lines of text */ while(n_lines < MAX_NUM_LINES) { ProUtilMsgPrint("gen", "TEST %0s", "Enter note text [QUIT]:"); if(ProUtilStringGet(w_line, NULL, PRO_LINE_SIZE) == 0) break; if(n_lines == 0) memcpy(p_line_list[0], w_line, sizeof(ProLine)); else { status = ProArrayObjectAdd ((ProArray)&p_line_list, -1, 1, w_line); TEST_CALL_REPORT("ProArrayObjectAdd()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); } n_lines++; } if(n_lines == 0) return(0); /*--------------------------------------------------------------------------*\ Creates a note (test ProNoteCreate) \*--------------------------------------------------------------------------*/ status = ProNoteCreate(model, NULL, p_line_list, ¬e_item); TEST_CALL_REPORT("ProNoteCreate()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); ProArrayFree((ProArray*)&p_line_list); /*--------------------------------------------------------------------------*\ Sets URL (test ProNoteURLSet, ProNoteURLGet) \*--------------------------------------------------------------------------*/ ProUtilMsgPrint("gen", "TEST %0s", "Enter URL [QUIT]:"); status = ProMessageStringRead (PRO_LINE_SIZE, (wchar_t*)wstr_url); if (status == PRO_TK_NO_ERROR) { status = ProNoteURLSet (¬e_item, wstr_url); TEST_CALL_REPORT("ProNoteURLSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); } /*--------------------------------------------------------------------------*\ Menu for attachment attributes \*--------------------------------------------------------------------------*/ status = ProMenuFileRegister("Attach attr","tkattr.mnu",&id); TEST_CALL_REPORT("ProMenuFileRegister()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("Attach attr","-None", (ProMenubuttonAction)ProTestSelectAttr,NULL, PRO_NOTE_ATT_NONE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("Attach attr","-Normal", (ProMenubuttonAction)ProTestSelectAttr,NULL, PRO_NOTE_ATT_NORMAL); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("Attach attr","-Tangent", (ProMenubuttonAction)ProTestSelectAttr,NULL, PRO_NOTE_ATT_TANGENT); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("Attach attr","Attach attr", (ProMenubuttonAction)ProMenuDelete,NULL,0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenuCreate(PROMENUTYPE_MAIN,"Attach attr",&id); TEST_CALL_REPORT("ProMenuCreate()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenuProcess("",&attrib); TEST_CALL_REPORT("ProMenuProcess()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); /*--------------------------------------------------------------------------*\ Select leaders for attachment \*--------------------------------------------------------------------------*/ status = ProSelect (opt, max_count, NULL, NULL, NULL, NULL, &sel_attach, &num_attach); if (status != PRO_TK_NO_ERROR || num_attach < 1) return (0); /*--------------------------------------------------------------------------*\ Allocate memory for note attachment (test ProNoteAttachAlloc) \*--------------------------------------------------------------------------*/ status = ProNoteAttachAlloc (¬e_attach); TEST_CALL_REPORT("ProNoteAttachAlloc()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); for (i = 0; i < num_attach; i++) { /*--------------------------------------------------------------------------*\ Add leader to attachment \*--------------------------------------------------------------------------*/ status = ProNoteAttachAddend (note_attach, sel_attach[i], (ProNoteAttachAttr)attrib); TEST_CALL_REPORT("ProNoteAttachAddend()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); } /*--------------------------------------------------------------------------*\ Select location for note and translate screen coordinates in params \*--------------------------------------------------------------------------*/ ProUtilMsgPrint("gen", "TEST %0s", "Select location for note"); status = ProMousePickGet (PRO_LEFT_BUTTON, &mouse_button, free_point); TEST_CALL_REPORT("ProMousePickGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); ProViewMatrixGet (model, NULL, matrix); ProUtilMatrixInvert (matrix, inv_matrix); ProUtilPointTrans (inv_matrix, free_point, note_point); ProSolidOutlineGet (model, outline); /*--------------------------------------------------------------------------*\ Sets location for note text (test PtoNoteAttachFreeSet, ProNoteAttachFreeGet) \*--------------------------------------------------------------------------*/ note_point[0] = (note_point[0]-outline[0][0])/(outline[1][0]-outline[0][0]); note_point[1] = (note_point[1]-outline[0][1])/(outline[1][1]-outline[0][1]); note_point[2] = (note_point[2]-outline[0][2])/(outline[1][2]-outline[0][2]); status = ProNoteAttachFreeSet (note_attach, note_point[0], note_point[1], note_point[2]); TEST_CALL_REPORT("ProNoteAttachFreeSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); /*--------------------------------------------------------------------------*\ Sets placement for note (test ProNotePlacementSet, ProNotePlacementGet) \*--------------------------------------------------------------------------*/ status = ProNotePlacementSet (¬e_item, note_attach); TEST_CALL_REPORT("ProNotePlacementSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProNotePlacementGet (¬e_item, ¬e_attach); TEST_CALL_REPORT("ProNotePlacementGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); /* calls ProNoteAttachFreeGet for test*/ status = ProNoteAttachFreeGet (note_attach, &free_point[0], &free_point[1], &free_point[2]); TEST_CALL_REPORT("ProNoteAttachFreeGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); if (note_point[0] != free_point[0] || note_point[1] != free_point[1] || note_point[2] != free_point[2]) { printf("Error in ProNoteAttachFreeGet or ProNotePlacementGet\n"); printf ("note_point (%d, %d, %d) != free_point (%d, %d ,%d)", note_point[0], note_point[1], note_point[2], free_point[0], free_point[1], free_point[2]); return (0); } /*--------------------------------------------------------------------------*\ Display note (test ProNoteDisplay) \*--------------------------------------------------------------------------*/ status = ProNoteDisplay (¬e_item, PRO_DRAW_SET_MODE); TEST_CALL_REPORT("ProNoteDisplay()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); /*--------------------------------------------------------------------------*\ Release attachment (test ProNoteAttachRelease) \*--------------------------------------------------------------------------*/ status = ProNoteAttachRelease (¬e_attach); TEST_CALL_REPORT("ProNoteAttachRelease()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; case DELETE_NOTE : ProUtilMsgPrint("gen", "TEST %0s", "Select note for delete"); status = ProSelect ("note_3d" ,1 , NULL, NULL, NULL, NULL, &sel_note, &num_note); if (status != PRO_TK_NO_ERROR || num_note != 1) return (0); status = ProSelectionModelitemGet (sel_note[0], ¬e_item); TEST_CALL_REPORT("ProSelectionModelitemGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); if (status != PRO_TK_NO_ERROR) break; status = ProNoteDelete(¬e_item); TEST_CALL_REPORT("ProNoteDelete()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; case SHOW_NOTE : ProUtilMsgPrint("gen", "TEST %0s", "Select note for show"); status = ProSelect ("note_3d" ,1 , NULL, NULL, NULL, NULL, &sel_note, &num_note); if (status != PRO_TK_NO_ERROR || num_note != 1) return (0); status = ProSelectionModelitemGet (sel_note[0], ¬e_item); status = ProNoteLinelistGet(¬e_item, &p_line_list); TEST_CALL_REPORT("ProNoteLinelistGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProArraySizeGet((ProArray*)p_line_list, &p_size); /* Set obtained notes only to test this function */ status = ProNoteLinelistSet(¬e_item, p_line_list ); TEST_CALL_REPORT( "ProNoteLinelistSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); if ( (note_fp = fopen(filename,"w")) == NULL) { fprintf(stderr,"Error opening file for writing\n"); return -1; } for(j= 0; j< p_size; j++) fprintf(note_fp,"%s\n", ProWstringToString(str, p_line_list[j]) ); status = ProNoteURLGet (¬e_item, wstr_url); TEST_CALL_REPORT("ProNoteURLGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProNoteOwnerGet (¬e_item, ¬e_owner); TEST_CALL_REPORT("ProNoteOwnerGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); fprintf (note_fp, "URL: %s\n", ProWstringToString (str, wstr_url)); /*status = ProModelitemNameGet (¬e_owner, wstr_url); TEST_CALL_REPORT("ProModelitemNameGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); if (status == PRO_TK_E_NOT_FOUND) fprintf (note_fp, "Owner does not have a name"); else if (status == PRO_TK_NO_ERROR) fprintf (note_fp, "Owner: %s\n", ProWstringToString (str, wstr_url));*/ status = ProTextStyleAlloc (&text_style); TEST_CALL_REPORT("ProTextStyleAlloc()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProNoteTextStyleGet (¬e_item, &text_style); TEST_CALL_REPORT("ProNoteTextStyleGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProTextStyleHeightGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleHeightGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_GENERAL_ERROR); if (status == -1) fprintf (note_fp, "Height DEFAULT\n"); else if (status == PRO_TK_NO_ERROR) fprintf (note_fp, "Height %f\n", text_double); status = ProTextStyleWidthGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleWidthGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_GENERAL_ERROR); if (status == -1) fprintf (note_fp, "Width DEFAULT\n"); else if (status == PRO_TK_NO_ERROR) fprintf (note_fp, "Width %f\n", text_double); status = ProTextStyleAngleGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleAngleGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); fprintf (note_fp, "Angle %f\n", text_double); status = ProTextStyleSlantAngleGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleSlantAngleGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); fprintf (note_fp, "Slant angle %f\n", text_double); status = ProTextStyleThicknessGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleThicknessGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_GENERAL_ERROR); if (status == -1) fprintf (note_fp, "Thickness DEFAULT\n"); else if (status == PRO_TK_NO_ERROR) fprintf (note_fp, "Thickness %f\n", text_double); status = ProTextStyleMirrorGet (text_style, &text_int); TEST_CALL_REPORT("ProTextStyleMirrorGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); fprintf (note_fp, "Mirror %s\n", text_int ? "On" : "Off"); status = ProTextStyleUnderlineGet (text_style, &text_int); TEST_CALL_REPORT("ProTextStyleUnderlineGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); fprintf (note_fp, "Underline %s\n", text_int ? "On" : "Off"); status = ProTextStyleFree (&text_style); TEST_CALL_REPORT("ProTextStyleFree()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); fclose(note_fp); ProInfoWindowDisplay (ProStringToWstring(wfilename, filename), NULL, NULL); break; case DISPLAY_NOTE: draw_mode = PRO_DRAW_SET_MODE; case EREASE_NOTE: status = ProUtilCollectModelNotes(model, ¬es); if (status != PRO_TK_NO_ERROR) break; status = ProArraySizeGet((ProArray*)notes, &n_notes); for(i= 0; i< n_notes; i++) { status = ProNoteDisplay (&(notes[i]), draw_mode); TEST_CALL_REPORT("ProNoteDelete()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); } ProArrayFree((ProArray*)¬es); break; case TEXT_STYLE: /*--------------------------------------------------------------------------*\ Menu for text style operations \*--------------------------------------------------------------------------*/ status = ProMenuFileRegister("-Text style","tktextstyle.mnu",&id); TEST_CALL_REPORT("ProMenuFileRegister()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("-Text style","-Height", (ProMenubuttonAction)ProTestSelectAttr,NULL, MODIFY_HEIGHT); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("-Text style","-Width", (ProMenubuttonAction)ProTestSelectAttr,NULL, MODIFY_WIDTH); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("-Text style","-Angle", (ProMenubuttonAction)ProTestSelectAttr,NULL, MODIFY_ANGLE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("-Text style","-Slant angle", (ProMenubuttonAction)ProTestSelectAttr,NULL, MODIFY_FONTANGLE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("-Text style","-Thikness", (ProMenubuttonAction)ProTestSelectAttr,NULL, MODIFY_THIKNESS); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("-Text style","-Mirror", (ProMenubuttonAction)ProTestSelectAttr,NULL, MODIFY_MIRROR); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("-Text style","-Underline", (ProMenubuttonAction)ProTestSelectAttr,NULL, MODIFY_UNDERLINE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("-Text style","-Text style", (ProMenubuttonAction)ProMenuDelete,NULL,0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenuCreate(PROMENUTYPE_MAIN,"-Text style",&id); TEST_CALL_REPORT("ProMenuCreate()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProMenuProcess("",&attrib); TEST_CALL_REPORT("ProMenuProcess()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); ProUtilMsgPrint("gen", "TEST %0s", "Select note for change text style."); status = ProSelect ("note_3d" ,1 , NULL, NULL, NULL, NULL, &sel_note, &num_note); if (status != PRO_TK_NO_ERROR || num_note != 1) return (0); status = ProSelectionModelitemGet (sel_note[0], ¬e_item); status = ProTextStyleAlloc (&text_style); TEST_CALL_REPORT("ProTextStyleAlloc()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProNoteTextStyleGet (¬e_item, &text_style); TEST_CALL_REPORT("ProNoteTextStyleGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); switch (attrib) { case MODIFY_HEIGHT: status = ProTextStyleHeightGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleHeightGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_GENERAL_ERROR); if (status == -1) sprintf (str, "Enter height [DEFAULT]:"); else if (status == PRO_TK_NO_ERROR) sprintf (str, "Enter height [%f]", text_double); else return (0); ProUtilMsgPrint("gen", "TEST %0s", str); if(ProUtilDoubleGet(NULL, NULL, &text_double) == 0) break; status = ProTextStyleHeightSet (text_style, text_double); TEST_CALL_REPORT("ProTextStyleHeightSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; case MODIFY_WIDTH: status = ProTextStyleWidthGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleWidthGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_GENERAL_ERROR); if (status == -1) sprintf (str, "Enter width [DEFAULT]"); else if (status == PRO_TK_NO_ERROR) sprintf (str, "Enter width [%f]", text_double); else return (0); ProUtilMsgPrint("gen", "TEST %0s", str); if(ProUtilDoubleGet(NULL, NULL, &text_double) == 0) break; status = ProTextStyleWidthSet (text_style, text_double); TEST_CALL_REPORT("ProTextStyleWidthSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; case MODIFY_ANGLE: status = ProTextStyleAngleGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleAngleGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); if (status == PRO_TK_NO_ERROR) sprintf (str, "Enter angle [%f]", text_double); else return (0); ProUtilMsgPrint("gen", "TEST %0s", str); if(ProUtilDoubleGet(NULL, NULL, &text_double) == 0) break; status = ProTextStyleAngleSet (text_style, text_double); TEST_CALL_REPORT("ProTextStyleAngleSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; case MODIFY_FONTANGLE: status = ProTextStyleSlantAngleGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleSlantAngleGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); if (status == PRO_TK_NO_ERROR) sprintf (str, "Enter slant angle [%f]", text_double); else return (0); ProUtilMsgPrint("gen", "TEST %0s", str); if(ProUtilDoubleGet(NULL, NULL, &text_double) == 0) break; status = ProTextStyleSlantAngleSet (text_style, text_double); TEST_CALL_REPORT("ProTextStyleSlantAngleSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; case MODIFY_THIKNESS: status = ProTextStyleThicknessGet (text_style, &text_double); TEST_CALL_REPORT("ProTextStyleThicknessGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_GENERAL_ERROR); if (status == -1) sprintf (str, "Enter thickness [DEFAULT]"); else if (status == PRO_TK_NO_ERROR) sprintf (str, "Enter thickness [%f]", text_double); else return (0); ProUtilMsgPrint("gen", "TEST %0s", str); if(ProUtilDoubleGet(NULL, NULL, &text_double) == 0) break; status = ProTextStyleThicknessSet (text_style, text_double); TEST_CALL_REPORT("ProTextStyleThicknessSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; case MODIFY_MIRROR: status = ProTextStyleMirrorGet (text_style, &text_int); TEST_CALL_REPORT("ProTextStyleMirrorGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); if (status == PRO_TK_NO_ERROR) sprintf (str, "Mirror on(1)/off(0) [%s]", text_int ? "on" : "off"); else return (0); ProUtilMsgPrint("gen", "TEST %0s", str); if(ProUtilIntGet(NULL, NULL, &text_int) == 0) break; status = ProTextStyleMirrorSet (text_style, text_int); TEST_CALL_REPORT("ProTextStyleMirrorSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; case MODIFY_UNDERLINE: status = ProTextStyleUnderlineGet (text_style, &text_int); TEST_CALL_REPORT("ProTextStyleUnderlineGet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); if (status == PRO_TK_NO_ERROR) sprintf (str, "Underline on(1)/off(0) [%s]", text_int ? "on" : "off"); else return (0); ProUtilMsgPrint("gen", "TEST %0s", str); if(ProUtilIntGet(NULL, NULL, &text_int) == 0) break; status = ProTextStyleUnderlineSet (text_style, text_int); TEST_CALL_REPORT("ProTextStyleUnderlineSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; } /* calls ProNoteTextStyleSet for test */ status = ProNoteTextStyleSet (¬e_item, text_style); TEST_CALL_REPORT("ProNoteTextStyleSet()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); status = ProTextStyleFree (&text_style); TEST_CALL_REPORT("ProTextStyleFree()", "ProTestNote()", status, status != PRO_TK_NO_ERROR); break; } return(0); } #endif /* #ifndef PT_PRODUCTS_BUILD */ /*====================================================================*\ FUNCTION : ProTestSetupNameMnu PURPOSE : Top level menu for the Name Setup testing. \*====================================================================*/ int ProTestSetupNameMnu(ProMdl model) { ProError status; ProMdlType model_type; int id; status = ProMdlTypeGet(model, &model_type); TEST_CALL_REPORT("ProMdlTypeGet()", "ProTestSetupNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister("TkSetupName", "tksetupnm.mnu", &id); TEST_CALL_REPORT("ProMenuFileRegister()", "ProTestSetupNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetupName", "Feature", (ProMenubuttonAction)ProTestNameMnu, model, PRO_FEATURE); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetupName", "Others", (ProMenubuttonAction)ProTestNameMnu, model, -1); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetupName", "List Names", (ProMenubuttonAction)ProTestListAllNames, model, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkSetupName", "TkSetupName", (ProMenubuttonAction)ProMenuDelete, NULL, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestSetupNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuCreate(PROMENUTYPE_MAIN, "TkSetupName", &id); TEST_CALL_REPORT("ProMenuCreate()", "ProTestSetupNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuProcess("TkSetupName", &id); TEST_CALL_REPORT("ProMenuProcess()", "ProTestSetupNameMnu()", status, status != PRO_TK_NO_ERROR); return(0); } /* End of ProTestSetupNameMnu() */ /*====================================================================*\ FUNCTION : ProTestNameMnu PURPOSE : Top level menu for the Name testing. \*====================================================================*/ int ProTestNameMnu(ProMdl model, int item_type) { ProError status; ProMdlType model_type; int id; status = ProMdlTypeGet(model, &model_type); TEST_CALL_REPORT("ProMdlTypeGet()", "ProTestNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister("TkName", "tkname.mnu", &id); TEST_CALL_REPORT ("ProMenuFileRegister", "ProTestNameMnu", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonGenactionSet("TkName", "Get Name", (ProMenubuttonGenaction)ProTestSetupName, model, (ProAppData)item_type, (ProAppData)GET_NAME, NULL, NULL, NULL); TEST_CALL_REPORT("ProMenubuttonGenactionSet()", "ProTestNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonGenactionSet("TkName", "Set Name", (ProMenubuttonGenaction)ProTestSetupName, model, (ProAppData)item_type, (ProAppData)SET_NAME, NULL, NULL, NULL); TEST_CALL_REPORT("ProMenubuttonGenactionSet()", "ProTestNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkName", "TkName", (ProMenubuttonAction)ProMenuDelete, NULL, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuCreate(PROMENUTYPE_MAIN, "TkName", &id); TEST_CALL_REPORT("ProMenuCreate()", "ProTestNameMnu()", status, status != PRO_TK_NO_ERROR); status = ProMenuProcess("TkName", &id); TEST_CALL_REPORT("ProMenuProcess()", "ProTestNameMnu()", status, status != PRO_TK_NO_ERROR); return(0); } /* End of ProTestNameMnu() */ /*====================================================================*\ FUNCTION : ProTestSetupName() PURPOSE : General action function for the Name Setup testing. \*====================================================================*/ int ProTestSetupName(ProMdl model, int item_type, int action) { ProError status; ProMdlType model_type; char *msg, *options; ProSelection *sel_list; int n_sels, ret, cont = 1; ProModelitem sel_item; ProName o_name, n_name, d_name; status = ProMdlTypeGet(model, &model_type); TEST_CALL_REPORT("ProMdlTypeGet()", "ProTestSetupName()", status, status != PRO_TK_NO_ERROR); if (item_type == PRO_FEATURE) { msg = "Select a feature."; options = "feature"; } else { msg = "Select an item."; options = "edge,csys,axis,point,curve,dtmqlt,surface"; } while ( cont ) { ProUtilMsgPrint("gen", "TEST %0s", msg); status = ProSelect(options, 1, NULL, NULL, NULL, NULL, &sel_list, &n_sels); TEST_CALL_REPORT("ProSelect()", "ProTestSetupName()", status, status == PRO_TK_COMM_ERROR); if (status != PRO_TK_NO_ERROR) return(-1); status = ProSelectionModelitemGet(sel_list[0], &sel_item); TEST_CALL_REPORT("ProSelectionModelitemGet()", "ProTestSetupName()", status, status != PRO_TK_NO_ERROR); status = ProModelitemNameGet(&sel_item, o_name); TEST_CALL_REPORT("ProModelitemNameGet()", "ProTestSetupName()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_E_NOT_FOUND); ret = 0; switch (action) { case GET_NAME: if (o_name[0] == NULL_WCHAR) ProUtilMsgPrint("gen", "TEST %0s", "The selected item does not have a name."); else ProUtilMsgPrint("gen", "TEST The selected item's name is : %0w", o_name); break; case SET_NAME: if (o_name[0] == NULL_WCHAR) ProStringToWstring(d_name, "QUIT"); else ProUtilWstrcpy(d_name, o_name); ProUtilMsgPrint("gen", "TEST Enter the new name [%0w] : ", d_name); status = ProMessageStringRead(PRO_NAME_SIZE, n_name); if (status != PRO_TK_NO_ERROR) ret = -1; else if ( ProUtilWstrCmp(n_name, o_name) != 0 ) { status = ProModelitemNameSet(&sel_item, n_name); TEST_CALL_REPORT("ProModelitemNameSet()", "ProTestSetupName()", status, status != PRO_TK_NO_ERROR); } break; } status = ProSelectionUnhighlight(sel_list[0]); TEST_CALL_REPORT("ProSelectionUnhighlight()", "ProTestSetupName()", status, status != PRO_TK_NO_ERROR); } return(ret); } /* End of ProTestSetupName() */ /*====================================================================*\ FUNCTION : ProTestListAllNames() PURPOSE : General action function for the Name Listing. \*====================================================================*/ int ProTestListAllNames(ProMdl model) { int status; ProMdlType model_type; ProCharName filename; ProName wfilename; FILE *fp; status = ProMdlTypeGet(model, &model_type); TEST_CALL_REPORT("ProMdlTypeGet()", "ProTestListAllNames()", status, status != PRO_TK_NO_ERROR); ProTestQcrName(&model, NAMES, filename); fp = fopen(filename, "w"); status = ProTestListNames(( ProSolid )model, fp); fclose(fp); status = ProInfoWindowDisplay( ProStringToWstring(wfilename, filename), NULL, NULL ); TEST_CALL_REPORT("ProInfoWindowDisplay()", "ProTestListAllNames()", status, status != PRO_TK_NO_ERROR); return(0); } /* End of ProTestListAllNames() */ /*====================================================================*\ FUNCTION : ProTestListName() PURPOSE : Generalized action function for visiting notes. \*====================================================================*/ int ProTestListNames(ProMdl model, FILE *fp) { int status; ProMdlType model_type; ProName model_name; ProFeature *features; int features_num, i; status = ProMdlTypeGet(model, &model_type); TEST_CALL_REPORT("ProMdlTypeGet()", "ProTestListAllNames()", status, status != PRO_TK_NO_ERROR); status = ProMdlNameGet(model, model_name); TEST_CALL_REPORT("ProMdlNameGet()", "ProTestListNames()", status, status != PRO_TK_NO_ERROR); fprintf(fp, "\n********************************************************\n"); fprintf(fp, "MODEL NAME: %S, MODEL TYPE: %d\n\n", model_name, model_type); fprintf(fp, " ID TYPE NAME\n"); fprintf(fp, "==== ================== ================================\n"); status = ProUtilCollectSolidFeatures ((ProSolid)model, &features); if (status == PRO_TK_NO_ERROR) { status = ProArraySizeGet ((ProArray)features, &features_num); TEST_CALL_REPORT( "ProArraySizeGet()", "ProTestListNames()", status, status != PRO_TK_NO_ERROR ); for (i = 0; i < features_num; i++) { status = ProTestListNameAction (features+i, PRO_TK_NO_ERROR, (ProAppData)fp); } status = ProArrayFree ((ProArray*)&features); TEST_CALL_REPORT( "ProArrayFree()", "ProTestListNames()", status, status != PRO_TK_NO_ERROR ); } return( PRO_TK_NO_ERROR ); } /* End of ProTestListNames() */ /*====================================================================*\ FUNCTION : ProTestListNameAction() PURPOSE : Generalized action function for visiting notes. \*====================================================================*/ ProError ProTestListNameAction(ProFeature *p_feat, ProError stat, ProAppData app_data) { int status, feat_type; ProCharName type_str; FILE *fp; ProMdl model; ProName feat_name; ProGeomitem *geomitems; int geomitems_num, i; status = ProFeatureTypeGet(p_feat, &feat_type); if (status != PRO_TK_NO_ERROR) return(status); fp = ( FILE * )app_data; if (feat_type == PRO_FEAT_COMPONENT) { status = ProAsmcompMdlGet(( ProAsmcomp * )p_feat, &model); TEST_CALL_REPORT("ProAsmcompMdlGet()", "ProTestListNameAction()", status, status != PRO_TK_NO_ERROR); status = ProTestListNames(( ProSolid )model, fp); TEST_CALL_REPORT("ProTestListNames()", "ProTestListNameAction()", status, status != PRO_TK_NO_ERROR); return( PRO_TK_NO_ERROR ); } status = ProModelitemNameGet(p_feat, feat_name); TEST_CALL_REPORT("ProModelitemNameGet()", "ProTestListNameAction()", status, status != PRO_TK_NO_ERROR); if (feat_name[0] != NULL_WCHAR) { status = ProUtilFeattypeStr(feat_type, type_str); TEST_CALL_REPORT("ProUtilFeattypeStr()", "ProTestListNameAction()", status, status != PRO_TK_NO_ERROR); fprintf(fp, "%4d %-18s %-32S\n", p_feat->id, type_str, feat_name); } status = ProUtilCollectFeatureGeomitems (p_feat, PRO_TYPE_UNUSED, &geomitems); if (status == PRO_TK_NO_ERROR) { status = ProArraySizeGet ((ProArray)geomitems, &geomitems_num); TEST_CALL_REPORT( "ProArraySizeGet()", "ProTestListNameAction()", status, status != PRO_TK_NO_ERROR ); for (i = 0; i < geomitems_num; i++) { status = ProTestListGeomAction (geomitems+i, PRO_TK_NO_ERROR, (ProAppData)fp); } status = ProArrayFree ((ProArray*)&geomitems); TEST_CALL_REPORT( "ProArrayFree()", "ProTestListNameAction()", status, status != PRO_TK_NO_ERROR ); } return( PRO_TK_NO_ERROR ); } /* End of ProTestListNameAction() */ /*====================================================================*\ FUNCTION : ProTestListNameAction() PURPOSE : Generalized action function for visiting notes. \*====================================================================*/ ProError ProTestListGeomAction(ProModelitem *p_item, ProError stat, ProAppData app_data) { int status; ProName item_name; ProCharName type_str; FILE *fp; status = ProModelitemNameGet(p_item, item_name); TEST_CALL_REPORT("ProModelitemNameGet()", "ProTestListGeomAction()", status, status != PRO_TK_NO_ERROR); if (item_name[0] != NULL_WCHAR) { status = ProUtilObjtypeStr(p_item->type, type_str); TEST_CALL_REPORT("ProUtilObjtypeStr()", "ProTestListGeomAction()", status, status != PRO_TK_NO_ERROR); fp = ( FILE * )app_data; fprintf(fp, "%4d %-18s %-32S\n", p_item->id, type_str, item_name); } return( PRO_TK_NO_ERROR ); } /* End of ProTestListGeomAction() */