LC 8 Property Inspector

Richard Gaskin ambassador at fourthworld.com
Tue Oct 13 12:05:38 EDT 2015


Mark Wieder wrote:
> On 10/12/2015 01:31 PM, Richard Gaskin wrote:
>
>> 1. How do we open them?  Currently third-party tools are relegated to
>> the Plugins submenu, but crafting a launcher tool rack is simple
>> stuff, and equally simple to just hide the current IDE's toolbar
>> (which I've been doing for years - I go weeks at a time without ever
>> seeing it).
>
> Check out some things in the revIDELibrary. For instance, the
> revIDEPaletteToStackName() and revIDEAvailablePalettes() functions.
> They're hard-coded for now, but the plan is to open them up when the
> references in the IDE stacks are refactored. And look at the publish
> and subscribe functions as well, which will allow IDE component
> replacements to register interest in certain IDE messages and respond
> to them.


A while back I was reading about Linux' ibus and got inspired to start 
playing around with an experimental library for a similar system in 
LiveCode, a sort of "message bus" where one could define messages as 
hierarchical paths and assign listeners to them at any point in the path.

For example, imagine a set of message buses defined as:

    /ide/tools/init
    /ide/tools/update
    /app/data/recordChanged
    /app/data/tableChanged
    /ahsoftware/glx/scriptChanged

With those, any IDE tool palette could subscribe to the first two buses, 
your app's data views could subscribe to that third and fourth buses, 
anything that needs to know when a script has changed in your editor 
could subscribe to that last bus.

But with these "message buses" expressed as hierarchies, anything that 
needs notification of any GLX messages could just subscribe to 
"/ahsoftware/glx" without having to bind to every message individually, 
and receive all messages sent to that path or anything below it.

Similarly, IDE tools could subscribe to /ide/tools to get all 
tool-related message, and an app's data views might subscribe to 
/app/data to get all of those notifications.

Generic bus monitoring tools could be made by binding to "/".

When a subscribed object receives the dispatched message, the message 
itself is just the last element in the path (e.g., "scriptChanged").  In 
cases where an object may need to distinguish between messages which may 
have the same name but coming from different parts of the bus hierarchy 
a function is provided to obtain the full path of the dispatched message.

My current implementation only handles messages and managing 
subscriptions to them, but it wouldn't be hard to borrow other ideas 
from ibus to include data at those paths as well, or even metadata which 
might contain the long ID of the sender and a timestamp of when that 
data changed.

It would seem a lot of things might become much simpler with 
hierarchical binding.

If this seems useful to anyone I'll see if I can get some time to put 
together a demo stack more usable than my thrown-together unlabeled 
buttons and post it somewhere.

-- 
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  Ambassador at FourthWorld.com                http://www.FourthWorld.com





More information about the use-livecode mailing list