예제 #1
0
파일: script.py 프로젝트: tatlin/pyRevit
    def _save_uiux(self):
        request_reload = False
        current_applocale = applocales.get_current_applocale()
        if self.applocales_cb.SelectedItem:
            for applocale in applocales.APP_LOCALES:
                if str(applocale) == self.applocales_cb.SelectedItem:
                    user_config.user_locale = applocale.locale_code
                    if current_applocale != applocale \
                            and not self.reload_requested:
                        request_reload = forms.alert(
                            'UI language has changed. Reloading pyRevit is '
                            'required for this change to take effect. Do you '
                            'want to reload now?',
                            yes=True,
                            no=True,
                        )
        # colorize docs
        user_config.colorize_docs = self.colordocs_cb.IsChecked
        revit.ui.toggle_doc_colorizer(user_config.colorize_docs)
        # output settings
        output.set_stylesheet(self.cur_stylesheet_tb.Text)
        if self.cur_stylesheet_tb.Text != output.get_default_stylesheet():
            user_config.output_stylesheet = self.cur_stylesheet_tb.Text

        return request_reload
예제 #2
0
    def _setup_uiux(self):
        applocale = applocales.get_current_applocale()
        sorted_applocales = \
            sorted(applocales.APP_LOCALES, key=lambda x: str(x.lang_type))
        self.applocales_cb.ItemsSource = [str(x) for x in sorted_applocales]
        self.applocales_cb.SelectedItem = str(applocale)

        # colorize docs
        self.colordocs_cb.IsChecked = user_config.colorize_docs

        # tab style color themes
        theme = tabs.get_tabcoloring_theme(user_config)
        self.tab_theme = theme
        self.filtercolor_counter = 1

        self.doc_ordercolor_lb.ItemsSource = theme.TabOrderRules
        self.doc_filtercolor_lb.ItemsSource = theme.TabFilterRules

        # tab styles (must set after the color themes)
        self.project_tabstyle_cb.ItemsSource = theme.AvailableStyles
        self.project_tabstyle_cb.SelectedItem = theme.TabStyle

        self.family_tabstyle_cb.ItemsSource = theme.AvailableStyles
        self.family_tabstyle_cb.SelectedItem = theme.FamilyTabStyle

        self.sortdocs_cb.IsChecked = theme.SortDocTabs

        # output settings
        self.cur_stylesheet_tb.Text = output.get_stylesheet()
        # pyrevit gui settings
        self.loadtooltipex_cb.IsChecked = user_config.tooltip_debug_info
예제 #3
0
    def _save_uiux(self):
        request_reload = False
        current_applocale = applocales.get_current_applocale()
        if self.applocales_cb.SelectedItem:
            for applocale in applocales.APP_LOCALES:
                if str(applocale) == self.applocales_cb.SelectedItem:
                    user_config.user_locale = applocale.locale_code
                    if current_applocale != applocale \
                            and not self.reload_requested:
                        request_reload = forms.alert(
                            'UI language has changed. Reloading pyRevit is '
                            'required for this change to take effect. Do you '
                            'want to reload now?', yes=True, no=True)
        # colorize docs
        user_config.colorize_docs = self.colordocs_cb.IsChecked

        # save colorize theme
        tabs.set_tabcoloring_theme(user_config, self.tab_theme)
        tabs.init_doc_colorizer(user_config)

        # output settings
        output.set_stylesheet(self.cur_stylesheet_tb.Text)
        if self.cur_stylesheet_tb.Text != output.get_default_stylesheet():
            user_config.output_stylesheet = self.cur_stylesheet_tb.Text
        # pyrevit gui settings
        if self.loadtooltipex_cb.IsChecked != user_config.tooltip_debug_info \
                and not self.reload_requested:
            request_reload = forms.alert(
                'pyRevit UI Configuration has changed. Reloading pyRevit is '
                'required for this change to take effect. Do you '
                'want to reload now?', yes=True, no=True)
        user_config.tooltip_debug_info = self.loadtooltipex_cb.IsChecked

        return request_reload
예제 #4
0
파일: script.py 프로젝트: tatlin/pyRevit
 def _setup_uiux(self):
     applocale = applocales.get_current_applocale()
     sorted_applocales = \
         sorted(applocales.APP_LOCALES, key=lambda x: str(x.lang_type))
     self.applocales_cb.ItemsSource = [str(x) for x in sorted_applocales]
     self.applocales_cb.SelectedItem = str(applocale)
     # colorize docs
     self.colordocs_cb.IsChecked = user_config.colorize_docs
     # output settings
     self.cur_stylesheet_tb.Text = output.get_stylesheet()
예제 #5
0
def _new_session():
    """
    Get all installed extensions (UI extension only) and creates an assembly,
    and a ui for each.

    Returns:
        None
    """

    assembled_exts = []
    # get all installed ui extensions
    for ui_ext in extensionmgr.get_installed_ui_extensions():
        # configure extension components for metadata
        # e.g. liquid templates like {{author}}
        ui_ext.configure()

        # collect all module references from extensions
        ui_ext_modules = ui_ext.get_all_modules()
        # make sure they are all loaded
        assmutils.load_asm_files(ui_ext_modules)
        # and update env information
        sessioninfo.update_loaded_pyrevit_referenced_modules(ui_ext_modules)

        # create a dll assembly and get assembly info
        ext_asm_info = asmmaker.create_assembly(ui_ext)
        if not ext_asm_info:
            mlogger.critical('Failed to create assembly for: %s', ui_ext)
            continue
        else:
            mlogger.info('Extension assembly created: %s', ui_ext.name)

        assembled_exts.append(
            AssembledExtension(ext=ui_ext, assm=ext_asm_info)
        )

    # add names of the created assemblies to the session info
    sessioninfo.set_loaded_pyrevit_assemblies(
        [x.assm.name for x in assembled_exts]
    )

    # run startup scripts for this ui extension, if any
    for assm_ext in assembled_exts:
        if assm_ext.ext.startup_script:
            # build syspaths for the startup script
            sys_paths = [assm_ext.ext.directory]
            if assm_ext.ext.library_path:
                sys_paths.insert(0, assm_ext.ext.library_path)

            mlogger.info('Running startup tasks for %s', assm_ext.ext.name)
            mlogger.debug('Executing startup script for extension: %s',
                          assm_ext.ext.name)

            # now run
            execute_extension_startup_script(
                assm_ext.ext.startup_script,
                assm_ext.ext.name,
                sys_paths=sys_paths
                )

    # register extension hooks
    for assm_ext in assembled_exts:
        hooks.register_hooks(assm_ext.ext)

    # update/create ui (needs the assembly to link button actions
    # to commands saved in the dll)
    for assm_ext in assembled_exts:
        uimaker.update_pyrevit_ui(
            assm_ext.ext,
            assm_ext.assm,
            user_config.load_beta
        )
        mlogger.info('UI created for extension: %s', assm_ext.ext.name)

    # re-sort the ui elements
    for assm_ext in assembled_exts:
        uimaker.sort_pyrevit_ui(assm_ext.ext)

    # cleanup existing UI. This is primarily for cleanups after reloading
    uimaker.cleanup_pyrevit_ui()

    # reflow the ui if requested, depending on the language direction
    if user_config.respect_language_direction:
        current_applocale = applocales.get_current_applocale()
        uimaker.reflow_pyrevit_ui(direction=current_applocale.lang_dir)
    else:
        uimaker.reflow_pyrevit_ui()