mirror of
https://github.com/dataarts/dat.gui.git
synced 2024-12-12 04:08:27 +00:00
Merge branch 'master' of github.com:jonobr1/gui-dat
This commit is contained in:
commit
eb9fbad6d9
@ -1,4 +1,5 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>dat.gui</title>
|
<title>dat.gui</title>
|
||||||
|
|
||||||
@ -129,7 +130,7 @@
|
|||||||
<li><a href="https://github.com/jonobr1/dat.gui/raw/versions/gui.min
|
<li><a href="https://github.com/jonobr1/dat.gui/raw/versions/gui.min
|
||||||
.js"><strong>Download the minified source</strong></a>
|
.js"><strong>Download the minified source</strong></a>
|
||||||
<small
|
<small
|
||||||
id="buildsize">[11kb]
|
id="buildsize">[255.9kb]
|
||||||
</small>
|
</small>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -6,10 +6,6 @@ DAT.GUI = function(parameters) {
|
|||||||
parameters = {};
|
parameters = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parameters.height == undefined) {
|
|
||||||
parameters.height = 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
var MIN_WIDTH = 240;
|
var MIN_WIDTH = 240;
|
||||||
var MAX_WIDTH = 500;
|
var MAX_WIDTH = 500;
|
||||||
|
|
||||||
@ -23,9 +19,11 @@ DAT.GUI = function(parameters) {
|
|||||||
// Sum total of heights of controllers in this gui
|
// Sum total of heights of controllers in this gui
|
||||||
var controllerHeight;
|
var controllerHeight;
|
||||||
|
|
||||||
|
var curControllerContainerHeight = 0;
|
||||||
|
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
var open = true;
|
var open = false;
|
||||||
var width = 280;
|
var width = 280;
|
||||||
|
|
||||||
// Prevents checkForOverflow bug in which loaded gui appearance
|
// Prevents checkForOverflow bug in which loaded gui appearance
|
||||||
@ -47,10 +45,9 @@ DAT.GUI = function(parameters) {
|
|||||||
this.domElement.setAttribute('class', 'guidat');
|
this.domElement.setAttribute('class', 'guidat');
|
||||||
this.domElement.style.width = width + 'px';
|
this.domElement.style.width = width + 'px';
|
||||||
|
|
||||||
var curControllerContainerHeight = parameters.height;
|
|
||||||
var controllerContainer = document.createElement('div');
|
var controllerContainer = document.createElement('div');
|
||||||
controllerContainer.setAttribute('class', 'guidat-controllers');
|
controllerContainer.setAttribute('class', 'guidat-controllers');
|
||||||
controllerContainer.style.height = curControllerContainerHeight + 'px';
|
controllerContainer.style.height = '0px';
|
||||||
|
|
||||||
// Firefox hack to prevent horizontal scrolling
|
// Firefox hack to prevent horizontal scrolling
|
||||||
controllerContainer.addEventListener('DOMMouseScroll', function(e) {
|
controllerContainer.addEventListener('DOMMouseScroll', function(e) {
|
||||||
@ -74,10 +71,11 @@ DAT.GUI = function(parameters) {
|
|||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var toggleButton = document.createElement('a');
|
var toggleButton = document.createElement('a');
|
||||||
toggleButton.setAttribute('class', 'guidat-toggle');
|
toggleButton.setAttribute('class', 'guidat-toggle');
|
||||||
toggleButton.setAttribute('href', '#');
|
toggleButton.setAttribute('href', '#');
|
||||||
toggleButton.innerHTML = open ? closeString : openString;
|
toggleButton.innerHTML = openString;
|
||||||
|
|
||||||
var toggleDragged = false;
|
var toggleDragged = false;
|
||||||
var dragDisplacementY = 0;
|
var dragDisplacementY = 0;
|
||||||
@ -367,10 +365,13 @@ DAT.GUI = function(parameters) {
|
|||||||
'function': DAT.GUI.ControllerFunction
|
'function': DAT.GUI.ControllerFunction
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
this.reset = function() {
|
this.reset = function() {
|
||||||
// TODO ... Set all values back to their initials.
|
// TODO ... Set all values back to their initials.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DAT.GUI ... DAT.GUI
|
||||||
|
|
||||||
this.toggle = function() {
|
this.toggle = function() {
|
||||||
open ? this.close() : this.open();
|
open ? this.close() : this.open();
|
||||||
};
|
};
|
||||||
@ -380,7 +381,6 @@ DAT.GUI = function(parameters) {
|
|||||||
resizeTo = openHeight;
|
resizeTo = openHeight;
|
||||||
clearTimeout(resizeTimeout);
|
clearTimeout(resizeTimeout);
|
||||||
beginResize();
|
beginResize();
|
||||||
adaptToScrollbar();
|
|
||||||
open = true;
|
open = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -389,7 +389,6 @@ DAT.GUI = function(parameters) {
|
|||||||
resizeTo = 0;
|
resizeTo = 0;
|
||||||
clearTimeout(resizeTimeout);
|
clearTimeout(resizeTimeout);
|
||||||
beginResize();
|
beginResize();
|
||||||
adaptToScrollbar();
|
|
||||||
open = false;
|
open = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -405,12 +404,13 @@ DAT.GUI = function(parameters) {
|
|||||||
|
|
||||||
var beginResize = function() {
|
var beginResize = function() {
|
||||||
|
|
||||||
curControllerContainerHeight = controllerContainer.offsetHeight;
|
|
||||||
curControllerContainerHeight += (resizeTo - curControllerContainerHeight)
|
curControllerContainerHeight += (resizeTo - curControllerContainerHeight)
|
||||||
* 0.6;
|
* 0.6;
|
||||||
|
|
||||||
if (Math.abs(curControllerContainerHeight - resizeTo) < 1) {
|
if (Math.abs(curControllerContainerHeight - resizeTo) < 1) {
|
||||||
curControllerContainerHeight = resizeTo;
|
curControllerContainerHeight = resizeTo;
|
||||||
|
adaptToScrollbar();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
resizeTimeout = setTimeout(beginResize, 1000 / 30);
|
resizeTimeout = setTimeout(beginResize, 1000 / 30);
|
||||||
}
|
}
|
||||||
@ -421,14 +421,15 @@ DAT.GUI = function(parameters) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var adaptToScrollbar = function() {
|
var adaptToScrollbar = function() {
|
||||||
// Clears lingering scrollbar column
|
// Clears lingering slider column
|
||||||
_this.domElement.style.width = (width - 1) + 'px';
|
_this.domElement.style.width = (width + 1) + 'px';
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
_this.domElement.style.width = width + 'px';
|
_this.domElement.style.width = width + 'px';
|
||||||
}, 1);
|
}, 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Load saved appearance:
|
// Load saved appearance:
|
||||||
|
|
||||||
if (DAT.GUI.guiIndex < DAT.GUI.savedAppearanceVars.length) {
|
if (DAT.GUI.guiIndex < DAT.GUI.savedAppearanceVars.length) {
|
||||||
@ -460,12 +461,10 @@ DAT.GUI = function(parameters) {
|
|||||||
DAT.GUI.allGuis.push(this);
|
DAT.GUI.allGuis.push(this);
|
||||||
|
|
||||||
// Add hide listener if this is the first DAT.GUI.
|
// Add hide listener if this is the first DAT.GUI.
|
||||||
|
|
||||||
if (DAT.GUI.allGuis.length == 1) {
|
if (DAT.GUI.allGuis.length == 1) {
|
||||||
|
|
||||||
window.addEventListener('keyup', function(e) {
|
window.addEventListener('keyup', function(e) {
|
||||||
// Hide on 'H'
|
// Hide on 'H'
|
||||||
if (!DAT.GUI.supressHotKeys && e.keyCode == 72) {
|
if (e.keyCode == 72) {
|
||||||
DAT.GUI.toggleHide();
|
DAT.GUI.toggleHide();
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
@ -491,7 +490,6 @@ DAT.GUI.autoPlaceContainer = null;
|
|||||||
DAT.GUI.allControllers = [];
|
DAT.GUI.allControllers = [];
|
||||||
DAT.GUI.allGuis = [];
|
DAT.GUI.allGuis = [];
|
||||||
|
|
||||||
DAT.GUI.supressHotKeys = false;
|
|
||||||
|
|
||||||
DAT.GUI.toggleHide = function() {
|
DAT.GUI.toggleHide = function() {
|
||||||
if (DAT.GUI.hidden) {
|
if (DAT.GUI.hidden) {
|
||||||
@ -542,7 +540,8 @@ DAT.GUI.savedAppearanceVars = [];
|
|||||||
|
|
||||||
DAT.GUI.getSaveString = function() {
|
DAT.GUI.getSaveString = function() {
|
||||||
|
|
||||||
var vals = [], i;
|
var vals = [],
|
||||||
|
i;
|
||||||
|
|
||||||
vals.push(DAT.GUI.allGuis.length);
|
vals.push(DAT.GUI.allGuis.length);
|
||||||
vals.push(document.body.scrollTop);
|
vals.push(document.body.scrollTop);
|
||||||
@ -687,17 +686,19 @@ DAT.GUI.extendController = function(clazz) {
|
|||||||
DAT.GUI.addClass = function(domElement, className) {
|
DAT.GUI.addClass = function(domElement, className) {
|
||||||
if (DAT.GUI.hasClass(domElement, className)) return;
|
if (DAT.GUI.hasClass(domElement, className)) return;
|
||||||
domElement.className += ' ' + className;
|
domElement.className += ' ' + className;
|
||||||
}
|
};
|
||||||
|
|
||||||
DAT.GUI.hasClass = function(domElement, className) {
|
DAT.GUI.hasClass = function(domElement, className) {
|
||||||
return domElement.className.indexOf(className) != -1;
|
return domElement.className.indexOf(className) != -1;
|
||||||
}
|
};
|
||||||
|
|
||||||
DAT.GUI.removeClass = function(domElement, className) {
|
DAT.GUI.removeClass = function(domElement, className) {
|
||||||
var reg = new RegExp(' ' + className, 'g');
|
var reg = new RegExp(' ' + className, 'g');
|
||||||
domElement.className = domElement.className.replace(reg, '');
|
domElement.className = domElement.className.replace(reg, '');
|
||||||
}
|
};
|
||||||
|
|
||||||
if (DAT.GUI.getVarFromURL('saveString') != null) {
|
if (DAT.GUI.getVarFromURL('saveString') != null) {
|
||||||
DAT.GUI.load(DAT.GUI.getVarFromURL('saveString'));
|
DAT.GUI.load(DAT.GUI.getVarFromURL('saveString'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window["DAT.GUI"] = DAT.GUI;
|
||||||
|
138
utils/barnraiser.py
Normal file
138
utils/barnraiser.py
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
#/usr/bin/env python
|
||||||
|
|
||||||
|
from optparse import OptionParser
|
||||||
|
import httplib, urllib
|
||||||
|
import os, fnmatch, shutil, re
|
||||||
|
|
||||||
|
usage = """usage: %prog [options] command
|
||||||
|
|
||||||
|
Commands:
|
||||||
|
build build the script
|
||||||
|
debug print the header to include js files
|
||||||
|
clean remove any built files
|
||||||
|
"""
|
||||||
|
parser = OptionParser(usage=usage)
|
||||||
|
parser.add_option('-l', '--level', dest='level', default='ADVANCED_OPTIMIZATIONS',
|
||||||
|
help='Closure compilation level [WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS, \
|
||||||
|
ADVANCED_OPTIMIZATIONS]')
|
||||||
|
|
||||||
|
UTILS = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
SRC_ROOT= os.path.join(UTILS,'..','src')
|
||||||
|
BUILD_ROOT = os.path.join(UTILS,'..','build')
|
||||||
|
INDEX = os.path.join(UTILS,'..','index.html')
|
||||||
|
BUILD_NAME = 'DAT.GUI'
|
||||||
|
ALL = ['DAT']
|
||||||
|
|
||||||
|
|
||||||
|
def flatten(l, ltypes=(list, tuple)):
|
||||||
|
ltype = type(l)
|
||||||
|
l = list(l)
|
||||||
|
i = 0
|
||||||
|
while i < len(l):
|
||||||
|
while isinstance(l[i], ltypes):
|
||||||
|
if not l[i]:
|
||||||
|
l.pop(i)
|
||||||
|
i -= 1
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
l[i:i + 1] = l[i]
|
||||||
|
i += 1
|
||||||
|
return ltype(l)
|
||||||
|
|
||||||
|
def expand(path, globby):
|
||||||
|
matches = []
|
||||||
|
path = path.split('.')
|
||||||
|
path.insert(0,SRC_ROOT)
|
||||||
|
path = os.path.join(*path)
|
||||||
|
for root, dirnames, filenames in os.walk(path):
|
||||||
|
for filename in fnmatch.filter(filenames, globby):
|
||||||
|
matches.append(os.path.join(root, filename))
|
||||||
|
return matches
|
||||||
|
|
||||||
|
def source_list(src, globby='*.js'):
|
||||||
|
def expander(f):
|
||||||
|
return expand(f,globby)
|
||||||
|
return set(flatten(map(expander, src)))
|
||||||
|
|
||||||
|
def compile(code):
|
||||||
|
params = urllib.urlencode([
|
||||||
|
('js_code', code),
|
||||||
|
('compilation_level', options.level),
|
||||||
|
('output_format', 'text'),
|
||||||
|
('output_info', 'compiled_code'),
|
||||||
|
])
|
||||||
|
headers = { 'Content-type': 'application/x-www-form-urlencoded' }
|
||||||
|
conn = httplib.HTTPConnection('closure-compiler.appspot.com')
|
||||||
|
conn.request('POST', '/compile', params, headers)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
return data
|
||||||
|
|
||||||
|
def bytes_to_kb(b,digits=1):
|
||||||
|
return round(0.0078125 * b, digits)
|
||||||
|
|
||||||
|
def clean():
|
||||||
|
if os.path.exists(BUILD_ROOT):
|
||||||
|
shutil.rmtree(BUILD_ROOT)
|
||||||
|
print('DONE. Removed %s'%(BUILD_ROOT,))
|
||||||
|
else:
|
||||||
|
print('DONE. Nothing to clean')
|
||||||
|
|
||||||
|
def build(src):
|
||||||
|
if not os.path.exists(BUILD_ROOT):
|
||||||
|
os.makedirs(BUILD_ROOT)
|
||||||
|
|
||||||
|
cssfiles = source_list(src, '*.css')
|
||||||
|
css = '\n'.join([open(f).read() for f in cssfiles])
|
||||||
|
css = re.sub(r'[ \t\n\r]+',' ',css)
|
||||||
|
|
||||||
|
jsfiles = source_list(src, '*.js')
|
||||||
|
code = '\n'.join([open(f).read() for f in jsfiles])
|
||||||
|
code += """DAT.GUI.inlineCSS = '%s';\n"""%(css,)
|
||||||
|
|
||||||
|
outpath = os.path.join(BUILD_ROOT, BUILD_NAME+'.js')
|
||||||
|
with open(outpath,'w') as f:
|
||||||
|
f.write(code)
|
||||||
|
|
||||||
|
compiled = compile(code)
|
||||||
|
outpath = os.path.join(BUILD_ROOT, BUILD_NAME+'.min.js')
|
||||||
|
with open(outpath,'w') as f:
|
||||||
|
f.write(compiled)
|
||||||
|
|
||||||
|
outpath = os.path.join(BUILD_ROOT, BUILD_NAME+'.css')
|
||||||
|
with open(outpath,'w') as f:
|
||||||
|
f.write(code)
|
||||||
|
|
||||||
|
size = bytes_to_kb(os.path.getsize(outpath))
|
||||||
|
with open(INDEX,'r') as f:
|
||||||
|
index = f.read()
|
||||||
|
with open(INDEX,'w') as f:
|
||||||
|
index = re.sub(r'\[[0-9.]+kb\]','[%skb]'%(size,),index)
|
||||||
|
f.write(index)
|
||||||
|
|
||||||
|
print('DONE. Built files in %s.'%(BUILD_ROOT,))
|
||||||
|
|
||||||
|
def debug(src):
|
||||||
|
files = source_list(src)
|
||||||
|
scripts = ""
|
||||||
|
for f in files:
|
||||||
|
scripts += '<script type="text/javascript" src="%s"></script>\n'%(f,)
|
||||||
|
print(scripts)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
global options
|
||||||
|
(options, args) = parser.parse_args()
|
||||||
|
if len(args) != 1:
|
||||||
|
print(parser.usage)
|
||||||
|
exit(0)
|
||||||
|
command = args[0]
|
||||||
|
if command == 'build':
|
||||||
|
build(ALL)
|
||||||
|
elif command == 'clean':
|
||||||
|
clean()
|
||||||
|
elif command == 'debug':
|
||||||
|
debug(ALL)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user