From c4f80f97ca1e0920ee747174244d3b694ed8f3d9 Mon Sep 17 00:00:00 2001 From: Rack Lin Date: Fri, 26 Sep 2014 14:34:33 +0800 Subject: [PATCH] rename project to moedict-desktop Signed-off-by: Rack Lin --- .gitmodules | 6 -- app/application.ini | 6 +- app/chrome/branding/locale/brand.dtd | 8 +-- app/chrome/branding/locale/brand.properties | 6 +- app/chrome/locale/zh-TW/about.dtd | 2 +- .../moedict-webkit@xuldict.3du.tw/.gitignore | 3 - .../moedict-webkit@xuldict.3du.tw/LICENSE | 5 -- .../moedict-webkit@xuldict.3du.tw/README.md | 46 ------------- .../moedict-webkit@xuldict.3du.tw/build.sh | 31 --------- .../chrome.manifest | 5 -- .../chrome/content/http_server.js | 65 ------------------ .../chrome/content/loading.html | 14 ---- .../chrome/content/loading.png | Bin 11156 -> 0 bytes .../chrome/content/overlay.xul | 14 ---- .../defaults/preferences/http.js | 4 -- ...xulapp-starterkit-webapp-wrapper-1.1.1.xpi | Bin 105462 -> 0 bytes .../moedict-webkit@xuldict.3du.tw/install.rdf | 26 ------- .../moedict-webkit@xuldict.3du.tw/webapp | 1 - build.sh | 3 + config.sh | 6 +- mac/Contents/Info.plist | 4 +- win/MoeDict-Desktop.exe | Bin 0 -> 433664 bytes 22 files changed, 19 insertions(+), 236 deletions(-) delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/.gitignore delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/LICENSE delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/README.md delete mode 100755 app/extensions/moedict-webkit@xuldict.3du.tw/build.sh delete mode 100755 app/extensions/moedict-webkit@xuldict.3du.tw/chrome.manifest delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/http_server.js delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/loading.html delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/loading.png delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/overlay.xul delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/defaults/preferences/http.js delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/downloads/xulapp-starterkit-webapp-wrapper-1.1.1.xpi delete mode 100644 app/extensions/moedict-webkit@xuldict.3du.tw/install.rdf delete mode 160000 app/extensions/moedict-webkit@xuldict.3du.tw/webapp create mode 100755 win/MoeDict-Desktop.exe diff --git a/.gitmodules b/.gitmodules index a135563..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +0,0 @@ -[submodule "extensions/moedict-webkit@xuldict.3du.tw/webapp"] - path = extensions/moedict-webkit@xuldict.3du.tw/webapp - url = git@github.com:racklin/moedict-app.git -[submodule "app/extensions/moedict-webkit@xuldict.3du.tw/webapp"] - path = app/extensions/moedict-webkit@xuldict.3du.tw/webapp - url = git@github.com:racklin/moedict-app.git diff --git a/app/application.ini b/app/application.ini index 9f7799c..a431c1e 100644 --- a/app/application.ini +++ b/app/application.ini @@ -1,10 +1,10 @@ [App] -Vendor=Moe Dictionary Contributors -Name=Moe Dictionary +Vendor=MoeDict Desktop Contributors +Name=MoeDict Desktop Version=0.1.0 BuildID=20130109 Copyright=Copyright (c) 2013 MoeDictionary Contributors -Profile=moe-dict-DEV +Profile=moedict-desktop-DEV ID={8a9e0b2c-695c-11e2-9ad2-68a86d302c50} [Gecko] diff --git a/app/chrome/branding/locale/brand.dtd b/app/chrome/branding/locale/brand.dtd index e03c204..7738731 100644 --- a/app/chrome/branding/locale/brand.dtd +++ b/app/chrome/branding/locale/brand.dtd @@ -1,5 +1,5 @@ - - + + - - + + diff --git a/app/chrome/branding/locale/brand.properties b/app/chrome/branding/locale/brand.properties index b6e991f..0fb421c 100644 --- a/app/chrome/branding/locale/brand.properties +++ b/app/chrome/branding/locale/brand.properties @@ -1,3 +1,3 @@ -brandShortName=Moe Dictionary -brandFullName=Moe Dictionary -vendorShortName=Moe Dictionary Contributors +brandShortName=MoeDict Desktop +brandFullName=MoeDict Desktop +vendorShortName=MoeDict Desktop Contributors diff --git a/app/chrome/locale/zh-TW/about.dtd b/app/chrome/locale/zh-TW/about.dtd index f250a2c..8a6dc91 100644 --- a/app/chrome/locale/zh-TW/about.dtd +++ b/app/chrome/locale/zh-TW/about.dtd @@ -1,2 +1,2 @@ - + diff --git a/app/extensions/moedict-webkit@xuldict.3du.tw/.gitignore b/app/extensions/moedict-webkit@xuldict.3du.tw/.gitignore deleted file mode 100644 index 81701e8..0000000 --- a/app/extensions/moedict-webkit@xuldict.3du.tw/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -build -dist -.idea diff --git a/app/extensions/moedict-webkit@xuldict.3du.tw/LICENSE b/app/extensions/moedict-webkit@xuldict.3du.tw/LICENSE deleted file mode 100644 index f2cb279..0000000 --- a/app/extensions/moedict-webkit@xuldict.3du.tw/LICENSE +++ /dev/null @@ -1,5 +0,0 @@ -* Code is MPL licensed: -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this file, -You can obtain one at http://mozilla.org/MPL/2.0/. - diff --git a/app/extensions/moedict-webkit@xuldict.3du.tw/README.md b/app/extensions/moedict-webkit@xuldict.3du.tw/README.md deleted file mode 100644 index 45698da..0000000 --- a/app/extensions/moedict-webkit@xuldict.3du.tw/README.md +++ /dev/null @@ -1,46 +0,0 @@ -Webapp Wrapper For XULApp StarterKit ------------------------------ -Webapp Wrapper is a simple build script for XULApp StarterKit. - -It packaging HTML5 Web Application as XULApp StarterKit's add-on. - - -Benefits ------------------------------ - -* Latest HTML5 support (Same as Firefox 18, and easy to use new Gecko versions as they are released) -* Can using XULApp StarterKit Auto-load Modules . -* Bundled HTTP server (No local content restrictions like when using file:// protocol etc) . - * Default bind address 127.0.0.1 - * Default listen port 54321 - - -Download pre-build XPI ------------------------------ -Download pre-build XPI in [download XPI](https://github.com/racklin/xulapp-starterkit-app-webapp-wrapper/raw/master/downloads/xulapp-starterkit-webapp-wrapper-1.1.1.xpi) - - -Get started ------------------------------ -Build Webapp Wrapper for your web application: - -1. Fork this project. -2. Copy your web application to webapp/ directory. -3. Change install.rdf and build.sh for your project name. -4. Change bind address or port in defaults/preferences/http.js. -5. run build.sh - - -Auto-Load Modules in HTML5 ------------------------------ -In javascript you can using *XULApp* global variable to access Modules. - -``` -

Demo XULApp XPCOM Notification

-``` - - -License ------------------------------ -Webapp Wrapper For XULApp StarterKit are licensed under the [MPL License]. -See LICENSE for more details. diff --git a/app/extensions/moedict-webkit@xuldict.3du.tw/build.sh b/app/extensions/moedict-webkit@xuldict.3du.tw/build.sh deleted file mode 100755 index 4c7ae94..0000000 --- a/app/extensions/moedict-webkit@xuldict.3du.tw/build.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2012 XULApp StarterKit racklin@gmail.com - -CALLDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -PACKAGENAME="xulapp-starterkit-webapp-wrapper" -VERSION="1.1.1" - -BUILDID=`date +%Y%m%d` -DISTDIR="$CALLDIR/dist" -BUILDDIR="$CALLDIR/build" - -echo "Building Webapp Wrapper for XULApp StarterKit" - -# Remove build directory -if [ ! -d "$BUILDDIR" ]; then mkdir -p "$BUILDDIR"; fi - -# Copy app directory -cp -RH "$CALLDIR/webapp" "$BUILDDIR/" -cp -RH "$CALLDIR/chrome" "$BUILDDIR/" -cp -RH "$CALLDIR/defaults" "$BUILDDIR/" -cp "$CALLDIR/chrome.manifest" "$BUILDDIR/" -cp "$CALLDIR/install.rdf" "$BUILDDIR/" - -# Make sure DISTDIR exists -if [ ! -d "$DISTDIR" ]; then mkdir -p "$DISTDIR"; fi - -cd "$BUILDDIR" && zip -rqX "$DISTDIR/${PACKAGENAME}-${VERSION}.xpi" * - -rm -rf $BUILDDIR diff --git a/app/extensions/moedict-webkit@xuldict.3du.tw/chrome.manifest b/app/extensions/moedict-webkit@xuldict.3du.tw/chrome.manifest deleted file mode 100755 index 891b251..0000000 --- a/app/extensions/moedict-webkit@xuldict.3du.tw/chrome.manifest +++ /dev/null @@ -1,5 +0,0 @@ -content webapp-wrapper chrome/content/ -content webapp webapp/ - -overlay chrome://xulapp/content/mainUIOverlay.xul chrome://webapp-wrapper/content/overlay.xul - diff --git a/app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/http_server.js b/app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/http_server.js deleted file mode 100644 index 28e92f9..0000000 --- a/app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/http_server.js +++ /dev/null @@ -1,65 +0,0 @@ -(function(){ - - var initilized = false; - var enable = false; - var bindAddress = "127.0.0.1"; - var port = 54321; - - const GREUtils = XULApp.GREUtils; - const NODE_STATIC_STARTUP_TIMEOUT = 5000; - - function initHttpServer() { - - var server = new XULApp.HttpServer(); - - var indexPath = GREUtils.File.chromeToPath('chrome://webapp/content/index.html'); - - // convert path string to nsFile - var file = GREUtils.File.getFile(indexPath); - var webappDir = file.parent; - - // serve webapp directory - server.registerDirectory("/", webappDir); - - // httpd.js gets worried when there is no stop callback - server._stopCallback = function() { - dump("HTTP server stopped\n"); - } - - enable = GREUtils.Pref.getPref('extensions.webappWrapper.httpServer.enabled') || false; - bindAddress = GREUtils.Pref.getPref('extensions.webappWrapper.httpServer.bindAddress') || "127.0.0.1"; - port = GREUtils.Pref.getPref('extensions.webappWrapper.httpServer.port') || 54321; - - try { - if (enable) { - server.start(port, bindAddress); - port = server.identity.primaryPort; - dump("HTTP server listening on ("+ bindAddress +"):"+server._port); - } - } catch(e) { - dump("Not initializing HTTP server" + e); - } - - } - - initHttpServer(); - - window.addEventListener('DOMContentLoaded', function(e) { - if (!initilized) { - var homePage = 'http://'+bindAddress+':'+port+'/'; - var webappBrowser = document.getElementById('webapp'); - if (webappBrowser) { - webappBrowser.homePage = homePage; - - // wait node-static startup timeout - setTimeout(function() { - webappBrowser.loadURI(homePage); - initilized = true; - }, NODE_STATIC_STARTUP_TIMEOUT); - - } - } - - }); - -})(); diff --git a/app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/loading.html b/app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/loading.html deleted file mode 100644 index eb3be4e..0000000 --- a/app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/loading.html +++ /dev/null @@ -1,14 +0,0 @@ - - - Loading... - - - - - diff --git a/app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/loading.png b/app/extensions/moedict-webkit@xuldict.3du.tw/chrome/content/loading.png deleted file mode 100644 index ef6f6194765144d52fc429cfc92177fa297950b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11156 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 - - - - - - - -