You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(25) |
Jul
(288) |
Aug
(119) |
Sep
(31) |
Oct
(59) |
Nov
(458) |
Dec
(359) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
(268) |
Feb
(26) |
Mar
(36) |
Apr
(48) |
May
(119) |
Jun
(37) |
Jul
(173) |
Aug
(429) |
Sep
(137) |
Oct
(156) |
Nov
(59) |
Dec
(45) |
| 2011 |
Jan
(398) |
Feb
(257) |
Mar
(49) |
Apr
(5) |
May
(34) |
Jun
(11) |
Jul
(38) |
Aug
(12) |
Sep
(1) |
Oct
(49) |
Nov
(5) |
Dec
(10) |
| 2012 |
Jan
(21) |
Feb
(32) |
Mar
(20) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(173) |
Aug
|
Sep
(25) |
Oct
(6) |
Nov
(44) |
Dec
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 23:15:52
|
Module: web Branch: master Commit: 0ab71d85c899da2ea7774f900e213d0c19381c08 Author: Lasse Karkkainen <tro...@tr...> Date: Sun Dec 5 19:49:32 2010 +0100 Fix songs page --- htdocs-source/songs.txt | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs-source/songs.txt b/htdocs-source/songs.txt index fde2e64..2bc9b71 100644 --- a/htdocs-source/songs.txt +++ b/htdocs-source/songs.txt @@ -10,22 +10,22 @@ You can find information on supported formats and song folder locations at the < The songs here are only repackaged by the Performous project. The packages contain license files listing the authors of the materials used and in many cases also of the Ultrastar conversion. -</p><img src="songimgs/libre.png" alt="" style="float: left"/><div style="margin-left: 280px;"><p> +</p><div><img src="songimgs/libre.png" alt="" style="vertical-align: top; display: inline-block"/><div style="vertical-align: top; display: inline-block; width: 350px; margin-left: 20px;"><p> The <strong>libre</strong> package contains songs with very permissive licenses. <strong>Free Software Song</strong> by Thor <strong>On the run</strong> by Joshua Morin Download <a href="http://sourceforge.net/projects/performous/files/ultrastar-songs-libre/ultrastar-songs-libre-3.zip">ZIP</a> (5 MB) -</p><!-- Horrible hack here, but the clear:both -method creates a gap, because it clears for the sidebar too --><br/><br/><br/><br/><br/><br/></div><p> +</p></div></div><p> -</p><img src="songimgs/restricted.png" alt="" style="float: left"/><div style="margin-left: 280px;"><p> +</p><div><img src="songimgs/restricted.png" alt="" style="vertical-align: top; display: inline-block"/><div style="vertical-align: top; display: inline-block; width: 350px; margin-left: 20px;"><p> The <strong>restricted</strong> package contains songs that use more restrictive licenses not permitting modifications and/or commercial use. <strong>I 18</strong> by Dead Smiling Pirates <strong>Northern Star</strong> by Steven Dunston <strong>Space Invaders</strong> by Pornophonique Download <a href="http://sourceforge.net/projects/performous/files/ultrastar-songs-restricted/ultrastar-songs-restricted-3.zip">ZIP</a> (10 MB) -</p><br style="clear:both"/></div><p> +</p></div></div><p> -</p><img src="songimgs/jc.jpg" alt="" style="float: left"/><div style="margin-left: 280px;"><p> +</p><div><img src="songimgs/jc.jpg" alt="" style="vertical-align: top; display: inline-block"/><div style="vertical-align: top; display: inline-block; width: 350px; margin-left: 20px;"><p> <a href="http://www.jonathancoulton.com/">Jonathan Coulton</a> collection, licensed CC by-nc-sa. <strong>A Talk with George</strong> <strong>Better</strong> @@ -52,9 +52,9 @@ Download <a href="http://sourceforge.net/projects/performous/files/ultrastar-son <strong>The Future Soon</strong> <strong>When You Go</strong> Download <a href="http://sourceforge.net/projects/performous/files/ultrastar-songs-jc/ultrastar-songs-jc-1.zip">ZIP</a> (240 MB) -</p><br style="clear:both"/></div><p> +</p></div></div><p> -</p><img src="songimgs/shearer.jpg" alt="" style="float: left"/><div style="margin-left: 280px;"><p> +</p><div><img src="songimgs/shearer.jpg" alt="" style="vertical-align: top; display: inline-block;"/><div style="vertical-align: top; display: inline-block; width: 350px; margin-left: 20px;"><p> <strong>Shearer</strong> collection, licensed CC by-nc-sa. <strong>69</strong> (with karaoke) <strong>Can't stop it</strong> (with karaoke) @@ -62,7 +62,7 @@ Download <a href="http://sourceforge.net/projects/performous/files/ultrastar-son <strong>Man Song</strong> (with karaoke) <strong>Stay with me</strong> (with karaoke) Download <a href="http://sourceforge.net/projects/performous/files/ultrastar-songs-shearer/ultrastar-songs-shearer-1.zip">ZIP</a> (50 MB) -</p><br style="clear:both"/></div><p> +</p></div></div><p> :h2:More songs? |
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 23:15:50
|
Module: web
Branch: master
Commit: 9278ca9901fb53a58a002f28a79551a2c5c760c9
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Dec 5 18:11:00 2010 +0100
Fix glow (shadow) effects for non-webkit browsers, give more room for page heading, add reflection effect for showcase (webkit only).
---
htdocs-binary/style.css | 18 ++++++++++++------
1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/htdocs-binary/style.css b/htdocs-binary/style.css
index 7648106..a42e24d 100644
--- a/htdocs-binary/style.css
+++ b/htdocs-binary/style.css
@@ -24,9 +24,9 @@ body {
#page {
height: 600px;
background-color: rgba(0,0,0,0.6);
- box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
+ box-shadow: 0px 0px 50px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 0px 0px 50px rgba(0, 0, 0, 0.5);
- -moz-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
+ -moz-box-shadow: 0px 0px 50px rgba(0, 0, 0, 0.5);
padding: 10px;
border-radius: 10px;
}
@@ -34,11 +34,13 @@ body {
#main {
position: relative;
border-radius: 10px;
+ box-shadow: 0px 0px 50px #448;
-webkit-box-shadow: 0px 0px 50px #448;
+ -moz-box-shadow: 0px 0px 50px #448;
background: #448;
margin: 20px;
margin-left: 145px;
- margin-top: 60px;
+ margin-top: 70px;
padding: 10px;
}
#content {
@@ -56,7 +58,7 @@ body {
width: 135px;
float: left;
padding: 5px;
- margin-top: 50px;
+ margin-top: 70px;
font-size: 14px;
}
@@ -83,7 +85,9 @@ body {
#menu li.selected {
background-color: #448;
border-radius: 10px;
+ box-shadow: 0px 0px 50px #448;
-webkit-box-shadow: 0px 0px 50px #448;
+ -moz-box-shadow: 0px 0px 50px #448;
width: 150px;
}
@@ -113,7 +117,7 @@ a:hover, a:active {
}
h1 {
position: absolute;
- top: -60px;
+ top: -70px;
font-size: 40px;
color: #ddd;
/*text-shadow: 0px 0px 10px rgba(68, 68, 136, 1.0);*/
@@ -133,7 +137,9 @@ h1 {
#showcase {
background: url('imgs/showcase.jpg') repeat-x;
width: 640px;
- height: 100px;
+ height: 96px;
+ margin-bottom: 30px;
+ -webkit-box-reflect:below 0 -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(0.6, transparent), to(rgba(255,255,255,0.3)));
}
h3 {
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 23:15:47
|
Module: web
Branch: master
Commit: bac9803d3199972d8a8b68023f736ba577e181c7
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Dec 5 17:53:08 2010 +0100
Round corners for menu selection too
---
htdocs-binary/style.css | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/htdocs-binary/style.css b/htdocs-binary/style.css
index 1caabb6..7648106 100644
--- a/htdocs-binary/style.css
+++ b/htdocs-binary/style.css
@@ -82,8 +82,9 @@ body {
}
#menu li.selected {
background-color: #448;
+ border-radius: 10px;
-webkit-box-shadow: 0px 0px 50px #448;
- width: 140px;
+ width: 150px;
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 23:15:43
|
Module: web
Branch: master
Commit: 4616b0d1c9b60bd9a54b99eace344ad3acef18e9
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Dec 5 17:46:24 2010 +0100
Fix showcase URL
---
htdocs-binary/style.css | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/htdocs-binary/style.css b/htdocs-binary/style.css
index 24a6949..1caabb6 100644
--- a/htdocs-binary/style.css
+++ b/htdocs-binary/style.css
@@ -130,7 +130,7 @@ h1 {
}
#showcase {
- background: url('showcase.jpg') repeat-x;
+ background: url('imgs/showcase.jpg') repeat-x;
width: 640px;
height: 100px;
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 23:15:40
|
Module: web
Branch: master
Commit: c7d14e6be5c7b31c422d58f5c6c81cc13aa4c366
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Dec 5 17:45:38 2010 +0100
Dark + glow
---
htdocs-binary/style.css | 18 ++++++------------
1 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/htdocs-binary/style.css b/htdocs-binary/style.css
index 9b72208..24a6949 100644
--- a/htdocs-binary/style.css
+++ b/htdocs-binary/style.css
@@ -22,10 +22,10 @@ body {
}
/* page */
#page {
- min-height: 600px;
- background-color: rgba(255,255,255,0.3);
+ height: 600px;
+ background-color: rgba(0,0,0,0.6);
box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
- -webkit-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
+ -webkit-box-shadow: 0px 0px 50px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
padding: 10px;
border-radius: 10px;
@@ -34,10 +34,8 @@ body {
#main {
position: relative;
border-radius: 10px;
+ -webkit-box-shadow: 0px 0px 50px #448;
background: #448;
- box-shadow: 3px 5px 5px rgba(0, 0, 0, 0.4);
- -webkit-box-shadow: 3px 5px 5px rgba(0, 0, 0, 0.4);
- -moz-box-shadow: 3px 5px 5px rgba(0, 0, 0, 0.4);
margin: 20px;
margin-left: 145px;
margin-top: 60px;
@@ -82,13 +80,9 @@ body {
#menu li a {
margin-left: 7px;
}
-/*
-#menu li a:hover {
- text-decoration: underline;
-}
-*/
#menu li.selected {
background-color: #448;
+ -webkit-box-shadow: 0px 0px 50px #448;
width: 140px;
}
@@ -121,7 +115,7 @@ h1 {
top: -60px;
font-size: 40px;
color: #ddd;
- text-shadow: 3px 5px 5px rgba(0, 0, 0, 0.4);
+ /*text-shadow: 0px 0px 10px rgba(68, 68, 136, 1.0);*/
}
#content h2, .mceContentBody h2 {
display: block;
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 23:15:38
|
Module: web
Branch: master
Commit: 86e30afbb0b70b253f467d2afb58b024742fbdfc
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Dec 5 16:07:23 2010 +0100
A lot of theme and content changes, TinyMCE, ...
---
htdocs-binary/bgs/fantasy_16.jpg | Bin 0 -> 161190 bytes
htdocs-binary/imgs/showcase.jpg | Bin 0 -> 106976 bytes
htdocs-binary/imgs/title.png | Bin 42038 -> 30018 bytes
htdocs-binary/style.css | 43 +-
htdocs-binary/tiny_mce/langs/en.js | 170 +
htdocs-binary/tiny_mce/license.txt | 504 +
htdocs-binary/tiny_mce/plugins/advhr/css/advhr.css | 5 +
.../tiny_mce/plugins/advhr/editor_plugin.js | 1 +
.../tiny_mce/plugins/advhr/editor_plugin_src.js | 57 +
htdocs-binary/tiny_mce/plugins/advhr/js/rule.js | 43 +
.../tiny_mce/plugins/advhr/langs/en_dlg.js | 5 +
htdocs-binary/tiny_mce/plugins/advhr/rule.htm | 57 +
.../tiny_mce/plugins/advimage/css/advimage.css | 13 +
.../tiny_mce/plugins/advimage/editor_plugin.js | 1 +
.../tiny_mce/plugins/advimage/editor_plugin_src.js | 50 +
htdocs-binary/tiny_mce/plugins/advimage/image.htm | 232 +
.../tiny_mce/plugins/advimage/img/sample.gif | Bin 0 -> 1624 bytes
.../tiny_mce/plugins/advimage/js/image.js | 443 +
.../tiny_mce/plugins/advimage/langs/en_dlg.js | 43 +
.../tiny_mce/plugins/advlink/css/advlink.css | 8 +
.../tiny_mce/plugins/advlink/editor_plugin.js | 1 +
.../tiny_mce/plugins/advlink/editor_plugin_src.js | 61 +
.../tiny_mce/plugins/advlink/js/advlink.js | 528 +
.../tiny_mce/plugins/advlink/langs/en_dlg.js | 52 +
htdocs-binary/tiny_mce/plugins/advlink/link.htm | 333 +
.../tiny_mce/plugins/advlist/editor_plugin.js | 1 +
.../tiny_mce/plugins/advlist/editor_plugin_src.js | 154 +
.../tiny_mce/plugins/autoresize/editor_plugin.js | 1 +
.../plugins/autoresize/editor_plugin_src.js | 119 +
.../tiny_mce/plugins/autosave/editor_plugin.js | 1 +
.../tiny_mce/plugins/autosave/editor_plugin_src.js | 422 +
.../tiny_mce/plugins/autosave/langs/en.js | 4 +
.../tiny_mce/plugins/bbcode/editor_plugin.js | 1 +
.../tiny_mce/plugins/bbcode/editor_plugin_src.js | 120 +
.../tiny_mce/plugins/contextmenu/editor_plugin.js | 1 +
.../plugins/contextmenu/editor_plugin_src.js | 147 +
.../plugins/directionality/editor_plugin.js | 1 +
.../plugins/directionality/editor_plugin_src.js | 82 +
.../tiny_mce/plugins/emotions/editor_plugin.js | 1 +
.../tiny_mce/plugins/emotions/editor_plugin_src.js | 43 +
.../tiny_mce/plugins/emotions/emotions.htm | 40 +
.../tiny_mce/plugins/emotions/img/smiley-cool.gif | Bin 0 -> 354 bytes
.../tiny_mce/plugins/emotions/img/smiley-cry.gif | Bin 0 -> 329 bytes
.../plugins/emotions/img/smiley-embarassed.gif | Bin 0 -> 331 bytes
.../plugins/emotions/img/smiley-foot-in-mouth.gif | Bin 0 -> 344 bytes
.../tiny_mce/plugins/emotions/img/smiley-frown.gif | Bin 0 -> 340 bytes
.../plugins/emotions/img/smiley-innocent.gif | Bin 0 -> 336 bytes
.../tiny_mce/plugins/emotions/img/smiley-kiss.gif | Bin 0 -> 338 bytes
.../plugins/emotions/img/smiley-laughing.gif | Bin 0 -> 344 bytes
.../plugins/emotions/img/smiley-money-mouth.gif | Bin 0 -> 321 bytes
.../plugins/emotions/img/smiley-sealed.gif | Bin 0 -> 325 bytes
.../tiny_mce/plugins/emotions/img/smiley-smile.gif | Bin 0 -> 345 bytes
.../plugins/emotions/img/smiley-surprised.gif | Bin 0 -> 342 bytes
.../plugins/emotions/img/smiley-tongue-out.gif | Bin 0 -> 328 bytes
.../plugins/emotions/img/smiley-undecided.gif | Bin 0 -> 337 bytes
.../tiny_mce/plugins/emotions/img/smiley-wink.gif | Bin 0 -> 351 bytes
.../tiny_mce/plugins/emotions/img/smiley-yell.gif | Bin 0 -> 336 bytes
.../tiny_mce/plugins/emotions/js/emotions.js | 22 +
.../tiny_mce/plugins/emotions/langs/en_dlg.js | 20 +
htdocs-binary/tiny_mce/plugins/example/dialog.htm | 22 +
.../tiny_mce/plugins/example/editor_plugin.js | 1 +
.../tiny_mce/plugins/example/editor_plugin_src.js | 84 +
.../tiny_mce/plugins/example/img/example.gif | Bin 0 -> 87 bytes
.../tiny_mce/plugins/example/js/dialog.js | 19 +
htdocs-binary/tiny_mce/plugins/example/langs/en.js | 3 +
.../tiny_mce/plugins/example/langs/en_dlg.js | 3 +
.../tiny_mce/plugins/fullpage/css/fullpage.css | 182 +
.../tiny_mce/plugins/fullpage/editor_plugin.js | 1 +
.../tiny_mce/plugins/fullpage/editor_plugin_src.js | 153 +
.../tiny_mce/plugins/fullpage/fullpage.htm | 571 +
.../tiny_mce/plugins/fullpage/js/fullpage.js | 471 +
.../tiny_mce/plugins/fullpage/langs/en_dlg.js | 85 +
.../tiny_mce/plugins/fullscreen/editor_plugin.js | 1 +
.../plugins/fullscreen/editor_plugin_src.js | 151 +
.../tiny_mce/plugins/fullscreen/fullscreen.htm | 109 +
.../tiny_mce/plugins/iespell/editor_plugin.js | 1 +
.../tiny_mce/plugins/iespell/editor_plugin_src.js | 54 +
.../tiny_mce/plugins/inlinepopups/editor_plugin.js | 1 +
.../plugins/inlinepopups/editor_plugin_src.js | 635 +
.../inlinepopups/skins/clearlooks2/img/alert.gif | Bin 0 -> 818 bytes
.../inlinepopups/skins/clearlooks2/img/button.gif | Bin 0 -> 280 bytes
.../inlinepopups/skins/clearlooks2/img/buttons.gif | Bin 0 -> 1195 bytes
.../inlinepopups/skins/clearlooks2/img/confirm.gif | Bin 0 -> 915 bytes
.../inlinepopups/skins/clearlooks2/img/corners.gif | Bin 0 -> 911 bytes
.../skins/clearlooks2/img/horizontal.gif | Bin 0 -> 769 bytes
.../skins/clearlooks2/img/vertical.gif | Bin 0 -> 92 bytes
.../inlinepopups/skins/clearlooks2/window.css | 100 +
.../tiny_mce/plugins/inlinepopups/template.htm | 387 +
.../plugins/insertdatetime/editor_plugin.js | 1 +
.../plugins/insertdatetime/editor_plugin_src.js | 83 +
.../tiny_mce/plugins/layer/editor_plugin.js | 1 +
.../tiny_mce/plugins/layer/editor_plugin_src.js | 212 +
.../tiny_mce/plugins/legacyoutput/editor_plugin.js | 1 +
.../plugins/legacyoutput/editor_plugin_src.js | 136 +
.../tiny_mce/plugins/media/css/content.css | 6 +
htdocs-binary/tiny_mce/plugins/media/css/media.css | 16 +
.../tiny_mce/plugins/media/editor_plugin.js | 1 +
.../tiny_mce/plugins/media/editor_plugin_src.js | 414 +
htdocs-binary/tiny_mce/plugins/media/img/flash.gif | Bin 0 -> 241 bytes
.../tiny_mce/plugins/media/img/flv_player.swf | Bin 0 -> 11668 bytes
.../tiny_mce/plugins/media/img/quicktime.gif | Bin 0 -> 303 bytes
.../tiny_mce/plugins/media/img/realmedia.gif | Bin 0 -> 439 bytes
.../tiny_mce/plugins/media/img/shockwave.gif | Bin 0 -> 387 bytes
htdocs-binary/tiny_mce/plugins/media/img/trans.gif | Bin 0 -> 43 bytes
.../tiny_mce/plugins/media/img/windowsmedia.gif | Bin 0 -> 415 bytes
htdocs-binary/tiny_mce/plugins/media/js/embed.js | 73 +
htdocs-binary/tiny_mce/plugins/media/js/media.js | 630 +
.../tiny_mce/plugins/media/langs/en_dlg.js | 103 +
htdocs-binary/tiny_mce/plugins/media/media.htm | 817 ++
.../tiny_mce/plugins/nonbreaking/editor_plugin.js | 1 +
.../plugins/nonbreaking/editor_plugin_src.js | 53 +
.../tiny_mce/plugins/noneditable/editor_plugin.js | 1 +
.../plugins/noneditable/editor_plugin_src.js | 90 +
.../tiny_mce/plugins/pagebreak/css/content.css | 1 +
.../tiny_mce/plugins/pagebreak/editor_plugin.js | 1 +
.../plugins/pagebreak/editor_plugin_src.js | 77 +
.../tiny_mce/plugins/pagebreak/img/pagebreak.gif | Bin 0 -> 325 bytes
.../tiny_mce/plugins/pagebreak/img/trans.gif | Bin 0 -> 43 bytes
.../tiny_mce/plugins/paste/editor_plugin.js | 1 +
.../tiny_mce/plugins/paste/editor_plugin_src.js | 952 ++
.../tiny_mce/plugins/paste/js/pastetext.js | 36 +
.../tiny_mce/plugins/paste/js/pasteword.js | 51 +
.../tiny_mce/plugins/paste/langs/en_dlg.js | 5 +
htdocs-binary/tiny_mce/plugins/paste/pastetext.htm | 27 +
htdocs-binary/tiny_mce/plugins/paste/pasteword.htm | 21 +
.../tiny_mce/plugins/preview/editor_plugin.js | 1 +
.../tiny_mce/plugins/preview/editor_plugin_src.js | 53 +
.../tiny_mce/plugins/preview/example.html | 28 +
.../tiny_mce/plugins/preview/jscripts/embed.js | 73 +
.../tiny_mce/plugins/preview/preview.html | 17 +
.../tiny_mce/plugins/print/editor_plugin.js | 1 +
.../tiny_mce/plugins/print/editor_plugin_src.js | 34 +
.../tiny_mce/plugins/save/editor_plugin.js | 1 +
.../tiny_mce/plugins/save/editor_plugin_src.js | 101 +
.../plugins/searchreplace/css/searchreplace.css | 6 +
.../plugins/searchreplace/editor_plugin.js | 1 +
.../plugins/searchreplace/editor_plugin_src.js | 57 +
.../plugins/searchreplace/js/searchreplace.js | 138 +
.../tiny_mce/plugins/searchreplace/langs/en_dlg.js | 16 +
.../plugins/searchreplace/searchreplace.htm | 99 +
.../tiny_mce/plugins/spellchecker/css/content.css | 1 +
.../tiny_mce/plugins/spellchecker/editor_plugin.js | 1 +
.../plugins/spellchecker/editor_plugin_src.js | 417 +
.../tiny_mce/plugins/spellchecker/img/wline.gif | Bin 0 -> 46 bytes
htdocs-binary/tiny_mce/plugins/style/css/props.css | 13 +
.../tiny_mce/plugins/style/editor_plugin.js | 1 +
.../tiny_mce/plugins/style/editor_plugin_src.js | 55 +
htdocs-binary/tiny_mce/plugins/style/js/props.js | 641 +
.../tiny_mce/plugins/style/langs/en_dlg.js | 63 +
htdocs-binary/tiny_mce/plugins/style/props.htm | 723 +
.../tiny_mce/plugins/tabfocus/editor_plugin.js | 1 +
.../tiny_mce/plugins/tabfocus/editor_plugin_src.js | 112 +
htdocs-binary/tiny_mce/plugins/table/cell.htm | 178 +
htdocs-binary/tiny_mce/plugins/table/css/cell.css | 17 +
htdocs-binary/tiny_mce/plugins/table/css/row.css | 25 +
htdocs-binary/tiny_mce/plugins/table/css/table.css | 13 +
.../tiny_mce/plugins/table/editor_plugin.js | 1 +
.../tiny_mce/plugins/table/editor_plugin_src.js | 1139 ++
htdocs-binary/tiny_mce/plugins/table/js/cell.js | 286 +
.../tiny_mce/plugins/table/js/merge_cells.js | 27 +
htdocs-binary/tiny_mce/plugins/table/js/row.js | 237 +
htdocs-binary/tiny_mce/plugins/table/js/table.js | 454 +
.../tiny_mce/plugins/table/langs/en_dlg.js | 74 +
.../tiny_mce/plugins/table/merge_cells.htm | 32 +
htdocs-binary/tiny_mce/plugins/table/row.htm | 155 +
htdocs-binary/tiny_mce/plugins/table/table.htm | 187 +
htdocs-binary/tiny_mce/plugins/template/blank.htm | 12 +
.../tiny_mce/plugins/template/css/template.css | 23 +
.../tiny_mce/plugins/template/editor_plugin.js | 1 +
.../tiny_mce/plugins/template/editor_plugin_src.js | 159 +
.../tiny_mce/plugins/template/js/template.js | 106 +
.../tiny_mce/plugins/template/langs/en_dlg.js | 15 +
.../tiny_mce/plugins/template/template.htm | 31 +
.../tiny_mce/plugins/visualchars/editor_plugin.js | 1 +
.../plugins/visualchars/editor_plugin_src.js | 83 +
.../tiny_mce/plugins/wordcount/editor_plugin.js | 1 +
.../plugins/wordcount/editor_plugin_src.js | 98 +
htdocs-binary/tiny_mce/plugins/xhtmlxtras/abbr.htm | 141 +
.../tiny_mce/plugins/xhtmlxtras/acronym.htm | 141 +
.../tiny_mce/plugins/xhtmlxtras/attributes.htm | 148 +
htdocs-binary/tiny_mce/plugins/xhtmlxtras/cite.htm | 141 +
.../tiny_mce/plugins/xhtmlxtras/css/attributes.css | 11 +
.../tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 +
htdocs-binary/tiny_mce/plugins/xhtmlxtras/del.htm | 161 +
.../tiny_mce/plugins/xhtmlxtras/editor_plugin.js | 1 +
.../plugins/xhtmlxtras/editor_plugin_src.js | 132 +
htdocs-binary/tiny_mce/plugins/xhtmlxtras/ins.htm | 161 +
.../tiny_mce/plugins/xhtmlxtras/js/abbr.js | 28 +
.../tiny_mce/plugins/xhtmlxtras/js/acronym.js | 28 +
.../tiny_mce/plugins/xhtmlxtras/js/attributes.js | 126 +
.../tiny_mce/plugins/xhtmlxtras/js/cite.js | 28 +
.../tiny_mce/plugins/xhtmlxtras/js/del.js | 63 +
.../plugins/xhtmlxtras/js/element_common.js | 231 +
.../tiny_mce/plugins/xhtmlxtras/js/ins.js | 62 +
.../tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js | 32 +
htdocs-binary/tiny_mce/themes/advanced/about.htm | 54 +
htdocs-binary/tiny_mce/themes/advanced/anchor.htm | 26 +
htdocs-binary/tiny_mce/themes/advanced/charmap.htm | 52 +
.../tiny_mce/themes/advanced/color_picker.htm | 73 +
.../tiny_mce/themes/advanced/editor_template.js | 1 +
.../themes/advanced/editor_template_src.js | 1229 ++
htdocs-binary/tiny_mce/themes/advanced/image.htm | 80 +
.../tiny_mce/themes/advanced/img/colorpicker.jpg | Bin 0 -> 3189 bytes
.../tiny_mce/themes/advanced/img/icons.gif | Bin 0 -> 11794 bytes
htdocs-binary/tiny_mce/themes/advanced/js/about.js | 72 +
.../tiny_mce/themes/advanced/js/anchor.js | 37 +
.../tiny_mce/themes/advanced/js/charmap.js | 335 +
.../tiny_mce/themes/advanced/js/color_picker.js | 253 +
htdocs-binary/tiny_mce/themes/advanced/js/image.js | 245 +
htdocs-binary/tiny_mce/themes/advanced/js/link.js | 156 +
.../tiny_mce/themes/advanced/js/source_editor.js | 56 +
htdocs-binary/tiny_mce/themes/advanced/langs/en.js | 62 +
.../tiny_mce/themes/advanced/langs/en_dlg.js | 51 +
htdocs-binary/tiny_mce/themes/advanced/link.htm | 58 +
.../themes/advanced/skins/default/content.css | 36 +
.../themes/advanced/skins/default/dialog.css | 117 +
.../themes/advanced/skins/default/img/buttons.png | Bin 0 -> 3274 bytes
.../themes/advanced/skins/default/img/items.gif | Bin 0 -> 70 bytes
.../advanced/skins/default/img/menu_arrow.gif | Bin 0 -> 68 bytes
.../advanced/skins/default/img/menu_check.gif | Bin 0 -> 70 bytes
.../themes/advanced/skins/default/img/progress.gif | Bin 0 -> 1787 bytes
.../themes/advanced/skins/default/img/tabs.gif | Bin 0 -> 1326 bytes
.../tiny_mce/themes/advanced/skins/default/ui.css | 213 +
.../themes/advanced/skins/o2k7/content.css | 36 +
.../tiny_mce/themes/advanced/skins/o2k7/dialog.css | 116 +
.../themes/advanced/skins/o2k7/img/button_bg.png | Bin 0 -> 5859 bytes
.../advanced/skins/o2k7/img/button_bg_black.png | Bin 0 -> 3736 bytes
.../advanced/skins/o2k7/img/button_bg_silver.png | Bin 0 -> 5358 bytes
.../tiny_mce/themes/advanced/skins/o2k7/ui.css | 215 +
.../themes/advanced/skins/o2k7/ui_black.css | 8 +
.../themes/advanced/skins/o2k7/ui_silver.css | 5 +
.../tiny_mce/themes/advanced/source_editor.htm | 25 +
.../tiny_mce/themes/simple/editor_template.js | 1 +
.../tiny_mce/themes/simple/editor_template_src.js | 85 +
htdocs-binary/tiny_mce/themes/simple/img/icons.gif | Bin 0 -> 1440 bytes
htdocs-binary/tiny_mce/themes/simple/langs/en.js | 11 +
.../themes/simple/skins/default/content.css | 25 +
.../tiny_mce/themes/simple/skins/default/ui.css | 32 +
.../tiny_mce/themes/simple/skins/o2k7/content.css | 17 +
.../themes/simple/skins/o2k7/img/button_bg.png | Bin 0 -> 5102 bytes
.../tiny_mce/themes/simple/skins/o2k7/ui.css | 35 +
htdocs-binary/tiny_mce/tiny_mce.js | 1 +
htdocs-binary/tiny_mce/tiny_mce_popup.js | 5 +
htdocs-binary/tiny_mce/tiny_mce_src.js |14222 ++++++++++++++++++++
htdocs-binary/tiny_mce/utils/editable_selects.js | 70 +
htdocs-binary/tiny_mce/utils/form_utils.js | 200 +
htdocs-binary/tiny_mce/utils/mctabs.js | 77 +
htdocs-binary/tiny_mce/utils/validate.js | 220 +
htdocs-source/AWC-cfg.txt | 20 +-
htdocs-source/Model.htm | 69 +-
htdocs-source/about.txt | 15 +
htdocs-source/{history.txt => blog.txt} | 91 +-
htdocs-source/index.txt | 92 +-
253 files changed, 37106 insertions(+), 121 deletions(-)
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 23:15:35
|
Module: web
Branch: master
Commit: fe0b15c61f8a3454894c786b7fe0a8fba443ea80
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Dec 5 01:59:34 2010 +0100
WIP new theme (bluestyle)
---
htdocs-binary/style.css | 189 ++++++++++++++++++++++++++---------------------
htdocs-source/Model.htm | 21 +++--
2 files changed, 116 insertions(+), 94 deletions(-)
diff --git a/htdocs-binary/style.css b/htdocs-binary/style.css
index 3ce1b8a..edcced3 100644
--- a/htdocs-binary/style.css
+++ b/htdocs-binary/style.css
@@ -2,9 +2,90 @@ body {
background: #448;
font-family: Verdana, Sans-Serif, sans;
font-size: 13px;
- line-height: 150%;
+ line-height: 140%;
+ overflow: scroll;
+ overflow-x: hidden;
+ color: #ddd;
}
+/* banner */
+#title {
+ height: 80px;
+ padding-left: 65px;
+}
+#sitebox {
+ width: 850px;
+ margin: 40px auto 40px auto;
+ margin: 0 auto;
+ border: 0;
+ padding: 0;
+}
+/* page */
+#page {
+ min-height: 600px;
+ background-color: rgba(255,255,255,0.3);
+ box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
+ -webkit-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
+ -moz-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
+ padding: 10px;
+ border-radius: 10px;
+}
+/* main column */
+#main {
+ position: relative;
+ border-radius: 10px;
+ background: #448;
+ box-shadow: 3px 5px 5px rgba(0, 0, 0, 0.4);
+ -webkit-box-shadow: 3px 5px 5px rgba(0, 0, 0, 0.4);
+ -moz-box-shadow: 3px 5px 5px rgba(0, 0, 0, 0.4);
+ margin: 20px;
+ margin-left: 145px;
+ margin-top: 60px;
+ padding: 10px;
+}
+#content {
+ width: 640px;
+}
+
+
+#menu {
+ width: 135px;
+ float: left;
+ padding: 5px;
+ margin-top: -10px;
+}
+
+#menu h2 {
+ padding-top: 10px;
+ margin:0;
+ font-size: 12px;
+}
+
+#menu ul {
+ margin: 0;
+ padding: 0;
+}
+
+#menu li {
+ font-weight: bold;
+ text-decoration: none;
+ list-style-type: none;
+ margin-bottom: 3px;
+}
+#menu li a {
+ margin-left: 7px;
+}
+/*
+#menu li a:hover {
+ text-decoration: underline;
+}
+*/
+#menu li.selected {
+ background-color: #448;
+ width: 150px;
+}
+
+
.picmargin {
margin-left: 250px;
}
@@ -13,38 +94,44 @@ body {
text-align: center;
}
-img {
- border: 1px solid black;
-}
-
a:link {
font-weight: bold;
text-decoration: none;
- color: #114477;
+ color: #aaf;
}
a:visited {
font-weight: bold;
text-decoration: none;
- color: #114477;
+ color: #aaf;
}
a:hover, a:active {
text-decoration: underline;
- color: #81d000;
-}
-h1 {
- font-size: 22px;
- text-align: center;
-}
-h2 {
- font-size: 17px;
+ text-shadow: 0 0 3px #000;
+ color: #aaf;
+}
+#content h1 {
+ position: absolute;
+ top: -60px;
+ font-size: 40px;
+ color: #448;
+ text-shadow: 0 0 5px #000;
+}
+#content h2 {
+ display: block;
+ margin: 0;
+ margin-left: -10px;
+ padding: 10px;
+ width: 645px;
+ background: #336;
+ font-size: 20px;
text-align: left;
/*text-decoration: underline;*/
}
-h3 {
+#content h3 {
font-size: 13px;
text-align: left;
- color: #444;
+ color: #fff;
}
.preface {
@@ -71,71 +158,3 @@ h3 {
padding-right: 5px;
}*/
-/* page */
-#sitebox {
- width: 800px;
- margin: 40px auto 40px auto;
- border: 0;
- padding: 0;
- background: #f0f0f0;
- box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
- -webkit-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
- -moz-box-shadow: 5px 20px 50px rgba(0, 0, 0, 0.4);
-}
-/* banner */
-#title {
- height: 80px;
- padding-left: 65px;
- /*background-image: url("./imgs/title.png");
- background-repeat:no-repeat;
- background-position: center;
- background: #81d000;*/
- border-bottom: 3px solid black;
-}
-
-#menu {
- width: 135px;
- float: left;
- padding: 5px;
- margin-top: -10px;
-}
-
-#menu h2 {
- padding-top: 10px;
- margin:0;
- font-size: 12px;
-}
-
-#menu ul {
- margin: 0;
- padding: 0;
-}
-
-#menu li {
- font-weight: bold;
- text-decoration: none;
- color: #777;
- list-style-type: none;
- margin-bottom: 3px;
-}
-#menu li a {
- margin-left: 7px;
-}
-/*
-#menu li a:hover {
- text-decoration: underline;
-}
-*/
-#menu li.selected a {
- color: black;
- text-decoration: underline;
-}
-
-#main {
- margin-left: 145px;
- min-height:400px;
- margin-bottom: 0px;
- padding: 5px;
- border-left: 3px solid #000;
- background: #fff url("imgs/intro.png") no-repeat right bottom;
-}
diff --git a/htdocs-source/Model.htm b/htdocs-source/Model.htm
index 33cd294..11307e0 100644
--- a/htdocs-source/Model.htm
+++ b/htdocs-source/Model.htm
@@ -12,15 +12,18 @@
<div id="sitebox">
<div id="title"><img src="imgs/title.png" style="border-style: none;" alt="Performous"/></div>
- <div id="menu">
- <ul>
- <+MENU+>
- </ul>
- </div>
-
- <div id="main">
- <h1><+TITLE+></h1>
- <+BODY+>
+ <div id="page">
+ <div id="menu">
+ <ul>
+ <+MENU+>
+ </ul>
+ </div>
+ <div id="main">
+ <div id="content">
+ <h1><+TITLE+></h1>
+ <+BODY+>
+ </div>
+ </div>
</div>
</div>
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 22:34:17
|
Module: editor
Branch: master
Commit: c19a541327f8a064789a115d143afbd3e3bbd2b8
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Jan 10 23:34:05 2011 +0100
Optimize Analyzer for faster processing
---
pitch.cc | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/pitch.cc b/pitch.cc
index 85c1ac2..982c6a0 100644
--- a/pitch.cc
+++ b/pitch.cc
@@ -8,7 +8,7 @@
static const unsigned FFT_P = 10; // FFT size setting, will use 2^FFT_P sample FFT
static const std::size_t FFT_N = 1 << FFT_P; // FFT size in samples
-static const std::size_t FFT_STEP = 128; // Step size in samples, should be <= 0.25 * FFT_N. Low values cause high CPU usage.
+static const std::size_t FFT_STEP = 256; // Step size in samples, should be <= 0.25 * FFT_N. Low values cause high CPU usage.
// Limit the range to avoid noise and useless computation
static const double FFT_MINFREQ = 45.0;
@@ -114,6 +114,7 @@ void Analyzer::calcTones() {
m_peaks[k].magnitude = magnitude;
magnitudes.push_back(magnitude);
}
+ return; // No further processing needed by editor at the moment
std::sort(magnitudes.begin(), magnitudes.end());
double m80 = magnitudes[magnitudes.size() * 80 / 100]; // m80 > 80 % peaks
double mmax = magnitudes.back(); // Max magnitude of peaks (note: combos will combine peaks and go higher)
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 22:28:29
|
Module: editor
Branch: master
Commit: 363d708a5547abaf96366a9cdee8a35377035f52
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Jan 10 23:28:17 2011 +0100
Fix indent
---
pitchvis.cc | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/pitchvis.cc b/pitchvis.cc
index 4d78d3e..bdcf265 100644
--- a/pitchvis.cc
+++ b/pitchvis.cc
@@ -30,7 +30,7 @@ PitchVis::PitchVis(std::string const& filename): height(512) {
Analyzer analyzer(44100, "");
MusicalScale scale;
QProgressDialog progress(tr("Analyzing and rendering pitch data..."), tr("&Abort"), 0, width, this);
- progress.setWindowModality(Qt::WindowModal);
+ progress.setWindowModality(Qt::WindowModal);
for (unsigned x = 0; x < width; ++x) {
progress.setValue(x);
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 22:26:18
|
Module: editor
Branch: master
Commit: 516376705e3470ffc0c21f4a526588b925436f09
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Jan 10 23:25:27 2011 +0100
Refined pitch rendering.
---
pitchvis.cc | 17 ++++++++++++-----
pitchvis.hh | 26 ++++++++++++++++++--------
2 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/pitchvis.cc b/pitchvis.cc
index 77fe9c1..4d78d3e 100644
--- a/pitchvis.cc
+++ b/pitchvis.cc
@@ -26,7 +26,7 @@ PitchVis::PitchVis(std::string const& filename): height(512) {
try { readVec(filename, data); } catch(std::exception& e) { std::cerr << e.what() << std::endl; return; }
unsigned step = 1024;
unsigned width = data.size() / step;
- img.resize(width * height);
+ img.resize(width * height, Pixel(0.5f, 0.5f, 0.5f, 1.0f));
Analyzer analyzer(44100, "");
MusicalScale scale;
QProgressDialog progress(tr("Analyzing and rendering pitch data..."), tr("&Abort"), 0, width, this);
@@ -40,10 +40,17 @@ PitchVis::PitchVis(std::string const& filename): height(512) {
analyzer.process();
Analyzer::Peaks peaks = analyzer.getPeaks();
for (unsigned i = 0; i < peaks.size(); ++i) {
- unsigned y = static_cast<unsigned>(8.0 * (scale.getNote(peaks[i].freq)));
- if (y >= height) continue;
- float value = magn2dB(peaks[i].magnitude) + 80.0;
- if (value > 0.0) (*this)(x, y).r += 0.01 * value;
+ unsigned y = height - static_cast<unsigned>(8.0 * (scale.getNote(peaks[i].freq)));
+ if (y == 0 || y >= height - 1) continue;
+ float value = 0.003 * (magn2dB(peaks[i].magnitude) + 80.0);
+ if (value < 0.0) continue;
+ Pixel p(value, value, value);
+ (*this)(x, y) += p;
+ p.r *= 0.5;
+ p.g *= 0.5;
+ p.b *= 0.5;
+ (*this)(x, y + 1) += p;
+ (*this)(x, y - 1) += p;
}
}
progress.setValue(width);
diff --git a/pitchvis.hh b/pitchvis.hh
index 639deec..a85a2ff 100644
--- a/pitchvis.hh
+++ b/pitchvis.hh
@@ -1,6 +1,8 @@
#pragma once
+#include "util.hh"
#include <QWidget>
+#include <cmath>
#include <string>
#include <vector>
@@ -8,16 +10,24 @@ struct Pixel {
float r,g,b,a;
Pixel(float r, float g, float b, float a = 1.0f): r(r), g(g), b(b), a(a) {}
Pixel(): r(), g(), b(), a(1.0f) {}
- unsigned rgba() {
- unsigned ret = 0;
- for (unsigned i = 0; i < 4; ++i) {
- float c = (*this)[i];
- unsigned char byte = static_cast<unsigned char>(0.5 + 255.0 * c * c); // c² is gamma correction
- ret |= byte << (i * 8);
- }
- return ret;
+ static unsigned char conv(float c, float a) {
+ return static_cast<unsigned char>(255.0 * a * std::sqrt(c)); // sqrt(c) is gamma correction
+ }
+ unsigned rgba() const {
+ unsigned char red = conv(r, a);
+ unsigned char green = conv(g, a);
+ unsigned char blue = conv(b, a);
+ unsigned char alpha = conv(1.0f, a);
+ return alpha << 24 | red << 16 | green << 8 | blue;
}
float& operator[](unsigned idx) { return (&r)[idx]; }
+ Pixel& operator+=(Pixel const& pix) {
+ r = clamp(r + pix.r);
+ g = clamp(g + pix.g);
+ b = clamp(b + pix.b);
+ a = clamp(a + pix.a);
+ return *this;
+ }
};
class PitchVis: public QWidget {
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 21:51:11
|
Module: editor
Branch: master
Commit: 72c0f0b630fb78cefd02d99d5dd820dad6196383
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 23:50:33 2011 +0200
Minor refinement to progressbar.
---
pitchvis.cc | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/pitchvis.cc b/pitchvis.cc
index 73dcef0..77fe9c1 100644
--- a/pitchvis.cc
+++ b/pitchvis.cc
@@ -29,7 +29,7 @@ PitchVis::PitchVis(std::string const& filename): height(512) {
img.resize(width * height);
Analyzer analyzer(44100, "");
MusicalScale scale;
- QProgressDialog progress("Analyzing and rendering pitch...", "Abort", 0, width, this);
+ QProgressDialog progress(tr("Analyzing and rendering pitch data..."), tr("&Abort"), 0, width, this);
progress.setWindowModality(Qt::WindowModal);
for (unsigned x = 0; x < width; ++x) {
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 21:46:35
|
Module: editor
Branch: master
Commit: 250ccb8e0130896eaa3d3c4892dc01fe0a5fa0d4
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 23:45:58 2011 +0200
Add a progress dialog for pitch analyzation/rendering.
---
pitchvis.cc | 8 ++++++++
pitchvis.hh | 3 ++-
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/pitchvis.cc b/pitchvis.cc
index 9cc39f5..73dcef0 100644
--- a/pitchvis.cc
+++ b/pitchvis.cc
@@ -5,6 +5,7 @@
#include <fstream>
#include <iostream>
#include <stdexcept>
+#include <QProgressDialog>
/** Read the entire file into a vector of some type.
The file needs to be in the machine-native endianess. **/
@@ -28,7 +29,13 @@ PitchVis::PitchVis(std::string const& filename): height(512) {
img.resize(width * height);
Analyzer analyzer(44100, "");
MusicalScale scale;
+ QProgressDialog progress("Analyzing and rendering pitch...", "Abort", 0, width, this);
+ progress.setWindowModality(Qt::WindowModal);
+
for (unsigned x = 0; x < width; ++x) {
+ progress.setValue(x);
+ if (progress.wasCanceled()) return;
+
analyzer.input(data.begin() + x * step, data.begin() + (x + 1) * step);
analyzer.process();
Analyzer::Peaks peaks = analyzer.getPeaks();
@@ -39,5 +46,6 @@ PitchVis::PitchVis(std::string const& filename): height(512) {
if (value > 0.0) (*this)(x, y).r += 0.01 * value;
}
}
+ progress.setValue(width);
}
diff --git a/pitchvis.hh b/pitchvis.hh
index 1d86873..639deec 100644
--- a/pitchvis.hh
+++ b/pitchvis.hh
@@ -1,5 +1,6 @@
#pragma once
+#include <QWidget>
#include <string>
#include <vector>
@@ -19,7 +20,7 @@ struct Pixel {
float& operator[](unsigned idx) { return (&r)[idx]; }
};
-class PitchVis {
+class PitchVis: public QWidget {
std::vector<Pixel> img;
public:
const std::size_t height;
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 21:25:23
|
Module: editor
Branch: master
Commit: 6d06ce68253be1dabdcb2d8bb393e22c37bfded6
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 23:24:52 2011 +0200
Hack some keyboard controls.
---
notegraphwidget.cc | 38 +++++++++++++++++++++++++++++++-------
1 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index d817b87..9d5168e 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -281,16 +281,40 @@ void NoteGraphWidget::mouseMoveEvent(QMouseEvent *event)
void NoteGraphWidget::keyPressEvent(QKeyEvent *event)
{
- switch (event->key()) {
- case Qt::Key_Delete:
- if (m_selectedNote) {
+ switch (event->key()) {
+ case Qt::Key_Left: // Select note on the left
+ if (m_selectedNote && m_notes.size() > 1 && m_selectedNote != m_notes.front()) {
+ for (NoteLabels::reverse_iterator it = m_notes.rbegin(); it != m_notes.rend(); ++it) {
+ if (m_selectedNote == *it) { selectNote(*(++it)); break; }
+ }
+ }
+ break;
+ case Qt::Key_Right: // Select note on the right
+ if (m_selectedNote && m_notes.size() > 1 && m_selectedNote != m_notes.back()) {
+ for (NoteLabels::iterator it = m_notes.begin(); it != m_notes.end(); ++it) {
+ if (m_selectedNote == *it) { selectNote(*(++it)); break; }
+ }
+ }
+ break;
+ case Qt::Key_Up: // Move note up
+ if (m_selectedNote) {
+ m_selectedNote->move(m_selectedNote->x(), m_selectedNote->y() - noteYStep);
+ }
+ break;
+ case Qt::Key_Down: // Move note down
+ if (m_selectedNote) {
+ m_selectedNote->move(m_selectedNote->x(), m_selectedNote->y() + noteYStep);
+ }
+ break;
+ case Qt::Key_Delete: // Delete selected note
+ if (m_selectedNote) {
m_selectedNote->close();
m_selectedNote = NULL;
updateNotes();
- }
- break;
- default:
- QWidget::keyPressEvent(event);
+ }
+ break;
+ default:
+ QWidget::keyPressEvent(event);
}
}
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 21:05:20
|
Module: editor
Branch: master
Commit: 4052167e63f6ceaa7b387300e3c9bd9ce1f7899d
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 22:31:27 2011 +0200
Note floating status can be changed with checkbox.
---
editorapp.cc | 5 +++++
editorapp.hh | 4 ++++
notegraphwidget.cc | 15 +++++++++------
notegraphwidget.hh | 1 +
notelabel.hh | 2 +-
5 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/editorapp.cc b/editorapp.cc
index caa1a3e..24e6ffb 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -154,3 +154,8 @@ void EditorApp::on_actionAbout_triggered()
);
}
+void EditorApp::on_chkFloating_stateChanged(int state)
+{
+ if (ui.noteGraph->selectedNote())
+ ui.noteGraph->selectedNote()->setFloating(state != 0);
+}
diff --git a/editorapp.hh b/editorapp.hh
index a43fd9f..7992b31 100644
--- a/editorapp.hh
+++ b/editorapp.hh
@@ -14,6 +14,8 @@ public:
public slots:
void updateNoteInfo(NoteLabel* note);
+ // Automatic slots
+
// File menu
void on_actionNew_triggered();
void on_actionExit_triggered();
@@ -27,6 +29,8 @@ public slots:
void on_actionWhatsThis_triggered();
void on_actionAbout_triggered();
+ // Note properties tab
+ void on_chkFloating_stateChanged(int);
private:
Ui::EditorApp ui;
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 53178c1..d817b87 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -31,11 +31,14 @@ void NoteGraphWidget::selectNote(NoteLabel* note)
{
if (m_selectedNote) // Reset old pixmap
m_selectedNote->setSelected(false);
+
// Assign new selection
m_selectedNote = note;
- if (m_selectedNote)
+ if (m_selectedNote) {
m_selectedNote->setSelected();
- else m_selectedAction = NONE;
+ m_selectedNote->setFloating(false);
+ } else m_selectedAction = NONE;
+
// Signal UI about the change
emit updateNoteInfo(m_selectedNote);
}
@@ -72,8 +75,8 @@ void NoteGraphWidget::setLyrics(QString lyrics)
}
// Set first and last to non-floating
- if (first) first->disableFloating();
- if (last) last->disableFloating();
+ if (first) first->setFloating(false);
+ if (last) last->setFloating(false);
rebuildNoteList();
m_requiredWidth = x + gap;
@@ -178,13 +181,13 @@ void NoteGraphWidget::mousePressEvent(QMouseEvent *event)
// Start a resize
m_selectedAction = RESIZE;
child->startResizing( (hotSpot.x() < NoteLabel::resize_margin) ? -1 : 1 );
- child->disableFloating();
+ child->setFloating(false);
} else {
// Start a drag
m_selectedAction = MOVE;
child->startDragging(hotSpot);
- child->disableFloating();
+ child->setFloating(false);
}
child->createPixmap(child->size());
diff --git a/notegraphwidget.hh b/notegraphwidget.hh
index 4da3ac7..042b531 100644
--- a/notegraphwidget.hh
+++ b/notegraphwidget.hh
@@ -24,6 +24,7 @@ public:
void rebuildNoteList();
void selectNote(NoteLabel* note);
+ NoteLabel* selectedNote() const { return m_selectedNote; }
signals:
void updateNoteInfo(NoteLabel*);
diff --git a/notelabel.hh b/notelabel.hh
index 98ae85a..43e5e48 100644
--- a/notelabel.hh
+++ b/notelabel.hh
@@ -18,7 +18,7 @@ public:
void setSelected(bool state = true) { m_selected = state; createPixmap(size()); }
bool isFloating() const { return m_floating; }
- void disableFloating() { m_floating = false; createPixmap(size()); }
+ void setFloating(bool state) { m_floating = state; createPixmap(size()); }
void startResizing(int dir);
void startDragging(const QPoint& point);
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 20:52:13
|
Module: editor
Branch: master
Commit: 587bde90590dbfdf76333740e63b99e8ec8756f8
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Jan 10 21:51:58 2011 +0100
Pitch data rendering
---
notegraphwidget.cc | 14 ++++++++++++--
notegraphwidget.hh | 4 ++--
pitchvis.cc | 2 +-
pitchvis.hh | 2 +-
4 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 9c9f66d..53178c1 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -9,8 +9,18 @@
const int NoteGraphWidget::noteYStep = 40;
NoteGraphWidget::NoteGraphWidget(QWidget *parent)
- : QWidget(parent), m_panHotSpot(), m_selectedNote(), m_selectedAction(NONE), m_pitch("music.raw")
+ : QLabel(parent), m_panHotSpot(), m_selectedNote(), m_selectedAction(NONE), m_pitch("music.raw")
{
+ unsigned width = m_pitch.width(), height = m_pitch.height;
+ QImage image(width, height, QImage::Format_ARGB32_Premultiplied);
+ unsigned* rgba = reinterpret_cast<unsigned*>(image.bits());
+ for (unsigned x = 0; x < width; ++x) {
+ for (unsigned y = 0; y < height; ++y) {
+ rgba[y * width + x] = m_pitch(x, y).rgba();
+ }
+ }
+ setPixmap(QPixmap::fromImage(image));
+
setFocusPolicy(Qt::StrongFocus);
setWhatsThis(tr("Note graph that displays the song notes and allows you to manipulate them."));
setLyrics(tr("Please add music file and lyrics text."));
@@ -55,9 +65,9 @@ void NoteGraphWidget::setLyrics(QString lyrics)
ts >> word;
if (!word.isEmpty()) {
NoteLabel *wordLabel = new NoteLabel(word, this, QPoint(x, y));
+ last = wordLabel;
x += wordLabel->width() + gap;
if (!first) first = wordLabel;
- last = wordLabel;
}
}
diff --git a/notegraphwidget.hh b/notegraphwidget.hh
index d15d84f..4da3ac7 100644
--- a/notegraphwidget.hh
+++ b/notegraphwidget.hh
@@ -1,13 +1,13 @@
#pragma once
#include "pitchvis.hh"
-#include <QWidget>
+#include <QLabel>
#include <list>
class NoteLabel;
typedef std::list<NoteLabel*> NoteLabels;
-class NoteGraphWidget: public QWidget
+class NoteGraphWidget: public QLabel
{
Q_OBJECT
diff --git a/pitchvis.cc b/pitchvis.cc
index f1e746f..9cc39f5 100644
--- a/pitchvis.cc
+++ b/pitchvis.cc
@@ -24,7 +24,7 @@ PitchVis::PitchVis(std::string const& filename): height(512) {
std::vector<float> data;
try { readVec(filename, data); } catch(std::exception& e) { std::cerr << e.what() << std::endl; return; }
unsigned step = 1024;
- unsigned width = data.size() / step / height;
+ unsigned width = data.size() / step;
img.resize(width * height);
Analyzer analyzer(44100, "");
MusicalScale scale;
diff --git a/pitchvis.hh b/pitchvis.hh
index 05a5c58..1d86873 100644
--- a/pitchvis.hh
+++ b/pitchvis.hh
@@ -20,9 +20,9 @@ struct Pixel {
};
class PitchVis {
- std::size_t height;
std::vector<Pixel> img;
public:
+ const std::size_t height;
Pixel& operator()(std::size_t x, std::size_t y) { return img[x * height + y]; }
std::size_t width() const { return img.size() / height; }
PitchVis(std::string const& filename);
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 19:56:06
|
Module: editor
Branch: master
Commit: 55f37df2c1e428773252fd5eb8a009cfe23423d0
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 21:55:17 2011 +0200
More notegraph tweaks.
---
notegraphwidget.cc | 63 +++++++++++++++++++++++++--------------------------
notelabel.cc | 5 +++-
2 files changed, 35 insertions(+), 33 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 0dec9bd..9c9f66d 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -87,43 +87,42 @@ void NoteGraphWidget::updateNotes()
NoteLabel *child = *it;
if (!child) continue;
- if (child->isFloating()) {
+ if (child->isFloating() && child != m_notes.back()) {
// Add floating note to gap
gap.addNote(child);
} else {
// Fixed note encountered, handle the gap (divide notes evenly into it)
- if (!gap.isEmpty()) {
- gap.end = child->x();
- int x = gap.begin;
-
- if (gap.width() >= gap.notesWidth()) {
- // Plenty of space - no resizing needed
- int step = (gap.width() - gap.notesWidth()) / (gap.notes.size() + 1);
- x += step;
- for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
- (*it2)->move(x, (*it2)->y());
- x += step + (*it2)->width();
- }
-
- } else if (gap.width() <= gap.minWidth()) {
- // We are at minimum width, enforce it
- for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
- (*it2)->move(x, (*it2)->y());
- (*it2)->resize(NoteLabel::min_width, (*it2)->height());
- x += NoteLabel::min_width;
- }
- // FIXME: Enforcing fixed note position doesn't work properly
- //child->move(gap.begin + gap.minWidth(), child->y());
-
- } else {
- // Make the notes smaller so that they fit
- float sf = gap.width() / float(gap.notesWidth());
- for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
- (*it2)->move(x, (*it2)->y());
- (*it2)->resize((*it2)->width() * sf, (*it2)->height());
- x += (*it2)->width();
- }
+ gap.end = child->x();
+ int x = gap.begin;
+
+ if (gap.width() >= gap.notesWidth()) {
+ // Plenty of space - no resizing needed
+ int step = (gap.width() - gap.notesWidth()) / (gap.notes.size() + 1);
+ x += step;
+ for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
+ (*it2)->move(x, (*it2)->y());
+ x += step + (*it2)->width();
+ }
+
+ } else if (gap.width() <= gap.minWidth()) {
+ // We are at minimum width, enforce it
+ for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
+ (*it2)->move(x, (*it2)->y());
+ (*it2)->resize(NoteLabel::min_width, (*it2)->height());
+ x += NoteLabel::min_width;
+ }
+ // FIXME: Enforcing fixed note position can be cheated by rapid mouse movement
+ // Also, left & right side behaves differently
+ child->move(gap.begin + gap.minWidth(), child->y());
+
+ } else {
+ // Make the notes smaller so that they fit
+ float sf = gap.width() / float(gap.notesWidth());
+ for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
+ (*it2)->move(x, (*it2)->y());
+ (*it2)->resize((*it2)->width() * sf, (*it2)->height());
+ x += (*it2)->width();
}
}
diff --git a/notelabel.cc b/notelabel.cc
index 75f3fad..8e0d512 100644
--- a/notelabel.cc
+++ b/notelabel.cc
@@ -104,8 +104,11 @@ void NoteLabel::mouseMoveEvent(QMouseEvent *event)
} else if (!m_hotspot.isNull()) {
// Moving
- move(pos() + event->pos() - m_hotspot);
+ QPoint newpos = pos() + event->pos() - m_hotspot;
+ move(newpos);
if (ngw) ngw->updateNotes();
+ // Check if we need a new hotspot, because the note was constrained
+ if (pos().x() != newpos.x()) m_hotspot.rx() = event->x();
} else {
// Hover cursors
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 19:56:03
|
Module: editor Branch: master Commit: fdbe09b48ee7b17ba0a7ea9c3c2ce13643832891 Author: Tapio Vierros <tap...@gm...> Date: Mon Jan 10 20:16:57 2011 +0200 Delete words.txt. --- words.txt | 48 ------------------------------------------------ 1 files changed, 0 insertions(+), 48 deletions(-) diff --git a/words.txt b/words.txt deleted file mode 100644 index a7e1632..0000000 --- a/words.txt +++ /dev/null @@ -1,48 +0,0 @@ -Colorless -green -ideas -sleep -furiously -A -colorless -green -idea -is -a -new -untried -idea -that -is -without -vividness -dull -and -unexciting -To -sleep -furiously -may -seem -a -puzzling -turn -of -phrase -but -the -mind -in -sleep -often -indeed -moves -furiously -with -ideas -and -images -flickering -in -and -out |
|
From: Tapio V. <aa...@us...> - 2011-01-10 19:56:00
|
Module: editor
Branch: master
Commit: 74e59b915b81e4c3312bc238260fa43e998c9ad8
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 20:15:22 2011 +0200
Some icons for menus to make them prettier.
Probably work only on Linux though (needs theme on others).
---
editorapp.cc | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/editorapp.cc b/editorapp.cc
index 188f0d1..caa1a3e 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -14,6 +14,20 @@ EditorApp::EditorApp(QWidget *parent): QMainWindow(parent)
// Custom signals/slots
connect(ui.noteGraph, SIGNAL(updateNoteInfo(NoteLabel*)), this, SLOT(updateNoteInfo(NoteLabel*)));
updateNoteInfo(NULL);
+
+ // Some icons to menus to make them prettier
+ ui.actionNew->setIcon(QIcon::fromTheme("document-new"));
+ ui.actionOpen->setIcon(QIcon::fromTheme("document-open"));
+ ui.actionSave->setIcon(QIcon::fromTheme("document-save"));
+ ui.actionSaveAs->setIcon(QIcon::fromTheme("document-save-as"));
+ ui.actionExit->setIcon(QIcon::fromTheme("application-exit"));
+ ui.actionUndo->setIcon(QIcon::fromTheme("edit-undo"));
+ ui.actionRedo->setIcon(QIcon::fromTheme("edit-redo"));
+ ui.actionPreferences->setIcon(QIcon::fromTheme("preferences-other"));
+ ui.actionMusicFile->setIcon(QIcon::fromTheme("insert-object"));
+ ui.actionLyricsFromFile->setIcon(QIcon::fromTheme("insert-text"));
+ ui.actionLyricsFromClipboard->setIcon(QIcon::fromTheme("insert-text"));
+ ui.actionAbout->setIcon(QIcon::fromTheme("help-about"));
}
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 19:55:57
|
Module: editor Branch: master Commit: 9ad7f7adcf8cd4bac1a51ef21aede2afc21f6dbc Author: Tapio Vierros <tap...@gm...> Date: Mon Jan 10 19:58:46 2011 +0200 Various UI tweaks. --- editor.ui | 338 ++++++++++++++++++++++++++-------------------------- editorapp.cc | 24 +++-- editorapp.hh | 1 + notegraphwidget.cc | 6 +- 4 files changed, 188 insertions(+), 181 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2011-01-10 16:48:15
|
Module: editor
Branch: master
Commit: 61caf8c4b385b9e06269b495fb6afc3f7d39e102
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 18:47:43 2011 +0200
Notegraph tweaks.
---
notegraphwidget.cc | 27 +++++++++++++++++----------
notelabel.hh | 2 +-
2 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 5f33ee8..cf9b190 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -48,24 +48,23 @@ void NoteGraphWidget::setLyrics(QString lyrics)
int x = gap, y = 2 * noteYStep;
clear();
+ NoteLabel *first = NULL, *last = NULL;
while (!ts.atEnd()) {
QString word;
ts >> word;
if (!word.isEmpty()) {
NoteLabel *wordLabel = new NoteLabel(word, this, QPoint(x, y));
x += wordLabel->width() + gap;
+ if (!first) first = wordLabel;
+ last = wordLabel;
}
}
- rebuildNoteList();
- /*
// Set first and last to non-floating
- if (m_notes.size() > 0)
- m_notes.front()->disableFloating();
- if (m_notes.size() > 1)
- m_notes.back()->disableFloating();
- */
+ if (first) first->disableFloating();
+ if (last) last->disableFloating();
+ rebuildNoteList();
m_requiredWidth = x + gap;
updateWidth();
}
@@ -86,14 +85,17 @@ void NoteGraphWidget::updateNotes()
for (NoteLabels::iterator it = m_notes.begin(); it != m_notes.end(); ++it) {
NoteLabel *child = *it;
if (!child) continue;
+
if (child->isFloating()) {
// Add floating note to gap
gap.addNote(child);
+
} else {
// Fixed note encountered, handle the gap (divide notes evenly into it)
if (!gap.isEmpty()) {
gap.end = child->x();
int x = gap.begin;
+
if (gap.width() >= gap.notesWidth()) {
// Plenty of space - no resizing needed
int step = (gap.width() - gap.notesWidth()) / (gap.notes.size() + 1);
@@ -102,6 +104,7 @@ void NoteGraphWidget::updateNotes()
(*it2)->move(x, (*it2)->y());
x += step + (*it2)->width();
}
+
} else if (gap.width() <= gap.minWidth()) {
// We are at minimum width, enforce it
for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
@@ -109,8 +112,9 @@ void NoteGraphWidget::updateNotes()
(*it2)->resize(NoteLabel::min_width, (*it2)->height());
x += NoteLabel::min_width;
}
- // TODO: Doesn't work properly
- child->move(gap.begin + gap.minWidth(), child->y());
+ // FIXME: Enforcing fixed note position doesn't work properly
+ //child->move(gap.begin + gap.minWidth(), child->y());
+
} else {
// Make the notes smaller so that they fit
float sf = gap.width() / float(gap.notesWidth());
@@ -121,6 +125,7 @@ void NoteGraphWidget::updateNotes()
}
}
}
+
// Start a new gap
gap = FloatingGap(child->x() + child->width());
}
@@ -133,7 +138,7 @@ void NoteGraphWidget::rebuildNoteList()
const QObjectList &childlist = children();
for (QObjectList::const_iterator it = childlist.begin(); it != childlist.end(); ++it) {
NoteLabel *child = dynamic_cast<NoteLabel*>(*it);
- if (child && child->isVisible()) m_notes.push_back(child);
+ if (child) m_notes.push_back(child);
}
m_notes.sort(cmpNoteLabelPtr);
}
@@ -214,6 +219,8 @@ void NoteGraphWidget::wheelEvent(QWheelEvent *event)
int neww = child->size().width() + event->delta() * 0.1;
child->resize(neww, child->size().height());
+ updateNotes();
+
event->accept();
}
diff --git a/notelabel.hh b/notelabel.hh
index 1ea91bd..98ae85a 100644
--- a/notelabel.hh
+++ b/notelabel.hh
@@ -18,7 +18,7 @@ public:
void setSelected(bool state = true) { m_selected = state; createPixmap(size()); }
bool isFloating() const { return m_floating; }
- void disableFloating() { m_floating = false; }
+ void disableFloating() { m_floating = false; createPixmap(size()); }
void startResizing(int dir);
void startDragging(const QPoint& point);
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 16:48:12
|
Module: editor
Branch: master
Commit: afa1935390e9d52476ec6fa756652674e773d489
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 17:55:18 2011 +0200
Floating notes are now made smaller if they wouldn't fit.
---
notegraphwidget.cc | 22 +++++++++++++++++-----
notelabel.cc | 3 ++-
notelabel.hh | 1 +
3 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index f5f71b1..5f33ee8 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -93,20 +93,32 @@ void NoteGraphWidget::updateNotes()
// Fixed note encountered, handle the gap (divide notes evenly into it)
if (!gap.isEmpty()) {
gap.end = child->x();
+ int x = gap.begin;
if (gap.width() >= gap.notesWidth()) {
- // We have enough space - no resizing needed
+ // Plenty of space - no resizing needed
int step = (gap.width() - gap.notesWidth()) / (gap.notes.size() + 1);
- int x = gap.begin + step;
+ x += step;
for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
(*it2)->move(x, (*it2)->y());
x += step + (*it2)->width();
}
} else if (gap.width() <= gap.minWidth()) {
// We are at minimum width, enforce it
- // TODO
+ for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
+ (*it2)->move(x, (*it2)->y());
+ (*it2)->resize(NoteLabel::min_width, (*it2)->height());
+ x += NoteLabel::min_width;
+ }
+ // TODO: Doesn't work properly
+ child->move(gap.begin + gap.minWidth(), child->y());
} else {
- // We can fit everything, if we make the notes smaller
- // TODO
+ // Make the notes smaller so that they fit
+ float sf = gap.width() / float(gap.notesWidth());
+ for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
+ (*it2)->move(x, (*it2)->y());
+ (*it2)->resize((*it2)->width() * sf, (*it2)->height());
+ x += (*it2)->width();
+ }
}
}
// Start a new gap
diff --git a/notelabel.cc b/notelabel.cc
index 35bf489..75f3fad 100644
--- a/notelabel.cc
+++ b/notelabel.cc
@@ -8,6 +8,7 @@ namespace {
const int NoteLabel::resize_margin = 5; // How many pixels is the resize area
const int NoteLabel::min_width = 10; // How many pixels is the resize area
+const int NoteLabel::default_size = 50; // The preferred size of notes
NoteLabel::NoteLabel(const QString &text, QWidget *parent, const QPoint &position, const QSize &size, bool floating)
: QLabel(parent), m_labelText(text), m_selected(false), m_floating(floating), m_resizing(0), m_hotspot()
@@ -26,7 +27,7 @@ void NoteLabel::createPixmap(QSize size)
{
QFontMetrics metric(font());
if (size.width() <= 0) {
- size.rwidth() = 50; // FIXME: Size is fixed
+ size.rwidth() = default_size;
}
if (size.height() <= 0) {
size.rheight() = metric.size(Qt::TextSingleLine, m_labelText).height() + text_margin;
diff --git a/notelabel.hh b/notelabel.hh
index d1a8e8b..1ea91bd 100644
--- a/notelabel.hh
+++ b/notelabel.hh
@@ -7,6 +7,7 @@ class NoteLabel: public QLabel
public:
static const int resize_margin;
static const int min_width;
+ static const int default_size;
NoteLabel(const QString &text, QWidget *parent, const QPoint &position = QPoint(), const QSize &size = QSize(), bool floating = true);
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2011-01-10 14:51:28
|
Module: editor
Branch: master
Commit: e0e7979a7000ff2a0d9aa40c17774c001f78c7dc
Author: Lasse Karkkainen <tro...@tr...>
Date: Mon Jan 10 15:41:33 2011 +0100
Use pitchvis in notegraphwidget
---
notegraphwidget.cc | 2 +-
notegraphwidget.hh | 2 ++
2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 4b75b4d..f5f71b1 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -9,7 +9,7 @@
const int NoteGraphWidget::noteYStep = 40;
NoteGraphWidget::NoteGraphWidget(QWidget *parent)
- : QWidget(parent), m_panHotSpot(), m_selectedNote(), m_selectedAction(NONE)
+ : QWidget(parent), m_panHotSpot(), m_selectedNote(), m_selectedAction(NONE), m_pitch("music.raw")
{
setFocusPolicy(Qt::StrongFocus);
setLyrics("Please add music file and lyrics text.");
diff --git a/notegraphwidget.hh b/notegraphwidget.hh
index a0c867e..d15d84f 100644
--- a/notegraphwidget.hh
+++ b/notegraphwidget.hh
@@ -1,5 +1,6 @@
#pragma once
+#include "pitchvis.hh"
#include <QWidget>
#include <list>
@@ -41,6 +42,7 @@ private:
NoteLabel* m_selectedNote;
enum NoteAction { NONE, RESIZE, MOVE } m_selectedAction;
NoteLabels m_notes;
+ PitchVis m_pitch;
};
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 14:37:28
|
Module: editor
Branch: master
Commit: 92ea1e7624644ce512262ab3c7cf39551c308625
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 16:36:53 2011 +0200
Improved floating note handling.
* Takes width into account
* Smooth
* Still no constraints nor auto-scaling
---
notegraphwidget.cc | 42 +++++++++++++++++++++++++++++++-----------
notegraphwidget.hh | 9 +++++++--
notelabel.cc | 3 ++-
notelabel.hh | 1 +
4 files changed, 41 insertions(+), 14 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index b0493e5..4b75b4d 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -31,6 +31,7 @@ void NoteGraphWidget::selectNote(NoteLabel* note)
void NoteGraphWidget::clear()
{
+ selectNote(NULL);
// Clear NoteLabels
const QObjectList &childlist = children();
for (QObjectList::const_iterator it = childlist.begin(); it != childlist.end(); ++it) {
@@ -57,9 +58,13 @@ void NoteGraphWidget::setLyrics(QString lyrics)
}
rebuildNoteList();
+ /*
// Set first and last to non-floating
- m_notes.front()->disableFloating();
- m_notes.back()->disableFloating();
+ if (m_notes.size() > 0)
+ m_notes.front()->disableFloating();
+ if (m_notes.size() > 1)
+ m_notes.back()->disableFloating();
+ */
m_requiredWidth = x + gap;
updateWidth();
@@ -76,28 +81,36 @@ void NoteGraphWidget::updateNotes()
// notes according to the fixed ones.
FloatingGap gap(0);
rebuildNoteList();
+
// Determine gaps between non-floating notes
for (NoteLabels::iterator it = m_notes.begin(); it != m_notes.end(); ++it) {
- NoteLabel *child = *it; //dynamic_cast<NoteLabel*>(*it);
+ NoteLabel *child = *it;
if (!child) continue;
- //std::cout << "Child, floating: " << child->isFloating() << std::endl;
if (child->isFloating()) {
// Add floating note to gap
gap.addNote(child);
} else {
// Fixed note encountered, handle the gap (divide notes evenly into it)
- std::cout << "Gap end, width: " << gap.width() << ", notes: " << gap.notes.size() << std::endl;
if (!gap.isEmpty()) {
gap.end = child->x();
- int step = gap.width() / (gap.notes.size() + 1);
- int x = gap.begin + step * 0.5;
- for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2, x += step) {
- (*it2)->move(x, (*it2)->y());
+ if (gap.width() >= gap.notesWidth()) {
+ // We have enough space - no resizing needed
+ int step = (gap.width() - gap.notesWidth()) / (gap.notes.size() + 1);
+ int x = gap.begin + step;
+ for (NoteLabels::iterator it2 = gap.notes.begin(); it2 != gap.notes.end(); ++it2) {
+ (*it2)->move(x, (*it2)->y());
+ x += step + (*it2)->width();
+ }
+ } else if (gap.width() <= gap.minWidth()) {
+ // We are at minimum width, enforce it
+ // TODO
+ } else {
+ // We can fit everything, if we make the notes smaller
+ // TODO
}
}
// Start a new gap
gap = FloatingGap(child->x() + child->width());
- std::cout << "New gap from: " << gap.begin << std::endl;
}
}
}
@@ -108,7 +121,7 @@ void NoteGraphWidget::rebuildNoteList()
const QObjectList &childlist = children();
for (QObjectList::const_iterator it = childlist.begin(); it != childlist.end(); ++it) {
NoteLabel *child = dynamic_cast<NoteLabel*>(*it);
- if (child) m_notes.push_back(child);
+ if (child && child->isVisible()) m_notes.push_back(child);
}
m_notes.sort(cmpNoteLabelPtr);
}
@@ -122,6 +135,7 @@ void NoteGraphWidget::mousePressEvent(QMouseEvent *event)
m_panHotSpot = event->pos();
return;
}
+ if (child->isHidden()) return;
QPoint hotSpot = event->pos() - child->pos();
@@ -251,4 +265,10 @@ void FloatingGap::addNote(NoteLabel* n)
{
notes.push_back(n);
end = n->x();
+ m_notesWidth += n->width();
+}
+
+int FloatingGap::minWidth() const
+{
+ return notes.size() * NoteLabel::min_width;
}
diff --git a/notegraphwidget.hh b/notegraphwidget.hh
index 8d4b1d4..a0c867e 100644
--- a/notegraphwidget.hh
+++ b/notegraphwidget.hh
@@ -46,14 +46,19 @@ private:
struct FloatingGap
{
- FloatingGap(int x): begin(x), end(x) {}
+ FloatingGap(int x): begin(x), end(x), m_notesWidth() {}
void addNote(NoteLabel* n);
- int width() const { return end - begin; }
bool isEmpty() const { return notes.empty(); }
+ int width() const { return end - begin; }
+ int minWidth() const;
+ int notesWidth() const { return m_notesWidth; }
int begin;
int end;
NoteLabels notes;
+
+private:
+ int m_notesWidth;
};
diff --git a/notelabel.cc b/notelabel.cc
index 7dab1f5..35bf489 100644
--- a/notelabel.cc
+++ b/notelabel.cc
@@ -7,6 +7,7 @@ namespace {
}
const int NoteLabel::resize_margin = 5; // How many pixels is the resize area
+const int NoteLabel::min_width = 10; // How many pixels is the resize area
NoteLabel::NoteLabel(const QString &text, QWidget *parent, const QPoint &position, const QSize &size, bool floating)
: QLabel(parent), m_labelText(text), m_selected(false), m_floating(floating), m_resizing(0), m_hotspot()
@@ -16,7 +17,7 @@ NoteLabel::NoteLabel(const QString &text, QWidget *parent, const QPoint &positio
move(position);
setMouseTracking(true);
- setMinimumSize(10, 10);
+ setMinimumSize(min_width, 10);
setAttribute(Qt::WA_DeleteOnClose);
show();
}
diff --git a/notelabel.hh b/notelabel.hh
index 6607df9..d1a8e8b 100644
--- a/notelabel.hh
+++ b/notelabel.hh
@@ -6,6 +6,7 @@ class NoteLabel: public QLabel
{
public:
static const int resize_margin;
+ static const int min_width;
NoteLabel(const QString &text, QWidget *parent, const QPoint &position = QPoint(), const QSize &size = QSize(), bool floating = true);
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 13:17:59
|
Module: editor
Branch: master
Commit: 85606b771203bfcd1544e1788a8ac43530aafe94
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 15:17:16 2011 +0200
Initial connection between note tab and note graph.
* Custom signal/slot
* Only from NoteGraph to UI for now
* Buggy
---
CMakeLists.txt | 2 +-
editorapp.cc | 24 ++++++++++++++++++++++++
editorapp.hh | 10 +++++++---
notegraphwidget.cc | 20 +++++++++++++++-----
notegraphwidget.hh | 7 +++++++
5 files changed, 54 insertions(+), 9 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a0714df..b5c77c4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,7 +18,7 @@ find_package(Qt4 REQUIRED) # find and setup Qt4 for this project
include(${QT_USE_FILE})
# Headers that need MOC need to be defined separately
-file(GLOB MOC_HEADER_FILES "editorapp.hh")
+file(GLOB MOC_HEADER_FILES "editorapp.hh" "notegraphwidget.hh")
file(GLOB SOURCE_FILES "*.cc")
file(GLOB HEADER_FILES "*.hh")
diff --git a/editorapp.cc b/editorapp.cc
index 80b49fe..b604913 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -1,6 +1,7 @@
#include <QtGui>
#include <cstdlib>
#include "editorapp.hh"
+#include "notelabel.hh"
EditorApp::EditorApp(QWidget *parent): QMainWindow(parent)
@@ -9,6 +10,29 @@ EditorApp::EditorApp(QWidget *parent): QMainWindow(parent)
// Splitter sizes cannot be set through designer :(
QList<int> ss; ss.push_back(700); ss.push_back(300); // Proportions, not pixels
ui.splitter->setSizes(ss);
+
+ // Custom signals/slots
+ connect(ui.noteGraph, SIGNAL(updateNoteInfo(NoteLabel*)), this, SLOT(updateNoteInfo(NoteLabel*)));
+ updateNoteInfo(NULL);
+}
+
+
+void EditorApp::updateNoteInfo(NoteLabel *note)
+{
+ if (note) {
+ ui.valNoteBegin->setText(QString::number(note->x()));
+ ui.valNoteEnd->setText(QString::number(note->x() + note->width()));
+ ui.valNoteDuration->setText(QString::number(note->width()));
+ ui.valNote->setText(QString::number(note->y() / NoteGraphWidget::noteYStep));
+ ui.chkFloating->setEnabled(true);
+ ui.chkFloating->setChecked(note->isFloating());
+ } else {
+ ui.valNoteBegin->setText("-");
+ ui.valNoteEnd->setText("-");
+ ui.valNoteDuration->setText("-");
+ ui.valNote->setText("-");
+ ui.chkFloating->setEnabled(false);
+ }
}
void EditorApp::on_actionNew_triggered()
diff --git a/editorapp.hh b/editorapp.hh
index c692b93..fd2ec2d 100644
--- a/editorapp.hh
+++ b/editorapp.hh
@@ -2,6 +2,8 @@
#include "ui_editor.h"
+class NoteLabel;
+
class EditorApp: public QMainWindow
{
Q_OBJECT
@@ -10,16 +12,18 @@ public:
EditorApp(QWidget *parent = 0);
public slots:
- // File
+ void updateNoteInfo(NoteLabel* note);
+
+ // File menu
void on_actionNew_triggered();
void on_actionExit_triggered();
- // Insert
+ // Insert menu
void on_actionMusicFile_triggered();
void on_actionLyricsFromFile_triggered();
void on_actionLyricsFromClipboard_triggered();
- // Help
+ // Help menu
void on_actionAbout_triggered();
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index 4eb1fd4..b0493e5 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -13,6 +13,20 @@ NoteGraphWidget::NoteGraphWidget(QWidget *parent)
{
setFocusPolicy(Qt::StrongFocus);
setLyrics("Please add music file and lyrics text.");
+ emit updateNoteInfo(NULL);
+}
+
+void NoteGraphWidget::selectNote(NoteLabel* note)
+{
+ if (m_selectedNote) // Reset old pixmap
+ m_selectedNote->setSelected(false);
+ // Assign new selection
+ m_selectedNote = note;
+ if (m_selectedNote)
+ m_selectedNote->setSelected();
+ else m_selectedAction = NONE;
+ // Signal UI about the change
+ emit updateNoteInfo(m_selectedNote);
}
void NoteGraphWidget::clear()
@@ -114,11 +128,7 @@ void NoteGraphWidget::mousePressEvent(QMouseEvent *event)
// Left Click
if (event->button() == Qt::LeftButton) {
- if (m_selectedNote) // Reset old pixmap
- m_selectedNote->setSelected(false);
- // Assign new selection
- m_selectedNote = child;
- m_selectedNote->setSelected();
+ selectNote(child);
// Determine if it is drag or resize
if (hotSpot.x() < NoteLabel::resize_margin || hotSpot.x() > child->width() - NoteLabel::resize_margin) {
// Start a resize
diff --git a/notegraphwidget.hh b/notegraphwidget.hh
index 2ed17e4..8d4b1d4 100644
--- a/notegraphwidget.hh
+++ b/notegraphwidget.hh
@@ -8,6 +8,8 @@ typedef std::list<NoteLabel*> NoteLabels;
class NoteGraphWidget: public QWidget
{
+ Q_OBJECT
+
public:
static const int noteYStep;
@@ -20,6 +22,11 @@ public:
void updateNotes();
void rebuildNoteList();
+ void selectNote(NoteLabel* note);
+
+signals:
+ void updateNoteInfo(NoteLabel*);
+
protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
|
|
From: Tapio V. <aa...@us...> - 2011-01-10 13:17:56
|
Module: editor
Branch: master
Commit: 40453aa433bff5b21495932bb089b7e9f561109f
Author: Tapio Vierros <tap...@gm...>
Date: Mon Jan 10 14:28:42 2011 +0200
Allow deleting notes with delete-key.
---
notegraphwidget.cc | 17 +++++++++++++++++
notegraphwidget.hh | 1 +
2 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index f5b38c0..4eb1fd4 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -11,6 +11,7 @@ const int NoteGraphWidget::noteYStep = 40;
NoteGraphWidget::NoteGraphWidget(QWidget *parent)
: QWidget(parent), m_panHotSpot(), m_selectedNote(), m_selectedAction(NONE)
{
+ setFocusPolicy(Qt::StrongFocus);
setLyrics("Please add music file and lyrics text.");
}
@@ -219,6 +220,22 @@ void NoteGraphWidget::mouseMoveEvent(QMouseEvent *event)
}
+void NoteGraphWidget::keyPressEvent(QKeyEvent *event)
+ {
+ switch (event->key()) {
+ case Qt::Key_Delete:
+ if (m_selectedNote) {
+ m_selectedNote->close();
+ m_selectedNote = NULL;
+ updateNotes();
+ }
+ break;
+ default:
+ QWidget::keyPressEvent(event);
+ }
+ }
+
+
void FloatingGap::addNote(NoteLabel* n)
{
diff --git a/notegraphwidget.hh b/notegraphwidget.hh
index 6ddd0cd..2ed17e4 100644
--- a/notegraphwidget.hh
+++ b/notegraphwidget.hh
@@ -26,6 +26,7 @@ protected:
void wheelEvent(QWheelEvent *event);
void mouseDoubleClickEvent(QMouseEvent * event);
void mouseMoveEvent(QMouseEvent * event);
+ void keyPressEvent(QKeyEvent *event);
private:
int m_requiredWidth;
|