New layouts and style.
They are somewhat independent (you can use the new layout with the old style and vice versa) but they belong together. Tested in Firefox, Safari, IE5.5, IE6, but there are still some features to be implemented before this is ready for 'main'. To use, first add "new_style_june_2007=true" to the app:universe section of universe_wsgi.ini (this gives you the new layout). Second change document_root to "%(here)s/static/june_2007_style/blue" in the app:static_style section. Style Features: simplifications, fewer 'hatched' images, space savings in some places, small changes to the color scheme (same general feel, but the colors are better matched). Main changes are to history, the new style support nested datasets much better. Layout features: no framesets (just iframes, some of which can be replaced with divs and ajax down the road). Frames are resizable and hideable. Tools can provide width hints and history will automatically hide (try UCSC main to see this).
@@ -24,14 +24,18 @@ class Universe(common.Root):
|
||||
|
||||
@web.expose
|
||||
def index(self, trans, id=None, tool_id=None, mode=None, **kwd):
|
||||
if mode:
|
||||
trans.set_cookie(name=self.pref_cookie_name, value=mode)
|
||||
# if mode:
|
||||
# trans.set_cookie(name=self.pref_cookie_name, value=mode)
|
||||
# else:
|
||||
# mode = trans.get_cookie(name=self.pref_cookie_name)
|
||||
# trans.ensure_valid_galaxy_session()
|
||||
# result = trans.fill_template('index_frames.tmpl', mode=mode)
|
||||
# return [ result ]
|
||||
if trans.app.config.get( "new_style_june_2007", "false" ) == "true":
|
||||
return trans.fill_template( "root/index.tmpl" )
|
||||
else:
|
||||
mode = trans.get_cookie(name=self.pref_cookie_name)
|
||||
trans.ensure_valid_galaxy_session()
|
||||
result = trans.fill_template('index_frames.tmpl', mode=mode)
|
||||
return [ result ]
|
||||
|
||||
return trans.fill_template( "index_frames.tmpl" )
|
||||
|
||||
@web.expose
|
||||
def tool_menu( self, trans ):
|
||||
return trans.fill_template('tool_menu.tmpl', toolbox=self.get_toolbox() )
|
||||
@@ -244,6 +248,11 @@ class Universe(common.Root):
|
||||
self.app.model.flush()
|
||||
return "OK"
|
||||
|
||||
@web.expose
|
||||
def history_options( self, trans ):
|
||||
"""Displays a list of history related actions"""
|
||||
return trans.fill_template( "history_options.tmpl", history = trans.get_history() )
|
||||
|
||||
@web.expose
|
||||
def history_delete( self, trans, id = None, **kwd):
|
||||
"""Deletes a list of histories, ensures that histories are owned by current user"""
|
||||
|
||||
@@ -258,6 +258,12 @@ class Tool:
|
||||
cls = action_elem.get( 'class' )
|
||||
mod = __import__( module, globals(), locals(), [cls])
|
||||
self.tool_action = getattr( mod, cls )()
|
||||
# User interface hints
|
||||
self.uihints = {}
|
||||
uihints_elem = root.find( "uihints" )
|
||||
if uihints_elem is not None:
|
||||
for key, value in uihints_elem.attrib.iteritems():
|
||||
self.uihints[ key ] = value
|
||||
# Tests
|
||||
tests_elem = root.find( "tests" )
|
||||
if tests_elem:
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
menu_bg.png :
|
||||
./gradient.py 9 1000 DDDDFF 9999FF FFFFFF 0 0 FFFFFF 1 1 > $@
|
||||
|
||||
base_bg.png :
|
||||
./gradient.py 9 1000 EEEEFF - FFFFFF 0 0 FFFFFF 1 1 > $@
|
||||
|
||||
masthead_bg.png :
|
||||
./gradient.py 9 50 023858 000000 000000 0 0.5 000000 1 1 > $@
|
||||
|
||||
footer_title_bg.png :
|
||||
./gradient.py 9 30 023858 000000 000000 0 0.5 000000 1 1 > $@
|
||||
|
||||
form_title_bg.png :
|
||||
./gradient.py 9 50 ebd9b2 b9a780 FFFFFF 0 0 FFFFFF 0.5 1 > $@
|
||||
|
||||
ok_bg.png :
|
||||
./gradient.py 9 200 AAFFAA - CCFFCC 0 0.5 CCFFCC 1 1 > $@
|
||||
|
||||
error_bg.png :
|
||||
./gradient.py 9 200 FFAAAA - FFCCCC 0 0.5 FFCCCC 1 1 > $@
|
||||
|
||||
warn_bg.png :
|
||||
./gradient.py 9 200 FFFFAA - FFFFCC 0 0.5 FFFFCC 1 1 > $@
|
||||
|
||||
gray_bg.png :
|
||||
./gradient.py 9 200 AAAAAA - CCCCCC 0 0.5 CCCCCC 1 1 > $@
|
||||
@@ -0,0 +1,266 @@
|
||||
@import url( "reset.css" );
|
||||
|
||||
body
|
||||
{
|
||||
font: 75% verdana, "Bitstream Vera Sans", geneva, arial, helvetica, helve, sans-serif;
|
||||
background: $base_bg_bottom;
|
||||
color: $base_text;
|
||||
background-image: url(base_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
margin: 10px;
|
||||
margin-right: 15px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
a:link, a:visited, a:active
|
||||
{
|
||||
color: $link_text;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4
|
||||
{
|
||||
color: $header_text;
|
||||
/*text-shadow: #bbb 2px 2px 1px;*/
|
||||
}
|
||||
|
||||
hr
|
||||
{
|
||||
border: none;
|
||||
border-bottom: dotted $base_text 1px;
|
||||
}
|
||||
|
||||
div.toolForm
|
||||
{
|
||||
border: solid $form_border 1px;
|
||||
}
|
||||
|
||||
div.toolFormTitle
|
||||
{
|
||||
font-weight: bold;
|
||||
padding: 5px;
|
||||
background: $form_title_bg_bottom;
|
||||
background-image: url(form_title_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
border-bottom: solid $form_border 1px;
|
||||
}
|
||||
|
||||
div.toolParamHelp
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.toolFormBody
|
||||
{
|
||||
padding: 5px;
|
||||
background: $form_body_bg_bottom;
|
||||
background-image: url(form_body_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
}
|
||||
|
||||
div.toolFormBody div.toolFormTitle
|
||||
{
|
||||
background: transparent;
|
||||
border: none;
|
||||
font-weight: bold;
|
||||
border-bottom: solid $form_border 1px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
div.toolHelp
|
||||
{
|
||||
}
|
||||
|
||||
div.toolHelpBody
|
||||
{
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
select
|
||||
{
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.errormessage, .warningmessage, .donemessage, .infomessage, .welcomemessage
|
||||
{
|
||||
padding: 10px;
|
||||
padding-left: 52px;
|
||||
min-height: 32px;
|
||||
border-top: 1px solid $error_message_border;
|
||||
border-bottom: 1px solid $error_message_border;
|
||||
background-color: $error_message_bg;
|
||||
background-image: url(error_message_icon.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 10px 10px;
|
||||
}
|
||||
|
||||
.warningmessage
|
||||
{
|
||||
background-image: url(warn_message_icon.png);
|
||||
border-color: $warn_message_border;
|
||||
background-color: $warn_message_bg;
|
||||
}
|
||||
|
||||
.donemessage
|
||||
{
|
||||
background-image: url(done_message_icon.png);
|
||||
border-color: $done_message_border;
|
||||
background-color: $done_message_bg;
|
||||
}
|
||||
|
||||
.infomessage
|
||||
{
|
||||
background-image: url(info_message_icon.png);
|
||||
border-color: $info_message_border;
|
||||
background-color: $info_message_bg;
|
||||
}
|
||||
|
||||
.welcomemessage {
|
||||
padding-left: 10px;
|
||||
border-color: #6666AA;
|
||||
background-color: #CCCCFF;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.errormessagesmall, .warningmessagesmall, .donemessagesmall, .infomessagesmall
|
||||
{
|
||||
padding: 5px;
|
||||
padding-left: 25px;
|
||||
min-height: 25px;
|
||||
border-top: 1px solid $error_message_border;
|
||||
border-bottom: 1px solid $error_message_border;
|
||||
background-color: $error_message_bg;
|
||||
background-image: url(error_small.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 5px 5px;
|
||||
}
|
||||
|
||||
.warningmessagesmall
|
||||
{
|
||||
background-image: url(warn_small.png);
|
||||
border-color: $warn_message_border;
|
||||
background-color: $warn_message_bg;
|
||||
}
|
||||
|
||||
.donemessagesmall
|
||||
{
|
||||
background-image: url(ok_small.png);
|
||||
border-color: $done_message_border;
|
||||
background-color: $done_message_bg;
|
||||
}
|
||||
|
||||
.infomessagesmall
|
||||
{
|
||||
background-image: url(info_small.png);
|
||||
border-color: $info_message_border;
|
||||
background-color: $info_message_bg;
|
||||
}
|
||||
|
||||
.errormark, .warningmark, .donemark, .infomark, .ok_bgr, .err_bgr
|
||||
{
|
||||
padding-left: 20px;
|
||||
min-height: 15px;
|
||||
background: url(error_small.png) no-repeat;
|
||||
}
|
||||
|
||||
.warningmark
|
||||
{
|
||||
background-image: url(warn_small.png);
|
||||
}
|
||||
|
||||
.donemark
|
||||
{
|
||||
background-image: url(ok_small.png);
|
||||
}
|
||||
|
||||
.infomark, .ok_bgr
|
||||
{
|
||||
background-image: url(info_small.png);
|
||||
}
|
||||
|
||||
table.colored
|
||||
{
|
||||
border-top: solid $table_border 1px;
|
||||
border-bottom: solid $table_border 1px;
|
||||
}
|
||||
|
||||
table.colored td
|
||||
{
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
table.colored tr.header
|
||||
{
|
||||
background: $table_header_bg;
|
||||
background-image: url(form_title_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
border-bottom: solid $table_border 1px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.colored tr
|
||||
{
|
||||
background: $table_row_bg;
|
||||
}
|
||||
|
||||
div.debug
|
||||
{
|
||||
margin: 10px;
|
||||
padding: 5px;
|
||||
background: #FFFF99;
|
||||
border: solid #FFFF33 1px;
|
||||
color: black;
|
||||
}
|
||||
|
||||
div.odd_row
|
||||
{
|
||||
background: $odd_row_bg;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: fixed;
|
||||
background: $footer_bg;
|
||||
width: 100%;
|
||||
left: 0px;
|
||||
bottom: 0px;
|
||||
color: white;
|
||||
z-index:10000;
|
||||
opacity:0.9;
|
||||
filter:alpha(opacity:90);
|
||||
}
|
||||
|
||||
#footer a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.footerheader
|
||||
{
|
||||
padding: 5px;
|
||||
text-align:center;
|
||||
background-image: url(footer_title_bg.png);
|
||||
background-position: bottom right;
|
||||
}
|
||||
|
||||
.footermenu
|
||||
{
|
||||
/*border-top: solid white 1px; */
|
||||
}
|
||||
|
||||
.footermenuitem
|
||||
{
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
margin-right: 5px;
|
||||
margin-left: 25px;
|
||||
display: list-item;
|
||||
list-style: square outside;
|
||||
}
|
||||
|
||||
.footermenumessage
|
||||
{
|
||||
margin: 5px;
|
||||
}
|
||||
@@ -0,0 +1,266 @@
|
||||
@import url( "reset.css" );
|
||||
|
||||
body
|
||||
{
|
||||
font: 75% verdana, "Bitstream Vera Sans", geneva, arial, helvetica, helve, sans-serif;
|
||||
background: #FFFFFF;
|
||||
color: #303030;
|
||||
background-image: url(base_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
margin: 10px;
|
||||
margin-right: 15px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
a:link, a:visited, a:active
|
||||
{
|
||||
color: #303030;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4
|
||||
{
|
||||
color: #023858;
|
||||
/*text-shadow: #bbb 2px 2px 1px;*/
|
||||
}
|
||||
|
||||
hr
|
||||
{
|
||||
border: none;
|
||||
border-bottom: dotted #303030 1px;
|
||||
}
|
||||
|
||||
div.toolForm
|
||||
{
|
||||
border: solid #d8b365 1px;
|
||||
}
|
||||
|
||||
div.toolFormTitle
|
||||
{
|
||||
font-weight: bold;
|
||||
padding: 5px;
|
||||
background: #d2c099;
|
||||
background-image: url(form_title_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
border-bottom: solid #d8b365 1px;
|
||||
}
|
||||
|
||||
div.toolParamHelp
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.toolFormBody
|
||||
{
|
||||
padding: 5px;
|
||||
background: #FFFFFF;
|
||||
background-image: url(form_body_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
}
|
||||
|
||||
div.toolFormBody div.toolFormTitle
|
||||
{
|
||||
background: transparent;
|
||||
border: none;
|
||||
font-weight: bold;
|
||||
border-bottom: solid #d8b365 1px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
div.toolHelp
|
||||
{
|
||||
}
|
||||
|
||||
div.toolHelpBody
|
||||
{
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
select
|
||||
{
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.errormessage, .warningmessage, .donemessage, .infomessage, .welcomemessage
|
||||
{
|
||||
padding: 10px;
|
||||
padding-left: 52px;
|
||||
min-height: 32px;
|
||||
border-top: 1px solid #AA6666;
|
||||
border-bottom: 1px solid #AA6666;
|
||||
background-color: #FFCCCC;
|
||||
background-image: url(error_message_icon.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 10px 10px;
|
||||
}
|
||||
|
||||
.warningmessage
|
||||
{
|
||||
background-image: url(warn_message_icon.png);
|
||||
border-color: #AAAA66;
|
||||
background-color: #FFFFCC;
|
||||
}
|
||||
|
||||
.donemessage
|
||||
{
|
||||
background-image: url(done_message_icon.png);
|
||||
border-color: #66AA66;
|
||||
background-color: #CCFFCC;
|
||||
}
|
||||
|
||||
.infomessage
|
||||
{
|
||||
background-image: url(info_message_icon.png);
|
||||
border-color: #6666AA;
|
||||
background-color: #CCCCFF;
|
||||
}
|
||||
|
||||
.welcomemessage {
|
||||
padding-left: 10px;
|
||||
border-color: #6666AA;
|
||||
background-color: #CCCCFF;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.errormessagesmall, .warningmessagesmall, .donemessagesmall, .infomessagesmall
|
||||
{
|
||||
padding: 5px;
|
||||
padding-left: 25px;
|
||||
min-height: 25px;
|
||||
border-top: 1px solid #AA6666;
|
||||
border-bottom: 1px solid #AA6666;
|
||||
background-color: #FFCCCC;
|
||||
background-image: url(error_small.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 5px 5px;
|
||||
}
|
||||
|
||||
.warningmessagesmall
|
||||
{
|
||||
background-image: url(warn_small.png);
|
||||
border-color: #AAAA66;
|
||||
background-color: #FFFFCC;
|
||||
}
|
||||
|
||||
.donemessagesmall
|
||||
{
|
||||
background-image: url(ok_small.png);
|
||||
border-color: #66AA66;
|
||||
background-color: #CCFFCC;
|
||||
}
|
||||
|
||||
.infomessagesmall
|
||||
{
|
||||
background-image: url(info_small.png);
|
||||
border-color: #6666AA;
|
||||
background-color: #CCCCFF;
|
||||
}
|
||||
|
||||
.errormark, .warningmark, .donemark, .infomark, .ok_bgr, .err_bgr
|
||||
{
|
||||
padding-left: 20px;
|
||||
min-height: 15px;
|
||||
background: url(error_small.png) no-repeat;
|
||||
}
|
||||
|
||||
.warningmark
|
||||
{
|
||||
background-image: url(warn_small.png);
|
||||
}
|
||||
|
||||
.donemark
|
||||
{
|
||||
background-image: url(ok_small.png);
|
||||
}
|
||||
|
||||
.infomark, .ok_bgr
|
||||
{
|
||||
background-image: url(info_small.png);
|
||||
}
|
||||
|
||||
table.colored
|
||||
{
|
||||
border-top: solid #d8b365 1px;
|
||||
border-bottom: solid #d8b365 1px;
|
||||
}
|
||||
|
||||
table.colored td
|
||||
{
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
table.colored tr.header
|
||||
{
|
||||
background: #ebd9b2;
|
||||
background-image: url(form_title_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
border-bottom: solid #d8b365 1px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.colored tr
|
||||
{
|
||||
background: white;
|
||||
}
|
||||
|
||||
div.debug
|
||||
{
|
||||
margin: 10px;
|
||||
padding: 5px;
|
||||
background: #FFFF99;
|
||||
border: solid #FFFF33 1px;
|
||||
color: black;
|
||||
}
|
||||
|
||||
div.odd_row
|
||||
{
|
||||
background: #FFFF99;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: fixed;
|
||||
background: #023858;
|
||||
width: 100%;
|
||||
left: 0px;
|
||||
bottom: 0px;
|
||||
color: white;
|
||||
z-index:10000;
|
||||
opacity:0.9;
|
||||
filter:alpha(opacity:90);
|
||||
}
|
||||
|
||||
#footer a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.footerheader
|
||||
{
|
||||
padding: 5px;
|
||||
text-align:center;
|
||||
background-image: url(footer_title_bg.png);
|
||||
background-position: bottom right;
|
||||
}
|
||||
|
||||
.footermenu
|
||||
{
|
||||
/*border-top: solid white 1px; */
|
||||
}
|
||||
|
||||
.footermenuitem
|
||||
{
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
margin-right: 5px;
|
||||
margin-left: 25px;
|
||||
display: list-item;
|
||||
list-style: square outside;
|
||||
}
|
||||
|
||||
.footermenumessage
|
||||
{
|
||||
margin: 5px;
|
||||
}
|
||||
|
After Width: | Height: | Size: 232 B |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 680 B |
|
After Width: | Height: | Size: 680 B |
|
After Width: | Height: | Size: 675 B |
|
After Width: | Height: | Size: 746 B |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 168 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 497 B |
|
After Width: | Height: | Size: 334 B |
|
After Width: | Height: | Size: 178 B |
|
After Width: | Height: | Size: 207 B |
|
After Width: | Height: | Size: 169 B |
|
After Width: | Height: | Size: 131 B |
|
After Width: | Height: | Size: 134 B |
@@ -0,0 +1,104 @@
|
||||
body
|
||||
{
|
||||
background: #C1C9E5;
|
||||
color: #303030;
|
||||
background-image: url(menu_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
margin-top: 5px;
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a
|
||||
{
|
||||
color: #base_text;
|
||||
}
|
||||
|
||||
div.historyLinks
|
||||
{
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
div.historyItem
|
||||
{
|
||||
margin: 5px;
|
||||
margin-right: 0px;
|
||||
padding: 5px;
|
||||
padding-right: 11px;
|
||||
|
||||
border: solid #888888 1px;
|
||||
border-left: solid #888888 5px;
|
||||
border-right: none;
|
||||
background: #EEEEEE;
|
||||
background-image: url(gray_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
}
|
||||
|
||||
div.historyItem div.historyItem
|
||||
{
|
||||
margin-right: -11px;
|
||||
}
|
||||
|
||||
div.historyItem-ok
|
||||
{
|
||||
border-color: #66AA66;
|
||||
background: #CCFFCC;
|
||||
/*
|
||||
background-image: url(ok_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
*/
|
||||
}
|
||||
|
||||
div.historyItem-error, div.historyItem-empty
|
||||
{
|
||||
border-color: #AA6666;
|
||||
background: #FFCCCC;
|
||||
/*
|
||||
background-image: url(error_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
*/
|
||||
}
|
||||
|
||||
div.historyItem-running
|
||||
{
|
||||
border-color: #AAAA66;
|
||||
background: #FFFFCC;
|
||||
/*
|
||||
background-image: url(warn_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
*/
|
||||
}
|
||||
|
||||
div.historyItem-queued
|
||||
{
|
||||
}
|
||||
|
||||
div.historyItemBody div
|
||||
{
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
pre.peek
|
||||
{
|
||||
background: white;
|
||||
color: black;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
pre.peek th
|
||||
{
|
||||
color: white;
|
||||
background: #023858;
|
||||
}
|
||||
|
After Width: | Height: | Size: 624 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 350 B |
@@ -0,0 +1,26 @@
|
||||
body
|
||||
{
|
||||
background: #2C3143 url(masthead_bg.png) bottom;
|
||||
color: #eeeeee;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 3px;
|
||||
margin-right: 5px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
div.pageTitle
|
||||
{
|
||||
font-size: 175%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.pageTitle a:link, div.pageTitle a:visited, div.pageTitle a:active, div.pageTitle a:hover
|
||||
{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:link, a:visited, a:active
|
||||
{
|
||||
color: #eeeeee;
|
||||
}
|
||||
|
After Width: | Height: | Size: 128 B |
|
After Width: | Height: | Size: 624 B |
|
After Width: | Height: | Size: 168 B |
|
After Width: | Height: | Size: 977 B |
|
After Width: | Height: | Size: 503 B |
|
After Width: | Height: | Size: 144 B |
@@ -0,0 +1,3 @@
|
||||
/* Copyright (c) 2007, Yahoo! Inc. All rights reserved. */
|
||||
body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}pre, code {font:115% monospace;*font-size:100%;}body * {line-height:1.22em;}
|
||||
/*body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;}*/
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
@@ -0,0 +1,46 @@
|
||||
body
|
||||
{
|
||||
background: white;
|
||||
color: #303030;
|
||||
background: #C1C9E5 url(menu_bg.png) top repeat-x;
|
||||
margin: 5px;
|
||||
margin-right: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
hr
|
||||
{
|
||||
border: none;
|
||||
height: 0px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
div.toolSectionPad
|
||||
{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 5px;
|
||||
font-size: 0px;
|
||||
}
|
||||
|
||||
div.toolSectionDetailsInner
|
||||
{
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
div.toolSectionTitle
|
||||
{
|
||||
padding-bottom: 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.toolTitle
|
||||
{
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
margin-left: 16px;
|
||||
margin-right: 10px;
|
||||
display: list-item;
|
||||
list-style: square outside;
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 562 B |
|
After Width: | Height: | Size: 169 B |
|
After Width: | Height: | Size: 682 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 416 B |
@@ -0,0 +1,53 @@
|
||||
base_text=#303030
|
||||
base_bg_top=#FFFFFF
|
||||
base_bg_bottom=#FFFFFF
|
||||
link_text=#303030
|
||||
header_text=#023858
|
||||
menu_bg_top=#DADFEF
|
||||
menu_bg_over=#C1C9E5
|
||||
menu_bg_hatch=-
|
||||
#menu_bg_hatch=#AAAAFF
|
||||
# Forms
|
||||
form_title_bg_top=#ebd9b2
|
||||
form_title_bg_bottom=#d2c099
|
||||
form_title_bg_hatch=-
|
||||
form_border=#d8b365
|
||||
#form_body_bg=#FFFFFF
|
||||
form_body_bg_top=#FFFFFF
|
||||
form_body_bg_bottom=#FFFFFF
|
||||
odd_row_bg=#FFFF99
|
||||
# Messages
|
||||
error_message_border=#AA6666
|
||||
error_message_bg=#FFCCCC
|
||||
warn_message_border=#AAAA66
|
||||
warn_message_bg=#FFFFCC
|
||||
done_message_border=#66AA66
|
||||
done_message_bg=#CCFFCC
|
||||
info_message_border=#6666AA
|
||||
info_message_bg=#CCCCFF
|
||||
# Tables
|
||||
table_header_bg=#ebd9b2
|
||||
table_row_bg=white
|
||||
table_border=#d8b365
|
||||
# Footers
|
||||
footer_bg=#023858
|
||||
footer_title_bg=#023858
|
||||
footer_title_hatch=#000000
|
||||
# History
|
||||
history_error_border=#AA6666
|
||||
history_error_bg=#FFCCCC
|
||||
history_running_border=#AAAA66
|
||||
history_running_bg=#FFFFCC
|
||||
history_ok_border=#66AA66
|
||||
history_ok_bg=#CCFFCC
|
||||
history_queued_border=#888888
|
||||
history_queued_bg=#EEEEEE
|
||||
peek_table_header=#023858
|
||||
# Masthead
|
||||
masthead_bg=#2C3143
|
||||
masthead_text=#eeeeee
|
||||
masthead_bg_hatch=-
|
||||
masthead_link=#eeeeee
|
||||
# Layout
|
||||
panel_header_bg_top=#f5f5f5
|
||||
panel_header_bg_bottom=#cccccc
|
||||
@@ -0,0 +1,50 @@
|
||||
base_text=#303030
|
||||
base_bg=#F4EBE2
|
||||
base_bg_top=#FFFFFF
|
||||
link_text=#303030
|
||||
header_text=#023858
|
||||
menu_bg_top=#EEEEFF
|
||||
menu_bg_over=#CCCCFF
|
||||
menu_bg_hatch=-
|
||||
#menu_bg_hatch=#AAAAFF
|
||||
# Forms
|
||||
form_title_bg=#FFFFFF
|
||||
form_title_bg_hatch=#d2c099
|
||||
form_border=#AAAACC
|
||||
form_body_bg=#FFFFDB
|
||||
odd_row_bg=#FFFF99
|
||||
# Messages
|
||||
error_message_border=#AA6666
|
||||
error_message_bg=#FFCCCC
|
||||
warn_message_border=#AAAA66
|
||||
warn_message_bg=#FFFFCC
|
||||
done_message_border=#66AA66
|
||||
done_message_bg=#CCFFCC
|
||||
info_message_border=#6666AA
|
||||
info_message_bg=#CCCCFF
|
||||
# Tables
|
||||
table_header_bg=#ebd9b2
|
||||
table_row_bg=white
|
||||
table_border=#d8b365
|
||||
# Footers
|
||||
footer_bg=#023858
|
||||
footer_title_bg=#023858
|
||||
footer_title_hatch=#000000
|
||||
# History
|
||||
history_error_border=#AA6666
|
||||
history_error_bg=#FFCCCC
|
||||
history_running_border=#AAAA66
|
||||
history_running_bg=#FFFFCC
|
||||
history_ok_border=#66AA66
|
||||
history_ok_bg=#CCFFCC
|
||||
history_queued_border=#888888
|
||||
history_queued_bg=#EEEEEE
|
||||
peek_table_header=#023858
|
||||
# Masthead
|
||||
masthead_bg=#011e30
|
||||
masthead_text=#eeeeee
|
||||
masthead_bg_hatch=-
|
||||
masthead_link=#eeeeee
|
||||
# Layout
|
||||
panel_header_bg_top=#f5f5f5
|
||||
panel_header_bg_bottom=#cccccc
|
||||
@@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="24in"
|
||||
height="4in"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.43"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/Users/james/Desktop"
|
||||
sodipodi:docname="galaxy_icons.svg"
|
||||
inkscape:export-filename="/Users/james/Desktop/galaxy_icons.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#66f266"
|
||||
borderopacity="1"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.87055056"
|
||||
inkscape:cx="1969.2512"
|
||||
inkscape:cy="134.59503"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:showpageshadow="false"
|
||||
showgrid="true"
|
||||
showguides="false"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="956"
|
||||
inkscape:window-height="784"
|
||||
inkscape:window-x="161"
|
||||
inkscape:window-y="46"
|
||||
inkscape:grid-points="true">
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="400"
|
||||
id="guide2200" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="320"
|
||||
id="guide2204" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="42"
|
||||
id="guide2206" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="41"
|
||||
id="guide2208" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="321"
|
||||
id="guide2210" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="678"
|
||||
id="guide2212" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="759"
|
||||
id="guide2214" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="1120"
|
||||
id="guide2218" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="1038.0328"
|
||||
id="guide2240" />
|
||||
<sodipodi:guide
|
||||
orientation="horizontal"
|
||||
position="179.60512"
|
||||
id="guide2274" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="1260.0643"
|
||||
id="guide2276" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="1482.0958"
|
||||
id="guide2336" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="1759.2817"
|
||||
id="guide2340" />
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="1841.3061"
|
||||
id="guide2363" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#04cd00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path1307"
|
||||
sodipodi:cx="205"
|
||||
sodipodi:cy="205"
|
||||
sodipodi:rx="134.28572"
|
||||
sodipodi:ry="134.28572"
|
||||
d="M 339.28572 205 A 134.28572 134.28572 0 1 1 70.714279,205 A 134.28572 134.28572 0 1 1 339.28572 205 z"
|
||||
transform="matrix(1.034976,0,0,1.034976,-31.24154,-32.6701)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#838383;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path2220"
|
||||
sodipodi:cx="205"
|
||||
sodipodi:cy="205"
|
||||
sodipodi:rx="134.28572"
|
||||
sodipodi:ry="134.28572"
|
||||
d="M 339.28572 205 A 134.28572 134.28572 0 1 1 70.714279,205 A 134.28572 134.28572 0 1 1 339.28572 205 z"
|
||||
transform="matrix(1.034976,0,0,1.034976,1047.812,-33.15258)" />
|
||||
<rect
|
||||
style="fill:#5050ff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2224"
|
||||
width="277"
|
||||
height="278"
|
||||
x="401"
|
||||
y="43"
|
||||
ry="103"
|
||||
rx="103" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 498.7868,172 L 541.58579,172 L 541.58579,278.00505"
|
||||
id="path2230"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:40.00038147;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2232"
|
||||
sodipodi:cx="501.33871"
|
||||
sodipodi:cy="84.935463"
|
||||
sodipodi:rx="6.3639612"
|
||||
sodipodi:ry="6.3639612"
|
||||
d="M 507.70268 84.935463 A 6.3639612 6.3639612 0 1 1 494.97475,84.935463 A 6.3639612 6.3639612 0 1 1 507.70268 84.935463 z"
|
||||
transform="matrix(1.0731,0,0,0.951722,-0.622656,25.52899)" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#ffb400;fill-opacity:1;stroke:none;stroke-width:50;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2254"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="885.29767"
|
||||
sodipodi:cy="14.931891"
|
||||
sodipodi:r1="517.84943"
|
||||
sodipodi:r2="344.36987"
|
||||
sodipodi:arg1="0.50762901"
|
||||
sodipodi:arg2="1.5548266"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0.22"
|
||||
inkscape:randomized="0"
|
||||
d="M 1337.846,266.66192 C 1289.0223,354.43494 991.22247,357.65394 890.79693,359.25785 C 790.37139,360.86176 492.62068,367.15437 441.01889,280.98526 C 389.41709,194.81614 535.52926,-64.695565 584.35301,-152.46859 C 633.17675,-240.24161 776.60255,-501.2476 877.02809,-502.8515 C 977.45363,-504.45541 1129.1413,-248.1627 1180.7431,-161.99359 C 1232.3449,-75.824474 1386.6698,178.8889 1337.846,266.66192 z "
|
||||
transform="matrix(0.306393,0,0,0.318225,624.2074,203.0224)" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 113.97056,196.98066 L 168.17157,236.85786 L 248.34315,104.65685"
|
||||
id="path2270"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 1177.1421,96.07107 L 1263.1421,190 L 1317.1217,162.2807"
|
||||
id="path2272"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2280"
|
||||
width="29.446899"
|
||||
height="21"
|
||||
x="1140.5531"
|
||||
y="170"
|
||||
ry="0" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2326"
|
||||
width="29.446899"
|
||||
height="21"
|
||||
x="1351.5531"
|
||||
y="169.77354"
|
||||
ry="0" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2328"
|
||||
width="29.446899"
|
||||
height="21"
|
||||
x="60.260208"
|
||||
y="-1271.2715"
|
||||
ry="0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2330"
|
||||
width="29.446899"
|
||||
height="21"
|
||||
x="270"
|
||||
y="-1270.5857"
|
||||
ry="0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2332"
|
||||
width="131"
|
||||
height="52"
|
||||
x="100"
|
||||
y="-920.58582"
|
||||
ry="0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2334"
|
||||
width="39.027634"
|
||||
height="52"
|
||||
x="250"
|
||||
y="-919.87872"
|
||||
ry="0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ff4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path2338"
|
||||
sodipodi:cx="205"
|
||||
sodipodi:cy="205"
|
||||
sodipodi:rx="134.28572"
|
||||
sodipodi:ry="134.28572"
|
||||
d="M 339.28572 205 A 134.28572 134.28572 0 1 1 70.714279,205 A 134.28572 134.28572 0 1 1 339.28572 205 z"
|
||||
transform="matrix(1.034976,0,0,1.034976,1409.347,-33.15258)" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 1552.0629,100.60072 L 1692.5138,254.57128"
|
||||
id="path2348"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 1692.5138,100.60072 L 1552.0629,254.57128"
|
||||
id="path2357"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#838383;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path2359"
|
||||
sodipodi:cx="205"
|
||||
sodipodi:cy="205"
|
||||
sodipodi:rx="134.28572"
|
||||
sodipodi:ry="134.28572"
|
||||
d="M 339.28572 205 A 134.28572 134.28572 0 1 1 70.714279,205 A 134.28572 134.28572 0 1 1 339.28572 205 z"
|
||||
transform="matrix(1.034976,0,0,1.034976,1768.416,-30.36099)" />
|
||||
<g
|
||||
id="g2389">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2373"
|
||||
d="M 1930,170.49538 L 1860,155 C 1857.0248,172.3719 1855.5,189.5625 1860,206 L 1930,189.58727 C 1929.1741,183.22331 1928.9462,176.85934 1930,170.49538 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2375"
|
||||
d="M 1941,146.46593 L 1888.1259,98.046542 C 1875.1851,112.76897 1868.0802,127.49141 1862.6259,142.21384 L 1931.4541,163 C 1933.471,155.74098 1937.1235,150.93552 1941,146.46593 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2377"
|
||||
d="M 1963.7479,130.36947 L 1942.1673,62 C 1927,66 1912.7224,73.141087 1898,87.50001 L 1947.2139,139.91545 C 1952.1833,135.10778 1957.8405,132.36324 1963.7479,130.36947 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g2394"
|
||||
transform="matrix(0,1,-1,0,2161,-1801.748)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2396"
|
||||
d="M 1930,170.49538 L 1860,155 C 1857.0248,172.3719 1855.5,189.5625 1860,206 L 1930,189.58727 C 1929.1741,183.22331 1928.9462,176.85934 1930,170.49538 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2398"
|
||||
d="M 1941,146.46593 L 1888.1259,98.046542 C 1875.1851,112.76897 1868.0802,127.49141 1862.6259,142.21384 L 1931.4541,163 C 1933.471,155.74098 1937.1235,150.93552 1941,146.46593 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2400"
|
||||
d="M 1963.7479,130.36947 L 1942.1673,62 C 1927,66 1912.7224,73.141087 1898,87.50001 L 1947.2139,139.91545 C 1952.1833,135.10778 1957.8405,132.36324 1963.7479,130.36947 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g2402"
|
||||
transform="matrix(-1,0,0,-1,3962.168,360.1885)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2404"
|
||||
d="M 1930,170.49538 L 1860,155 C 1857.0248,172.3719 1855.5,189.5625 1860,206 L 1930,189.58727 C 1929.1741,183.22331 1928.9462,176.85934 1930,170.49538 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2406"
|
||||
d="M 1941,146.46593 L 1888.1259,98.046542 C 1875.1851,112.76897 1868.0802,127.49141 1862.6259,142.21384 L 1931.4541,163 C 1933.471,155.74098 1937.1235,150.93552 1941,146.46593 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2408"
|
||||
d="M 1963.7479,130.36947 L 1942.1673,62 C 1927,66 1912.7224,73.141087 1898,87.50001 L 1947.2139,139.91545 C 1952.1833,135.10778 1957.8405,132.36324 1963.7479,130.36947 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g2410"
|
||||
transform="matrix(0,-1,1,0,1800.429,2161.522)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2412"
|
||||
d="M 1930,170.49538 L 1860,155 C 1857.0248,172.3719 1855.5,189.5625 1860,206 L 1930,189.58727 C 1929.1741,183.22331 1928.9462,176.85934 1930,170.49538 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2414"
|
||||
d="M 1941,146.46593 L 1888.1259,98.046542 C 1875.1851,112.76897 1868.0802,127.49141 1862.6259,142.21384 L 1931.4541,163 C 1933.471,155.74098 1937.1235,150.93552 1941,146.46593 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2416"
|
||||
d="M 1963.7479,130.36947 L 1942.1673,62 C 1927,66 1912.7224,73.141087 1898,87.50001 L 1947.2139,139.91545 C 1952.1833,135.10778 1957.8405,132.36324 1963.7479,130.36947 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env python2.4
|
||||
|
||||
"""
|
||||
usage: %prog width height bg_color hatch_color [color alpha stop_pos] +
|
||||
"""
|
||||
|
||||
from __future__ import division
|
||||
|
||||
import sys
|
||||
import cairo
|
||||
|
||||
def parse_css_color( color ):
|
||||
if color.startswith( '#' ):
|
||||
color = color[1:]
|
||||
if len( color ) == 3:
|
||||
r = int( color[0], 16 )
|
||||
g = int( color[1], 16 )
|
||||
b = int( color[2], 16 )
|
||||
elif len( color ) == 6:
|
||||
r = int( color[0:2], 16 )
|
||||
g = int( color[2:4], 16 )
|
||||
b = int( color[4:6], 16 )
|
||||
else:
|
||||
raise Exception( "Color should be 3 hex numbers" )
|
||||
return r/256, g/256, b/256
|
||||
|
||||
def gradient( width, height, args ):
|
||||
pat = cairo.LinearGradient(0.0, 0.0, 0.0, height)
|
||||
while len( args ) > 2:
|
||||
col = parse_css_color( args[0] )
|
||||
alpha = float( args[1])
|
||||
pos = float( args[2] )
|
||||
pat.add_color_stop_rgba( pos, col[0], col[1], col[2], alpha )
|
||||
args = args[3:]
|
||||
return pat
|
||||
|
||||
def hatch( width, height, color ):
|
||||
im_surf = cairo.ImageSurface( cairo.FORMAT_ARGB32, width, width )
|
||||
c = cairo.Context( im_surf )
|
||||
c.set_source_rgb ( *color )
|
||||
c.set_line_width( 0.75 )
|
||||
for i in range( 0, 2*max(height,width), 3 ):
|
||||
c.move_to ( 0-10, i+10 )
|
||||
c.line_to ( width+10, i - width - 10 )
|
||||
c.stroke()
|
||||
pat = cairo.SurfacePattern( im_surf )
|
||||
pat.set_extend (cairo.EXTEND_REPEAT)
|
||||
return pat
|
||||
|
||||
width = int( sys.argv[1] )
|
||||
height = int( sys.argv[2] )
|
||||
|
||||
surface = cairo.ImageSurface( cairo.FORMAT_ARGB32, width, height )
|
||||
c = cairo.Context( surface )
|
||||
|
||||
c.rectangle(0,0,width,height)
|
||||
c.set_source_rgb( *parse_css_color( sys.argv[3] ) )
|
||||
c.fill()
|
||||
|
||||
if sys.argv[4] != "-":
|
||||
c.rectangle (0, 0, width, height)
|
||||
c.set_source( hatch( width, height, parse_css_color( sys.argv[4] ) ) )
|
||||
c.fill()
|
||||
|
||||
pat = cairo.LinearGradient(0.0, 0.0, 0.0, height)
|
||||
pat.add_color_stop_rgba( 0, 1, 1, 1, 0 )
|
||||
pat.add_color_stop_rgba( 1, 1, 1, 1, 1 )
|
||||
c.rectangle (0, 0, width, height)
|
||||
c.set_source( gradient( width, height, sys.argv[5:] ) )
|
||||
c.fill()
|
||||
|
||||
surface.write_to_png( "/dev/stdout" )
|
||||
@@ -0,0 +1,104 @@
|
||||
body
|
||||
{
|
||||
background: $menu_bg_over;
|
||||
color: $base_text;
|
||||
background-image: url(menu_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
margin-top: 5px;
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a
|
||||
{
|
||||
color: #base_text;
|
||||
}
|
||||
|
||||
div.historyLinks
|
||||
{
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
div.historyItem
|
||||
{
|
||||
margin: 5px;
|
||||
margin-right: 0px;
|
||||
padding: 5px;
|
||||
padding-right: 11px;
|
||||
|
||||
border: solid $history_queued_border 1px;
|
||||
border-left: solid $history_queued_border 5px;
|
||||
border-right: none;
|
||||
background: $history_queued_bg;
|
||||
background-image: url(gray_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
}
|
||||
|
||||
div.historyItem div.historyItem
|
||||
{
|
||||
margin-right: -11px;
|
||||
}
|
||||
|
||||
div.historyItem-ok
|
||||
{
|
||||
border-color: $history_ok_border;
|
||||
background: $history_ok_bg;
|
||||
/*
|
||||
background-image: url(ok_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
*/
|
||||
}
|
||||
|
||||
div.historyItem-error, div.historyItem-empty
|
||||
{
|
||||
border-color: $history_error_border;
|
||||
background: $history_error_bg;
|
||||
/*
|
||||
background-image: url(error_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
*/
|
||||
}
|
||||
|
||||
div.historyItem-running
|
||||
{
|
||||
border-color: $history_running_border;
|
||||
background: $history_running_bg;
|
||||
/*
|
||||
background-image: url(warn_bg.png);
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
*/
|
||||
}
|
||||
|
||||
div.historyItem-queued
|
||||
{
|
||||
}
|
||||
|
||||
div.historyItemBody div
|
||||
{
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
pre.peek
|
||||
{
|
||||
background: white;
|
||||
color: black;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
pre.peek th
|
||||
{
|
||||
color: white;
|
||||
background: $peek_table_header;
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env python2.4
|
||||
|
||||
import sys
|
||||
from Cheetah.Template import Template
|
||||
import string
|
||||
from subprocess import Popen, PIPE
|
||||
import os.path
|
||||
|
||||
def run( cmd ):
|
||||
return Popen( cmd, stdout=PIPE).communicate()[0]
|
||||
|
||||
templates = [ ( "base.css.tmpl", "base.css" ),
|
||||
( "masthead.css.tmpl", "masthead.css"),
|
||||
( "history.css.tmpl", "history.css" ),
|
||||
( "tool_menu.css.tmpl", "tool_menu.css" ),
|
||||
( "reset.css.tmpl", "reset.css" ) ]
|
||||
|
||||
images = [
|
||||
( "./gradient.py 9 30 $panel_header_bg_top - $panel_header_bg_bottom 0 0 $panel_header_bg_bottom 1 1", "panel_header_bg.png" ),
|
||||
( "./gradient.py 9 1000 $menu_bg_top $menu_bg_hatch $menu_bg_over 0 0 $menu_bg_over 1 1", "menu_bg.png" ),
|
||||
( "./gradient.py 9 1000 $base_bg_top - $base_bg_bottom 0 0 $base_bg_bottom 1 1", "base_bg.png" ),
|
||||
( "./gradient.py 9 500 $form_body_bg_top - $form_body_bg_bottom 0 0 $form_body_bg_bottom 1 1", "form_body_bg.png" ),
|
||||
( "./gradient.py 9 50 $masthead_bg $masthead_bg_hatch", "masthead_bg.png" ),
|
||||
( "./gradient.py 9 30 $footer_title_bg $footer_title_hatch 000000 0 0.5 000000 1 1", "footer_title_bg.png" ),
|
||||
( "./gradient.py 9 50 $form_title_bg_top $form_title_bg_hatch $form_title_bg_bottom 0 0 $form_title_bg_bottom 1 1", "form_title_bg.png" ),
|
||||
( "./gradient.py 9 200 $history_ok_bg - FFFFFF 0 0.5 FFFFFF 0.5 1", "ok_bg.png" ),
|
||||
( "./gradient.py 9 200 $history_error_bg - FFFFFF 0 0.5 FFFFFF 0.5 1", "error_bg.png" ),
|
||||
( "./gradient.py 9 200 $history_running_bg - FFFFFF 0 0.5 FFFFFF 0.5 1", "warn_bg.png" ),
|
||||
( "./gradient.py 9 200 $history_queued_bg - FFFFFF 0 0.5 FFFFFF 0.5 1", "gray_bg.png" ) ]
|
||||
|
||||
shared_images = [
|
||||
# Dialog boxes
|
||||
( "ok_large.png", "done_message_bg", "done_message_icon.png" ),
|
||||
( "info_large.png", "info_message_bg", "info_message_icon.png" ),
|
||||
( "warn_large.png", "warn_message_bg", "warn_message_icon.png" ),
|
||||
( "error_large.png", "error_message_bg", "error_message_icon.png" ),
|
||||
# History icons
|
||||
( "ok_small.png", "history_ok_bg", "data_ok.png" ),
|
||||
( "error_small.png", "history_error_bg", "data_error.png" ),
|
||||
( "wait_small.png", "history_queued_bg", "data_queued.png" ) ]
|
||||
|
||||
|
||||
vars, out_dir = sys.argv[1:]
|
||||
|
||||
context = dict()
|
||||
for line in open( vars ):
|
||||
if line.startswith( '#' ):
|
||||
continue
|
||||
key, value = line.rstrip("\r\n").split( '=' )
|
||||
if value.startswith( '"' ) and value.endswith( '"' ):
|
||||
value = value[1:-1]
|
||||
context[key] = value
|
||||
|
||||
for input, output in templates:
|
||||
print input ,"->", output
|
||||
open( os.path.join( out_dir, output ), "w" ).write( str( Template( file=input, searchList=[context] ) ) )
|
||||
|
||||
for rule, output in images:
|
||||
t = string.Template( rule ).substitute( context )
|
||||
print t, "->", output
|
||||
open( os.path.join( out_dir, output ), "w" ).write( run( t.split() ) )
|
||||
|
||||
for src, bg, out in shared_images:
|
||||
t = "./png_over_color.py shared_images/%s %s %s" % ( src, context[bg], os.path.join( out_dir, out ) )
|
||||
print t
|
||||
run( t.split() )
|
||||
@@ -0,0 +1,26 @@
|
||||
body
|
||||
{
|
||||
background: $masthead_bg url(masthead_bg.png) bottom;
|
||||
color: $masthead_text;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 3px;
|
||||
margin-right: 5px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
div.pageTitle
|
||||
{
|
||||
font-size: 175%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.pageTitle a:link, div.pageTitle a:visited, div.pageTitle a:active, div.pageTitle a:hover
|
||||
{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:link, a:visited, a:active
|
||||
{
|
||||
color: $masthead_link;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env python2.4
|
||||
|
||||
import sys
|
||||
import Image
|
||||
import ImageColor
|
||||
|
||||
over = Image.open( sys.argv[1] )
|
||||
color = ImageColor.getrgb( sys.argv[2] )
|
||||
|
||||
new = Image.new( 'RGBA', over.size, color )
|
||||
|
||||
# 'Over' is passed twice since it has an alpha channel -- it is it's own mask
|
||||
new.paste( over, over )
|
||||
|
||||
new.save( sys.argv[3] )
|
||||
@@ -0,0 +1,3 @@
|
||||
/* Copyright (c) 2007, Yahoo! Inc. All rights reserved. */
|
||||
body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}pre, code {font:115% monospace;*font-size:100%;}body * {line-height:1.22em;}
|
||||
/*body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;}*/
|
||||
|
After Width: | Height: | Size: 497 B |
|
After Width: | Height: | Size: 497 B |
|
After Width: | Height: | Size: 503 B |
|
After Width: | Height: | Size: 562 B |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 497 B |
|
After Width: | Height: | Size: 624 B |
|
After Width: | Height: | Size: 350 B |
|
After Width: | Height: | Size: 977 B |
|
After Width: | Height: | Size: 503 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 562 B |
|
After Width: | Height: | Size: 682 B |
|
After Width: | Height: | Size: 416 B |
@@ -0,0 +1,46 @@
|
||||
body
|
||||
{
|
||||
background: white;
|
||||
color: $base_text;
|
||||
background: $menu_bg_over url(menu_bg.png) top repeat-x;
|
||||
margin: 5px;
|
||||
margin-right: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
hr
|
||||
{
|
||||
border: none;
|
||||
height: 0px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
div.toolSectionPad
|
||||
{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 5px;
|
||||
font-size: 0px;
|
||||
}
|
||||
|
||||
div.toolSectionDetailsInner
|
||||
{
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
div.toolSectionTitle
|
||||
{
|
||||
padding-bottom: 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.toolTitle
|
||||
{
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
margin-left: 16px;
|
||||
margin-right: 10px;
|
||||
display: list-item;
|
||||
list-style: square outside;
|
||||
}
|
||||
@@ -0,0 +1,574 @@
|
||||
/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
|
||||
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
||||
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
||||
*
|
||||
* $LastChangedDate: 2007-07-01 21:19:35 -0400 (Sun, 01 Jul 2007) $
|
||||
* $Rev: 2209 $
|
||||
*
|
||||
* Version: 1.0rc1
|
||||
*/
|
||||
|
||||
(function($){
|
||||
|
||||
// store a copy of the core height and width methods
|
||||
var height = $.fn.height,
|
||||
width = $.fn.width;
|
||||
|
||||
$.fn.extend({
|
||||
/**
|
||||
* If used on document, returns the document's height (innerHeight).
|
||||
* If used on window, returns the viewport's (window) height.
|
||||
* See core docs on height() to see what happens when used on an element.
|
||||
*
|
||||
* @example $("#testdiv").height()
|
||||
* @result 200
|
||||
*
|
||||
* @example $(document).height()
|
||||
* @result 800
|
||||
*
|
||||
* @example $(window).height()
|
||||
* @result 400
|
||||
*
|
||||
* @name height
|
||||
* @type Number
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
height: function() {
|
||||
if ( this[0] == window )
|
||||
return self.innerHeight ||
|
||||
$.boxModel && document.documentElement.clientHeight ||
|
||||
document.body.clientHeight;
|
||||
|
||||
if ( this[0] == document )
|
||||
return Math.max( document.body.scrollHeight, document.body.offsetHeight );
|
||||
|
||||
return height.apply(this, arguments);
|
||||
},
|
||||
|
||||
/**
|
||||
* If used on document, returns the document's width (innerWidth).
|
||||
* If used on window, returns the viewport's (window) width.
|
||||
* See core docs on width() to see what happens when used on an element.
|
||||
*
|
||||
* @example $("#testdiv").width()
|
||||
* @result 200
|
||||
*
|
||||
* @example $(document).width()
|
||||
* @result 800
|
||||
*
|
||||
* @example $(window).width()
|
||||
* @result 400
|
||||
*
|
||||
* @name width
|
||||
* @type Number
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
width: function() {
|
||||
if ( this[0] == window )
|
||||
return self.innerWidth ||
|
||||
$.boxModel && document.documentElement.clientWidth ||
|
||||
document.body.clientWidth;
|
||||
|
||||
if ( this[0] == document )
|
||||
return Math.max( document.body.scrollWidth, document.body.offsetWidth );
|
||||
|
||||
return width.apply(this, arguments);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the inner height value (without the border) for the first matched element.
|
||||
* If used on document, returns the document's height (innerHeight).
|
||||
* If used on window, returns the viewport's (window) height.
|
||||
*
|
||||
* @example $("#testdiv").innerHeight()
|
||||
* @result 210
|
||||
*
|
||||
* @name innerHeight
|
||||
* @type Number
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
innerHeight: function() {
|
||||
return this[0] == window || this[0] == document ?
|
||||
this.height() :
|
||||
this.is(':visible') ?
|
||||
this[0].offsetHeight - num(this, 'borderTopWidth') - num(this, 'borderBottomWidth') :
|
||||
this.height() + num(this, 'paddingTop') + num(this, 'paddingBottom');
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the inner width value (without the border) for the first matched element.
|
||||
* If used on document, returns the document's width (innerWidth).
|
||||
* If used on window, returns the viewport's (window) width.
|
||||
*
|
||||
* @example $("#testdiv").innerWidth()
|
||||
* @result 210
|
||||
*
|
||||
* @name innerWidth
|
||||
* @type Number
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
innerWidth: function() {
|
||||
return this[0] == window || this[0] == document ?
|
||||
this.width() :
|
||||
this.is(':visible') ?
|
||||
this[0].offsetWidth - num(this, 'borderLeftWidth') - num(this, 'borderRightWidth') :
|
||||
this.width() + num(this, 'paddingLeft') + num(this, 'paddingRight');
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the outer height value (including the border) for the first matched element.
|
||||
* If used on document, returns the document's height (innerHeight).
|
||||
* If used on window, returns the viewport's (window) height.
|
||||
*
|
||||
* @example $("#testdiv").outerHeight()
|
||||
* @result 220
|
||||
*
|
||||
* @name outerHeight
|
||||
* @type Number
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
outerHeight: function() {
|
||||
return this[0] == window || this[0] == document ?
|
||||
this.height() :
|
||||
this.is(':visible') ?
|
||||
this[0].offsetHeight :
|
||||
this.height() + num(this,'borderTopWidth') + num(this, 'borderBottomWidth') + num(this, 'paddingTop') + num(this, 'paddingBottom');
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the outer width value (including the border) for the first matched element.
|
||||
* If used on document, returns the document's width (innerWidth).
|
||||
* If used on window, returns the viewport's (window) width.
|
||||
*
|
||||
* @example $("#testdiv").outerHeight()
|
||||
* @result 1000
|
||||
*
|
||||
* @name outerHeight
|
||||
* @type Number
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
outerWidth: function() {
|
||||
return this[0] == window || this[0] == document ?
|
||||
this.width() :
|
||||
this.is(':visible') ?
|
||||
this[0].offsetWidth :
|
||||
this.width() + num(this, 'borderLeftWidth') + num(this, 'borderRightWidth') + num(this, 'paddingLeft') + num(this, 'paddingRight');
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns how many pixels the user has scrolled to the right (scrollLeft).
|
||||
* Works on containers with overflow: auto and window/document.
|
||||
*
|
||||
* @example $(window).scrollLeft()
|
||||
* @result 100
|
||||
*
|
||||
* @example $(document).scrollLeft()
|
||||
* @result 100
|
||||
*
|
||||
* @example $("#testdiv").scrollLeft()
|
||||
* @result 100
|
||||
*
|
||||
* @name scrollLeft
|
||||
* @type Number
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
/**
|
||||
* Sets the scrollLeft property for each element and continues the chain.
|
||||
* Works on containers with overflow: auto and window/document.
|
||||
*
|
||||
* @example $(window).scrollLeft(100).scrollLeft()
|
||||
* @result 100
|
||||
*
|
||||
* @example $(document).scrollLeft(100).scrollLeft()
|
||||
* @result 100
|
||||
*
|
||||
* @example $("#testdiv").scrollLeft(100).scrollLeft()
|
||||
* @result 100
|
||||
*
|
||||
* @name scrollLeft
|
||||
* @param Number value A positive number representing the desired scrollLeft.
|
||||
* @type jQuery
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
scrollLeft: function(val) {
|
||||
if ( val != undefined )
|
||||
// set the scroll left
|
||||
return this.each(function() {
|
||||
if (this == window || this == document)
|
||||
window.scrollTo( val, $(window).scrollTop() );
|
||||
else
|
||||
this.scrollLeft = val;
|
||||
});
|
||||
|
||||
// return the scroll left offest in pixels
|
||||
if ( this[0] == window || this[0] == document )
|
||||
return self.pageXOffset ||
|
||||
$.boxModel && document.documentElement.scrollLeft ||
|
||||
document.body.scrollLeft;
|
||||
|
||||
return this[0].scrollLeft;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns how many pixels the user has scrolled to the bottom (scrollTop).
|
||||
* Works on containers with overflow: auto and window/document.
|
||||
*
|
||||
* @example $(window).scrollTop()
|
||||
* @result 100
|
||||
*
|
||||
* @example $(document).scrollTop()
|
||||
* @result 100
|
||||
*
|
||||
* @example $("#testdiv").scrollTop()
|
||||
* @result 100
|
||||
*
|
||||
* @name scrollTop
|
||||
* @type Number
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
/**
|
||||
* Sets the scrollTop property for each element and continues the chain.
|
||||
* Works on containers with overflow: auto and window/document.
|
||||
*
|
||||
* @example $(window).scrollTop(100).scrollTop()
|
||||
* @result 100
|
||||
*
|
||||
* @example $(document).scrollTop(100).scrollTop()
|
||||
* @result 100
|
||||
*
|
||||
* @example $("#testdiv").scrollTop(100).scrollTop()
|
||||
* @result 100
|
||||
*
|
||||
* @name scrollTop
|
||||
* @param Number value A positive number representing the desired scrollTop.
|
||||
* @type jQuery
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
scrollTop: function(val) {
|
||||
if ( val != undefined )
|
||||
// set the scroll top
|
||||
return this.each(function() {
|
||||
if (this == window || this == document)
|
||||
window.scrollTo( $(window).scrollLeft(), val );
|
||||
else
|
||||
this.scrollTop = val;
|
||||
});
|
||||
|
||||
// return the scroll top offset in pixels
|
||||
if ( this[0] == window || this[0] == document )
|
||||
return self.pageYOffset ||
|
||||
$.boxModel && document.documentElement.scrollTop ||
|
||||
document.body.scrollTop;
|
||||
|
||||
return this[0].scrollTop;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the top and left positioned offset in pixels.
|
||||
* The positioned offset is the offset between a positioned
|
||||
* parent and the element itself. The position method takes
|
||||
* an optional map of key value pairs to configure the way
|
||||
* the offset is calculated. Here are the different options.
|
||||
*
|
||||
* (Boolean) margin - Should the margin of the element be included in the calculations? False by default.
|
||||
* (Boolean) border - Should the border of the element be included in the calculations? False by default.
|
||||
* (Boolean) padding - Should the padding of the element be included in the calcuations? False by default.
|
||||
* (Boolean) scroll - Sould the scroll offsets of the parent elements be included int he calculations? False by default.
|
||||
* When true it adds the total scroll offsets of all parents to the total offset and also adds two
|
||||
* properties to the returned object, scrollTop and scrollLeft.
|
||||
*
|
||||
* Also an object can be passed as the second paramater to
|
||||
* catch the value of the return and continue the chain.
|
||||
*
|
||||
* For accurate readings make sure to use pixel values for margins, borders and padding.
|
||||
*
|
||||
* @example $("#testdiv").position()
|
||||
* @result { top: 100, left: 100 }
|
||||
*
|
||||
* @example $("#testdiv").position({ margin: true, border: true, padding: true })
|
||||
* @result { top: 90, left: 90 }
|
||||
*
|
||||
* @example var position = {};
|
||||
* $("#testdiv").position({}, position)
|
||||
* @result position = { top: 100, left: 100 }
|
||||
*
|
||||
* @name position
|
||||
* @param Map options Optional settings to configure the way the offset is calculated.
|
||||
* @param Object returnObject Optional An object to store the return value in, so as not to break the chain. If passed in the
|
||||
* chain will not be broken and the result will be assigned to this object.
|
||||
* @type Object
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
position: function(options, returnObject) {
|
||||
var elem = this[0], parent = elem.parentNode, op = elem.offsetParent,
|
||||
options = $.extend({ margin: false, border: false, padding: false, scroll: false }, options || {}),
|
||||
x = elem.offsetLeft,
|
||||
y = elem.offsetTop,
|
||||
sl = elem.scrollLeft,
|
||||
st = elem.scrollTop;
|
||||
|
||||
// Mozilla and IE do not add the border
|
||||
if ($.browser.mozilla || $.browser.msie) {
|
||||
// add borders to offset
|
||||
x += num(elem, 'borderLeftWidth');
|
||||
y += num(elem, 'borderTopWidth');
|
||||
}
|
||||
|
||||
// Safari and opera includes border on positioned parents
|
||||
if (($.browser.safari || $.browser.opera) && $.css(op, 'position') != 'static') {
|
||||
x -= num(op, 'borderLeftWidth');
|
||||
y -= num(op, 'borderTopWidth');
|
||||
}
|
||||
|
||||
if ($.browser.mozilla) {
|
||||
do {
|
||||
// Mozilla does not add the border for a parent that has overflow set to anything but visible
|
||||
if (parent != elem && $.css(parent, 'overflow') != 'visible') {
|
||||
x += num(parent, 'borderLeftWidth');
|
||||
y += num(parent, 'borderTopWidth');
|
||||
}
|
||||
|
||||
if (parent == op) break; // break if we are already at the offestParent
|
||||
} while ((parent = parent.parentNode) && parent.tagName != 'BODY');
|
||||
}
|
||||
|
||||
if ($.browser.msie && (op.tagName != 'BODY' && $.css(op, 'position') == 'static')) {
|
||||
do {
|
||||
x += op.offsetLeft;
|
||||
y += op.offsetTop;
|
||||
// add borders to offset
|
||||
x += num(op, 'borderLeftWidth');
|
||||
y += num(op, 'borderTopWidth');
|
||||
} while ((op = op.offsetParent) && (op.tagName != 'BODY' && $.css(op, 'position') == 'static'));
|
||||
}
|
||||
|
||||
var returnValue = handleOffsetReturn(elem, options, x, y, sl, st);
|
||||
|
||||
if (returnObject) { $.extend(returnObject, returnValue); return this; }
|
||||
else { return returnValue; }
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the location of the element in pixels from the top left corner of the viewport.
|
||||
* The offset method takes an optional map of key value pairs to configure the way
|
||||
* the offset is calculated. Here are the different options.
|
||||
*
|
||||
* (Boolean) margin - Should the margin of the element be included in the calculations? True by default.
|
||||
* (Boolean) border - Should the border of the element be included in the calculations? False by default.
|
||||
* (Boolean) padding - Should the padding of the element be included in the calcuations? False by default.
|
||||
* (Boolean) scroll - Sould the scroll offsets of the parent elements be included int he calculations? True by default.
|
||||
* When true it adds the total scroll offsets of all parents to the total offset and also adds two
|
||||
* properties to the returned object, scrollTop and scrollLeft.
|
||||
* (Boolean) lite - When true it will use the offsetLite method instead of the full-blown, slower offset method. False by default.
|
||||
* Only use this when margins, borders and padding calculations don't matter.
|
||||
*
|
||||
* Also an object can be passed as the second paramater to
|
||||
* catch the value of the return and continue the chain.
|
||||
*
|
||||
* For accurate readings make sure to use pixel values for margins, borders and padding.
|
||||
*
|
||||
* Known issues:
|
||||
* - Issue: A div positioned relative or static without any content before it and its parent will report an offsetTop of 0 in Safari
|
||||
* Workaround: Place content before the relative div ... and set height and width to 0 and overflow to hidden
|
||||
*
|
||||
* @example $("#testdiv").offset()
|
||||
* @result { top: 100, left: 100, scrollTop: 10, scrollLeft: 10 }
|
||||
*
|
||||
* @example $("#testdiv").offset({ scroll: false })
|
||||
* @result { top: 90, left: 90 }
|
||||
*
|
||||
* @example var offset = {}
|
||||
* $("#testdiv").offset({ scroll: false }, offset)
|
||||
* @result offset = { top: 90, left: 90 }
|
||||
*
|
||||
* @name offset
|
||||
* @param Map options Optional settings to configure the way the offset is calculated.
|
||||
* @param Object returnObject An object to store the return value in, so as not to break the chain. If passed in the
|
||||
* chain will not be broken and the result will be assigned to this object.
|
||||
* @type Object
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
offset: function(options, returnObject) {
|
||||
var x = 0, y = 0, sl = 0, st = 0,
|
||||
elem = this[0], parent = this[0], op, parPos, elemPos = $.css(elem, 'position'),
|
||||
mo = $.browser.mozilla, ie = $.browser.msie, sf = $.browser.safari, oa = $.browser.opera,
|
||||
absparent = false, relparent = false,
|
||||
options = $.extend({ margin: true, border: false, padding: false, scroll: true, lite: false }, options || {});
|
||||
|
||||
// Use offsetLite if lite option is true
|
||||
if (options.lite) return this.offsetLite(options, returnObject);
|
||||
|
||||
if (elem.tagName == 'BODY') {
|
||||
// Safari is the only one to get offsetLeft and offsetTop properties of the body "correct"
|
||||
// Except they all mess up when the body is positioned absolute or relative
|
||||
x = elem.offsetLeft;
|
||||
y = elem.offsetTop;
|
||||
// Mozilla ignores margin and subtracts border from body element
|
||||
if (mo) {
|
||||
x += num(elem, 'marginLeft') + (num(elem, 'borderLeftWidth')*2);
|
||||
y += num(elem, 'marginTop') + (num(elem, 'borderTopWidth') *2);
|
||||
} else
|
||||
// Opera ignores margin
|
||||
if (oa) {
|
||||
x += num(elem, 'marginLeft');
|
||||
y += num(elem, 'marginTop');
|
||||
} else
|
||||
// IE does not add the border in Standards Mode
|
||||
if (ie && jQuery.boxModel) {
|
||||
x += num(elem, 'borderLeftWidth');
|
||||
y += num(elem, 'borderTopWidth');
|
||||
}
|
||||
} else {
|
||||
do {
|
||||
parPos = $.css(parent, 'position');
|
||||
|
||||
x += parent.offsetLeft;
|
||||
y += parent.offsetTop;
|
||||
|
||||
// Mozilla and IE do not add the border
|
||||
if (mo || ie) {
|
||||
// add borders to offset
|
||||
x += num(parent, 'borderLeftWidth');
|
||||
y += num(parent, 'borderTopWidth');
|
||||
|
||||
// Mozilla does not include the border on body if an element isn't positioned absolute and is without an absolute parent
|
||||
if (mo && parPos == 'absolute') absparent = true;
|
||||
// IE does not include the border on the body if an element is position static and without an absolute or relative parent
|
||||
if (ie && parPos == 'relative') relparent = true;
|
||||
}
|
||||
|
||||
op = parent.offsetParent;
|
||||
if (options.scroll || mo) {
|
||||
do {
|
||||
if (options.scroll) {
|
||||
// get scroll offsets
|
||||
sl += parent.scrollLeft;
|
||||
st += parent.scrollTop;
|
||||
}
|
||||
|
||||
// Mozilla does not add the border for a parent that has overflow set to anything but visible
|
||||
if (mo && parent != elem && $.css(parent, 'overflow') != 'visible') {
|
||||
x += num(parent, 'borderLeftWidth');
|
||||
y += num(parent, 'borderTopWidth');
|
||||
}
|
||||
|
||||
parent = parent.parentNode;
|
||||
} while (parent != op);
|
||||
}
|
||||
parent = op;
|
||||
|
||||
if (parent.tagName == 'BODY' || parent.tagName == 'HTML') {
|
||||
// Safari and IE Standards Mode doesn't add the body margin for elments positioned with static or relative
|
||||
if ((sf || (ie && $.boxModel)) && elemPos != 'absolute' && elemPos != 'fixed') {
|
||||
x += num(parent, 'marginLeft');
|
||||
y += num(parent, 'marginTop');
|
||||
}
|
||||
// Mozilla does not include the border on body if an element isn't positioned absolute and is without an absolute parent
|
||||
// IE does not include the border on the body if an element is positioned static and without an absolute or relative parent
|
||||
if ( (mo && !absparent && elemPos != 'fixed') ||
|
||||
(ie && elemPos == 'static' && !relparent) ) {
|
||||
x += num(parent, 'borderLeftWidth');
|
||||
y += num(parent, 'borderTopWidth');
|
||||
}
|
||||
break; // Exit the loop
|
||||
}
|
||||
} while (parent);
|
||||
}
|
||||
|
||||
var returnValue = handleOffsetReturn(elem, options, x, y, sl, st);
|
||||
|
||||
if (returnObject) { $.extend(returnObject, returnValue); return this; }
|
||||
else { return returnValue; }
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the location of the element in pixels from the top left corner of the viewport.
|
||||
* This method is much faster than offset but not as accurate. This method can be invoked
|
||||
* by setting the lite option to true in the offset method.
|
||||
* The offsetLite method takes an optional map of key value pairs to configure the way
|
||||
* the offset is calculated. Here are the different options.
|
||||
*
|
||||
* (Boolean) margin - Should the margin of the element be included in the calculations? True by default.
|
||||
* (Boolean) border - Should the border of the element be included in the calculations? False by default.
|
||||
* (Boolean) padding - Should the padding of the element be included in the calcuations? False by default.
|
||||
* (Boolean) scroll - Sould the scroll offsets of the parent elements be included int he calculations? True by default.
|
||||
* When true it adds the total scroll offsets of all parents to the total offset and also adds two
|
||||
* properties to the returned object, scrollTop and scrollLeft.
|
||||
*
|
||||
* @name offsetLite
|
||||
* @param Map options Optional settings to configure the way the offset is calculated.
|
||||
* @param Object returnObject An object to store the return value in, so as not to break the chain. If passed in the
|
||||
* chain will not be broken and the result will be assigned to this object.
|
||||
* @type Object
|
||||
* @cat Plugins/Dimensions
|
||||
*/
|
||||
offsetLite: function(options, returnObject) {
|
||||
var x = 0, y = 0, sl = 0, st = 0, parent = this[0], op,
|
||||
options = $.extend({ margin: true, border: false, padding: false, scroll: true }, options || {});
|
||||
|
||||
do {
|
||||
x += parent.offsetLeft;
|
||||
y += parent.offsetTop;
|
||||
|
||||
op = parent.offsetParent;
|
||||
if (options.scroll) {
|
||||
// get scroll offsets
|
||||
do {
|
||||
sl += parent.scrollLeft;
|
||||
st += parent.scrollTop;
|
||||
parent = parent.parentNode;
|
||||
} while(parent != op);
|
||||
}
|
||||
parent = op;
|
||||
} while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML');
|
||||
|
||||
var returnValue = handleOffsetReturn(this[0], options, x, y, sl, st);
|
||||
|
||||
if (returnObject) { $.extend(returnObject, returnValue); return this; }
|
||||
else { return returnValue; }
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Handles converting a CSS Style into an Integer.
|
||||
* @private
|
||||
*/
|
||||
var num = function(el, prop) {
|
||||
return parseInt($.css(el.jquery?el[0]:el,prop))||0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles the return value of the offset and offsetLite methods.
|
||||
* @private
|
||||
*/
|
||||
var handleOffsetReturn = function(elem, options, x, y, sl, st) {
|
||||
if ( !options.margin ) {
|
||||
x -= num(elem, 'marginLeft');
|
||||
y -= num(elem, 'marginTop');
|
||||
}
|
||||
|
||||
// Safari and Opera do not add the border for the element
|
||||
if ( options.border && ($.browser.safari || $.browser.opera) ) {
|
||||
x += num(elem, 'borderLeftWidth');
|
||||
y += num(elem, 'borderTopWidth');
|
||||
} else if ( !options.border && !($.browser.safari || $.browser.opera) ) {
|
||||
x -= num(elem, 'borderLeftWidth');
|
||||
y -= num(elem, 'borderTopWidth');
|
||||
}
|
||||
|
||||
if ( options.padding ) {
|
||||
x += num(elem, 'paddingLeft');
|
||||
y += num(elem, 'paddingTop');
|
||||
}
|
||||
|
||||
// do not include scroll offset on the element
|
||||
if ( options.scroll ) {
|
||||
sl -= elem.scrollLeft;
|
||||
st -= elem.scrollTop;
|
||||
}
|
||||
|
||||
return options.scroll ? { top: y - st, left: x - sl, scrollTop: st, scrollLeft: sl }
|
||||
: { top: y, left: x };
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,230 @@
|
||||
|
||||
(function($) {
|
||||
//drag and drop manager
|
||||
$.DDM = {
|
||||
|
||||
//define a new draggable behavior
|
||||
drag: function(el, options) {
|
||||
el.DB = new $.dragBehavior(el, options);
|
||||
},
|
||||
|
||||
//define a new droppable behavior
|
||||
drop: function(el, options) {
|
||||
el.DrB = new $.dropBehavior(el, options);
|
||||
},
|
||||
|
||||
//drop targets
|
||||
targets: [],
|
||||
|
||||
//current pointer position
|
||||
pointer: null,
|
||||
|
||||
shiftKey: false,
|
||||
altKey: false,
|
||||
ctrlKey: false,
|
||||
|
||||
//dragged element/elements
|
||||
dragged: null,
|
||||
|
||||
//timeout holder
|
||||
preventionTimeout: null,
|
||||
|
||||
mouseMove: function(e) {
|
||||
if (!$.DDM.dragged) {
|
||||
return false;
|
||||
}
|
||||
if (e) {
|
||||
//store current event target
|
||||
$.DDM.currentTarget = e.target;
|
||||
|
||||
//store pointer position
|
||||
$.DDM.pointer = $.DDM.dragged.DB.getPointer.apply($.DDM.dragged,[e]);
|
||||
$.DDM.shiftKey = e.shiftKey;
|
||||
$.DDM.altKey = e.altKey;
|
||||
$.DDM.ctrlKey = e.ctrlKey;
|
||||
}
|
||||
|
||||
//if the pointer was not moved enough do not start the dragging action
|
||||
if (!$.DDM.dragged.DB.dragThreshMet) {
|
||||
var snap = Math.max(
|
||||
Math.abs($.DDM.pointer.x - $.DDM.dragged.DB.pointer.x),
|
||||
Math.abs($.DDM.pointer.y - $.DDM.dragged.DB.pointer.y)
|
||||
);
|
||||
if (snap >= $.DDM.dragged.DB.snap) {
|
||||
return $.DDM.startDrag(e);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
$.DDM.dragged.DB.beforeDrag.apply($.DDM.dragged, [e]);
|
||||
var toReturn = $.DDM.dragged.DB.drag.apply($.DDM.dragged, [e]);
|
||||
|
||||
//checks if dragged element validates against drop targets
|
||||
if ($.DDM.dragged.DB.hasTargets) {
|
||||
for (var i=0; i< $.DDM.dragged.DB.targets.length; i++) {
|
||||
$.DDM.dragged.DB.targets[i].DrB.checkTarget.apply($.DDM.dragged.DB.targets[i], [e]);
|
||||
}
|
||||
}
|
||||
|
||||
if (toReturn === false) {
|
||||
return false;
|
||||
}
|
||||
return;
|
||||
},
|
||||
|
||||
mouseUp: function(e) {
|
||||
if (!$.DDM.dragged)
|
||||
return;
|
||||
$.DDM.currentTarget = e.target;
|
||||
var toReturn = true;
|
||||
var dragged = $.DDM.dragged ;
|
||||
clearTimeout($.DDM.preventionTimeout);
|
||||
|
||||
//if the dragging action started
|
||||
if (dragged.DB.dragThreshMet) {
|
||||
dragged.DB.beforeStopDrag.apply(dragged,[e]);
|
||||
toReturn = dragged.DB.stopDrag.apply(dragged,[e]);
|
||||
} else {
|
||||
if(dragged.DB.proxy) { $(dragged.DB.proxy).remove(); }
|
||||
dragged.DB.onClickOnly.apply(dragged,[e]);
|
||||
}
|
||||
|
||||
$.DDM.clearTargets(e);
|
||||
$.DDM.clearOptions();
|
||||
|
||||
$(document).unbind('mousemove', $.DDM.mouseMove);
|
||||
$(document).unbind('mouseup', $.DDM.mouseUp);
|
||||
|
||||
return toReturn;
|
||||
},
|
||||
//start the dragging action
|
||||
startDrag: function(e) {
|
||||
if (!$.DDM.dragged)
|
||||
return;
|
||||
$.DDM.dragged.DB.dragThreshMet = true;
|
||||
clearTimeout($.DDM.preventionTimeout );
|
||||
$.DDM.dragged.DB.beforeStartDrag.apply($.DDM.dragged, [e]);
|
||||
|
||||
return $.DDM.dragged.DB.startDrag.apply($.DDM.dragged, [e]);
|
||||
},
|
||||
|
||||
//check the drop targets and validate if are posibile targets for current dragged element
|
||||
findTargets: function() {
|
||||
$.DDM.dragged.DB.targets = [];
|
||||
for( var i=0; i< $.DDM.targets.length; i++) {
|
||||
for (var j in $.DDM.targets[i].DrB.groups) {
|
||||
if ($.DDM.dragged.DB.groups[j] && $.DDM.targets[i].DrB.isTarget.apply($.DDM.targets[i])) {
|
||||
$.DDM.targets[i].DrB.onActivate.apply($.DDM.targets[i]);
|
||||
$.DDM.dragged.DB.targets[$.DDM.dragged.DB.targets.length] = $.DDM.targets[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$.DDM.dragged.DB.hasTargets = ($.DDM.dragged.DB.targets.length>0) ;
|
||||
},
|
||||
|
||||
//clear the previously activated drop targets
|
||||
clearTargets: function(e) {
|
||||
for (var i=0; i< $.DDM.dragged.DB.targets.length; i++) {
|
||||
$.DDM.dragged.DB.targets[i].DrB.onDeactivate.apply($.DDM.dragged.DB.targets[i], [e]);
|
||||
}
|
||||
$.DDM.dragged.DB.targets = [];
|
||||
$.DDM.dragged.DB.hasTargets = false;
|
||||
},
|
||||
|
||||
//clear all options stored in the dragging action
|
||||
clearOptions: function() {
|
||||
$.DDM.currentTarget = null;
|
||||
$.DDM.dragged.DB.dragThreshMet = false;
|
||||
$.DDM.dragged.DB.draggedEls = null;
|
||||
$.DDM.dragged = null;
|
||||
}
|
||||
};
|
||||
|
||||
//drag behavior object
|
||||
$.dragBehavior = function(el, options) {
|
||||
this.init(el, options);
|
||||
};
|
||||
|
||||
$.dragBehavior.prototype = {
|
||||
draggedEls: null,
|
||||
groups: {'default':true},
|
||||
size: null,
|
||||
offset: null,
|
||||
pointer: null,
|
||||
proxy: null,
|
||||
dragThreshMet: false,
|
||||
preventionTimeout: 400,
|
||||
beforeStartDrag: function(){},
|
||||
getPointer: function(e){return {x:e.pageX,y:e.pageY}},
|
||||
startDrag: function() {},
|
||||
beforeDrag: function(){},
|
||||
drag: function(){},
|
||||
beforeStopDrag: function(){},
|
||||
stopDrag: function(){},
|
||||
targets: [],
|
||||
hasTargets: false,
|
||||
snap: 0,
|
||||
getDraggedEls: function(el) {
|
||||
return el;
|
||||
},
|
||||
init: function(el, options) {
|
||||
$(el).bind('mousedown', this.mouseDown);
|
||||
$.extend(this, options);
|
||||
el.onselectstart = function(){return false;};
|
||||
el.ondrag = function(){return false;};
|
||||
el.unselectable = "on";
|
||||
},
|
||||
|
||||
mouseDown: function(e) {
|
||||
if (!this.DB) {
|
||||
return false;
|
||||
}
|
||||
$(document).bind('mousemove', $.DDM.mouseMove);
|
||||
$(document).bind('mouseup', $.DDM.mouseUp);
|
||||
$.DDM.currentTarget = e.target;
|
||||
$.DDM.shiftKey = e.shiftKey;
|
||||
$.DDM.altKey = e.altKey;
|
||||
$.DDM.ctrlKey = e.ctrlKey;
|
||||
this.DB.draggedEls = this.DB.getDraggedEls(this, e);
|
||||
if (!this.DB.draggedEls) {
|
||||
return;
|
||||
}
|
||||
$.DDM.dragged = this;
|
||||
$.DDM.dragged.DB.dragThreshMet = false;
|
||||
$.DDM.dragged.DB.pointer = $.DDM.pointer = {x:e.pageX, y:e.pageY};
|
||||
$.DDM.findTargets();
|
||||
if (this.DB.preventionTimeout) {
|
||||
$.DDM.preventionTimeout = setTimeout(function(){$.DDM.startDrag(e)}, this.DB.preventionTimeout);
|
||||
return false;
|
||||
}
|
||||
if (this.DB.snap) {
|
||||
return false;
|
||||
}
|
||||
return $.DDM.startDrag(e);
|
||||
}
|
||||
};
|
||||
//drop behavior object
|
||||
$.dropBehavior = function(el, options) {
|
||||
this.init(el, options);
|
||||
};
|
||||
$.dropBehavior.prototype = {
|
||||
isTarget: function() {return false},
|
||||
onActivate: function(){},
|
||||
onDeactivate: function(){},
|
||||
checkTarget: function() {return false},
|
||||
onHover: function(){},
|
||||
onOut: function(){},
|
||||
onDrop: function(){},
|
||||
position: null,
|
||||
size: null,
|
||||
tolerance: 'pointer',
|
||||
groups: {'default':true},
|
||||
isOver: false,
|
||||
init: function(el, options) {
|
||||
$.DDM.targets[$.DDM.targets.length] = el;
|
||||
$.extend(this, options);
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,249 @@
|
||||
|
||||
(function($) {
|
||||
$.fn.draggable = function(options) {
|
||||
options = $.extend({
|
||||
beforeDrag: function(e) {
|
||||
var position, delta;
|
||||
//if cursorAt then the element is positioned at cursor position
|
||||
if (options.cursorAt) {
|
||||
position = {
|
||||
x: $.DDM.pointer.x + this.DB.extraOffset.x,
|
||||
y: $.DDM.pointer.y + this.DB.extraOffset.y
|
||||
}
|
||||
} else {
|
||||
delta = {
|
||||
x: $.DDM.pointer.x - this.DB.pointer.x ,
|
||||
y: $.DDM.pointer.y - this.DB.pointer.y
|
||||
}
|
||||
|
||||
//apply grid
|
||||
if (this.DB.grid) {
|
||||
delta = this.DB.applyGrid(delta);
|
||||
}
|
||||
//if there are limits then recalculate delta
|
||||
if (this.DB.limitOffset) {
|
||||
delta = {
|
||||
x: Math.max(
|
||||
this.DB.limitOffset.x,
|
||||
Math.min(
|
||||
this.DB.position.x + delta.x,
|
||||
this.DB.limitOffset.x + this.DB.limitOffset.w - this.DB.size.wb
|
||||
)) - this.DB.position.x,
|
||||
y: Math.max(
|
||||
this.DB.limitOffset.y,
|
||||
Math.min(
|
||||
this.DB.position.y + delta.y,
|
||||
this.DB.limitOffset.y + this.DB.limitOffset.h - this.DB.size.hb
|
||||
))-this.DB.position.y
|
||||
};
|
||||
|
||||
}
|
||||
position = {
|
||||
x: this.DB.offset.x + delta.x,
|
||||
y: this.DB.offset.y + delta.y
|
||||
};
|
||||
}
|
||||
if (this.DB.dragModifier) {
|
||||
position = this.DB.dragModifier(position);
|
||||
}
|
||||
this.DB.onDrag.apply(this.DB.draggedEls, [this.DB.proxy||this.DB.draggedEls, position]);
|
||||
$(this.DB.proxy||this.DB.draggedEls).css({
|
||||
left: position.x + 'px',
|
||||
top: position.y + 'px'
|
||||
});
|
||||
return false;
|
||||
},
|
||||
beforeStartDrag: function() {
|
||||
//get element position, offset position and size
|
||||
this.DB.position = $.iUtil.getPosition(this.DB.draggedEls);
|
||||
this.DB.size = $.iUtil.getSize(this.DB.draggedEls);
|
||||
this.DB.offset = {
|
||||
x: this.DB.draggedEls.offsetLeft,
|
||||
y: this.DB.draggedEls.offsetTop
|
||||
};
|
||||
/*this.DB.offset = {
|
||||
x: parseInt($.curCSS(this.DB.draggedEls, 'left'), 10)||0,
|
||||
y: parseInt($.curCSS(this.DB.draggedEls, 'top'), 10)||0
|
||||
};*/
|
||||
//if cursorAt then calculate the extra offset
|
||||
if (this.DB.cursorAt) {
|
||||
this.DB.extraOffset = {
|
||||
x: this.DB.cursorAt.left ?
|
||||
(this.DB.cursorAt.left * (-1))
|
||||
: this.DB.cursorAt.right ?
|
||||
(- this.DB.size.wb + this.DB.cursorAt.right)
|
||||
: 0,
|
||||
y: this.DB.cursorAt.top ?
|
||||
(this.DB.cursorAt.top * (-1))
|
||||
: this.DB.cursorAt.bottom ?
|
||||
(- this.DB.size.hb + this.DB.cursorAt.bottom)
|
||||
: 0
|
||||
};
|
||||
}
|
||||
//if containment then calculates the limits
|
||||
if (this.DB.containment) {
|
||||
//if a node then get node position and size and calculate limits
|
||||
if (this.DB.containment.parentNode) {
|
||||
this.DB.limitOffset = $.extend(
|
||||
$.iUtil.getPosition(this.DB.containment),
|
||||
$.iUtil.getSize(this.DB.containment)
|
||||
);
|
||||
this.DB.limitOffset.h = this.DB.limitOffset.hb;
|
||||
this.DB.limitOffset.w = this.DB.limitOffset.wb;
|
||||
//if document then get document size
|
||||
} else if(this.DB.containment === 'document') {
|
||||
var clientScroll = $.iUtil.getScroll();
|
||||
this.DB.limitOffset = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
h: Math.max(clientScroll.h,clientScroll.ih),
|
||||
w: Math.max(clientScroll.w,clientScroll.iw)
|
||||
};
|
||||
//if viewport then get document size and scroll
|
||||
} else if(this.DB.containment === 'viewport') {
|
||||
var clientScroll = $.iUtil.getScroll();
|
||||
this.DB.limitOffset = {
|
||||
x: clientScroll.l,
|
||||
y: clientScroll.t,
|
||||
h: Math.min(clientScroll.h,clientScroll.ih),
|
||||
w: Math.min(clientScroll.w,clientScroll.iw)
|
||||
};
|
||||
} else {
|
||||
this.DB.limitOffset = this.DB.containment;
|
||||
}
|
||||
}
|
||||
var el = this.DB.proxy||this.DB.draggedEls;
|
||||
|
||||
//store old zIndex value to restore later
|
||||
if (options.zIndex) {
|
||||
this.DB.oldZIndex = $.attr(el, 'zIndex');
|
||||
el.style.zIndex = 'number' == typeof options.zIndex ? options.zIndex : 1999;
|
||||
}
|
||||
|
||||
el.style.display = '';
|
||||
this.DB.beforeDrag.apply(this);
|
||||
},
|
||||
startDrag: function() {
|
||||
this.DB.onStart.apply(this.DB.draggedEls, [this.DB.proxy||this.DB.draggedEls, $.DDM.dragged.DB.targets]);
|
||||
return false;
|
||||
},
|
||||
//get pointer (overides the default fonction because of the axis option)
|
||||
getPointer: function(e){
|
||||
return {
|
||||
x : this.DB.axis === 'y' ? this.DB.pointer.x : e.pageX,
|
||||
y : this.DB.axis === 'x' ? this.DB.pointer.y : e.pageY
|
||||
};
|
||||
},
|
||||
beforeStopDrag: function() {
|
||||
var handledByUser = this.DB.onStop.apply(
|
||||
this.DB.draggedEls,
|
||||
[
|
||||
this.DB.proxy||this.DB.draggedEls,
|
||||
this.DB.revert ?
|
||||
this.DB.offset :
|
||||
(
|
||||
this.DB.proxy ?
|
||||
{x:this.DB.proxy.offsetLeft,y:this.DB.proxy.offsetTop}
|
||||
:
|
||||
{x:this.DB.draggedEls.offsetLeft, y:this.DB.draggedEls.offsetTop}
|
||||
)
|
||||
]);
|
||||
//if used chooses not to handle the stop dragging action then clear proxy and position teh element
|
||||
if (handledByUser === false) {
|
||||
if (this.DB.revert) {
|
||||
$(this.DB.draggedEls).css({
|
||||
left: this.DB.offset.x + 'px',
|
||||
top: this.DB.offset.y + 'px'
|
||||
});
|
||||
}
|
||||
if(this.DB.proxy) {
|
||||
if (!this.DB.revert) {
|
||||
$(this.DB.draggedEls).css({
|
||||
left: this.DB.proxy.offsetLeft + 'px',
|
||||
top: this.DB.proxy.offsetTop + 'px'
|
||||
});
|
||||
}
|
||||
$(this.DB.proxy).remove();
|
||||
}
|
||||
}
|
||||
//reverse to the old zIndex
|
||||
if (options.zIndex) {
|
||||
this.DB.draggedEls.style.zIndex = this.DB.oldZIndex;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
getDraggedEls: function(el) {
|
||||
//find element that needs to be dragged
|
||||
var del = el.DB.toDrag||el,
|
||||
isAllowed = true;
|
||||
//if the event was fired by a illegal element or condition then stop the dragging
|
||||
if ('function' == typeof options.dragPrevention) {
|
||||
isAllowed = options.dragPrevention.apply(del,[$.DDM.currentTarget]);
|
||||
} else if ('string' == typeof options.dragPrevention) {
|
||||
var chunks = options.dragPrevention.toUpperCase().split(',');
|
||||
jQuery.each(
|
||||
chunks,
|
||||
function() {
|
||||
if ($.DDM.currentTarget.nodeName == this){
|
||||
isAllowed=false
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
if (isAllowed == true) {
|
||||
//if proxy is required add it to the DOM
|
||||
if(options.ghostly || options.helper === 'clone') {
|
||||
if (options.helper == 'clone') {
|
||||
options.ghostly = true;
|
||||
}
|
||||
el.DB.proxy = $(del).clone(true).insertAfter(del).hide()[0];
|
||||
} else if (options.helper) {
|
||||
el.DB.proxy = $(options.helper.apply(del)).hide()[0];
|
||||
}
|
||||
if (el.DB.proxy) {
|
||||
$(el.DB.proxy).css({
|
||||
top: $.curCSS(del, 'top'),
|
||||
left: $.curCSS(del, 'left'),
|
||||
display: 'none'
|
||||
});
|
||||
}
|
||||
return del;
|
||||
}
|
||||
return;
|
||||
},
|
||||
//apply grid to current position
|
||||
applyGrid: function(delta) {
|
||||
return {
|
||||
x: parseInt((delta.x + (this.grid.x* delta.x/Math.abs(delta.x))/2)/this.grid.x, 10) * this.grid.x,
|
||||
y: parseInt((delta.y + (this.grid.y* delta.y/Math.abs(delta.y))/2)/this.grid.y, 10) * this.grid.y
|
||||
};
|
||||
},
|
||||
onStart: function(){return false;},
|
||||
onStop: function(){return false;},
|
||||
onDrag: function(){return false;}
|
||||
}, options||{});
|
||||
|
||||
return this.each(function(){
|
||||
var el = $(this);
|
||||
//find the handle
|
||||
var toDrag = this;
|
||||
if (options.handle) {
|
||||
el = $(options.handle, this);
|
||||
if (el.size() == 0 )
|
||||
el = this;
|
||||
}
|
||||
|
||||
if (options.preventionDistance) {
|
||||
options.snap = options.preventionDistance;
|
||||
}
|
||||
|
||||
//iterate each element and add drag behavior
|
||||
el.each(function(){
|
||||
if (!this.DB) {
|
||||
$.DDM.drag(this, options);
|
||||
if (options.handle) this.DB.toDrag = toDrag;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,297 @@
|
||||
/**
|
||||
* Interface Elements for jQuery
|
||||
* utility function
|
||||
*
|
||||
* http://interface.eyecon.ro
|
||||
*
|
||||
* Copyright (c) 2006 Stefan Petre
|
||||
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
||||
* and GPL (GPL-LICENSE.txt) licenses.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
jQuery.iUtil = {
|
||||
getPosition : function(e, forceIt)
|
||||
{
|
||||
var x = 0;
|
||||
var y = 0;
|
||||
var es = e.style;
|
||||
var restoreStyles = false;
|
||||
if (forceIt && jQuery.curCSS(e,'display') == 'none') {
|
||||
var oldVisibility = es.visibility;
|
||||
var oldPosition = es.position;
|
||||
restoreStyles = true;
|
||||
es.visibility = 'hidden';
|
||||
es.display = 'block';
|
||||
es.position = 'absolute';
|
||||
}
|
||||
var el = e;
|
||||
if (el.getBoundingClientRect) { // IE
|
||||
var box = el.getBoundingClientRect();
|
||||
x = box.left + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) - 2;
|
||||
y = box.top + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - 2;
|
||||
} else {
|
||||
x = el.offsetLeft;
|
||||
y = el.offsetTop;
|
||||
el = el.offsetParent;
|
||||
if (e != el) {
|
||||
while (el) {
|
||||
x += el.offsetLeft;
|
||||
y += el.offsetTop;
|
||||
el = el.offsetParent;
|
||||
}
|
||||
}
|
||||
if (jQuery.browser.safari && jQuery.curCSS(e, 'position') == 'absolute' ) {
|
||||
x -= document.body.offsetLeft;
|
||||
y -= document.body.offsetTop;
|
||||
}
|
||||
el = e.parentNode;
|
||||
while (el && el.tagName.toUpperCase() != 'BODY' && el.tagName.toUpperCase() != 'HTML')
|
||||
{
|
||||
if (jQuery.curCSS(el, 'display') != 'inline') {
|
||||
x -= el.scrollLeft;
|
||||
y -= el.scrollTop;
|
||||
}
|
||||
el = el.parentNode;
|
||||
}
|
||||
}
|
||||
if (restoreStyles == true) {
|
||||
es.display = 'none';
|
||||
es.position = oldPosition;
|
||||
es.visibility = oldVisibility;
|
||||
}
|
||||
return {x:x, y:y};
|
||||
},
|
||||
getPositionLite : function(el)
|
||||
{
|
||||
var x = 0, y = 0;
|
||||
while(el) {
|
||||
x += el.offsetLeft || 0;
|
||||
y += el.offsetTop || 0;
|
||||
el = el.offsetParent;
|
||||
}
|
||||
return {x:x, y:y};
|
||||
},
|
||||
getSize : function(e)
|
||||
{
|
||||
var w = parseInt(jQuery.curCSS(e,'width'), 10);
|
||||
var h = parseInt(jQuery.curCSS(e,'height'), 10);
|
||||
var wb = 0;
|
||||
var hb = 0;
|
||||
if (jQuery.curCSS(e, 'display') != 'none') {
|
||||
wb = e.offsetWidth;
|
||||
hb = e.offsetHeight;
|
||||
} else {
|
||||
var es = e.style;
|
||||
var oldVisibility = es.visibility;
|
||||
var oldPosition = es.position;
|
||||
es.visibility = 'hidden';
|
||||
es.display = 'block';
|
||||
es.position = 'absolute';
|
||||
wb = e.offsetWidth;
|
||||
hb = e.offsetHeight;
|
||||
es.display = 'none';
|
||||
es.position = oldPosition;
|
||||
es.visibility = oldVisibility;
|
||||
}
|
||||
return {w:w, h:h, wb:wb, hb:hb};
|
||||
},
|
||||
getSizeLite : function(el)
|
||||
{
|
||||
return {
|
||||
wb:el.offsetWidth||0,
|
||||
hb:el.offsetHeight||0
|
||||
};
|
||||
},
|
||||
getClient : function(e)
|
||||
{
|
||||
var h, w;
|
||||
if (e) {
|
||||
w = e.clientWidth;
|
||||
h = e.clientHeight;
|
||||
} else {
|
||||
var de = document.documentElement;
|
||||
w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
|
||||
h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
|
||||
}
|
||||
return {w:w,h:h};
|
||||
},
|
||||
getScroll : function (e)
|
||||
{
|
||||
var t=0, l=0, w=0, h=0, iw=0, ih=0;
|
||||
if (e && e.nodeName.toLowerCase() != 'body') {
|
||||
t = e.scrollTop;
|
||||
l = e.scrollLeft;
|
||||
w = e.scrollWidth;
|
||||
h = e.scrollHeight;
|
||||
} else {
|
||||
if (document.body) {
|
||||
t = document.body.scrollTop;
|
||||
l = document.body.scrollLeft;
|
||||
w = document.body.scrollWidth;
|
||||
h = document.body.scrollHeight;
|
||||
} else if (document.documentElement) {
|
||||
t = document.documentElement.scrollTop;
|
||||
l = document.documentElement.scrollLeft;
|
||||
w = document.documentElement.scrollWidth;
|
||||
h = document.documentElement.scrollHeight;
|
||||
}
|
||||
iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
|
||||
ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
|
||||
}
|
||||
return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
|
||||
},
|
||||
getMargins : function(e, toInteger)
|
||||
{
|
||||
var t = jQuery.curCSS(e,'marginTop') || '';
|
||||
var r = jQuery.curCSS(e,'marginRight') || '';
|
||||
var b = jQuery.curCSS(e,'marginBottom') || '';
|
||||
var l = jQuery.curCSS(e,'marginLeft') || '';
|
||||
if (toInteger)
|
||||
return {
|
||||
t: parseInt(t, 10)||0,
|
||||
r: parseInt(r, 10)||0,
|
||||
b: parseInt(b, 10)||0,
|
||||
l: parseInt(l, 10)
|
||||
};
|
||||
else
|
||||
return {t: t, r: r, b: b, l: l};
|
||||
},
|
||||
getPadding : function(e, toInteger)
|
||||
{
|
||||
var t = jQuery.curCSS(e,'paddingTop') || '';
|
||||
var r = jQuery.curCSS(e,'paddingRight') || '';
|
||||
var b = jQuery.curCSS(e,'paddingBottom') || '';
|
||||
var l = jQuery.curCSS(e,'paddingLeft') || '';
|
||||
if (toInteger)
|
||||
return {
|
||||
t: parseInt(t, 10)||0,
|
||||
r: parseInt(r, 10)||0,
|
||||
b: parseInt(b, 10)||0,
|
||||
l: parseInt(l, 10)
|
||||
};
|
||||
else
|
||||
return {t: t, r: r, b: b, l: l};
|
||||
},
|
||||
getBorder : function(e, toInteger)
|
||||
{
|
||||
var t = jQuery.curCSS(e,'borderTopWidth') || '';
|
||||
var r = jQuery.curCSS(e,'borderRightWidth') || '';
|
||||
var b = jQuery.curCSS(e,'borderBottomWidth') || '';
|
||||
var l = jQuery.curCSS(e,'borderLeftWidth') || '';
|
||||
if (toInteger)
|
||||
return {
|
||||
t: parseInt(t, 10)||0,
|
||||
r: parseInt(r, 10)||0,
|
||||
b: parseInt(b, 10)||0,
|
||||
l: parseInt(l, 10)||0
|
||||
};
|
||||
else
|
||||
return {t: t, r: r, b: b, l: l};
|
||||
},
|
||||
getPointer : function(event)
|
||||
{
|
||||
var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
|
||||
var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
|
||||
return {x:x, y:y};
|
||||
},
|
||||
traverseDOM : function(nodeEl, func)
|
||||
{
|
||||
func(nodeEl);
|
||||
nodeEl = nodeEl.firstChild;
|
||||
while(nodeEl){
|
||||
jQuery.iUtil.traverseDOM(nodeEl, func);
|
||||
nodeEl = nodeEl.nextSibling;
|
||||
}
|
||||
},
|
||||
purgeEvents : function(nodeEl)
|
||||
{
|
||||
jQuery.iUtil.traverseDOM(
|
||||
nodeEl,
|
||||
function(el)
|
||||
{
|
||||
for(var attr in el){
|
||||
if(typeof el[attr] === 'function') {
|
||||
el[attr] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
},
|
||||
getInnerWidth : function(el, scroll) {
|
||||
var offsetW = el.offsetWidth;
|
||||
return scroll ? Math.max(el.scrollWidth,offsetW) - offsetW + el.clientWidth:el.clientWidth;
|
||||
/*return (scroll ? Math.max(el.scrollWidth,el.offsetWidth) : el.offsetWidth)
|
||||
- (parseInt($.curCSS(el, 'borderLeftWidth'), 10)||0)
|
||||
- (parseInt($.curCSS(el, 'borderRightWidth'), 10)||0);*/
|
||||
},
|
||||
getInnerHeight : function(el, scroll) {
|
||||
var offsetH = el.offsetHeight;
|
||||
return scroll ? Math.max(el.scrollHeight,offsetH) - offsetH + el.clientHeight:el.clientHeight;
|
||||
/*return (scroll ? Math.max(el.scrollHeight,el.offsetHeight) : el.offsetHeight)
|
||||
- (parseInt($.curCSS(el, 'borderTopWidth'), 10)||0)
|
||||
- (parseInt($.curCSS(el, 'borderBottomWidth'), 10)||0);*/
|
||||
},
|
||||
getExtraWidth : function(el) {
|
||||
if($.boxModel)
|
||||
return (parseInt($.curCSS(el, 'paddingLeft'), 10)||0)
|
||||
+ (parseInt($.curCSS(el, 'paddingRight'), 10)||0)
|
||||
+ (parseInt($.curCSS(el, 'borderLeftWidth'), 10)||0)
|
||||
+ (parseInt($.curCSS(el, 'borderRightWidth'), 10)||0);
|
||||
return 0;
|
||||
},
|
||||
getExtraHeight : function(el) {
|
||||
if($.boxModel)
|
||||
return (parseInt($.curCSS(el, 'paddingTop'), 10)||0)
|
||||
+ (parseInt($.curCSS(el, 'paddingBottom'), 10)||0)
|
||||
+ (parseInt($.curCSS(el, 'borderTopWidth'), 10)||0)
|
||||
+ (parseInt($.curCSS(el, 'borderBottomWidth'), 10)||0);
|
||||
return 0;
|
||||
},
|
||||
isChildOf: function(parentEl, el, container) {
|
||||
if (parentEl == el) {
|
||||
return true;
|
||||
}
|
||||
if (parentEl.contains && !$.browser.safari) {
|
||||
return parentEl.contains(el);
|
||||
}
|
||||
if ( parentEl.compareDocumentPosition ) {
|
||||
return !!(parentEl.compareDocumentPosition(el) & 16);
|
||||
}
|
||||
var prEl = el.parentNode;
|
||||
while(prEl && prEl != container) {
|
||||
if (prEl == parentEl)
|
||||
return true;
|
||||
prEl = prEl.parentNode;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
centerEl : function(el, axis)
|
||||
{
|
||||
var clientScroll = $.iUtil.getScroll();
|
||||
var size = $.iUtil.getSize(el);
|
||||
if (!axis || axis == 'vertically')
|
||||
$(el).css(
|
||||
{
|
||||
top: clientScroll.t + ((Math.min(clientScroll.h,clientScroll.ih) - size.hb)/2) + 'px'
|
||||
}
|
||||
);
|
||||
if (!axis || axis == 'horizontally')
|
||||
$(el).css(
|
||||
{
|
||||
left: clientScroll.l + ((Math.min(clientScroll.w,clientScroll.iw) - size.wb)/2) + 'px'
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
// Helper function to support older browsers!
|
||||
[].indexOf || (Array.prototype.indexOf = function(v, n){
|
||||
n = (n == null) ? 0 : n;
|
||||
var m = this.length;
|
||||
for (var i=n; i<m; i++)
|
||||
if (this[i] == v)
|
||||
return i;
|
||||
return -1;
|
||||
});
|
||||
@@ -159,7 +159,7 @@ div#footer {
|
||||
|
||||
<body class="historyPage">
|
||||
|
||||
<div id="top-links" class="historyItem">
|
||||
<div id="top-links" class="historyLinks">
|
||||
#if $refresh
|
||||
<a href="$h.url_for('/history')">refreshing in <span id="refreshCounterSpan">10</span> sec</a>
|
||||
#else
|
||||
@@ -185,7 +185,7 @@ div#footer {
|
||||
#else
|
||||
#set $data_state = $data.state
|
||||
#end if
|
||||
<div class="historyItemWrapper historyItem-$data_state" id="historyItem-$data.id">
|
||||
<div class="historyItemWrapper historyItem historyItem-$data_state" id="historyItem-$data.id">
|
||||
|
||||
##
|
||||
## Header row for history items (name, state, action buttons)
|
||||
@@ -335,6 +335,7 @@ div#footer {
|
||||
|
||||
</body>
|
||||
|
||||
#if $app.config.get( "new_style_july_2007", "false" ) == "true"
|
||||
<div style="height: 20px"></div>
|
||||
<div id="footer" >
|
||||
<div class="footerheader">
|
||||
@@ -364,5 +365,6 @@ div#footer {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
#end if
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title> History Options </title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<link href="$h.url_for('/static/style/base.css')" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript" src="$h.url_for('/static/scripts/jquery.js')"></script>
|
||||
<script type="text/javascript">
|
||||
q = jQuery.noConflict();
|
||||
q( "a[@confirm]" ).click( function() {
|
||||
return confirm( q(this).attr( "confirm" ) )
|
||||
})
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>History Options</h1>
|
||||
|
||||
#if not $t.user:
|
||||
<div class="infomessage">
|
||||
<div>You must be <a target="galaxy_main" href="$h.url_for('/user/login')">logged in</a> to store or switch histories.</div>
|
||||
</div>
|
||||
#end if
|
||||
|
||||
<ul>
|
||||
#if $t.user
|
||||
#if $history.user
|
||||
<li><a href="$h.url_for('/history_rename', id=$history.id )" target="galaxy_main">Rename</a> current history (stored as "$history.name")</li>
|
||||
#else
|
||||
<li><a href="$h.url_for('/history_store')" target="galaxy_main">Store</a> this history for later</li>
|
||||
#end if
|
||||
<li><a href="$h.url_for('/history_available')" target="galaxy_main">View</a> previously stored histories</li>
|
||||
#if $len( $history.active_datasets ) > 0 and $history.user not in [ None , "" ]:
|
||||
<li><a href="$h.url_for('/history_new')">Create</a> a new empty history</li>
|
||||
#end if
|
||||
#end if
|
||||
<li><a href="$h.url_for('/history_share')" target="galaxy_main">share</a> current history</div>
|
||||
<li><a href="$h.url_for('/history_delete', id=$history.id )" confirm="Are you sure you want to delete the current history?">delete</a> current history</div>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,10 +5,6 @@
|
||||
</HEAD>
|
||||
<FRAMESET rows="40,*" border="0" framespacing="0" frameborder="0">
|
||||
<FRAME name="galaxy_masthead" src="$h.url_for('masthead')" frameborder="0" border="0" framespacing="0">
|
||||
#if $mode =="stacked"
|
||||
<FRAME name="mainframe" src="$h.url_for('static/index_frame_stacked.html')" border="3" framespacing="3" frameborder="1">
|
||||
#else
|
||||
<FRAME name="mainframe" src="$h.url_for('static/index_frame_three_col.html')" border="3" framespacing="3" frameborder="1">
|
||||
#end if
|
||||
<FRAME name="mainframe" src="$h.url_for('static/index_frame_three_col.html')" border="3" framespacing="3" frameborder="1">
|
||||
</FRAMESET>
|
||||
</HTML>
|
||||
|
||||
@@ -7,14 +7,15 @@
|
||||
</head>
|
||||
<script type="text/javascript">
|
||||
#if 'masthead' in $refresh_frames
|
||||
if ( parent.parent && parent.parent.frames && parent.parent.frames.galaxy_masthead )
|
||||
{
|
||||
if ( parent.frames && parent.frames.galaxy_masthead ) {
|
||||
parent.frames.galaxy_masthead.location.href="$h.url_for('/masthead')";
|
||||
}
|
||||
else if ( parent.parent && parent.parent.frames && parent.parent.frames.galaxy_masthead ) {
|
||||
parent.parent.frames.galaxy_masthead.location.href="$h.url_for('/masthead')";
|
||||
}
|
||||
#end if
|
||||
#if 'history' in $refresh_frames
|
||||
if ( parent.frames && parent.frames.galaxy_history )
|
||||
{
|
||||
if ( parent.frames && parent.frames.galaxy_history ) {
|
||||
parent.frames.galaxy_history.location.href="$h.url_for('/history')";
|
||||
}
|
||||
#end if
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
inside_galaxy_frameset = true;
|
||||
}
|
||||
|
||||
if ( parent.tool_finished )
|
||||
|
||||
function main()
|
||||
{
|
||||
|
||||
@@ -29,6 +29,11 @@
|
||||
}
|
||||
});
|
||||
});
|
||||
q( "a[@minsizehint]" ).click( function() {
|
||||
if ( parent.handle_minwidth_hint ) {
|
||||
parent.handle_minwidth_hint( q(this).attr( "minsizehint" ) );
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -67,7 +72,7 @@ div#footer {
|
||||
<div class="toolSectionList">
|
||||
#for $i, $section in enumerate( $toolbox.sections )
|
||||
#if $i > 0
|
||||
<hr>
|
||||
<div class="toolSectionPad"></div>
|
||||
#end if
|
||||
<div class="toolSectionTitle" id="title_$section.id">
|
||||
<span>$section.name</span>
|
||||
@@ -82,13 +87,12 @@ div#footer {
|
||||
#else
|
||||
#set $link = $h.url_for( $tool.action, ** $tool.get_static_param_values( $t ) )
|
||||
#end if
|
||||
|
||||
#if "[[" in $tool.description and "]]" in $tool.description
|
||||
$tool.description.replace( '[[', '<a href="$link" target="galaxy_main">' % $tool.id ).replace( "]]", "</a>" )
|
||||
#elif $tool.name
|
||||
<a href="$link" target="galaxy_main">$tool.name</a> $tool.description
|
||||
<a id="link-$tool.id" href="$link" target="galaxy_main" minsizehint="$tool.uihints.get( 'minwidth', -1 )">$tool.name</a> $tool.description
|
||||
#else
|
||||
<a href="$link" target="galaxy_main">$tool.description</a>
|
||||
<a id="link-$tool.id" href="$link" target="galaxy_main" minsizehint="$tool.uihints.get( 'minwidth', -1 )">$tool.description</a>
|
||||
#end if
|
||||
</div>
|
||||
#end if
|
||||
@@ -100,11 +104,13 @@ div#footer {
|
||||
|
||||
</div>
|
||||
|
||||
#if $app.config.get( "new_style_july_2007", "false" ) == "true"
|
||||
<div style="height: 20px"></div>
|
||||
|
||||
<div id="footer">
|
||||
<div class="footerheader"><b>Tools</b></div>
|
||||
</div>
|
||||
</body>
|
||||
#end if
|
||||
|
||||
</html>
|
||||
@@ -14,6 +14,8 @@
|
||||
<param name="hgta_outputType" type="hidden" value="bed" />
|
||||
</inputs>
|
||||
|
||||
<uihints minwidth="800"/>
|
||||
|
||||
<code file="ucsc_tablebrowser_code.py"/>
|
||||
|
||||
<outputs>
|
||||
|
||||