Started breaking extension in multiple smaller files.
This commit is contained in:
parent
09ef70e96f
commit
62d40e25f5
23
README.md
23
README.md
@ -64,7 +64,13 @@ For best results with autodetection, please make sure the following requirements
|
|||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
### Temporary install
|
### Permanent install / stable
|
||||||
|
|
||||||
|
[v1.2.1 — Regular version — download from AMO](https://addons.mozilla.org/en/firefox/addon/ultrawidify/)
|
||||||
|
|
||||||
|
[v1.2.1 — Regular version — download from Chrome store](https://chrome.google.com/webstore/detail/ultrawidify/dndehlekllfkaijdlokmmicgnlanfjbi)
|
||||||
|
|
||||||
|
### Installing the current, github version
|
||||||
|
|
||||||
1. Clone this repo
|
1. Clone this repo
|
||||||
2. Open up Firefox
|
2. Open up Firefox
|
||||||
@ -72,14 +78,7 @@ For best results with autodetection, please make sure the following requirements
|
|||||||
4. Add temporary addon
|
4. Add temporary addon
|
||||||
5. Browse to wherever you saved it and select manifest.json
|
5. Browse to wherever you saved it and select manifest.json
|
||||||
|
|
||||||
### Permanent install
|
## Known issues (in stable versions)
|
||||||
|
|
||||||
[v1.2.1 — Regular version — download from AMO](https://addons.mozilla.org/en/firefox/addon/ultrawidify/)
|
|
||||||
|
|
||||||
[v1.2.1 — Regular version — download from Chrome store](https://chrome.google.com/webstore/detail/ultrawidify/dndehlekllfkaijdlokmmicgnlanfjbi)
|
|
||||||
|
|
||||||
|
|
||||||
## Known issues
|
|
||||||
|
|
||||||
'More settings' button actually doesn't work at the moment.
|
'More settings' button actually doesn't work at the moment.
|
||||||
|
|
||||||
@ -98,6 +97,12 @@ For best results with autodetection, please make sure the following requirements
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
###v1.3a1 (git/current version)
|
||||||
|
|
||||||
|
* Adding ability to add custom sites (in progress)
|
||||||
|
* Most of the extension is being completely rewritten to accomodate that feature, which means there's a serious regression with Netflix support (no netflix at the moment)
|
||||||
|
* I'm also trying to break the 1500 line behemoth into smaller files.
|
||||||
|
|
||||||
###v1.2.1 (AMO + Chrome)
|
###v1.2.1 (AMO + Chrome)
|
||||||
|
|
||||||
* Fixed the bugs which caused aspect ratio to not be calculated properly.
|
* Fixed the bugs which caused aspect ratio to not be calculated properly.
|
||||||
|
84
buildext.sh
Executable file
84
buildext.sh
Executable file
@ -0,0 +1,84 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Takes all the files from 'src' and compiles it intro a single content script.
|
||||||
|
# Also compiles background scripts and settings pages.
|
||||||
|
#
|
||||||
|
# I'm using this over something like requirejs so my extension doesn't need even more
|
||||||
|
# dependencies.
|
||||||
|
#
|
||||||
|
# How does this work?
|
||||||
|
# 0. You're supposed to run this in the root directory of the extension.
|
||||||
|
|
||||||
|
# 1. see if file has any #include [filename] comments. If so, merge [filename] file
|
||||||
|
# into the current file (after checking if that file has any #include comments
|
||||||
|
# Compiled files are saved to /tmp.
|
||||||
|
#
|
||||||
|
# 2. After compiling file and its dependencies, check for presence of #location [directory]
|
||||||
|
# comments. [directory] is relative to the root directory of the extension
|
||||||
|
# 2.1 also check for #out, which defines filename.
|
||||||
|
#
|
||||||
|
# 3. Use '-nodebug' to remove all calls of console.log (to be implemented)
|
||||||
|
|
||||||
|
function flattenFileName {
|
||||||
|
echo $1 | sed 's/\//_/g'
|
||||||
|
}
|
||||||
|
|
||||||
|
fileList="";
|
||||||
|
|
||||||
|
function compileFile {
|
||||||
|
local file=$1
|
||||||
|
local flatfile=$(flattenFileName $file);
|
||||||
|
|
||||||
|
|
||||||
|
if [ -f /tmp/$flatfile ] ; then
|
||||||
|
return 0
|
||||||
|
fi;
|
||||||
|
|
||||||
|
fileList="$fileList $flatfile"
|
||||||
|
|
||||||
|
# let's take all the #included files and put them at the top
|
||||||
|
for f in $(grep "#include" $file | awk '{print $NF}') ; do
|
||||||
|
|
||||||
|
local lf=$f
|
||||||
|
fflat=$(flattenFileName $lf);
|
||||||
|
|
||||||
|
compileFile $lf
|
||||||
|
|
||||||
|
printf "\n//BEGIN included from $lf\n" >> /tmp/$flatfile
|
||||||
|
grep -Ev "#include|#location|#out" /tmp/$fflat >> /tmp/$flatfile
|
||||||
|
printf "//END included from $lf\n\n" >> /tmp/$flatfile
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
grep -Ev "#include|#location|#out" $file >> /tmp/$flatfile
|
||||||
|
}
|
||||||
|
|
||||||
|
cd src;
|
||||||
|
|
||||||
|
for file in *.js ; do
|
||||||
|
echo "main loop, we're looking at this file: $file"
|
||||||
|
compileFile $file
|
||||||
|
echo "Files compiled. Moving to location (if specified)"
|
||||||
|
|
||||||
|
outFile=$file
|
||||||
|
|
||||||
|
if grep -q "#out" $file ; then
|
||||||
|
outFile=$( grep "#out" $file | awk '{print $NF}')
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if grep -q "#location" $file ; then
|
||||||
|
location=$( grep "#location" $file | awk '{print $NF}')
|
||||||
|
echo "File will be saved to $location as $outFile"
|
||||||
|
cd ..
|
||||||
|
echo "// Autogenerated using buildext. This file should not be modified — modify source files instead." > $location/$outFile
|
||||||
|
grep -Ev "#location|#include|#out" /tmp/$(flattenFileName $file) >> $location/$outFile
|
||||||
|
cd src
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# perform cleanup
|
||||||
|
for file in $fileList ; do
|
||||||
|
rm /tmp/$file
|
||||||
|
done
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "Ultrawidify",
|
"name": "Ultrawidify-git",
|
||||||
"version": "1.2.1.1",
|
"version": "1.3a1",
|
||||||
|
|
||||||
"icons": {
|
"icons": {
|
||||||
"32":"res/icons/uw-32.png",
|
"32":"res/icons/uw-32.png",
|
||||||
|
57
src/conf/keybinds.js
Normal file
57
src/conf/keybinds.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// Yeah hi /r/badcode.
|
||||||
|
// Anyway, because nazi localstorage flat out refuses to store arrays:
|
||||||
|
var DEFAULT_KEYBINDINGS = {
|
||||||
|
0:{ action: "fitw",
|
||||||
|
key: 'w',
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
1:{
|
||||||
|
action: "fith",
|
||||||
|
key: 'e',
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
action: "reset",
|
||||||
|
key: 'r',
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
action: "zoom",
|
||||||
|
key: "z",
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
action: "unzoom",
|
||||||
|
key: "u",
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
5: {
|
||||||
|
action: "char",
|
||||||
|
targetAR: (21/9),
|
||||||
|
key: "d",
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
6: {
|
||||||
|
action: "char",
|
||||||
|
targetAR: (16/9),
|
||||||
|
key: "s",
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
7: {
|
||||||
|
action: "char",
|
||||||
|
targetAR: (16/10),
|
||||||
|
key: "x",
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
8: {
|
||||||
|
action: "char",
|
||||||
|
targetAR: (4/3),
|
||||||
|
key: "c",
|
||||||
|
modifiers: []
|
||||||
|
},
|
||||||
|
9: {
|
||||||
|
action: "autoar",
|
||||||
|
key: "a",
|
||||||
|
modifiers: []
|
||||||
|
}
|
||||||
|
};
|
73
src/conf/sitesconf.js
Normal file
73
src/conf/sitesconf.js
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
var UW_SITES = {
|
||||||
|
youtube: {
|
||||||
|
enabled: true,
|
||||||
|
type: "official",
|
||||||
|
urlRules: ["youtu"],
|
||||||
|
player: {
|
||||||
|
name: "movie_player",
|
||||||
|
isClass: false,
|
||||||
|
},
|
||||||
|
iframe: {
|
||||||
|
name: "player",
|
||||||
|
isClass: false
|
||||||
|
},
|
||||||
|
sampleButton: {
|
||||||
|
class: "ytp-button ytp-settings-button",
|
||||||
|
index: 0,
|
||||||
|
buttonSizeBase: "x",
|
||||||
|
},
|
||||||
|
uiParent: {
|
||||||
|
name: "ytp-right-controls",
|
||||||
|
isClass: true,
|
||||||
|
insertStrat: "prepend",
|
||||||
|
},
|
||||||
|
autoar_imdb:{
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
netflix: {
|
||||||
|
enabled: true,
|
||||||
|
type: "official",
|
||||||
|
urlRules: ["netflix"],
|
||||||
|
player: {
|
||||||
|
name: "placeholder",
|
||||||
|
isClass: true,
|
||||||
|
},
|
||||||
|
sampleButton: {
|
||||||
|
class: "ytp-button ytp-settings-button",
|
||||||
|
index: 0,
|
||||||
|
buttonSizeBase: "x",
|
||||||
|
},
|
||||||
|
uiParent: {
|
||||||
|
name: "player-controls-wrapper",
|
||||||
|
isClass: true,
|
||||||
|
insertStrat: "append"
|
||||||
|
},
|
||||||
|
autoar_imdb:{
|
||||||
|
enabled: true,
|
||||||
|
title: "player-status-main-title",
|
||||||
|
isClass: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dummy: {
|
||||||
|
type: "add new site",
|
||||||
|
urlRules: [""],
|
||||||
|
player: {
|
||||||
|
name: "",
|
||||||
|
isClass: false,
|
||||||
|
},
|
||||||
|
sampleButton: {
|
||||||
|
class: "ytp-button ytp-settings-button",
|
||||||
|
index: 0,
|
||||||
|
buttonSizeBase: "x",
|
||||||
|
},
|
||||||
|
uiParent: {
|
||||||
|
name: "",
|
||||||
|
isClass: false,
|
||||||
|
insertStrat: "prepend",
|
||||||
|
},
|
||||||
|
autoar_imdb:{
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
116
src/conf/uiconf.js
Normal file
116
src/conf/uiconf.js
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
var UW_UI_BUTTONS = {
|
||||||
|
fitw: {
|
||||||
|
native_bar: true,
|
||||||
|
has_submenu: false,
|
||||||
|
button: true,
|
||||||
|
icon: "/res/img/ytplayer-icons/fitw.png",
|
||||||
|
text: "Fit to width",
|
||||||
|
onclick: function(){ changeCSS("fit", "fitw") }
|
||||||
|
},
|
||||||
|
fith: {
|
||||||
|
native_bar: true,
|
||||||
|
has_submenu: false,
|
||||||
|
button: true,
|
||||||
|
icon: "/res/img/ytplayer-icons/fith.png",
|
||||||
|
text: "Fit to height",
|
||||||
|
onclick: function(){ changeCSS("fit", "fith") }
|
||||||
|
},
|
||||||
|
reset: {
|
||||||
|
native_bar: true,
|
||||||
|
has_submenu: false,
|
||||||
|
button: true,
|
||||||
|
icon: "/res/img/ytplayer-icons/reset.png",
|
||||||
|
text: "Reset",
|
||||||
|
onclick: function(){ changeCSS("reset", "reset") }
|
||||||
|
},
|
||||||
|
zoom: {
|
||||||
|
native_bar: true,
|
||||||
|
has_submenu: false,
|
||||||
|
button: true,
|
||||||
|
icon: "/res/img/ytplayer-icons/zoom.png",
|
||||||
|
text: "Zoom",
|
||||||
|
onclick: function(){ changeCSS("fit", "zoom") }
|
||||||
|
},
|
||||||
|
unzoom: {
|
||||||
|
native_bar: true,
|
||||||
|
has_submenu: false,
|
||||||
|
button: true,
|
||||||
|
icon: "/res/img/ytplayer-icons/unzoom.png",
|
||||||
|
text: "Unzoom",
|
||||||
|
onclick: function(){ changeCSS("fit", "unzoom") }
|
||||||
|
},
|
||||||
|
zoom: {
|
||||||
|
native_bar: true,
|
||||||
|
has_submenu: false,
|
||||||
|
button: true,
|
||||||
|
icon: "/res/img/ytplayer-icons/zoom.png",
|
||||||
|
text: "Reset",
|
||||||
|
onclick: function(){ changeCSS("fit", "zoom") }
|
||||||
|
},
|
||||||
|
autoar: {
|
||||||
|
native_bar: false,
|
||||||
|
has_submenu: false,
|
||||||
|
button: false,
|
||||||
|
text: "Detect aspect ratio via 3rd party",
|
||||||
|
onclick: function(){ manual_autoar()}
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
native_bar: true,
|
||||||
|
button: true,
|
||||||
|
icon: "/res/img/ytplayer-icons/settings.png",
|
||||||
|
text: "Settings",
|
||||||
|
has_submenu: true,
|
||||||
|
submenu: [ "fitw","fith","reset","zoom","unzoom","autoar","ar" ],
|
||||||
|
top_level: true,
|
||||||
|
submenu_id: "uw_settings_menu",
|
||||||
|
onclick: function(){ toggleMenu("uw_settings_menu") }
|
||||||
|
},
|
||||||
|
ar: {
|
||||||
|
native_bar: false,
|
||||||
|
button: false,
|
||||||
|
text: "Force aspect ratio",
|
||||||
|
has_submenu: true,
|
||||||
|
submenu: [ "ar219", "ar169", "ar1610", "ar43" ],
|
||||||
|
submenu_id: "uw_force_ar_menu",
|
||||||
|
onclick: function(){ showMenu("uw_force_ar_menu") }
|
||||||
|
},
|
||||||
|
ar219: {
|
||||||
|
native_bar: false,
|
||||||
|
button: false,
|
||||||
|
text: "21:9",
|
||||||
|
has_submenu: false,
|
||||||
|
onclick: function(){ changeCSS("char", ( 21/9 )); }
|
||||||
|
},
|
||||||
|
ar169: {
|
||||||
|
native_bar: false,
|
||||||
|
button: false,
|
||||||
|
text: "16:9",
|
||||||
|
has_submenu: false,
|
||||||
|
onclick: function(){ changeCSS("char", ( 16/9 )); }
|
||||||
|
},
|
||||||
|
ar1610: {
|
||||||
|
native_bar: false,
|
||||||
|
button: false,
|
||||||
|
text: "16:10",
|
||||||
|
has_submenu: false,
|
||||||
|
onclick: function(){ changeCSS("char", ( 1.6 )); }
|
||||||
|
},
|
||||||
|
ar43: {
|
||||||
|
native_bar: false,
|
||||||
|
button: false,
|
||||||
|
text: "4:3",
|
||||||
|
has_submenu: false,
|
||||||
|
onclick: function(){ changeCSS("char", ( 4/3 )); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var UW_UI_BANLIST = {
|
||||||
|
youtube: {
|
||||||
|
autoar: "all"
|
||||||
|
},
|
||||||
|
netflix: {
|
||||||
|
settings: "all"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
11
src/lib/browser_autodetect.js
Normal file
11
src/lib/browser_autodetect.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
usebrowser = "firefox";
|
||||||
|
|
||||||
|
if(typeof browser === "undefined"){ // This means we're probably not on Firefox.
|
||||||
|
if(chrome){
|
||||||
|
browser = chrome;
|
||||||
|
usebrowser = "chrome";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
usebrowser = "firefox";
|
||||||
|
}
|
12
src/lib/libopts.js
Normal file
12
src/lib/libopts.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// setopt in getopt. Shranita oz. dobita stvari iz skladišča
|
||||||
|
// setopt, getopt. They set/get stuff from the storage
|
||||||
|
|
||||||
|
function setopt(item){
|
||||||
|
browser.storage.local.set(item);
|
||||||
|
}
|
||||||
|
function getopt(prop, callback){
|
||||||
|
if(usebrowser == "chrome")
|
||||||
|
browser.storage.local.get(prop, callback);
|
||||||
|
else
|
||||||
|
browser.storage.local.get(prop).then(callback);
|
||||||
|
}
|
12
src/lib/optinit.js
Normal file
12
src/lib/optinit.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
IGNORE_STORAGE_CHANGES = true;
|
||||||
|
|
||||||
|
// getopt( "ultrawidify_uiban", function (opt) {
|
||||||
|
// if(! opt || opt.ultrawidify_uiban === undefined){
|
||||||
|
// if(debugmsg)
|
||||||
|
// console.log("uw::extsetup_uiban | ui ban missing from storage. Setting defaults.");
|
||||||
|
// browser.storage.local.set({ultrawidify_uiban: UW_UI_BANLIST});
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
IGNORE_STORAGE_CHANGES = false;
|
Loading…
Reference in New Issue
Block a user