类:UI::HtmlDialog

继承:
对象
  • 对象
show all

概述

Ruby的HtmlDialog类允许您从Ruby创建HTML对话框并与之交互。这是在SketchUp中生成复杂的嵌入式UI的最佳方法,但它通常需要HTML和JavaScript专业知识。

如果您的目标是简单地向用户显示网站,请考虑使用#openURL,这将在默认浏览器中显示网页,而不是在SketchUp中的对话框中显示。

对话框的左、上、宽、高等尺寸以逻辑单位表示。这意味着你提供的单位就好像他们在显示器上的“正常”DPI。给定的单位将乘以scale_factor.

版本:

  • SketchUp 2017

常量总结#

UI::HtmlDialog::STYLE_WINDOW
UI::HtmlDialog::STYLE_DIALOG
UI::HtmlDialog::STYLE_UTILITY

实例方法摘要# collapse

构造函数详细信息

#initialize(properties) ⇒ HtmlDialog

注:

在SketchUp 2019之前:width:height如果:preference_key也存在。要在旧版本上解决此错误,请使用#set_size初始化对话框后。

新方法用于创建新的HtmlDialog。

这个properties哈希接受可选密钥style其中1的值为:

UI::HtmlDialog::STYLE_DIALOG

HtmlDialog位于SketchUp的顶部。

UI::HtmlDialog::STYLE_WINDOW

HtmlDialog可以在SketchUp后面,当SketchUp失去焦点时,它不会消失。

UI::HtmlDialog::STYLE_UTILITY

HtmlDialog以小标题栏显示,并保持在SketchUp的顶部。

示例:

dialog = UI::HtmlDialog.new(
{
  :dialog_title => "Dialog Example",
  :preferences_key => "com.sample.plugin",
  :scrollable => true,
  :resizable => true,
  :width => 600,
  :height => 400,
  :left => 100,
  :top => 100,
  :min_width => 50,
  :min_height => 50,
  :max_width =>1000,
  :max_height => 1000,
  :style => UI::HtmlDialog::STYLE_DIALOG
})
dialog.set_url("http://www.sketchup.com")
dialog.show

参数:

  • properties (哈希值)

    包含新创建的对话框的初始属性的哈希。

选项哈希(properties):

  • dialog_title (String)
  • :preferences_key (String)
  • :scrollable (布尔值)
  • :resizable (布尔值) — 默认值:true
  • :width (整数) — 默认值:250
  • :height (整数) — 默认值:250
  • :left (整数) — 默认值:0
  • :top (整数) — 默认值:0
  • :min_width (整数) — 默认值:0
  • :min_height (整数) — 默认值:0
  • :max_width (整数) — 默认值:-1
  • :max_height (整数) — 默认值:-1
  • :style (整数) — 默认值:UI::HtmlDialog::STYLE_DIALOG

版本:

  • SketchUp 2017

实例方法详细信息

#add_action_callback(callback_name) {|action_context, ...| ... } ⇒ Boolean

注:

当HtmlDialog关闭时,对该实例的所有回调都将被清除。如果需要再次打开对话框,请重新附加它们。

这个#add_action_callback方法建立一个Ruby回调方法,html对话框可以调用该方法来执行某些功能。

使用sketchup.callback_method_name从html对话框调用回调方法。html对话框中的JavaScript将使用相同数量的参数调用回调。

调用是异步的。JavaScript调用可能在Ruby回调调用之前返回。使用onCompleted回调以获得完成通知。

基本类型,如布尔值、数字、字符串、数组和散列在Ruby和JavaScript之间自动转换。

示例:

Ruby代码

dialog.add_action_callback("say") { |action_context, param1, param2|
  puts "JavaScript said #{param1} and #{param2}"
}

JavaScript

sketchup.say('Hello World', 42);

带回调的JavaScript

sketchup.say('Hello World', 42, {
  onCompleted: function() {
    console.log('Ruby side done.');
  }
});

如果操作添加成功,则返回true,否则返回false。

参数:

  • callback_name (String)

    要从html对话框调用的回调方法的名称。

产量:

  • (action_context,...)

屈服参数:

  • action_context (对象)

    操作上下文当前未使用。

  • ... (对象)

    从JavaScript发送的参数。

返回值:

  • (布尔值)

    如果操作添加成功,则为true,否则为false。

版本:

  • SketchUp 2017

#bring_to_frontnil

这个#bring_to_front方法将窗口置于最前面,将其放在其他窗口的顶部,即使将其最小化。

示例:

dialog.bring_to_front

返回值:

  • ()

版本:

  • SketchUp 2017

#centertrue

这个#center方法用于使HtmlDialog相对于活动模型窗口居中。如果没有活动的模型窗口,则此函数不执行任何操作。

示例:

dialog.center

返回值:

  • (true)

版本:

  • SketchUp 2017

#closenil

这个#close方法用于关闭对话框。

示例:

dialog.close

返回值:

  • ()

版本:

  • SketchUp 2017

#execute_script(script) ⇒ nil

这个#execute_script方法用于在html对话框上异步执行JavaScript字符串。

示例:

js_command = "document.getElementById('id').innerHTML = '<b>Hi!</b>'"
dialog.execute_script(js_command)

参数:

  • script (String)

    要在HtmlDialog上执行的JavaScript脚本。

返回值:

  • ()

版本:

  • SketchUp 2017

#set_can_closeBoolean

这个#set_can_close方法用于附加在关闭前执行的块,此块必须返回布尔值,如果块返回false,则关闭将被取消。

示例:

dialog.set_can_close { false }

收益率:

  • (布尔值)

    返回一个布尔值来指示对话框是否应该关闭。

返回值:

  • (布尔值)

版本:

  • SketchUp 2017

#set_file(filename) ⇒ nil

这个#set_file方法用于标识要在HtmlDialog中显示的本地HTML文件。

示例:

dialog.set_file("c:/mypage.html")

参数:

  • filename (String)

    HtmlDialog文件(HTML文件)的文件名

返回值:

  • ()

版本:

  • SketchUp 2017

#set_html(html_string) ⇒ nil

这个#set_htmlHtmlLog提供了一个HtmlLog方法来加载字符串。

示例:

html = '<b>Hello world!</b>'
dialog.set_html(html)

参数:

  • html_string (String)

    要在HtmlDialog中显示的有效html字符串。

返回值:

  • ()

版本:

  • SketchUp 2017

#set_on_closedBoolean

这个#set_on_closed方法用于附加将在对话框已处于关闭过程中时执行的块,请在该块中执行任何最后一分钟的操作,例如保存当前状态。

示例:

dialog.set_on_closed { save_selection }

返回值:

  • (布尔值)

版本:

  • SketchUp 2017

#set_position(left, top) ⇒ true

这个#set_position方法用于设置HtmlDialog相对于屏幕的位置(以像素为单位)。

示例:

dialog.set_position(100, 50)

参数:

  • left (整数)

    从左边开始的像素数。

  • top (整数)

    距屏幕顶部的像素数。

返回值:

  • (true)

版本:

  • SketchUp 2017

#set_size(width, height) ⇒ true

这个#set_size方法用于设置HtmlDialog的大小(以像素为单位)。

示例:

dialog.set_size(320, 240)

参数:

  • width (整数)

    HtmlDialog的宽度。

  • height (整数)

    HtmlDialog的高度。

返回值:

  • (true)

版本:

  • SketchUp 2017

#set_url(url) ⇒ nil

这个#set_url方法用于加载包含特定URL处内容的HtmlDialog。此方法允许您在HtmlDialog中加载网站。

示例:

dialog.set_url("http://www.sketchup.com")

参数:

  • url (String)

    特定网站的URL。

返回值:

  • ()

版本:

  • SketchUp 2017

#shownil

这个#show方法用于显示非模态对话框。

示例:

dialog.show

返回值:

  • ()

版本:

  • SketchUp 2017

#show_modalnil

这个#show_modal方法用于显示模式对话框。

示例:

dialog.show_modal

返回值:

  • ()

版本:

  • SketchUp 2017

#visible?Boolean

这个#visible?方法可用于判断对话框是否显示且仍处于活动状态,如果对话框最小化或在屏幕上不可见,则仍将返回true.

示例:

if dialog.visible?
  dialog.bring_to_front
else
  dialog = UI::HtmlDialog.new
  dialog.set_url("http://www.sketchup.com")
  dialog.show
end

返回值:

  • (布尔值)

    如果对话框打开,则返回true。

版本:

  • SketchUp 2017