• Login
sketchucation logo sketchucation
  • Login
🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

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.
  • D Offline
    Dan Rathbun
    last edited by 31 Jan 2012, 03:12

    @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 5 Feb 2012, 22:19

      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 6 Feb 2012, 01:27

        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
        • D Offline
          Dan Rathbun
          last edited by 6 Feb 2012, 04:25

          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 6 Feb 2012, 04:34

            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 6 Feb 2012, 04:42

              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
              • D Offline
                Dan Rathbun
                last edited by 6 Feb 2012, 05:19

                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 6 Feb 2012, 10:51

                  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 6 Feb 2012, 10:58

                    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
                    • D Offline
                      Dan Rathbun
                      last edited by 6 Feb 2012, 11:44

                      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 6 Feb 2012, 12:40

                        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 6 Feb 2012, 20:52

                          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
                          • D Offline
                            driven
                            last edited by 6 Feb 2012, 21:12

                            This Message, which shows, in the reply section, it's appearing in time slot for when I posted it ????

                            Re: mac UI.messagebox - hud and timeout
                            by driven on Mon Feb 06, 2012 1:40 pm

                            The original is referred to as aDisplayMessage 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 bodgedTarget[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
                            • D Offline
                              Dan Rathbun
                              last edited by 11 Feb 2012, 05:58

                              @driven said:

                              I can't find a Ruby equivalent, ...

                              Likely any Ruby equiv. would be a class in the GTK or Wx (or similar toolkit modules.)

                              Name: OK.. it looks like "Display" and "Notify/Notification" may be the buzz words, for this. "On-Screen" seems a bit 'obvious' (although, I suppose, one can have an Audio notification, as well.)

                              "Display" is too vague.

                              I'd prefer: GUI.notify_box( message, timeout, [opts_hash] )
                              with the (dismissal) return value true || false

                              If the timeout arg != 0 and the box times out and closes, false is returned.
                              If the user dismisses the box before it times out, true is returned.

                              If the timeout arg == 0, then the user MUST manually dismiss the box, and true is ALWAYS returned, in this case.

                              Of course the timeout arg can have a default, say 5 secs ?

                              The hash_opts (3rd arg,) can be specified without braces, in the method call, but Ruby should collect them (automatically,) into a internal hash argument.

                              I'm not here much anymore.

                              1 Reply Last reply Reply Quote 0
                              • D Offline
                                Dan Rathbun
                                last edited by 11 Feb 2012, 06:01

                                @driven said:

                                This Message, which shows, in the reply section, it's appearing in time slot for when I posted it ????

                                Yep... deleting the poll, did not fix the phpBB bug (looks like.) It seemed to be OK for a few days, until someone else posted again. I was never aware that Aerilius posted. It did not show in the right column where the most recent post & poster goes. (It always showed the OP's name.)

                                I'm not here much anymore.

                                1 Reply Last reply Reply Quote 0
                                • D Offline
                                  Dan Rathbun
                                  last edited by 11 Feb 2012, 06:35

                                  @driven said:

                                  I've been distracted by almost having a WebDialog do the same things as my macMessage video shows. [but it's an 'almost' standard webdialog].

                                  Certainly this approach would be easier to implement (on both platforms.)

                                  Jim, ThomThom and I, have all played around with changing a WebDialog's window styles, just after calling it's show method.
                                  On Win32 we can change it's border style to a ToolWindow, or even turn off all the borders entirely. I suppose we could also make the background semi-transparent.

                                  We do these via Win32API system calls.

                                  I'm not sure if the WebBrowser control can see the parent window object as implemented in the WebDialog class, via HTML,CSS or Js. Seems like I recall us trying, and getting a Js error. (We discussed this awhile back, on the subject of making WebDialog that acted just like floating toolbars, and switching window focus to the SU main app window, when a WebDialog control was clicked.)
                                  Anyway ... I suspect we cannot change the WebDialog window's borders (and so forth,) FROM the Javascript running IN the WebDialog. (I'd love to be proven wrong on this.)

                                  I'm not here much anymore.

                                  1 Reply Last reply Reply Quote 0
                                  • D Offline
                                    Dan Rathbun
                                    last edited by 17 Feb 2012, 01:50

                                    Playing around with this idea a bit... I realized we cannot have the method return a value from the notifypanel because the method creating it would have to wait.. and that would cause SU blocking. (possibly ghost-window "whiteout".)

                                    I'm not here much anymore.

                                    1 Reply Last reply Reply Quote 0
                                    • D Offline
                                      driven
                                      last edited by 17 Feb 2012, 02:00

                                      That's what was happening here, the block bit, until I put it in it's own thread.

                                      @bht= Thread.new { Thread.current["name"] = "BHT"; system("bht_su"); Thread.exit}

                                      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
                                      • 1
                                      • 2
                                      • 2 / 2
                                      2 / 2
                                      • First post
                                        21/38
                                        Last post
                                      Buy SketchPlus
                                      Buy SUbD
                                      Buy WrapR
                                      Buy eBook
                                      Buy Modelur
                                      Buy Vertex Tools
                                      Buy SketchCuisine
                                      Buy FormFonts

                                      Advertisement