Thread Rating:
  • 301 Vote(s) - 2.77 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to know if Graphic object is being displayed?
10-25-2011, 01:47 PM,
#1
How to know if Graphic object is being displayed?
Hi,
I implement the function for getting data every 1 minute and showing a dialog on some conditions.
But this is somewhat annoying, because the dialog popups even if the graphic isn't acutally displayed on Monitor for some various reasons (for example it is hided by Curl or Windows OS).
So, I tried to show the dialog only if the graphic actually is displayed, but I couldn't do it.
How can I know if an graphic is actually displayed on Monitor screen?
Reply
10-25-2011, 02:07 PM,
#2
RE: How to know if Graphic object is being displayed?
You could check View.visibility, perhaps?
Reply
10-27-2011, 12:42 PM, (This post was last modified: 10-27-2011, 12:43 PM by alchimiste.)
#3
RE: How to know if Graphic object is being displayed?
(10-25-2011, 02:07 PM)c-s Wrote: You could check View.visibility, perhaps?
I say, it's not only for View, but also all graphic.
For example, we can change screens by using Frame and it's add method.
Code:
{def frame = {Frame}}
{def child1 = {Frame "Child1"}}
{def child2 = {Frame "Child2"}}
{VBox
    frame,
    {HBox
        {CommandButton
            label="show child1",
            {on Action do
                {frame.add child1, replace?=true}
            }
        },
        {CommandButton
            label="show child2",
            {on Action do
                {frame.add child2, replace?=true}
            }
        }
    }
}

If we must check whether child1 is showed, how can we do it?
And I also want to know how to check if the browser or detached curl window is displayed actually.

Reply
10-27-2011, 04:30 PM,
#4
RE: How to know if Graphic object is being displayed?
In that case, you should also look at the display-context option. As the documentation notes, when a Visual's display-context is non-null, it's attached to a graphical hierarchy or otherwise able to be displayed; if it's null, then you know it's definitely not being displayed. Able to be displayed doesn't necessary mean being displayed, so you would also want to check the View.visibility as mentioned above if the option is non-null if you're interested in seeing if it's really on-screen.

So, roughly:
  1. Is display-context null? If so, stop: we're not displayed.
  2. Else is get-view null? If so, again, stop: we're either being printed or not in an actual View.
  3. Else is View.visibility hidden or minimized? If so, stop: the View is out of the user's visibility.
Note that it's OK to check these values -- except note that if you're calling get-view that requires layout validation so be careful about when your timing -- but be cautious about moving Visuals around or setting key options in response to changes, or you may end up with invalidation loops or similar trouble.
Reply
10-27-2011, 04:48 PM,
#5
RE: How to know if Graphic object is being displayed?
Kind of like this:

Code:
{curl 7.0, 8.0 applet}

{def frame = {Frame}}
{def child1 = {Frame "Child1"}}
{def child2 = {Frame "Child2"}}
{def td =
    {TextDisplay
        {on AttachEvent do
            {td.animate
                interval = 1s,
                {on TimerEvent do
                    {if child1.display-context == null then
                        set td.value = "not displayed"
                     else
                        {if-non-null v = {child1.get-view} then
                            {switch v.visibility
                             case "minimized", "hidden" do
                                set td.value = "not displayed"
                             else
                                set td.value = "displayed"
                                {dump {DateTime}, "displayed!"}
                            }
                         else
                            set td.value = "not displayed"
                        }
                    }
                }
            }
        }
    }
}

{VBox
    frame,
    {HBox
        {CommandButton
            label="show child1",
            {on Action do
                {frame.add child1, replace?=true}
            }
        },
        {CommandButton
            label="show child2",
            {on Action do
                {frame.add child2, replace?=true}
            }
        }
    },
    td
}

Note that if you minimize the browser window, the console will stop showing the displayed message.
Reply
11-05-2011, 12:38 AM,
#6
RE: How to know if Graphic object is being displayed?
Can access to root frame be of use here?

{let root-fr:#Graphic = null}
|| some first graphic then declared with

{on ae:AttachEvent do
set root-fr = ae.root-frame

|| ?
(10-27-2011, 04:48 PM)c-s Wrote: Kind of like this:

Robert Shiplett, Curlr
Fredericton NB

Canada
Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  TLS通信下でCould not deserialize the object from Curl.発生 MIT 3 4,707 03-10-2017, 08:35 AM
Last Post: MIT
  Could not deserialize the object from Curl. umemura 4 6,621 04-11-2015, 04:45 AM
Last Post: Sumerjobs
  print-graphic-pdfに関して nmyzk 1 3,431 05-11-2012, 05:23 PM
Last Post: nmyzk
Tongue print-graphic-pdfプロシージャの仕様について 森口 慶紀 1 3,615 09-30-2011, 06:36 PM
Last Post: 森口 慶紀
Forum Jump:


Users browsing this thread:
1 Guest(s)