Tree List: changing the $tootip based on the line the mouse is over.

Doug Easterbrook doug at artsman.com
Thu Sep 15 01:24:52 UTC 2022


hi Udo

I’ve come a little closer - was corresponging with omnis support and here’s the hist of what I have right now.

On evMouseEnter
# V1007371 see if we can determine what the line is to make a customtooltip of the line
Calculate line as mouseover(kMLine)
If line>0

Do iTreeList.$getvisiblenode(line) Returns icNode
Calculate Tag as icNode.$tag

Calculate message as 'Click on a field to use that field as part of your search criteria’

If ableToMakeCustomTooltip
Calculate message as $cinst.$getCustomToolTip(Tag)
End If
Calculate iTreeList.$tooltip as message
End If


Omnis support pointed out that there was a great shortcut to $getVisibleNode() based on the line number.  That dramatically simplifies the code.   So, I’ll implement this.


I put in an enhancement request for ‘on evMouseover’ event support.   We put this in our theatre map external and use it to make custom tooltips when people hover over a seat in a theatre .. it’ll say things like ’section A Row B Seat 101’

There is a nice property called '$hot’ that you can enable for a tree list so when you run your mouse over the treelist, it highlights which line you are on.    if Studio knows that, then evMouseover should be possible


for the meantime, I could run timers to see where people are and call the tooltip creation routines… but I think timers are overkill for this.


so, thanks for the suggestions.   it got me where I now know how to do it and where this fall short.


Doug Easterbrook
Arts Management Systems Ltd.
mailto:doug at artsman.com
http://www.artsman.com
Phone (403) 650-1978

> On Sep 14, 2022, at 12:46 AM, Udo Sonnabend | WigaSoft AG <U.Sonnabend at wigasoft.ch> wrote:
> 
>   Hi Doug
>   Yes, only evMouseEnter and evMouseLeave can be triggered. By setting up
>   a timer which evaluates the current node of the mouse position I
>   thought that it will be possible to change the tooltip. But redrawing
>   the tree component with all different options makes no effect. There
>   seems no possibility to redraw the tooltip even when changing the
>   $tooltipPos. May be some folks out know a solution ?
>   So it would be a good enhancement request to Omnis to  provide a
>   function for redrawing the current tooltip and 2nd getting an optional
>   evMouseMove Event on every component.
>   Regards,
>   u.
> 
>   WigaSoft AG
>   Udo Sonnabend
>   Entwickler
>   Oberstrasse 222 | Postfach 51 | CH-9014 St. Gallen
>   Telefon +41 71 274 51 31 | [1]www.wigasoft.ch |
>   [2]U.Sonnabend at wigasoft.ch
> 
>   Veranstaltungshinweis
>   25. - 27. Oktober 2022 Besuchen Sie uns an der [3]IFAS Expo, der
>   wichtigste Branchentreffpunkt für den Schweizer Gesundheitssektor, sie
>   finden uns in der Halle 7, Stand 30.
>   Bestellen Sie jetzt mit unserem Gutscheincode Ihr [4]Eintrittsticket
> 
> 
>   Diese Mitteilung kann persönliche, vertrauliche oder rechtlich
>   geschützte Informationen enthalten und ist nur für die Verwendung durch
>   den beabsichtigten Empfänger bestimmt. Auf Vertraulichkeit oder Rechte
>   wird aufgrund von Fehlübertragungen nicht verzichtet. Wenn Sie nicht
>   der beabsichtigte Empfänger dieser Mitteilung sind, dürfen Sie diese in
>   keiner Form verwenden, verbreiten oder kopieren. Haben Sie diese
>   Mitteilung irrtümlich erhalten, dann löschen Sie diese und allfällige
>   Kopien und benachrichtigen Sie bitte unverzüglich den Absender – besten
>   Dank.
>   P Bitte denken Sie an die Umwelt, bevor Sie dieses Mail drucken. Think
>   before print!
>   -----Ursprüngliche Nachricht-----
>   Von: omnisdev-en [[5]mailto:omnisdev-en-bounces at lists.omnis-dev.com] Im
>   Auftrag von Doug Easterbrook via omnisdev-en
>   Gesendet: Mittwoch, 14. September 2022 02:33
>   An: OmnisDev List - English <omnisdev-en at lists.omnis-dev.com>
>   Cc: Doug Easterbrook <doug at artsman.com>
>   Betreff: Re: Tree List: changing the $tootip based on the line the
>   mouse is over.
>   hi Udo.
>   long time no talk… : (
>   thanks for the sample and it has the guts of the answer.   I’ve been
>   playing with it a bit
>   I can get what I want and set a tooltip — mostly.   When I run my mouse
>   up and down the treelist, no other event is generated unltil I move the
>   mouse out of the treelist area and back in
>   eg the events on the treelist object are
>   On evMouseEnter
>   # V1007371 see if we can determine what the line is to make a
>   customtooltip of the line Calculate line as mouseover(kMLine) Send to
>   trace log enter line [line]
>   On evMouseLeave
>   Calculate line as mouseover(kMLine)
>   Send to trace log leave line [line]
>   when I move the cursor down the treelist, I expected a trace to look
>   like
>   enter line 1
>   leave line 1
>   enter line 2
>   leave line 2
>   etc
>   however, that is not to be.   it only gives an entry in the tracelog
>   when you enter the treelist the first time, or move it sideways out of
>   the tree list area and then back in
>   short of tracking the mouse over the entire window in the main event
>   loop and doing a lot of x-y calculations, I think I’m hooped.   Might
>   be time to ask tech support
>   Doug Easterbrook
>   Arts Management Systems Ltd.
>   [6]mailto:doug at artsman.com
>   [7]http://www.artsman.com
>   Phone (403) 650-1978
>> On Sep 13, 2022, at 7:58 AM, Udo Sonnabend | WigaSoft AG
>   <U.Sonnabend at wigasoft.ch> wrote:
>> 
>> Hi Doug
>> 
>> Maybe following Code Sample is what u need.
>> 
>> Idea:
>> An Omnis Tree-Component displays a Subset of  a Tree in deep first
>   order DFS. So travers the tree  in this order by doing $first and
>   $nextnode recursively. Only count visible nodes from $expanded branches
>   and stop if the line number equals the received mouseover(kmline). Put
>   this code behind your mouse event.
>> 
>> Hope that fits 😉
>> 
>> Regards,
>> Udo.
>> 
>> 
>> If mouseover(kMLine)
>> 
>> Calculate line as mouseover(kMLine)
>> Set reference node to $cobj.$first()
>> Calculate count as 1
>> Calculate parentLevel as 0
>> 
>> While count<line
>> 
>>   If node.$count&not(node.$isexpanded)&parentLevel=0
>>     Calculate parentLevel as node.$level
>>   End If
>> 
>>   Set reference node to $cobj.$nextnode(node,kTrue)
>> 
>>   If (node.$level<=parentLevel)|(parentLevel=0)
>>     Calculate count as count+1
>>     Calculate parentLevel as 0
>>   Else
>>     # do not count, hidden branch ( = not($isexpanded))
>>   End If
>> 
>> End While
>> End If
>> 
>> Send to trace log [node().$name]
>> 
>> 
>> 
>> WigaSoft AG
>> Udo Sonnabend
>> Entwickler
>> 
>> Oberstrasse 222 | Postfach 51 | CH-9014 St. Gallen Telefon +41 71 274
>> 51 31 | [8]www.wigasoft.ch<http://www.wigasoft.ch/> |
>> U.Sonnabend at wigasoft.ch<mailto:U.Sonnabend at wigasoft.ch>
>> 
>> 
>> Veranstaltungshinweis
>> 25. - 27. Oktober 2022  Besuchen Sie uns an der IFAS
>   Expo<https://www.ifas-expo.ch/de/expo>, der wichtigste
>   Branchentreffpunkt für den Schweizer Gesundheitssektor, sie finden uns
>   in der Halle 7, Stand 30.
>> 
>> Bestellen Sie jetzt mit unserem Gutscheincode Ihr
>> 
>   Eintrittsticket<https://www.ifas-expo.ch/de/ticket?voucher=IFAS2022-WI
>> GASOFT>
>> 
>> 
>> 
>> Diese Mitteilung kann persönliche, vertrauliche oder rechtlich
>   geschützte Informationen enthalten und ist nur für die Verwendung durch
>   den beabsichtigten Empfänger bestimmt. Auf Vertraulichkeit oder Rechte
>   wird aufgrund von Fehlübertragungen nicht verzichtet. Wenn Sie nicht
>   der beabsichtigte Empfänger dieser Mitteilung sind, dürfen Sie diese in
>   keiner Form verwenden, verbreiten oder kopieren. Haben Sie diese
>   Mitteilung irrtümlich erhalten, dann löschen Sie diese und allfällige
>   Kopien und benachrichtigen Sie bitte unverzüglich den Absender – besten
>   Dank.
>> 
>> P Bitte denken Sie an die Umwelt, bevor Sie dieses Mail drucken.
>   Think before print!
>> 
>> ________________________________
>> Von: omnisdev-en <omnisdev-en-bounces at lists.omnis-dev.com> im Auftrag
>> von Doug Easterbrook via omnisdev-en
>   <omnisdev-en at lists.omnis-dev.com>
>> Gesendet: Dienstag, 13. September 2022 00:55
>> An: OmnisDev List - English <omnisdev-en at lists.omnis-dev.com>
>> Cc: Doug Easterbrook <doug at artsman.com>
>> Betreff: Tree List: changing the $tootip based on the line the mouse
>   is over.
>> 
>> wondering if anybody has figured out how to change the tooltip on a
>   tree list for the current line the mouse is over.
>> 
>> I’ve determined out this much.    In the events on the tree list, I
>   have
>> 
>> on evMouseover
>>  calculate line as mouseover(kmline)
>> 
>> 
>> 
>> and the value of line is the line I just put my mouse over.   it is
>   based on the number of visible lines in the treelist.  for example, if
>   lines 1 and 3 are collapsed,  3 is not and I run the mouse over the
>> 4th line, I get a 4
>> 4th line, I get a 5
>> 
>> eg
>>> Collapsed (Line 1)
>>> Collapsed (Line 2)
>>> Expanded (Line 3)
>> —— Item 1 (line 4)
>> — — Item 2 (line 5)
>> 
>> 
>> 
>> since I know the line, I ant to get the $tag for that line the mouse
>   is over — and then I can figoure out what I want my tooltip to change
>   to based on the line.
>> 
>> 
>> 
>> has anybody figured out how to  determine the tag as people run the
>   mouse over the tree list with various things expaned and not expanded.
>> 
>> its easy enough when people click on the line, because you get told
>> the $node
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> Doug Easterbrook
>> Arts Management Systems Ltd.
>> [9]mailto:doug at artsman.com
>> [10]http://www.artsman.com
>> Phone (403) 650-1978
>> 
>> _____________________________________________________________
>> Manage your list subscriptions at [11]https://lists.omnis-dev.com
>   Start a
>> new message -> [12]mailto:omnisdev-en at lists.omnis-dev.com
>> _____________________________________________________________
>> Manage your list subscriptions at [13]https://lists.omnis-dev.com
>   Start a
>> new message -> [14]mailto:omnisdev-en at lists.omnis-dev.com
>   _____________________________________________________________
>   Manage your list subscriptions at [15]https://lists.omnis-dev.com Start
>   a new message -> [16]mailto:omnisdev-en at lists.omnis-dev.com
> 
> References
> 
>   1. http://www.wigasoft.ch/
>   2. mailto:U.Sonnabend at wigasoft.ch
>   3. https://www.ifas-expo.ch/de/expo
>   4. https://www.ifas-expo.ch/de/ticket?voucher=IFAS2022-WIGASOFT
>   5. mailto:omnisdev-en-bounces at lists.omnis-dev.com
>   6. mailto:doug at artsman.com
>   7. http://www.artsman.com/
>   8. http://www.wigasoft.ch<http://www.wigasoft.ch/
>   9. mailto:doug at artsman.com
>  10. http://www.artsman.com/
>  11. https://lists.omnis-dev.com/
>  12. mailto:omnisdev-en at lists.omnis-dev.com
>  13. https://lists.omnis-dev.com/
>  14. mailto:omnisdev-en at lists.omnis-dev.com
>  15. https://lists.omnis-dev.com/
>  16. mailto:omnisdev-en at lists.omnis-dev.com
> _____________________________________________________________
> Manage your list subscriptions at https://lists.omnis-dev.com
> Start a new message -> mailto:omnisdev-en at lists.omnis-dev.com 



More information about the omnisdev-en mailing list