Skip to main content
jothipriya
Inspiring
April 6, 2020
Question

Change Dialog Box to Palette/Panel

Hi Everyone,

In Indesign SDK there is one project called BasicDialog.sdk. In this sdk i have tried to convert UI of basic dialog to palette/Panel, but after build and placing the file in InDesign2020>>Plugins>>SDK it shows dialogbox again....

The code used in BasicDialog project is

resource PluginVersion (kSDKDefPluginVersionResourceID)
{
kTargetVersion,
kBscDlgPluginID,
kSDKDefPlugInMajorVersionNumber, kSDKDefPlugInMinorVersionNumber,
kSDKDefHostMajorVersionNumber, kSDKDefHostMinorVersionNumber,
kBscDlgCurrentMajorFormatNumber, kBscDlgCurrentMinorFormatNumber,
{kInDesignProduct, kInCopyProduct },
{kWildFS },
kUIPlugIn,
kBscDlgVersion
};
resource ClassDescriptionTable(kSDKDefClassDescriptionTableResourceID)
{{{
Class
{
kBscDlgDialogBoss,
kDialogBoss,
{
IID_IDIALOGCONTROLLER, kBscDlgDialogControllerImpl,
IID_IOBSERVER, kBscDlgDialogObserverImpl,
}
},
Class
{
kBscDlgActionComponentBoss,
kBaseActionComponentBoss,
{
IID_IACTIONCOMPONENT, kBscDlgActionComponentImpl,
}
}
}}};

resource FactoryList (kSDKDefFactoryListResourceID)
{
kImplementationIDSpace,
{
#include "BscDlgFactoryList.h"
}
};

resource MenuDef (kSDKDefMenuResourceID)
{
{
// The About Plug-ins sub-menu item for this plug-in.
kBscDlgAboutActionID, // ActionID (kInvalidActionID for positional entries)
kBscDlgAboutMenuPath, // Menu Path.
kSDKDefAlphabeticPosition, // Menu Position.
kSDKDefIsNotDynamicMenuFlag, // kSDKDefIsNotDynamicMenuFlag or kSDKDefIsDynamicMenuFlag.
// The Plug-ins menu sub-menu items for this plug-in.
kBscDlgDialogActionID,
kBscDlgPluginsMenuPath,
kBscDlgDialogMenuItemPosition,
kSDKDefIsNotDynamicMenuFlag,
}
};

resource ActionDef (kSDKDefActionResourceID)
{
{
kBscDlgActionComponentBoss, // ClassID of boss class that implements the ActionID.
kBscDlgAboutActionID, // ActionID.
kBscDlgAboutMenuKey, // Sub-menu string.
kHelpMenuActionArea, // Area name (see ActionDefs.h).
kNormalAction, // Type of action (see ActionDefs.h).
kDisableIfLowMem, // Enabling type (see ActionDefs.h).
kInvalidInterfaceID, // Selection InterfaceID this action cares about or kInvalidInterfaceID.
kSDKDefInvisibleInKBSCEditorFlag, // kSDKDefVisibleInKBSCEditorFlag or kSDKDefInvisibleInKBSCEditorFlag.
kBscDlgActionComponentBoss,
kBscDlgDialogActionID,
kBscDlgDialogMenuItemKey,
kOtherActionArea,
kNormalAction,
kDisableIfLowMem,
kInvalidInterfaceID,
kSDKDefInvisibleInKBSCEditorFlag,
}
};

resource LocaleIndex (kSDKDefStringsResourceID)
{
kStringTableRsrcType,
{
kWildFS, k_enUS, kSDKDefStringsResourceID + index_enUS
kWildFS, k_jaJP, kSDKDefStringsResourceID + index_jaJP
kWildFS, k_Wild, kSDKDefStringsResourceID + index_enUS
}
};

resource LocaleIndex (kSDKDefStringsNoTransResourceID)
{
kStringTableRsrcType,
{
kWildFS, k_Wild, kSDKDefStringsNoTransResourceID + index_enUS
}
};

resource StringTable (kSDKDefStringsNoTransResourceID + index_enUS)
{
k_enUS, // Locale Id
kEuropeanMacToWinEncodingConverter, // Character encoding converter
{
// No-Translate strings go here:
}
};

resource LocaleIndex (kSDKDefDialogResourceID)
{
kViewRsrcType,
{
kWildFS, k_Wild, kSDKDefDialogResourceID + index_enUS
}
};

type BscDlgDialogBoss(kViewRsrcType) : DialogBoss(ClassID = kBscDlgDialogBoss)
{
WidgetEveInfo;
};

resource BscDlgDialogBoss (kSDKDefDialogResourceID + index_enUS)
{
__FILE__, __LINE__,
kBscDlgDialogWidgetID, // WidgetID
kPMRsrcID_None, // RsrcID
kBindNone, // Binding
Frame(0,0,388,112) // Frame (l,t,r,b)
kTrue, kTrue, // Visible, Enabled
kBscDlgDialogTitleKey, // Dialog name
{
EVEGenericPanelWidget
(
kInvalidWidgetID, // WidgetId
0 // RsrcId
0, // Widget EVE Info
kBindNone, // Frame binding
Frame(0,0,280,112) // Frame
kTrue, // Visible
kTrue, // Enabled
kEVEAlignFill | kEVERegularSpaceAfter | kEVEArrangeChildrenInColumn,
{
// Adding a dummy widget to align other widgets properly
EVEStaticTextWidget
(
kInvalidWidgetID, // WidgetId
kSysStaticTextPMRsrcId, // RsrcId
kBindNone, // Frame Binding
Frame(0,0,280,87)
kTrue, kFalse, kAlignRight, // Visible, Enabled, Alignment
kDontEllipsize, kTrue, // Ellipsize style, Convert ampersands
"",
0 ,
kEVENoSpaceAfter,
),
EVERollOverIconButtonWidget
(
kBscDlgIconSuiteWidgetID, // WidgetID
kSDKDefIconInfoResourceID, // Icon resource ID
kBscDlgPluginID, // Plug-in ID
kBindNone, // Binding
Frame(0,0,0,0) // Frame (l,t,r,b)
kTrue, kTrue, // Visible, Enabled
kADBEIconSuiteButtonDrawWellType /*kADBEIconSuiteButtonType*/, 
kEVERegularSpaceAfter,
),
} // End of Eve generic panel child widgets
), // End of Eve generic panel widget definition

EVEGenericPanelWidget
(
kInvalidWidgetID, // WidgetId
0 // RsrcId
0,
kBindNone, // Frame binding
Frame(0,0,70,50) // Frame
kTrue, // Visible
kTrue, // Enabled
kEVEAlignLeft | kEVELargeSpaceAfter | kEVEArrangeChildrenInColumn,
{
EVEDefaultButtonWidget
(
kOKButtonWidgetID, // WidgetID
kSysButtonPMRsrcId, // RsrcID
kBindNone, // Binding
Frame(0,0,0,0) // Frame (l,t,r,b)
kTrue, kTrue, // Visible, Enabled
kSDKDefOKButtonApplicationKey, // Button text
kEVELargeSpaceAfter,
),
EVECancelButtonWidget
(
kCancelButton_WidgetID, // WidgetID
kSysButtonPMRsrcId, // RsrcID
kBindNone, // Binding
Frame(0,0,0,0) // Frame (l,t,r,b)
kTrue, kTrue, // Visible, Enabled
kSDKDefCancelButtonApplicationKey, // Button name
kTrue, // Change to Reset on option-click.
kEVELargeSpaceAfter,
),
} // End of EVE Generic panel child widgets
), // End of EVE Generic panel widget definition

},
kEVEArrangeChildrenInRow | kEVESmallMargin,
};

#include "BscDlg_enUS.fr"
#include "BscDlg_jaJP.fr"

#endif // __ODFRC__

Code modified by me to convert dialog to palette/panel is

resource PluginVersion (kSDKDefPluginVersionResourceID)
{
kTargetVersion,
kBscDlgPluginID,
kSDKDefPlugInMajorVersionNumber, kSDKDefPlugInMinorVersionNumber,
kSDKDefHostMajorVersionNumber, kSDKDefHostMinorVersionNumber,
kBscDlgCurrentMajorFormatNumber, kBscDlgCurrentMinorFormatNumber,
{kInDesignProduct, kInCopyProduct },
{kWildFS },
kUIPlugIn,
kBscDlgVersion
};

resource ClassDescriptionTable(kSDKDefClassDescriptionTableResourceID)
{{{
Class
{
kBscDlgDialogBoss,
kDialogBoss,
{
IID_IDIALOGCONTROLLER, kBscDlgDialogControllerImpl,
IID_IOBSERVER, kBscDlgDialogObserverImpl,
}
},
Class
{
kBscDlgActionComponentBoss,
kBaseActionComponentBoss,
{
IID_IACTIONCOMPONENT, kBscDlgActionComponentImpl,
}
}
}}};

resource FactoryList (kSDKDefFactoryListResourceID)
{
kImplementationIDSpace,
{
#include "BscDlgFactoryList.h"
}
};

resource MenuDef (kSDKDefMenuResourceID)
{
{
// The About Plug-ins sub-menu item for this plug-in.
kBscDlgAboutActionID, // ActionID (kInvalidActionID for positional entries)
kBscDlgAboutMenuPath, // Menu Path.
kSDKDefAlphabeticPosition, // Menu Position.
kSDKDefIsNotDynamicMenuFlag, // kSDKDefIsNotDynamicMenuFlag or kSDKDefIsDynamicMenuFlag.
// The Plug-ins menu sub-menu items for this plug-in.
kBscDlgDialogActionID,
kBscDlgPluginsMenuPath,
kBscDlgDialogMenuItemPosition,
kSDKDefIsNotDynamicMenuFlag,
}
};

resource ActionDef (kSDKDefActionResourceID)
{
{
kBscDlgActionComponentBoss, // ClassID of boss class that implements the ActionID.
kBscDlgAboutActionID, // ActionID.
kBscDlgAboutMenuKey, // Sub-menu string.
kHelpMenuActionArea, // Area name (see ActionDefs.h).
kNormalAction, // Type of action (see ActionDefs.h).
kDisableIfLowMem, // Enabling type (see ActionDefs.h).
kInvalidInterfaceID, // Selection InterfaceID this action cares about or kInvalidInterfaceID.
kSDKDefInvisibleInKBSCEditorFlag, // kSDKDefVisibleInKBSCEditorFlag or kSDKDefInvisibleInKBSCEditorFlag.
kBscDlgActionComponentBoss,
kBscDlgDialogActionID,
kBscDlgDialogMenuItemKey,
kOtherActionArea,
kNormalAction,
kDisableIfLowMem,
kInvalidInterfaceID,
kSDKDefInvisibleInKBSCEditorFlag,
}
};

resource LocaleIndex (kSDKDefStringsResourceID)
{
kStringTableRsrcType,
{
kWildFS, k_enUS, kSDKDefStringsResourceID + index_enUS
kWildFS, k_jaJP, kSDKDefStringsResourceID + index_jaJP
kWildFS, k_Wild, kSDKDefStringsResourceID + index_enUS
}
};

resource LocaleIndex (kSDKDefStringsNoTransResourceID)
{
kStringTableRsrcType,
{
kWildFS, k_Wild, kSDKDefStringsNoTransResourceID + index_enUS
}
};

resource StringTable (kSDKDefStringsNoTransResourceID + index_enUS)
{
k_enUS, // Locale Id
kEuropeanMacToWinEncodingConverter, // Character encoding converter
{
// No-Translate strings go here:
}
};

resource LocaleIndex (kSDKDefDialogResourceID)
{
kViewRsrcType,
{
kWildFS, k_Wild, kSDKDefDialogResourceID + index_enUS
}
};

type BscDlgDialogBoss(kViewRsrcType) : DialogBoss(ClassID = kBscDlgDialogBoss)
{
WidgetEveInfo;
};

resource BscDlgDialogBoss (kSDKDefDialogResourceID + index_enUS)
{
__FILE__, __LINE__,
kBscDlgPaletteWidgetID, // WidgetID
kPMRsrcID_None, // RsrcID
kBindNone, // Binding
Frame(0,0,388,112) // Frame (l,t,r,b)
kTrue, kTrue, // Visible, Enabled
kBscDlgPaletteTitleKey, // Dialog name
{
EVEGenericPanelWidget
(
kInvalidWidgetID, // WidgetId
0 // RsrcId
0, // Widget EVE Info
kBindNone, // Frame binding
Frame(0,0,280,112) // Frame
kTrue, // Visible
kTrue, // Enabled
kEVEAlignFill | kEVERegularSpaceAfter | kEVEArrangeChildrenInColumn,
{
// Adding a dummy widget to align other widgets properly
EVEStaticTextWidget
(
kInvalidWidgetID, // WidgetId
kSysStaticTextPMRsrcId, // RsrcId
kBindNone, // Frame Binding
Frame(0,0,280,87)
kTrue, kFalse, kAlignRight, // Visible, Enabled, Alignment
kDontEllipsize, kTrue, // Ellipsize style, Convert ampersands
"",
0 ,
kEVENoSpaceAfter,
),
EVERollOverIconButtonWidget
(
kBscDlgIconSuiteWidgetID, // WidgetID
kSDKDefIconInfoResourceID, // Icon resource ID
kBscDlgPluginID, // Plug-in ID
kBindNone, // Binding
Frame(0,0,0,0) // Frame (l,t,r,b)
kTrue, kTrue, // Visible, Enabled
kADBEIconSuiteButtonDrawWellType /*kADBEIconSuiteButtonType*/, 
kEVERegularSpaceAfter,
),
} // End of Eve generic panel child widgets
), // End of Eve generic panel widget definition

EVEGenericPanelWidget
(
kInvalidWidgetID, // WidgetId
0 // RsrcId
0,
kBindNone, // Frame binding
Frame(0,0,70,50) // Frame
kTrue, // Visible
kTrue, // Enabled
kEVEAlignLeft | kEVELargeSpaceAfter | kEVEArrangeChildrenInColumn,
{
EVEDefaultButtonWidget
(
kOKButtonWidgetID, // WidgetID
kSysButtonPMRsrcId, // RsrcID
kBindNone, // Binding
Frame(0,0,0,0) // Frame (l,t,r,b)
kTrue, kTrue, // Visible, Enabled
kSDKDefOKButtonApplicationKey, // Button text
kEVELargeSpaceAfter,
),
EVECancelButtonWidget
(
kCancelButton_WidgetID, // WidgetID
kSysButtonPMRsrcId, // RsrcID
kBindNone, // Binding
Frame(0,0,0,0) // Frame (l,t,r,b)
kTrue, kTrue, // Visible, Enabled
kSDKDefCancelButtonApplicationKey, // Button name
kTrue, // Change to Reset on option-click.
kEVELargeSpaceAfter,
),
} // End of EVE Generic panel child widgets
), // End of EVE Generic panel widget definition

},
kEVEArrangeChildrenInRow | kEVESmallMargin,
};

#include "BscDlg_enUS.fr"
#include "BscDlg_jaJP.fr"

#endif // __ODFRC__

// End, BscDlg.fr.

This topic is closed to new replies. Start a new post to keep the conversation going.

4 replies

Community Expert
April 6, 2020

For panel the boss class to use as the base is kPalettePanelWidgetBoss instead of kDialogBoss, refer the BasicPanel sample plugin for more details.

 

-Manan

Translate
-Manan
jothipriya
Inspiring
April 6, 2020

Hi Manan,

Thankyou so much. I'll try this and get back to you

-Jothi

Translate