sketchup-api-stubs 0.7.7 → 0.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sketchup-api-stubs/sketchup.rb +151 -147
  3. data/lib/sketchup-api-stubs/stubs/{array.rb → Array.rb} +741 -741
  4. data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +322 -322
  5. data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +172 -172
  6. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
  7. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  8. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -400
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
  10. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +509 -509
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +476 -478
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +263 -263
  13. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +141 -141
  14. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +522 -522
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +693 -691
  16. data/lib/sketchup-api-stubs/stubs/{geom.rb → Geom.rb} +351 -351
  17. data/lib/sketchup-api-stubs/stubs/{languagehandler.rb → LanguageHandler.rb} +93 -92
  18. data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +595 -573
  19. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +747 -411
  20. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +183 -179
  21. data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
  22. data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +517 -515
  23. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
  24. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +148 -148
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +353 -353
  26. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +354 -349
  27. data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -311
  28. data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
  29. data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -91
  30. data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +370 -370
  31. data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
  32. data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
  33. data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +225 -225
  34. data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +567 -567
  35. data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
  36. data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
  37. data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +183 -183
  38. data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +387 -387
  39. data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +209 -209
  40. data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +344 -344
  41. data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
  42. data/lib/sketchup-api-stubs/stubs/Layout/ReferenceEntity.rb +82 -0
  43. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +692 -694
  44. data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1519 -1519
  45. data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
  46. data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
  47. data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
  48. data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
  49. data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
  50. data/lib/sketchup-api-stubs/stubs/{length.rb → Length.rb} +278 -278
  51. data/lib/sketchup-api-stubs/stubs/{numeric.rb → Numeric.rb} +249 -249
  52. data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +144 -144
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +169 -157
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +209 -209
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +150 -152
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -286
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +302 -302
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +478 -478
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +121 -122
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +659 -577
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -594
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +257 -257
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +201 -201
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +449 -425
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +74 -74
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +104 -104
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +165 -165
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +306 -306
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +42 -42
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +406 -396
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -502
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1239 -1126
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -0
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +545 -545
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -126
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +937 -917
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -104
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +750 -750
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +282 -292
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +62 -62
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +468 -468
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +266 -266
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +189 -189
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +406 -405
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +84 -84
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +306 -306
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +326 -327
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +422 -422
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +427 -427
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +249 -249
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +48 -48
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +114 -112
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +414 -414
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +317 -318
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +142 -142
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +93 -93
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1652 -1654
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +357 -357
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +130 -131
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -284
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +490 -0
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +116 -0
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +797 -797
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +361 -363
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +478 -478
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +361 -364
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +45 -45
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +458 -459
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +212 -212
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +255 -257
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +59 -59
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/Skp.rb +40 -40
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +69 -69
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +217 -217
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +262 -262
  134. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +217 -217
  135. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
  136. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +834 -835
  137. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
  138. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +156 -156
  139. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +75 -71
  140. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
  141. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1311 -1307
  142. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +45 -45
  143. data/lib/sketchup-api-stubs/stubs/{sketchup.rb → Sketchup.rb} +1377 -1353
  144. data/lib/sketchup-api-stubs/stubs/{sketchupextension.rb → SketchupExtension.rb} +353 -353
  145. data/lib/sketchup-api-stubs/stubs/{string.rb → String.rb} +24 -24
  146. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +389 -317
  147. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +494 -478
  148. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +269 -269
  149. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +241 -240
  150. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +635 -633
  151. data/lib/sketchup-api-stubs/stubs/{ui.rb → UI.rb} +683 -672
  152. data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -311
  153. data/lib/sketchup-api-stubs.rb +1 -1
  154. metadata +20 -16
@@ -1,478 +1,494 @@
1
- # Copyright:: Copyright 2021 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # The Ruby HtmlDialog class allows you to create and interact with HTML dialog
5
- # boxes from Ruby. This is the best way to generate complex, embedded UIs
6
- # inside SketchUp, but it does generally require HTML and JavaScript expertise.
7
- #
8
- # If your goal is to simple display a website to your users, consider using
9
- # {UI#openURL}, which will show them a web page in their default browser rather
10
- # than inside a dialog in SketchUp.
11
- #
12
- # The left, top, width, height etc. dimensions of the dialog are in logical
13
- # units. This means you provide the units as if they where on a monitor with
14
- # "normal" DPI. The units given will be multiplied by the same factor as
15
- # returned by {UI.scale_factor}.
16
- #
17
- # For usage examples, including how to migrate from the old WebDialog class,
18
- # see https://github.com/SketchUp/htmldialog-examples.
19
- #
20
- # HtmlDialog uses the following versions of CEF (Chromium Embedded Framework):
21
- #
22
- # [SketchUp 2021.1]
23
- # CEF 88
24
- # [SketchUp 2019.0]
25
- # CEF 64
26
- # [SketchUp 2018.0]
27
- # CEF 56
28
- # [SketchUp 2017.0]
29
- # CEF 52
30
- #
31
- # @version SketchUp 2017
32
- class UI::HtmlDialog
33
-
34
- # Constants
35
-
36
- CEF_VERSION = nil # Stub value.
37
-
38
- CHROME_VERSION = nil # Stub value.
39
-
40
- STYLE_DIALOG = nil # Stub value.
41
- STYLE_UTILITY = nil # Stub value.
42
- STYLE_WINDOW = nil # Stub value.
43
-
44
- # Instance Methods
45
-
46
- # The {#add_action_callback} method establishes a Ruby callback method that your
47
- # html dialog can call to perform some function.
48
- #
49
- # Use the +sketchup.callback_method_name+ to invoke the callback method from your
50
- # html dialog. Your JavaScript in the html dialog will invoke the callback with
51
- # the same number of arguments.
52
- #
53
- # The call is asynchronous. JavaScript call might return before Ruby callback
54
- # even called. Use +onCompleted+ callback to get notified for completion.
55
- #
56
- # Basic types such as booleans, numbers, strings, arrays and hashes are
57
- # automatically converted between Ruby and JavaScript.
58
- #
59
- # @example Ruby Code
60
- # dialog.add_action_callback("say") { |action_context, param1, param2|
61
- # puts "JavaScript said #{param1} and #{param2}"
62
- # }
63
- #
64
- # @example JavaScript
65
- # sketchup.say('Hello World', 42);
66
- #
67
- # @example JavaScript with callback
68
- # sketchup.say('Hello World', 42, {
69
- # onCompleted: function() {
70
- # console.log('Ruby side done.');
71
- # }
72
- # });
73
- #
74
- # @note When an HtmlDialog is closed, all callbacks to that instance are
75
- # cleared. Re-attach them if you need to open the dialog again.
76
- #
77
- # @param [String] callback_name
78
- # The name of the callback method to be
79
- # invoked from the html dialog.
80
- #
81
- # @return [Boolean] true if action added successfully, false
82
- # otherwise.
83
- #
84
- # @version SketchUp 2017
85
- #
86
- # @yield [action_context, ...]
87
- #
88
- # @yieldparam [Object] action_context
89
- # action_context Currently unused.
90
- #
91
- # @yieldparam [Object] ...
92
- # The parameters sent from JavaScript.
93
- def add_action_callback(callback_name)
94
- end
95
-
96
- # The {#bring_to_front} method is used to bring the window to the front,
97
- # putting it on top of other windows even if its minimized.
98
- #
99
- # @bug Prior to SketchUp 2021.1, on Mac, the focus the was not being set
100
- # on the {UI::HtmlDialog}.
101
- #
102
- # @example
103
- # dialog.bring_to_front
104
- #
105
- # @return [nil]
106
- #
107
- # @see Sketchup.focus
108
- #
109
- # @version SketchUp 2017
110
- def bring_to_front
111
- end
112
-
113
- # The {#center} method is used to center the HtmlDialog relative to the active
114
- # model window. If there is no active model window, this function doesn't do
115
- # anything.
116
- #
117
- # @example
118
- # dialog.center
119
- #
120
- # @return [true] This always return true, never false.
121
- #
122
- # @version SketchUp 2017
123
- def center
124
- end
125
-
126
- # The {#close} method is used to close a dialog box.
127
- #
128
- # @example
129
- # dialog.close
130
- #
131
- # @return [nil]
132
- #
133
- # @version SketchUp 2017
134
- def close
135
- end
136
-
137
- # The {#execute_script} method is used to execute a JavaScript string on the
138
- # html dialog asynchronously.
139
- #
140
- # @example
141
- # js_command = "document.getElementById('id').innerHTML = '<b>Hi!</b>'"
142
- # dialog.execute_script(js_command)
143
- #
144
- # @param [String] script
145
- # The JavaScript script to execute on the HtmlDialog.
146
- #
147
- # @return [nil]
148
- #
149
- # @version SketchUp 2017
150
- def execute_script(script)
151
- end
152
-
153
- # The {#get_content_size} method is used to get the content size of the HtmlDialog, in logical pixels.
154
- #
155
- # @example
156
- # width, height = dialog.get_content_size
157
- #
158
- # @return [Array(Integer, Integer), nil] Content width and height of the HtmlDialog.
159
- # A nil value is returned if the HtmlDialog
160
- # is not visible.
161
- #
162
- # @version SketchUp 2021.1
163
- def get_content_size
164
- end
165
-
166
- # The {#get_position} method is used to get the position of the HtmlDialog
167
- # relative to the screen, in logical pixels.
168
- #
169
- # @example
170
- # left, top = dialog.get_position
171
- #
172
- # @return [Array(Integer, Integer), nil] Left and top position of the dialog.
173
- # A nil value is returned if the HtmlDialog
174
- # is not visible.
175
- #
176
- # @version SketchUp 2021.1
177
- def get_position
178
- end
179
-
180
- # The {#get_size} method is used to get the outer frame size of the HtmlDialog, in logical pixels.
181
- #
182
- # @example
183
- # width, height = dialog.get_size
184
- #
185
- # @return [Array(Integer, Integer), nil] Outer frame width and height of the HtmlDialog.
186
- # A nil value is returned if the HtmlDialog
187
- # is not visible.
188
- #
189
- # @version SketchUp 2021.1
190
- def get_size
191
- end
192
-
193
- # The new method is used to create a new HtmlDialog.
194
- #
195
- # When +use_content_size+ is set to +true+, +width+, +height+, +min_width+,
196
- # +max width+, +min_height+, +max_height+ will represent the size of the
197
- # content area of the window. This excludes the titlebar and the window frame.
198
- # When +use_content_size+ is set to +false+ (the default value),
199
- # the size dimensions will represent the outer frame size.
200
- #
201
- # The +properties+ hash accepts an optional key +style+ where the value is
202
- # one of:
203
- #
204
- # [+UI::HtmlDialog::STYLE_DIALOG+] HtmlDialog stays at the top of SketchUp.
205
- #
206
- # [+UI::HtmlDialog::STYLE_WINDOW+] HtmlDialog can go behind SketchUp and
207
- # doesn't disappear when SketchUp looses
208
- # focus.
209
- #
210
- # [+UI::HtmlDialog::STYLE_UTILITY+] HtmlDialog is shown with small titlebar
211
- # and stays on top of SketchUp.
212
- #
213
- # @example With options Hash
214
- # dialog = UI::HtmlDialog.new(
215
- # {
216
- # :dialog_title => "Dialog Example",
217
- # :preferences_key => "com.sample.plugin",
218
- # :scrollable => true,
219
- # :resizable => true,
220
- # :width => 600,
221
- # :height => 400,
222
- # :left => 100,
223
- # :top => 100,
224
- # :min_width => 50,
225
- # :min_height => 50,
226
- # :max_width =>1000,
227
- # :max_height => 1000,
228
- # :style => UI::HtmlDialog::STYLE_DIALOG
229
- # })
230
- # dialog.set_url("http://www.sketchup.com")
231
- # dialog.show
232
- #
233
- # @example With keyword style argument
234
- # dialog = UI::HtmlDialog.new(
235
- # dialog_title: "Dialog Example",
236
- # preferences_key: "my_name_my_extension_my_dialog",
237
- # scrollable: true,
238
- # resizable: true,
239
- # width: 600,
240
- # height: 400,
241
- # left: 100,
242
- # top: 100,
243
- # min_width: 50,
244
- # min_height: 50,
245
- # max_width: 1000,
246
- # max_height: 1000,
247
- # style: UI::HtmlDialog::STYLE_DIALOG
248
- # )
249
- # dialog.set_url("https://www.sketchup.com")
250
- # dialog.show
251
- #
252
- # @note Prior to SketchUp 2019 the +:width+ and +:height+ provided is ignored
253
- # if a +:preference_key+ is also present. To work around this bug on older
254
- # versions use {#set_size} after you initialize the dialog.
255
- #
256
- # @note Prefix +preference_key+ with something unique to your extension.
257
- #
258
- # @note If there is no reference kept to the HtmlDialog object, the window
259
- # will close once the garbage collection runs. This behavior can be confusing
260
- # in trivial test code but is usually not a concern in real life scenarios.
261
- # Typically a persistent reference, e.g. an instance variable, should be kept
262
- # to bring the dialog to front, rather than creating a duplicate, if the user
263
- # should request it a second time.
264
- #
265
- # @option properties [String] :dialog_title
266
- #
267
- # @option properties [String] :preferences_key
268
- #
269
- # @option properties [Boolean] :scrollable
270
- #
271
- # @option properties [Boolean] :resizable (true)
272
- #
273
- # @option properties [Boolean] :use_content_size (false)
274
- #
275
- # @option properties [Integer] :width (250)
276
- #
277
- # @option properties [Integer] :height (250)
278
- #
279
- # @option properties [Integer] :left (0)
280
- #
281
- # @option properties [Integer] :top (0)
282
- #
283
- # @option properties [Integer] :min_width (0)
284
- #
285
- # @option properties [Integer] :min_height (0)
286
- #
287
- # @option properties [Integer] :max_width (-1)
288
- #
289
- # @option properties [Integer] :max_height (-1)
290
- #
291
- # @option properties [Integer] :style (UI::HtmlDialog::STYLE_DIALOG)
292
- #
293
- # @param [Hash] properties
294
- # A hash containing the initial properties of
295
- # the newly created dialog.
296
- #
297
- # @return [HtmlDialog]
298
- #
299
- # @version SketchUp 2017
300
- def initialize(properties)
301
- end
302
-
303
- # The {#set_can_close} method is used to attach a block that is executed just
304
- # before closing, this block has to return a boolean, if the block returns
305
- # false the close will be canceled.
306
- #
307
- # @example
308
- # dialog.set_can_close { false }
309
- #
310
- # @return [Boolean]
311
- #
312
- # @version SketchUp 2017
313
- #
314
- # @yieldreturn [Boolean] Return a boolean to indicate if the dialogs should
315
- # close.
316
- def set_can_close
317
- end
318
-
319
- # The {#set_content_size} method is used to set the content size of the HtmlDialog, in logical pixels.
320
- #
321
- # @example
322
- # dialog.set_content_size(600, 400)
323
- #
324
- # @param [Integer] width
325
- # Content width of the HtmlDialog.
326
- #
327
- # @param [Integer] height
328
- # Content height of the HtmlDialog.
329
- #
330
- # @return [nil]
331
- #
332
- # @version SketchUp 2021.1
333
- def set_content_size(width, height)
334
- end
335
-
336
- # The {#set_file} method is used to identify a local HTML file to display in the
337
- # HtmlDialog.
338
- #
339
- # @example
340
- # dialog.set_file("c:/mypage.html")
341
- #
342
- # @param [String] filename
343
- # The filename for the HtmlDialog file (HTML file)
344
- #
345
- # @return [nil]
346
- #
347
- # @version SketchUp 2017
348
- def set_file(filename)
349
- end
350
-
351
- # The {#set_html} method is used to load a HtmlDialog with a string of provided
352
- # HTML.
353
- #
354
- # @example
355
- # html = '<b>Hello world!</b>'
356
- # dialog.set_html(html)
357
- #
358
- # @param [String] html_string
359
- # A string of valid html to display in your
360
- # HtmlDialog.
361
- #
362
- # @return [nil]
363
- #
364
- # @version SketchUp 2017
365
- def set_html(html_string)
366
- end
367
-
368
- # The {#set_on_closed} method is used to attach a block that will be
369
- # executed when a dialog is already in the process of closing, do any last
370
- # minute operations within this block such as saving the current state.
371
- #
372
- # @example
373
- # dialog.set_on_closed { save_selection }
374
- #
375
- # @return [Boolean]
376
- #
377
- # @version SketchUp 2017
378
- def set_on_closed
379
- end
380
-
381
- # The {#set_position} method is used to set the position of the HtmlDialog
382
- # relative to the screen, in pixels.
383
- #
384
- # @bug Prior to SketchUp 2021.1, on Windows, calling this method incorrectly
385
- # set the focus on the {UI::HtmlDialog}.
386
- #
387
- # @example
388
- # dialog.set_position(100, 50)
389
- #
390
- # @param [Integer] left
391
- # The number of pixels from the left.
392
- #
393
- # @param [Integer] top
394
- # The number of pixels from the top of the screen.
395
- #
396
- # @return [true] This always return true, never false.
397
- #
398
- # @version SketchUp 2017
399
- def set_position(left, top)
400
- end
401
-
402
- # The {#set_size} method is used to set the outer frame size of the HtmlDialog, in pixels.
403
- #
404
- # @bug Prior to SketchUp 2021.1, on Windows, calling this method incorrectly
405
- # set the focus on the {UI::HtmlDialog}.
406
- #
407
- # @example
408
- # dialog.set_size(320, 240)
409
- #
410
- # @param [Integer] width
411
- # Outer frame width of the HtmlDialog.
412
- #
413
- # @param [Integer] height
414
- # Outer frame height of the HtmlDialog.
415
- #
416
- # @return [true] This always return true, never false.
417
- #
418
- # @version SketchUp 2017
419
- def set_size(width, height)
420
- end
421
-
422
- # The {#set_url} method is used to load a HtmlDialog with the content at a
423
- # specific URL. This method allows you to load web sites in a HtmlDialog.
424
- #
425
- # @example
426
- # dialog.set_url("https://www.sketchup.com")
427
- #
428
- # @param [String] url
429
- # The URL for a specific web site.
430
- #
431
- # @return [nil]
432
- #
433
- # @version SketchUp 2017
434
- def set_url(url)
435
- end
436
-
437
- # The {#show} method is used to display a non-modal dialog box.
438
- #
439
- # @example
440
- # dialog.show
441
- #
442
- # @return [nil]
443
- #
444
- # @version SketchUp 2017
445
- def show
446
- end
447
-
448
- # The {#show_modal} method is used to display a modal dialog box.
449
- #
450
- # @example
451
- # dialog.show_modal
452
- #
453
- # @return [nil]
454
- #
455
- # @version SketchUp 2017
456
- def show_modal
457
- end
458
-
459
- # The {#visible?} method is useful to tell if the dialog is shown and still
460
- # alive, if the dialog is minimized or not visible on the screen this will
461
- # still return +true+.
462
- #
463
- # @example
464
- # if dialog.visible?
465
- # dialog.bring_to_front
466
- # else
467
- # dialog = UI::HtmlDialog.new
468
- # dialog.set_url("https://www.sketchup.com")
469
- # dialog.show
470
- # end
471
- #
472
- # @return [Boolean] Returns true if the dialog is open.
473
- #
474
- # @version SketchUp 2017
475
- def visible?
476
- end
477
-
478
- end
1
+ # Copyright:: Copyright 2023 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # The Ruby HtmlDialog class allows you to create and interact with HTML dialog
5
+ # boxes from Ruby. This is the best way to generate complex, embedded UIs
6
+ # inside SketchUp, but it does generally require HTML and JavaScript expertise.
7
+ #
8
+ # If your goal is to simple display a website to your users, consider using
9
+ # {UI#openURL}, which will show them a web page in their default browser rather
10
+ # than inside a dialog in SketchUp.
11
+ #
12
+ # The left, top, width, height etc. dimensions of the dialog are in logical
13
+ # units. This means you provide the units as if they where on a monitor with
14
+ # "normal" DPI. The units given will be multiplied by the same factor as
15
+ # returned by {UI.scale_factor}.
16
+ #
17
+ # For usage examples, including how to migrate from the old WebDialog class,
18
+ # see https://github.com/SketchUp/htmldialog-examples.
19
+ # You may use the {https://sketchup.github.io/modus-for-sketchup-extensions Trimble Modus}
20
+ # framework for a look and feel of your dialog that matches that of SketchUp's dialogs.
21
+ #
22
+ # HtmlDialog uses the following versions of CEF (Chromium Embedded Framework):
23
+ #
24
+ # [SketchUp 2021.1]
25
+ # CEF 88
26
+ # [SketchUp 2019.0]
27
+ # CEF 64
28
+ # [SketchUp 2018.0]
29
+ # CEF 56
30
+ # [SketchUp 2017.0]
31
+ # CEF 52
32
+ #
33
+ # @version SketchUp 2017
34
+ class UI::HtmlDialog
35
+
36
+ # Constants
37
+
38
+ CEF_VERSION = nil # Stub value.
39
+
40
+ CHROME_VERSION = nil # Stub value.
41
+
42
+ STYLE_DIALOG = nil # Stub value.
43
+ STYLE_UTILITY = nil # Stub value.
44
+ STYLE_WINDOW = nil # Stub value.
45
+
46
+ # Instance Methods
47
+
48
+ # The {#add_action_callback} method establishes a Ruby callback method that your
49
+ # html dialog can call to perform some function.
50
+ #
51
+ # Use the +sketchup.callback_method_name+ to invoke the callback method from your
52
+ # html dialog. Your JavaScript in the html dialog will invoke the callback with
53
+ # the same number of arguments.
54
+ #
55
+ # The call is asynchronous. JavaScript call might return before Ruby callback
56
+ # even called. Use +onCompleted+ callback to get notified for completion.
57
+ #
58
+ # Basic types such as booleans, numbers, strings, arrays and hashes are
59
+ # automatically converted between Ruby and JavaScript.
60
+ #
61
+ # @example Ruby Code
62
+ # dialog.add_action_callback("say") { |action_context, param1, param2|
63
+ # puts "JavaScript said #{param1} and #{param2}"
64
+ # }
65
+ #
66
+ # @example JavaScript
67
+ # sketchup.say('Hello World', 42);
68
+ #
69
+ # @example JavaScript with callback
70
+ # sketchup.say('Hello World', 42, {
71
+ # onCompleted: function() {
72
+ # console.log('Ruby side done.');
73
+ # }
74
+ # });
75
+ #
76
+ # @note When an HtmlDialog is closed, all callbacks to that instance are
77
+ # cleared. Re-attach them if you need to open the dialog again.
78
+ #
79
+ # @param [String] callback_name
80
+ # The name of the callback method to be invoked from the html dialog.
81
+ #
82
+ # @return [Boolean] +true+ if action added successfully, +false+ otherwise.
83
+ #
84
+ # @version SketchUp 2017
85
+ #
86
+ # @yield [action_context, *args]
87
+ #
88
+ # @yieldparam [Object] action_context
89
+ # Currently unused.
90
+ #
91
+ # @yieldparam [Array<Object>] args
92
+ # The parameters sent from JavaScript.
93
+ def add_action_callback(callback_name)
94
+ end
95
+
96
+ # The {#bring_to_front} method is used to bring the window to the front,
97
+ # putting it on top of other windows even if its minimized.
98
+ #
99
+ # @bug Prior to SketchUp 2021.1, on Mac, the focus the was not being set
100
+ # on the {UI::HtmlDialog}.
101
+ #
102
+ # @example
103
+ # dialog.bring_to_front
104
+ #
105
+ # @return [nil]
106
+ #
107
+ # @see Sketchup.focus
108
+ #
109
+ # @version SketchUp 2017
110
+ def bring_to_front
111
+ end
112
+
113
+ # The {#center} method is used to center the HtmlDialog relative to the active
114
+ # model window. If there is no active model window, this function doesn't do
115
+ # anything.
116
+ #
117
+ # @example
118
+ # dialog.center
119
+ #
120
+ # @return [true] This always return true, never false.
121
+ #
122
+ # @version SketchUp 2017
123
+ def center
124
+ end
125
+
126
+ # The {#close} method is used to close a dialog box.
127
+ #
128
+ # @example
129
+ # dialog.close
130
+ #
131
+ # @return [nil]
132
+ #
133
+ # @version SketchUp 2017
134
+ def close
135
+ end
136
+
137
+ # The {#execute_script} method is used to execute a JavaScript string on the
138
+ # html dialog asynchronously.
139
+ #
140
+ # @example
141
+ # js_command = "document.getElementById('id').innerHTML = '<b>Hi!</b>'"
142
+ # dialog.execute_script(js_command)
143
+ #
144
+ # @param [String] script
145
+ # The JavaScript script to execute on the HtmlDialog.
146
+ #
147
+ # @return [nil]
148
+ #
149
+ # @version SketchUp 2017
150
+ def execute_script(script)
151
+ end
152
+
153
+ # The {#get_content_size} method is used to get the content size of the HtmlDialog, in logical
154
+ # pixels.
155
+ #
156
+ # @example
157
+ # width, height = dialog.get_content_size
158
+ #
159
+ # @return [Array(Integer, Integer), nil] Content width and height of the HtmlDialog.
160
+ # A nil value is returned if the HtmlDialog
161
+ # is not visible.
162
+ #
163
+ # @version SketchUp 2021.1
164
+ def get_content_size
165
+ end
166
+
167
+ # The {#get_position} method is used to get the position of the HtmlDialog
168
+ # relative to the screen, in logical pixels.
169
+ #
170
+ # @example
171
+ # left, top = dialog.get_position
172
+ #
173
+ # @return [Array(Integer, Integer), nil] Left and top position of the dialog.
174
+ # A nil value is returned if the HtmlDialog
175
+ # is not visible.
176
+ #
177
+ # @version SketchUp 2021.1
178
+ def get_position
179
+ end
180
+
181
+ # The {#get_size} method is used to get the outer frame size of the HtmlDialog, in logical pixels.
182
+ #
183
+ # @example
184
+ # width, height = dialog.get_size
185
+ #
186
+ # @return [Array(Integer, Integer), nil] Outer frame width and height of the HtmlDialog.
187
+ # A nil value is returned if the HtmlDialog
188
+ # is not visible.
189
+ #
190
+ # @version SketchUp 2021.1
191
+ def get_size
192
+ end
193
+
194
+ # The new method is used to create a new HtmlDialog.
195
+ #
196
+ # In SketchUp 2021.1 +use_content_size+ was added.
197
+ # When set to +true+, +width+, +height+, +min_width+,
198
+ # +max width+, +min_height+, +max_height+ will represent the size of the
199
+ # content area of the window. This excludes the titlebar and the window frame.
200
+ # When +use_content_size+ is set to +false+ (the default value),
201
+ # the size dimensions will represent the outer frame size.
202
+ #
203
+ # The +properties+ hash accepts an optional key +style+ where the value is
204
+ # one of:
205
+ #
206
+ # [+UI::HtmlDialog::STYLE_DIALOG+] HtmlDialog stays at the top of SketchUp.
207
+ #
208
+ # [+UI::HtmlDialog::STYLE_WINDOW+] HtmlDialog can go behind SketchUp and
209
+ # doesn't disappear when SketchUp looses
210
+ # focus.
211
+ #
212
+ # [+UI::HtmlDialog::STYLE_UTILITY+] HtmlDialog is shown with small titlebar
213
+ # and stays on top of SketchUp.
214
+ #
215
+ # @bug Prior to SketchUp 2019 the +:width+ and +:height+ provided is ignored
216
+ # if a +:preference_key+ is also present. To work around this bug on older
217
+ # versions use {#set_size} after you initialize the dialog.
218
+ #
219
+ # @bug SketchUp 2022.0 fixed a bug where position was set incorrectly when
220
+ # +use_content_size+ was set to +true+.
221
+ #
222
+ # @bug SketchUp 2022.0 fixed a bug where +max_height+ and +max_width+ were swapped
223
+ # when +use_content_size+ was set to +true+.
224
+ #
225
+ # @bug SketchUp 2022.0 fixed a bug where +use_content_size+ was not persisted (when
226
+ # +preferences_key+ is set).
227
+ #
228
+ # @bug SketchUp 2022.0 fixed a bug on Mac where size and position of the
229
+ # HtmlDialog were not persisted when SketchUp was closed without first
230
+ # closing the HtmlDialog window.
231
+ #
232
+ # @example With options Hash
233
+ # dialog = UI::HtmlDialog.new(
234
+ # {
235
+ # :dialog_title => "Dialog Example",
236
+ # :preferences_key => "com.sample.plugin",
237
+ # :scrollable => true,
238
+ # :resizable => true,
239
+ # :width => 600,
240
+ # :height => 400,
241
+ # :left => 100,
242
+ # :top => 100,
243
+ # :min_width => 50,
244
+ # :min_height => 50,
245
+ # :max_width =>1000,
246
+ # :max_height => 1000,
247
+ # :style => UI::HtmlDialog::STYLE_DIALOG
248
+ # })
249
+ # dialog.set_url("http://www.sketchup.com")
250
+ # dialog.show
251
+ #
252
+ # @example With keyword style argument
253
+ # dialog = UI::HtmlDialog.new(
254
+ # dialog_title: "Dialog Example",
255
+ # preferences_key: "my_name_my_extension_my_dialog",
256
+ # scrollable: true,
257
+ # resizable: true,
258
+ # width: 600,
259
+ # height: 400,
260
+ # left: 100,
261
+ # top: 100,
262
+ # min_width: 50,
263
+ # min_height: 50,
264
+ # max_width: 1000,
265
+ # max_height: 1000,
266
+ # style: UI::HtmlDialog::STYLE_DIALOG
267
+ # )
268
+ # dialog.set_url("https://www.sketchup.com")
269
+ # dialog.show
270
+ #
271
+ # @note Prefix +preference_key+ with something unique to your extension.
272
+ #
273
+ # @note If there is no reference kept to the HtmlDialog object, the window
274
+ # will close once the garbage collection runs. This behavior can be confusing
275
+ # in trivial test code but is usually not a concern in real life scenarios.
276
+ # Typically a persistent reference, e.g. an instance variable, should be kept
277
+ # to bring the dialog to front, rather than creating a duplicate, if the user
278
+ # should request it a second time.
279
+ #
280
+ # @option properties [String] :dialog_title
281
+ #
282
+ # @option properties [String] :preferences_key
283
+ #
284
+ # @option properties [Boolean] :scrollable
285
+ #
286
+ # @option properties [Boolean] :resizable (true)
287
+ #
288
+ # @option properties [Boolean] :use_content_size (false)
289
+ #
290
+ # @option properties [Integer] :width (250)
291
+ #
292
+ # @option properties [Integer] :height (250)
293
+ #
294
+ # @option properties [Integer] :left (0)
295
+ #
296
+ # @option properties [Integer] :top (0)
297
+ #
298
+ # @option properties [Integer] :min_width (0)
299
+ #
300
+ # @option properties [Integer] :min_height (0)
301
+ #
302
+ # @option properties [Integer] :max_width (-1)
303
+ #
304
+ # @option properties [Integer] :max_height (-1)
305
+ #
306
+ # @option properties [Integer] :style (UI::HtmlDialog::STYLE_DIALOG)
307
+ #
308
+ # @param [Hash] properties
309
+ # A hash containing the initial properties of
310
+ # the newly created dialog.
311
+ #
312
+ # @return [UI::HtmlDialog]
313
+ #
314
+ # @version SketchUp 2017
315
+ def initialize(properties)
316
+ end
317
+
318
+ # The {#set_can_close} method is used to attach a block that is executed just
319
+ # before closing, this block has to return a boolean, if the block returns
320
+ # false the close will be canceled.
321
+ #
322
+ # @example
323
+ # dialog.set_can_close { false }
324
+ #
325
+ # @return [Boolean]
326
+ #
327
+ # @version SketchUp 2017
328
+ #
329
+ # @yieldreturn [Boolean] Return a boolean to indicate if the dialogs should
330
+ # close.
331
+ def set_can_close
332
+ end
333
+
334
+ # The {#set_content_size} method is used to set the content size of the HtmlDialog, in logical
335
+ # pixels.
336
+ #
337
+ # @example
338
+ # dialog.set_content_size(600, 400)
339
+ #
340
+ # @param [Integer] width
341
+ # Content width of the HtmlDialog.
342
+ #
343
+ # @param [Integer] height
344
+ # Content height of the HtmlDialog.
345
+ #
346
+ # @return [nil]
347
+ #
348
+ # @version SketchUp 2021.1
349
+ def set_content_size(width, height)
350
+ end
351
+
352
+ # The {#set_file} method is used to identify a local HTML file to display in the
353
+ # HtmlDialog.
354
+ #
355
+ # @example
356
+ # dialog.set_file("c:/mypage.html")
357
+ #
358
+ # @param [String] filename
359
+ # The filename for the HtmlDialog file (HTML file)
360
+ #
361
+ # @return [nil]
362
+ #
363
+ # @version SketchUp 2017
364
+ def set_file(filename)
365
+ end
366
+
367
+ # The {#set_html} method is used to load a HtmlDialog with a string of provided
368
+ # HTML.
369
+ #
370
+ # @example
371
+ # html = '<b>Hello world!</b>'
372
+ # dialog.set_html(html)
373
+ #
374
+ # @param [String] html_string
375
+ # A string of valid html to display in your
376
+ # HtmlDialog.
377
+ #
378
+ # @return [nil]
379
+ #
380
+ # @version SketchUp 2017
381
+ def set_html(html_string)
382
+ end
383
+
384
+ # The {#set_on_closed} method is used to attach a block that will be
385
+ # executed when a dialog is already in the process of closing, do any last
386
+ # minute operations within this block such as saving the current state.
387
+ #
388
+ # @example
389
+ # dialog.set_on_closed { save_selection }
390
+ #
391
+ # @return [Boolean]
392
+ #
393
+ # @version SketchUp 2017
394
+ def set_on_closed
395
+ end
396
+
397
+ # The {#set_position} method is used to set the position of the HtmlDialog
398
+ # relative to the screen, in pixels.
399
+ #
400
+ # @bug Prior to SketchUp 2021.1, on Windows, calling this method incorrectly
401
+ # set the focus on the {UI::HtmlDialog}.
402
+ #
403
+ # @example
404
+ # dialog.set_position(100, 50)
405
+ #
406
+ # @param [Integer] left
407
+ # The number of pixels from the left.
408
+ #
409
+ # @param [Integer] top
410
+ # The number of pixels from the top of the screen.
411
+ #
412
+ # @return [true] This always return true, never false.
413
+ #
414
+ # @version SketchUp 2017
415
+ def set_position(left, top)
416
+ end
417
+
418
+ # The {#set_size} method is used to set the outer frame size of the HtmlDialog, in pixels.
419
+ #
420
+ # @bug Prior to SketchUp 2021.1, on Windows, calling this method incorrectly
421
+ # set the focus on the {UI::HtmlDialog}.
422
+ #
423
+ # @example
424
+ # dialog.set_size(320, 240)
425
+ #
426
+ # @param [Integer] width
427
+ # Outer frame width of the HtmlDialog.
428
+ #
429
+ # @param [Integer] height
430
+ # Outer frame height of the HtmlDialog.
431
+ #
432
+ # @return [true] This always return true, never false.
433
+ #
434
+ # @version SketchUp 2017
435
+ def set_size(width, height)
436
+ end
437
+
438
+ # The {#set_url} method is used to load a HtmlDialog with the content at a
439
+ # specific URL. This method allows you to load web sites in a HtmlDialog.
440
+ #
441
+ # @example
442
+ # dialog.set_url("https://www.sketchup.com")
443
+ #
444
+ # @param [String] url
445
+ # The URL for a specific web site.
446
+ #
447
+ # @return [nil]
448
+ #
449
+ # @version SketchUp 2017
450
+ def set_url(url)
451
+ end
452
+
453
+ # The {#show} method is used to display a non-modal dialog box.
454
+ #
455
+ # @example
456
+ # dialog.show
457
+ #
458
+ # @return [nil]
459
+ #
460
+ # @version SketchUp 2017
461
+ def show
462
+ end
463
+
464
+ # The {#show_modal} method is used to display a modal dialog box.
465
+ #
466
+ # @example
467
+ # dialog.show_modal
468
+ #
469
+ # @return [nil]
470
+ #
471
+ # @version SketchUp 2017
472
+ def show_modal
473
+ end
474
+
475
+ # The {#visible?} method is useful to tell if the dialog is shown and still
476
+ # alive, if the dialog is minimized or not visible on the screen this will
477
+ # still return +true+.
478
+ #
479
+ # @example
480
+ # if dialog.visible?
481
+ # dialog.bring_to_front
482
+ # else
483
+ # dialog = UI::HtmlDialog.new
484
+ # dialog.set_url("https://www.sketchup.com")
485
+ # dialog.show
486
+ # end
487
+ #
488
+ # @return [Boolean] Returns true if the dialog is open.
489
+ #
490
+ # @version SketchUp 2017
491
+ def visible?
492
+ end
493
+
494
+ end