コード例 #1
0
    def test_runPackages(self):
        path = os.path.join(os.path.dirname(__file__), "package/empty.drawbot")

        package = DrawBotPackage(path)
        with StdOutCollector() as output:
            succes, _ = package.run()

        self.assertEqual(output.lines(), ['hello world'])
コード例 #2
0
    def __init__(self):
        self.bundle = DrawBotPackage()

        self.w = vanilla.Window((350, 320), "Package builder")

        y = 10
        m = 120
        for attr in self.packageInfo:
            text = vanilla.TextBox((10, y, m - 15, 22), "%s:" % attr, alignment="right")
            edit = vanilla.EditText((m, y, -10, 22), placeholder=getattr(self.bundle.info, attr))

            setattr(self.w, "%s_text" % attr, text)
            setattr(self.w, "%s_edit" % attr, edit)
            y += 30

        self.w.note = vanilla.TextBox((m, y, -10, 22), "Everything is optional.", sizeStyle="mini")
        y += 30
        self.w.h1 = vanilla.HorizontalLine((0, y, 0, 1))
        y += 10
        self.w.scriptRoot_text = vanilla.TextBox((10, y, m - 15, 22), "Script Root:", alignment="right")
        self.w.scriptRoot = vanilla.PathControl((m, y - 2, -10, 22), None, pathStyle="popUp", callback=self.scriptRootCallback)
        y += 25
        self.w.scriptRoot_note = vanilla.TextBox((m, y, -10, 22), "A folder containing all required python files.", sizeStyle="mini")

        self.w.buildButton = vanilla.Button((-120, -30, -10, 22), "Build", callback=self.buildCallback)
        self.w.open()
コード例 #3
0
ファイル: DrawBot.py プロジェクト: thundernixon/drawbot-1
 def application_openFile_(self, app, path):
     ext = os.path.splitext(path)[-1]
     if ext.lower() == ".drawbot":
         succes, report = DrawBotPackage(path).run()
         if not succes:
             fileName = os.path.basename(path)
             message("The DrawBot package '%s' failed." % fileName, report)
         return True
     return False
コード例 #4
0
    def test_readPackage(self):
        path = os.path.join(os.path.dirname(__file__), "package/empty.drawbot")

        package = DrawBotPackage(path)
        self.assertEqual(package.info.asDict(), {})
        self.assertEqual(package.info.version, "0.0")
        self.assertEqual(package.info.developer, "")
        self.assertEqual(package.info.developerURL, "")
        self.assertEqual(package.info.requiresVersion, "0.0")
        self.assertEqual(package.info.mainScript, "main.py")

        path = os.path.join(os.path.dirname(__file__), "package/simple.drawbot")

        package = DrawBotPackage(path)
        self.assertEqual(package.info.version, "1.0")
        self.assertEqual(package.info.developer, "drawbot")
        self.assertEqual(package.info.developerURL, "http://www.drawbot.com")
        self.assertEqual(package.info.requiresVersion, "3.0")
        self.assertEqual(package.info.mainScript, "main.py")
コード例 #5
0
    def __init__(self):
        self.bundle = DrawBotPackage()

        self.w = vanilla.Window((350, 320), "Package builder")

        y = 10
        m = 120
        for attr in self.packageInfo:
            text = vanilla.TextBox((10, y, m - 15, 22),
                                   "%s:" % attr,
                                   alignment="right")
            edit = vanilla.EditText(
                (m, y, -10, 22), placeholder=getattr(self.bundle.info, attr))

            setattr(self.w, "%s_text" % attr, text)
            setattr(self.w, "%s_edit" % attr, edit)
            y += 30

        self.w.note = vanilla.TextBox((m, y, -10, 22),
                                      "Everything is optional.",
                                      sizeStyle="mini")
        y += 30
        self.w.h1 = vanilla.HorizontalLine((0, y, 0, 1))
        y += 10
        self.w.scriptRoot_text = vanilla.TextBox((10, y, m - 15, 22),
                                                 "Script Root:",
                                                 alignment="right")
        self.w.scriptRoot = vanilla.PathControl(
            (m, y - 2, -10, 22),
            None,
            pathStyle="popUp",
            callback=self.scriptRootCallback)
        y += 25
        self.w.scriptRoot_note = vanilla.TextBox(
            (m, y, -10, 22),
            "A folder containing all required python files.",
            sizeStyle="mini")

        self.w.buildButton = vanilla.Button((-120, -30, -10, 22),
                                            "Build",
                                            callback=self.buildCallback)
        self.w.open()
コード例 #6
0
    def test_buildPackage(self):
        package = DrawBotPackage()
        package.info.name = "demo"
        package.info.developer = "drawbot"
        package.info.developerURL = "http://www.drawbot.com"
        package.info.requiresVersion = "3.0"
        package.info.mainScript = "main.py"

        succes, _ = package.buildPackage("does/not/exists", "does/not/exists")
        self.assertFalse(succes)

        with TempFolder(suffix=".drawbot") as tempPath:
            succes, _ = package.buildPackage(tempPath.path, "does/not/exists")
            self.assertFalse(succes)

            with TempFolder() as tempScriptRoot:
                succes, _ = package.buildPackage(tempPath.path, tempScriptRoot.path)
                self.assertFalse(succes)

                with TempFile(suffix=".py", dir=tempScriptRoot.path) as tmp:
                    with open(tmp.path, "w") as f:
                        f.write("print('hello world'")
                    package.info.mainScript = os.path.basename(tmp.path)
                    succes, _ = package.buildPackage(tempPath.path, tempScriptRoot.path)
                    self.assertTrue(succes)
コード例 #7
0
 def test_missingMainScript(self):
     path = os.path.join(os.path.dirname(__file__), "package/missingMainScript.drawbot")
     package = DrawBotPackage(path)
     succes, message = package.run()
     self.assertEqual(succes, False)
     self.assertTrue(message.startswith("Cannot find"))
コード例 #8
0
class DrawBotPackageController(BaseWindowController):

    packageInfo = [
        "name",
        "version",
        "developer",
        "developerURL",
        "requiresVersion",
        "mainScript",
    ]

    def __init__(self):
        self.bundle = DrawBotPackage()

        self.w = vanilla.Window((350, 320), "Package builder")

        y = 10
        m = 120
        for attr in self.packageInfo:
            text = vanilla.TextBox((10, y, m - 15, 22),
                                   "%s:" % attr,
                                   alignment="right")
            edit = vanilla.EditText(
                (m, y, -10, 22), placeholder=getattr(self.bundle.info, attr))

            setattr(self.w, "%s_text" % attr, text)
            setattr(self.w, "%s_edit" % attr, edit)
            y += 30

        self.w.note = vanilla.TextBox((m, y, -10, 22),
                                      "Everything is optional.",
                                      sizeStyle="mini")
        y += 30
        self.w.h1 = vanilla.HorizontalLine((0, y, 0, 1))
        y += 10
        self.w.scriptRoot_text = vanilla.TextBox((10, y, m - 15, 22),
                                                 "Script Root:",
                                                 alignment="right")
        self.w.scriptRoot = vanilla.PathControl(
            (m, y - 2, -10, 22),
            None,
            pathStyle="popUp",
            callback=self.scriptRootCallback)
        y += 25
        self.w.scriptRoot_note = vanilla.TextBox(
            (m, y, -10, 22),
            "A folder containing all required python files.",
            sizeStyle="mini")

        self.w.buildButton = vanilla.Button((-120, -30, -10, 22),
                                            "Build",
                                            callback=self.buildCallback)
        self.w.open()

    def scriptRootCallback(self, sender):
        url = sender.get()
        if url and not os.path.isdir(url):
            sender.set(None)
            self.showMessage("Package error.",
                             "The script root must be a folder.")

    def buildCallback(self, sender):
        for attr in self.packageInfo:
            control = getattr(self.w, "%s_edit" % attr)
            value = str(control.get())
            if value:
                setattr(self.bundle.info, attr, value)
        root = self.w.scriptRoot.get()
        if root is None:
            self.showMessage("Package error.",
                             "A scripting root must be provided.")
            return

        def saveBundle(path):
            if path:
                succes, report = self.bundle.buildPackage(path, root)
                if not succes:
                    self.showMessage("Package error.", report)

        self.showPutFile(["drawbot"], saveBundle)
コード例 #9
0
class DrawBotPackageController(BaseWindowController):

    packageInfo = [
        "name",
        "version",
        "developer",
        "developerURL",
        "requiresVersion",
        "mainScript",
    ]

    def __init__(self):
        self.bundle = DrawBotPackage()

        self.w = vanilla.Window((350, 320), "Package builder")

        y = 10
        m = 120
        for attr in self.packageInfo:
            text = vanilla.TextBox((10, y, m - 15, 22), "%s:" % attr, alignment="right")
            edit = vanilla.EditText((m, y, -10, 22), placeholder=getattr(self.bundle.info, attr))

            setattr(self.w, "%s_text" % attr, text)
            setattr(self.w, "%s_edit" % attr, edit)
            y += 30

        self.w.note = vanilla.TextBox((m, y, -10, 22), "Everything is optional.", sizeStyle="mini")
        y += 30
        self.w.h1 = vanilla.HorizontalLine((0, y, 0, 1))
        y += 10
        self.w.scriptRoot_text = vanilla.TextBox((10, y, m - 15, 22), "Script Root:", alignment="right")
        self.w.scriptRoot = vanilla.PathControl((m, y - 2, -10, 22), None, pathStyle="popUp", callback=self.scriptRootCallback)
        y += 25
        self.w.scriptRoot_note = vanilla.TextBox((m, y, -10, 22), "A folder containing all required python files.", sizeStyle="mini")

        self.w.buildButton = vanilla.Button((-120, -30, -10, 22), "Build", callback=self.buildCallback)
        self.w.open()

    def scriptRootCallback(self, sender):
        url = sender.get()
        if url and not os.path.isdir(url):
            sender.set(None)
            self.showMessage("Package error.", "The script root must be a folder.")

    def buildCallback(self, sender):
        for attr in self.packageInfo:
            control = getattr(self.w, "%s_edit" % attr)
            value = str(control.get())
            if value:
                setattr(self.bundle.info, attr, value)
        root = self.w.scriptRoot.get()
        if root is None:
            self.showMessage("Package error.", "A scripting root must be provided.")
            return

        def saveBundle(path):
            if path:
                succes, report = self.bundle.buildPackage(path, root)
                if not succes:
                    self.showMessage("Package error.", report)

        self.showPutFile(["drawbot"], saveBundle)