Jump to content

Advice to update a "Tool" Qml plugin file


Go to solution Solved by Cuq,

Recommended Posts

Posted · Advice to update a "Tool" Qml plugin file

Hello,

I'm looking for a code solution to update the "Tool" plugins for the release 5.0 of Cura.  How to specify the right QML file according to the QT release ?  In these plugins.

 

The tool_panel property is specified in the   "__init__.py" file IE : "tool_panel": "TranslateTool.qml",

 

Is it possible to change this property after the init ?

 

Best regards,

 

Cuq

  • Link to post
    Share on other sites

    Posted (edited) · Advice to update a "Tool" Qml plugin file

    As usual with me : it's not clean but it's working ... Any advice for a better  or more elegant solution ?

     

    # Copyright (c) 2022 5axes
    # Initialy Based on the SupportBlocker plugin by Ultimaker B.V., and licensed under LGPLv3 or higher.
    
    VERSION_QT5 = False
    try:
        from PyQt6.QtCore import Qt
    except ImportError:
        # from PyQt5.QtCore import Qt
        VERSION_QT5 = True
        
        
    from . import CustomSupportsCylinder
    
    from UM.i18n import i18nCatalog
    i18n_catalog = i18nCatalog("cura")
    
    def getMetaData():
        if not VERSION_QT5:
            QmlFile="qml_qt6/CustomSupport.qml"
        else:
            QmlFile="qml_qt5/CustomSupport.qml"
        
    
        return {
            "tool": {
                "name": i18n_catalog.i18nc("@label", "Custom Supports Cylinder"),
                "description": i18n_catalog.i18nc("@info:tooltip", "Add 6 types of custom support"),
                "icon": "tool_icon.svg",
                "tool_panel": QmlFile,
                "weight": 8
            }
        }
    
    def register(app):
        return { "tool": CustomSupportsCylinder.CustomSupportsCylinder() }

     

    Edited by Cuq
    • Like 1
    Link to post
    Share on other sites

    Posted · Advice to update a "Tool" Qml plugin file

    If you dislike the unused import, you could use the Cura version instead:

        cura_version = Version(Application.getInstance().getVersion())
    
        tool_panel_path = "resources/qml/MeasureTool.qml"
        if cura_version < Version("5.0.0") and cura_version.getMajor() > 0:
            tool_panel_path = "resources/qml_qt5/MeasureTool.qml"

    But then you need to import UM.Version and UM.Application. Choose your poison.

    (good to see that you have decided to update your plugins afterall)

    • Like 2
    Link to post
    Share on other sites

    Posted · Advice to update a "Tool" Qml plugin file

    As usual @fieldOfView your analyse is very acurate. Yes I feal this PyQt6 import not very elegant. But if there is no other simple solution...  I will use the french expression : Choose between the plague and the cholera ... I will take the plague 

    Thanks for your feedback ... 

     

    And it's not because I update my plugins that I will make them available on the marketplace. I think I'm still waiting for a stable version of Cura 😄

     

  • Link to post
    Share on other sites

    • Solution
    Posted (edited) · Advice to update a "Tool" Qml plugin file

    So the Plague for Cura 5.0:

     

    VERSION_QT5 = False
    try:
        from PyQt6.QtCore import QT_VERSION_STR
    except ImportError:
        VERSION_QT5 = True

     

    Edited by Cuq
    • Like 1
    Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.9 stable released!
        Here comes Cura 5.9 and in this stable release we have lots of material and printer profiles for UltiMaker printers, including the newly released Sketch Sprint. Additionally, scarf seams have been introduced alongside even more print settings and improvements.  Check out the rest of this article to find out the details on all of that and more
          • Like
        • 5 replies
      • Introducing the UltiMaker Factor 4
        We are happy to announce the next evolution in the UltiMaker 3D printer lineup: the UltiMaker Factor 4 industrial-grade 3D printer, designed to take manufacturing to new levels of efficiency and reliability. Factor 4 is an end-to-end 3D printing solution for light industrial applications
          • Heart
          • Thanks
          • Like
        • 4 replies
    ×
    ×
    • Create New...