Welcome to mirror list, hosted at ThFree Co, Russian Federation.

rna_manual_reference.py « modules - git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 7bdcf69e49543b8a2a2b075f1f9101db43feec1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
#  RNA MANUAL REFERENCE
#
# This file maps RNA to online URL's for right mouse context menu documentation access
#
# To make international, we made a script,
# pointing the manuals to the proper language,
# specified in the 'User Preferences Window' by the users
# Some Languages have their manual page, using a prefix or
# being preceded by their respective reference, for example
#
# manual/ --> manual/ru/
#
# The table in the script, contains all of the languages we have in the
# Blender manual website, for those other languages that still
# doesn't have a team of translators, and/or don't have a manual for their languages
# we commented the lines below, you should add them to the language table
# when they have a proper manual in our Blender manual, or added
# to the Blender UI  translation table
# The Blender manual uses a list of ISO_639-1 codes to convert languages to manual prefixes
#
# URL is the: url_manual_prefix + url_manual_mapping[id]

import bpy

url_manual_prefix = "https://www.blender.org/manual/"

language = ""
if bpy.context.user_preferences.system.use_international_fonts:
    language = bpy.context.user_preferences.system.language
    if language == 'DEFAULT':
        import os
        language = os.getenv('LANG', '').split('.')[0]

LANG = {
#   "ar_EG":        "ar",
#   "bg_BG":        "bg",
#   "ca_AD":        "ca",
#   "cs_CZ":        "cz",
    "de_DE":        "de",  # German.
#   "el_GR":        "el",
    "ru_RU":        "ru",  # Russian.
#   "sr_RS":        "sr",
#   "sv_SE":        "sv",
#   "tr_TR":        "th",
#   "uk_UA":        "uk",
#   "es":           "es",
#   "fi_FI":        "fi",
    "fr_FR":        "fr",  # French.
#   "id_ID":        "id",
#   "it_IT":        "it",
#   "ja_JP":        "ja",
#   "nl_NL":        "nl",
#   "pl_PL":        "pl",
#   "pt_PT":        "pt",
#   "pt_BR":        "pt",
    "zh_CN":        "zh.cn",  # Chinese - Should be changed to "zh_cn" but there is a bug in sphinx-intl.
    "zh_TW":        "zh.cn",  # Taiwanese Chinese - for until we have a zh_tw version?
}.get(language)

if LANG is not None:
    url_manual_prefix = url_manual_prefix.replace("manual", "manual/" + LANG)

# - The first item is a wildcard - typical file system globbing
#   using python module 'fnmatch.fnmatch'
# - Expressions are evaluated top down (include catch-all expressions last).

url_manual_mapping = (

    # *** User Prefs ***
    ("bpy.types.UserPreferences.*",                "preferences"),
    ("bpy.types.UserPreferencesView.*",            "preferences/interface.html"),
    ("bpy.types.UserPreferencesEdit.*",            "preferences/editing.html"),
    ("bpy.types.UserPreferencesInput.*",           "preferences/input.html"),
    ("bpy.ops.wm.addon_*",                         "preferences/add_ons.html"),
    ("bpy.types.Theme.*",                          "preferences/themes.html"),
    ("bpy.types.UserPreferencesFilePaths.*",       "preferences/file.html"),
    ("bpy.types.UserPreferencesSystem.*",          "preferences/system.html"),
    ("bpy.types.UserSolidLight.*",                 "preferences/system.html"),

    # *** Modifiers ***
    # --- Intro ---
    ("bpy.types.Modifier.show_*", "modeling/modifiers/the_stack.html"),
    ("bpy.types.Modifier.*", "modeling/modifiers"),  # catchall for various generic options
    # --- Modify Modifiers ---
    ("bpy.types.MeshCacheModifier.*",              "modeling/modifiers/modify/mesh_cache.html"),
    ("bpy.types.UVProjectModifier.*",              "modeling/modifiers/modify/uv_project.html"),
    ("bpy.types.UVWarpModifier.*",                 "modeling/modifiers/modify/uv_warp.html"),
    ("bpy.types.VertexWeightMixModifier.*",        "modeling/modifiers/modify/vertex_weight.html"),
    ("bpy.types.VertexWeightEditModifier.*",       "modeling/modifiers/modify/vertex_weight.html"),
    ("bpy.types.VertexWeightProximityModifier.*",  "modeling/modifiers/modify/vertex_weight.html"),
    # --- Generate Modifiers ---
    ("bpy.types.ArrayModifier.*",      "modeling/modifiers/generate/array.html"),
    ("bpy.types.BevelModifier.*",      "modeling/modifiers/generate/bevel.html"),
    ("bpy.types.BooleanModifier.*",    "modeling/modifiers/generate/booleans.html"),
    ("bpy.types.BuildModifier.*",      "modeling/modifiers/generate/build.html"),
    ("bpy.types.DecimateModifier.*",   "modeling/modifiers/generate/decimate.html"),
    ("bpy.types.EdgeSplitModifier.*",  "modeling/modifiers/generate/edge_split.html"),
    ("bpy.types.MaskModifier.*",       "modeling/modifiers/generate/mask.html"),
    ("bpy.types.MirrorModifier.*",     "modeling/modifiers/generate/mirror.html"),
    ("bpy.types.MultiresModifier.*",   "modeling/modifiers/generate/multiresolution.html"),
    ("bpy.types.RemeshModifier.*",     "modeling/modifiers/generate/remesh.html"),
    ("bpy.types.ScrewModifier.*",      "modeling/modifiers/generate/screw.html"),
    ("bpy.types.SkinModifier.*",       "modeling/modifiers/generate/skin.html"),
    ("bpy.types.SolidifyModifier.*",   "modeling/modifiers/generate/solidify.html"),
    ("bpy.types.SubsurfModifier.*",    "modeling/modifiers/generate/subsurf.html"),
    ("bpy.types.TriangulateModifier.*","modeling/modifiers/generate/triangulate.html"),
    # --- Deform Modifiers ---
    ("bpy.types.ArmatureModifier.*",      "modeling/modifiers/deform/armature.html"),
    ("bpy.types.CastModifier.*",          "modeling/modifiers/deform/cast.html"),
    ("bpy.types.CurveModifier.*",         "modeling/modifiers/deform/curve.html"),
    ("bpy.types.DisplaceModifier.*",      "modeling/modifiers/deform/displace.html"),
    ("bpy.types.HookModifier.*",          "modeling/modifiers/deform/hooks.html"),
    ("bpy.types.LaplacianSmoothModifier.*", "modeling/modifiers/deform/laplacian_smooth.html"),
    ("bpy.types.LatticeModifier.*",       "modeling/modifiers/deform/lattice.html"),
    ("bpy.types.MeshDeformModifier.*",    "modeling/modifiers/deform/mesh_deform.html"),
    ("bpy.types.ShrinkwrapModifier.*",    "modeling/modifiers/deform/shrinkwrap.html"),
    ("bpy.types.SimpleDeformModifier.*",  "modeling/modifiers/deform/simple_deform.html"),
    ("bpy.types.SmoothModifier.*",        "modeling/modifiers/deform/smooth.html"),
    # ("bpy.types.SurfaceModifier.*",     "Modifiers/Deform/"),  # USERS NEVER SEE THIS
    ("bpy.types.WarpModifier.*",          "modeling/modifiers/deform/warp.html"),
    ("bpy.types.WaveModifier.*",          "modeling/modifiers/deform/wave.html"),
    # --- Simulate Modifiers ---
    ("bpy.types.ClothModifier.*",             "physics/cloth"),
    ("bpy.types.CollisionModifier.*",         "physics/collision.html"),
    ("bpy.types.DynamicPaintModifier.*",      "physics/dynamic_paint"),
    ("bpy.types.ExplodeModifier.*",           "modeling/modifiers/simulate/explode.html"),
    ("bpy.types.FluidSimulationModifier.*",   "physics/fluid"),
    ("bpy.types.OceanModifier.*",             "modeling/modifiers/simulate/ocean.html"),
    ("bpy.types.ParticleInstanceModifier.*",  "modeling/modifiers/simulate/particle_instance.html"),
    ("bpy.types.ParticleSystemModifier.*",    "physics/particles"),
    ("bpy.types.SmokeModifier.*",             "physics/smoke"),
    ("bpy.types.SoftBodyModifier.*",          "physics/soft_body"),

    # *** Constraints ***
    ("bpy.types.Constraint.*",                "rigging/constraints"),
    ("bpy.types.Constraint.mute",             "rigging/constraints/interface/the_stack.html"),  # others could be added here?
    # --- Motion Tracking Constraints ---
    ("bpy.types.FollowTrackConstraint.*",     "rigging/constraints/motion_tracking/follow_track.html"),
    ("bpy.types.ObjectSolverConstraint.*",    "rigging/constraints/motion_tracking/object_solver.html"),
    ("bpy.types.CameraSolverConstraint.*",    "rigging/constraints/motion_tracking/camera_solver.html"),
    # --- Transform Constraints ---
    ("bpy.types.CopyLocationConstraint.*",    "rigging/constraints/transform/copy_location.html"),
    ("bpy.types.CopyRotationConstraint.*",    "rigging/constraints/transform/copy_rotation.html"),
    ("bpy.types.CopyScaleConstraint.*",       "rigging/constraints/transform/copy_scale.html"),
    ("bpy.types.CopyTransformsConstraint.*",  "rigging/constraints/transform/copy_transforms.html"),
    ("bpy.types.LimitDistanceConstraint.*",   "rigging/constraints/transform/limit_distance.html"),
    ("bpy.types.LimitLocationConstraint.*",   "rigging/constraints/transform/limit_location.html"),
    ("bpy.types.LimitRotationConstraint.*",   "rigging/constraints/transform/limit_rotation.html"),
    ("bpy.types.LimitScaleConstraint.*",      "rigging/constraints/transform/limit_scale.html"),
    ("bpy.types.MaintainVolumeConstraint.*",  "rigging/constraints/transform/maintain_volume.html"),
    ("bpy.types.TransformConstraint.*",       "rigging/constraints/transform/transformation.html"),
    # --- Tracking Constraints ---
    ("bpy.types.ClampToConstraint.*",         "rigging/constraints/tracking/clamp_to.html"),
    ("bpy.types.DampedTrackConstraint.*",     "rigging/constraints/tracking/damped_track.html"),
    ("bpy.types.KinematicConstraint.*",       "rigging/constraints/tracking/ik_solver.html"),
    ("bpy.types.LockedTrackConstraint.*",     "rigging/constraints/tracking/locked_track.html"),
    ("bpy.types.SplineIKConstraint.*",        "rigging/constraints/tracking/spline_ik.html"),
    ("bpy.types.StretchToConstraint.*",       "rigging/constraints/tracking/stretch_to.html"),
    ("bpy.types.TrackToConstraint.*",         "rigging/constraints/tracking/track_to.html"),
    # --- Relationship Constraints ---
    ("bpy.types.ActionConstraint.*",          "rigging/constraints/relationship/action.html"),
    ("bpy.types.ChildOfConstraint.*",         "rigging/constraints/relationship/action.html"),
    ("bpy.types.FloorConstraint.*",           "rigging/constraints/relationship/child_of.html"),
    ("bpy.types.FollowPathConstraint.*",      "rigging/constraints/relationship/follow_path.html"),
    ("bpy.types.PivotConstraint.*",           "rigging/constraints/relationship/pivot.html"),
    ("bpy.types.RigidBodyJointConstraint.*",  "rigging/constraints/relationship/rigid_body_joint.html"),
    ("bpy.types.ShrinkwrapConstraint.*",      "rigging/constraints/relationship/shrinkwrap.html"),

    # *** Render Settings ***
    ("bpy.types.ImageFormatSettings.*",        "data_system/files/image_formats.html"),
    ("bpy.types.RenderSettings.filepath",      "render/output/output.html#output-panel"),
    ("bpy.types.RenderSettings.display_mode",  "render/output/display.html#displaying-renders"),
    ("bpy.types.RenderSettings.*",             "render"),  # catchall, todo - refine

    # *** ID Subclasses ***
    ("bpy.types.Action.*",        "animation/actions.html"),
    #("bpy.types.Brush.*", ""),   # TODO - manual has no place for this! XXX
    ("bpy.types.Curve.*",         "modeling/curves"),
    ("bpy.types.GreasePencil.*",  "interface/grease_pencil/index.html"),
    ("bpy.types.Group.*",         "editors/3dview/relationships/groups.html"),
    ("bpy.types.Image.*",         "render/blender_render/textures/types/image.html"),
    ("bpy.types.ShapeKey.*",      "animation/shape_keys.html"), # not an id but include because of key
    ("bpy.types.Key.*",           "animation/shape_keys.html"),
    #("bpy.types.Lattice.*", ""),  # TODO - manual has no place for this! XXX
    ("bpy.types.Library.*",       "data_system/linked_libraries.html"),
    ("bpy.types.Mask.*",          "editors/movie_clip_editor/masking.html"),

    # *** Materials (blender internal) ***
    ("bpy.types.Material.diffuse*",  "render/blender_render/materials/properties/diffuse_shaders.html"),
    ("bpy.types.Material.specular*", "render/blender_render/materials/properties/specular_shaders.html"),
    ("bpy.types.Material.ambient*",  "render/blender_render/materials/properties/shading.html"),
    ("bpy.types.Material.preview_render_type", "render/blender_render/materials/properties/preview.html"),
    ("bpy.types.Material.*",                   "render/blender_render"),  # catchall, until the section is filled in
    # ("bpy.types.MaterialSlot.link", "render/blender_render/materials/options.html#material-naming_and_linking"),  # TODO, T42839
    ("bpy.types.MaterialVolume.*",    "render/blender_render/materials/special_effects/volume.html"),
    ("bpy.types.MaterialHalo.*",      "render/blender_render/materials/special_effects/halo.html"),
    ("bpy.types.MaterialStrand.*",    "render/blender_render/materials/properties/strands.html"),
    ("bpy.types.MaterialSubsurfaceScattering.*",  "render/blender_render/materials/properties/subsurface_scattering.html"),
    ("bpy.types.MaterialRaytraceMirror.*",        "render/blender_render/materials/properties/mirror.html"),
    ("bpy.types.MaterialRaytraceTransparency.*",  "render/blender_render/materials/properties/transparency.html#raytraced-transparency"),
    # ... todo, many more options
    ("bpy.types.MovieClip.*",                  "editors/movie_clip_editor/index.html"),
    ("bpy.types.MovieTrackingCamera.*",        "editors/movie_clip_editor/tracking/clip.html#tools-available-in-reconstruction-mode"),
    ("bpy.types.MovieTrackingStabilization.*", "editors/movie_clip_editor/index.html#tools-available-in-reconstruction-mode"),
    ("bpy.types.MovieTrackingTrack*",          "editors/movie_clip_editor/index.html#tools-available-in-tracking-mode"),
    ("bpy.types.MovieTracking*",               "editors/movie_clip_editor"),
    ("bpy.types.SpaceClipEditor.*",            "editors/movie_clip_editor/introduction.html"),
    ("bpy.types.ColorManaged*",                "render/post_process/cm_and_exposure.html"),
    #("bpy.types.NodeTree.*", ""),             # dont document
    ("bpy.types.Object.*",                     "editors/3dview/objects"),  # catchall, todo - refine
    ("bpy.types.ParticleSettings.*",           "physics/particles"),
    ("bpy.types.Scene.*",                      "data_system/scenes.html"),
    ("bpy.types.Screen.*",                     "interface/screens.html"),
    ("bpy.types.Sound.*",                      "editors/3dview/objects/types/speaker.html"),
    ("bpy.types.Speaker.*",                    "editors/3dview/objects/types/speaker.html"),
    ("bpy.types.Text.*",                       "editors/text_editor.html"),
    ("bpy.types.Texture.*",                    "render/blender_render/textures"),
    ("bpy.types.VectorFont.*",                 "modeling/texts"),
    ("bpy.types.WindowManager.*",              "interface/window_system"),
    ("bpy.types.World.*",                      "render/blender_render/world"),
    ("bpy.types.WorldLighting.*ao*",           "render/blender_render/lighting/ambient_occlusion.html"),
    ("bpy.types.WorldLighting.*ambient*",      "render/blender_render/lighting/ambient_occlusion.html"),
    ("bpy.types.WorldLighting.*environment*",  "render/blender_render/lighting/ambient_light.html"),
    # only other WorldLighting props are in Gather panel
    ("bpy.types.WorldLighting.*",              "render/blender_render/lighting/ambient_occlusion.html#gather"),

    # *** Cycles ***
    ("bpy.types.CyclesRenderSettings.*",     "render/cycles/settings/integrator.html"),
    ("bpy.types.CyclesVisibilitySettings.*", "render/cycles/settings/light_paths.html#ray-visibility"),
    ("bpy.types.CyclesWorldSettings.*",      "render/cycles/world.html"),
    ("bpy.types.SceneRenderLayer.*pass*",    "render/blender_render/passes.html"),
    ("bpy.types.SceneRenderLayer.*",         "render/post_process/layers.html"),
    ("bpy.types.Cycles*",                    "render/cycles"),

    # Currently all manual links on all sockets and values (such as Fac, Roughness, Color...) are NodeSocket* type.
    # It'd be much better if the name of the socket could be used for the manual reference
    ("bpy.types.NodeSocket*", "editors/node_editor/node_parts.html"),  # no generic socket type page exists, but composite types are the same

    # *** Cycles Material Nodes ***
    # Outputs
    ("bpy.types.ShaderNodeOutputLamp.*",           "render/cycles/lamps.html"),
    ("bpy.types.ShaderNodeOutputMaterial.*",       "render/cycles/materials"),
    ("bpy.types.ShaderNodeOutputWorld.*",          "render/cycles/world.html"),
    # Shaders
    ("bpy.types.ShaderNodeAddShader.*",            "render/cycles/nodes/shaders.html#mix-and-add"),
    ("bpy.types.ShaderNodeAmbientOcclusion.*",     "render/cycles/nodes/shaders.html#ambient-occlusion"),
    ("bpy.types.ShaderNodeBackground.*",           "render/cycles/nodes/shaders.html#background"),
    ("bpy.types.ShaderNodeBsdfAnisotropic.*",      "render/cycles/nodes/shaders.html#anisotropic"),
    ("bpy.types.ShaderNodeBsdfDiffuse.*",          "render/cycles/nodes/shaders.html#diffuse"),
    ("bpy.types.ShaderNodeBsdfGlass.*",            "render/cycles/nodes/shaders.html#glass"),
    ("bpy.types.ShaderNodeBsdfGlossy.*",           "render/cycles/nodes/shaders.html#glossy"),
    ("bpy.types.ShaderNodeBsdfHair.*",             "render/cycles/nodes/shaders.html"),  # todo doc
    ("bpy.types.ShaderNodeBsdfRefraction.*",       "render/cycles/nodes/shaders.html#refraction"),
    ("bpy.types.ShaderNodeBsdfToon.*",             "render/cycles/nodes/shaders.html#toon"),
    ("bpy.types.ShaderNodeBsdfTranslucent.*",      "render/cycles/nodes/shaders.html#translucent"),
    ("bpy.types.ShaderNodeBsdfTransparent.*",      "render/cycles/nodes/shaders.html#transparent"),
    ("bpy.types.ShaderNodeBsdfVelvet.*",           "render/cycles/nodes/shaders.html#velvet"),
    ("bpy.types.ShaderNodeEmission.*",             "render/cycles/nodes/shaders.html#emission"),
    ("bpy.types.ShaderNodeHoldout.*",              "render/cycles/nodes/shaders.html#holdout"),
    ("bpy.types.ShaderNodeMixShader.*",            "render/cycles/nodes/shaders.html#mix-and-add"),
    ("bpy.types.ShaderNodeSubsurfaceScattering.*", "render/cycles/nodes/shaders.html#subsurface-scattering"),
    ("bpy.types.ShaderNodeVolumeAbsorption.*",     "render/cycles/nodes/shaders.html"),  # todo doc
    ("bpy.types.ShaderNodeVolumeScatter.*",        "render/cycles/nodes/shaders.html"),  # todo doc
    # Textures
    ("bpy.types.ShaderNodeTexBrick.*",       "render/cycles/nodes/textures.html#brick-texture"),
    ("bpy.types.ShaderNodeTexChecker.*",     "render/cycles/nodes/textures.html#checker-texture"),
    ("bpy.types.ShaderNodeTexEnvironment.*", "render/cycles/nodes/textures.html#environment-texture"),
    ("bpy.types.ShaderNodeTexGradient.*",    "render/cycles/nodes/textures.html#gradient-texture"),
    ("bpy.types.ShaderNodeTexImage.*",       "render/cycles/nodes/textures.html#image-texture"),
    ("bpy.types.ShaderNodeTexMagic.*",       "render/cycles/nodes/textures.html#magic-texture"),
    ("bpy.types.ShaderNodeTexMusgrave.*",    "render/cycles/nodes/textures.html#musgrave-texture"),
    ("bpy.types.ShaderNodeTexNoise.*",       "render/cycles/nodes/textures.html#noise-texture"),
    ("bpy.types.ShaderNodeTexSky.*",         "render/cycles/nodes/textures.html#sky-texture"),
    ("bpy.types.ShaderNodeTexVoronoi.*",     "render/cycles/nodes/textures.html#voronoi-texture"),
    ("bpy.types.ShaderNodeTexWave.*",        "render/cycles/nodes/textures.html#wave-texture"),
    # Other
    ("bpy.types.ShaderNodeAttribute.*",      "render/cycles/nodes/more.html#attribute"),
    ("bpy.types.ShaderNodeBlackbody.*",      "render/cycles/nodes/more.html#blackbody"),
    # ("bpy.types.ShaderNodeBrightContrast.*", ""),
    ("bpy.types.ShaderNodeBump.*",           "render/cycles/nodes/more.html#bump"),
    ("bpy.types.ShaderNodeCameraData.*",     "render/cycles/nodes/more.html"),  # TODO doc
    # ("bpy.types.ShaderNodeCombineHSV.*", ""),
    # ("bpy.types.ShaderNodeCombineRGB.*", ""),
    ("bpy.types.ShaderNodeFresnel.*",         "render/cycles/nodes/more.html#fresnel"),
    # ("bpy.types.ShaderNodeGamma.*", ""),
    ("bpy.types.ShaderNodeGeometry.*",        "render/cycles/nodes/more.html#geometry"),
    ("bpy.types.ShaderNodeHairInfo.*",        "render/cycles/nodes/more.html#hair-info"),
    # ("bpy.types.ShaderNodeHueSaturation.*", ""),
    # ("bpy.types.ShaderNodeInvert.*", ""),
    ("bpy.types.ShaderNodeLayerWeight.*",     "render/cycles/nodes/more.html#layer-weight"),
    ("bpy.types.ShaderNodeLightFalloff.*",    "render/cycles/nodes/more.html#light-falloff"),
    ("bpy.types.ShaderNodeLightPath.*",       "render/cycles/nodes/more.html#light-path"),
    ("bpy.types.ShaderNodeMapping.*",         "render/cycles/nodes/more.html#mapping"),
    # # ("bpy.types.ShaderNodeMath.*", ""),
    # ("bpy.types.ShaderNodeMixRGB.*", ""),
    ("bpy.types.ShaderNodeNormalMap.*",       "render/cycles/nodes/more.html#normal-map"),
    ("bpy.types.ShaderNodeObjectInfo.*",      "render/cycles/nodes/more.html#object-info"),
    ("bpy.types.ShaderNodeParticleInfo.*",    "render/cycles/nodes/more.html#particle-info"),
    ("bpy.types.ShaderNodeRGB.*",             "render/cycles/nodes/more.html#rgb"),
    # ("bpy.types.ShaderNodeRGBCurve.*", ""),
    # ("bpy.types.ShaderNodeRGBToBW.*", ""),
    # ("bpy.types.ShaderNodeSeparateHSV.*", ""),
    # ("bpy.types.ShaderNodeSeparateRGB.*", ""),
    ("bpy.types.ShaderNodeTangent.*",        "render/cycles/nodes/more.html#tangent"),
    ("bpy.types.ShaderNodeTexCoord.*",       "render/cycles/nodes/more.html#texture-coordinates"),
    ("bpy.types.ShaderNodeValue.*",          "render/cycles/nodes/more.html#value"),
    # ("bpy.types.ShaderNodeVectorCurve.*", ""),
    ("bpy.types.ShaderNodeVectorMath.*",      "render/cycles/nodes/more.html"),  # TODO doc
    ("bpy.types.ShaderNodeVectorTransform.*", "render/cycles/nodes/more.html#vector-transform"),

    ("bpy.types.ShaderNodeWavelength.*",      "render/cycles/nodes/more.html#wavelength"),
    ("bpy.types.ShaderNodeWireframe.*",       "render/cycles/nodes/more.html#wireframe"),

    ("bpy.types.ShaderNodeGroup.*",           "editors/node_editor/node_groups.html"),
    ("bpy.types.ShaderNode*",                 "render/cycles/nodes"),

    ("bpy.types.ShaderNodeScript.*",          "render/cycles/osl.html"),

    # *** Compositing Nodes ***
    # Input
    ("bpy.types.CompositorNodeBokehImage.*",  "compositing/types/input/bokeh_image.html"),
    ("bpy.types.CompositorNodeImage.*",       "compositing/types/input/image.html"),
    ("bpy.types.CompositorNodeMask.*",        "compositing/types/input/mask.html"),
    ("bpy.types.CompositorNodeMovieClip.*",   "compositing/types/input/movie_clip.html"),
    ("bpy.types.CompositorNodeRGB.*",         "compositing/types/input/rgb.html"),
    ("bpy.types.CompositorNodeRLayers.*",     "compositing/types/input/render_layers.html"),
    ("bpy.types.CompositorNodeTexture.*",     "compositing/types/input/texture.html"),
    ("bpy.types.CompositorNodeTime.*",        "compositing/types/input/time.html"),
    ("bpy.types.CompositorNodeTrackPos.*",    "compositing/types/input/track_position.html"),
    ("bpy.types.CompositorNodeValue.*",       "compositing/types/input/value.html"),
    # Output
    ("bpy.types.CompositorNodeComposite.*",   "compositing/types/output/composite.html"),
    ("bpy.types.CompositorNodeLevels.*",      "compositing/types/output/levels.html"),
    ("bpy.types.CompositorNodeOutputFile*",   "compositing/types/output/file.html"),
    ("bpy.types.CompositorNodeSplitViewer.*", "compositing/types/output/split_viewer.html"),
    ("bpy.types.CompositorNodeViewer.*",      "compositing/types/output/viewer.html"),
    # Color
    ("bpy.types.CompositorNodeAlphaOver.*",       "compositing/types/color/alpha_over.html"),
    ("bpy.types.CompositorNodeBrightContrast.*",  "compositing/types/color/bright_contrast.html"),
    ("bpy.types.CompositorNodeColorBalance.*",    "compositing/types/color/bright_contrast.html"),
    ("bpy.types.CompositorNodeColorCorrection.*", "compositing/types/color/color_correction.html"),
    ("bpy.types.CompositorNodeCurveRGB.*",        "compositing/types/color/rgb_curves.html"),
    ("bpy.types.CompositorNodeGamma.*",           "compositing/types/color/gamma.html"),
    ("bpy.types.CompositorNodeHueCorrect.*",      "compositing/types/color/hue_correct.html"),
    ("bpy.types.CompositorNodeHueSat.*",          "compositing/types/color/hue_saturation.html"),
    ("bpy.types.CompositorNodeInvert.*",          "compositing/types/color/invert.html"),
    ("bpy.types.CompositorNodeMixRGB.*",          "compositing/types/color/mix.html"),
    ("bpy.types.CompositorNodeTonemap.*",         "compositing/types/color/tone_map.html"),
    ("bpy.types.CompositorNodeZcombine.*",        "compositing/types/color/z_combine.html"),
    # Converter
    ("bpy.types.CompositorNodeSep*",         "compositing/types/converter/combine_separate.html"),
    ("bpy.types.CompositorNodeComb*",        "compositing/types/converter/combine_separate.html"),
    ("bpy.types.CompositorNodeIDMask.*",     "compositing/types/converter/id_mask.html"),
    ("bpy.types.CompositorNodeMath.*",       "compositing/types/converter/math.html"),
    ("bpy.types.CompositorNodePremulKey.*",  "compositing/types/converter/alpha_convert.html"),
    ("bpy.types.CompositorNodeRGBToBW.*",    "compositing/types/converter/rgb_to_bw.html"),
    ("bpy.types.CompositorNodeSetAlpha.*",   "compositing/types/converter/set_alpha.html"),
    # Filter
    ("bpy.types.CompositorNodeBilateralblur.*", "compositing/types/filter/bilateral_blur.html"),
    ("bpy.types.CompositorNodeBlur.*",          "compositing/types/filter/blur_node.html"),
    ("bpy.types.CompositorNodeBokehBlur.*",     "compositing/types/filter/bokeh_blur.html"),
    ("bpy.types.CompositorNodeDBlur.*",         "compositing/types/filter/directional_blur.html"),
    ("bpy.types.CompositorNodeDefocus.*",       "compositing/types/filter/defocus.html"),
    ("bpy.types.CompositorNodeDespeckle.*",     "compositing/types/filter/despeckle.html"),
    ("bpy.types.CompositorNodeDilateErode.*",   "compositing/types/filter/dilate_erode.html"),
    ("bpy.types.CompositorNodeFilter.*",        "compositing/types/filter/filter_node.html"),
    ("bpy.types.CompositorNodeGlare.*",         "compositing/types/filter/glare.html"),
    ("bpy.types.CompositorNodeInpaint.*",       "compositing/types/filter/inpaint.html"),
    ("bpy.types.CompositorNodePixelate.*",      "compositing/types/filter/pixelate.html"),
    ("bpy.types.CompositorNodeSunBeams.*",      "compositing/types/filter/sun_beams.html"),
    ("bpy.types.CompositorNodeVecBlur.*",       "compositing/types/filter/vector_blur.html"),
    # Vector
    ("bpy.types.CompositorNodeCurveVec.*",   "compositing/types/vector/vector_curves.html"),
    ("bpy.types.CompositorNodeMapRange.*",   "compositing/types/vector/map_range.html"),
    ("bpy.types.CompositorNodeMapValue.*",   "compositing/types/vector/map_value.html"),
    ("bpy.types.CompositorNodeNormal.*",     "compositing/types/vector/normal.html"),
    ("bpy.types.CompositorNodeNormalize.*",  "compositing/types/vector/normalize.html"),
    # Matte
    ("bpy.types.CompositorNodeBoxMask.*",        "compositing/types/matte/box_mask.html"),
    ("bpy.types.CompositorNodeChannelMatte.*",   "compositing/types/matte/channel_key.html"),
    ("bpy.types.CompositorNodeChromaMatte.*",    "compositing/types/matte/chroma_key.html"),
    ("bpy.types.CompositorNodeColorMatte.*",     "compositing/types/matte/color_key.html"),
    ("bpy.types.CompositorNodeColorSpill.*",     "compositing/types/matte/color_spill_key.html"),
    ("bpy.types.CompositorNodeDiffMatte.*",      "compositing/types/matte/difference_key.html"),
    ("bpy.types.CompositorNodeDistanceMatte.*",  "compositing/types/matte/difference_key.html"),
    ("bpy.types.CompositorNodeDoubleEdgeMask.*", "compositing/types/matte/double_edge_mask.html"),
    ("bpy.types.CompositorNodeEllipseMask.*",    "compositing/types/matte/ellipse_mask.html"),
    ("bpy.types.CompositorNodeKeying.*",         "compositing/types/matte/keying.html"),
    ("bpy.types.CompositorNodeKeyingScreen.*",   "compositing/types/matte/keying_screen.html"),
    ("bpy.types.CompositorNodeLumaMatte.*",      "compositing/types/matte/luminance_key.html"),
    # Distort
    ("bpy.types.CompositorNodeCrop.*",             "compositing/types/distort/crop.html"),
    ("bpy.types.CompositorNodeDisplace.*",         "compositing/types/distort/displace.html"),
    ("bpy.types.CompositorNodeFlip.*",             "compositing/types/distort/flip.html"),
    ("bpy.types.CompositorNodeLensdist.*",         "compositing/types/distort/lens.html"),
    ("bpy.types.CompositorNodeMapUV.*",            "compositing/types/distort/map_uv.html"),
    ("bpy.types.CompositorNodeMovieDistortion.*",  "compositing/types/distort/movie_distortion.html"),
    ("bpy.types.CompositorNodePlaneTrackDeform.*", "compositing/types/distort/plane_track_deform.html"),
    ("bpy.types.CompositorNodeRotate.*",           "compositing/types/distort/rotate.html"),
    ("bpy.types.CompositorNodeScale.*",            "compositing/types/distort/scale.html"),
    ("bpy.types.CompositorNodeStabilize.*",        "compositing/types/distort/stabilize_2d.html"),
    ("bpy.types.CompositorNodeTransform.*",        "compositing/types/distort/transform.html"),
    ("bpy.types.CompositorNodeTranslate.*",        "compositing/types/distort/translate.html"),
    #Other
    ("bpy.types.CompositorNodeGroup.*", "editors/node_editor/node_groups.html"),
    ("bpy.types.CompositorNode*",       "compositing/types"),  # catch anything else

    ("bpy.types.ColorRamp*", "render/blender_render/materials/properties/ramps.html"),

    # *** ID Subclasses (cont.) Object Data ***
    ("bpy.types.Mesh.*",       "modeling/meshes"),  # catchall, todo - refine
    ("bpy.types.MetaBall.*",   "modeling/metas"),  # catchall, todo - refine
    ("bpy.types.TextCurve.*",  "modeling/texts"),  # catchall, todo - refine
    ("bpy.types.Armature.*",   "rigging/armatures"),  # catchall, todo - refine
    ("bpy.types.Camera.*",     "render/camera"),  # catchall, todo - refine

    ("bpy.types.PointLamp.*",  "render/blender_render/lighting/lamps/point"),  # catchall, todo - refine
    ("bpy.types.AreaLamp.*",   "render/blender_render/lighting/lamps/area"),  # catchall, todo - refine
    ("bpy.types.SpotLamp.*",   "render/blender_render/lighting/lamps/spot"),  # catchall, todo - refine
    ("bpy.types.SunLamp.*",    "render/blender_render/lighting/lamps/sun"),   # catchall, todo - refine
    ("bpy.types.HemiLamp.*",   "render/blender_render/lighting/lamps/hemi.html"),  # catchall, todo - refine
    ("bpy.types.Lamp.*",       "render/blender_render/lighting"),             # catchall, todo - refine

    # --- Animation ---
    ("bpy.types.Keyframe.*",  "animation/actions.html"),
    ("bpy.types.FCurve.*",    "editors/graph_editor/fcurves.html"),

    # --- Rigging ---
    ("bpy.types.Bone.*",      "rigging/armatures/bones.html"),
    ("bpy.types.EditBone.*",  "rigging/armatures/bones.html"),
    ("bpy.types.PoseBone.*",  "rigging/posing"),

    # --- World ---
    ("bpy.types.World.*",     "render/blender_render/world"),

    ("bpy.types.Texture.*",   "render/blender_render/textures"),

    # *** Spaces ***
    ("bpy.types.SpaceView3D.*",  "editors/3dview"),

    # === Operators ===
    # Catch all only for now!
    # *** Window/Screen ***

    ("bpy.ops.action.*",      "animation/actions.html"),
    ("bpy.ops.anim.*",        "animation"),
    ("bpy.ops.armature.*",    "rigging/armatures/"),
    ("bpy.ops.boid.*",        "physics/particles/physics/boids.html"),
    # ("bpy.ops.brush.*",  ""),  # TODO
    ("bpy.ops.buttons.*",     "interface/buttons_and_controls.html"),
    ("bpy.ops.camera.*",      "render/camera"),
    ("bpy.ops.clip.*",        "editors/movie_clip_editor/index.html#movie-clip-editor"),
    ("bpy.ops.cloth.*",       "physics/cloth"),
    ("bpy.ops.console.*",     "editors/python_console.html"),
    ("bpy.ops.constraint.*",  "rigging/constraints"),
    ("bpy.ops.curve.*",       "modeling/curves"),
    ("bpy.ops.dpaint.*",      "physics/dynamic_paint"),
    # ("bpy.ops.ed.*",  ""),           # TODO, this is for internal use only?
    # ("bpy.ops.export_anim.*",  ""),  # TODO
    # ("bpy.ops.export_mesh.*",  ""),  # TODO
    # ("bpy.ops.export_scene.*",  ""), # TODO
    ("bpy.ops.file.*",  ""),
    ("bpy.ops.fluid.*",       "physics/fluid"),
    ("bpy.ops.font.*",        "modeling/texts"),
    ("bpy.ops.gpencil.*",     "interface/grease_pencil/index.html"),
    ("bpy.ops.graph.*",       "editors/graph_editor/fcurves.html"),
    ("bpy.ops.group.*",       "editors/3dview/groups.html"),
    ("bpy.ops.image.*",       "render/blender_render/textures/types/image.html"),
    # ("bpy.ops.import_anim.*",  ""),   # TODO
    # ("bpy.ops.import_curve.*",  ""),  # TODO
    # ("bpy.ops.import_mesh.*",  ""),   # TODO
    # ("bpy.ops.import_scene.*",  ""),  # TODO
    # ("bpy.ops.info.*",  ""),          # TODO
    ("bpy.ops.lamp.*",             "render/blender_render/lighting"),  # --- todo ... all below ---
    # ("bpy.ops.lattice.*",  ""),  # TODO
    ("bpy.ops.logic.*",            "game_engine/logic"),
    ("bpy.ops.marker.*",           "animation/markers.html"),
    ("bpy.ops.mask.*",  "editors/movie_clip_editor/masking.html"),
    ("bpy.ops.material.new",    "render/blender_render/materials/assigning_a_material.html#creating-a-new-material"),
    ("bpy.ops.material.*",      "render/blender_render"),
    ("bpy.ops.mesh.vertices_smooth",      "modeling/meshes/editing/deforming/smooth.html"),
    ("bpy.ops.view3d.edit_mesh_extrude*", "modeling/meshes/editing/duplicating/extrude.html"),
    ("bpy.ops.mesh.subdivide",            "modeling/meshes/editing/subdividing/subdivide.html"),
    ("bpy.ops.mesh.loopcut_slide",        "modeling/meshes/editing/subdividing/loop_subdivide.html"),
    ("bpy.ops.mesh.bridge-edge-loops",    "modeling/meshes/editing/edges.html#bridge-edge-loops"),
    ("bpy.ops.mesh.duplicate_move",       "modeling/meshes/editing/duplicating/duplicate.html"),
    ("bpy.ops.mesh.spin",                 "modeling/meshes/editing/duplicating/spin.html"),
    ("bpy.ops.mesh.screw",                "modeling/meshes/editing/duplicating/screw.html"),
    ("bpy.ops.mesh.knife*",               "modeling/meshes/editing/subdividing/knife_subdivide.html"),
    ("bpy.ops.mesh.bisect",               "modeling/meshes/editing/subdividing/bisect.html"),
    ("bpy.ops.mball.*",                   "modeling/metas"),
    ("bpy.ops.mesh.*",                    "modeling/meshes"),
    ("bpy.ops.nla.*",                     "editors/nla.html"),
    # ("bpy.ops.node.*",  ""),            # TODO
    ("bpy.ops.object.*shape_key*",        "animation/shape_keys.html"),
    ("bpy.ops.object.join_shapes",        "animation/shape_keys.html"),
    ("bpy.ops.object.*",                  "editors/3dview/transform"),
    ("bpy.ops.outliner.*",                "editors/outliner.html"),
    # ("bpy.ops.paint.*",  ""),           # TODO
    ("bpy.ops.particle.*",                "physics/particles"),
    ("bpy.ops.pose.*",                    "rigging/posing"),
    ("bpy.ops.poselib.*",                 "rigging/posing/pose_library.html"),
    # ("bpy.ops.ptcache.*",  ""),         # TODO

    ("bpy.ops.render.play-rendered-anim", "render/output/display.html#animation-playback"),
    ("bpy.ops.render.*",  "render"),      # catchall

    ("bpy.ops.scene.*",                   "data_system/scenes.html"),
    ("bpy.ops.screen.*",                  "interface/window_system"),
    ("bpy.ops.script.*",                  "advanced/scripting"),
    ("bpy.ops.sculpt.*",                  "painting_sculpting/sculpting/index.html"),
    ("bpy.ops.sequencer.*",               "editors/sequencer"),
    # ("bpy.ops.sketch.*",  ""),          # TODO
    ("bpy.ops.sound.*",                   "editors/3dview/objects/types/speaker.html"),
    ("bpy.ops.surface.*",                 "modeling/surfaces"),
    ("bpy.ops.text.*",                    "editors/text_editor.html"),
    ("bpy.ops.texture.*",                 "render/blender_render/textures"),
    ("bpy.ops.time.*",                    "editors/timeline.html"),
    ("bpy.ops.transform.edge_slide",      "modeling/meshes/editing/edges.html#edge-slide"),
    ("bpy.ops.transform.vert_slide",      "modeling/meshes/editing/vertices.html#vertex-slide"),
    ("bpy.ops.transform.shrink_fatten",   "modeling/meshes/editing/deforming/shrink-fatten.html"),
    ("bpy.ops.transform.push_pull",       "modeling/meshes/editing/deforming/push_pull.html"),
    ("bpy.ops.transform.*",               "editors/3dview/transform/transform_control"),
    ("bpy.ops.ui.*",                      "interface"),
    ("bpy.ops.uv.*",                      "editors/uv_image/index.html"),
    # ("bpy.ops.view2d.*",  ""),          # TODO
    ("bpy.ops.view3d.*",                  "editors/3dview/"),
    ("bpy.ops.wm.*",                      "interface/window_system"),
    ("bpy.ops.world.*",                   "render/blender_render/world"),

    # === Tool Settings ===
    ("bpy.types.MeshStatVis.*",           "modeling/meshes/mesh_analysis.html"),
)

# may have 'url_reference_mapping'... etc later