Пример #1
0
    def update_addinfiles(self):
        """Enables/Disables the adding files for different Revit versions."""
        # update active engine
        attachment = user_config.get_current_attachment()
        if attachment:
            all_users = attachment.AttachmentType == \
                PyRevit.PyRevitAttachmentType.AllUsers

            # notify use to restart if engine has changed
            if self.availableEngines.SelectedItem:
                new_engine = self.availableEngines.SelectedItem.engine.Version
                if not self.is_same_version_as_running(new_engine):
                    forms.alert(
                        'Active engine has changed. '
                        'Restart Revit for this change to take effect.')
                # configure the engine on this version
                PyRevit.PyRevitAttachments.Attach(int(HOST_APP.version),
                                                  attachment.Clone, new_engine,
                                                  all_users)

                # now setup the attachments for other versions
                for rvt_ver, checkbox in self._addinfiles_cboxes.items():
                    if checkbox.IsEnabled:
                        if checkbox.IsChecked:
                            PyRevit.PyRevitAttachments.Attach(
                                int(rvt_ver), attachment.Clone, new_engine,
                                all_users)
                        else:
                            PyRevit.PyRevitAttachments.Detach(int(rvt_ver))
        else:
            logger.error('Error determining current attached clone.')
Пример #2
0
def setup_runtime_vars():
    """Setup runtime environment variables with session information."""
    # set pyrevit version
    pyrvt_ver = versionmgr.get_pyrevit_version().get_formatted()
    envvars.set_pyrevit_env_var(PYREVIT_VERSION_ENVVAR, pyrvt_ver)

    # set app version env var
    if HOST_APP.is_newer_than(2017):
        envvars.set_pyrevit_env_var(PYREVIT_APPVERSION_ENVVAR,
                                    HOST_APP.subversion)
    else:
        envvars.set_pyrevit_env_var(PYREVIT_APPVERSION_ENVVAR,
                                    HOST_APP.version)

    # set ironpython engine version env var
    attachment = user_config.get_current_attachment()
    if attachment and attachment.Clone:
        envvars.set_pyrevit_env_var(PYREVIT_IPYVERSION_ENVVAR,
                                    attachment.Engine.Version)

    # set cpython engine version env var
    cpyengine = user_config.get_active_cpython_engine()
    if cpyengine:
        envvars.set_pyrevit_env_var(PYREVIT_CSPYVERSION_ENVVAR,
                                    cpyengine.Version)
Пример #3
0
    def __init__(self, xaml_file_name):
        forms.WPFWindow.__init__(self, xaml_file_name)

        pyrvtabout = about.get_pyrevit_about()

        pyrvt_ver = versionmgr.get_pyrevit_version()
        nice_version = 'v{}'.format(pyrvt_ver.get_formatted())
        short_version = \
            ' v{}'.format(pyrvt_ver.get_formatted(strict=True))

        self.branch_name = self.deployname = None
        # check to see if git repo is valid
        try:
            pyrvt_repo = versionmgr.get_pyrevit_repo()
            self.branch_name = pyrvt_repo.branch
            self.show_element(self.git_commit)
            self.show_element(self.git_branch)
        except Exception as getbranch_ex:
            logger.debug('Error getting branch: %s', getbranch_ex)
            # other wise try to get deployment name
            attachment = user_config.get_current_attachment()
            if attachment:
                try:
                    self.deployname = attachment.Clone.Deployment.Name
                    self.show_element(self.repo_deploy)
                except Exception as getdepl_ex:
                    logger.debug('Error getting depoyment: %s', getdepl_ex)

        # get cli version
        pyrvt_cli_version = 'v' + versionmgr.get_pyrevit_cli_version()
        self.show_element(self.cli_info)
        self.cliversion.Text = pyrvt_cli_version

        self.short_version_info.Text = short_version
        self.pyrevit_subtitle.Text = pyrvtabout.subtitle
        self.version.Text = nice_version
        self.pyrevit_branch.Text = self.branch_name
        self.pyrevit_deploy.Text = '{} deployment'.format(self.deployname)
        cpyver = user_config.get_active_cpython_engine()
        if cpyver:
            self.pyrevit_engine.Text = \
                'Running on IronPython {} (cpython {})'\
                    .format(sys.version.split('(')[0].strip(),
                            '.'.join(list(str(cpyver.Version))))

        rocketmodetext = \
            'Rocket-mode {}' \
            .format('enabled' if __cachedengine__ else 'disabled')
        self.pyrevit_rmode.Text = rocketmodetext
        if not __cachedengine__:
            self.hide_element(self.rmode_icon)

        self.madein_tb.Text = 'in {}'.format(pyrvtabout.madein)
        self.copyright_tb.Text = pyrvtabout.copyright
Пример #4
0
    def _setup_engines(self):
        attachment = user_config.get_current_attachment()
        if attachment and attachment.Clone:
            engine_cfgs = \
                [PyRevitEngineConfig(x) for x in attachment.Clone.GetEngines()]
            engine_cfgs = \
                sorted(engine_cfgs,
                       key=lambda x: x.engine.Version, reverse=True)

            # add engines to ui
            self.availableEngines.ItemsSource = \
                [x for x in engine_cfgs if x.engine.Runtime]
            self.cpythonEngines.ItemsSource = \
                [x for x in engine_cfgs if not x.engine.Runtime]

            # now select the current runtime engine
            for engine_cfg in self.availableEngines.ItemsSource:
                if engine_cfg.engine.Version == int(EXEC_PARAMS.engine_ver):
                    self.availableEngines.SelectedItem = engine_cfg
                    break

            # if addin-file is not writable, lock changing of the engine
            if attachment.IsReadOnly():
                self.availableEngines.IsEnabled = False

            # now select the current runtime engine
            self.active_cpyengine = user_config.get_active_cpython_engine()
            if self.active_cpyengine:
                for engine_cfg in self.cpythonEngines.ItemsSource:
                    if engine_cfg.engine.Version == \
                            self.active_cpyengine.Version:
                        self.cpythonEngines.SelectedItem = engine_cfg
                        break
            else:
                logger.debug('Failed getting active cpython engine.')
                self.cpythonEngines.IsEnabled = False
        else:
            logger.error('Error determining current attached clone.')
            self.disable_element(self.availableEngines)
Пример #5
0
def setup_runtime_vars():
    """Setup runtime environment variables with session information."""
    # set pyrevit version
    pyrvt_ver = versionmgr.get_pyrevit_version().get_formatted()
    envvars.set_pyrevit_env_var(envvars.VERSION_ENVVAR, pyrvt_ver)

    # set app version env var
    if HOST_APP.is_newer_than(2017):
        envvars.set_pyrevit_env_var(envvars.APPVERSION_ENVVAR,
                                    HOST_APP.subversion)
    else:
        envvars.set_pyrevit_env_var(envvars.APPVERSION_ENVVAR,
                                    HOST_APP.version)

    # set ironpython engine version env var
    attachment = user_config.get_current_attachment()
    if attachment and attachment.Clone:
        envvars.set_pyrevit_env_var(envvars.CLONENAME_ENVVAR,
                                    attachment.Clone.Name)
        envvars.set_pyrevit_env_var(envvars.IPYVERSION_ENVVAR,
                                    str(attachment.Engine.Version))
    else:
        mlogger.debug('Can not determine attachment.')
        envvars.set_pyrevit_env_var(envvars.CLONENAME_ENVVAR, "Unknown")
        envvars.set_pyrevit_env_var(envvars.IPYVERSION_ENVVAR, "0.0.0")

    # set cpython engine version env var
    cpyengine = user_config.get_active_cpython_engine()
    if cpyengine:
        envvars.set_pyrevit_env_var(envvars.CPYVERSION_ENVVAR,
                                    str(cpyengine.Version))
    else:
        envvars.set_pyrevit_env_var(envvars.CPYVERSION_ENVVAR, "0.0.0")

    # set a list of important assemblies
    # this is required for dotnet script execution
    set_loaded_pyrevit_referenced_modules(runtime.get_references())