remove unused code and use folders

This commit is contained in:
j 2015-12-21 00:54:18 +01:00
parent 33905afb28
commit 0b81967464
15 changed files with 53 additions and 6848 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.swp

0
styles.css → css/styles.css Executable file → Normal file
View file

View file

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -1,18 +0,0 @@
$(function() {
Firefogg.prototype.loadFromFp = function(fp) {
var file = fp.file;
this._inputFile = fp.file.path;
this.sourceFilename = fp.file.leafName;
this.state = "";
this.sourceInfo = JSON.stringify(this.getFormatInfo(this._inputFile, false));
this.sourceInfo.video && this.sourceInfo.video.forEach(function(video) {
if (!video.display_aspect_ratio) {
video.display_aspect_ratio = video.width + ':' + video.height;
video.pixel_aspect_ratio = '1:1';
}
});
return true
}
});

14
index.html Executable file → Normal file
View file

@ -5,13 +5,13 @@
<title>SpeedTrans</title>
<script type="text/javascript" src="oxjs/min/UI/jquery/jquery.js"></script>
<script type="text/javascript" src="oxjs/min/Ox.js"></script>
<script type="text/javascript" src="player.js"></script>
<script type="text/javascript" src="staticfuncs.js"></script>
<script type="text/javascript" src="classes.js"></script>
<script type="text/javascript" src="app.js"></script>
<script type="text/javascript" src="ox.extra.js"></script>
<script type="text/javascript" src="dnd.js"></script>
<link rel="stylesheet" href="styles.css" />
<script type="text/javascript" src="js/player.js"></script>
<script type="text/javascript" src="js/staticfuncs.js"></script>
<script type="text/javascript" src="js/classes.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/ox.extra.js"></script>
<script type="text/javascript" src="js/dnd.js"></script>
<link rel="stylesheet" href="css/styles.css" />
</head>
<body style="display:none">

556
jquery-ui.js vendored

File diff suppressed because one or more lines are too long

5999
jquery.js vendored

File diff suppressed because it is too large Load diff

View file

@ -158,7 +158,7 @@ Ox.load({
if ($.inArray(getFileNameExt(path.toLowerCase()), [
'oga', 'ogg', 'ogv', 'ogx', 'wav', 'webm', 'mp4', 'm4v'
]) != -1) {
loadVideoObject(data.files[0]);
loadVideo(data.files[0]);
} else {
alert('can only open video formats supported by browser');
}
@ -177,7 +177,7 @@ Ox.load({
if ($(this).val() == prefVal) {
$(this).attr("selected", "selected");
}
});
});
});
$('.pref_select').change(function() {
var key = $(this).attr("data-pref");
@ -201,23 +201,15 @@ Ox.load({
stDialog("Keyboard Shortcuts", html);
} else if(data.id == 'save_srt') {
var content = textArea.toSrt();
uriContent = 'data:text/plain;base64,' + btoa(Ox.encodeUTF8(content));
saveContent(uriContent, videoPath + '.srt');
saveContent(content, 'text/plain', getFileNameSansExt(videoPath) + '.srt');
} else if(data.id == 'load_srt') {
var filters = {'Srt files': '*.srt'};
var fileObj = selectFile(filters);
if (fileObj) {
var srtPath = fileObj.file.path;
loadSrt(srtPath);
}
loadSrt(data.files[0]);
} else if(data.id == 'export_encore') {
var content = textArea.toSrt("enc");
uriContent = 'data:text/plain;base64,' + btoa(Ox.encodeUTF8(content));
saveContent(uriContent, videoPath + '.enc.txt');
var content = textArea.toSrt("enc");
saveContent(content, 'text/plain', getFileNameSansExt(videoPath) + '.enc.txt');
} else if(data.id == 'export_html') {
var content = textArea.toHTML();
uriContent = 'data:text/html;base64,' + btoa(Ox.encodeUTF8(content));
saveContent(uriContent, videoPath + '.html');
saveContent(content, 'text/html', getFileNameSansExt(videoPath) + '.html');
} else if(data.id == 'load_cuts') {
var html = Ox.tmpl("dialog_load_cuts");
var loadDialog = Ox.Dialog({
@ -273,7 +265,8 @@ function saveTxt() {
globalUser.set_txt(videoHash, txt);
}
function saveContent(content, path) {
function saveContent(content, type, path) {
var uriContent = 'data:'+type+';base64,' + btoa(content);
var pom = document.createElement('a');
pom.setAttribute('href', content);
pom.setAttribute('download', path);
@ -285,17 +278,6 @@ function saveContent(content, path) {
pom.click();
}
}
function saveSrt() {
var content = textArea.toSrt();
uriContent = 'data:text/plain;base64,' + btoa(Ox.encodeUTF8(content));
saveContent(uriContent, videoPath + '.srt');
}
function saveHTML(path) {
var content = textArea.toHTML();
uriContent = 'data:text/plain;base64,' + btoa(Ox.encodeUTF8(content));
saveContent(uriContent, videoPath + '.html');
}
function stDialog(titleTxt, text) {
var that = Ox.Dialog({
@ -314,7 +296,7 @@ function stDialog(titleTxt, text) {
return that;
}
function loadVideoObject(videoFile) {
function loadVideo(videoFile) {
Ox.oshash(videoFile, function(hash) {
videoHash = hash;
var storageKey = 'txt_' + videoHash;
@ -337,41 +319,6 @@ function loadVideoObject(videoFile) {
};
function loadVideo(videoFile, isRecent) {
videoPath = videoFile;
filePath = getFileNameSansExt(videoFile);
srtFilePath = filePath + ".srt";
Ox.oshash(new File(videoPath), function(hash) {
videoHash = hash;
var storageKey = 'txt_' + videoHash;
if (storageKey in storage) {
loadTxt();
} else if (isRecent) {
/* If contents are not in local storage,
attempt to load recent srt file. This is mostly
to aid in users migrating to version that saves
in localStorage */
var srtPath = globalUser.get_pref('recentSrt');
if (srtPath) {
loadSrt(srtPath);
}
}
});
$('#video').attr("src", "file://" + videoFile);
$('#filepath').text(videoFile);
document.getElementById("video").load();
$('#video').one("loadedmetadata", function() {
Video = new VideoPlayer();
Video.init("video");
Video.setDuration(Video.player.duration);
$('#insertTc').click(textArea.insertTc);
videoListener = setInterval(Video.listener, 250);
});
};
/*
Functions to generate preview while encoding: see http://firefogg.org/examples
*/
@ -409,11 +356,3 @@ $(window).unload(function() {
}
saveTxt();
});
/*
This is just to kill console.logs that maybe generated by Ox.print calls, because that seems to mess with Firefogg. Debug and remove.
*/
Ox.print = function() {
$.noop();
}

53
classes.js → js/classes.js Executable file → Normal file
View file

@ -1,4 +1,4 @@
var url = "http://speedtrans.pad.ma";
var url = "https://speedtrans.pad.ma";
var storage = window.localStorage;
@ -243,8 +243,8 @@ TextArea.prototype.toSrt = function(fmt) {
this.spans = spans;
var srt = spansToSrt(spans, fmt);
// console.log(srt);
return srt;
}
return Ox.encodeUTF8(srt);
}
TextArea.prototype.addTime = function(ms, start_no) {
@ -260,8 +260,8 @@ TextArea.prototype.addTime = function(ms, start_no) {
tcInMs: spans[i].tcInMs + ms
}
}
return spansToSrt(s, 'srt', start_no)
}
return spansToSrt(s, 'srt', start_no);
}
TextArea.prototype.toHTML = function() {
@ -272,7 +272,7 @@ TextArea.prototype.toHTML = function() {
span = spans[i];
txt = '';
txt += '<p>\n';
txt += '<a href="http://pad.ma/PADMA_VIDEO_ID/' + ms2npt(span.tcInMs) + "-" + ms2npt(span.tcOutMs) + '">';
txt += '<a href="https://pad.ma/PADMA_VIDEO_ID/' + ms2npt(span.tcInMs) + "-" + ms2npt(span.tcOutMs) + '">';
txt += (i + 1).toString();
txt += "</a>\n";
txt += '<br />\n';
@ -280,9 +280,8 @@ TextArea.prototype.toHTML = function() {
txt += "</p>\n\n";
html += txt;
}
return html;
}
return Ox.encodeUTF8(html);
}
//creates new Span (tcIn and tcOut in npt format)
@ -378,7 +377,7 @@ User.prototype.init = function() {
var key = prefs[i];
var val = this.get_pref(key);
this.callbacks[key](val);
}
}
}
User.prototype.set_pref = function(key, val) {
@ -440,32 +439,10 @@ function loadCuts(url, id) {
});
}
function loadSrt(filename) {
//alert(filename);
if (!checkFileExists(filename)) {
alert("Could not find Srt file " + filename);
return;
}
// alert("hmm.. you have a .srt file but not a txt file - this is a bug. sorry.");
var txt = mozillaLoadFile(filename);
if (textArea.fromSrt(txt)) {
srtFilePath = filename;
} else {
var recovery_txt = globalUser.get_txt(filename);
textArea.elem.val(recovery_txt);
var html = Ox.tmpl("tmpl_loadError", {'filename': filename, 'txt': txt, 'recovery_txt': recovery_txt});
stDialog("Error Loading File", html);
}
function loadSrt(file) {
var reader = new FileReader();
reader.onload = function(data) {
textArea.fromSrt(data.target.result);
};
reader.readAsBinaryString(file);
}
/*
function loadMeta(filename) {
var m = mozillaLoadFile(filename);
}
*/
/*
function loadSrtTxt(filename) {
var txt = mozillaLoadFile(filename);
$('#txt').val(txt);
}
*/

View file

@ -8,7 +8,7 @@ $(function() {
document.addEventListener('drop', function(event) {
if (event.dataTransfer.files && event.dataTransfer.files.length) {
event.preventDefault();
loadVideoObject(event.dataTransfer.files[0])
loadVideo(event.dataTransfer.files[0])
}
});
});

View file

@ -34,11 +34,3 @@ John Resig's micro-templating: http://ejohn.org/blog/javascript-micro-templating
return data ? fn( data ) : fn;
};
})();
Ox.ElementFromTemplate = function(tmpl_id, data) {
var that = this;
var html = Ox.tmpl(tmpl_id, data);
// console.log("TMpL", that);
this.html(html);
return this;
};

0
player.js → js/player.js Executable file → Normal file
View file

65
staticfuncs.js → js/staticfuncs.js Executable file → Normal file
View file

@ -23,7 +23,7 @@ function ms2npt(ms) {
return npt;
}
function ms2frames(ms, fmt) {
function ms2frames(ms, fmt) {
if (!fmt) var fmt = "PAL";
var npt = ms2npt(ms);
var dotpos = npt.lastIndexOf(".");
@ -31,29 +31,28 @@ function ms2npt(ms) {
var mmInt = parseInt(mmStr);
if (fmt == 'PAL') {
var frames = parseInt((mmInt / 1000) * 24);
} else if (fmt == "NTSC") {
} else if (fmt == "NTSC") {
var frames = parseInt((mmInt / 1000) * 29.97);
}
}
var framesTc = '';
var joinToken = ":";
var framesTc = npt.substring(0, dotpos ) + joinToken + frames;
return framesTc;
}
}
function ms2time(ms) {
var npt = ms2npt(ms)
return npt.substr(npt.length-9, npt.length-6);
}
function ms2time(ms) {
var npt = ms2npt(ms)
return npt.substr(npt.length-9, npt.length-6);
}
function framesToNpt(timeCode) {
var frames = timeCode.substring(9, 11);
var ms = parseInt(frames) / 25 * 1000;
var ms = String(ms);
var ms = strpad(ms, '0', 3, 'right');
var timeCodeNpt = timeCode.substring(0,8) + "." + ms;
return timeCodeNpt;
}
var frames = timeCode.substring(9, 11);
var ms = parseInt(frames) / 25 * 1000;
var ms = String(ms);
var ms = strpad(ms, '0', 3, 'right');
var timeCodeNpt = timeCode.substring(0,8) + "." + ms;
return timeCodeNpt;
}
function strpad(str, pad, len, dir) {
while (str.length < len) {
@ -63,13 +62,13 @@ function strpad(str, pad, len, dir) {
str = str + pad;
}
return str;
}
}
function isValidTimecode(tc) {
var tc = $.trim(tc);
var nptRegex = new RegExp("^[0-9][0-9]?\:[0-9][0-9]\:[0-9][0-9][\.|\,|\:][0-9]?[0-9]?[0-9]?$");
return nptRegex.test(tc);to
}
}
//where filters is a JSON object, for eg. {'Video Files': '*.dv;*.ogg;*.ogv;*.ogx;*.avi;*.mov;*.mp4;*.mpeg;*.mpg;*.vob'}
function selectFile(filters, callback) {
@ -78,36 +77,11 @@ function selectFile(filters, callback) {
callback && callback(fp);
}
function mozillaSaveFile(filePath,content)
{
return null;
}
function mozillaSaveAs() {
return false;
}
// Returns null if it can't do it, false if there's an error, or a string of the content if successful
function mozillaLoadFile(filePath)
{
return null;
}
function checkFileExists(filePath) {
if (mozillaLoadFile(filePath)) {
return true;
} else {
return false;
}
}
function getFileNameExt(filename) {
var dotPos = filename.lastIndexOf(".");
var ext = filename.substring(dotPos + 1, filename.length);
return ext;
}
}
function getFileNameSansExt(filename) {
var dotPos = filename.lastIndexOf(".");
@ -117,5 +91,4 @@ function getFileNameSansExt(filename) {
var filenameSansExt = filename;
}
return filenameSansExt;
}
}

View file

@ -1,95 +0,0 @@
'use strict';
Ox.oshash = function (file, callback) {
// Needs to go via string to work for files > 2GB
var hash = fromString(file.size.toString());
read(0);
function add(A, B) {
var a, b, c, d;
d = A[3] + B[3];
c = A[2] + B[2] + (d >> 16);
d &= 0xffff;
b = A[1] + B[1] + (c >> 16);
c &= 0xffff;
a = A[0] + B[0] + (b >> 16);
b &= 0xffff;
// Cut off overflow
a &= 0xffff;
return [a, b, c, d];
}
function fromData(s, offset) {
offset = offset || 0;
return [
s.charCodeAt(offset + 6) + (s.charCodeAt(offset + 7) << 8),
s.charCodeAt(offset + 4) + (s.charCodeAt(offset + 5) << 8),
s.charCodeAt(offset + 2) + (s.charCodeAt(offset + 3) << 8),
s.charCodeAt(offset + 0) + (s.charCodeAt(offset + 1) << 8)
];
}
function fromString(str) {
var base = 10,
blen = 1,
i,
num,
pos,
r = [0, 0, 0, 0];
for (pos = 0; pos < str.length; pos++) {
num = parseInt(str.charAt(pos), base);
i = 0;
do {
while (i < blen) {
num += r[3 - i] * base;
r[3 - i++] = (num & 0xFFFF);
num >>>= 16;
}
if (num) {
blen++;
}
} while (num);
}
return r;
}
function pad(string, length, padding) {
padding = Ox.repeat(padding, length - string.length);
return (padding + string).slice(-length);
};
function hex(h) {
return (
pad(h[0].toString(16), 4, '0')
+ pad(h[1].toString(16), 4, '0')
+ pad(h[2].toString(16), 4, '0')
+ pad(h[3].toString(16), 4, '0')
).toLowerCase();
}
function read(offset, last) {
var blob,
block = 65536,
length = 8,
reader = new FileReader();
reader.onload = function(data) {
var s = data.target.result,
s_length = s.length - length,
i;
for (i = 0; i <= s_length; i += length) {
hash = add(hash, fromData(s, i));
}
if (file.size < block || last) {
callback(hex(hash));
} else {
read(file.size - block, true);
}
};
blob = file.slice(offset, offset + block);
reader.readAsBinaryString(blob);
}
};

View file

@ -1,9 +0,0 @@
/* Original CSS */
#speedtrans-toolbarbutton {
list-style-image: url("chrome://speedtrans/content/icon.png");
}
/* Added for Australis support */
#speedtrans-toolbarbutton[cui-areatype="menu-panel"],
toolbarpaletteitem[place="palette"] > #speedtrans-toolbarbutton {
list-style-image: url("chrome://speedtrans/content/icon.png");
}