Dynamic Controls in Attribute Manager?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 24/03/2003 at 16:31, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   8.1 
    Platform:   Windows  ;   
    Language(s) :     C++  ;

    ---------
    Hi again;

    here's a tricky problem. As nice as the "descriptions" and the automatic link between containers and the attribute manager are, there is one thing I haven't yet found out.

    Simple enough: When I check a checkbox in the attribute manager, I want another field to become active/inactive.

    With dialogs, this was easy enough: since I could intercept the messages and had access to the controls, I could update the controls whenever certain events came by.

    With the attribute manager, this is seemingly impossible (seemingly, because e.g. the Light attribute dialog does exactly that). The container description is passed to the plugin registration method as a string, and the rest happens automatically, including the GUI generation. I do not have any dialog or other GUI class to handle. The connection between the GUI that is displayed in the attribute manager and the container description is kept completely invisible.

    Now, I can still intercept messages, but the only example in the SDK I found handles only button messages. The same code won't work for checkboxes (there isn't even a message constant that looks like what I am searching for...). And even if it did, I would still have the problem of accessing the controls for enabling and disabling.

    So, here are the questions:
    - What class (or classes) are responsible for the GUI that is displayed in the attribute manager?
    - How do these classes connect with the plugin that was registered with the container/description?
    - How can I access these classes from the plugin?
    - How can I influence these classes' behaviour, subclass them for special handling, and link subclasses to the plugin?

    A few pointers to the correct methods would be appreciated...

    Thanks :-)
    -- Cairyn --



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 25/03/2003 at 11:01, xxxxxxxx wrote:

    This one is easy. Just overload NodeData::GetDEnabling() and return FALSE if the element should be disabled. This function is called often enough, for example each time the user clicks a checkbox.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 26/03/2003 at 13:34, xxxxxxxx wrote:

    E. Works fine so far. The class DescID seems to be missing in my helpfile(?), but I found the necessary examples for access to the actual LONG ID in the SDK plugins.

    So, I assume the attribute manager's dialog is not directly accessible or overrideable like a standard dialog.

    Thanks,
    -- Cairyn --


Log in to reply