GeUserArea Tool Tips



  • Hello,
    Is there a tool tip for GeUserArea similar to BitmapButtonCustomGui's BITMAPBUTTON_TOOLTIP? I'd like to use the same tool tip as the rest of the C4D interface.

    ToolTip.png

    Thank you!



  • Hi @blastframe as @PluginStudent pointed it, you should use BFM_GETCURSORINFO.

    Here an example.

    import c4d
    
    
    class UA(c4d.gui.GeUserArea):
        def __init__(self):
            super(UA, self).__init__()
    
        def DrawMsg(self, x1, y1, x2, y2, msg) :
            self.OffScreenOn()
            self.SetClippingRegion(x1, y1, x2, y2)
            self.DrawSetPen(c4d.Vector(1.0, 0, 0))
            self.DrawRectangle(x1, y1, x2, y2)
    
        def GetMinSize(self):
            return 200, 200
    
        def Message(self, msg, result):
            if msg.GetId() == c4d.BFM_GETCURSORINFO:
                result.SetId(c4d.BFM_GETCURSORINFO)
                result.SetInt32(c4d.RESULT_CURSOR, c4d.MOUSE_POINT_HAND)
                result.SetString(c4d.RESULT_BUBBLEHELP_TITLE, "Bubblehelp Title")
                result.SetString(c4d.RESULT_BUBBLEHELP, "This is an example GeUserArea")
                return True
            
            return c4d.gui.GeUserArea.Message(self, msg, result)
    
    
    class ExampleDialog(c4d.gui.GeDialog):
        ID_UA = 10001
    
        def CreateLayout(self):
            self.SetTitle("UserArea Example")
    
            self.ua = UA()
            self.AddUserArea(self.ID_UA, c4d.BFH_LEFT | c4d.BFV_TOP)
            self.AttachUserArea(self.ua, self.ID_UA)
            return True
    
    def main():
        global dlg
        dlg = ExampleDialog()
        dlg.Open(c4d.DLG_TYPE_ASYNC, xpos=-2, ypos=-2, defaultw=400, defaulth=400)
    
    if __name__=='__main__':
        main()
    

    Cheers,
    Maxime.



  • You can react to the message BFM_GETCURSORINFO. See GUI and Interaction Messages Manual



  • Hi @blastframe as @PluginStudent pointed it, you should use BFM_GETCURSORINFO.

    Here an example.

    import c4d
    
    
    class UA(c4d.gui.GeUserArea):
        def __init__(self):
            super(UA, self).__init__()
    
        def DrawMsg(self, x1, y1, x2, y2, msg) :
            self.OffScreenOn()
            self.SetClippingRegion(x1, y1, x2, y2)
            self.DrawSetPen(c4d.Vector(1.0, 0, 0))
            self.DrawRectangle(x1, y1, x2, y2)
    
        def GetMinSize(self):
            return 200, 200
    
        def Message(self, msg, result):
            if msg.GetId() == c4d.BFM_GETCURSORINFO:
                result.SetId(c4d.BFM_GETCURSORINFO)
                result.SetInt32(c4d.RESULT_CURSOR, c4d.MOUSE_POINT_HAND)
                result.SetString(c4d.RESULT_BUBBLEHELP_TITLE, "Bubblehelp Title")
                result.SetString(c4d.RESULT_BUBBLEHELP, "This is an example GeUserArea")
                return True
            
            return c4d.gui.GeUserArea.Message(self, msg, result)
    
    
    class ExampleDialog(c4d.gui.GeDialog):
        ID_UA = 10001
    
        def CreateLayout(self):
            self.SetTitle("UserArea Example")
    
            self.ua = UA()
            self.AddUserArea(self.ID_UA, c4d.BFH_LEFT | c4d.BFV_TOP)
            self.AttachUserArea(self.ua, self.ID_UA)
            return True
    
    def main():
        global dlg
        dlg = ExampleDialog()
        dlg.Open(c4d.DLG_TYPE_ASYNC, xpos=-2, ypos=-2, defaultw=400, defaulth=400)
    
    if __name__=='__main__':
        main()
    

    Cheers,
    Maxime.



  • @m_adam & @PluginStudent Thank you both! This was exactly what I needed. This forum is so so helpful.


Log in to reply