• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Displaying contents of a modeless dialog box during execution...

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 143
  • Views 15751
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Displaying contents of a modeless dialog box during execution of a SKILL script

jaleco
jaleco over 5 years ago

I have a modeless informational dialog box defined at the beginning of a SKILL script, but its contents don't display until the script finishes.

How do you get a modeless dialog box contents to display while a SKILL script is running?

procedure(myproc()

   prog((myvars)

     hiDisplayAppDBox()    ; opens blank dialog box - no dboxText contents show until script completes!

     ....rest of SKILL code in script...launches child processes

   );prog

);proc

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    Call hiFlush() after the hiDisplayAppDBox()

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jaleco
    jaleco over 5 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks for the tip. 

    I have tried hiFlush() after hiDisplayAppDBox(), but it had no effect. 

    I have also tried ipcSleep() after hiDisplayAppDBox(), in an attempt to stop the script enough to display the Dbox.

    No progress.  Any other ideas?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • jaleco
    jaleco over 5 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks for the tip. 

    I have tried hiFlush() after hiDisplayAppDBox(), but it had no effect. 

    I have also tried ipcSleep() after hiDisplayAppDBox(), in an attempt to stop the script enough to display the Dbox.

    No progress.  Any other ideas?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to jaleco

    Well, the hiFlush worked for me - I tried it. Note that the UI won't refresh if you then move windows around and the code is executing.

    Which IC subversion are you using (Help->About in the CIW will tell you)? This may be important...

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jaleco
    jaleco over 5 years ago in reply to Andrew Beckett

    Running Cadence version IC6.1.7.500.23 here.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jaleco
    jaleco over 5 years ago in reply to jaleco

    ...that's IC6.1.7-64b.500.23

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jaleco
    jaleco over 5 years ago in reply to jaleco

    I have cut down the script to literally only the dialog box and still see the same behavior, so it isn't related to anything else in the SKILL code.

    Note that without the ipcSleep(), or in a very short script, the delay in populating the dialog box may not be noticeable.

    It could appear that the dialog box is immediately populated with its text, but really the script has completed first.

    procedure(run_DBox()
      let((InfoDBox)
        hiDisplayAppDBox(
          ?name InfoDBox=gensym('InfoDBox)
          ?dboxBanner "Banner text here"
          ?dboxText "Dialog Box text here."
          ?dialogType hicMessageDialog
          ?dialogStyle 'modeless
         ?buttonLayout 'Close
         ?buttons "Close"
          ); dbox

        hiFlush()
        printf("Done.....\n")
        ipcSleep(2)
        ;;hiDBoxCancel(symeval(InfoDBox))  ; commented out option to remove DBox at end of script
      ); let
    ); procedure run_DBox

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to jaleco

    I switched back to the same IC617 version you're using and see the problem. The first time I ran it, it was OK, but after that I see the delay. In IC618 (ISR10), I don't see the issue - this might be a consequence of a newer Qt version being used under the hood in IC618. I checked with the base release of IC618 too, and it's fine there.

    Since IC618 was released over 18 months ago and IC617 is no longer supported, perhaps you  could move to IC618?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jaleco
    jaleco over 5 years ago in reply to Andrew Beckett

    Thanks for the sanity check Andrew.

    Unfortunately our corporate CAD group has not moved to IC618 yet, so we are behind the adoption curve....but on the bright side, we aren't using 6.1.4 (!).

    Any suggestions for an alternative approach in IC617?

    I am just attempting to put a message in front of a script user while the script runs.

    Printing to the CIW is not helpful, as many people don't watch the CIW, and besides a CIW message is quickly buried by the transcript generated.

    - James

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to jaleco

    Hi James,

    Not sure there's much you can do - other than maybe using a progress box instead. Even then it misbehaves if you just display the progress box, but it seems if you set the progress immediately after displaying it, it then works:

    procedure(run_DBox()
      let((InfoDBox)
        hiDisplayProgressBox(
          ?name InfoDBox=gensym('InfoDBox)
          ?banner "Banner text here"
          ?text "Dialog Box text here."
          ); dbox

        hiSetProgress(symeval(InfoDBox) 0)
        printf("Done.....\n")
        ipcSleep(2)
        ;;hiDBoxCancel(symeval(InfoDBox))  ; commented out option to remove DBox at end of script
      ); let
    ); procedure run_DBox

    You could then potentially update the progress during the code?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jaleco
    jaleco over 5 years ago in reply to Andrew Beckett

    Thanks Andrew, the progress box worked.

    Its only quirk in v6.1.7 is that I had to set its progress twice to get the text to display.

    The initial hiSetProgress() gave me a blank progress box.

    The second hiSetProgress() displayed the text.

    This is easy enough to initialize with zero, then update the progress to 1.

    It's a good workaround.

    At least on the upside, the progress box does not have to be cancelled, since it has an autoclose feature.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information