Exemple #1
0
def install_locally_required_files():
    source_share_folder = resources.get_data_file_path()
    if not source_share_folder:
        logger.warning(
            "Cannot find repository required for installation of icons and gtksourceview styles"
        )

    for folder in ["gtksourceview-3.0", "icons"]:
        try:
            logger.info("Copying '{}' files...".format(folder))
            copy_tree(join(source_share_folder, folder),
                      join(resources.xdg_user_data_folder, folder),
                      update=1)
        except IOError as e:
            logger.error("Could not copy '{}' files: {}".format(
                folder, str(e)))

    if is_custom_design_enabled():
        try:
            logger.info(
                "Copying custom design files '{}' files...".format(folder))
            copy_tree(
                global_design_config.get_config_value("SOURCE_VIEW_FOLDER"),
                join(resources.xdg_user_data_folder, "gtksourceview-3.0"),
                update=1)
            copy_tree(global_design_config.get_config_value("ICONS_FOLDER"),
                      join(resources.xdg_user_data_folder, "icons"),
                      update=1)
        except IOError as e:
            logger.error("Could not copy '{}' files: {}".format(
                folder, str(e)))
Exemple #2
0
def install_fonts(restart=False):
    # do not import from rafcon.gui.constants, as this script can be used standalone
    font_names_to_be_installed = [
        "SourceSansPro", "FontAwesome5Free", "RAFCON"
    ]

    user_otf_fonts_folder = join(resources.xdg_user_data_folder, "fonts")

    font_installed = False
    try:
        for font_name in font_names_to_be_installed:
            # A font is a folder one or more font faces
            rel_font_folder = join("type1", font_name)
            fonts_folder = resources.get_data_file_path(
                "fonts", rel_font_folder)
            num_faces_to_be_installed = len([
                name for name in os.listdir(fonts_folder)
                if name.endswith(".otf")
            ])
            num_faces_installed = installed_font_faces_for_font(font_name)

            if num_faces_to_be_installed <= num_faces_installed:
                logger.debug("Font '{0}' already installed".format(font_name))
                continue

            specific_user_otf_fonts_folder = join(user_otf_fonts_folder,
                                                  rel_font_folder)
            logger.info("Installing font '{0}' to {1}".format(
                font_name, specific_user_otf_fonts_folder))
            copy_tree(fonts_folder, specific_user_otf_fonts_folder, update=1)
            font_installed = True
    except IOError as e:
        logger.error("Could not install fonts, IOError: {}".format(e))
        return

    if font_installed:
        logger.info("Running font detection ...")
        if not update_font_cache(user_otf_fonts_folder):
            logger.warning(
                "Could not run font detection using 'fc-cache'. RAFCON might not find the correct fonts."
            )
        if restart:
            python = sys.executable
            environ = dict(**os.environ)
            # Passing this to the new RAFCON environment will prevent further checks and thus restarts
            environ["RAFCON_CHECK_INSTALLATION"] = "False"
            args_and_env = list(sys.argv)
            args_and_env.append(environ)
            logger.info("Restarting RAFCON ...")
            os.execle(python, python, *args_and_env)
Exemple #3
0
def install_locally_required_files():
    source_share_folder = resources.get_data_file_path()
    if not source_share_folder:
        logger.warning(
            "Cannot find repository required for installation of icons and gtksourceview styles"
        )

    for folder in ["gtksourceview-3.0", "icons"]:
        try:
            logger.info("Copying '{}' files...".format(folder))
            copy_tree(join(source_share_folder, folder),
                      join(resources.xdg_user_data_folder, folder),
                      update=1)
        except IOError as e:
            logger.error("Could not copy '{}' files: {}".format(
                folder, str(e)))
Exemple #4
0
def setup_environment():
    """Ensures that the environmental variable RAFCON_LIB_PATH is existent
    """
    # The RAFCON_LIB_PATH points to a path with common RAFCON libraries
    # If the env variable is not set, we have to determine it.
    if not os.environ.get('RAFCON_LIB_PATH', None):
        rafcon_library_path = resources.get_data_file_path("rafcon", "libraries")
        if rafcon_library_path:
            os.environ['RAFCON_LIB_PATH'] = rafcon_library_path
        else:
            logger.warning(
                "Could not find root directory of RAFCON libraries. Please specify manually using the "
                "env var RAFCON_LIB_PATH")

    # Install dummy _ builtin function in case i18.setup_l10n() is not called
    import builtins as builtins23
    if "_" not in builtins23.__dict__:
        builtins23.__dict__["_"] = lambda s: s
Exemple #5
0
 def get_theme_path(self):
     return get_data_file_path("themes", "RAFCON")