class CCL::Application

Overview

#include <application.h>

class Application:
    public CCL::Component,
    public CCL::IApplication,
    public CCL::IMenuExtension,
    public CCL::CommandDispatcher
{
public:
    // fields

    StringRef companyName = nullptr;
    StringRef StringRef appName = nullptr;
    StringRef StringRef StringID appPackageID = nullptr;
    StringRef StringRef StringID StringRef appVersion = nullptr;
    StringRef StringRef StringID StringRef int versionInt = 0);
     IMenuExtension;

    // methods

    DECLARE_CLASS (Application, Component);
    PROPERTY_BOOL (singleInstance, SingleInstance);
    virtual void beforeInitialize ();
    virtual bool startup ();
    virtual void uiInitialized ();
    virtual void beforeQuit ();
    virtual bool shutdown ();
    virtual void showAbout ();
    virtual void onRestartRequested (MessageRef msg);
    virtual void onQuitRequested (MessageRef msg);
    virtual StringID CCL_API getApplicationID () const;
    virtual StringID CCL_API getApplicationPackageID () const;
    virtual StringRef CCL_API getApplicationTitle () const;
    virtual ITheme*CCL_API getApplicationTheme () const;
    virtual IMenuBar*CCL_API createMenuBar ();
    virtual void CCL_API processCommandLine (ArgsRef args);
    virtual tbool CCL_API openFile (UrlRef path);

    virtual IDragHandler*CCL_API createDragHandler (
        const DragEvent& event,
        IView* view
    );

    virtual tbool CCL_API requestQuit ();
    virtual tbool CCL_API isQuitRequested () const;
    virtual tresult CCL_API initialize (IUnknown* context);
    virtual tresult CCL_API terminate ();
    virtual IObjectNode*CCL_API findChild (StringRef id) const;
    virtual void CCL_API notify (ISubject* subject, MessageRef msg);
    DECLARE_COMMANDS (Application) const;
    virtual bool onQuit (CmdArgs args);
    virtual bool onAbout (CmdArgs args);
    virtual bool onShowOptions (CmdArgs args);
    virtual bool onShowCommands (CmdArgs args);
    virtual bool onOpenSettingsFolder (CmdArgs args);
    virtual bool onCommandsHelp (CmdArgs args);
    virtual bool goOnline (CmdArgs args);
    virtual bool onHelp (CmdArgs args);
    virtual bool onNavigationBack (CmdArgs args);

    template  <class T>
    T* getSpecifics ();

    DECLARE_STRINGID_MEMBER (kAppMenuName);
    static Website Application* getApplication ();
    static String getWebLink (StringID id, String* title = nullptr);
};

Inherited Members

public:
    // typedefs

    typedef CStringRef MemberID;

    // enums

    enum Flags;

    // structs

    struct ObjectEntry;

    // fields

     IObjectNode;
    StringRef title = nullptr);
     kMutable;
    UIDRef classID override;
    CLASS_INTERFACES (ObjectNode) protected String title;
    ParamContainer paramList;
    SignalSlotList signalSlots;
    LinkedList <ObjectEntry> objects;

    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;
    Unknown& operator = (const Unknown&);
    unsigned int getRetainCount () const;
    virtual Object*CCL_API revealObject (const void* moduleAddress) = 0;
    virtual void CCL_API addObserver (IObserver* observer) = 0;
    virtual void CCL_API removeObserver (IObserver* observer) = 0;
    virtual void CCL_API signal (MessageRef msg) = 0;
    virtual void CCL_API deferSignal (IMessage* msg) = 0;
    static ISubject void addObserver (IUnknown* unknown, IObserver* observer);
    static void removeObserver (IUnknown* unknown, IObserver* observer);
    virtual void CCL_API notify (ISubject* subject, MessageRef msg) = 0;

    static IObserver void notify (
        IUnknown* unknown,
        ISubject* subject,
        MessageRef msg
    );

    virtual const ITypeInfo&CCL_API getTypeInfo () const = 0;
    virtual tbool CCL_API getProperty (Variant& var, MemberID propertyId) const = 0;
    virtual tbool CCL_API setProperty (MemberID propertyId, const Variant& var) = 0;
    virtual tbool CCL_API getPropertyNames (IPropertyCollector& collector) const = 0;
    virtual tbool CCL_API invokeMethod (Variant& returnValue, MessageRef msg) = 0;
    DECLARE_BASE_CLASS (Object);
    virtual void CCL_API removeObserver (IObserver* observer);
    virtual void CCL_API signal (MessageRef msg);
    virtual void CCL_API deferSignal (IMessage* msg);
    virtual void deferChanged ();
    virtual void CCL_API notify (ISubject* subject, MessageRef msg);
    virtual bool equals (const Object& obj) const;
    virtual int compare (const Object& obj) const;
    virtual bool load (const Storage& storage);
    virtual bool save (const Storage& storage) const;
    virtual bool save (const OutputStorage& storage) const;
    virtual bool toString (String& string, int flags = 0) const;
    virtual int getHashCode (int size) const;
    IUnknown* asUnknown ();
    static void addGarbageCollected (Object* obj, bool globalScope = true);
    static void deferDestruction (Object* obj);
    static const void* getModuleAddress ();
    virtual StringRef CCL_API getObjectID () const = 0;
    virtual UIDRef CCL_API getObjectUID () const = 0;
    virtual UIDRef CCL_API getClassUID () const = 0;
    virtual IObjectNode*CCL_API getParent () const = 0;
    virtual IObjectNode*CCL_API getRoot () const = 0;
    virtual int CCL_API countChildren () const = 0;
    virtual IObjectNode*CCL_API getChild (int index) const = 0;
    virtual IObjectNode*CCL_API findChild (StringRef id) const = 0;
    virtual tbool CCL_API getChildDelegates (IMutableArray& delegates) const = 0;
    virtual tbool CCL_API getChildPath (String& path) const = 0;
    virtual IObjectNode*CCL_API lookupChild (StringRef path) const = 0;
    virtual StringRef CCL_API getObjectID () const;
    virtual UIDRef CCL_API getObjectUID () const;
    virtual UIDRef CCL_API getClassUID () const;
    virtual IObjectNode*CCL_API getParent () const;
    virtual IObjectNode*CCL_API getRoot () const;
    virtual int CCL_API countChildren () const;
    virtual IObjectNode*CCL_API getChild (int index) const;
    virtual IObjectNode*CCL_API findChild (StringRef id) const;
    virtual tbool CCL_API getChildDelegates (IMutableArray& delegates) const;
    virtual tbool CCL_API getChildPath (String& path) const;
    virtual IObjectNode*CCL_API lookupChild (StringRef path) const;
    DECLARE_CLASS (ObjectNode, Object);
    void setName (StringRef name);
    bool setUniqueName (StringRef name);
    StringRef getName () const;
    virtual Iterator* newIterator () const;
    virtual bool addChild (ObjectNode* child);
    virtual bool insertChild (int index, ObjectNode* child);
    virtual bool addChildSorted (ObjectNode* child);
    virtual bool removeChild (ObjectNode* child);
    virtual void removeAll ();
    virtual ObjectNode* findChildNode (StringRef id) const;
    virtual ObjectNode* findChildNode (MetaClassRef typeID) const;

    template  <class T>
    T* findChildNode (StringRef id) const;

    template  <class T>
    T* findChildNode () const;

    template  <class T>
    T* getChildNode (int index) const;

    template  <class I>
    I* findChildByInterface (bool deep = false) const;

    ObjectNode* getChildNode (int index) const;
    int getChildIndex (const ObjectNode* child) const;
    virtual StringRef getChildID (const ObjectNode* child) const;
    ObjectNode* getParentNode () const;

    template  <class T>
    T* getParentNode () const;

    bool getRelativePath (String& path, ObjectNode* subNode) const;
    void signalDeep (MessageRef msg, bool recursive = false);

    virtual void notifyChildren (
        ISubject* subject,
        MessageRef msg,
        bool recursive = false
    );

    tresult queryChildInterface (UIDRef iid, void** ptr, bool recursive = false);

    template  <class Lambda>
    bool visitChildren (
        const Lambda& visitLambda,
        bool recursive
    ) const;

    void dump (int level = 0);
    virtual StringRef CCL_API getObjectID () const;
    virtual UIDRef CCL_API getObjectUID () const;
    virtual UIDRef CCL_API getClassUID () const;
    virtual IObjectNode*CCL_API getParent () const;
    virtual IObjectNode*CCL_API getRoot () const;
    virtual int CCL_API countChildren () const;
    virtual IObjectNode*CCL_API getChild (int index) const;
    virtual IObjectNode*CCL_API findChild (StringRef id) const;
    virtual tresult CCL_API initialize (IUnknown* context = nullptr) = 0;
    virtual tresult CCL_API terminate () = 0;
    virtual tbool CCL_API canTerminate () const = 0;
    virtual IUnknown*CCL_API getExtension (StringID id) = 0;

    template  <typename IFace>
    IFace* getExtensionI ();

    template  <typename IFace>
    static IFace* getExtensionI (IUnknown* unk);

    virtual int CCL_API countParameters () const = 0;
    virtual IParameter*CCL_API getParameterAt (int index) const = 0;
    virtual IParameter*CCL_API findParameter (StringID name) const = 0;
    virtual IParameter*CCL_API getParameterByTag (int tag) const = 0;
    virtual IUnknown*CCL_API getObject (StringID name, UIDRef classID) = 0;
    virtual tbool CCL_API paramChanged (IParameter* param) = 0;
    virtual void CCL_API paramEdit (IParameter* param, tbool begin) = 0;

    virtual IView*CCL_API createView (
        StringID name,
        VariantRef data,
        const Rect& bounds
    ) = 0;

    virtual tbool CCL_API checkCommandCategory (CStringRef category) const = 0;
    virtual tbool CCL_API interpretCommand (const CommandMsg& msg) = 0;
    virtual tresult CCL_API appendContextMenu (IContextMenu& contextMenu) = 0;
    DECLARE_CLASS (Component, ObjectNode);
    PROPERTY_FLAG (flags, kStorable, isStorable);
    isMutable StringRef getTitle () const;
    void setTitle (StringRef title);
    bool hasTitle () const;
    IUnknown* getContext () const;
    Component* getComponent (StringRef name) const;

    template  <class C>
    C* getComponent (StringRef name) const;

    bool addComponent (Component* c);
    bool addIComponent (IComponent* c);
    void signalHasChild (Component* c);
    Component* lookupComponent (StringRef path) const;

    template  <class C>
    C* lookupComponent (StringRef path) const;

    virtual tresult CCL_API initialize (IUnknown* context = nullptr);
    virtual tresult CCL_API terminate ();
    virtual tbool CCL_API canTerminate () const;
    virtual IUnknown*CCL_API getExtension (StringID id);
    DECLARE_PARAMETER_LOOKUP (paramList);
    virtual tbool CCL_API paramChanged (IParameter* param);
    virtual void CCL_API paramEdit (IParameter* param, tbool begin);

    virtual IView*CCL_API createView (
        StringID name,
        VariantRef data,
        const Rect& bounds
    );

    virtual tbool CCL_API checkCommandCategory (CStringRef category) const;
    virtual tbool CCL_API interpretCommand (const CommandMsg& msg);
    virtual tresult CCL_API appendContextMenu (IContextMenu& contextMenu);
    virtual ITheme* getTheme () const;
    virtual bool load (const Storage& storage);
    virtual bool save (const Storage& storage) const;
    virtual bool toString (String& string, int flags) const;
    void addObject (StringID name, IUnknown* object);
    void addObject (StringID name, Object* object);
    bool loadIdentity (const Storage& storage);
    bool saveIdentity (const Storage& storage) const;
    bool loadChild (const Storage& storage, Component& child);
    bool saveChild (const Storage& storage, const Component& child) const;

    bool loadChildren (
        const Storage& storage,
        bool loadEmpty = false,
        bool onlyStorable = false
    );

    bool saveChildren (const Storage& storage, bool onlyStorable = false) const;
    void signalHasChild (StringRef name);
    void signalPropertyChanged (StringID propertyID, bool deferred = false);
    void propertyChanged (StringID propertyID);
    IUnknown* resolveToOriginalContext (IUnknown* context);
    virtual tbool CCL_API getProperty (Variant& var, MemberID propertyId) const;
    virtual tbool CCL_API invokeMethod (Variant& returnValue, MessageRef msg);
    virtual StringID CCL_API getApplicationID () const = 0;
    virtual StringRef CCL_API getApplicationTitle () const = 0;
    virtual StringID CCL_API getApplicationPackageID () const = 0;
    virtual ITheme*CCL_API getApplicationTheme () const = 0;
    virtual IMenuBar*CCL_API createMenuBar () = 0;
    virtual void CCL_API processCommandLine (ArgsRef args) = 0;
    virtual tbool CCL_API openFile (UrlRef path) = 0;

    virtual IDragHandler*CCL_API createDragHandler (
        const DragEvent& event,
        IView* view
    ) = 0;

    virtual tbool CCL_API requestQuit () = 0;
    virtual tbool CCL_API isQuitRequested () const = 0;
    DECLARE_STRINGID_MEMBER (kComponentName);
    virtual void CCL_API extendMenu (IMenu& menu, StringID name) = 0;
    bool dispatchCommand (const CommandMsg& msg);

    bool dispatchCommand (
        const CommandMsg& msg,
        CommandDispatchEntry <T> dispatchTable []
    );

    bool dispatchCommandWithAliases (const CommandMsg& msg);

Detailed Documentation

Methods

virtual void beforeInitialize ()

Called before Kernel is initialized.

virtual bool startup ()

Put application startup code in here.

virtual void uiInitialized ()

Called after UI is initialized.

virtual void beforeQuit ()

Called before application exits.

virtual bool shutdown ()

Put application shutdown code in here.

virtual void showAbout ()

Show about dialog.

virtual void onRestartRequested (MessageRef msg)

Application restart has been requested via global signal.

virtual void onQuitRequested (MessageRef msg)

Application quit has been requested via global signal.

virtual StringID CCL_API getApplicationID () const

Get application identifier.

virtual StringID CCL_API getApplicationPackageID () const

Get application package identifier.

virtual StringRef CCL_API getApplicationTitle () const

Get application name.

virtual ITheme*CCL_API getApplicationTheme () const

Get application theme.

virtual IMenuBar*CCL_API createMenuBar ()

Create the main menu bar.

virtual void CCL_API processCommandLine (ArgsRef args)

Process command line received by this or other instance.

virtual tbool CCL_API openFile (UrlRef path)

The OS has send an open file message.

virtual IDragHandler*CCL_API createDragHandler (
    const DragEvent& event,
    IView* view
)

Create a drag handler for something dragged e.g.

on the application window.

virtual tbool CCL_API requestQuit ()

Try to quit application.

virtual tbool CCL_API isQuitRequested () const

Check if quit is requested.

virtual tresult CCL_API initialize (IUnknown* context)

Initialize plug-in component within specified context.

virtual tresult CCL_API terminate ()

Terminate plug-in component.

virtual IObjectNode*CCL_API findChild (StringRef id) const

Find child by string identifier.

virtual void CCL_API notify (ISubject* subject, MessageRef msg)

Receive notification from subject.

template  <class T>
T* getSpecifics ()

Access to application specifics.

static Website Application* getApplication ()

Get application instance.

static String getWebLink (StringID id, String* title = nullptr)

Get URL from weblinks.xml.