sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Mac UI.messagebox - hud and timeout

    Scheduled Pinned Locked Moved Developers' Forum
    38 Posts 5 Posters 2.5k Views 5 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Dan RathbunD Offline
      Dan Rathbun
      last edited by

      Will this just be a splash screen like "notice" window, or will it have all the same button options that a messagebox has ?? (OK, Yes/No, Yes/No/Cancel, etc.)

      I'm not here much anymore.

      1 Reply Last reply Reply Quote 0
      • D Offline
        driven
        last edited by

        Dan,

        In it's original use it 'SELF CENTERS' the message on any computer screen, [mac or PC] on an apple remote desktop network.

        To target an individual App window it needs to know where the app is, in relation to the 'full screen' it was designed for.

        You can only input text, using the single supplied font. You can set the time out so message appears to blink, or give a series of notices that require a click to cancel.

        It's not a replacement for user input, unless single option clicks. i.e. "click to abort, allow timeout to continue"

        However it could replace all the messages that don't really need clicks. e.g. "Select Group or Component" with a 1 second timeout. or script error messages when testing.

        It can respond to and return the single click or the timeout as values, which could be acted upon.

        My original planed usage is to give stepped instructions for using a specific tool instead of using instructor, reading the help files in a WD or using a skp with scenes.

        The user can at any time turn this 'aid' on or off after first run that contains essential operational details.

        I don't mind messages from scripts, but hate the fact I always have to cancel them, the timeout is the main attraction to me.

        It may well be extendable, but first it needs be to reliably 'stuck' to the SketchUp.active_model.active_view or there's not much point to it, except maybe license agreements, copy write read-me's, etc. where you want to cover everything until acknowledged.

        Currently, I've got it capable of replacing e.g. UI.messagebox("Cheese activated.") with MUI.messagebox("Cheese activated.")
        with MUI being up to "full-SU-screen" and on a timeout/click anywhere on background.

        I want to "full-SU-screen" to exclude the 'mac toolbar', which I can only do now with a hardcoded reduction in size. If linked to 'viewport' size it become dynamic.

        depending on how I launch it, it can be modal or non-modal in the normal mac [app specific] fashion.

        Your feedback is valued, as it makes me think, so thanks again.

        john

        learn from the mistakes of others, you may not live long enough to make them all yourself...

        1 Reply Last reply Reply Quote 0
        • Dan RathbunD Offline
          Dan Rathbun
          last edited by

          No problem.. it does help to talk things out.

          For Windows, there is always ONLY one active model... so no floating document windows to iterate.

          But the model can have more than one scene page (actually, looks like it uses the same "pane" window for all scenes.)

          This topic (Sketchup View origin ) covered how to get the (upper-left) viewport origin (in relation to the desktop screen origin, which is also upper-left.)

          The location of the Sketchup application window, and it's size, IS stored in the registry, when SU closes. But it's only good, until the user moves or resizes the app window. The settings are not updated "live", which is why we use Win32API calls instead.

          I'm not here much anymore.

          1 Reply Last reply Reply Quote 0
          • D Offline
            driven
            last edited by

            @dan rathbun said:

            The location of the Sketchup application window, and it's size, IS stored in the registry, when SU closes. But it's only good, until the user moves or resizes the app window. The settings are not updated "live", which is why we use Win32API calls instead.

            All the positions of all current windows are stored by the System Window Server.

            You have to query it in a very specific fashion to get the normally hidden details.

            AppleScript uses it to get a 'restricted' amount of information, but you can get a bit more.

            I actually got Ruby Console and a WebDialogs 'live' positions out earlier, but I accidently deleted the script and can't reproduce it now...

            john

            learn from the mistakes of others, you may not live long enough to make them all yourself...

            1 Reply Last reply Reply Quote 0
            • Dan RathbunD Offline
              Dan Rathbun
              last edited by

              Well deleting the poll, did not help. It still was marked (in the topic list,) that this thread had new posts, and that the last poster was driven, even tho, it was me that was the last poster.

              Let's see if, by me posting this message, if the forum topic lister PHP, gets things set back to normal.

              EDIT: Hey looks like it worked !!

              I'm not here much anymore.

              1 Reply Last reply Reply Quote 0
              • D Offline
                driven
                last edited by

                So, it was you that broke it then... I had to get Gai to remove the poll, I don't have the delete button, it may be admin only...

                I made some progress on doing this sensibly.

                I currently write a dat file to user prefs folder that holds both Desktop's and SU's current position and overall size,
                I collect that in ruby, factor in the view.center, height and width and set the default MUI.message_box to match SU's current UI.message_box dims and position.

                the option hash would be a percentage increase in height and/or width, 0-100 being default to full-viewport.

                If an author wanted total Monitor Screen they can write directly to the utility as a separate operation.

                By approaching it this way, the initial installation of the utility could be added by users as a standalone mac enhancement that replaces the standard annoying UI.message_box's [message-only that have to be clicked for no reason], rather than part of any particular plugin.

                Once installed, MUI module, 'bht' utility and the positions dat file could then be accessed by any author for any purpose.

                thoughts welcome

                john

                learn from the mistakes of others, you may not live long enough to make them all yourself...

                1 Reply Last reply Reply Quote 0
                • Dan RathbunD Offline
                  Dan Rathbun
                  last edited by

                  1. What does MUI stand for ?

                  2. What happens if the user resizes the Sketchup application window, after the module is loaded ?

                  I'm not here much anymore.

                  1 Reply Last reply Reply Quote 0
                  • D Offline
                    driven
                    last edited by

                    @dan rathbun said:

                    1. What does MUI stand for ?
                      mac UI, you had used GUI in your template and I just change it to MUI, for now at least.

                    @unknownuser said:

                    1. What happens if the user resizes the Sketchup application window, after the module is loaded ?
                      It's dynamic, it updates the prefs file with changes then modifies shell script before running. The dat file is a list of 8 items so it's quick and has very little overhead, compared to the normal applescript methods.
                      I still need to read/write some back in ruby, but I'm trying to limit that to a minimum.

                    john

                    learn from the mistakes of others, you may not live long enough to make them all yourself...

                    1 Reply Last reply Reply Quote 0
                    • Dan RathbunD Offline
                      Dan Rathbun
                      last edited by

                      @driven said:

                      @dan rathbun said:

                      1. What does MUI stand for ?
                        mac UI, you had used GUI in your template and I just change it to MUI, for now at least.

                      Well I think the ultimate goal, is to have a cross-platform UI module:

                      example:

                      module SKX;;GUI
                      
                        MAC =( RUBY_PLATFORM =~ /(darwin)/ ? true ; false )
                        WIN =( not MAC )
                      
                        if MAC
                          def self.timed_splash( *args )
                            # code calling Applescript, etc.
                          end
                        else # it's Windows
                          def self.timed_splash( *args )
                            # code using Win32API calls
                          end
                        end # if MAC
                      
                      end # module
                      

                      In practice actually, there would be a loader that determines the platform, and it would require one of two files:
                      skx_gui_mac.rb or skx_gui_win.rb

                      This is how Wx::Windows is setup when it loads.

                      Anyhow, within any author's nested plugin module or class, they can create a pointer to the actual GUI module, using anyname they wish (since it's local to their namespace.)
                      Ex:

                      module Driven
                        module Util
                          class ExportWidget
                            MUI = SKX;;GUI
                            MUI.timed_splash("John's Export Widget",10)
                            # more code ...
                          end # class
                        end
                      end
                      

                      The pointer can be a local constant, or a local var, a class var, doesn't matter. All references in Ruby just point at objects. A class or module name is just a constant that points at the instance objects of class Class and class Module, respectively.

                      I'm not here much anymore.

                      1 Reply Last reply Reply Quote 0
                      • D Offline
                        driven
                        last edited by

                        An update for those interested,

                        After following up on Dan's old suggestion to TIG, about using Thread.new for mac shell running, I have a non-freezing applescript/shell test that runs from a button in SU. The problem I was having with the shell/SU blocking has gone... yeh.

                        At the moment I've made a proof of principle/demo, to show that the 'threading' works and speed is useable.

                        It dynamically resizes SU to a number of random sizes, based on host Monitor size.

                        For each, in turn, it dynamically creates a 'centered' random sized message-box based on the new windows size. [min-max preset as %]

                        The messages are also random, as are the font, shadow and background colors.

                        It takes SU full screen at the end.

                        What I need next is confirmation of it working the same on other macs, before adding all the other bits that already work separately, but not yet combined. There's no reason to think it won't as it uses all mac, SU and Ruby 1.8.5 standard functions. but....

                        I'll try and make a small enough screen-cast to post this demo here for none mac watchers.

                        here's a zipped dmg for any willing mac owners... please.
                        download for testing...
                        john

                        learn from the mistakes of others, you may not live long enough to make them all yourself...

                        1 Reply Last reply Reply Quote 0
                        • D Offline
                          driven
                          last edited by

                          For some reason i can't upload to YouTube, so I put a movie up here http://gallery.me.com/johnboundy#100086

                          the movies quite compact at 1.2MB, but a small, crap animated giff version comes in at 12MB... I don't follow that.
                          it has 6 or so random window being created...

                          learn from the mistakes of others, you may not live long enough to make them all yourself...

                          1 Reply Last reply Reply Quote 0
                          • Dan RathbunD Offline
                            Dan Rathbun
                            last edited by

                            Bummer.. it a QT movie. Cannot install anything else right now. (Getting the old "System part of the Resgistry has reached it's limit..." messagesboxes.)

                            Perhaps someone else can convert it WMV or AVI or something that YouTube likes ?

                            I'm not here much anymore.

                            1 Reply Last reply Reply Quote 0
                            • D Offline
                              driven
                              last edited by

                              Can you not view it online?

                              I can make and upload to youTube normally, just not at the moment... I'll try tomorrow. john

                              learn from the mistakes of others, you may not live long enough to make them all yourself...

                              1 Reply Last reply Reply Quote 0
                              • D Offline
                                driven
                                last edited by

                                Dan, could you try to stick this on YouTube?

                                emu zipped PC friendly AVI.... I think

                                learn from the mistakes of others, you may not live long enough to make them all yourself...

                                1 Reply Last reply Reply Quote 0
                                • Dan RathbunD Offline
                                  Dan Rathbun
                                  last edited by

                                  It would not run on my Windows Media Player (mesagebox saying wrong format or you don't have the correct codec.)

                                  I'm not here much anymore.

                                  1 Reply Last reply Reply Quote 0
                                  • TIGT Offline
                                    TIG Moderator
                                    last edited by

                                    Runs OK for me on VLC or WMPlayer... but then I probably have every codec known to man...

                                    TIG

                                    1 Reply Last reply Reply Quote 0
                                    • D Offline
                                      driven
                                      last edited by

                                      I have most, but selecting what to use for windows eludes me.

                                      Stream: macmsg_1.wmv
                                      Path: /Applications/GoogleSketchUp_X/macmsg_1.wmv

                                      Duration: 0:00:04
                                      Data Size: 2.27 MB
                                      Bit Rate: 3.94 Mbps

                                      Video Tracks:
                                      Windows Media Video 9 Standard, 960 × 540, 25 fps, 3.94 Mbps

                                      wmv
                                      john

                                      learn from the mistakes of others, you may not live long enough to make them all yourself...

                                      1 Reply Last reply Reply Quote 0
                                      • Dan RathbunD Offline
                                        Dan Rathbun
                                        last edited by

                                        OK the second works fine for me. Had to adjust the play speed to slow.

                                        What do you call this kind of "popup" ??

                                        It's not really a splash window (that usually has a graphic background.)
                                        Not a "messagebox", as that term is taken (although I would have called them "queryboxes", myself.)

                                        It is similar to the icon bubble notification boxes on XP, both system and app (though they popup in the lower right corner of the screen.) Calendar "reminder" apps and AV/Firewalls are the biggest consumers of these "bubble" notice windows. Anyway, these kind of windows, are timed and close or shrink away after an interval with no user interaction.

                                        Anyone have an idea if there is a standard generic name for this type of window ?

                                        I'm not here much anymore.

                                        1 Reply Last reply Reply Quote 0
                                        • D Offline
                                          driven
                                          last edited by

                                          The original is referred to as a DisplayMessage and uses com.apple.ScreenMessage to run, with a full screen base size, on targeted computers in a mac network.

                                          I believe 'Growl' uses something similar for it's 'placable' Screen Notifications.

                                          Which is a bit like Chrome has for webkit- Event Target: Notification

                                          in Cocoa...
                                          maybe - (void) somethingHappened:(NSNotification*):notification {...}

                                          I guess it's more of a bodged Target[ed:Application_DisplayMessage], but, as it has the ability to return a user response?

                                          I can't find a Ruby equivalent, although MacRuby may have something along these lines, being app centric.
                                          john

                                          maybe

                                          learn from the mistakes of others, you may not live long enough to make them all yourself...

                                          1 Reply Last reply Reply Quote 0
                                          • A Offline
                                            Aerilius
                                            last edited by

                                            I've seen it often called as "OSD" or on-screen-display (similar to HUD, head-up-display) or OSD notification.

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 2 / 2
                                            • First post
                                              Last post
                                            Buy SketchPlus
                                            Buy SUbD
                                            Buy WrapR
                                            Buy eBook
                                            Buy Modelur
                                            Buy Vertex Tools
                                            Buy SketchCuisine
                                            Buy FormFonts

                                            Advertisement