예제 #1
0
from camera import Camera, CAMERAS, decimations
from geometry import quantize_location
from graphics import plot_stylus_camera, plot_corners, plot_hotspots, update_display
from parameters import *
from UI import *
from smoothing import Smoothing
import pygame
from pygame.locals import *

#############################################################
camera = CAMERAS[which_camera]
decimation = decimations[which_camera] #decimation factor for showing image

camera_object = Camera(camera)
marker_object = Markers()
stylus_object = Stylus(which_stylus, stylus_length, camera_object.mtx, camera_object.dist)
print('Stylus:', which_stylus)
smoothing_object = Smoothing()

wb, sheet, board_parameters, hotspots, labels, labels_secondary = load_object(object_path+object_fname)
sound_object = Sounds(object_path, labels, labels_secondary)

cap = cv2.VideoCapture(int_or_ext)	
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,camera_object.h) #set camera image height
cap.set(cv2.CAP_PROP_FRAME_WIDTH,camera_object.w) #set camera image width
cap.set(cv2.CAP_PROP_FOCUS,0) #set focus #5 often good for smaller objects and nearer camera
print('Image height, width:', camera_object.h, camera_object.w)

cnt = 0
timestamp0, next_scheduled_ambient_sound = time.time(), 0.
pose_known = False
예제 #2
0
def build_files(outdir):
    """Build the files!"""
    # Make sure there is actually a configuration file
    config_file_dir = os.path.join(cwd, "config.py")
    if not os.path.exists(config_file_dir):
        sys.exit(
            "There dosen't seem to be a configuration file. Have you run the init command?"
        )
    else:
        sys.path.insert(0, cwd)
        try:
            from config import website_name, website_description, website_language, home_page_list
        except:
            sys.exit(
                "ERROR: Some of the crucial configuration values could not be found! Maybe your config.py is too old. Run 'blended init' to fix."
            )
        try:
            from config import website_description_long, website_license, website_url, author_name, author_bio, plugins, minify_css, minify_js, custom_variables
        except:
            website_description_long = ""
            website_license = ""
            website_url = ""
            author_name = ""
            author_bio = ""
            plugins = []
            custom_variables = {}
            minify_css = False
            minify_js = False
            print(
                "WARNING: Some of the optional configuration values could not be found! Maybe your config.py is too old. Run 'blended init' to fix.\n"
            )

    # Create the build folder
    build_dir = os.path.join(cwd, outdir)
    if "." not in outdir and ".." not in outdir and "..." not in outdir and "...." not in outdir and "....." not in outdir:
        replace_folder(build_dir)

    # Make sure there is actually a header template file
    header_file_dir = os.path.join(cwd, "templates", "header.html")
    if not os.path.exists(header_file_dir):
        sys.exit(
            "There dosen't seem to be a header template file. You need one to generate."
        )

    # Make sure there is actually a footer template file
    footer_file_dir = os.path.join(cwd, "templates", "footer.html")
    if not os.path.exists(footer_file_dir):
        sys.exit(
            "There dosen't seem to be a footer template file. You need one to generate."
        )

    # Open the header and footer files for reading
    header_file = open(header_file_dir, "r")
    footer_file = open(footer_file_dir, "r")

    # Create the HTML page listing
    page_list_item_file = os.path.join(cwd, "templates", "page_list_item.html")
    if not os.path.exists(page_list_item_file):
        page_list = '<ul class="page-list">\n'
        for root, dirs, files in os.walk(os.path.join(cwd, "content")):
            for filename in files:
                top = os.path.dirname(os.path.join(root, filename))
                top2 = top.replace(os.path.join(cwd, "content"), "", 1)
                if platform != "win32":
                    subfolder = top2.replace("/", "", 1)
                else:
                    subfolder = top2.replace("\\", "", 1)

                if subfolder == "":
                    subfolder_link = ""
                else:
                    subfolder_link = subfolder + "/"
                file_modified = time.ctime(
                    os.path.getmtime(os.path.join(root, filename)))
                newFilename = get_html_filename(filename)
                newFilename2 = get_html_clear_filename(filename)
                page_list = page_list + '<li class="page-list-item"><a href="' + subfolder_link + newFilename + \
                    '">' + newFilename2 + '</a><span class="page-list-item-time"> - ' + \
                    str(file_modified) + '</span></li>\n'
        page_list = page_list + '</ul>'
    else:
        with open(page_list_item_file, 'r') as f:
            page_list_item = f.read()

        page_list = ""
        for root, dirs, files in os.walk(os.path.join(cwd, "content")):
            dirs[:] = [d for d in dirs if "_" not in d]
            for filename in files:
                p_content = convert_text(os.path.join(root, filename))
                top = os.path.dirname(os.path.join(root, filename))
                top2 = top.replace(os.path.join(cwd, "content"), "", 1)
                if platform != "win32":
                    subfolder = top2.replace("/", "", 1)
                else:
                    subfolder = top2.replace("\\", "", 1)

                if subfolder == "":
                    subfolder_link = ""
                else:
                    subfolder_link = subfolder + "/"
                file_modified = time.ctime(
                    os.path.getmtime(os.path.join(root, filename)))
                file_modified_day = str(
                    datetime.strptime(file_modified,
                                      "%a %b %d %H:%M:%S %Y"))[8:10]
                file_modified_year = str(
                    datetime.strptime(file_modified,
                                      "%a %b %d %H:%M:%S %Y"))[:4]
                file_modified_month = str(
                    datetime.strptime(file_modified,
                                      "%a %b %d %H:%M:%S %Y"))[5:7]
                month_name = calendar.month_name[int(file_modified_month)]
                newFilename = get_html_filename(filename)
                newFilename2 = get_html_clear_filename(filename)

                page_list = page_list + page_list_item.replace(
                    "{path}", subfolder_link + newFilename).replace(
                        "{name}", newFilename2).replace(
                            "{date}", str(file_modified)).replace(
                                "{content}", p_content).replace(
                                    "{content_short}", p_content[:250] + "..."
                                ).replace("{day}", file_modified_day).replace(
                                    "{month}", file_modified_month).replace(
                                        "{month_name}", month_name).replace(
                                            "{year}", file_modified_year)

    if home_page_list == "yes" or home_page_list:
        # Open the home page file (index.html) for writing
        home_working_file = open(os.path.join(cwd, outdir, "index.html"), "w")

        home_working_file.write(header_file.read())

        # Make sure there is actually a home page template file
        home_templ_dir = os.path.join(cwd, "templates", "home_page.html")
        if os.path.exists(home_templ_dir):
            home_templ_file = open(home_templ_dir, "r")
            home_working_file.write(home_templ_file.read())
        else:
            print(
                "\nNo home page template file found. Writing page list to index.html"
            )
            home_working_file.write(page_list)

        home_working_file.write(footer_file.read())

        home_working_file.close()

    for root, dirs, files in os.walk(os.path.join(cwd, "content")):
        dirs[:] = [d for d in dirs if "_" not in d]
        for filename in files:
            if not filename.startswith("_"):
                header_file = open(header_file_dir, "r")
                footer_file = open(footer_file_dir, "r")
                newFilename = get_html_filename(filename)

                top = os.path.dirname(os.path.join(root, filename))
                top2 = top.replace(os.path.join(cwd, "content"), "", 1)
                if platform != "win32":
                    subfolder = top2.replace("/", "", 1)
                else:
                    subfolder = top2.replace("\\", "", 1)

                if subfolder == "":
                    currents_working_file = open(
                        os.path.join(cwd, outdir, newFilename), "w")
                else:
                    create_folder(os.path.join(cwd, outdir, subfolder))
                    currents_working_file = open(
                        os.path.join(cwd, outdir, subfolder, newFilename), "w")

                # Write the header
                currents_working_file.write(header_file.read())

                text_cont1 = convert_text(os.path.join(root, filename))

                if "+++++" in text_cont1.splitlines()[1]:
                    page_template_file = text_cont1.splitlines()[0]
                    text_cont1 = text_cont1.replace(text_cont1.splitlines()[0],
                                                    "")
                    text_cont1 = text_cont1.replace(text_cont1.splitlines()[1],
                                                    "")
                else:
                    page_template_file = "content_page"

                # Write the text content into the content template and onto the
                # build file
                content_templ_dir = os.path.join(cwd, "templates",
                                                 page_template_file + ".html")
                if os.path.exists(content_templ_dir):
                    content_templ_file = open(content_templ_dir, "r")
                    content_templ_file1 = content_templ_file.read()
                    content_templ_file2 = content_templ_file1.replace(
                        "{page_content}", text_cont1)
                    currents_working_file.write(content_templ_file2)
                else:
                    currents_working_file.write(text_cont1)

                # Write the footer to the build file
                currents_working_file.write("\n" + footer_file.read())

                # Close the build file
                currents_working_file.close()

    # Find all the nav(something) templates in the `templates` folder and
    # Read their content to the dict
    navs = {}

    for file in os.listdir(os.path.join(cwd, "templates")):
        if "nav" in file:
            nav_cont = open(os.path.join(cwd, "templates", file), "r")
            navs[file.replace(".html", "")] = nav_cont.read()
            nav_cont.close()

    forbidden_dirs = set(["assets", "templates"])
    blended_version_message = "Built with Blended v" + \
        str(app_version)
    build_date = str(datetime.now().date())
    build_time = str(datetime.now().time())
    build_datetime = str(datetime.now())

    # Replace global variables such as site name and language
    for root, dirs, files in os.walk(os.path.join(cwd, outdir)):
        dirs[:] = [d for d in dirs if d not in forbidden_dirs]
        for filename in files:
            if filename != "config.pyc" and filename != "config.py":
                newFilename = get_html_clear_filename(filename)
                page_file = filename.replace(".html", "")
                page_folder = os.path.basename(
                    os.path.dirname(os.path.join(root, filename))).replace(
                        "-", "").replace("_", "").title()
                page_folder_orig = os.path.basename(
                    os.path.dirname(os.path.join(root, filename)))
                top = os.path.dirname(os.path.join(root, filename))
                top2 = top.replace(os.path.join(cwd, outdir), "", 1)
                if platform != "win32":
                    subfolder = top2.replace("/", "", 1)
                else:
                    subfolder = top2.replace("\\", "", 1)
                if subfolder == "":
                    subfolder_folder = os.path.join(cwd, outdir, filename)
                else:
                    subfolder_folder = os.path.join(cwd, outdir, subfolder,
                                                    filename)
                file_modified = time.ctime(
                    os.path.getmtime(os.path.join(root, filename)))
                file_modified_day = str(
                    datetime.strptime(file_modified,
                                      "%a %b %d %H:%M:%S %Y"))[8:10]
                file_modified_year = str(
                    datetime.strptime(file_modified,
                                      "%a %b %d %H:%M:%S %Y"))[:4]
                file_modified_month = str(
                    datetime.strptime(file_modified,
                                      "%a %b %d %H:%M:%S %Y"))[5:7]
                month_name = calendar.month_name[int(file_modified_month)]

                # The Loop!
                for line in fileinput.input(subfolder_folder, inplace=1):
                    for var in custom_variables:
                        line = line.replace("{" + var + "}",
                                            custom_variables[var])
                    if len(plugins) != 0:
                        for i in range(len(plugins)):
                            if sys.version_info[0] < 2:
                                main = importlib.import_module(plugins[i])
                            elif sys.version_info[0] < 3:
                                main = __import__(plugins[i])
                            content = main.main()
                            line = line.replace("{" + plugins[i] + "}",
                                                content)
                    if "{nav" in line:
                        navname = line.split("{")[1].split("}")[0]
                        line = line.replace(
                            "{" + navname + "}",
                            navs[(line.split("{"))[1].split("}")[0]])
                    line = line.replace("{website_description}",
                                        website_description)
                    line = line.replace("{website_description_long}",
                                        website_description_long)
                    line = line.replace("{website_license}", website_license)
                    line = line.replace("{website_language}", website_language)
                    line = line.replace("{website_url}", website_url)
                    line = line.replace("{author_name}", author_name)
                    line = line.replace("{author_bio}", author_bio)
                    line = line.replace("{random_number}",
                                        str(randint(0, 100000000)))
                    line = line.replace("{build_date}", build_date)
                    line = line.replace("{build_time}", build_time)
                    line = line.replace("{build_datetime}", build_datetime)
                    line = line.replace("{page_list}", page_list)
                    line = line.replace("{page_name}", newFilename)
                    line = line.replace("{page_filename}", page_file)
                    line = line.replace("{page_file}", filename)
                    line = line.replace("{" + filename + "_active}", "active")
                    if page_folder != outdir.title():
                        line = line.replace("{page_folder}", page_folder)
                    else:
                        line = line.replace("{page_folder}", "")
                    if page_folder_orig != outdir:
                        line = line.replace("{page_folder_orig}",
                                            page_folder_orig)
                    else:
                        line = line.replace("{page_folder_orig}", "")
                    line = line.replace("{page_date}", str(file_modified))
                    line = line.replace("{page_day}", str(file_modified_day))
                    line = line.replace("{page_year}", str(file_modified_year))
                    line = line.replace("{page_month}",
                                        str(file_modified_month))
                    line = line.replace("{page_month_name}", str(month_name))
                    line = line.replace("{blended_version}", str(app_version))
                    line = line.replace("{blended_version_message}",
                                        blended_version_message)
                    line = line.replace("{website_name}", website_name)
                    top = os.path.join(cwd, outdir)
                    startinglevel = top.count(os.sep)
                    relative_path = ""
                    level = root.count(os.sep) - startinglevel
                    for i in range(level):
                        relative_path = relative_path + "../"
                    line = line.replace("{relative_root}", relative_path)
                    print(line.rstrip('\n'))
                fileinput.close()

    # Copy the asset folder to the build folder
    if os.path.exists(os.path.join(cwd, "templates", "assets")):
        if os.path.exists(os.path.join(cwd, outdir, "assets")):
            shutil.rmtree(os.path.join(cwd, outdir, "assets"))
        shutil.copytree(os.path.join(cwd, "templates", "assets"),
                        os.path.join(cwd, outdir, "assets"))

    for root, dirs, files in os.walk(os.path.join(cwd, outdir, "assets")):
        for file in files:
            if not file.startswith("_"):
                if (file.endswith(".sass")) or (file.endswith(".scss")):
                    sass_text = open(os.path.join(root, file)).read()
                    text_file = open(os.path.join(root, file[:-4] + "css"),
                                     "w")
                    if sass_text != "":
                        text_file.write(sass.compile(string=sass_text))
                    else:
                        print(file + " is empty! Not compiling Sass.")
                    text_file.close()
                if file.endswith(".less"):
                    less_text = open(os.path.join(root, file)).read()
                    text_file = open(os.path.join(root, file[:-4] + "css"),
                                     "w")
                    if less_text != "":
                        text_file.write(lesscpy.compile(StringIO(less_text)))
                    else:
                        print(file + " is empty! Not compiling Less.")
                    text_file.close()
                if file.endswith(".styl"):
                    try:
                        styl_text = open(os.path.join(root, file)).read()
                        text_file = open(os.path.join(root, file[:-4] + "css"),
                                         "w")
                        if styl_text != "":
                            text_file.write(Stylus().compile(styl_text))
                        else:
                            print(file + " is empty! Not compiling Styl.")
                        text_file.close()
                    except:
                        print(
                            "Not able to build with Stylus! Is it installed?")
                        try:
                            subprocess.call["npm", "install", "-g", "stylus"]
                        except:
                            print("NPM (NodeJS) not working. Is it installed?")
                if file.endswith(".coffee"):
                    coffee_text = open(os.path.join(root, file)).read()
                    text_file = open(os.path.join(root, file[:-6] + "js"), "w")
                    if coffee_text != "":
                        text_file.write(coffeescript.compile(coffee_text))
                    else:
                        print(file + " is empty! Not compiling CoffeeScript.")
                    text_file.close()
                if minify_css:
                    if file.endswith(".css"):
                        css_text = open(os.path.join(root, file)).read()
                        text_file = open(os.path.join(root, file), "w")
                        if css_text != "":
                            text_file.write(cssmin(css_text))
                        text_file.close()
                if minify_js:
                    if file.endswith(".js"):
                        js_text = open(os.path.join(root, file)).read()
                        text_file = open(os.path.join(root, file), "w")
                        if js_text != "":
                            text_file.write(jsmin(js_text))
                        text_file.close()
예제 #3
0
def get_stylus_compiler():
  context = _app_ctx_stack.top
  compiler = getattr(context, "prat_stylus_compiler", None)
  if compiler is None:
    compiler = context.prat_stylus_compiler = Stylus(plugins={ "nib": {} })
  return compiler
예제 #4
0
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from stylus import Stylus
import threading
import sys
import os
import re
import fnmatch

compiler = Stylus()


def compileFile(filename):
    if os.path.isfile(filename) and fnmatch.fnmatch(filename, '*.styl'):
        stylusFile = open(filename, 'r')
        content = stylusFile.read()
        stylusFile.close()
        result = compiler.compile(content)
        resultPath = filename[0:-4] + 'css'
        cssFile = open(resultPath, 'w')
        cssFile.write(result)
        cssFile.close()


def compileDir(path):
    ''' convert all the sylus file one time in the starting '''
    matches = []
    for root, dirnames, filenames in os.walk(path):
        for filename in fnmatch.filter(filenames, '*.styl'):
            matches.append(os.path.join(root, filename))
예제 #5
0
 def __init__(self, parent=None):
     super(WacomGui, self).__init__(parent)
     self.setupUi(self)
     self.toggle = False
     self.load = False
     self.cwd = os.path.dirname(os.path.abspath(__file__))
     if self.cwd == '/usr/local/bin':
         self.cwd = '/usr/local/wacom-gui'
     self.setFocusPolicy(Qt.NoFocus)
     # button instances
     self.tabletButtons = ButtonGroup()
     self.toolButtons = ButtonGroup()
     self.configButtons = ButtonGroup()
     # button layouts
     self.tabletLayout = ButtonLayout()
     self.toolLayout = ButtonLayout()
     self.configLayout = ButtonLayout()
     self.tabletScroll.setWidget(self.tabletLayout.frame)
     self.toolScroll.setWidget(self.toolLayout.frame)
     self.configScroll.setWidget(self.configLayout.frame)
     # config files
     self.configs = {}
     # hold current device info
     self.dev = None
     self.dev_id = None
     self.config = None
     # load widgets
     self.pad = Pad()
     self.pad.hide()
     self.stylus = Stylus()
     self.stylus.hide()
     self.touch = Touch()
     self.touch.hide()
     # ui icon
     self.tabletRefresh.setIcon(QIcon(os.path.join(self.cwd, os.path.join(self.cwd, 'icons/ui/refresh.png'))))
     # get connected tablet info
     self.tablet_data = Tablets()
     # attach function to refresh tablets
     self.tabletRefresh.clicked.connect(self.refreshTablets)
     # add buttons for connected tablets
     self.initTabletButtons()
     # generate tool buttons
     self.initToolButtons()
     # add/remove button functions
     self.addConfig.setEnabled(True)
     self.addConfig.clicked.connect(self.newConfig)
     self.removeConfig.clicked.connect(self.verifyConfigRemove)
     # about/help menu
     self.aboutButton.clicked.connect(About.display)
     # refresh tablet list, set tools, configs
     self.refreshTablets()
     self.controlBox.setContentsMargins(0, 0, 0, 0)
     # add control widgets to control box
     hbox = QHBoxLayout()
     hbox.setAlignment(Qt.AlignHCenter)
     hbox.addWidget(self.pad)
     hbox.addWidget(self.stylus)
     hbox.addWidget(self.touch)
     self.controlBox.setLayout(hbox)
     # save config button
     self.saveConfig.clicked.connect(self.updateConfigs)
     # configure device reset button
     self.deviceDefaults.clicked.connect(self.deviceReset)
     # load first tool found
     self.toolSelect(self.toolButtons.btn_grp.checkedId())
     # init button functions
     self.tabletButtons.btn_grp.buttonClicked['int'].connect(self.tabletSelect)
     self.toolButtons.btn_grp.buttonClicked['int'].connect(self.toolSelect)
     self.configButtons.btn_grp.buttonClicked['int'].connect(self.configSelect)
예제 #6
0
def stylus_to_css(source):
    compiler = Stylus()
    return u('<style>{css}</style>').format(
        css=compiler.compile(source).strip())
예제 #7
0
파일: extensions.py 프로젝트: xyb/Plim
def stylus_to_css(source):
    compiler = Stylus(plugins={'nib': {}})
    return as_unicode('<style>{css}</style>').format(
        css=compiler.compile(source).strip())