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