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).
This commit is contained in:
James Taylor
2007-07-05 18:39:36 +00:00
parent e75d088413
commit 4a4c8d25dc
82 changed files with 2955 additions and 22 deletions
+16 -7
View File
@@ -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"""
+6
View File
@@ -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:
+26
View File
@@ -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 > $@
+266
View File
@@ -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;
}
+266
View File
@@ -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;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

+104
View File
@@ -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;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

+26
View File
@@ -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;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

+3
View File
@@ -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;}*/
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

+46
View File
@@ -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;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

+53
View File
@@ -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
+345
View File
@@ -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

Binary file not shown.
+72
View File
@@ -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" )
+104
View File
@@ -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;
}
+66
View File
@@ -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() )
+26
View File
@@ -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;
}
+15
View File
@@ -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] )
+3
View File
@@ -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;}*/
Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

+46
View File
@@ -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;
}
+574
View File
@@ -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);
+297
View File
@@ -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;
});
+4 -2
View File
@@ -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>
+42
View File
@@ -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>
+1 -5
View File
@@ -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>
+5 -4
View File
@@ -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
+2
View File
@@ -14,6 +14,8 @@
inside_galaxy_frameset = true;
}
if ( parent.tool_finished )
function main()
{
+10 -4
View File
@@ -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>
+2
View File
@@ -14,6 +14,8 @@
<param name="hgta_outputType" type="hidden" value="bed" />
</inputs>
<uihints minwidth="800"/>
<code file="ucsc_tablebrowser_code.py"/>
<outputs>