ProfileOptionsExtension Class |
Namespace: CTExtensions.Interfaces
The ProfileOptionsExtension type exposes the following members.
Name | Description | |
---|---|---|
CreateControl |
Provide the control for your options page. This is called in lazy-load manner,
when the user selects this profile options extension from the tree.
| |
CreateSettingsControl |
Create and return window handle for custom options page.
Default implementation handles control lifetime and inheritant may
just enjoy from CreateControl.
| |
Dispose |
Called when the settings page is closed.
Disposes the control if not disposed already.
Inheriants can ignore this if also CreateSettingsControl is left in default implementation.
| |
GetParent |
Return parent CTExtension of this options extension.
| |
GetSaveData |
Called after Validate. Provide the data you wish to save.
| |
LoadData |
Called after CreateControl.
Setup the control you created with this stored data.
| |
PageName |
Name that is shown in profile options tree.
By default this is parents FriendlyName.
| |
ReadProfileData |
Helper function to read parent extension's data from given profile.
| |
Refresh |
Notification that occurs when user re-enters to this extension's options page.
| |
Save |
Called when user clicks OK at export profile settings and all pages have returned true on Validate.
Inheriants can ignore this and just return data at GetSaveData(Boolean) when called.
| |
StoreProfileData |
Helper function to store parent extension's data to given profile.
| |
Validate |
Validate settings use has mede to your control. Show error message if needed.
|
// @AUTO-REFERENCE { [CT_INSTALL_PATH]\CTInterface.dll } // @AUTO-REFERENCE { [CT_INSTALL_PATH]\Interop.CTEngineLib.dll } // @AUTO-REFERENCE { C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Windows.Forms.dll } using ATR.CT.CTInterface; using CTExtensions; using CTEngineLib; using CTExtensions.Interfaces; using System; using System.Windows.Forms; public class MyAddin : CTExtension { private MyProfileSettingsPage moProfileSettingsPage; public override bool Hook(CTInterface oCTInterface) { return false; // We don't care about events. } public override void UnHook(CTInterface oCTInterface) { } /// <summary> /// Return the custom interface on request. /// </summary> public override IExtensionInterface GetInterface(ctExtensionInterface eType) { if (eType == ctExtensionInterface.ctExtensionInterfaceProfileSettings) { if (moProfileSettingsPage == null) moProfileSettingsPage = new MyProfileSettingsPage(this); return moProfileSettingsPage; } return null; } /// <summary> /// Create custom implementation for ProfileOptionsExtension. /// </summary> class MyProfileSettingsPage : ProfileOptionsExtension { private MyAddin moParent; private Panel moMyControl; private TextBox MyTextBox; public MyProfileSettingsPage(MyAddin oParent) { moParent = oParent; } public override ICTExtension GetParent() { return moParent; } /// <summary> /// Create panel with label and text field. /// </summary> /// <returns></returns> public override Control CreateControl() { moMyControl = new Panel(); MyTextBox = new TextBox() { Dock = DockStyle.Top }; moMyControl.Controls.Add(MyTextBox); moMyControl.Controls.Add(new Label() { Text = "My control", Dock = DockStyle.Top }); return moMyControl; } /// <summary> /// Return the data we want to save. /// </summary> /// <param name="bCancelSave">Return false here.</param> public override byte[] GetSaveData(out bool bCancelSave) { bCancelSave = false; return System.Text.Encoding.UTF8.GetBytes(MyTextBox.Text); } /// <summary> /// Load the previously saved data for the control if any. /// </summary> /// <param name="storedData"></param> public override void LoadData(byte[] storedData) { try { MyTextBox.Text = System.Text.Encoding.UTF8.GetString(storedData); } catch { MyTextBox.Text = ""; } } /// <summary> /// Must implement, but we can just return true here. /// </summary> /// <returns></returns> public override bool Refresh() { return true; } /// <summary> /// Validate the values before allowing user to exit. This function requires that the text box value must be either 'hello' or 'world'. /// </summary> /// <returns>True if data is valid, false otherwise.</returns> public override bool Validate() { if (String.Compare(MyTextBox.Text, "hello", true) != 0 && String.Compare(MyTextBox.Text, "world", true) != 0) { MessageBox.Show("You should type either 'hello' or 'world' to My control", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand); return false; } return true; } } }
CUSTOMTOOLS 2017 SP2