mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-26 05:27:03 +00:00
This PR adds the features CPUserNotification and CPUserNotificationCenter in Foundation. The CPUserNotificationCenter allows you to send user notification to the system. Right now, we only propose what the W3C proposes. We can set for a notification the title, informativeText and the icon. We only support local notification yet. The protocol CPUserNotificationCenterDelegate has been added as well. Test app in Tests/Manual/CPUserNotificationTest
185 lines
6.0 KiB
JavaScript
185 lines
6.0 KiB
JavaScript
/*
|
|
* Jakefile
|
|
* CPUserNotificationTest
|
|
*
|
|
* Created by You on June 25, 2015.
|
|
* Copyright 2015, Your Company All rights reserved.
|
|
*/
|
|
|
|
var ENV = require("system").env,
|
|
FILE = require("file"),
|
|
JAKE = require("jake"),
|
|
task = JAKE.task,
|
|
FileList = JAKE.FileList,
|
|
app = require("cappuccino/jake").app,
|
|
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug",
|
|
OS = require("os"),
|
|
projectName = "CPUserNotificationTest";
|
|
|
|
app (projectName, function(task)
|
|
{
|
|
ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks";
|
|
|
|
if (configuration === "Debug")
|
|
ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration);
|
|
|
|
task.setBuildIntermediatesPath(FILE.join("Build", "CPUserNotificationTest.build", configuration));
|
|
task.setBuildPath(FILE.join("Build", configuration));
|
|
|
|
task.setProductName("CPUserNotificationTest");
|
|
task.setIdentifier("com.yourcompany.CPUserNotificationTest");
|
|
task.setVersion("1.0");
|
|
task.setAuthor("Your Company");
|
|
task.setEmail("feedback @nospam@ yourcompany.com");
|
|
task.setSummary("CPUserNotificationTest");
|
|
task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**")));
|
|
task.setResources(new FileList("Resources/**"));
|
|
task.setIndexFilePath("index.html");
|
|
task.setInfoPlistPath("Info.plist");
|
|
|
|
if (configuration === "Debug")
|
|
task.setCompilerFlags("-DDEBUG -g");
|
|
else
|
|
task.setCompilerFlags("-O");
|
|
});
|
|
|
|
task ("default", [projectName], function()
|
|
{
|
|
printResults(configuration);
|
|
});
|
|
|
|
task ("build", ["default"], function()
|
|
{
|
|
updateApplicationSize();
|
|
});
|
|
|
|
task ("debug", function()
|
|
{
|
|
configuration = ENV["CONFIGURATION"] = "Debug";
|
|
JAKE.subjake(["."], "build", ENV);
|
|
});
|
|
|
|
task ("release", function()
|
|
{
|
|
configuration = ENV["CONFIGURATION"] = "Release";
|
|
JAKE.subjake(["."], "build", ENV);
|
|
});
|
|
|
|
task ("run", ["debug"], function()
|
|
{
|
|
OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]);
|
|
});
|
|
|
|
task ("run-release", ["release"], function()
|
|
{
|
|
OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]);
|
|
});
|
|
|
|
task ("deploy", ["release"], function()
|
|
{
|
|
FILE.mkdirs(FILE.join("Build", "Deployment", projectName));
|
|
OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]);
|
|
printResults("Deployment")
|
|
});
|
|
|
|
task ("desktop", ["release"], function()
|
|
{
|
|
FILE.mkdirs(FILE.join("Build", "Desktop", projectName));
|
|
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", projectName), FILE.join("Build", "Desktop", projectName, "CPUserNotificationTest.app"));
|
|
printResults("Desktop")
|
|
});
|
|
|
|
task ("run-desktop", ["desktop"], function()
|
|
{
|
|
OS.system([FILE.join("Build", "Desktop", projectName, "CPUserNotificationTest.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
|
});
|
|
|
|
function printResults(configuration)
|
|
{
|
|
print("----------------------------");
|
|
print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName));
|
|
print("----------------------------");
|
|
}
|
|
|
|
function updateApplicationSize()
|
|
{
|
|
print("Calculating application file sizes...");
|
|
|
|
var contents = FILE.read(FILE.join("Build", configuration, projectName, "Info.plist"), { charset:"UTF-8" }),
|
|
format = CFPropertyList.sniffedFormatOfString(contents),
|
|
plist = CFPropertyList.propertyListFromString(contents),
|
|
totalBytes = {executable:0, data:0, mhtml:0};
|
|
|
|
// Get the size of all framework executables and sprite data
|
|
var frameworksDir = "Frameworks";
|
|
|
|
if (configuration === "Debug")
|
|
frameworksDir = FILE.join(frameworksDir, "Debug");
|
|
|
|
var frameworks = FILE.list(frameworksDir);
|
|
|
|
frameworks.forEach(function(framework)
|
|
{
|
|
if (framework !== "Source")
|
|
addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes);
|
|
});
|
|
|
|
// Read in the default theme name, and attempt to get its size
|
|
var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2",
|
|
themePath = nil;
|
|
|
|
if (themeName === "Aristo" || themeName === "Aristo2")
|
|
themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend");
|
|
else
|
|
themePath = FILE.join("Frameworks", "Resources", themeName + ".blend");
|
|
|
|
if (FILE.isDirectory(themePath))
|
|
addBundleFileSizes(themePath, totalBytes);
|
|
|
|
// Add sizes for the app
|
|
addBundleFileSizes(FILE.join("Build", configuration, projectName), totalBytes);
|
|
|
|
print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data));
|
|
|
|
var dict = new CFMutableDictionary();
|
|
|
|
dict.setValueForKey("executable", totalBytes.executable);
|
|
dict.setValueForKey("data", totalBytes.data);
|
|
dict.setValueForKey("mhtml", totalBytes.mhtml);
|
|
|
|
plist.setValueForKey("CPApplicationSize", dict);
|
|
|
|
FILE.write(FILE.join("Build", configuration, projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" });
|
|
}
|
|
|
|
function addBundleFileSizes(bundlePath, totalBytes)
|
|
{
|
|
var bundleName = FILE.basename(bundlePath),
|
|
environment = bundleName === "Foundation" ? "Objj" : "Browser",
|
|
bundlePath = FILE.join(bundlePath, environment + ".environment");
|
|
|
|
if (FILE.isDirectory(bundlePath))
|
|
{
|
|
var filename = bundleName + ".sj",
|
|
filePath = new FILE.Path(FILE.join(bundlePath, filename));
|
|
|
|
if (filePath.exists())
|
|
totalBytes.executable += filePath.size();
|
|
|
|
filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt"));
|
|
|
|
if (filePath.exists())
|
|
totalBytes.data += filePath.size();
|
|
|
|
filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt"));
|
|
|
|
if (filePath.exists())
|
|
totalBytes.mhtml += filePath.size();
|
|
|
|
filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt"));
|
|
|
|
if (filePath.exists())
|
|
totalBytes.mhtml += filePath.size();
|
|
}
|
|
}
|