We value your input! Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey
2017-11-09 01:35 PM - last edited on 2023-07-12 08:37 PM by Doreena Deng
GSErrCode __ACENV_CALL MenuCommandHandler(const API_MenuParams *menuParams) { if (menuParams->menuItemRef.menuResID == 32500) { GSErrCode errorCode = ACAPI_CallUndoableCommand("Importer", [&]() -> GSErrCode { switch (menuParams->menuItemRef.itemIndex) { //case 1: openWebView(); break; case 1: Do_PaletteInit(); break; //case 2: importFiles();break; //case 3: updateBuildups();break; default: return NoError; } }); return errorCode; } return NoError; } // ----------------------------------------------------------------------------- // Dependency definitions // ----------------------------------------------------------------------------- API_AddonType __ACENV_CALL CheckEnvironment(API_EnvirParams* envir) { // // Fill in the necessary information // RSGetIndString(&envir->addOnInfo.name, 32000, 1, ACAPI_GetOwnResModule()); RSGetIndString(&envir->addOnInfo.description, 32000, 2, ACAPI_GetOwnResModule()); // // Register command services // GSErrCode err = ACAPI_Register_SupportedService('ABCD', 4L); if (err != NoError) return APIAddon_DontRegister; return APIAddon_Normal; } /* RegisterAddOn */ // ----------------------------------------------------------------------------- // Interface definitions // ----------------------------------------------------------------------------- GSErrCode __ACENV_CALL RegisterInterface(void) { GSErrCode err; // // Register menus // //err = ACAPI_Register_Menu (32500, 0, MenuCode_UserDef, MenuFlag_SeparatorBefore); err = ACAPI_Register_Menu(32500, 0, MenuCode_Palettes, MenuFlag_SeparatorBefore); return err; } /* RegisterInterface */ // ----------------------------------------------------------------------------- // Called when the Add-On has been loaded into memory // to perform an operation // ----------------------------------------------------------------------------- GSErrCode __ACENV_CALL Initialize(void) { GSErrCode err = NoError; static short result = 0; // // Install menu handler callbacks // err = ACAPI_Install_MenuHandler(32500, MenuCommandHandler); return err; //return err; } /* Initialize */ // ----------------------------------------------------------------------------- // Called when the Add-On is going to be unloaded // ----------------------------------------------------------------------------- GSErrCode __ACENV_CALL FreeData(void) { return NoError; } /* FreeData */ static short myDialID = 0; static GSErrCode __ACENV_CALL PaletteAPIControlCallBack(Int32 referenceID, API_PaletteMessageID messageID, GS::IntPtr /*param*/) { if (referenceID == myDialID) { switch (messageID) { case APIPalMsg_ClosePalette: break; case APIPalMsg_HidePalette_Begin: break; case APIPalMsg_HidePalette_End: break; case APIPalMsg_DisableItems_Begin: case APIPalMsg_DisableItems_End: // actually do nothing, because the input finish functionality the buttons have to stay enabled case APIPalMsg_IsPaletteVisible: case APIPalMsg_OpenPalette: break; } } return NoError; } const short CloseButtonID = 1; const short UpdateButtonID = 2; static short DGCALLBACK CntlDlgCallBack(short message, short dialID, short item, DGUserData /*userData*/, DGMessageData msgData) { OutputDebugString("CntlDlgCallBack"); switch (message) { case DG_MSG_INIT: DGSetFocus(dialID, DG_NO_ITEM); if (ACAPI_RegisterModelessWindow(dialID, PaletteAPIControlCallBack, API_PalEnabled_FloorPlan + API_PalEnabled_Section + API_PalEnabled_Elevation + API_PalEnabled_InteriorElevation + API_PalEnabled_Detail + API_PalEnabled_Worksheet + API_PalEnabled_3D + API_PalEnabled_Layout) != NoError) DBPrintf("ACAPI_RegisterModelessWindow failed\n"); break; case DG_MSG_ACTIVATE: break; case DG_MSG_UPDATE: break; case DG_MSG_CHANGE: break; case DG_MSG_DOUBLECLICK: break; case DG_MSG_CLICK: switch (item) { case 1: openWebView("sg"); break; case 2: openWebView("search"); break; case 3: openWebView("favourites"); break; case 4: openWebView("messages"); break; case 5: openWebView("settings"); break; case 6: ACAPI_CallUndoableCommand("importFiles", [&]() -> GSErrCode { importFiles(); return (0); }); case DG_CLOSEBOX: return item; // this will result in a DG_MSG_CLOSE message } break; case DG_MSG_GROW: { short vgrow = DGGetVGrow(msgData); short hgrow = DGGetHGrow(msgData); DGBeginMoveGrowItems(dialID); //DGMoveItem (dialID, NavCloseButton, hgrow, vgrow); //DGMoveItem (dialID, NavUpdateButton, hgrow, vgrow); DGEndMoveGrowItems(dialID); } break; case DG_MSG_CLOSE: ACAPI_UnregisterModelessWindow(myDialID); myDialID = 0; break; default: break; } return (0); } // CntlDlgCallBack static GS::Guid dialogGUID("{9597C98D-95BD-48d9-9999-C2297834806B}"); static bool Do_PaletteInit(void) { if (myDialID == 0 || !DGIsDialogOpen(myDialID)) { //myDialID = DGModelessInit (ACAPI_GetOwnResModule (), 32400, ACAPI_GetOwnResModule (), CntlDlgCallBack, NULL, 1); myDialID = DGCreateDockablePalette(ACAPI_GetOwnResModule(), 32400, ACAPI_GetOwnResModule(), CntlDlgCallBack, NULL, dialogGUID); } DGBeginProcessEvents(myDialID); DGShowModelessDialog(myDialID, 0); return myDialID != 0; } // Do_PaletteInit
2017-11-09 02:37 PM
2017-11-09 03:08 PM