O$4 - Copy a continer object

Mischa mischa at omnislab.com
Sun Mar 15 13:49:27 EDT 2015


Hi Michael,

this was my prayer to Blyth/Omnis Software/Raining Data/TL since ages: Give
us a desktop window. This is a window that stays in background all the time,
but can react to mouse clicks and events - for exactly the thing you have in
mind. My impression always was, they had no idea what I'm talking about,
however now that I sometimes have to test my applications on Macs, I can see
why - Macs don't have a desktop at all. At $euromnis 2014 I however had the
opportunity to talk with Bob Whiting, and at least it was acknowledged that
this in fact could be useful and not too hard to implement ;)

You cannot switch the $order in a window instance, however setting the
current field should bring it to the front. I did something similar with
subwindows, however gave up because the redraw was quite strange when I
dragged it around in the master window - the screen contents from the old
position was not removed so it had a trail along the movement.

Best greetings
Mischa

---------------------------------------------------
  T H E   O M N I S   L /\ B     www.omnislab.com
---------------------------------------------------

-----Ursprüngliche Nachricht-----
Von: omnisdev-en-bounces at lists.omnis-dev.com
[mailto:omnisdev-en-bounces at lists.omnis-dev.com] Im Auftrag von Michael
Mantkowski
Gesendet: Freitag, 13. März 2015 01:27
An: 'OmnisDev List - English'
Betreff: RE: O$4 - Copy a continer object

Hi Mischa,

I agree and I have been experimenting with using Subwindows but have been
having some difficulties because of what I am trying to accomplish.

What I have created in these ScrollBoxes are what look like Window Frames.
Inside that is a Subwindow where I load the various windows a want.  I use a
master object and create a new one for each "Window" I want to open.

The main idea is to create a "Virtual Desktop" inside a "Master Window"
where the user can maintain a single clients records.  There can then be
more than one client desktop open at the same time and they can all use the
same windows but keep them separate.

All nice in theory accept for the "Who Is On Top" issue that I cannot seem
to figure out.  Since it appears we can't adjust the $order of objects I am
not sure I am going to be able to do what I want.  Either that or I will be
regulated to tiled windows and not allow overlap.

Anyway, these windows can move and resize just like standard Omnis windows.
But so far I have not been able to figure out the logic for carrying this
over into a Subwindow.  (If I grab the Title Bar of the "Window" it actually
moves within the Subwindow frame instead of the Actual Window the Subwindow
is part of.  I assume I have to setup my code to carry up through the
ScrollBox to the Subwindow.  But so far I have not had a lot of time to
figure that out.  But again, even once I do that I think I will run into the
overlap issue.

What I really wish we in Omnis was the ability to have virtual screen spaces
where they keep track of their own activity.  Just like Subwindows, but
using the complete Window (Title Bars, Boarders, Menus, Etc.).

Michael

*********************************************************************
Michael Mantkowski
ClienTrax Software
1-614-875-2245
*********************************************************************



-----Original Message-----
From: omnisdev-en-bounces at lists.omnis-dev.com
[mailto:omnisdev-en-bounces at lists.omnis-dev.com] On Behalf Of Mischa
Sent: Thursday, March 12, 2015 5:52 PM
To: 'OmnisDev List - English'
Subject: Re: O$4 - Copy a continer object

Hi Michael,

Did some trials on myself because it's an interesting problem ;) but also
ended up with $makelist. It seems that sending each object of scrollbox1 the
message to add itself to scrollbox2 does not work. So if you are using it
more often, subwindows would be more convenient.

Best greetings
Mischa

---------------------------------------------------
  T H E   O M N I S   L /\ B     www.omnislab.com
---------------------------------------------------


-----Ursprüngliche Nachricht-----
Von: omnisdev-en-bounces at lists.omnis-dev.com
[mailto:omnisdev-en-bounces at lists.omnis-dev.com] Im Auftrag von Michael
Mantkowski
Gesendet: Donnerstag, 12. März 2015 22:32
An: 'OmnisDev List - English'
Betreff: RE: O$4 - Copy a continer object

Hi Mischa,

Agreed.  After a lot of hit and miss I came up with this.  Seems to work
fine.  But only one level deep.

;  Copy Main Object
Set reference lvOrigRef to $cinst.$objs.Box1.$ref
Do $cinst.$objs.$add(lvOrigRef) Returns lvRef
Calculate lvRef.$left as 100
Calculate lvRef.$top as 100

;  Copy bobj items
Begin reversible block
    Set current list lvObjList
End reversible block
Calculate lvObjList as lvOrigRef.$bobjs.$makelist($ref)
Redefine list {lvObjRef}
For each line in list from 1 to #LN step 1
    Do lvRef.$bobjs.$add(lvObjList.lvObjRef) Returns lvObjRef
End For

;  Copy obj items
Calculate lvObjList as lvOrigRef.$objs.$makelist($ref)
Redefine list {lvObjRef}
For each line in list from 1 to #LN step 1
    Do lvRef.$objs.$add(lvObjList.lvObjRef) Returns lvObjRef
End For

*********************************************************************
Michael Mantkowski
ClienTrax Software
1-614-875-2245
*********************************************************************



-----Original Message-----
From: omnisdev-en-bounces at lists.omnis-dev.com
[mailto:omnisdev-en-bounces at lists.omnis-dev.com] On Behalf Of Mischa
Sent: Thursday, March 12, 2015 5:26 PM
To: 'OmnisDev List - English'
Subject: Re: O$4 - Copy a continer object

Hi Michael,

I think, the reason why it fails is that the objects are not 'really'
contained in the scrollbox (or any other container object), as you can see
in the class. Only when the window is instantiated, Studio tells them to act
as inside objects. You could either try some $sendall magic, or (my
preferred way) use subwindows instead - this works because the objects are
actually inside the subwindow class.

hth
Mischa

---------------------------------------------------
  T H E   O M N I S   L /\ B     www.omnislab.com
---------------------------------------------------


-----Ursprüngliche Nachricht-----
Von: omnisdev-en-bounces at lists.omnis-dev.com
[mailto:omnisdev-en-bounces at lists.omnis-dev.com] Im Auftrag von Michael
Mantkowski
Gesendet: Donnerstag, 12. März 2015 16:53
An: 'OmnisDev List - English'
Betreff: O$4 - Copy a continer object

I am trying to make a copy of a ScrollBox that contains several objects.

Using the code below, I get the scroll box, but none of the items that are
in the original.

Am I doing something wrong?

Set reference lvOrigRef to $cinst.$objs.Box1.$ref
Do $cinst.$objs.$add(lvOrigRef) Returns lvRef
Calculate lvRef.$name as lvRef.$ident
Calculate lvRef.$left as 100
Calculate lvRef.$top as 100

*********************************************************************
Michael Mantkowski
ClienTrax Software
1-614-875-2245
*********************************************************************


_____________________________________________________________
Manage your list subscriptions at http://lists.omnis-dev.com

_____________________________________________________________
Manage your list subscriptions at http://lists.omnis-dev.com

_____________________________________________________________
Manage your list subscriptions at http://lists.omnis-dev.com

_____________________________________________________________
Manage your list subscriptions at http://lists.omnis-dev.com

_____________________________________________________________
Manage your list subscriptions at http://lists.omnis-dev.com




More information about the omnisdev-en mailing list