changeset 144:ea89ac73bef8

Update css +file browsing and diffs
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 09 May 2010 17:35:51 +0200
parents 787689980bcd
children 3f01d02c2cc6
files pylons_app/public/css/diff.css pylons_app/public/css/monoblue_custom.css pylons_app/public/css/pygments.css pylons_app/public/css/pygments_diff.css pylons_app/templates/files/file_diff.html pylons_app/templates/files/files_browser.html pylons_app/templates/files/files_source.html
diffstat 7 files changed, 601 insertions(+), 566 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pylons_app/public/css/diff.css	Sun May 09 17:35:51 2010 +0200
@@ -0,0 +1,95 @@
+div.diffblock {
+    overflow: auto;
+    padding: 0px;
+    border: 1px solid #ccc;
+    background: #f8f8f8;
+    font-size: 100%;
+    line-height: 100%;
+    /* new */
+    line-height: 125%;
+}
+div.diffblock .code-header{
+	border-bottom: 1px solid #CCCCCC;
+	background: #EEEEEE;
+	color:blue;
+	padding:10px 0 10px 0;
+}
+div.diffblock .code-header span{
+	margin-left:25px;
+	font-weight: bold;
+}
+div.diffblock .code-body{
+	background: #EEEEEE;
+}
+
+.code-difftable{
+	border-collapse: collapse;
+}
+.code-difftable .add{
+	background:none repeat scroll 0 0 #DDFFDD;
+}
+.code-difftable .add ins{
+	background:none repeat scroll 0 0 #AAFFAA;
+	text-decoration:none;
+}
+
+.code-difftable .del{
+	background:none repeat scroll 0 0 #FFDDDD;
+}
+.code-difftable .del del{
+	background:none repeat scroll 0 0 #FFAAAA;
+	text-decoration:none;
+}
+
+.code-difftable .lineno{
+	background:none repeat scroll 0 0 #EEEEEE !important;
+	border-right:1px solid #DDDDDD;
+	padding-left:2px;
+	padding-right:2px;
+	text-align:right;
+	width:20px;
+	-moz-user-select:none;
+	-webkit-user-select: none;
+}
+.code-difftable .lineno pre{
+	color:#747474 !important;
+	font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important;
+	letter-spacing:-1px;
+	text-align:right;
+	width:20px;
+}
+.code-difftable .lineno a{
+	color:#0000CC !important;
+}
+.code-difftable .code td{
+	margin:0;
+	padding: 0;
+}
+.code-difftable .code pre{
+	margin:0;
+	padding:0;
+}
+
+
+.code { 
+	display: block;
+	width: 100%;
+}
+.code-diff {
+    padding: 0px;
+    margin-top: 5px;
+    margin-bottom: 5px;
+    border-left: 2px solid #ccc;
+}
+.code-diff pre, .line pre { 
+	padding: 3px;
+    margin: 0;
+}
+.lineno a { 
+	text-decoration: none; 
+}
+
+.line{
+	padding:0;
+	margin:0;
+}
\ No newline at end of file
--- a/pylons_app/public/css/monoblue_custom.css	Sun May 09 17:23:11 2010 +0200
+++ b/pylons_app/public/css/monoblue_custom.css	Sun May 09 17:35:51 2010 +0200
@@ -1,442 +1,420 @@
 /*** Initial Settings ***/
-* {
-  margin: 0;
-  padding: 0;
-  font-weight: normal;
-  font-style: normal;
-}
-
-html {
-  font-size: 100%;
-  font-family: sans-serif;
-}
-
-body {
-  font-size: 77%;
-  margin: 15px 50px;
-  background: #DBD4C6;
+#mainhtml{
+	margin: 15px 50px;
+	background: #DBD4C6;
+	font-family: sans-serif;
 }
 
 a {
-  color:#0000cc;
-  text-decoration: none;
+	color: #0000cc;
+	text-decoration: none;
 }
-/*** end of Initial Settings ***/
-
+a:HOVER{
+	text-decoration: underline;
+}
+/*** end of Initial Settings ***/ /** common settings **/
+div#main {
+	padding: 5px;
+}
 
-/** common settings **/
-div#main{
-padding:5px;
-}
 div#container {
-  background: #FFFFFF;
-  position: relative;
-  color: #666;
+	background: #FFFFFF;
+	position: relative;
+	color: #666;
 }
 
 div.page-header {
-  padding: 50px 20px 0;
-  background: #556cb5 top left repeat-x;
-  position: relative;
+	padding: 50px 20px 0;
+	background: #556cb5 top left repeat-x;
+	position: relative;
+}
+
+div.page-header h1 {
+	margin: 10px 0 30px;
+	font-size: 1.8em;
+	font-weight: bold;
+	font-family: sans-serif;
+	letter-spacing: 1px;
+	color: #DDD;
+}
+
+div.page-header h1 a {
+	font-weight: bold;
+	color: #FFF;
 }
-  div.page-header h1 {
-    margin: 10px 0 30px;
-    font-size: 1.8em;
-    font-weight: bold;
-    font-family: sans-serif;
-    letter-spacing: 1px;
-    color: #DDD;
-  }
-  div.page-header h1 a {
-    font-weight: bold;
-    color: #FFF;
-  }
-  div.page-header a {
-    text-decoration: none;
-  }
+
+div.page-header a {
+	text-decoration: none;
+}
+
+div.page-header form {
+	position: absolute;
+	margin-bottom: 2px;
+	bottom: 0;
+	right: 20px;
+}
+
+div.page-header form label {
+	color: #DDD;
+}
+
+div.page-header form input {
+	padding: 2px;
+	border: solid 1px #DDD;
+}
+
+div.page-header form dl {
+	overflow: hidden;
+}
 
-  div.page-header form {
-    position: absolute;
-    margin-bottom: 2px;
-    bottom: 0;
-    right: 20px;
-  }
-  div.page-header form label {
-    color: #DDD;
-  }
-  div.page-header form input {
-    padding: 2px;
-    border: solid 1px #DDD;
-  }
-  div.page-header form dl {
-    overflow: hidden;
-  }
-  div.page-header form dl dt {
-    font-size: 1.2em;
-  }
-  div.page-header form dl dt,
-  div.page-header form dl dd {
-    margin: 0 0 0 5px;
-    float: left;
-    height: 24px;
-    line-height: 20px;
-  }
+div.page-header form dl dt {
+	font-size: 1.2em;
+}
+
+div.page-header form dl dt,div.page-header form dl dd {
+	margin: 0 0 0 5px;
+	float: left;
+	height: 24px;
+	line-height: 20px;
+}
+
+ul.page-nav {
+	margin: 10px 0 0 0;
+	list-style-type: none;
+	overflow: hidden;
+	width: 800px;
+	padding: 0;
+}
 
-  ul.page-nav {
-    margin: 10px 0 0 0;
-    list-style-type: none;
-    overflow: hidden;
-    width: 800px;
-  }
-    ul.page-nav li {
-      margin: 0 2px 0 0;
-      float: left;
-      height: 24px;
-      font-size: 1.1em;
-      line-height: 24px;
-      text-align: center;    
-    }
-    ul.page-nav li.current {
-      background: #FFF;
-      padding-right:5px;
-      padding-left:5px;
-    }
-    ul.page-nav li a {
-      height: 24px;
-      color: #666;
-      padding-right:5px;
-      padding-left:5px;        
-      background: #DDD;
-      display: block;
-      text-decoration: none;
-    }
-    ul.page-nav li a:hover {
-      color:#333;
-      background: #FFF;
-    }
+ul.page-nav li {
+	margin: 0 2px 0 0;
+	float: left;
+	height: 24px;
+	font-size: 1.1em;
+	line-height: 24px;
+	text-align: center;
+	background: #DDD;
+}
+
+ul.page-nav li.current {
+	background: #FFF;
+	padding-right: 5px;
+	padding-left: 5px;
+}
+
+ul.page-nav li a {
+	height: 24px;
+	color: #666;
+	padding-right: 5px;
+	padding-left: 5px;
+	display: block;
+	text-decoration: none;
+}
+
+ul.page-nav li a:hover {
+	color: #333;
+	background: #FFF;
+}
 
 ul.submenu {
-  margin: 10px 0 -10px 20px;
-  list-style-type: none;
+	margin: 10px 0 -10px 20px;
+	list-style-type: none;
 }
+
 ul.submenu li {
-  margin: 0 10px 0 0;
-  font-size: 1.2em;
-  display: inline;
+	margin: 0 10px 0 0;
+	font-size: 1.2em;
+	display: inline;
 }
 
 h2 {
-  margin: 20px 0 10px;
-  height: 30px;
-  line-height: 30px;
-  text-indent: 20px;
-  background: #FFF;
-  font-size: 1.2em;
-  border-top: dotted 1px #D5E1E6;
-  font-weight: bold;
+	margin: 20px 0 10px;
+	height: 30px;
+	line-height: 30px;
+	text-indent: 20px;
+	background: #FFF;
+	font-size: 1.2em;
+	border-top: dotted 1px #D5E1E6;
+	font-weight: bold;
 }
+
 h2.no-link {
-  color:#006699;
+	color: #006699;
 }
+
 h2.no-border {
-  color: #FFF;
-  background: #556CB5;
-  border: 0;
+	color: #FFF;
+	background: #556CB5;
+	border: 0;
 }
+
 h2 a {
-  font-weight:bold;
-  color:#006699;
+	font-weight: bold;
+	color: #006699;
 }
 
 div.page-path {
-  text-align: right;
-  padding: 20px 30px 10px 0;
-  border:solid #d9d8d1;
-  border-width:0px 0px 1px;
-  font-size: 1.2em;
+	text-align: right;
+	padding: 20px 30px 10px 0;
+	border: solid #d9d8d1;
+	border-width: 0px 0px 1px;
+	font-size: 1.2em;
 }
 
 div.page-footer {
-  margin: 50px 0 0;
-  position: relative;
+	margin: 50px 0 0;
+	position: relative;
 }
-  div.page-footer p {
-    position: relative;
-    left: 20px;
-    bottom: 5px;
-    font-size: 1.2em;
-  }
+
+div.page-footer p {
+	position: relative;
+	left: 20px;
+	bottom: 5px;
+	font-size: 1.2em;
+}
+
+ul.rss-logo {
+	position: absolute;
+	top: -10px;
+	right: 20px;
+	height: 20px;
+	list-style-type: none;
+}
 
-  ul.rss-logo {
-    position: absolute;
-    top: -10px;
-    right: 20px;
-    height: 20px;
-    list-style-type: none;
-  }
-  ul.rss-logo li {
-    display: inline;
-  }
-  ul.rss-logo li a {
-    padding: 3px 6px;
-    line-height: 10px;
-    border:1px solid;
-    border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
-    color:#ffffff;
-    background-color:#ff6600;
-    font-weight:bold;
-    font-family:sans-serif;
-    font-size:10px;
-    text-align:center;
-    text-decoration:none;
-  }
-  div.rss-logo li a:hover {
-    background-color:#ee5500;
-  }
+ul.rss-logo li {
+	display: inline;
+}
+
+ul.rss-logo li a {
+	padding: 3px 6px;
+	line-height: 10px;
+	border: 1px solid;
+	border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
+	color: #ffffff;
+	background-color: #ff6600;
+	font-weight: bold;
+	font-family: sans-serif;
+	font-size: 10px;
+	text-align: center;
+	text-decoration: none;
+}
+
+div.rss-logo li a:hover {
+	background-color: #ee5500;
+}
 
 p.normal {
-  margin: 20px 0 20px 30px;
-  font-size: 1.2em;
+	margin: 20px 0 20px 30px;
+	font-size: 1.2em;
 }
 
-table {
-  margin: 0 0 0 0;  
-  border-collapse: collapse;
-}
-/*
-table tr td {
-  font-size: 1.1em;
-}
-table tr td.nowrap {
-  white-space: nowrap;
-}
-*/
 table tr.parity0:hover,table tr.parity1:hover {
-  background: #D5E1E6;
+	background: #D5E1E6;
 }
 
 table tr.parity0 {
-  background: #EAEAE9;
-}
-table tr.parity1 {
-  background: #FFFFFF;
+	background: #EAEAE9;
 }
-table tr td {
-  padding: 3px 3px;
-}
-table.annotated tr td {
-  padding: 0px 3px;
+
+table tr.parity1 {
+	background: #FFFFFF;
 }
 
 span.logtags span {
-	background-repeat:no-repeat;
-	height:16px;
-	padding-left:20px;
-	padding-top:0px;
-	text-align:left;
+	background-repeat: no-repeat;
+	height: 16px;
+	padding-left: 20px;
+	padding-top: 0px;
+	text-align: left;
 	font-weight: bold;
 }
+
 span.logtags span.tagtag {
-	background-image:url("/images/label_16.png");
+	background-image: url("/images/label_16.png");
 }
+
 span.logtags span.branchtag {
-	background-image:url("/images/left_16.png");
+	background-image: url("/images/left_16.png");
 	color: #628F53;
 }
+
 span.logtags span.inbranchtag {
-	background-image:url("/images/left_16.png");
+	background-image: url("/images/left_16.png");
 }
 
 div.diff pre {
-  margin: 10px 0 0 0;
+	margin: 10px 0 0 0;
 }
+
 div.diff pre span {
-  font-family: monospace;
-  white-space: pre;
-  font-size: 1.2em;
-  padding: 3px 0;
+	font-family: monospace;
+	white-space: pre;
+	font-size: 1.2em;
+	padding: 3px 0;
 }
+
 td.source {
-  white-space: pre;
-  font-family: monospace;
-  margin: 10px 30px 0;
-  font-size: 1.2em;
-  font-family: monospace;
+	white-space: pre;
+	font-family: monospace;
+	margin: 10px 30px 0;
+	font-size: 1.2em;
+	font-family: monospace;
+}
+
+div.source div.parity0,div.source div.parity1 {
+	padding: 1px;
+	font-size: 1.2em;
 }
-  div.source div.parity0,
-  div.source div.parity1 {
-    padding: 1px;
-    font-size: 1.2em;
-  }
-  div.source div.parity0 {
-    background: #F1F6F7;
-  }
-  div.source div.parity1 {
-    background: #FFFFFF;
-  }
-div.parity0:hover,
-div.parity1:hover {
-  background: #D5E1E6;
+
+div.source div.parity0 {
+	background: #F1F6F7;
+}
+
+div.source div.parity1 {
+	background: #FFFFFF;
+}
+
+div.parity0:hover,div.parity1:hover {
+	background: #D5E1E6;
 }
+
 .linenr {
-  color: #999;
-  text-align: right;
+	color: #999;
+	text-align: right;
 }
+
 .lineno {
-  text-align: right;
+	text-align: right;
 }
+
 .lineno a {
-  color: #999;
+	color: #999;
 }
+
 td.linenr {
-  width: 60px;
+	width: 60px;
 }
 
 div#powered-by {
-  position: absolute;
-  width: 75px;
-  top: 15px;
-  right: 20px;
-  font-size: 1.2em;
-}
-div#powered-by a {
-  color: #EEE;
-  text-decoration: none;
-}
-div#powered-by a:hover {
-  text-decoration: underline;
+	position: absolute;
+	width: 75px;
+	top: 15px;
+	right: 20px;
+	font-size: 1.2em;
 }
-/*
-div#monoblue-corner-top-left {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 10px;
-  height: 10px;
-  background: url(./monoblue-corner.png) top left no-repeat !important;
-  background: none;
+
+div#powered-by a {
+	color: #EEE;
+	text-decoration: none;
 }
-div#monoblue-corner-top-right {
-  position: absolute;
-  top: 0;
-  right: 0;
-  width: 10px;
-  height: 10px;
-  background: url(./monoblue-corner.png) top right no-repeat !important;
-  background: none;
+
+div#powered-by a:hover {
+	text-decoration: underline;
 }
-div#monoblue-corner-bottom-left {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  width: 10px;
-  height: 10px;
-  background: url(./monoblue-corner.png) bottom left no-repeat !important;
-  background: none;
-}
-div#monoblue-corner-bottom-right {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  width: 10px;
-  height: 10px;
-  background: url(./monoblue-corner.png) bottom right no-repeat !important;
-  background: none;
+
+dl.overview {
+	margin: 0 0 0 30px;
+	font-size: 1.1em;
+	overflow: hidden;
 }
-*/
-/** end of common settings **/
 
-/** summary **/
-dl.overview {
-  margin: 0 0 0 30px;
-  font-size: 1.1em;
-  overflow: hidden;
+dl.overview dt,dl.overview dd {
+	margin: 5px 0;
+	float: left;
 }
-  dl.overview dt,
-  dl.overview dd {
-    margin: 5px 0;
-    float: left;
-  }
-  dl.overview dt {
-    clear: left;
-    font-weight: bold;
-    width: 150px;
-  }
-/** end of summary **/
+
+dl.overview dt {
+	clear: left;
+	font-weight: bold;
+	width: 150px;
+}
+
+/** end of summary **/ 
 
 /** chagelog **/
 h3.changelog {
-  margin: 20px 0 5px 30px;
-  padding: 0 0 2px;
-  font-size: 1.4em;
-  border-bottom: dotted 1px #D5E1E6;
+	margin: 20px 0 5px 30px;
+	padding: 0 0 2px;
+	font-size: 1.4em;
+	border-bottom: dotted 1px #D5E1E6;
 }
+
 ul.changelog-entry {
-  margin: 0 0 10px 30px;
-  list-style-type: none;
-  position: relative;
+	margin: 0 0 10px 30px;
+	list-style-type: none;
+	position: relative;
 }
+
 ul.changelog-entry li span.revdate {
-  font-size: 1.1em;
+	font-size: 1.1em;
 }
+
 ul.changelog-entry li.age {
-  position: absolute;
-  top: -25px;
-  right: 10px;
-  font-size: 1.4em;
-  color: #CCC;
-  font-weight: bold;
-  font-style: italic;
+	position: absolute;
+	top: -25px;
+	right: 10px;
+	font-size: 1.4em;
+	color: #CCC;
+	font-weight: bold;
+	font-style: italic;
 }
+
 ul.changelog-entry li span.name {
-  font-size: 1.2em;
-  font-weight: bold;
+	font-size: 1.2em;
+	font-weight: bold;
 }
+
 ul.changelog-entry li.description {
-  margin: 10px 0 0;
-  font-size: 1.1em;
+	margin: 10px 0 0;
+	font-size: 1.1em;
 }
-/** end of changelog **/
+
+/** end of changelog **/ 
 
 /** file **/
 p.files {
-  margin: 0 0 0 20px;
-  font-size: 2.0em;
-  font-weight: bold;
+	margin: 0 0 0 20px;
+	font-size: 2.0em;
+	font-weight: bold;
 }
-/** end of file **/
+
+/** end of file **/ 
 
 /** changeset **/
 h3.changeset {
-  margin: 20px 0 5px 20px;
-  padding: 0 0 2px;
-  font-size: 1.6em;
-  border-bottom: dotted 1px #D5E1E6;
+	margin: 20px 0 5px 20px;
+	padding: 0 0 2px;
+	font-size: 1.6em;
+	border-bottom: dotted 1px #D5E1E6;
 }
+
 p.changeset-age {
-  position: relative;
+	position: relative;
 }
+
 p.changeset-age span {
-  position: absolute;
-  top: -25px;
-  right: 10px;
-  font-size: 1.4em;
-  color: #CCC;
-  font-weight: bold;
-  font-style: italic;
+	position: absolute;
+	top: -25px;
+	right: 10px;
+	font-size: 1.4em;
+	color: #CCC;
+	font-weight: bold;
+	font-style: italic;
 }
+
 p.description {
-  margin: 10px 30px 0 30px;
-  padding: 10px;
-  border: solid 1px #CCC;
-  font-size: 1.2em;
+	margin: 10px 30px 0 30px;
+	padding: 10px;
+	border: solid 1px #CCC;
+	font-size: 1.2em;
 }
-/** end of changeset **/
+
+/** end of changeset **/ 
 
 /** canvas **/
 div#wrapper {
 	position: relative;
-    font-size: 1.2em;
+	font-size: 1.2em;
 }
 
 canvas {
@@ -446,11 +424,11 @@
 }
 
 ul#nodebgs li.parity0 {
-    background: #F1F6F7;
+	background: #F1F6F7;
 }
 
 ul#nodebgs li.parity1 {
-    background: #FFFFFF;
+	background: #FFFFFF;
 }
 
 ul#graphnodes {
@@ -464,7 +442,7 @@
 	list-style: none inside none;
 }
 
-ul#graphnodes li, ul#nodebgs li {
+ul#graphnodes li,ul#nodebgs li {
 	height: 39px;
 }
 
@@ -472,72 +450,109 @@
 	display: block;
 	position: relative;
 }
+
 /** end of canvas **/
 
-table.code-browser{
-	
+/* FILE BROWSER */
+div.browserblock {
+    overflow: hidden;
+    padding: 0px;
+    border: 1px solid #ccc;
+    background: #f8f8f8;
+    font-size: 100%;
+    line-height: 100%;
+    /* new */
+    line-height: 125%;
 }
-table.code-browser thead th {
-	background-color:#EEEEEE;
-	border:1px solid #999999;
-	height:20px;
-	font-size: 1.1em;
+div.browserblock .browser-header{
+	border-bottom: 1px solid #CCCCCC;
+	background: #EEEEEE;
+	color:blue;
+	padding:10px 0 10px 0;
+}
+div.browserblock .browser-header span{
+	margin-left:25px;
 	font-weight: bold;
 }
-table.code-browser tbody td {
-	border:1px solid #999999;
-	height:20px;
+div.browserblock .browser-body{
+	background: #EEEEEE;
 }
-.info-table {
-	background:none repeat scroll 0 0 #FAFAFA;
-	border-bottom:1px solid #DDDDDD;
-	width:100%;
+
+table.code-browser {
+	border-collapse:collapse;	
+}
+table.code-browser tr{
+	margin:3px;	
 }
-.rss_logo{
-	background-image:url("/images/feed.png");
-	background-repeat:no-repeat;
-	display:block;
-	height:16px;
-	padding-left:20px;
-	padding-top:0px;
-	text-align:left;
+
+table.code-browser thead th {
+	background-color: #EEEEEE;
+	height: 20px;
+	font-size: 1.1em;
+	font-weight: bold;
+	text-align: center;
+}
+table.code-browser tbody tr {
 	
 }
-.atom_logo{
-	background-image:url("/images/atom.png");
-	background-repeat:no-repeat;
-	display:block;
-	height:16px;
-	padding-left:20px;
-	padding-top:0px;
-	text-align:left;
+
+table.code-browser tbody td {
 	
+	padding-left:10px;
+	height: 20px;
 }
-.browser-file {
-	background-image:url("/images/document_16.png");
-	background-repeat:no-repeat;
-	display:block;
-	height:16px;
-	padding-left:20px;
-	padding-top:0px;
-	text-align:left;
+
+.info-table {
+	background: none repeat scroll 0 0 #FAFAFA;
+	border-bottom: 1px solid #DDDDDD;
+	width: 100%;
 }
-.browser-dir {
-	background-image:url("/images/folder_16.png");
-	background-repeat:no-repeat;
-	display:block;
-	height:16px;
-	padding-left:20px;
-	padding-top:0px;
-	text-align:left;
+
+.rss_logo {
+	background-image: url("/images/feed.png");
+	background-repeat: no-repeat;
+	display: block;
+	height: 16px;
+	padding-left: 20px;
+	padding-top: 0px;
+	text-align: left;
 }
 
-.current_submenu{
-	border-bottom: 2px solid;
+.atom_logo {
+	background-image: url("/images/atom.png");
+	background-repeat: no-repeat;
+	display: block;
+	height: 16px;
+	padding-left: 20px;
+	padding-top: 0px;
+	text-align: left;
+}
 
+.browser-file {
+	background-image: url("/images/document_16.png");
+	background-repeat: no-repeat;
+	display: block;
+	height: 16px;
+	padding-left: 20px;
+	padding-top: 0px;
+	text-align: left;
 }
-#repos_list{
-border:1px solid #556CB5;
-background: #FFFFFF;
 
+.browser-dir {
+	background-image: url("/images/folder_16.png");
+	background-repeat: no-repeat;
+	display: block;
+	height: 16px;
+	padding-left: 20px;
+	padding-top: 0px;
+	text-align: left;
+}
+
+.current_submenu {
+	border-bottom: 2px solid;
+}
+
+#repos_list {
+	border: 1px solid #556CB5;
+	background: #FFFFFF;
 }
\ No newline at end of file
--- a/pylons_app/public/css/pygments.css	Sun May 09 17:23:11 2010 +0200
+++ b/pylons_app/public/css/pygments.css	Sun May 09 17:35:51 2010 +0200
@@ -8,6 +8,16 @@
     /* new */
     line-height: 125%;
 }
+div.codeblock .code-header{
+	border-bottom: 1px solid #CCCCCC;
+	background: #EEEEEE;
+	color:blue;
+	padding:10px 0 10px 0;
+}
+div.codeblock .code-header span{
+	margin-left:25px;
+	font-weight: bold;
+}
 
 .code-highlight {
     padding: 0px;
--- a/pylons_app/public/css/pygments_diff.css	Sun May 09 17:23:11 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-div.codeblock {
-    overflow: auto;
-    padding: 0px;
-    border: 1px solid #ccc;
-    background: #f8f8f8;
-    font-size: 100%;
-    line-height: 100%;
-    /* new */
-    line-height: 125%;
-}
-
-.code-diff {
-    padding: 0px;
-    margin-top: 5px;
-    margin-bottom: 5px;
-    border-left: 2px solid #ccc;
-}
-.code-diff pre, .linenodiv pre { 
-	padding: 5px;
-    margin: 0;
-}
-.linenos a { text-decoration: none; }
-
-
-.code { display: block;}
-
-.code-diff .hll { background-color: #ffffcc }
-.code-diff  { background: #ffffff; }
-.code-diff .c { color: #888888 } /* Comment */
-.code-diff .err { color: #a61717; background-color: #e3d2d2 } /* Error */
-.code-diff .k { color: #008800; font-weight: bold } /* Keyword */
-.code-diff .cm { color: #888888 } /* Comment.Multiline */
-.code-diff .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
-.code-diff .c1 { color: #888888 } /* Comment.Single */
-.code-diff .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
-.code-diff .gd { color: #000000; background-color: #ffdddd;width: 300px  } /* Generic.Deleted */
-.code-diff .ge { font-style: italic } /* Generic.Emph */
-.code-diff .gr { color: #aa0000 } /* Generic.Error */
-.code-diff .gh { color: #303030 } /* Generic.Heading */
-.code-diff .gi { color: #000000; background-color: #ddffdd;width: 100% } /* Generic.Inserted */
-.code-diff .go { color: #888888 } /* Generic.Output */
-.code-diff .gp { color: #555555 } /* Generic.Prompt */
-.code-diff .gs { font-weight: bold } /* Generic.Strong */
-.code-diff .gu { color: #606060 } /* Generic.Subheading */
-.code-diff .gt { color: #aa0000 } /* Generic.Traceback */
-.code-diff .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
-.code-diff .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
-.code-diff .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
-.code-diff .kp { color: #008800 } /* Keyword.Pseudo */
-.code-diff .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
-.code-diff .kt { color: #888888; font-weight: bold } /* Keyword.Type */
-.code-diff .m { color: #0000DD; font-weight: bold } /* Literal.Number */
-.code-diff .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
-.code-diff .na { color: #336699 } /* Name.Attribute */
-.code-diff .nb { color: #003388 } /* Name.Builtin */
-.code-diff .nc { color: #bb0066; font-weight: bold } /* Name.Class */
-.code-diff .no { color: #003366; font-weight: bold } /* Name.Constant */
-.code-diff .nd { color: #555555 } /* Name.Decorator */
-.code-diff .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
-.code-diff .nf { color: #0066bb; font-weight: bold } /* Name.Function */
-.code-diff .nl { color: #336699; font-style: italic } /* Name.Label */
-.code-diff .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
-.code-diff .py { color: #336699; font-weight: bold } /* Name.Property */
-.code-diff .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
-.code-diff .nv { color: #336699 } /* Name.Variable */
-.code-diff .ow { color: #008800 } /* Operator.Word */
-.code-diff .w { color: #bbbbbb } /* Text.Whitespace */
-.code-diff .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
-.code-diff .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
-.code-diff .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
-.code-diff .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
-.code-diff .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
-.code-diff .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
-.code-diff .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
-.code-diff .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
-.code-diff .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
-.code-diff .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
-.code-diff .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
-.code-diff .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
-.code-diff .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
-.code-diff .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
-.code-diff .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
-.code-diff .bp { color: #003388 } /* Name.Builtin.Pseudo */
-.code-diff .vc { color: #336699 } /* Name.Variable.Class */
-.code-diff .vg { color: #dd7700 } /* Name.Variable.Global */
-.code-diff .vi { color: #3333bb } /* Name.Variable.Instance */
-.code-diff .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
--- a/pylons_app/templates/files/file_diff.html	Sun May 09 17:23:11 2010 +0200
+++ b/pylons_app/templates/files/file_diff.html	Sun May 09 17:35:51 2010 +0200
@@ -22,50 +22,38 @@
 </%def>
 <%def name="css()">
 <link rel="stylesheet" href="/css/monoblue_custom.css" type="text/css" />
-<link rel="stylesheet" href="/css/pygments_diff.css" type="text/css" />
+<link rel="stylesheet" href="/css/diff.css" type="text/css" />
 </%def>
-<div></div>
 <%def name="main()">
-    <h2 class="no-link no-border">${'%s: %s@%s %s %s' % (_('File diff'),c.f_path,c.diff2,'&rarr;',c.diff1)|n}</h2>
-	<div id="files_data">
-		<div id="body" class="codeblock">
-			${h.pygmentize(c.diff,linenos=True,anchorlinenos=True,cssclass="code-diff")}
-		</div>
+    <h2 class="no-link no-border">${'%s:  %s %s %s' % (_('File diff'),c.diff2,'&rarr;',c.diff1)|n}</h2>
+<div id="body" class="diffblock">
+	<div class="code-header">
+		<span>${h.link_to(c.f_path,h.url('files_home',repo_name=c.repo_name,revision=c.diff2.split(':')[1],f_path=c.f_path))}</span>
 	</div>
-	<div style="clear:both"></div>
-    <div id="files_data">
-        <div id="body" class="codeblock">
-            <table class='highlighttable'>
-            %for x in c.diff_2[0]['chunks']:
-                %for y in x:
-                    <tr class="line ${y['action']}">
-                        <td class="lineno_new">
-                            <div class="linenodiv">
-                                <pre>
-                                    ${y['new_lineno']}
-                                </pre>
-                            </div>
-                        </td>
-                        <td class="lineno_old">
-                            <div class="linenodiv">
-                                <pre>
-                                    ${y['old_lineno']}
-                                </pre>
-                            </div>
-                        </td>                        
-                        <td class="code">
-	                        <div class="code-diff">
-	                           <pre>
-	                               <span>
-	                               ${y}
-	                               </span>
-	                           </pre>
-	                        </div>
-                        </td>
-                    </tr>
-                %endfor$
-            %endfor
-            </table>
-        </div>
-    </div>	
+	<div class="code-body">
+ 			%if c.no_changes:
+            	${_('No changes')}
+            %else:        
+	            <table class='code-difftable'>
+	            %for diff in c.diff_files:
+		            %for x in diff['chunks']:
+		                %for y in x:
+		                    <tr class="line ${y['action']}">
+		                        <td id="#${diff['filename']}_N${y['new_lineno']}"class="lineno new">
+		                              <pre><a href="#${diff['filename']}_N${y['new_lineno']}">${y['new_lineno']}</a></pre>
+		                        </td>
+		                        <td id="#${diff['filename']}_O${y['old_lineno']}" class="lineno old">
+		                              <pre><a href="#${diff['filename']}_O${y['old_lineno']}">${y['old_lineno']}</a></pre>
+		                        </td>                        
+		                       <td class="code">
+		                           <pre>${y['line']|n}</pre>
+		                       </td>
+		                    </tr>
+		                %endfor$
+		            %endfor
+		        %endfor
+	            </table>
+            %endif
+	</div>
+</div>
 </%def>    
\ No newline at end of file
--- a/pylons_app/templates/files/files_browser.html	Sun May 09 17:23:11 2010 +0200
+++ b/pylons_app/templates/files/files_browser.html	Sun May 09 17:35:51 2010 +0200
@@ -5,53 +5,62 @@
 		<%return "browser-dir"%>
 	%endif
 </%def>
-		
-<table class="code-browser">
-         <thead>
-             <tr>
-                 <th class="width-50 lefted">${_('Name')}</th>
-                 <th class="width-10 righted">${_('Size')}</th>
-                 <th class="width-10 righted">${_('Revision')}</th>
-                 <th class="width-15 righted">${_('Last modified')}</th>
-                 <th class="width-15 righted">${_('Last commiter')}</th>
-             </tr>
-         </thead>
-         	<tr>
-         		% if c.files_list.parent:
-          		<td>
-          			${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=c.files_list.parent),class_="browser-dir")}
-          		</td>
-          		<td></td>
-          		<td></td>
-          		<td></td>
-          		<td></td>
-         		%endif
-         	</tr>
-    %for cnt,node in enumerate(c.files_list):
-		<tr class="parity${cnt%2}">
-             <td>
-				${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=node.path),class_=file_class(node))}
-             </td>
-             <td>
-                %if node.is_file():
-             		${h.filesizeformat(node.size)}
-             	%endif
-             </td>
-             <td>
-             	%if node.is_file():
-             		${node.last_changeset.revision}
-             	%endif
-             </td>
-             <td>
-             	%if node.is_file():
-             		${node.last_changeset.date}
-             	%endif
-             </td>
-             <td>
-             	%if node.is_file():
-             		${node.last_changeset.author}
-             	%endif                    
-             </td>
-		</tr>
-	%endfor
-</table>
\ No newline at end of file
+<div id="body" class="browserblock">
+	<div class="browser-header">
+		${h.form(h.url.current())}
+		<span>${_('view')}@rev:${h.text('at_rev',value=c.rev_nr,size='5')}</span>
+		${h.submit('view','view')}
+		${h.end_form()}
+	</div>
+	<div class="browser-body">		
+		<table class="code-browser">
+		         <thead>
+		             <tr>
+		                 <th>${_('Name')}</th>
+		                 <th>${_('Size')}</th>
+		                 <th>${_('Revision')}</th>
+		                 <th>${_('Last modified')}</th>
+		                 <th>${_('Last commiter')}</th>
+		             </tr>
+		         </thead>
+		         	<tr class="parity0">
+		          		<td>
+		          		% if c.files_list.parent:
+		          			${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=c.files_list.parent.path),class_="browser-dir")}
+		          		%endif
+		          		</td>
+		          		<td></td>
+		          		<td></td>
+		          		<td></td>
+		          		<td></td>
+		         	</tr>
+		    %for cnt,node in enumerate(c.files_list,1):
+				<tr class="parity${cnt%2}">
+		             <td>
+						${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=node.path),class_=file_class(node))}
+		             </td>
+		             <td>
+		                %if node.is_file():
+		             		${h.filesizeformat(node.size)}
+		             	%endif
+		             </td>
+		             <td>
+		             	%if node.is_file():
+		             		${node.last_changeset.revision}
+		             	%endif
+		             </td>
+		             <td>
+		             	%if node.is_file():
+		             		${node.last_changeset.date}
+		             	%endif
+		             </td>
+		             <td>
+		             	%if node.is_file():
+		             		${node.last_changeset.author}
+		             	%endif                    
+		             </td>
+				</tr>
+			%endfor
+		</table>
+	</div>
+</div>
\ No newline at end of file
--- a/pylons_app/templates/files/files_source.html	Sun May 09 17:23:11 2010 +0200
+++ b/pylons_app/templates/files/files_source.html	Sun May 09 17:35:51 2010 +0200
@@ -1,14 +1,14 @@
 <dl class="overview">
 	<dt>${_('Revision')}</dt>
-	<dd>r${c.files_list.changeset.revision}:${c.files_list.changeset._short}</dd>
+	<dd>r${c.files_list.last_changeset.revision}:${c.files_list.last_changeset._short}</dd>
 	<dt>${_('Size')}</dt>
 	<dd>${h.filesizeformat(c.files_list.size)}</dd>
 	<dt>${_('Options')}</dt>
-	<dd>history  / annotate  / raw  </dd>
+	<dd>${h.link_to(_('annotate'),h.url('#'))}  / ${h.link_to(_('raw'),h.url('#'))}</dd>
 	<dt>${_('History')}</dt>
 	<dd>
 		${h.form(h.url('files_diff_home',repo_name=c.repo_name,f_path=c.f_path),method='GET')}
-		${h.hidden('diff2',c.files_list.changeset._short)}
+		${h.hidden('diff2',c.files_list.last_changeset._short)}
 		${h.select('diff1','',c.file_history)}
 		${h.submit('diff','diff')}
 		${h.end_form()}
@@ -16,5 +16,10 @@
 					
 </dl>		
 <div id="body" class="codeblock">
-	${h.pygmentize(c.files_list.content,linenos=True,anchorlinenos=True,cssclass="code-highlight")}
+	<div class="code-header">
+		<span>${c.files_list.name}@r${c.files_list.last_changeset.revision}:${c.files_list.last_changeset._short}</span>
+	</div>
+	<div class="code-body">
+		${h.pygmentize(c.files_list.content,linenos=True,anchorlinenos=True,cssclass="code-highlight")}
+	</div>
 </div>
\ No newline at end of file