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,389 +1,399 @@
1
- # Copyright:: Copyright 2023 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # The Command class is the preferred class for adding tools to the menus and
5
- # Ruby toolbars. For example, you could add a menu item and pass it a code
6
- # block directly, or you could first create a Command.
7
- #
8
- # Using Commands gives you greater control over how the item works in the UI,
9
- # and it allows multiple spots in the UI to call the same code. For example,
10
- # You might want a toolbar button and a context-click menu item to both point
11
- # to the same command, and to control the tooltip and its "graying" from
12
- # a single spot in your code.
13
- #
14
- # @example
15
- # # You can add menu items as procedure blocks, as shown here, but
16
- # # you have no control over whether it is grayed out, for example.
17
- # UI.menu("Draw").add_item("My Procedure") {
18
- # UI.messagebox("My Procedure")
19
- # }
20
- #
21
- # # Better to create a command object.
22
- # cmd = UI::Command.new("Tester") {
23
- # UI.messagebox("My Command")
24
- # }
25
- # cmd.menu_text = "My Command"
26
- # cmd.set_validation_proc {
27
- # if Sketchup.active_model.selection.length == 0
28
- # MF_GRAYED
29
- # else
30
- # MF_ENABLED
31
- # end
32
- # }
33
- # UI.menu("Draw").add_item cmd
34
- #
35
- # @version SketchUp 6.0
36
- class UI::Command
37
-
38
- # Class Methods
39
-
40
- # The new method is used to create a new command.
41
- #
42
- # @example
43
- # UI.menu("Draw").add_separator
44
- #
45
- # # Adds a Test submenu to the Draw menu where the Tester menu item appears
46
- # testmenu = UI.menu("Draw").add_submenu("Test")
47
- #
48
- # # This menu item simply displays Hello World on the screen when clicked.
49
- # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
50
- # testmenu.add_item cmd
51
- #
52
- # @note Prior to SketchUp 2019 it was not possible to sub-class {UI::Command}
53
- # due to a bug in how SketchUp initialized the class.
54
- #
55
- # @param [String] menutext
56
- # The text that will appear for this command's menu item
57
- # if it appears on a menu.
58
- #
59
- # @return [UI::Command] the new Command object
60
- #
61
- # @version SketchUp 6.0
62
- #
63
- # @yield Code that executes the command when the menu item or
64
- # toolbar item is selected.
65
- def self.new(menutext)
66
- end
67
-
68
- # Instance Methods
69
-
70
- # The {#extension} method returns the command's associated extension.
71
- #
72
- # @example
73
- # extension = Sketchup.extensions['Sandbox Tools']
74
- # cmd = UI::Command.new("Tester") {}
75
- # cmd.extension = extension
76
- # p cmd.extension == extension
77
- #
78
- # @note This is an advanced feature that extension developers normally won't
79
- # have to deal with. It's purpose is to address scenarios when SketchUp
80
- # isn't able to automatically infer which extension the command belongs to.
81
- #
82
- # @return [SketchupExtension, nil]
83
- #
84
- # @version SketchUp 2022.0
85
- def extension
86
- end
87
-
88
- # The {#extension=} method explicitly sets the command's associated extension.
89
- #
90
- # @example
91
- # extension = Sketchup.extensions['Sandbox Tools']
92
- # cmd = UI::Command.new("Tester") {}
93
- # cmd.extension = extension
94
- #
95
- # @note This is an advanced feature that extension developers normally won't
96
- # have to deal with. It's purpose is to address scenarios when SketchUp
97
- # isn't able to automatically infer which extension the command belongs to.
98
- # These scenarios are for example an extension using a library to add its
99
- # commands or command manager extensions.
100
- #
101
- # @param [SketchupExtension, nil] extension
102
- #
103
- # @version SketchUp 2022.0
104
- def extension=(extension)
105
- end
106
-
107
- # The {#get_validation_proc} method returns the command's validation proc.
108
- #
109
- # @example
110
- # cmd = UI::Command.new("Tester") {}
111
- # cmd.set_validation_proc { MF_DISABLED }
112
- # proc = cmd.get_validation_proc
113
- #
114
- # @return [Proc, nil]
115
- #
116
- # @see #set_validation_proc
117
- #
118
- # @version SketchUp 2022.0
119
- def get_validation_proc
120
- end
121
-
122
- # The large_icon method returns the icon file for the command's
123
- # large icon.
124
- #
125
- # @example
126
- # toolbar = UI::Toolbar.new "Test"
127
- # # This command displays Hello World on the screen when clicked
128
- # cmd = UI::Command.new("Test") { UI.messagebox("Hello World") }
129
- # cmd.small_icon = "ToolPencilSmall.png"
130
- # cmd.large_icon = "ToolPencilLarge.png"
131
- # toolbar = toolbar.add_item cmd
132
- # toolbar.show
133
- # puts cmd.large_icon
134
- #
135
- # @return [String] the path to the large icon.
136
- #
137
- # @version SketchUp 8.0 M1
138
- def large_icon
139
- end
140
-
141
- # The large_icon= method is used to identify the icon file for the command's
142
- # large icon. large icons should be 32x32 pixel images for best display
143
- # quality.
144
- #
145
- # Since SketchUp 2016 it is possible to provide vector images for the command.
146
- # SVG format for Windows and PDF format for OS X. Since the vector images scale
147
- # for both small and large icon sizes, you may choose to use only one vector
148
- # image for both variants.
149
- #
150
- # @example
151
- # toolbar = UI::Toolbar.new "Test"
152
- # # This command displays Hello World on the screen when clicked
153
- # cmd = UI::Command.new("Test") { UI.messagebox("Hello World") }
154
- # cmd.small_icon = "ToolPencilSmall.png"
155
- # cmd.large_icon = "ToolPencilLarge.png"
156
- # toolbar = toolbar.add_item cmd
157
- # toolbar.show
158
- #
159
- # @param [String] path
160
- # The path to the large icon.
161
- #
162
- # @return [String]
163
- #
164
- # @version SketchUp 6.0
165
- def large_icon=(path)
166
- end
167
-
168
- # The menu_text method returns the menu item name for the command.
169
- #
170
- # @example
171
- # add_separator_to_menu("Draw")
172
- # # Adds a Test submenu to the Draw menu where the Tester menu item appears
173
- # testmenu = UI.menu("Draw").add_submenu("Test")
174
- # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
175
- # cmd.menu_text = "New String"
176
- # testmenu.add_item cmd
177
- # puts cmd.menu_text
178
- #
179
- # @return [String]
180
- #
181
- # @version SketchUp 8.0 M1
182
- def menu_text
183
- end
184
-
185
- # The menu_text= method is used to set the menu item name for the command.
186
- #
187
- # @example
188
- # add_separator_to_menu("Draw")
189
- # # Adds a Test submenu to the Draw menu where the Tester menu item appears
190
- # testmenu = UI.menu("Draw").add_submenu("Test")
191
- # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
192
- # cmd.menu_text = "New String"
193
- # testmenu.add_item cmd
194
- #
195
- # @param [String] menuitem
196
- # A string representing the menu item for the command.
197
- #
198
- # @return [String]
199
- #
200
- # @version SketchUp 6.0
201
- def menu_text=(menuitem)
202
- end
203
-
204
- # The {#proc} method returns the command's proc that is called when the command
205
- # is invoked.
206
- #
207
- # @example
208
- # cmd = UI::Command.new("Tester") {}
209
- # cmd.set_validation_proc { MF_DISABLED }
210
- # proc = cmd.proc
211
- # proc.call
212
- #
213
- # @return [Proc]
214
- #
215
- # @version SketchUp 2022.0
216
- def proc
217
- end
218
-
219
- # The {#set_validation_proc} method allows you to change whether the command
220
- # is enabled, checked, etc. For instance, the command toggling a dialog window
221
- # may be displayed as checked while the dialog is open.
222
- #
223
- # @bug On Mac the validation proc isn't called as often as it should. For
224
- # instance a selection change doesn't trigger it.
225
- #
226
- # @example
227
- # # Create a command object.
228
- # cmd = UI::Command.new("Tester") {
229
- # UI.messagebox("My Command")
230
- # }
231
- # cmd.menu_text = "My Command"
232
- # cmd.set_validation_proc {
233
- # if Sketchup.active_model.selection.length == 0
234
- # MF_GRAYED
235
- # else
236
- # MF_ENABLED
237
- # end
238
- # }
239
- # UI.menu("Draw").add_item(cmd)
240
- #
241
- # @note Avoid disabling an command as it often isn't obvious to the user why
242
- # it is disabled. Prefer keeping the command enabled but show an error
243
- # message if pressed when it cannot be used.
244
- #
245
- # @return [UI::Command]
246
- #
247
- # @see #get_validation_proc
248
- #
249
- # @version SketchUp 6.0
250
- #
251
- # @yield []
252
- #
253
- # @yieldreturn [Integer] +MF_ENABLED+, +MF_DISABLED+, +MF_CHECKED+,
254
- # +MF_UNCHECKED+, or +MF_GRAYED+
255
- def set_validation_proc
256
- end
257
-
258
- # The small_icon method returns the icon file for the command's
259
- # small icon.
260
- #
261
- # @example
262
- # toolbar = UI::Toolbar.new "Test"
263
- # # This toolbar command displays Hello World on the screen when clicked.
264
- # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
265
- # cmd.small_icon = "ToolPencilSmall.png"
266
- # cmd.large_icon = "ToolPencilLarge.png"
267
- # toolbar = toolbar.add_item cmd
268
- # toolbar.show
269
- # puts cmd.small_icon
270
- #
271
- # @return [String] the path to the small_icon
272
- #
273
- # @version SketchUp 8.0 M1
274
- def small_icon
275
- end
276
-
277
- # The small_icon= method is used to identify the icon file for the command's
278
- # small icon. Small icons should be 24x24 pixel images for best display
279
- # quality.
280
- #
281
- # Since SketchUp 2016 it is possible to provide vector images for the cursors.
282
- # SVG format for Windows and PDF format for OS X. Since the vector images scale
283
- # for both small and large icon sizes, you may choose to use only one vector
284
- # image for both variants.
285
- #
286
- # @example
287
- # toolbar = UI::Toolbar.new "Test"
288
- # # This toolbar command displays Hello World on the screen when clicked.
289
- # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
290
- # cmd.small_icon = "ToolPencilSmall.png"
291
- # cmd.large_icon = "ToolPencilLarge.png"
292
- # toolbar = toolbar.add_item cmd
293
- # toolbar.show
294
- #
295
- # @param [String] path
296
- # A path to the small icon.
297
- #
298
- # @return [String]
299
- #
300
- # @version SketchUp 6.0
301
- def small_icon=(path)
302
- end
303
-
304
- # The status_bar_text method returns the status bar text for the
305
- # command.
306
- #
307
- # @example
308
- # toolbar = UI::Toolbar.new("Test")
309
- # # This toolbar tool simply displays Hello World on the screen
310
- # # when clicked
311
- # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
312
- # cmd.small_icon = "ToolPencilSmall.png"
313
- # cmd.large_icon = "ToolPencilLarge.png"
314
- # cmd.status_bar_text = "Testing the toolbars class."
315
- # toolbar = toolbar.add_item cmd
316
- # toolbar.show
317
- # puts cmd.status_bar_text
318
- #
319
- # @return [String] the status bar text.
320
- #
321
- # @version SketchUp 8.0 M1
322
- def status_bar_text
323
- end
324
-
325
- # The status_bar_text= method is used to set the status bar text for the
326
- # command. This should be a description what the command does.
327
- #
328
- # @example
329
- # toolbar = UI::Toolbar.new("Test")
330
- # # This toolbar tool simply displays Hello World on the screen when clicked
331
- # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
332
- # cmd.small_icon = "ToolPencilSmall.png"
333
- # cmd.large_icon = "ToolPencilLarge.png"
334
- # cmd.status_bar_text = "Testing the toolbars class."
335
- # toolbar = toolbar.add_item cmd
336
- # toolbar.show
337
- #
338
- # @param [String] text
339
- # The text that will appear on the status bar when the
340
- # cursor is over the command's menu item.
341
- #
342
- # @return [String]
343
- #
344
- # @version SketchUp 6.0
345
- def status_bar_text=(text)
346
- end
347
-
348
- # The tooltip method returns command item's tooltip text.
349
- #
350
- # @example
351
- # toolbar = UI::Toolbar.new "Test"
352
- # # This command displays Hello World on the screen when clicked
353
- # cmd = UI::Command.new("Test") { UI.messagebox("Hello World") }
354
- # cmd.tooltip = "Hello World Tool"
355
- # toolbar = toolbar.add_item cmd
356
- # toolbar.show
357
- # puts cmd.tooltip
358
- #
359
- # @return [String] the tooltip text
360
- #
361
- # @version SketchUp 8.0 M1
362
- def tooltip
363
- end
364
-
365
- # The {#tooltip=} method is used to define a command item's tooltip header. Tooltips
366
- # will appear when the command is attached to a tool bar and the user hovers
367
- # their cursor over the icon.
368
- #
369
- # @example
370
- # toolbar = UI::Toolbar.new "Test"
371
- # # This command displays Hello World on the screen when clicked
372
- # cmd = UI::Command.new("Test") { UI.messagebox("Hello World") }
373
- # cmd.tooltip = "Hello World Tool"
374
- # toolbar = toolbar.add_item cmd
375
- # toolbar.show
376
- #
377
- # @note The tooltip text should repeat the commands' title text. For the command
378
- # description, use {#status_bar_text}.
379
- #
380
- # @param [String] text
381
- # The text of the tooltip.
382
- #
383
- # @return [String]
384
- #
385
- # @version SketchUp 6.0
386
- def tooltip=(text)
387
- end
388
-
389
- end
1
+ # Copyright:: Copyright 2026 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # The Command class is the preferred class for adding tools to the menus and
5
+ # Ruby toolbars. For example, you could add a menu item and pass it a code
6
+ # block directly, or you could first create a Command.
7
+ #
8
+ # Using Commands gives you greater control over how the item works in the UI,
9
+ # and it allows multiple spots in the UI to call the same code. For example,
10
+ # You might want a toolbar button and a context-click menu item to both point
11
+ # to the same command, and to control the tooltip and its "graying" from
12
+ # a single spot in your code.
13
+ #
14
+ # @example
15
+ # # You can add menu items as procedure blocks, as shown here, but
16
+ # # you have no control over whether it is grayed out, for example.
17
+ # UI.menu("Draw").add_item("My Procedure") {
18
+ # UI.messagebox("My Procedure")
19
+ # }
20
+ #
21
+ # # Better to create a command object.
22
+ # cmd = UI::Command.new("Tester") {
23
+ # UI.messagebox("My Command")
24
+ # }
25
+ # cmd.menu_text = "My Command"
26
+ # cmd.set_validation_proc {
27
+ # if Sketchup.active_model.selection.length == 0
28
+ # MF_GRAYED
29
+ # else
30
+ # MF_ENABLED
31
+ # end
32
+ # }
33
+ # UI.menu("Draw").add_item cmd
34
+ #
35
+ # @version SketchUp 6.0
36
+ class UI::Command
37
+
38
+ # Instance Methods
39
+
40
+ # The {#extension} method returns the command's associated extension.
41
+ #
42
+ # @example
43
+ # extension = Sketchup.extensions['Sandbox Tools']
44
+ # cmd = UI::Command.new("Tester") {}
45
+ # cmd.extension = extension
46
+ # p cmd.extension == extension
47
+ #
48
+ # @note This is an advanced feature that extension developers normally won't
49
+ # have to deal with. It's purpose is to address scenarios when SketchUp
50
+ # isn't able to automatically infer which extension the command belongs to.
51
+ #
52
+ # @return [SketchupExtension, nil]
53
+ #
54
+ # @version SketchUp 2022.0
55
+ def extension
56
+ end
57
+
58
+ # The {#extension=} method explicitly sets the command's associated extension.
59
+ #
60
+ # @example
61
+ # extension = Sketchup.extensions['Sandbox Tools']
62
+ # cmd = UI::Command.new("Tester") {}
63
+ # cmd.extension = extension
64
+ #
65
+ # @note This is an advanced feature that extension developers normally won't
66
+ # have to deal with. It's purpose is to address scenarios when SketchUp
67
+ # isn't able to automatically infer which extension the command belongs to.
68
+ # These scenarios are for example an extension using a library to add its
69
+ # commands or command manager extensions.
70
+ #
71
+ # @param [SketchupExtension, nil] extension
72
+ #
73
+ # @version SketchUp 2022.0
74
+ def extension=(extension)
75
+ end
76
+
77
+ # The {#get_validation_proc} method returns the command's validation proc.
78
+ #
79
+ # @example
80
+ # cmd = UI::Command.new("Tester") {}
81
+ # cmd.set_validation_proc { MF_DISABLED }
82
+ # proc = cmd.get_validation_proc
83
+ #
84
+ # @return [Proc, nil]
85
+ #
86
+ # @see #set_validation_proc
87
+ #
88
+ # @version SketchUp 2022.0
89
+ def get_validation_proc
90
+ end
91
+
92
+ # The new method is used to create a new command.
93
+ #
94
+ # @example
95
+ # UI.menu("Draw").add_separator
96
+ #
97
+ # # Adds a Test submenu to the Draw menu where the Tester menu item appears
98
+ # testmenu = UI.menu("Draw").add_submenu("Test")
99
+ #
100
+ # # This menu item simply displays Hello World on the screen when clicked.
101
+ # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
102
+ # testmenu.add_item cmd
103
+ #
104
+ # @note Prior to SketchUp 2019 it was not possible to sub-class {UI::Command}
105
+ # due to a bug in how SketchUp initialized the class.
106
+ #
107
+ # @param [String] menutext
108
+ # The text that will appear for this command's menu item
109
+ # if it appears on a menu.
110
+ #
111
+ # @return [UI::Command] the new Command object
112
+ #
113
+ # @version SketchUp 6.0
114
+ #
115
+ # @yield Code that executes the command when the menu item or
116
+ # toolbar item is selected.
117
+ def initialize(menutext)
118
+ end
119
+
120
+ # The large_icon method returns the icon file for the command's
121
+ # large icon.
122
+ #
123
+ # @example
124
+ # toolbar = UI::Toolbar.new "Test"
125
+ # # This command displays Hello World on the screen when clicked
126
+ # cmd = UI::Command.new("Test") { UI.messagebox("Hello World") }
127
+ # # Use __dir__ to set the icon paths relative to the current file's directory
128
+ # # __dir__ returns the directory of the file where it is called
129
+ # # File.join is used to construct file paths in a platform-independent way
130
+ # cmd.small_icon = File.join(__dir__, "icons", "ToolPencilSmall.png")
131
+ # cmd.large_icon = File.join(__dir__, "icons", "ToolPencilLarge.png")
132
+ # toolbar = toolbar.add_item cmd
133
+ # toolbar.show
134
+ # puts cmd.large_icon
135
+ #
136
+ # @return [String] the path to the large icon.
137
+ #
138
+ # @version SketchUp 8.0 M1
139
+ def large_icon
140
+ end
141
+
142
+ # The large_icon= method is used to identify the icon file for the command's
143
+ # large icon. large icons should be 32x32 pixel images for best display
144
+ # quality.
145
+ #
146
+ # Since SketchUp 2016 it is possible to provide vector images for the command.
147
+ # SVG format for Windows and PDF format for OS X. Since the vector images scale
148
+ # for both small and large icon sizes, you may choose to use only one vector
149
+ # image for both variants.
150
+ #
151
+ # @example
152
+ # toolbar = UI::Toolbar.new "Test"
153
+ # # This command displays Hello World on the screen when clicked
154
+ # cmd = UI::Command.new("Test") { UI.messagebox("Hello World") }
155
+ # # Use __dir__ to set the icon paths relative to the current file's directory
156
+ # # __dir__ returns the directory of the file where it is called
157
+ # # File.join is used to construct file paths in a platform-independent way
158
+ # cmd.small_icon = File.join(__dir__, "icons", "ToolPencilSmall.png")
159
+ # cmd.large_icon = File.join(__dir__, "icons", "ToolPencilLarge.png")
160
+ # toolbar = toolbar.add_item cmd
161
+ # toolbar.show
162
+ #
163
+ # @param [String] path
164
+ # The path to the large icon.
165
+ #
166
+ # @return [String]
167
+ #
168
+ # @version SketchUp 6.0
169
+ def large_icon=(path)
170
+ end
171
+
172
+ # The menu_text method returns the menu item name for the command.
173
+ #
174
+ # @example
175
+ # add_separator_to_menu("Draw")
176
+ # # Adds a Test submenu to the Draw menu where the Tester menu item appears
177
+ # testmenu = UI.menu("Draw").add_submenu("Test")
178
+ # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
179
+ # cmd.menu_text = "New String"
180
+ # testmenu.add_item cmd
181
+ # puts cmd.menu_text
182
+ #
183
+ # @return [String]
184
+ #
185
+ # @version SketchUp 8.0 M1
186
+ def menu_text
187
+ end
188
+
189
+ # The menu_text= method is used to set the menu item name for the command.
190
+ #
191
+ # @example
192
+ # add_separator_to_menu("Draw")
193
+ # # Adds a Test submenu to the Draw menu where the Tester menu item appears
194
+ # testmenu = UI.menu("Draw").add_submenu("Test")
195
+ # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
196
+ # cmd.menu_text = "New String"
197
+ # testmenu.add_item cmd
198
+ #
199
+ # @param [String] menuitem
200
+ # A string representing the menu item for the command.
201
+ #
202
+ # @return [String]
203
+ #
204
+ # @version SketchUp 6.0
205
+ def menu_text=(menuitem)
206
+ end
207
+
208
+ # The {#proc} method returns the command's proc that is called when the command
209
+ # is invoked.
210
+ #
211
+ # @example
212
+ # cmd = UI::Command.new("Tester") {}
213
+ # cmd.set_validation_proc { MF_DISABLED }
214
+ # proc = cmd.proc
215
+ # proc.call
216
+ #
217
+ # @return [Proc]
218
+ #
219
+ # @version SketchUp 2022.0
220
+ def proc
221
+ end
222
+
223
+ # The {#set_validation_proc} method allows you to change whether the command
224
+ # is enabled, checked, etc. For instance, the command toggling a dialog window
225
+ # may be displayed as checked while the dialog is open.
226
+ #
227
+ # @bug On Mac the validation proc isn't called as often as it should. For
228
+ # instance a selection change doesn't trigger it.
229
+ #
230
+ # @example
231
+ # # Create a command object.
232
+ # cmd = UI::Command.new("Tester") {
233
+ # UI.messagebox("My Command")
234
+ # }
235
+ # cmd.menu_text = "My Command"
236
+ # cmd.set_validation_proc {
237
+ # if Sketchup.active_model.selection.length == 0
238
+ # MF_GRAYED
239
+ # else
240
+ # MF_ENABLED
241
+ # end
242
+ # }
243
+ # UI.menu("Draw").add_item(cmd)
244
+ #
245
+ # @note Avoid disabling an command as it often isn't obvious to the user why
246
+ # it is disabled. Prefer keeping the command enabled but show an error
247
+ # message if pressed when it cannot be used.
248
+ #
249
+ # @return [UI::Command]
250
+ #
251
+ # @see #get_validation_proc
252
+ #
253
+ # @version SketchUp 6.0
254
+ #
255
+ # @yield []
256
+ #
257
+ # @yieldreturn [Integer] +MF_ENABLED+, +MF_DISABLED+, +MF_CHECKED+,
258
+ # +MF_UNCHECKED+, or +MF_GRAYED+
259
+ def set_validation_proc
260
+ end
261
+
262
+ # The small_icon method returns the icon file for the command's
263
+ # small icon.
264
+ #
265
+ # @example
266
+ # toolbar = UI::Toolbar.new "Test"
267
+ # # This toolbar command displays Hello World on the screen when clicked.
268
+ # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
269
+ # # Use __dir__ to set the icon paths relative to the current file's directory
270
+ # # __dir__ returns the directory of the file where it is called
271
+ # # File.join is used to construct file paths in a platform-independent way
272
+ # cmd.small_icon = File.join(__dir__, "icons", "ToolPencilSmall.png")
273
+ # cmd.large_icon = File.join(__dir__, "icons", "ToolPencilLarge.png")
274
+ # toolbar = toolbar.add_item cmd
275
+ # toolbar.show
276
+ # puts cmd.small_icon
277
+ #
278
+ # @return [String] the path to the small_icon
279
+ #
280
+ # @version SketchUp 8.0 M1
281
+ def small_icon
282
+ end
283
+
284
+ # The small_icon= method is used to identify the icon file for the command's
285
+ # small icon. Small icons should be 24x24 pixel images for best display
286
+ # quality.
287
+ #
288
+ # Since SketchUp 2016 it is possible to provide vector images for the cursors.
289
+ # SVG format for Windows and PDF format for OS X. Since the vector images scale
290
+ # for both small and large icon sizes, you may choose to use only one vector
291
+ # image for both variants.
292
+ #
293
+ # @example
294
+ # toolbar = UI::Toolbar.new "Test"
295
+ # # This toolbar command displays Hello World on the screen when clicked.
296
+ # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
297
+ # # Use __dir__ to set the icon paths relative to the current file's directory
298
+ # # __dir__ returns the directory of the file where it is called
299
+ # # File.join is used to construct file paths in a platform-independent way
300
+ # cmd.small_icon = File.join(__dir__, "icons", "ToolPencilSmall.png")
301
+ # cmd.large_icon = File.join(__dir__, "icons", "ToolPencilLarge.png")
302
+ # toolbar = toolbar.add_item cmd
303
+ # toolbar.show
304
+ #
305
+ # @param [String] path
306
+ # A path to the small icon.
307
+ #
308
+ # @return [String]
309
+ #
310
+ # @version SketchUp 6.0
311
+ def small_icon=(path)
312
+ end
313
+
314
+ # The status_bar_text method returns the status bar text for the
315
+ # command.
316
+ #
317
+ # @example
318
+ # toolbar = UI::Toolbar.new("Test")
319
+ # # This toolbar tool simply displays Hello World on the screen
320
+ # # when clicked
321
+ # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
322
+ # cmd.small_icon = "ToolPencilSmall.png"
323
+ # cmd.large_icon = "ToolPencilLarge.png"
324
+ # cmd.status_bar_text = "Testing the toolbars class."
325
+ # toolbar = toolbar.add_item cmd
326
+ # toolbar.show
327
+ # puts cmd.status_bar_text
328
+ #
329
+ # @return [String] the status bar text.
330
+ #
331
+ # @version SketchUp 8.0 M1
332
+ def status_bar_text
333
+ end
334
+
335
+ # The status_bar_text= method is used to set the status bar text for the
336
+ # command. This should be a description what the command does.
337
+ #
338
+ # @example
339
+ # toolbar = UI::Toolbar.new("Test")
340
+ # # This toolbar tool simply displays Hello World on the screen when clicked
341
+ # cmd = UI::Command.new("Tester") { UI.messagebox("Hello World") }
342
+ # cmd.small_icon = "ToolPencilSmall.png"
343
+ # cmd.large_icon = "ToolPencilLarge.png"
344
+ # cmd.status_bar_text = "Testing the toolbars class."
345
+ # toolbar = toolbar.add_item cmd
346
+ # toolbar.show
347
+ #
348
+ # @param [String] text
349
+ # The text that will appear on the status bar when the
350
+ # cursor is over the command's menu item.
351
+ #
352
+ # @return [String]
353
+ #
354
+ # @version SketchUp 6.0
355
+ def status_bar_text=(text)
356
+ end
357
+
358
+ # The tooltip method returns command item's tooltip text.
359
+ #
360
+ # @example
361
+ # toolbar = UI::Toolbar.new "Test"
362
+ # # This command displays Hello World on the screen when clicked
363
+ # cmd = UI::Command.new("Test") { UI.messagebox("Hello World") }
364
+ # cmd.tooltip = "Hello World Tool"
365
+ # toolbar = toolbar.add_item cmd
366
+ # toolbar.show
367
+ # puts cmd.tooltip
368
+ #
369
+ # @return [String] the tooltip text
370
+ #
371
+ # @version SketchUp 8.0 M1
372
+ def tooltip
373
+ end
374
+
375
+ # The {#tooltip=} method is used to define a command item's tooltip header. Tooltips
376
+ # will appear when the command is attached to a tool bar and the user hovers
377
+ # their cursor over the icon.
378
+ #
379
+ # @example
380
+ # toolbar = UI::Toolbar.new "Test"
381
+ # # This command displays Hello World on the screen when clicked
382
+ # cmd = UI::Command.new("Test") { UI.messagebox("Hello World") }
383
+ # cmd.tooltip = "Hello World Tool"
384
+ # toolbar = toolbar.add_item cmd
385
+ # toolbar.show
386
+ #
387
+ # @note The tooltip text should repeat the commands' title text. For the command
388
+ # description, use {#status_bar_text}.
389
+ #
390
+ # @param [String] text
391
+ # The text of the tooltip.
392
+ #
393
+ # @return [String]
394
+ #
395
+ # @version SketchUp 6.0
396
+ def tooltip=(text)
397
+ end
398
+
399
+ end