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.')
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)
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
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)
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())