sketchup-api-stubs 0.7.9 → 0.7.11

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 (160) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sketchup-api-stubs/sketchup.rb +157 -151
  3. data/lib/sketchup-api-stubs/stubs/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 +182 -172
  6. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +111 -126
  7. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  8. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +423 -400
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +693 -661
  10. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +535 -509
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +500 -476
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +267 -263
  13. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +133 -141
  14. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +547 -522
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +678 -693
  16. data/lib/sketchup-api-stubs/stubs/Geom.rb +351 -351
  17. data/lib/sketchup-api-stubs/stubs/LanguageHandler.rb +93 -93
  18. data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +595 -595
  19. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +751 -747
  20. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +183 -183
  21. data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
  22. data/lib/sketchup-api-stubs/stubs/Layout/Dictionary.rb +234 -0
  23. data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +683 -517
  24. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +148 -148
  26. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +464 -353
  27. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +354 -354
  28. data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -311
  29. data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
  30. data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -91
  31. data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +370 -370
  32. data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
  33. data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
  34. data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +225 -225
  35. data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +614 -567
  36. data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
  37. data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
  38. data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +282 -183
  39. data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +458 -387
  40. data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +209 -209
  41. data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +346 -344
  42. data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
  43. data/lib/sketchup-api-stubs/stubs/Layout/ReferenceEntity.rb +82 -82
  44. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +714 -692
  45. data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1565 -1519
  46. data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
  47. data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
  48. data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
  49. data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
  50. data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
  51. data/lib/sketchup-api-stubs/stubs/Length.rb +286 -278
  52. data/lib/sketchup-api-stubs/stubs/Numeric.rb +249 -249
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +196 -144
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +169 -169
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +226 -209
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +145 -150
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +294 -281
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +296 -302
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +473 -478
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +121 -121
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +673 -659
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +600 -593
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +252 -257
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +201 -201
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +443 -449
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +74 -74
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +104 -104
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +167 -165
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +306 -306
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +42 -42
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +403 -406
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -397
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1282 -1239
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -261
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +519 -545
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Environment.rb +406 -0
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/Environments.rb +185 -0
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/EnvironmentsObserver.rb +113 -0
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +122 -125
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +1006 -937
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -102
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +740 -750
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +289 -282
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +64 -62
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +405 -468
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +266 -266
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +189 -189
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +432 -406
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +84 -84
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +307 -306
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +332 -326
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +380 -422
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +409 -427
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +241 -249
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +55 -48
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +114 -114
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/LoadHandler.rb +70 -0
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +1115 -414
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +330 -317
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +142 -142
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +93 -93
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1714 -1652
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +372 -357
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +133 -130
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -271
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +463 -490
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +104 -116
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +939 -797
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +388 -361
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +501 -478
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +385 -361
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +45 -45
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +451 -458
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +211 -212
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +259 -255
  134. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +59 -59
  135. data/lib/sketchup-api-stubs/stubs/Sketchup/Skp.rb +40 -40
  136. data/lib/sketchup-api-stubs/stubs/Sketchup/Snap.rb +125 -0
  137. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +88 -69
  138. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +263 -217
  139. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +283 -262
  140. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +199 -217
  141. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
  142. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +924 -834
  143. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
  144. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +156 -156
  145. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +75 -75
  146. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +143 -142
  147. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1566 -1311
  148. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +71 -45
  149. data/lib/sketchup-api-stubs/stubs/Sketchup.rb +1429 -1377
  150. data/lib/sketchup-api-stubs/stubs/SketchupExtension.rb +353 -353
  151. data/lib/sketchup-api-stubs/stubs/String.rb +24 -24
  152. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +399 -389
  153. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +580 -494
  154. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +280 -269
  155. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +258 -241
  156. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +636 -635
  157. data/lib/sketchup-api-stubs/stubs/UI.rb +791 -683
  158. data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -303
  159. data/lib/sketchup-api-stubs.rb +1 -1
  160. metadata +10 -24
@@ -1,269 +1,280 @@
1
- # Copyright:: Copyright 2023 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # {UI::Notification} objects allows you to show native notifications in the
5
- # desktop. Notifications can have a message, icon and accept and/or dismiss
6
- # buttons with callback blocks.
7
- #
8
- # @example
9
- # # For consistency, the accept (yes) and the dismiss (no) buttons
10
- # # are always displayed in the same order.
11
- # message = "A new version of pizza is available. Install now?"
12
- # @notification = UI::Notification.new(sketchup_extension, message)
13
- # @notification.on_accept("Pizza!") { puts "Pizza" }
14
- # @notification.on_dismiss("No thanks") { puts "No pizza" }
15
- # @notification.show
16
- #
17
- # # The two options are however not treated differently by SketchUp and can
18
- # # also be used for questions with no strict yes/no answer.
19
- # message = "Pizza clashes with health. Select which one to keep."
20
- # @notification = UI::Notification.new(sketchup_extension, message)
21
- # @notification.on_accept("Pizza") { puts "Pizza" }
22
- # @notification.on_dismiss("Health") { puts "Salad" }
23
- # @notification.show
24
- #
25
- # @version SketchUp 2017
26
- class UI::Notification
27
-
28
- # Instance Methods
29
-
30
- # Gets the icon name, this is the path that will be used to get the icon from
31
- # the file system path.
32
- #
33
- # @example
34
- # @notification = UI::Notification.new(sketchup_extension, "Hello world", "/path/to/icon",
35
- # "Icon Tooltip")
36
- # puts "Icon Name: #{@notification.icon_name}"
37
- # @notification.show
38
- #
39
- # @return [String]
40
- #
41
- # @version SketchUp 2017
42
- def icon_name
43
- end
44
-
45
- # Sets the icon path, this icon will be loaded from the path give, the path
46
- # has to be a local filesystem path.
47
- #
48
- # @example
49
- # @notification = UI::Notification.new(sketchup_extension, "Hello world")
50
- # @notification.icon_name = "/path/to/icon"
51
- # @notification.show
52
- #
53
- # @param [String] icon_name
54
- # String providing the icon filesystem path.
55
- #
56
- # @return [Boolean]
57
- #
58
- # @version SketchUp 2017
59
- def icon_name=(icon_name)
60
- end
61
-
62
- # Gets the icon Tooltip, this is the string that appear when the mouse is over
63
- # the icon.
64
- #
65
- # @example
66
- # @notification = UI::Notification.new(sketchup_extension, "Hello world", "/path/to/icon",
67
- # "Icon Tooltip")
68
- # puts "Tooltip: #{@notification.icon_tooltip}"
69
- # @notification.show
70
- #
71
- # @return [String]
72
- #
73
- # @version SketchUp 2017
74
- def icon_tooltip
75
- end
76
-
77
- # Sets the icon Tooltip, this string will appear when the mouse is over the
78
- # icon.
79
- #
80
- # @example
81
- # @notification = UI::Notification.new(sketchup_extension, "Hello world")
82
- # @notification.icon_tooltip = "icon Tooltip"
83
- # @notification.show
84
- #
85
- # @param [String] icon_tooltip
86
- # String providing the new icon Tooltip.
87
- #
88
- # @return [Boolean]
89
- #
90
- # @version SketchUp 2017
91
- def icon_tooltip=(icon_tooltip)
92
- end
93
-
94
- # Creates a new {UI::Notification} object.
95
- #
96
- # @bug Prior to SketchUp 2018 messages could only be 3 lines long on Windows
97
- # and 2 lines on Mac. Now the notification expands to fit its content.
98
- #
99
- # @bug Prior to SketchUp 2021.1 SketchUp could crash if the {UI::Notification} object is garbaged
100
- # collected while it has notifications displayed on the screen. This could happen if the
101
- # {UI::Notification} object was assigned to a local variable. The local variable would go out of
102
- # scope and the garbage collector might collect it before the callbacks are invoked.
103
- #
104
- # @example
105
- # @notification = UI::Notification.new(sketchup_extension, "Hello world", "/path/to/icon",
106
- # "Icon Tooltip")
107
- # @notification.show
108
- #
109
- # @note In order to insert line breaks into the message you need to use +\\r\\n+.
110
- #
111
- # @param [SketchupExtension] sketchup_extension
112
- # {SketchupExtension} instance used to identify
113
- # the source of the notification.
114
- #
115
- # @param [String] message
116
- # Message to display.
117
- #
118
- # @param [String] icon_name
119
- # Path to an icon to display along with the message.
120
- #
121
- # @param [String] icon_tooltip
122
- # Tooltip for the icon.
123
- #
124
- # @return [UI::Notification]
125
- #
126
- # @version SketchUp 2017
127
- def initialize(sketchup_extension, message = nil, icon_name = nil, icon_tooltip = nil)
128
- end
129
-
130
- # Gets the message as string.
131
- #
132
- # @example
133
- # @notification = UI::Notification.new(sketchup_extension)
134
- # puts "This is the current message: #{@notification.message}"
135
- # @notification.show
136
- #
137
- # @return [String]
138
- #
139
- # @version SketchUp 2017
140
- def message
141
- end
142
-
143
- # Sets a new message. Notifications are meant for quick and brief messages.
144
- # These message disappear automatically after a short while if they are not
145
- # interacted with.
146
- #
147
- # @example
148
- # @notification = UI::Notification.new(sketchup_extension)
149
- # @notification.message = "Hello world"
150
- # @notification.show
151
- #
152
- # @note In order to insert line breaks into the message you need to use +\\r\\n+.
153
- #
154
- # @param [String] message
155
- # String providing the new message.
156
- #
157
- # @return [Boolean]
158
- #
159
- # @version SketchUp 2017
160
- def message=(message)
161
- end
162
-
163
- # Shows a button in the notification with the given title and callback block,
164
- # both arguments are required.
165
- #
166
- # @bug Prior to SketchUp 2019 both the accept and dismiss buttons were
167
- # displayed, even if only one had been implemented.
168
- #
169
- # @example
170
- # @notification = UI::Notification.new(sketchup_extension, "Hello world")
171
- # @notification.on_accept("Accept") do |notification, title|
172
- # puts "The user pressed [#{title}] with message #{notification.message}"
173
- # end
174
- # @notification.show
175
- #
176
- # @param [String] title
177
- # Sets the title of the button.
178
- #
179
- # @param [Proc] block
180
- # Sets the action callback, this will be called when
181
- # the user clicks on the dismiss button.
182
- #
183
- # @raise [RuntimeError] When calling on_accept when the notification has
184
- # already been shown.
185
- #
186
- # @return [Boolean]
187
- #
188
- # @version SketchUp 2017
189
- def on_accept(title, block)
190
- end
191
-
192
- # Returns the accept's button title.
193
- #
194
- # @example
195
- # @notification = UI::Notification.new(sketchup_extension, "Hello world")
196
- # @notification.on_accept("Accept") do |notification, title|
197
- # puts "The user pressed #{notification.on_accept_title}"
198
- # end
199
- # @notification.show
200
- #
201
- # @return [String]
202
- #
203
- # @version SketchUp 2017
204
- def on_accept_title
205
- end
206
-
207
- # Shows a button in the notification with the given title and callback block.
208
- # Both arguments are required. This callback is only called if you press the
209
- # Dismiss button, not when the time runs out and the notification automatically
210
- # disappears.
211
- #
212
- # @bug Prior to SketchUp 2019 both the accept and dismiss buttons were
213
- # displayed, even if only one had been implemented.
214
- #
215
- # @example
216
- # @notification = UI::Notification.new(sketchup_extension, "Hello world")
217
- # @notification.on_dismiss("Close") do |notification, title|
218
- # puts "The user pressed [#{title}] with message #{notification.message}"
219
- # end
220
- # @notification.show
221
- #
222
- # @param [String] title
223
- # Sets the title of the button.
224
- #
225
- # @param [Proc] block
226
- # Sets the action callback, this will be called when
227
- # the user clicks on the dismiss button.
228
- #
229
- # @raise [RuntimeError] When calling on_dismiss when the notification has
230
- # already been shown.
231
- #
232
- # @return [Boolean]
233
- #
234
- # @version SketchUp 2017
235
- def on_dismiss(title, block)
236
- end
237
-
238
- # Returns the dismiss's button title.
239
- #
240
- # @example
241
- # @notification = UI::Notification.new(sketchup_extension, "Hello world")
242
- # @notification.on_dismiss("Close") do |notification, title|
243
- # puts "The user pressed #{notification.on_dismiss_title}"
244
- # end
245
- # @notification.show
246
- #
247
- # @return [String]
248
- #
249
- # @version SketchUp 2017
250
- def on_dismiss_title
251
- end
252
-
253
- # Shows the notification. If not interacted with, the notification will
254
- # disappear without calling any callbacks.
255
- #
256
- # @bug If assigned to a local variable SketchUp might crash prior to SketchUp 2021.1.
257
- # See {#initialize} for more details.
258
- #
259
- # @example
260
- # @notification = UI::Notification.new(sketchup_extension, "Hello world")
261
- # @notification.show
262
- #
263
- # @return [Boolean]
264
- #
265
- # @version SketchUp 2017
266
- def show
267
- end
268
-
269
- end
1
+ # Copyright:: Copyright 2026 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # {UI::Notification} objects allows you to show native notifications in the
5
+ # desktop. Notifications can have a message, icon and accept and/or dismiss
6
+ # buttons with callback blocks.
7
+ #
8
+ # Supported icon formats include: .bmp, .png, .jpg.
9
+ # Vector icons are supported as .svg on Windows and .pdf on Mac.
10
+ # Recommended icon size is 48x48 pixels. Icons larger than these sizes will be automatically
11
+ # downscaled to fit within the limits.
12
+ #
13
+ # @bug Prior to SketchUp 2026.0 oversized icons are cropped on Windows.
14
+ #
15
+ # @example
16
+ # sketchup_extension = Sketchup.extensions[extension_id]
17
+ # Sketchup.register_extension(sketchup_extension, true)
18
+ # # For consistency, the accept (yes) and the dismiss (no) buttons
19
+ # # are always displayed in the same order.
20
+ # message = "A new version of pizza is available. Install now?"
21
+ # @notification = UI::Notification.new(sketchup_extension, message)
22
+ # @notification.on_accept("Pizza!") { puts "Pizza" }
23
+ # @notification.on_dismiss("No thanks") { puts "No pizza" }
24
+ # @notification.show
25
+ #
26
+ # # The two options are however not treated differently by SketchUp and can
27
+ # # also be used for questions with no strict yes/no answer.
28
+ # message = "Pizza clashes with health. Select which one to keep."
29
+ # @notification = UI::Notification.new(sketchup_extension, message)
30
+ # @notification.on_accept("Pizza") { puts "Pizza" }
31
+ # @notification.on_dismiss("Health") { puts "Salad" }
32
+ # @notification.show
33
+ #
34
+ # @version SketchUp 2017
35
+ class UI::Notification
36
+
37
+ # Instance Methods
38
+
39
+ # Gets the icon name, this is the path that will be used to get the icon from
40
+ # the file system path.
41
+ #
42
+ # @example
43
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world", "/path/to/icon",
44
+ # "Icon Tooltip")
45
+ # puts "Icon Name: #{@notification.icon_name}"
46
+ # @notification.show
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @version SketchUp 2017
51
+ def icon_name
52
+ end
53
+
54
+ # Sets the icon path, this icon will be loaded from the path give, the path
55
+ # has to be a local filesystem path.
56
+ #
57
+ # @example
58
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world")
59
+ # @notification.icon_name = "/path/to/icon"
60
+ # @notification.show
61
+ #
62
+ # @param [String] icon_name
63
+ # String providing the icon filesystem path.
64
+ #
65
+ # @return [Boolean]
66
+ #
67
+ # @version SketchUp 2017
68
+ def icon_name=(icon_name)
69
+ end
70
+
71
+ # Gets the icon Tooltip, this is the string that appear when the mouse is over
72
+ # the icon.
73
+ #
74
+ # @example
75
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world", "/path/to/icon",
76
+ # "Icon Tooltip")
77
+ # puts "Tooltip: #{@notification.icon_tooltip}"
78
+ # @notification.show
79
+ #
80
+ # @return [String]
81
+ #
82
+ # @version SketchUp 2017
83
+ def icon_tooltip
84
+ end
85
+
86
+ # Sets the icon Tooltip, this string will appear when the mouse is over the
87
+ # icon.
88
+ #
89
+ # @example
90
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world")
91
+ # @notification.icon_tooltip = "icon Tooltip"
92
+ # @notification.show
93
+ #
94
+ # @param [String] icon_tooltip
95
+ # String providing the new icon Tooltip.
96
+ #
97
+ # @return [Boolean]
98
+ #
99
+ # @version SketchUp 2017
100
+ def icon_tooltip=(icon_tooltip)
101
+ end
102
+
103
+ # Creates a new {UI::Notification} object.
104
+ #
105
+ # @bug Prior to SketchUp 2018 messages could only be 3 lines long on Windows
106
+ # and 2 lines on Mac. Now the notification expands to fit its content.
107
+ #
108
+ # @bug Prior to SketchUp 2021.1 SketchUp could crash if the {UI::Notification} object is garbaged
109
+ # collected while it has notifications displayed on the screen. This could happen if the
110
+ # {UI::Notification} object was assigned to a local variable. The local variable would go out of
111
+ # scope and the garbage collector might collect it before the callbacks are invoked.
112
+ #
113
+ # @example
114
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world", "/path/to/icon",
115
+ # "Icon Tooltip")
116
+ # @notification.show
117
+ #
118
+ # @note In order to insert line breaks into the message you need to use +\\r\\n+.
119
+ # From SketchUp 2019 and onwards +\\n+ also works on both Mac and Windows.
120
+ #
121
+ # @param [SketchupExtension] sketchup_extension
122
+ # {SketchupExtension} instance used to identify
123
+ # the source of the notification.
124
+ #
125
+ # @param [String] message
126
+ # Message to display.
127
+ #
128
+ # @param [String] icon_name
129
+ # Path to an icon to display along with the message.
130
+ #
131
+ # @param [String] icon_tooltip
132
+ # Tooltip for the icon.
133
+ #
134
+ # @return [UI::Notification]
135
+ #
136
+ # @version SketchUp 2017
137
+ def initialize(sketchup_extension, message = nil, icon_name = nil, icon_tooltip = nil)
138
+ end
139
+
140
+ # Gets the message as string.
141
+ #
142
+ # @example
143
+ # @notification = UI::Notification.new(sketchup_extension)
144
+ # puts "This is the current message: #{@notification.message}"
145
+ # @notification.show
146
+ #
147
+ # @return [String]
148
+ #
149
+ # @version SketchUp 2017
150
+ def message
151
+ end
152
+
153
+ # Sets a new message. Notifications are meant for quick and brief messages.
154
+ # These message disappear automatically after a short while if they are not
155
+ # interacted with.
156
+ #
157
+ # @example
158
+ # @notification = UI::Notification.new(sketchup_extension)
159
+ # @notification.message = "Hello world"
160
+ # @notification.show
161
+ #
162
+ # @note In order to insert line breaks into the message you need to use +\\r\\n+.
163
+ # From SketchUp 2019 and onwards +\\n+ also works on both Mac and Windows.
164
+ #
165
+ # @param [String] message
166
+ # String providing the new message.
167
+ #
168
+ # @return [Boolean]
169
+ #
170
+ # @version SketchUp 2017
171
+ def message=(message)
172
+ end
173
+
174
+ # Shows a button in the notification with the given title and callback block,
175
+ # both arguments are required.
176
+ #
177
+ # @bug Prior to SketchUp 2019 both the Accept and Dismiss buttons were
178
+ # displayed, even if only one had been implemented.
179
+ #
180
+ # @example
181
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world")
182
+ # @notification.on_accept("Accept") do |notification, title|
183
+ # puts "The user pressed [#{title}] with message #{notification.message}"
184
+ # end
185
+ # @notification.show
186
+ #
187
+ # @param [String] title
188
+ # Sets the title of the button.
189
+ #
190
+ # @param [Proc] block
191
+ # Sets the action callback, this will be called when
192
+ # the user clicks on the accept button.
193
+ #
194
+ # @raise [RuntimeError] When calling on_accept when the notification has
195
+ # already been shown.
196
+ #
197
+ # @return [Boolean]
198
+ #
199
+ # @version SketchUp 2017
200
+ def on_accept(title, block)
201
+ end
202
+
203
+ # Returns the accept's button title.
204
+ #
205
+ # @example
206
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world")
207
+ # @notification.on_accept("Accept") do |notification, title|
208
+ # puts "The user pressed #{notification.on_accept_title}"
209
+ # end
210
+ # @notification.show
211
+ #
212
+ # @return [String]
213
+ #
214
+ # @version SketchUp 2017
215
+ def on_accept_title
216
+ end
217
+
218
+ # Shows a button in the notification with the given title and callback block.
219
+ # Both arguments are required. This callback is only called if you press the
220
+ # Dismiss button, not when the time runs out and the notification automatically
221
+ # disappears.
222
+ #
223
+ # @bug Prior to SketchUp 2019 both the accept and dismiss buttons were
224
+ # displayed, even if only one had been implemented.
225
+ #
226
+ # @example
227
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world")
228
+ # @notification.on_dismiss("Close") do |notification, title|
229
+ # puts "The user pressed [#{title}] with message #{notification.message}"
230
+ # end
231
+ # @notification.show
232
+ #
233
+ # @param [String] title
234
+ # Sets the title of the button.
235
+ #
236
+ # @param [Proc] block
237
+ # Sets the action callback, this will be called when
238
+ # the user clicks on the dismiss button.
239
+ #
240
+ # @raise [RuntimeError] When calling on_dismiss when the notification has
241
+ # already been shown.
242
+ #
243
+ # @return [Boolean]
244
+ #
245
+ # @version SketchUp 2017
246
+ def on_dismiss(title, block)
247
+ end
248
+
249
+ # Returns the dismiss's button title.
250
+ #
251
+ # @example
252
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world")
253
+ # @notification.on_dismiss("Close") do |notification, title|
254
+ # puts "The user pressed #{notification.on_dismiss_title}"
255
+ # end
256
+ # @notification.show
257
+ #
258
+ # @return [String]
259
+ #
260
+ # @version SketchUp 2017
261
+ def on_dismiss_title
262
+ end
263
+
264
+ # Shows the notification. If not interacted with, the notification will
265
+ # disappear without calling any callbacks.
266
+ #
267
+ # @bug If assigned to a local variable SketchUp might crash prior to SketchUp 2021.1.
268
+ # See {#initialize} for more details.
269
+ #
270
+ # @example
271
+ # @notification = UI::Notification.new(sketchup_extension, "Hello world")
272
+ # @notification.show
273
+ #
274
+ # @return [Boolean]
275
+ #
276
+ # @version SketchUp 2017
277
+ def show
278
+ end
279
+
280
+ end