///////////////////////////////////////////////////////////////////////////// // // FUNCTION: fnBuildQualForEnqueueDelete // ///////////////////////////////////////////////////////////////////////////// zSHORT fnBuildQualForEnqueueDelete( zVIEW vEnqueue, zPVIEW pvQual ) { SfActivateSysEmptyOI( pvQual, "KZDBHQUA", vEnqueue, zMULTIPLE ); CreateEntity( *pvQual, szlEntitySpec, zPOS_AFTER ); SetAttributeFromString( *pvQual, szlEntitySpec, szlEntityName, szlEnqueue ); CreateEntity( *pvQual, szlQualAttrib, zPOS_AFTER ); SetAttributeFromString( *pvQual, szlQualAttrib, szlEntityName, szlEnqueue ); SetAttributeFromString( *pvQual, szlQualAttrib, szlAttributeName, szlUser ); SetAttributeFromAttribute( *pvQual, szlQualAttrib, szlValue, vEnqueue, szlEnqueue, szlUser ); SetAttributeFromString( *pvQual, szlQualAttrib, szlOper, "=" ); CreateEntity( *pvQual, szlQualAttrib, zPOS_AFTER ); SetAttributeFromString( *pvQual, szlQualAttrib, szlOper, "AND" ); CreateEntity( *pvQual, szlQualAttrib, zPOS_AFTER ); SetAttributeFromString( *pvQual, szlQualAttrib, szlEntityName, szlEnqueue ); SetAttributeFromString( *pvQual, szlQualAttrib, szlAttributeName, szlTimestamp ); SetAttributeFromAttribute( *pvQual, szlQualAttrib, szlValue, vEnqueue, szlEnqueue, szlTimestamp ); SetAttributeFromString( *pvQual, szlQualAttrib, szlOper, "=" ); }
///////////////////////////////////////////////////////////////////////////// // // OPERATION: zwTZERRORD_WriteErrorMsg // // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT /*LOCAL */ OPERATION zwTZERRORD_WriteErrorMsg( zVIEW vSubtask, zVIEW vMetaView, zPCHAR szMetaEntity, zPCHAR szMetaAttribute, zPCHAR szErrorMsg, zSHORT nError ) { zVIEW vTZERROR; zCHAR szMsg[ 255 ]; if ( GetViewByName( &vTZERROR, "TZERROR", vSubtask, zLEVEL_TASK ) < 0 ) { zwTZERRORD_LoadErrorList( vSubtask ); GetViewByName( &vTZERROR, "TZERROR", vSubtask, zLEVEL_TASK ); } CreateEntity( vTZERROR, "ErrorMsg", zPOS_LAST ); SetAttributeFromAttribute( vTZERROR, "ErrorMsg", "Name", vMetaView, szMetaEntity, szMetaAttribute ); if ( nError == 1 ) zstrcpy( szMsg, "Error: " ); else if ( nError == 0 ) zstrcpy( szMsg, "Warning: " ); zstrcat( szMsg, szErrorMsg ); SetAttributeFromString( vTZERROR, "ErrorMsg", "ErrorText", szMsg ); SetAttributeFromInteger( vTZERROR, "ErrorMsg", "Error", nError ); return( 0 ); } // zwTZERRORD_WriteErrorMsg
zOPER_EXPORT zSHORT OPERATION UpgradeAction( zVIEW vSubtask, zVIEW OrigW ) { #if 0 zSHORT RESULT; zCHAR szTempString_0[ 33 ]; zSHORT nZRetCode; if ( CompareAttributeToString( OrigW, "Action", "OperName", "" ) != 0 ) { nZRetCode = GetStringFromAttribute( szTempString_0, OrigW, "Action", "OperName" ); RESULT = SetCursorFirstEntityByString( OrigW, "Operation", "Name", szTempString_0, "" ); if ( RESULT < 0 ) { nZRetCode = CreateMetaEntity( vSubtask, OrigW, "Operation", zPOS_AFTER ); SetAttributeFromAttribute( OrigW, "Operation", "Name", OrigW, "Action", "OperName" ); nZRetCode = IncludeSubobjectFromSubobject( OrigW, "SourceFileOfOperation", OrigW, "SourceFile", zPOS_AFTER ); SetAttributeFromString( OrigW, "Action", "OperName", ""); } nZRetCode = IncludeSubobjectFromSubobject( OrigW, "ActOper", OrigW, "Operation", zPOS_AFTER ); SetAttributeFromString( OrigW, "Action", "OperName", ""); } #endif return( 0 ); }
///////////////////////////////////////////////////////////////////////////// // // OPERATION: SironCreateDataModel // // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT /*GLOBAL */ OPERATION SironCreateDataModel( zVIEW vSubtask, zPVIEW pvERD ) { zVIEW vERD_Window; zVIEW vTaskLPLR; GetViewByName( &vTaskLPLR, "TaskLPLR", vSubtask, zLEVEL_TASK ); ActivateEmptyMetaOI( vSubtask, pvERD, zSOURCE_ERD_META, zSINGLE | zLEVEL_APPLICATION ); // Build Root Instance CreateMetaEntity( vSubtask, *pvERD, "EntpER_Model", zPOS_AFTER ); SetAttributeFromAttribute( *pvERD, "EntpER_Model", "Name", vTaskLPLR, "LPLR", "Name" ); SetAttributeFromString( *pvERD, "EntpER_Model", "Desc", "Siron Catalogs DataModel" ); SetNameForView( *pvERD, "TZEREMDO", vSubtask, zLEVEL_TASK ); // Data Model exists, enable ERD Control GetParentWindow( &vERD_Window, vSubtask ); SetCtrlState( vERD_Window, "ERD", zCONTROL_STATUS_ENABLED, TRUE ); // Set window Title with check out state SetTitleWithCheckOutState( vERD_Window, "Data Model", "TZEREMDO", *pvERD, "EntpER_Model", zSOURCE_ERD_META ); return( 0 ); } // SironCreateDataModel
zOPER_EXPORT zSHORT OPERATION UpgradeDialog1( zVIEW vSubtask, zVIEW OrigW ) { #if 0 zVIEW OrigWC; zVIEW vPE; zVIEW vType; zVIEW LOD_List; zSHORT nZRetCode; zLONG lTempInteger_0; zSHORT RESULT; nZRetCode = RetrieveViewForMetaList( vSubtask, &LOD_List, 2013 ); nZRetCode = ActivateMetaOI( vSubtask, &vPE, LOD_List, 2013, zSINGLE ); nZRetCode = ActivateOI_FromFile( &vType, "TZPACTLO", vSubtask, "c:\\10c\\W\\BIN\\SYS\\TZPACTLI.POR", zSINGLE ); lTempInteger_0 = CheckExistenceOfEntity( OrigW, "SourceFile" ); if ( lTempInteger_0 < 0 ) { nZRetCode = CreateMetaEntity( vSubtask, OrigW, "SourceFile", zPOS_AFTER ); SetAttributeFromAttribute( OrigW, "SourceFile", "Name", OrigW, "Dialog", "Tag" ); } SetNameForView( vType, "vType", vSubtask, zLEVEL_TASK ); SetNameForView( vPE, "vPE", vSubtask, zLEVEL_TASK ); RESULT = SetCursorFirstEntity( OrigW, "Window", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { nZRetCode = CreateViewFromViewForTask( &OrigWC, OrigW, 0 ); nZRetCode = SetNameForView( OrigWC, "OrigWC", vSubtask, zLEVEL_TASK ); RESULT = SetCursorFirstEntity( OrigW, "Action", "" ); // while ( RESULT > zLEVEL_TASK ) while ( RESULT >= 0 ) { nZRetCode = UpgradeAction( vSubtask, OrigW ); RESULT = SetCursorNextEntity( OrigW, "Action", "" ); } RESULT = SetCursorFirstEntity( OrigWC, "Control", "" ); while ( RESULT >= 0 ) { nZRetCode = UpgradeControl( vSubtask, OrigW, OrigWC, vType, vPE ); RESULT = SetCursorNextEntity( OrigWC, "Control", "" ); } nZRetCode = DropView( OrigWC ); RESULT = SetCursorNextEntity( OrigW, "Window", "" ); } #endif return( 0 ); }
///////////////////////////////////////////////////////////////////////////// // // OPERATION: zoTZSIXSKO_SaveXSK // // PURPOSE: // // TRIGGLODED BY: // WINDOW: TZZOLODD // ACTION: OPTION // NAME: File_Save // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT OPERATION zoTZSIXSKO_SaveXSK( zVIEW vTZZOXODO, zVIEW vTZTENVRO ) { zVIEW vKZSIXSKO; zVIEW vKZSIXSKO_Root; zVIEW vTZTENVRO_REF = 0; zVIEW vTZTENVR1 = 0; zVIEW vTaskLPLR; zSHORT nRC; zCHAR szFileName[ zMAX_FILESPEC_LTH + 1 ]; zCHAR szMetaName[ 33 ]; zLONG lTE_ZKey = 0; zSHORT nAttrCount = 0; zSHORT nDS_Count = 0; /*=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=? ?? Hier muss noch der oder die Siron Kennungen abgehandelt ?? werden **=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?*/ // Check access to TE Object if ( !vTZTENVRO ) { nRC = MessagePrompt( vTZZOXODO, "XOD_02", "Internal LOD Error", "Unable to Load related TE.\n\nOpen or Create TE First.", 0, zBUTTONS_OK, 0, 0 ); vKZSIXSKO = 0; // initialize to something DKS 2000.03.09? DeleteEntity( vKZSIXSKO, "OBJECT", zREPOS_NONE ); return( 0 ); } nRC = ActivateEmptyObjectInstance( &vKZSIXSKO, "KZSIXSKO", vTZZOXODO, zMULTIPLE | zLEVEL_APPLICATION ); if ( nRC < 0 ) { nRC = MessagePrompt( vTZZOXODO, "XOD_01", "Internal LOD Error", "Unable to Activate Empty XSK.\n\nSeek help.", 0, zBUTTONS_OK, 0, 0 ); return( 0 ); } nRC = SetNameForView( vKZSIXSKO, "KZSIXSKO", vTZZOXODO, zLEVEL_TASK ); nRC = CreateEntity( vKZSIXSKO, "OBJECT", zPOS_AFTER ); nRC = SetAttributeFromAttribute( vKZSIXSKO, "OBJECT", "Name", vTZZOXODO, "OBJECT", "NAME" ); nRC = SetAttributeFromAttribute( vKZSIXSKO, "OBJECT", "ZKey", vTZZOXODO, "OBJECT", "ZKey" ); CreateViewFromViewForTask( &vKZSIXSKO_Root, vKZSIXSKO, 0 ); zofnTZSIXSKO_BldXSK( vKZSIXSKO_Root, vKZSIXSKO, vTZZOXODO, vTZTENVRO ); // Commit the XSK to a file named the same as the XOD, // except with suffix ".XSK". GetViewByName( &vTaskLPLR, "TaskLPLR", vTZZOXODO, zLEVEL_TASK ); GetStringFromAttribute( szFileName, vTaskLPLR, "LPLR", "ExecDir" ); zstrcat( szFileName, "\\" ); GetStringFromAttribute( szMetaName, vTZZOXODO, "OBJECT", "NAME" ); zstrcat( szFileName, szMetaName ); zstrcat( szFileName, ".XSK" ); CommitOI_ToFile( vKZSIXSKO, szFileName, zASCII ); DropView( vKZSIXSKO_Root ); return( 0 ); }
///////////////////////////////////////////////////////////////////////////// // // OPERATION: zofnTZSIXSKO_BldXSKChildEnt // // PURPOSE: // // TRIGGLODED BY: // WINDOW: TZZOLODD // ACTION: OPTION // NAME: File_Save // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT OPERATION zofnTZSIXSKO_BldXSKChildEnt ( zVIEW vKZSIXSKO_Root, zVIEW vKZSIXSKO, zVIEW vTZZOXOD1, zVIEW vTZTENVRO_REF, zSHORT nEntityFlag ) { zVIEW vTZTENVRO_Parent; zSHORT nRC; zSHORT nRC2; zPCHAR szDBMS; zSHORT nEntImpls; zLONG lEntityZKey; zSHORT nEntitySet = nEntityFlag; zSHORT nSetViewToSubXsk = 0; nRC = CreateViewFromViewForTask( &vTZTENVRO_Parent, vTZTENVRO_REF, 0 ); nRC = zCURSOR_SET; while ( nRC >= zCURSOR_SET ) { nRC = SetViewToSubobject( vTZZOXOD1, "CHILDENTITY" ); /* Check physik, if no, then do not process this entity */ if ( (nRC = CheckExistenceOfEntity ( vTZZOXOD1, "DATARECORD" )) >= zCURSOR_SET ) { nRC = GetIntegerFromAttribute( &lEntityZKey, vTZZOXOD1, "ENTITY", "ERENT_TOK" ); nRC = SetCursorFirstEntityByInteger( vTZTENVRO_Parent, "ER_Entity", "ZKey", lEntityZKey, "TE_DBMS_Source" ); if ( nRC < zCURSOR_SET ) { GetAddrForAttribute( &szDBMS, vTZTENVRO_Parent, "TE_DBMS_Source", "DBMS" ); nEntImpls = 0; for ( nRC = SetCursorFirstEntityByInteger( vTZTENVRO_Parent, "ER_Entity", "ZKey", lEntityZKey, "TE_DB_Environ" ); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntityByInteger( vTZTENVRO_Parent, "ER_Entity", "ZKey", lEntityZKey, "TE_DB_Environ" ) ) { if ( CompareAttributeToString( vTZTENVRO_Parent, "TE_DBMS_Source", "DBMS", szDBMS ) == 0 ) { nEntImpls++; } } if ( nEntImpls == 1 ) { nRC = zCURSOR_SET; } else if ( nEntImpls > 1 ) { for ( nRC = SetCursorFirstEntityByInteger( vTZTENVRO_Parent, "ER_Entity", "ZKey", lEntityZKey, "TE_DB_Environ" ); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntityByInteger( vTZTENVRO_Parent, "ER_Entity", "ZKey", lEntityZKey, "TE_DB_Environ" ) ) { if ( CompareAttributeToString( vTZTENVRO_Parent, "TE_DBMS_Source", "DBMS", szDBMS ) == 0 ) { zstrcpy( szMsg, "Do you want to use Data Source '" ); GetAddrForAttribute( &szMsgName, vTZTENVRO_Parent, "TE_DBMS_Source", "Name" ); zstrcat( szMsg, szMsgName ); zstrcat( szMsg, "' to implement ER Entity '" ); GetAddrForAttribute( &szMsgName, vTZTENVRO_Parent, "ER_Entity", "Name" ); zstrcat( szMsg, szMsgName ); zstrcat( szMsg, "'?" ); nRC = MessagePrompt ( vTZTENVRO_Parent, "XOD_06", "TE Choice", szMsg, 0, zBUTTONS_YESNO, 0, 0 ); if ( nRC == zRESPONSE_YES ) break; // found Entity implemented in same DBMS } } } if ( nRC < zCURSOR_SET ) { zstrcpy( szMsg, "Unable to Find Entity in TE Data Source with same DBMS.\n\nEntity Name = " ); GetAddrForAttribute( &szMsgName, vTZZOXOD1, "ER_EntityRec", "Name" ); zstrcat( szMsg, szMsgName ); nRC = MessagePrompt( vTZZOXOD1, "XOD_06", "Internal LOD Error", szMsg, 0, zBUTTONS_OK, 0, 0 ); nRC = DropView( vTZTENVRO_Parent ); return( 0 ); } } // new Entity found // if SironGroup exists // if SironKatalog exists // create new Katalog // create next ENTITY and ENTITYCOM entities // create dependent ATTRIB and ATTRICOM entities nRC = CheckExistenceOfEntity ( vTZTENVRO_Parent, "SironGroup" ); if ( nRC >= zCURSOR_SET ) { nRC = CheckExistenceOfEntity ( vTZTENVRO_Parent, "SironKatalog" ); if ( nRC >= zCURSOR_SET ) { // Go back to KATALOG entity if ( nEntitySet ) { while ( ResetViewFromSubobject( vKZSIXSKO_Root ) == 0 ); } // Create new KATALOG entity nRC = SetCursorLastEntity ( vKZSIXSKO_Root, "KATALOG", "" ); nRC = CreateEntity ( vKZSIXSKO_Root, "KATALOG", zPOS_AFTER ); SetMatchingAttributesByName(vKZSIXSKO_Root, "KATALOG", vTZTENVRO_Parent, "SironKatalog", zSET_ALL ); for ( nRC = SetCursorFirstEntity( vTZTENVRO_Parent, "KatalogComment", "SironKatalog"); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntity( vTZTENVRO_Parent, "KatalogComment", "SironKatalog") ) { CreateEntity ( vKZSIXSKO_Root, "KATCOM", zPOS_AFTER ); SetMatchingAttributesByName( vKZSIXSKO_Root, "KATCOM", vTZTENVRO_Parent, "KatalogComment", zSET_ALL ); } } // ViewToSubobject only, if caller created an ENTITY entity if ( nEntitySet ) { if ( CheckExistenceOfEntity( vKZSIXSKO_Root, "ENTITY" ) >= zCURSOR_SET ) { SetViewToSubobject( vKZSIXSKO_Root, "ENTITYCHILD" ); nSetViewToSubXsk = 1; } } // Create next ENTITY entity nRC = SetCursorLastEntity ( vKZSIXSKO_Root, "ENTITY", "" ); nRC = CreateEntity ( vKZSIXSKO_Root, "ENTITY", zPOS_AFTER ); nEntitySet = 1; SetMatchingAttributesByName(vKZSIXSKO_Root, "ENTITY", vTZTENVRO_Parent, "SironGroup", zSET_ALL ); SetAttributeFromInteger( vKZSIXSKO_Root, "ENTITY", "ERENT_TOK", lEntityZKey ); for ( nRC = SetCursorFirstEntity( vTZTENVRO_Parent, "GroupComment", "SironGroup"); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntity( vTZTENVRO_Parent, "GroupComment", "SironGroup") ) { CreateEntity ( vKZSIXSKO_Root, "ENTITYCOM", zPOS_AFTER ); SetMatchingAttributesByName( vKZSIXSKO_Root, "ENTITYCOM", vTZTENVRO_Parent, "GroupComment", zSET_ALL ); } // Create all dependent ATTRIB entities according to XOD ATTRIB // entities for ( nRC = SetCursorFirstEntity( vTZZOXOD1, "ATTRIB", "ENTITY"); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntity( vTZZOXOD1, "ATTRIB", "ENTITY") ) { nRC = SetCursorFirstEntityByAttr( vTZTENVRO_Parent, "TE_FieldDataRel","Name", vTZZOXOD1, "ATTRIB", "NAME", "TE_TablRec"); nRC = CheckExistenceOfEntity( vTZTENVRO_Parent, "SironField" ); if ( nRC < zCURSOR_SET ) { zstrcpy( szMsg, "Unable to Find SironField in TE Data Source .\n\nAttribute Name = " ); GetAddrForAttribute( &szMsgName, vTZZOXOD1, "ATTRIB", "NAME" ); zstrcat( szMsg, szMsgName ); nRC = MessagePrompt ( vTZZOXOD1, "XOD_06", "Internal XOD Error", szMsg, 0, zBUTTONS_OK, 0, 0 ); nRC = DropView( vTZTENVRO_Parent ); return( 0 ); } CreateEntity( vKZSIXSKO_Root, "ATTRIB", zPOS_AFTER ); SetMatchingAttributesByName( vKZSIXSKO_Root, "ATTRIB", vTZTENVRO_Parent, "SironField", zSET_ALL ); SetAttributeFromAttribute( vKZSIXSKO_Root, "ATTRIB", "XVAATT_TOK", vTZZOXOD1, "ATTRIB", "XVAATT_TOK" ); // Create all dependent ATTRIBCOM entities for ( nRC = SetCursorFirstEntity( vTZTENVRO_Parent, "SironFieldComment","SironField"); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntity( vTZTENVRO_Parent, "SironFieldComment","SironField")) { CreateEntity ( vKZSIXSKO_Root, "ATTRIBCOM", zPOS_AFTER ); SetMatchingAttributesByName( vKZSIXSKO_Root, "ATTRIBCOM", vTZTENVRO_Parent, "SironFieldComment", zSET_ALL ); } } } } // Abstieg des Pfades nRC = CheckExistenceOfEntity( vTZZOXOD1, "CHILDENTITY" ); if ( nRC >= zCURSOR_SET ) zofnTZSIXSKO_BldXSKChildEnt( vKZSIXSKO_Root, vKZSIXSKO, vTZZOXOD1, vTZTENVRO_Parent, nEntitySet ); nRC2 = ResetViewFromSubobject( vTZZOXOD1 ); if ( nSetViewToSubXsk ) { nRC2 = ResetViewFromSubobject( vKZSIXSKO_Root ); nSetViewToSubXsk = 0; } nRC = SetCursorNextEntity( vTZZOXOD1, "CHILDENTITY", "" ); } if ( vTZTENVRO_Parent ) nRC = DropView( vTZTENVRO_Parent ); return( 0 ); }
///////////////////////////////////////////////////////////////////////////// // // OPERATION: zofnTZSIXSKO_BldXSK // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT OPERATION zofnTZSIXSKO_BldXSK ( zVIEW vKZSIXSKO_Root, zVIEW vKZSIXSKO, zVIEW vTZZOXODO, zVIEW vTZTENVRO_REF ) { zVIEW vTZZOXOD1; zVIEW vTZZOXOD_TestWorkAttrib; zVIEW vTZTENVR1; zPCHAR szDBMS; zSHORT nEntImpls; zSHORT nRC; zLONG lEntityZKey; zSHORT nAttrCount = 0; zSHORT nEntitySet = 0; nRC = CreateViewFromViewForTask( &vTZTENVR1, vTZTENVRO_REF, 0 ); nRC = CreateViewFromViewForTask( &vTZZOXOD1, vTZZOXODO, 0 ); nRC = SetCursorFirstEntity( vTZZOXOD1, "ENTITY", "" ); /*=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=? ?? Was ist hier mit Work Entities ? ?? Wie koennen diese umgangen werden ?? natuerlich auch fuer Kinder beruecksichtigen **=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?=?*/ /* Check physik, if no, then do not process this entity */ if ( (nRC = CheckExistenceOfEntity( vTZZOXOD1, "DATARECORD" )) >= zCURSOR_SET ) { // Suche SironKatalog in TE nRC = GetIntegerFromAttribute( &lEntityZKey, vTZZOXOD1, "ENTITY", "ERENT_TOK" ); nRC = SetCursorFirstEntityByInteger( vTZTENVR1, "ER_Entity", "ZKey", lEntityZKey, "TE_DBMS_Source" ); if ( nRC < zCURSOR_SET ) { GetAddrForAttribute( &szDBMS, vTZTENVR1, "TE_DBMS_Source", "DBMS" ); nEntImpls = 0; for ( nRC = SetCursorFirstEntityByInteger( vTZTENVR1, "ER_Entity", "ZKey", lEntityZKey, "TE_DB_Environ" ); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntityByInteger( vTZTENVR1, "ER_Entity", "ZKey", lEntityZKey, "TE_DB_Environ" ) ) { if ( CompareAttributeToString( vTZTENVR1, "TE_DBMS_Source", "DBMS", szDBMS ) == 0 ) { nEntImpls++; } } if ( nEntImpls == 1 ) { nRC = zCURSOR_SET; } else if ( nEntImpls > 1 ) { for ( nRC = SetCursorFirstEntityByInteger( vTZTENVR1, "ER_Entity", "ZKey", lEntityZKey, "TE_DB_Environ" ); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntityByInteger( vTZTENVR1, "ER_Entity", "ZKey", lEntityZKey, "TE_DB_Environ" ) ) { if ( CompareAttributeToString( vTZTENVR1, "TE_DBMS_Source", "DBMS", szDBMS ) == 0 ) { zstrcpy( szMsg, "Do you want to use Data Source '" ); GetAddrForAttribute( &szMsgName, vTZTENVR1, "TE_DBMS_Source", "Name" ); zstrcat( szMsg, szMsgName ); zstrcat( szMsg, "' to implement ER Entity '" ); GetAddrForAttribute( &szMsgName, vTZTENVR1, "ER_Entity", "Name" ); zstrcat( szMsg, szMsgName ); zstrcat( szMsg, "'?" ); nRC = MessagePrompt ( vTZTENVR1, "XOD_06", "TE Choice", szMsg, 0, zBUTTONS_YESNO, 0, 0 ); if ( nRC == zRESPONSE_YES ) break; // found Entity implemented in same DBMS } } } if ( nRC < zCURSOR_SET ) { zstrcpy( szMsg, "Unable to Find Entity in TE Data Source with same " "DBMS.\n\nEntity Name = " ); GetAddrForAttribute( &szMsgName, vTZZOXOD1, "ENTITY", "NAME" ); zstrcat( szMsg, szMsgName ); nRC = MessagePrompt( vTZZOXOD1, "XOD_03", "Internal LOD Error", szMsg, 0, zBUTTONS_OK, 0, 0 ); return( 0 ); } } // Now: First Entity found // if SironKatalog Exits // create KATALOG and KATCOM entities // create first ENTITY and ENTITYCOM entities // create dependent ATTRIB and ATTRICOM entities nRC = CheckExistenceOfEntity ( vTZTENVR1, "SironKatalog" ); if ( nRC >= zCURSOR_SET ) { // Create KATALOG entity nRC = CreateEntity ( vKZSIXSKO_Root, "KATALOG", zPOS_AFTER ); SetMatchingAttributesByName(vKZSIXSKO_Root, "KATALOG", vTZTENVR1, "SironKatalog", zSET_ALL ); for ( nRC = SetCursorFirstEntity( vTZTENVR1, "KatalogComment", "SironKatalog"); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntity( vTZTENVR1, "KatalogComment", "SironKatalog") ) { CreateEntity ( vKZSIXSKO_Root, "KATCOM", zPOS_AFTER ); SetMatchingAttributesByName( vKZSIXSKO_Root, "KATCOM", vTZTENVR1, "KatalogComment", zSET_ALL ); } // Create first ENTITY entity nRC = CreateEntity ( vKZSIXSKO_Root, "ENTITY", zPOS_AFTER ); nEntitySet = 1; SetMatchingAttributesByName(vKZSIXSKO_Root, "ENTITY", vTZTENVR1, "OrigSironField", zSET_ALL ); SetAttributeFromAttribute( vKZSIXSKO_Root, "ENTITY", "ERENT_TOK", vTZZOXOD1, "ENTITY", "ERENT_TOK" ); for ( nRC = SetCursorFirstEntity( vTZTENVR1, "FieldComment", "OrigSironField"); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntity( vTZTENVR1, "FieldComment", "OrigSironField") ) { CreateEntity ( vKZSIXSKO_Root, "ENTITYCOM", zPOS_AFTER ); SetMatchingAttributesByName( vKZSIXSKO_Root, "ENTITYCOM", vTZTENVR1, "FieldComment", zSET_ALL ); } // Create all dependent ATTRIB entities // according to XOD ATTRIB entities for ( nRC = SetCursorFirstEntity( vTZZOXOD1, "ATTRIB", "ENTITY"); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntity( vTZZOXOD1, "ATTRIB", "ENTITY") ) { // If the Attribute is a Workattribute there is no Datafield. // Do not save the Workattributes in the XSK-file. nRC = CreateViewFromViewForTask( &vTZZOXOD_TestWorkAttrib, vTZZOXOD1, 0 ); nRC = SetCursorFirstEntityByAttr (vTZZOXOD_TestWorkAttrib, "DATAFIELD", "FLDNAME", vTZZOXOD1, "ATTRIB", "NAME", ""); if (nRC == zCURSOR_SET) { nRC = SetCursorFirstEntityByAttr ( vTZTENVR1, "TE_FieldDataRel", "Name", vTZZOXOD1, "ATTRIB", "NAME", "TE_TablRec"); CreateEntity ( vKZSIXSKO_Root, "ATTRIB", zPOS_AFTER ); SetMatchingAttributesByName( vKZSIXSKO_Root, "ATTRIB", vTZTENVR1, "SironField", zSET_ALL ); SetAttributeFromAttribute( vKZSIXSKO_Root, "ATTRIB", "XVAATT_TOK", vTZZOXOD1, "ATTRIB", "XVAATT_TOK" ); // Create all dependent ATTRIBCOM entities for ( nRC = SetCursorFirstEntity( vTZTENVR1,"SironFieldComment","SironField"); nRC > zCURSOR_UNCHANGED; nRC = SetCursorNextEntity( vTZTENVR1,"SironFieldComment","SironField") ) { CreateEntity ( vKZSIXSKO_Root, "ATTRIBCOM", zPOS_AFTER ); SetMatchingAttributesByName( vKZSIXSKO_Root, "ATTRIBCOM", vTZTENVR1, "SironFieldComment", zSET_ALL ); } } DropView( vTZZOXOD_TestWorkAttrib ); } } } nRC = CheckExistenceOfEntity( vTZZOXOD1, "CHILDENTITY" ); if ( nRC >= zCURSOR_SET ) zofnTZSIXSKO_BldXSKChildEnt( vKZSIXSKO_Root, vKZSIXSKO, vTZZOXOD1, vTZTENVRO_REF, nEntitySet ); nRC = DropView( vTZZOXOD1 ); nRC = DropView( vTZTENVR1 ); return( 0 ); }
///////////////////////////////////////////////////////////////////////////// // // ENTRY: // // PURPOSE: Save the HK object(both Source & Executable???) // ///////////////////////////////////////////////////////////////////////////// zOPER_EXPORT zSHORT OPERATION zwTZHKEYAD_SaveHK_ForLPLR( zVIEW vSubtask ) { zPCHAR lpGlobalHotkey; zUSHORT usGlobalHotkeyLth; LPACCEL_TABLE lpAT; LPACCEL_TABLE lpAT_Start; zCHAR szFileSpec[ zMAX_FILESPEC_LTH + 1 ]; zVIEW vKZHKEYSO; zVIEW vKZHKEYXO; zVIEW vTaskLPLR; zULONG ulMaxLth; zSHORT nRC; GetViewByName( &vKZHKEYSO, "KZHKEYSO", vSubtask, zLEVEL_ANY ); // Get the directory. GetViewByName( &vTaskLPLR, "TaskLPLR", vSubtask, zLEVEL_TASK ); if ( vTaskLPLR == 0 ) { MessageSend( vSubtask, "HK00102", "Hot Keys", "Can't locate LPLR?", zMSGQ_OBJECT_CONSTRAINT_ERROR, zBEEP ); return( 0 ); } GetStringFromAttribute( szFileSpec, vTaskLPLR, "LPLR", "MetaSrcDir" ); zstrcat( szFileSpec, "\\ZEIDON.PHK" ); MiSetOI_ReleaseForView( vKZHKEYSO, szlReleaseCurrent ); CommitOI_ToFile( vKZHKEYSO, szFileSpec, zASCII | zENCODE_BLOBS | zNO_NULL_STRING_TERM ); SfAllocTaskMemory( vSubtask, (zCOREMEM) &lpGlobalHotkey, 65000 ); lpAT = (LPACCEL_TABLE) SfLockTaskMemory( lpGlobalHotkey ); lpAT_Start = lpAT; usGlobalHotkeyLth = 0; SfActivateSysEmptyOI( &vKZHKEYXO, "KZHKEYXO", vSubtask, zSINGLE | zLEVEL_APPLICATION ); CreateEntity( vKZHKEYXO, "App", zPOS_AFTER ); nRC = SetEntityCursor( vKZHKEYSO, "Hotkey", 0, zPOS_FIRST, 0, 0, 0, 0, 0, 0 ); while ( nRC >= 0 ) { CreateEntity( vKZHKEYXO, "Hotkey", zPOS_AFTER ); SetMatchingAttributesByName( vKZHKEYXO, "Hotkey", vKZHKEYSO, "Hotkey", zSET_ALL ); SetAttributeFromAttribute( vKZHKEYXO, "Hotkey", "COP", vKZHKEYSO, "Operation", "Name" ); SetAttributeFromAttribute( vKZHKEYXO, "Hotkey", "DLL", vKZHKEYSO, "Hotkey", "DLL_Name" ); lpAT->chType = zACCEL_HOTKEY; ulMaxLth = sizeof( zACCEL_DEF ); GetBlobFromAttribute( &(lpAT->ac), &ulMaxLth, vKZHKEYSO, "Hotkey", "KeyCombo" ); lpAT->nID = (zSHORT) GetRelativeEntityNumber( vKZHKEYSO, "Hotkey", 0, 0L ); usGlobalHotkeyLth += sizeof( zACCEL_TABLE ); lpAT++; nRC = SetCursorNextEntity( vKZHKEYSO, "Hotkey", 0 ); } zmemset( lpAT, 0xFF, sizeof( zACCEL_TABLE ) ); // terminator usGlobalHotkeyLth += sizeof( zACCEL_TABLE ); lpAT = lpAT_Start; SetAttributeFromBlob( vKZHKEYXO, "App", "Hotkey", lpAT, usGlobalHotkeyLth ); SfUnlockTaskMemory( lpAT ); SfFreeTaskMemory( lpGlobalHotkey ); GetStringFromAttribute( szFileSpec, vTaskLPLR, "LPLR", "ExecDir" ); zstrcat( szFileSpec, "\\ZEIDON.XKY" ); CommitOI_ToFile( vKZHKEYXO, szFileSpec, zASCII ); return( 0 ); }
//: VIEW SourceView zOPER_EXPORT zSHORT OPERATION oKZXMLPGO_AddWebControlSubobject( zVIEW vKZXMLPGO, zPCHAR ControlName, zPCHAR ControlType, zPCHAR ControlContext, zPCHAR SourceViewName, zPCHAR SourceEntity, zPCHAR SourceAttribute, zPCHAR AutoComboBoxExternalValue ) { zVIEW SourceView = 0; //:VIEW SourceView2 zVIEW SourceView2 = 0; //:SHORT nRC zSHORT nRC = 0; //:INTEGER CursorPos zLONG CursorPos = 0; //:STRING ( 2000 ) ExternalValue zCHAR ExternalValue[ 2001 ] = { 0 }; //:STRING ( 200 ) CurrentValue zCHAR CurrentValue[ 201 ] = { 0 }; zSHORT RESULT; zCHAR szTempString_0[ 255 ]; zCHAR szTempString_1[ 32001 ]; //:// Create a Control entity for the data passed. //:// If the Control is a ListBox or ComboBox, also create the SubControl entries for each list value. //:CREATE ENTITY vKZXMLPGO.Control RESULT = CreateEntity( vKZXMLPGO, "Control", zPOS_AFTER ); //:vKZXMLPGO.Control.Name = ControlName SetAttributeFromString( vKZXMLPGO, "Control", "Name", ControlName ); //:vKZXMLPGO.Control.Type = ControlType SetAttributeFromString( vKZXMLPGO, "Control", "Type", ControlType ); //:// If the Named View does not exist or the EntityName doesn't exist, simply return. //:GET VIEW SourceView NAMED SourceViewName RESULT = GetViewByName( &SourceView, SourceViewName, vKZXMLPGO, zLEVEL_TASK ); //:IF RESULT < 0 if ( RESULT < 0 ) { //:// There is no mapping, so return having just created the entity, with Name and Type, //:// unless the Control is Text, in which case we'll add the Text value, which is passed as //:// AutoComboBoxExternalValue. //:IF vKZXMLPGO.Control.Type = "Text" OR //: vKZXMLPGO.Control.Type = "PushBtn" if ( CompareAttributeToString( vKZXMLPGO, "Control", "Type", "Text" ) == 0 || CompareAttributeToString( vKZXMLPGO, "Control", "Type", "PushBtn" ) == 0 ) { //:vKZXMLPGO.Control.CurrentValue = AutoComboBoxExternalValue SetAttributeFromString( vKZXMLPGO, "Control", "CurrentValue", AutoComboBoxExternalValue ); } //:END //:RETURN return( 0 ); } //:END //:IF SourceEntity != "" if ( ZeidonStringCompare( SourceEntity, 1, 0, "", 1, 0, 33 ) != 0 ) { //:nRC = CheckExistenceOfEntity( SourceView, SourceEntity ) nRC = CheckExistenceOfEntity( SourceView, SourceEntity ); //:IF nRC < 0 if ( nRC < 0 ) { //:RETURN return( 0 ); } //:END } //:END //:// If there is mapping, process according to Control Type //:IF vKZXMLPGO.Control.Type = "EditBox" OR //: vKZXMLPGO.Control.Type = "Text" OR //: vKZXMLPGO.Control.Type = "CheckBox" if ( CompareAttributeToString( vKZXMLPGO, "Control", "Type", "EditBox" ) == 0 || CompareAttributeToString( vKZXMLPGO, "Control", "Type", "Text" ) == 0 || CompareAttributeToString( vKZXMLPGO, "Control", "Type", "CheckBox" ) == 0 ) { //:GetStringFromAttributeByContext( ExternalValue, //: SourceView, SourceEntity, SourceAttribute, ControlContext, 2000 ) GetStringFromAttributeByContext( ExternalValue, SourceView, SourceEntity, SourceAttribute, ControlContext, 2000 ); //:vKZXMLPGO.Control.CurrentValue = ExternalValue SetAttributeFromString( vKZXMLPGO, "Control", "CurrentValue", ExternalValue ); //:ELSE } else { //:IF vKZXMLPGO.Control.Type = "MLEdit" if ( CompareAttributeToString( vKZXMLPGO, "Control", "Type", "MLEdit" ) == 0 ) { //:SetAttributeFromAttribute( vKZXMLPGO, "Control", "CurrentValue", //: SourceView, SourceEntity, SourceAttribute ) SetAttributeFromAttribute( vKZXMLPGO, "Control", "CurrentValue", SourceView, SourceEntity, SourceAttribute ); //:ELSE } else { //:IF vKZXMLPGO.Control.Type = "ComboBox" if ( CompareAttributeToString( vKZXMLPGO, "Control", "Type", "ComboBox" ) == 0 ) { //:// Build the list of selection values from the Domain table entries. //:GetStringFromAttributeByContext( CurrentValue, //: SourceView, SourceEntity, SourceAttribute, ControlContext, 200 ) GetStringFromAttributeByContext( CurrentValue, SourceView, SourceEntity, SourceAttribute, ControlContext, 200 ); //:vKZXMLPGO.Control.CurrentValue = CurrentValue SetAttributeFromString( vKZXMLPGO, "Control", "CurrentValue", CurrentValue ); //:nRC = GetFirstTableEntryForAttribute( ExternalValue, //: SourceView, SourceEntity, SourceAttribute, //: ControlContext, CursorPos ) nRC = GetFirstTableEntryForAttribute( ExternalValue, SourceView, SourceEntity, SourceAttribute, ControlContext, &CursorPos ); //:LOOP WHILE nRC >= 0 while ( nRC >= 0 ) { //:CREATE ENTITY vKZXMLPGO.ComboValue RESULT = CreateEntity( vKZXMLPGO, "ComboValue", zPOS_AFTER ); //:vKZXMLPGO.ComboValue.ExternalValue = ExternalValue SetAttributeFromString( vKZXMLPGO, "ComboValue", "ExternalValue", ExternalValue ); //:IF ExternalValue = CurrentValue if ( ZeidonStringCompare( ExternalValue, 1, 0, CurrentValue, 1, 0, 2001 ) == 0 ) { //:SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 1 ) SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 1 ); //:ELSE } else { //:SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 0 ) SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 0 ); } //:END //:nRC = GetNextTableEntryForAttribute( ExternalValue, //: SourceView, SourceEntity, SourceAttribute, //: ControlContext, CursorPos ) nRC = GetNextTableEntryForAttribute( ExternalValue, SourceView, SourceEntity, SourceAttribute, ControlContext, &CursorPos ); } //:END //:ELSE } else { //:IF vKZXMLPGO.Control.Type = "ComboBoxAuto" if ( CompareAttributeToString( vKZXMLPGO, "Control", "Type", "ComboBoxAuto" ) == 0 ) { //:// Build the list of selection values from the list of entities. //:// Note that the entry selected is defined by the AutoComboBoxExternalValue passed, which //:// was set from the value of the Edit Mapping. //:vKZXMLPGO.Control.CurrentValue = AutoComboBoxExternalValue SetAttributeFromString( vKZXMLPGO, "Control", "CurrentValue", AutoComboBoxExternalValue ); //:nRC = SetCursorFirstEntity( SourceView, SourceEntity, "" ) nRC = SetCursorFirstEntity( SourceView, SourceEntity, "" ); //:LOOP WHILE nRC >= 0 while ( nRC >= 0 ) { //:CREATE ENTITY vKZXMLPGO.ComboValue RESULT = CreateEntity( vKZXMLPGO, "ComboValue", zPOS_AFTER ); //:GetStringFromAttributeByContext( ExternalValue, //: SourceView, SourceEntity, SourceAttribute, "", 2000 ) GetStringFromAttributeByContext( ExternalValue, SourceView, SourceEntity, SourceAttribute, "", 2000 ); //:vKZXMLPGO.ComboValue.ExternalValue = ExternalValue SetAttributeFromString( vKZXMLPGO, "ComboValue", "ExternalValue", ExternalValue ); //:IF ExternalValue = AutoComboBoxExternalValue if ( ZeidonStringCompare( ExternalValue, 1, 0, AutoComboBoxExternalValue, 1, 0, 2001 ) == 0 ) { //:SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 1 ) SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 1 ); //:ELSE } else { //:SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 0 ) SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 0 ); } //:END //:nRC = SetCursorNextEntity( SourceView, SourceEntity, "" ) nRC = SetCursorNextEntity( SourceView, SourceEntity, "" ); } //:END //:ELSE } else { //:IF vKZXMLPGO.Control.Type = "ComboBoxList" if ( CompareAttributeToString( vKZXMLPGO, "Control", "Type", "ComboBoxList" ) == 0 ) { //:// Build the list of selection values from the list of entities. //:// Note that the entry selected is defined by the cursor position. //:CreateViewFromViewForTask( SourceView2, SourceView, vKZXMLPGO ) CreateViewFromViewForTask( &SourceView2, SourceView, vKZXMLPGO ); //:GetStringFromAttributeByContext( CurrentValue, //: SourceView, SourceEntity, SourceAttribute, "", 2000 ) GetStringFromAttributeByContext( CurrentValue, SourceView, SourceEntity, SourceAttribute, "", 2000 ); //:vKZXMLPGO.Control.CurrentValue = CurrentValue SetAttributeFromString( vKZXMLPGO, "Control", "CurrentValue", CurrentValue ); //:nRC = SetCursorFirstEntity( SourceView2, SourceEntity, "" ) nRC = SetCursorFirstEntity( SourceView2, SourceEntity, "" ); //:LOOP WHILE nRC >= 0 while ( nRC >= 0 ) { //:CREATE ENTITY vKZXMLPGO.ComboValue RESULT = CreateEntity( vKZXMLPGO, "ComboValue", zPOS_AFTER ); //:GetStringFromAttributeByContext( ExternalValue, //: SourceView2, SourceEntity, SourceAttribute, "", 2000 ) GetStringFromAttributeByContext( ExternalValue, SourceView2, SourceEntity, SourceAttribute, "", 2000 ); //:vKZXMLPGO.ComboValue.ExternalValue = ExternalValue SetAttributeFromString( vKZXMLPGO, "ComboValue", "ExternalValue", ExternalValue ); //:IF ExternalValue = CurrentValue if ( ZeidonStringCompare( ExternalValue, 1, 0, CurrentValue, 1, 0, 2001 ) == 0 ) { //:SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 1 ) SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 1 ); //:ELSE } else { //:SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 0 ) SetSelectStateOfEntity( vKZXMLPGO, "ComboValue", 0 ); } //:END //:nRC = SetCursorNextEntity( SourceView2, SourceEntity, "" ) nRC = SetCursorNextEntity( SourceView2, SourceEntity, "" ); } //:END //:DropView( SourceView2 ) DropView( SourceView2 ); } //:END } //:END } //:END } //:END } //:END //:TraceLineS( "AddWebControlSubobject Type: ", vKZXMLPGO.Control.Type ) GetStringFromAttribute( szTempString_0, vKZXMLPGO, "Control", "Type" ); TraceLineS( "AddWebControlSubobject Type: ", szTempString_0 ); //:TraceLineS( " =============== Value: ", vKZXMLPGO.Control.CurrentValue ) GetStringFromAttribute( szTempString_1, vKZXMLPGO, "Control", "CurrentValue" ); TraceLineS( " =============== Value: ", szTempString_1 ); return( 0 ); // /* vKZXMLPGO.Control.Type = "EditBox" OR // vKZXMLPGO.Control.Type = "ListBox" OR // vKZXMLPGO.Control.Type = "Text" OR // vKZXMLPGO.Control.Type = "CheckBox" OR // vKZXMLPGO.Control.Type = "ListBox" OR // vKZXMLPGO.Control.Type = "MLE" OR // vKZXMLPGO.Control.Type = "Outliner" OR // vKZXMLPGO.Control.Type = "RadioBtnGroup" */ // END }
// // OPERATION: SetStackObjectFromViews // // DESCRIPTION: SetStackObjectFromViews creates an operation entity in the // Stack call object an copies all of the variable data thers as well. // // // zOPER_EXPORT zSHORT OPERATION SetStackObjectFromViews( zVIEW lpInterpSubtask, // interp subtask zVIEW vXPG, // View to the XPG zVIEW vStmtView, // View to the statement zSHORT nIndex ) // index into the expression { zSHORT nRC; // a Return code //zSHORT nPrevOperation; // a ret code zVIEW vStackObject; // view to the stack object //zVIEW vPriorOperation; // view to the prior operation in the stack object // Get the stack object as it was loaded with the XPG nRC = GetViewByName( &vStackObject, "StackObject", lpInterpSubtask, zLEVEL_SUBTASK ); if ( nRC != zLEVEL_SUBTASK ) { return( -1 ); } SfLockView( vXPG ); SfLockView( vStmtView ); // DGC 8/19/02 // vPriorOperation doesn't appear to be used outside of this function, so // I'm removing the code. #if 0 nRC = CreateViewFromViewForTask( &vPriorOperation, vStackObject, 0 ); nPrevOperation = SetCursorPrevEntity( vPriorOperation, "OperationCall", "" ); #endif if ( SetCursorFirstEntityByAttr( vStackObject, "OperationCall", "Name", vXPG, "Operation", "Name", 0 ) < zCURSOR_SET ) { // create an operation entity at the end of the list ( stack ) CreateEntity( vStackObject, "OperationCall", zPOS_AFTER ); // set the name of the operation that was called. SetAttributeFromAttribute( vStackObject, "OperationCall", "Name", vXPG, "Operation", "Name" ); } // set the views SetAttributeFromInteger( vStackObject, "OperationCall", "XPGView", (zLONG) vXPG ); // set the views SetAttributeFromInteger( vStackObject, "OperationCall", "StatementView", (zLONG) vStmtView ); // set the offset SetAttributeFromInteger( vStackObject, "OperationCall", "StatementOffset", nIndex ); // now loop through and do all of the variables for ( nRC = SetCursorFirstEntity( vXPG, "Variable", "" ); nRC >= zCURSOR_SET; nRC = SetCursorNextEntity( vXPG, "Variable", "" ) ) { // Check to see if the variable already exists in the stack object. It // will exist if the interpreter is being called from a different app // (like Core) and the app has set up the arguments already. if ( SetCursorFirstEntityByAttr( vStackObject, "Variable", "Name", vXPG, "Variable", "Name", 0 ) < zCURSOR_SET ) { CreateEntity( vStackObject, "Variable", zPOS_LAST ); } SetMatchingAttributesByName( vStackObject, "Variable", vXPG, "Variable", zSET_NULL ); } SetCursorFirstEntity( vStackObject, "Variable", "" ); SetCursorFirstEntity( vXPG, "Variable", "" ); // DropView( vPriorOperation ); return( 0 ); }
zOPER_EXPORT zSHORT OPERATION BuildXODsOnLPLR( zVIEW vSubtask ) { // This routine does not actually save LODs, but only builds the XODs // on the LPLR. zVIEW vDTE; zVIEW vLPLR; zVIEW vLOD_List; zVIEW vLOD; zVIEW vXOD; zSHORT nRC; zCHAR szMsg[ zSHORT_MESSAGE_LTH + 1 ]; zCHAR szLOD_Name[ 33 ]; zCHAR szFileName[ zMAX_FILESPEC_LTH + 1 ]; GetViewByName( &vDTE, "TE_DB_Environ", vSubtask, zLEVEL_TASK ); GetViewByName( &vLOD_List, "TZZOLFLO", vSubtask, zLEVEL_TASK ); GetViewByName( &vLPLR, "TaskLPLR", vSubtask, zLEVEL_TASK ); // Save Subtask for use by XOD build routine. SetNameForView( vSubtask, "TE_Window", vSubtask, zLEVEL_TASK ); // For each selected LOD, build the XOD using the current DBMS and // commit as file to LPLR, unless the LOD does not have a POD. // Note that we are not looking to see if the DBMS identified // in the POD.TE_SourceZKey matches the current DBMS. We will save // selected LODs with the current DBMS no matter how they were saved // last time. for ( nRC = SetCursorFirstSelectedEntity( vLOD_List, "W_MetaDef", "" ); nRC >= zCURSOR_SET; nRC = SetCursorNextSelectedEntity( vLOD_List, "W_MetaDef", "" ) ) { GetStringFromAttribute( szLOD_Name, vLOD_List, "W_MetaDef", "Name" ); nRC = ActivateMetaOI( vSubtask, &vLOD, vLOD_List, zREFER_LOD_META, zCURRENT_OI ); if ( nRC < 0 ) { zstrcpy( szMsg, "Could not Activate LOD: " ); zstrcat( szMsg, szLOD_Name ); zstrcat( szMsg, ".\nAborting Build" ); MessageSend( vSubtask, "TE00426", "Physical Data Model", szMsg, zMSGQ_OBJECT_CONSTRAINT_ERROR, zBEEP ); return( 0 ); } else { // Send message that we are building the LOD. zstrcpy( szMsg, "Building executable for LOD: " ); zstrcat( szMsg, szLOD_Name ); zstrcat( szMsg, "." ); MB_SetMessage( vSubtask, 1, szMsg ); // Make sure the TE_SourceZKey attribute is set because it determines // what DBMS_Source is used in building the XOD. if ( CheckExistenceOfEntity( vLOD, "POD" ) >= zCURSOR_SET ) SetAttributeFromAttribute( vLOD, "POD", "TE_SourceZKey", vDTE, "TE_DBMS_Source", "ZKey" ); // Build the XOD in memory. oTZZOXODO_SaveXOD( vSubtask, vLOD ); SetNameForView( vLOD, "TZZOLODO", vSubtask, zLEVEL_TASK ); GetViewByName( &vXOD, "TZZOXODO", vSubtask, zLEVEL_TASK ); DropMetaOI( vSubtask, vLOD ); // Commit the XOD to LPLR file. GetStringFromAttribute( szFileName, vLPLR, "LPLR", "ExecDir" ); ofnTZCMWKSO_AppendSlash( szFileName ); zstrcat( szFileName, szLOD_Name ); zstrcat( szFileName, ".XOD" ); TraceLineS( "*** Committing workstation file: ", szFileName ); CommitOI_ToFile( vXOD, szFileName, zSINGLE ); } } MB_SetMessage( vSubtask, 1, "Build of XODs complete." ); return( 0 ); }
static void ProcessXods( HWND hWnd, zVIEW vSubtask, zCHAR *cTE_Name, zCHAR *cLogFile, zCHAR cNet ) { FILE *fLog=NULL; zVIEW vTaskLPLR = NULL; zCHAR szMsg[ 256 ]; zVIEW vTZTEDBLO, vDTE, vCM_List; zVIEW vLOD, vLOD_List, vXOD; zVIEW vTemp = NULL; zVIEW vT=NULL; zSHORT nRC; RECT rect; LPLIBRARY hLib = NULL; zCHAR szLODName[ 32 ]; zCHAR szFileName[ 256 ]; zCHAR szNetwork[ 256 ]; if ( cLogFile && cLogFile[0] ) fLog = fopen( cLogFile, "w"); memset (szNetwork, 0, 256); SysReadZeidonIni( -1, "[Zeidon]", "DefaultNetWork", szNetwork ); if (*szNetwork == 0) { strcpy( szMsg, "No default Network set" ); MessageBox( hWnd, szMsg, "Error Running xodgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); zstrcat( szMsg, "\n" ); if ( fLog ) { fputs( szMsg,fLog ); fclose (fLog); } return; } ActivateOI_FromFile( &vTZTEDBLO, "tztedblo", vSubtask, "tztedblo.xdl", zMULTIPLE ); SetNameForView( vTZTEDBLO, "TZTEDBLO", 0, zLEVEL_TASK ); //oTZTENVRO_GetUpdViewForDTE_P nRC = RetrieveViewForMetaList( vSubtask, vSubtask, &vCM_List, zSOURCE_DTE_META ); nRC = ActivateMetaOI( &vDTE, vCM_List, zSOURCE_DTE_META, zSINGLE | zACTIVATE_ROOTONLY ); if ( nRC < 0 ) { strcpy( szMsg, "Internal error activating TE" ); MessageBox( hWnd, szMsg, "Error Running xodgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); zstrcat( szMsg, "\n" ); if ( fLog ) { fputs( szMsg,fLog ); fclose (fLog); } return; } SetNameForView( vDTE, "TE_DB_Environ", vSubtask, zLEVEL_TASK ); // Position on given DBMS Source nRC = SetCursorFirstEntityByString( vDTE, "TE_DBMS_Source", "Name", cTE_Name, 0 ); if ( nRC < zCURSOR_SET ) { strcpy( szMsg, "Invalid TE Name :"); strcat( szMsg, cTE_Name ); MessageBox( hWnd, szMsg, "Error Running xodgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); zstrcat( szMsg, "\n" ); if ( fLog ) { fputs( szMsg,fLog ); fclose (fLog); } return; } nRC = GetViewByName( &vTaskLPLR, "TaskLPLR", 0, zLEVEL_TASK ); assert(nRC >= 0 ) ; // Check for network build if ( cNet ) { // Use default network for Ton Beller (DBMS = "Network Server") SetCursorFirstEntityByString( vTZTEDBLO, "TE_DBMS_Source", "Network", szNetwork, 0 ); SetAttributeFromAttribute( vDTE, "TE_DBMS_Source", "DBMS", vTZTEDBLO, "TE_DBMS_Source", "DBMS" ); SetAttributeFromAttribute( vDTE, "TE_DBMS_Source", "Network", vTZTEDBLO, "TE_DBMS_Source", "Network" ); } else { // Position on corresponding DBMS entry in DB Handler object. SetCursorFirstEntityByAttr( vTZTEDBLO, "TE_DBMS_Source", "DBMS", vDTE, "TE_DBMS_Source", "DBMS", 0 ); } //zwTZTEUPDD_BuildXODsOnLPLR( zVIEW vSubtask ) // Create a view that lists all LODs. RetrieveViewForMetaList( vSubtask, vSubtask, &vLOD_List, zREFER_LOD_META ); OrderEntityForView( vLOD_List, "W_MetaDef", "Name A" ); SetNameForView( vLOD_List, "TZZOLFLO", vSubtask, zLEVEL_TASK ); // Loop through each of the LOD's // WMetaType.Type= zREFER_LOD_META // for ( nRC = SetCursorFirstEntity( vLOD_List, "W_MetaDef", "" ); nRC >= zCURSOR_SET; nRC = SetCursorNextEntity( vLOD_List, "W_MetaDef", "" ) ) { GetStringFromAttribute( szLODName, vLOD_List, "W_MetaDef", "Name" ); nRC = ActivateMetaOI( &vLOD, vLOD_List, zREFER_LOD_META, zCURRENT_OI ); if ( nRC < 0 ) { zstrcpy( szMsg, "Could not Activate LOD: " ); zstrcat( szMsg, szLODName ); zstrcat( szMsg, ".\nAborting Build" ); MessageBox( hWnd, szMsg, "Error Running xodgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); zstrcat( szMsg, "\n" ); if ( fLog ) { fputs( szMsg,fLog ); fclose (fLog); } return ; } else { // Send message that we are building the LOD. strcpy( szMsg, "Building executable for LOD: " ); strcat( szMsg, szLODName ); strcat( szMsg, "." ); strcpy( szOutLine, szMsg ); GetClientRect( hWnd, &rect ); InvalidateRect( hWnd, &rect, TRUE ); UpdateWindow( hWnd ); if ( fLog ) { zstrcat( szMsg, "\n" ); fputs( szMsg,fLog ); } else TraceLineS( szMsg, "" ); // Make sure the TE_SourceZKey attribute is set because it determines // what DBMS_Source is used in building the XOD. if ( CheckExistenceOfEntity( vLOD, "POD" ) >= zCURSOR_SET ) SetAttributeFromAttribute ( vLOD, "POD", "TE_SourceZKey", vDTE, "TE_DBMS_Source", "ZKey" ); // Build the XOD in memory oTZZOXODO_SaveXOD( vLOD ); SetNameForView( vLOD, "TZZOLODO", 0, zLEVEL_TASK ); DropMetaOI( vSubtask, vLOD ); // Commit the XOD to LPLR file. GetViewByName( &vXOD, "TZZOXODO", 0, zLEVEL_TASK ); GetStringFromAttribute( szFileName, vTaskLPLR, "LPLR", "ExecDir" ); ofnTZCMWKSO_AppendSlash( szFileName ); zstrcat( szFileName, szLODName ); zstrcat( szFileName, ".XOD" ); CommitOI_ToFile( vXOD, szFileName, zSINGLE ); } } if (fLog) fclose (fLog); else TraceLineS( "Completed XOD build", "" ); return; }
zOPER_EXPORT zSHORT OPERATION AEQ_SelectView( zVIEW vSubtask ) { zSHORT nRC; zVIEW vList; zVIEW vLOD; zVIEW vEdWrk; zPCHAR szLOD_Name; zPCHAR szName; GetWorkView( &vEdWrk ); if ( vEdWrk == 0 ) { zCHAR sz[ 200 ]; zstrcpy( sz, "TZEDWRKO not Available at ObjSelAQ_ObjSelView." ); OperatorPrompt( 0, "ED - Error", sz, 0, zBUTTONS_OK, 0, zICON_STOP ); return( zCALL_ERROR ); } // If Entity entity exists, then the LOD has already been loaded for // for this view. Exit because nothing else needs to be done. if ( CheckExistenceOfEntity( vEdWrk, "Entity" ) == zCURSOR_SET ) { AEQ_RefreshAEQ( vSubtask ); return( 0 ); } // Activate the LOD specified by vEdWrk.View.ObjectName GetAddrForAttribute( &szLOD_Name, vEdWrk, "View", "ObjectName" ); nRC = RetrieveViewForMetaList( vSubtask, &vList, zREFER_LOD_META ); nRC = SetCursorFirstEntity( vList, "W_MetaDef", "" ); while ( nRC == zCURSOR_SET ) { GetAddrForAttribute( &szName, vList, "W_MetaDef", "Name" ); if ( zstrcmpi( szName, szLOD_Name ) == 0 ) break; nRC = SetCursorNextEntity( vList, "W_MetaDef", "" ); } if ( nRC != zCURSOR_SET ) { zCHAR sz[ 200 ]; DropView( vList ); zstrcpy( sz, "LOD " ); zstrcat( sz, szLOD_Name ); zstrcat( sz, " not found. Possibly wrong LPLR?" ); OperatorPrompt( vSubtask, "ZeidonEditor", sz, 0, 0, 1, zICON_STOP ); return( zCALL_ERROR ); } nRC = ActivateMetaOI( vSubtask, &vLOD, vList, zREFER_LOD_META, zSINGLE | zLEVEL_APPLICATION ); DropView( vList ); // Copy Entity and Attribute names from LOD to vEdWrk. nRC = SetCursorFirstEntity( vLOD, "LOD_Entity", "" ); while ( nRC == zCURSOR_SET ) { CreateEntity( vEdWrk, "Entity", zPOS_LAST ); SetAttributeFromAttribute( vEdWrk, "Entity", "EntityName", vLOD, "LOD_Entity", "IndentName" ); nRC = SetCursorFirstEntity( vLOD, "LOD_Attribute", "" ); while ( nRC == zCURSOR_SET ) { CreateEntity( vEdWrk, "Attribute", zPOS_LAST ); SetAttributeFromAttribute( vEdWrk, "Attribute", "AttributeName", vLOD, "ER_Attribute", "Name" ); nRC = SetCursorNextEntity( vLOD, "LOD_Attribute", "" ); } nRC = SetCursorNextEntity( vLOD, "LOD_Entity", "" ); } DropMetaOI( vSubtask, vLOD ); nRC = SetCursorFirstEntity( vEdWrk, "Entity", "" ); SetSelectStateOfEntity( vEdWrk, "Entity", 1 ); if ( CheckExistenceOfEntity( vEdWrk, "Attribute" ) >= zCURSOR_SET ) SetSelectStateOfEntity( vEdWrk, "Attribute", 1 ); AEQ_RefreshAEQ( vSubtask ); return( 0 ); } // AEQ_SelectView
//:VIEW OperationXOG BASED ON LOD TZZOXOGO zOPER_EXPORT zSHORT OPERATION oTZOGSRCO_GenerateXOG( zVIEW OperationGroup ) { zVIEW OperationXOG = 0; //:VIEW OperationGroupT BASED ON LOD TZOGSRCO zVIEW OperationGroupT = 0; //:VIEW CurrentLPLR BASED ON LOD TZCMLPLO zVIEW CurrentLPLR = 0; //:STRING ( 513 ) XOG_FileName zCHAR XOG_FileName[ 514 ] = { 0 }; //:STRING ( 513 ) POG_FileName zCHAR POG_FileName[ 514 ] = { 0 }; //:STRING ( 200 ) szMsg zCHAR szMsg[ 201 ] = { 0 }; //:INTEGER lFile zLONG lFile = 0; //:SHORT nRC zSHORT nRC = 0; zSHORT RESULT; zCHAR szTempString_0[ 33 ]; zCHAR szTempString_1[ 33 ]; //:// Build the executable Global Object executable for all Operations in the LPLR. //:// Activate or initialize the XOG executable object. //:GET VIEW CurrentLPLR NAMED "TaskLPLR" RESULT = GetViewByName( &CurrentLPLR, "TaskLPLR", OperationGroup, zLEVEL_TASK ); //:XOG_FileName = CurrentLPLR.LPLR.ExecDir + "\" + CurrentLPLR.LPLR.Name + ".XOG" GetStringFromAttribute( XOG_FileName, CurrentLPLR, "LPLR", "ExecDir" ); ZeidonStringConcat( XOG_FileName, 1, 0, "\\", 1, 0, 514 ); GetVariableFromAttribute( szTempString_0, 0, 'S', 33, CurrentLPLR, "LPLR", "Name", "", 0 ); ZeidonStringConcat( XOG_FileName, 1, 0, szTempString_0, 1, 0, 514 ); ZeidonStringConcat( XOG_FileName, 1, 0, ".XOG", 1, 0, 514 ); //:lFile = SysOpenFile( OperationGroup, XOG_FileName, COREFILE_READ ) lFile = SysOpenFile( OperationGroup, XOG_FileName, COREFILE_READ ); //:IF lFile < 0 if ( lFile < 0 ) { //:// Executable has not yet been generated. //:ACTIVATE OperationXOG EMPTY RESULT = ActivateEmptyObjectInstance( &OperationXOG, "TZZOXOGO", OperationGroup, zSINGLE ); //:CREATE ENTITY OperationXOG.TZZOXOGO RESULT = CreateEntity( OperationXOG, "TZZOXOGO", zPOS_AFTER ); //:OperationXOG.TZZOXOGO.NAME = CurrentLPLR.LPLR.Name SetAttributeFromAttribute( OperationXOG, "TZZOXOGO", "NAME", CurrentLPLR, "LPLR", "Name" ); //:ELSE } else { //:SysCloseFile( OperationGroup, lFile, 0 ) SysCloseFile( OperationGroup, lFile, 0 ); //:// Get current executable File. //:ActivateOI_FromFile( OperationXOG, "TZZOXOGO", OperationGroup, XOG_FileName, zSINGLE ) ActivateOI_FromFile( &OperationXOG, "TZZOXOGO", OperationGroup, XOG_FileName, zSINGLE ); //:// Delete current source file entries. //:FOR EACH OperationXOG.GLOBALOPERATIONSOURCEFILE RESULT = SetCursorFirstEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { //:DELETE ENTITY OperationXOG.GLOBALOPERATIONSOURCEFILE NONE RESULT = DeleteEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", zREPOS_NONE ); RESULT = SetCursorNextEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "" ); } //:END } //:END //:NAME VIEW OperationXOG "OperationXOG" SetNameForView( OperationXOG, "OperationXOG", 0, zLEVEL_TASK ); //:// Build the executable components from each POG Operation. //:SET CURSOR FIRST CurrentLPLR.W_MetaType WHERE CurrentLPLR.W_MetaType.Type = 14 // 14 is Global Operation Group RESULT = SetCursorFirstEntityByInteger( CurrentLPLR, "W_MetaType", "Type", 14, "" ); //:FOR EACH CurrentLPLR.W_MetaDef RESULT = SetCursorFirstEntity( CurrentLPLR, "W_MetaDef", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { //:POG_FileName = CurrentLPLR.LPLR.MetaSrcDir + "\" + CurrentLPLR.W_MetaDef.Name + ".POG" GetStringFromAttribute( POG_FileName, CurrentLPLR, "LPLR", "MetaSrcDir" ); ZeidonStringConcat( POG_FileName, 1, 0, "\\", 1, 0, 514 ); GetVariableFromAttribute( szTempString_1, 0, 'S', 33, CurrentLPLR, "W_MetaDef", "Name", "", 0 ); ZeidonStringConcat( POG_FileName, 1, 0, szTempString_1, 1, 0, 514 ); ZeidonStringConcat( POG_FileName, 1, 0, ".POG", 1, 0, 514 ); //:nRC = ActivateOI_FromFile( OperationGroupT, "TZOGSRCO", OperationGroup, POG_FileName, zSINGLE + 8192 ) nRC = ActivateOI_FromFile( &OperationGroupT, "TZOGSRCO", OperationGroup, POG_FileName, zSINGLE + 8192 ); //:IF nRC < 0 if ( nRC < 0 ) { //:szMsg = "Can't open POG file, " + POG_FileName ZeidonStringCopy( szMsg, 1, 0, "Can't open POG file, ", 1, 0, 201 ); ZeidonStringConcat( szMsg, 1, 0, POG_FileName, 1, 0, 201 ); //:IssueError( OperationGroup,0,0, szMsg ) IssueError( OperationGroup, 0, 0, szMsg ); //:RETURN -1 return( -1 ); } //:END //:// Create Source file entry. //:CREATE ENTITY OperationXOG.GLOBALOPERATIONSOURCEFILE RESULT = CreateEntity( OperationXOG, "GLOBALOPERATIONSOURCEFILE", zPOS_AFTER ); //:OperationXOG.GLOBALOPERATIONSOURCEFILE.NAME = OperationGroupT.GlobalOperationGroup.Name SetAttributeFromAttribute( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "NAME", OperationGroupT, "GlobalOperationGroup", "Name" ); //:OperationXOG.GLOBALOPERATIONSOURCEFILE.LANGUAGETYPE = OperationGroupT.GlobalOperationGroup.LanguageType SetAttributeFromAttribute( OperationXOG, "GLOBALOPERATIONSOURCEFILE", "LANGUAGETYPE", OperationGroupT, "GlobalOperationGroup", "LanguageType" ); //:// Create each Operation entry. //:FOR EACH OperationGroupT.Operation RESULT = SetCursorFirstEntity( OperationGroupT, "Operation", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { //:CREATE ENTITY OperationXOG.OPERATION RESULT = CreateEntity( OperationXOG, "OPERATION", zPOS_AFTER ); //:OperationXOG.OPERATION.NAME = OperationGroupT.Operation.Name SetAttributeFromAttribute( OperationXOG, "OPERATION", "NAME", OperationGroupT, "Operation", "Name" ); //:OperationXOG.OPERATION.TYPE = OperationGroupT.Operation.Type SetAttributeFromAttribute( OperationXOG, "OPERATION", "TYPE", OperationGroupT, "Operation", "Type" ); //:FOR EACH OperationGroupT.Parameter RESULT = SetCursorFirstEntity( OperationGroupT, "Parameter", "" ); while ( RESULT > zCURSOR_UNCHANGED ) { //:CREATE ENTITY OperationXOG.PARAMETER RESULT = CreateEntity( OperationXOG, "PARAMETER", zPOS_AFTER ); //:OperationXOG.PARAMETER.NAME = OperationGroupT.Parameter.ShortDesc SetAttributeFromAttribute( OperationXOG, "PARAMETER", "NAME", OperationGroupT, "Parameter", "ShortDesc" ); //:OperationXOG.PARAMETER.DATATYPE = OperationGroupT.Parameter.DataType SetAttributeFromAttribute( OperationXOG, "PARAMETER", "DATATYPE", OperationGroupT, "Parameter", "DataType" ); RESULT = SetCursorNextEntity( OperationGroupT, "Parameter", "" ); } RESULT = SetCursorNextEntity( OperationGroupT, "Operation", "" ); //:END } RESULT = SetCursorNextEntity( CurrentLPLR, "W_MetaDef", "" ); //:END } //:END //:CommitOI_ToFile( OperationXOG, XOG_FileName, zASCII ) CommitOI_ToFile( OperationXOG, XOG_FileName, zASCII ); //:DropObjectInstance( OperationXOG ) DropObjectInstance( OperationXOG ); return( 0 ); // END }
///////////////////////////////////////////////////////////////////////////// // // CONSTRUCTOR: Tab sub-control (to group controls at the tab level) // ///////////////////////////////////////////////////////////////////////////// // ctor TZNotePage::TZNotePage( TZPainterWindow *pPainterWindow, TZPainterCtrl *pCtrlParent, CWnd *pWndParent, CRect& rect, zVIEW vCtrl, zLONG lType, zBOOL bPlaceHolder, zLONG lZKey, zLONG lTabStopNbr, zLONG lCtrlID, zPCHAR pchTag, zPCHAR pchText ) : CWnd( ), TZPainterCtrl( pPainterWindow, pCtrlParent, pWndParent, rect, vCtrl, this, pchTag, pchText, lType, bPlaceHolder, lZKey, lTabStopNbr, lCtrlID ) { #ifdef DEBUG_ALL TraceLineS( "TZNotePage::ctor ", m_csTag ); #endif m_pNext = 0; m_uVisible = 0x0100; m_lSubtype = 0; m_pZNoteBook = DYNAMIC_DOWNCAST( TZNoteBook, pWndParent ); if ( m_pZNoteBook == 0 ) return; zPCHAR pch; zLONG lTabNbr; zLONG lLth; if ( vCtrl ) { GetAddrForAttribute( &pch, vCtrl, szlControl, szlText ); lLth = zstrlen( pch ) + 1; m_pchCaption = new char[ lLth ]; strcpy_s( m_pchCaption, lLth, pch ); GetIntegerFromAttribute( &lTabNbr, vCtrl, szlControl, szlType ); if ( lTabNbr == 0 ) { zVIEW vTemp; m_pZNoteBook->m_nTabNbrMax++; CreateViewFromViewForTask( &vTemp, vCtrl, pPainterWindow->m_vDialog ); ResetViewFromSubobject( vTemp ); while ( SetCursorFirstEntityByInteger( vTemp, szlCtrlCtrl, szlType, m_pZNoteBook->m_nTabNbrMax, 0 ) == zCURSOR_SET ) { m_pZNoteBook->m_nTabNbrMax++; } SetAttributeFromInteger( vCtrl, szlControl, szlType, m_pZNoteBook->m_nTabNbrMax ); m_lSubtype = m_pZNoteBook->m_nTabNbrMax; DropView( vTemp ); } else { if ( lTabNbr > m_pZNoteBook->m_nTabNbrMax ) m_pZNoteBook->m_nTabNbrMax = (zSHORT) lTabNbr; m_lSubtype = m_pZNoteBook->m_nTabNbrMax; } if ( MiGetUpdateForView( vCtrl ) > 0 ) { SetAttributeFromAttribute( vCtrl, szlControl, szlSyncKey, vCtrl, szlControl, szlType ); } } else { m_pZNoteBook->m_nTabNbrMax++; m_lSubtype = m_pZNoteBook->m_nTabNbrMax; lTabNbr = m_pZNoteBook->m_nTabNbrMax; lLth = zstrlen( pchText ) + 1; m_pchCaption = new char[ lLth ]; strcpy_s( m_pchCaption, lLth, pchText ); } // TraceRect( "TabCtl rect ", rect ); // TraceLineI( " Attr.X ", Attr.X ); // TraceLineI( " Attr.Y ", Attr.Y ); // TraceLineI( " Attr.W ", Attr.W ); // TraceLineI( " Attr.H ", Attr.H ); // Build sub-controls on demand (only when visible or selectable). m_bBuildOnDemand = TRUE; if ( m_pZNoteBook->m_pZNotePage ) { m_nTabIdx = 1; TZNotePage *pCurrNotePage = m_pZNoteBook->m_pZNotePage; while ( pCurrNotePage->m_pNext ) { m_nTabIdx++; pCurrNotePage = pCurrNotePage->m_pNext; } pCurrNotePage->m_pNext = this; } else { m_nTabIdx = 0; m_pZNoteBook->m_pZNotePage = this; } // m_nTabNbr = (zSHORT) lTabNbr; m_nTabNbr = m_nTabIdx + 1; m_pZNoteBook->m_nPageCnt++; TC_ITEM TabCtrlItem; TabCtrlItem.mask = TCIF_TEXT; TabCtrlItem.pszText = m_pchCaption; #ifdef DEBUG_ALL TraceLineS( "Adding TabCtrlItem: ", m_pchCaption ); #endif m_pZNoteBook->InsertItem( m_nTabIdx, &TabCtrlItem ); //?Attr.StyleEx = WS_EX_TRANSPARENT; //?Attr.Style &= ~(WS_CLIPSIBLINGS | WS_CLIPCHILDREN); CreateZ( ); }