Loki - Cognethos’ Application Framework
For the past few years, Cognethos has been using an application framework we call Loki to build most of our desktop applications. Traditionally these applications would have been built using a source code framework such as MFC or ATL - which are fine - but we had a few additional requirements that we wanted to be able to use in all future applications. For this reason we developed Loki which is a binary application framework. In other words, Loki is not a source code library for building applications. Instead it’s a container application that can be extended using a set of plugins.
At present we have three main applications that have been built using the Loki framework - Mercury, Atlas Data Capture and our Scipt Editor. As the screen shots below show, although these are all functionally very different applications - however they all have a consistent look and feel thanks to Loki.



By itself, Loki appears as pretty much an empty application with little more than a main window. Its through its plugin extensibility that the power of this framework becomes apparent.
Features of the current version of Loki include:
- An addin/service based extensibility model, where plugins can both proffer new services and use services provided by other plugins (or Loki itself).
- Extensible XP style menu and tool bar system, including a merge system that merges custom commands with those built in to Loki.
- Support for dockable panes
- Extensbile Tools|Options dialog.
- Shell integration including shell DDE and drag drop.
- Document manager - installing custom documents and views.
- Global keyboard and message hooks.
- Status bar customization
- Recent document management
- Popup windows (modeless floating popup windows)
- Rebranding capability (ability to rename entire product), including splash screen and start up progress.
As well as these built-in features, we also have a set of services that provide common functionality that can be re-used in all the applications built using Loki.
- Explorer pane - an easily extensible browser/explorer tree.
- Property browser window - VB/VBA style shared property list browser.
- Message logging - the message log docked pane.
- Toolbox service - standard toolbox container for holding ActiveX controls, plugin objects etc…
- Scripted addins - the ability to write application wide addin scripts (ie: user addins)
- Integrated Web Browser
- VBSA - VBScript for Applications. VBSA is Cognethos’ integrated script editing environment.
- Standard Docs - helper classes for build tabbed multi-sheet documents.
Using Loki framework lets us concentrate on building the main functionality of an application, leaving Loki to provide the many other details that a high end desktop application should have.

