IPackage



Describes package for Form Builder.

You can find more information in comments below.

class IPackage
{
public:
    enum LICENSE // Package license type
    {
        plFree, // Free without any conditions
        plFreeHome, // Free for non-commercial usage
        plFreeLimited, // Free until maximum profit
        plTrial, // User may use it for some days but should pay after if he wants to use it
        plDemo, // Demo
        plCommercial // User should pay before using
    };

    struct DEPENDENCY // Describe package dependency on another package
    {
        String Vendor; // Dependency package vendor
        String Name; // Dependency package name
        String Version; // Dependency package version
    };
public:
    // Common information
    virtual String getVendor() = 0; // Return vendor
    virtual String getName() = 0; // Return package name
    virtual String getVersion() = 0; // Return version
    virtual String getDescription() = 0; // Return description
    virtual String getVendorUrl() = 0; // Return vendor site or page URL
    virtual String getReferenceUrl() = 0; // Return package documentation main page URL
    virtual String getLicenseText() = 0; // Return license agreement text
    virtual LICENSE getLicense() = 0; // Return license type
    virtual bool hasStaticLinking() = 0; // Whether static linking is allowed or not
    virtual bool hasDynamicLinking() = 0; // Whether dynamic linking is allowed or not
    virtual bool hasSourceCode() = 0; // Whether package contains also a source code
    virtual int getDependencyCount() = 0; // Return count of external dependencies
    virtual DEPENDENCY getDependency(const int index) = 0; // Return external dependency description by index

    // Supported platforms by components & controls(may be overwritten in control and components if they have another supported platform set)
    virtual int getPlatformCount() = 0; // Return supported platform count. If 0, all platforms are supported
    virtual PLATFORM_VERSION getPlatform(const int index) = 0; // Return supported platform description by index

    // Components
    virtual int getComponentCount() = 0; // Return component description count
    virtual IPackageComponent *getComponent(const int index) = 0; // Return component description by index
    virtual IPackageComponent *getComponent(const String &class_name) = 0; // Return component description by component class name
    virtual IPackageComponent *getComponent(IComponent *component) = 0; // Return component description corresponding to specified component

    // Created components
    virtual int getCreatedComponentCount() = 0; // Return created component count
    virtual IComponent *getCreatedComponent(const int index) = 0; // Return created component by index
    /**
    Find created component and its related information
    @param index Created component index
    @param[out] component Found component
    @param[out] package_component Component description
    @param[out] properties Component property list
    @param[out] events Component event list
    @return True if component exists
    */
    virtual bool getCreatedComponent(const int index, IComponent **component, IPackageComponent **package_component, IPropertyList **properties, IEventList **events) = 0;

    // Controls
    virtual int getControlCount() = 0; // Return control description count
    virtual IPackageControl *getControl(const int index) = 0; // Return control description by index
    virtual IPackageControl *getControl(const String &class_name) = 0; // Return control description by control class name
    virtual IPackageControl *getControl(IControl *control) = 0; // Return control description for specified control

    // Created controls
    virtual int getCreatedControlCount() = 0; // Return created control count
    virtual IControl *getCreatedControl(const int index) = 0; // Return created control by index
    /**
    Find created control and its related information
    @param index Created control index
    @param[out] control Found control
    @param[out] package_control Control description
    @param[out] properties Control property list
    @param[out] events Control event list
    @return True if control exists
    */
    virtual bool getCreatedControl(const int index, IControl **control, IPackageControl **package_control, IPropertyList **properties, IEventList **events) = 0;

    // List items
    virtual int getListItemCount() = 0; // Return list item description count
    virtual IPackageListItem *getListItem(const int index) = 0; // Return list item description by index
    virtual IPackageListItem *getListItem(const String &class_name) = 0; // Return list item description by list item class name
    virtual IPackageListItem *getListItem(IListItem *listitem) = 0; // Return list item description for specified list item

    // Forms
    virtual int getFormCount() = 0; // Return form description count
    virtual IPackageForm *getForm(const int index) = 0; // Return form description by index
    virtual IPackageForm *getForm(const String &class_name) = 0; // Return form description by form class name

    // Renderers
    virtual int getRendererCount() = 0; // Return renderer description count
    virtual IPackageRenderer *getRenderer(const int index) = 0; // Return renderer description by index
    virtual IPackageRenderer *getRenderer(const String &class_name) = 0; // Return renderer description by renderer class name

    // Property handlers
    virtual int getPropertyHandlerCount() = 0; // Return property handler count
    virtual IPropertyHandler *getPropertyHandler(const int index) = 0; // Return property handler by index
    virtual IPropertyHandler *getPropertyHandler(const String &name) = 0; // Return property handler by name

    // Styles
    virtual int getStyleCount() = 0; // Return style description count
    virtual IPackageStyle *getStyle(const int index) = 0; // Return style description by index
    virtual IPackageStyle *getStyle(const String &class_name) = 0; // Return style description by style class name
    virtual IPackageStyle *getStyle(IStyle *style) = 0; // Return style description for specified style

    virtual void Release() = 0; // Destroy instance
    virtual IPackageService *QueryService() = 0; // Return service
};
Namespace: nitisa
Include: Nitisa/Interfaces/IPackage.h