Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Register
    • Login

    Object-level "Show Help" (CMD+F1) for ObjectData plugins?

    Scheduled Pinned Locked Moved Cinema 4D SDK
    macos20252026python
    2 Posts 2 Posters 13 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • lasselauchL Online
      lasselauch
      last edited by

      I'm using RegisterPluginHelpCallback to provide context-sensitive help for my ObjectData plugins. It works when CMD+F1 is triggered on parameters in the Attribute Manager.

      However, I'd like to also handle help requests on the object itself — for example:

      • Right-click → "Show Help" on the object icon/header in the Attribute Manager
      • CMD+F1 on the object in the Object Manager

      Does the help callback fire in this case (perhaps with empty group/property)? Or is there a separate mechanism — like a
      message in ObjectData.Message() — that I should be handling?


      Current implementation (works for parameters):

      def my_help_callback(opType, baseType, group, property):
          if opType in MY_HELP_MAP:
              open_help_page(MY_HELP_MAP[opType])
              return True
          return False
      
      c4d.plugins.RegisterPluginHelpCallback(PLUGIN_ID, my_help_callback)
      

      I've checked ObjectData.Message() for help-related messages (like MSG_DESCRIPTION_GETHELP) but haven't found a reliable trigger for object-level help.

      Any guidance appreciated!

      Thanks & Cheers,
      Lasse

      ferdinandF 1 Reply Last reply Reply Quote 0
      • ferdinandF Offline
        ferdinand @lasselauch
        last edited by ferdinand

        Hey @lasselauch,

        Thank you for reaching out to us. I am not 100% sure that I am understanding you correctly. You basically want to hook into this menu entry, right?

        650df545-8d6c-4444-a525-a4fe70bee750-image.png

        That is not possible at the moment. Because what this thing does, is gather information from the description of the selected entity or the active dialog and with that data calls cinema::OpenHelpBrowser (at least the backend version of that function). This is not even a dedicated command, just a switch case within the abstracted dialog menu handling. So, this is custom built for help.maxon.net.

        It would not be impossible to isolate this so that there could be either a dedicated plugin hook for this or it somehow reusing the existing RegisterPluginHelpDelegate (the C++ variant of the Python hook you used). But that would be quite a bit of work, and you would also have to answer if that justifies the overhead of calling all hooks each time a user presses that button/menu entry (but you could also argue that the overhead of RegisterPluginHelpDelegate is even worse).

        I can see the allure of "Show Help" working for third parties, but I doubt many people would use it and the current system is very Maxon centric which are not good arguments for going for this. On top of this, in theory, it would have to support both NodeData entities and dialogs (because the menu entry works for both). We could only support nodes, but there I would just recommend the proven and tested workflow of including a base description at the end of your nodes, which places there a bitmap icon branding that is clickable or just a button. I talked a bit in the all new Licensing Manual videos and code about this workflow.

        edit: An alternative could be to offer a hook into OpenHelpBrowser but there you probably then run into problems with dialogs as the back end function splits into two signatures (which do not exist in the frontend). Also solvable but again extra work that can hardly be justified but the few users this will have.

        I am not strictly against adding such hook, but I currently do not see a good cost/effect ratio unless this thread is flooded with third party developers stating otherwise.

        Cheers,
        Ferdinand

        MAXON SDK Specialist
        developers.maxon.net

        1 Reply Last reply Reply Quote 0
        • First post
          Last post