HTMLDialog - Change source on the fly? Possible?

HTMLDialog - Change source on the fly? Possible?

Postby placidfury » Wed May 15, 2019 8:51 pm

I'm just now digging into HTMLdialog usage, as my plugin has kind of outgrown the limited input boxes.
I tried building a test function, which would build my HTML into a string then assign as the source of the dialog. And it works, for the initial page build and show, but after the user picks something from a dropdown and clicks a button to apply the choice, I want the page to re-load with the selected item in the dropdown changing - but after the button is clicked, the dialog seems to re-load with the initial HTML code, or if I try to rebuild the string and reassign the source, I get a blank window.
Can the source of the dialog be re-assigned while the dialog is open?
I've tried to find good examples of how to do this, but all the examples I find seem to be so simple as to not address this, or so over my head they're not much help...

Thanks!

Test code below, hope this makes sense... and not too ugly:
Code: Select all
module Htmlexample
  def self.show_dialog
   model = Sketchup.active_model
   attrdict = model.attribute_dictionary('BCEWP')
   usage = 'BldgMod'
   html = ''
   html = '   <!DOCTYPE html>
   <html>
   <head>
   <title>Cutlass Dialog</title>
      <link rel="stylesheet" href="' + Sketchup.find_support_file('Plugins') + '/dialtest/layout.css" type="text/css" media="screen" charset="utf-8" />
   </head>
   <script>
   function sendDataToSketchUp() {
      var user_module = document.getElementById("id1");
      sketchup.getUserInput(user_module.value)
   }
   </script>
   <body>
   <div class="content">
   <form>
      <select id="id1" name="modules">'
   $lastmod = MDAT(0, 'LastUsedBldgMod')
   attrdict.each { | key, value |
      if key.to_s.include? "Last"
      else
         if key.to_s.include? usage
            if value.to_s == $lastmod
               html = html + '<option value="' + value.to_s + '" selected>' + value.to_s + '</option>'
            else
               html = html + '<option value="' + value.to_s + '">' + value.to_s + '</option>'
            end
         end
      end
   }
   html = html + '</select>
      <button onclick="sendDataToSketchUp()">Confirm</button>
   </form>
   </div>
   </body>
   </html>'
      
     options = {
     dialog_title: 'Choose Module',
     preferences_key: 'cutlass.dynodial',
     scrollable: false,
          resizable: true,
          width: 300,
          height: 110,
     min_width: 250,
     min_height: 70,
     style: UI::HtmlDialog::STYLE_DIALOG
     }
   dialog = UI::HtmlDialog.new(options)
   dialog.set_html(html)
   if dialog.visible?
     dialog.bring_to_front
   else
      dialog.add_action_callback("getUserInput"){|action_context, user_module|
      puts("JavaScript said user_module is #{user_module}.")
      $lastmod = user_module.to_s
      MDAT(1, 'LastUsedBldgMod', $lastmod)      
      }
      dialog.show
   end #if
   end
end #module
0
User avatar
placidfury 
 

Re: HTMLDialog - Change source on the fly? Possible?

Postby placidfury » Thu May 16, 2019 7:04 pm

Did more searching, and found one spot that said the source couldn't be changed (at least not in the way I was meaning). I guess to do what I really want to do, I'd have to dive deep into this, and I just don't have the time since my development work is a "side" project at work.
I DO however have time to use TT's SKUI, so that's what I'm going with, since I have already used it for a couple dialogs already in this project.
0
User avatar
placidfury 
 

SketchUcation One-Liner Adverts

by Ad Machine » 5 minutes ago



Ad Machine 
Robot
 



 

Return to Developers' Forum

Who is online

Users browsing this forum: No registered users and 5 guests

Visit our sponsors: