An Introduction to Bar None
What is it? BarNone is a system controller for your Amiga. It does things that no other program of its type does, as far as we are aware, on any platform.

Previous system controller software, when it was configurable at all, allowed you to build static lists of icons or text that launched programs. BarNone can do that, but this only scratches the surface of what is possible. Barnone can create any look, any layout, and imbed real, multithreaded, dynamic objects into the interfaces you create. These objects can communicate with each other and with external software.

Furthermore, there are powerful capabilities for using templates and variables. You can learn more about these powerful features elsewhere in this document.

Why was it created? First, there is no other software for the Amiga that does what Barnone can do. We believe that once you try it, you'll wonder how you lived without it.

But the primary reason we created BarNone was to develop some object technology that will be used in future productivity applications. We hope that interest in Barnone will be enough to allow us to create these applications.

What can it do? BarNone allows you to create almost any type of system controller interface you desire. Central to the operation of BarNone are Classes and Objects:
  • A Class defines the basic structure, attributes, and operation of objects. For example, some of BarNone's classes are buttons, clocks, various system meters, and so on.
  • An object is a specific instance of a class. For example, one can create two objects of the Clock class, each with a different appearance. Both are a member of the same class, but each is its own object.

BarNone V1.3 includes 23 classes, including some innovative ones that have never existed before.

So what can these Classes & Objects do? Well, here is one brief example. The Reference section lists the full set of classes and their capabilities. Let us say, for example, that you use 3 public screens, called Workbench, Monitor, & Graphics. You normally operate a web browser on the Graphics screen, which is a 16 bit CyberGfx screen. Perhaps you'd like to create a simple bar, containing a clock, and a dynamic, palette-remapped view of these other screens on your workbench? Very easy, in BarNone. Here is a simple object you can create in less than 2 minutes. It is a horizontal group, containing 4 objects. The first is a clock, and the others are vertical groups containing a view of another screen, and some text to label that view:

Perhaps you want to change the arrangement of the objects? As easy as drag & drop. Perhaps you want to configure it so when you click the clock, the time preferences program is run? You can do it. Perhaps you want to add a small button next to each screen view that pops up a larger version? You can do it. Perhaps you want this window to be smaller, borderless, and to appear on all of your screens? You can do it. Maybe you want a completely different arrangement of objects, with no clocks or screenviews, but a CPU meter and some buttons for launching programs? You can do it.

Nothing about how BarNone works is predefined or static. You can mold it to suit your needs. The clock, screenview, and text classes shown here are just 3 of the 20 included in the intial version, and we have plans for many more. Furthermore, many objects can contain other objects in ways limited only by your imagination.

What are templates? Templates are a powerful "cookie-cutter" facility for creating your system controller interfaces. Perhaps there is a group of objects which you want to use repeatedly. You could easily clone that group, and modify it accordingly. But there's an easier way using templates.

A template is the cookie cutter "source". This template can be any group of objects (for example, in the above bar, we have used the vertical group with the screenview and text object 3 times). Each time you use a template, you can change some values seen by all objects inside that template (for example, the screen name here appears in the label text, and is also configured in the screenview object). Then, you can easily change this source once, and have it be reflected everywhere you use the template. Even more, templates can contain other templates! It is very powerful. You can learn more about templates elsewhere in this manual.

How does BarNone work? Here are some of the technical features of BarNone:

  • BarNone is multithreaded. Objects that perform time consuming operations launch their own task.

  • BarNone uses runtime-binding. This is a powerful method for allowing extensions to the program later on, by anyone, without even recompiling the software.

  • BarNone uses the MUI object library & Listtree. MUI is by far the most powerful object library available for the Amiga.

  • BarNone uses dynamic loading. Only the features you use get loaded.

  • Every object in BarNone is localizable using standard AmigaOS message catalogs.

So that's it? No. There's much more. Read on to discover it.