Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOli <olivier.belanger@umontreal.ca>2007-08-21 04:32:29 (GMT)
committer Oli <olivier.belanger@umontreal.ca>2007-08-21 04:32:29 (GMT)
commitfa69c4bbeb57d49182cbb1fa10b09c1585643b2d (patch)
tree009c860758fc734e65b767d21ce1c0ea45c595a3
parent590fa7931ed2995a35ce54cc73b535828c00b167 (diff)
parent08c1606a535ce8b8dfe7ef85401d30c672d35eb7 (diff)
Merge branch 'master' of git+ssh://olipet@dev.laptop.org/git/projects/tamtam
Conflicts: Edit/EditToolbars.py
-rw-r--r--Edit/EditToolbars.py92
-rw-r--r--icons/XYBut.svg10
-rw-r--r--icons/XYButDown.svg10
-rw-r--r--icons/XYButDownClick.svg12
-rw-r--r--icons/sideR.svg19
-rw-r--r--icons/sideW.svg19
-rw-r--r--icons/updownR.svg19
-rw-r--r--icons/updownW.svg19
8 files changed, 171 insertions, 29 deletions
diff --git a/Edit/EditToolbars.py b/Edit/EditToolbars.py
index 3b98449..3418512 100644
--- a/Edit/EditToolbars.py
+++ b/Edit/EditToolbars.py
@@ -359,37 +359,91 @@ class generationPalette(Palette):
self.slidersBox = gtk.HBox()
self.scaleModeBox = gtk.VBox()
self.decisionBox = gtk.HBox()
-
+
+ self.XYSlider1MainBox = gtk.VBox()
+ self.XYSlider1TopLabel = gtk.Label(_('Rythm'))
+ self.XSlider1BottomLabelBox = gtk.HBox()
+ self.XSlider1Img = gtk.Image()
+ self.XSlider1Img.set_from_file(Config.TAM_TAM_ROOT + '/icons/sideR.svg')
+ self.XSlider1BottomLabel = gtk.Label(_('Density'))
+ self.YSlider1BottomLabelBox = gtk.HBox()
+ self.YSlider1Img = gtk.Image()
+ self.YSlider1Img.set_from_file(Config.TAM_TAM_ROOT + '/icons/updownR.svg')
+ self.YSlider1BottomLabel = gtk.Label(_('Regularity'))
self.XYSliderBox1 = RoundFixed(fillcolor = '#CCCCCC', bordercolor = '#000000')
self.XYSliderBox1.set_size_request(200,200)
- self.XYButton1 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
+ self.XYButton1 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDownClick.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
self.XAdjustment1 = gtk.Adjustment(self.rythmDensity * 100, 0, 100, 1, 1, 1)
self.XAdjustment1.connect("value-changed", self.handleXAdjustment1)
self.YAdjustment1 = gtk.Adjustment(self.rythmRegularity * 100, 0, 100, 1, 1, 1)
self.YAdjustment1.connect("value-changed", self.handleYAdjustment1)
self.XYSlider1 = XYSlider( self.XYSliderBox1, self.XYButton1, self.XAdjustment1, self.YAdjustment1, False, True )
-
+ self.XSlider1BottomLabelBox.pack_start(self.XSlider1Img, False, False, padding = 5)
+ self.XSlider1BottomLabelBox.pack_start(self.XSlider1BottomLabel, False, False, padding = 5)
+ self.YSlider1BottomLabelBox.pack_start(self.YSlider1Img, False, False, padding = 5)
+ self.YSlider1BottomLabelBox.pack_start(self.YSlider1BottomLabel, False, False, padding = 5)
+ self.XYSlider1MainBox.pack_start(self.XYSlider1TopLabel, False, False, padding = 5)
+ self.XYSlider1MainBox.pack_start(self.XYSlider1, False, False, padding = 2)
+ self.XYSlider1MainBox.pack_start(self.XSlider1BottomLabelBox, False, False, padding = 2)
+ self.XYSlider1MainBox.pack_start(self.YSlider1BottomLabelBox, False, False, padding = 2)
+
+ self.XYSlider2MainBox = gtk.VBox()
+ self.XYSlider2TopLabel = gtk.Label(_('Pitch'))
+ self.XSlider2BottomLabelBox = gtk.HBox()
+ self.XSlider2Img = gtk.Image()
+ self.XSlider2Img.set_from_file(Config.TAM_TAM_ROOT + '/icons/sideR.svg')
+ self.XSlider2BottomLabel = gtk.Label(_('Regularity'))
+ self.YSlider2BottomLabelBox = gtk.HBox()
+ self.YSlider2Img = gtk.Image()
+ self.YSlider2Img.set_from_file(Config.TAM_TAM_ROOT + '/icons/updownR.svg')
+ self.YSlider2BottomLabel = gtk.Label(_('Maximum step'))
self.XYSliderBox2 = RoundFixed(fillcolor = '#CCCCCC', bordercolor = '#000000')
self.XYSliderBox2.set_size_request(200,200)
- self.XYButton2 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
+ self.XYButton2 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDownClick.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
self.XAdjustment2 = gtk.Adjustment(self.pitchRegularity * 100, 0, 100, 1, 1, 1)
self.XAdjustment2.connect("value-changed", self.handleXAdjustment2)
self.YAdjustment2 = gtk.Adjustment(self.pitchStep * 100, 0, 100, 1, 1, 1)
self.YAdjustment2.connect("value-changed", self.handleYAdjustment2)
self.XYSlider2 = XYSlider( self.XYSliderBox2, self.XYButton2, self.XAdjustment2, self.YAdjustment2, False, True )
-
+ self.XSlider2BottomLabelBox.pack_start(self.XSlider2Img, False, False, padding = 5)
+ self.XSlider2BottomLabelBox.pack_start(self.XSlider2BottomLabel, False, False, padding = 5)
+ self.YSlider2BottomLabelBox.pack_start(self.YSlider2Img, False, False, padding = 5)
+ self.YSlider2BottomLabelBox.pack_start(self.YSlider2BottomLabel, False, False, padding = 5)
+ self.XYSlider2MainBox.pack_start(self.XYSlider2TopLabel, False, False, padding = 5)
+ self.XYSlider2MainBox.pack_start(self.XYSlider2, False, False, padding = 2)
+ self.XYSlider2MainBox.pack_start(self.XSlider2BottomLabelBox, False, False, padding = 2)
+ self.XYSlider2MainBox.pack_start(self.YSlider2BottomLabelBox, False, False, padding = 2)
+
+ self.XYSlider3MainBox = gtk.VBox()
+ self.XYSlider3TopLabel = gtk.Label(_('Duration'))
+ self.XSlider3BottomLabelBox = gtk.HBox()
+ self.XSlider3Img = gtk.Image()
+ self.XSlider3Img.set_from_file(Config.TAM_TAM_ROOT + '/icons/sideR.svg')
+ self.XSlider3BottomLabel = gtk.Label(_('Note duration'))
+ self.YSlider3BottomLabelBox = gtk.HBox()
+ self.YSlider3Img = gtk.Image()
+ self.YSlider3Img.set_from_file(Config.TAM_TAM_ROOT + '/icons/updownR.svg')
+ self.YSlider3BottomLabel = gtk.Label(_('Silence density'))
self.XYSliderBox3 = RoundFixed(fillcolor = '#CCCCCC', bordercolor = '#000000')
self.XYSliderBox3.set_size_request(200,200)
- self.XYButton3 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
+ self.XYButton3 = ImageToggleButton( Config.TAM_TAM_ROOT + '/icons/XYBut.svg', Config.TAM_TAM_ROOT + '/icons/XYButDownClick.svg', Config.TAM_TAM_ROOT + '/icons/XYButDown.svg')
self.XAdjustment3 = gtk.Adjustment(self.duration * 100, 0, 100, 1, 1, 1)
self.XAdjustment3.connect("value-changed", self.handleXAdjustment3)
self.YAdjustment3 = gtk.Adjustment(self.silence * 100, 0, 100, 1, 1, 1)
self.YAdjustment3.connect("value-changed", self.handleYAdjustment3)
self.XYSlider3 = XYSlider( self.XYSliderBox3, self.XYButton3, self.XAdjustment3, self.YAdjustment3, False, True )
-
- self.slidersBox.pack_start(self.XYSlider1, False, False, padding = 5)
- self.slidersBox.pack_start(self.XYSlider2, False, False, padding = 5)
- self.slidersBox.pack_start(self.XYSlider3, False, False, padding = 5)
+ self.XSlider3BottomLabelBox.pack_start(self.XSlider3Img, False, False, padding = 5)
+ self.XSlider3BottomLabelBox.pack_start(self.XSlider3BottomLabel, False, False, padding = 5)
+ self.YSlider3BottomLabelBox.pack_start(self.YSlider3Img, False, False, padding = 5)
+ self.YSlider3BottomLabelBox.pack_start(self.YSlider3BottomLabel, False, False, padding = 5)
+ self.XYSlider3MainBox.pack_start(self.XYSlider3TopLabel, False, False, padding = 5)
+ self.XYSlider3MainBox.pack_start(self.XYSlider3, False, False, padding = 2)
+ self.XYSlider3MainBox.pack_start(self.XSlider3BottomLabelBox, False, False, padding = 2)
+ self.XYSlider3MainBox.pack_start(self.YSlider3BottomLabelBox, False, False, padding = 2)
+
+ self.slidersBox.pack_start(self.XYSlider1MainBox, False, False, padding = 5)
+ self.slidersBox.pack_start(self.XYSlider2MainBox, False, False, padding = 5)
+ self.slidersBox.pack_start(self.XYSlider3MainBox, False, False, padding = 5)
self.previewBox = gtk.HBox()
self.previewDA = gtk.DrawingArea()
@@ -405,7 +459,6 @@ class generationPalette(Palette):
for scale in scales:
self.scaleBox.append_item(scales.index(scale), scale)
self.scaleBox.connect('changed', self.handleScale)
- self.scaleBox.set_active(0)
self.modeBoxHBox = gtk.HBox()
self.modeBoxLabel = gtk.Label(_('Mode: '))
@@ -414,7 +467,6 @@ class generationPalette(Palette):
for mode in modes:
self.modeBox.append_item(modes.index(mode), mode)
self.modeBox.connect('changed', self.handleMode)
- self.modeBox.set_active(0)
self.scaleBoxHBox.pack_start(self.scaleBoxLabel, False, False, padding = 10)
self.scaleBoxHBox.pack_start(self.scaleBox, False, False, padding = 10)
@@ -427,11 +479,8 @@ class generationPalette(Palette):
self.acceptButton.connect('clicked',self.generate)
self.cancelButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/cancel.svg')
self.cancelButton.connect('clicked',self.cancel)
- self.previewButton = gtk.Button(label = 'Preview')
- self.previewButton.connect('clicked', self.previewGeneratorTemp, self.getGenerationParameters())
self.decisionBox.pack_start(self.cancelButton, False, False, padding = 5)
self.decisionBox.pack_start(self.acceptButton, False, False, padding = 5)
- self.decisionBox.pack_start(self.previewButton, False, False, padding = 5)
self.mainBox.pack_start(self.slidersBox, False, False, padding = 5)
self.mainBox.pack_start( self.previewBox, False, False, padding = 5 )
@@ -448,6 +497,7 @@ class generationPalette(Palette):
self.drawingPreview = False
self.predrawTarget = 0
self.predrawIdleAbort = False
+ self.predrawBuffer = False
# self.predrawBuffer is initialized in handlePreviewAlloc
pix = gtk.gdk.pixbuf_new_from_file( Config.IMAGE_ROOT+"sampleBG.png" )
self.sampleBg = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
@@ -483,6 +533,10 @@ class generationPalette(Palette):
self.colors = { "Beat_Line": colormap.alloc_color( "#959595", True, True ),
"Note_Border": colormap.alloc_color( Config.BG_COLOR, True, True ),
"Note_Fill": colormap.alloc_color( Config.FG_COLOR, True, True ) }
+
+ self.scaleBox.set_active(0)
+ self.modeBox.set_active(0)
+
def handleXAdjustment1( self, data ):
self.rythmDensity = self.XAdjustment1.value * .01
@@ -544,10 +598,7 @@ class generationPalette(Palette):
self.edit.generate(self.getGenerationParameters())
self.popdown(True)
- ############ generate a preview melody ##############
- def previewGeneratorTemp(self, widget, parameters):
- self.previewGenerator(parameters)
-
+ ############ generate a preview melody ##############s
def previewGenerator(self, parameters):
makeRythm = GenerationRythm()
makePitch = GenerationPitch(parameters.pattern)
@@ -600,6 +651,9 @@ class generationPalette(Palette):
self.parametersDirty = True
def drawPreview( self, force = False ):
+ if not self.predrawBuffer:
+ return # not alloc'ed yet
+
if self.drawingPreview and not force:
return # should never happen
diff --git a/icons/XYBut.svg b/icons/XYBut.svg
index ca4cb2d..54d7563 100644
--- a/icons/XYBut.svg
+++ b/icons/XYBut.svg
@@ -2,13 +2,13 @@
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="55px" height="55px" viewBox="0 0 75 75" enable-background="new 0 0 75 75" xml:space="preserve">
+ width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
<g>
- <circle fill="#808284" cx="38" cy="38" r="10.818"/>
+ <circle fill="#808284" cx="15" cy="15" r="9.376"/>
<g>
- <path fill="#FFFFFF" stroke="#808284" stroke-width="2.25" d="M45.5,37.997c0,4.137-3.363,7.503-7.499,7.503
- S30.5,42.134,30.5,37.997c0-4.135,3.365-7.497,7.501-7.497S45.5,33.862,45.5,37.997z M38.003,23C29.729,23,23,29.728,23,37.997
- C23,46.268,29.729,53,38.003,53C46.271,53,53,46.268,53,37.997C53,29.728,46.271,23,38.003,23z"/>
+ <path fill="#FFFFFF" stroke="#808284" stroke-width="2.25" d="M21.5,14.998c0,3.584-2.915,6.502-6.499,6.502
+ c-3.584,0-6.501-2.918-6.501-6.502S11.417,8.5,15.001,8.5C18.585,8.5,21.5,11.413,21.5,14.998z M15.003,2
+ C7.832,2,2,7.831,2,14.998C2,22.165,7.832,28,15.003,28C22.168,28,28,22.165,28,14.998C28,7.831,22.168,2,15.003,2z"/>
</g>
</g>
</svg>
diff --git a/icons/XYButDown.svg b/icons/XYButDown.svg
index 64bae75..201df5f 100644
--- a/icons/XYButDown.svg
+++ b/icons/XYButDown.svg
@@ -2,13 +2,13 @@
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="55px" height="55px" viewBox="0 0 75 75" enable-background="new 0 0 75 75" xml:space="preserve">
+ width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
<g>
- <circle cx="38" cy="38" r="8"/>
+ <circle cx="15" cy="15" r="6.933"/>
<g>
- <path fill="none" stroke="#808284" stroke-width="2.25" d="M45.5,37.997c0,4.137-3.363,7.503-7.499,7.503S30.5,42.134,30.5,37.997
- c0-4.135,3.365-7.497,7.501-7.497S45.5,33.862,45.5,37.997z M38.003,23C29.729,23,23,29.728,23,37.997
- C23,46.268,29.729,53,38.003,53C46.271,53,53,46.268,53,37.997C53,29.728,46.271,23,38.003,23z"/>
+ <path fill="none" stroke="#808284" stroke-width="2.25" d="M21.5,14.998c0,3.585-2.915,6.502-6.499,6.502
+ c-3.584,0-6.501-2.917-6.501-6.502c0-3.584,2.917-6.498,6.501-6.498C18.585,8.5,21.5,11.414,21.5,14.998z M15.003,2
+ C7.832,2,2,7.831,2,14.998C2,22.165,7.832,28,15.003,28C22.169,28,28,22.165,28,14.998C28,7.831,22.169,2,15.003,2z"/>
</g>
</g>
</svg>
diff --git a/icons/XYButDownClick.svg b/icons/XYButDownClick.svg
new file mode 100644
index 0000000..9e0d222
--- /dev/null
+++ b/icons/XYButDownClick.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="30px" height="30px" viewBox="0 0 30 30" enable-background="new 0 0 30 30" xml:space="preserve">
+<circle fill="none" cx="15" cy="15" r="6.933"/>
+<g>
+ <path fill="none" stroke="#808284" stroke-width="2.25" d="M21.5,14.998c0,3.585-2.915,6.502-6.499,6.502
+ c-3.584,0-6.501-2.917-6.501-6.502c0-3.584,2.917-6.498,6.501-6.498C18.585,8.5,21.5,11.414,21.5,14.998z M15.003,2
+ C7.832,2,2,7.831,2,14.998C2,22.165,7.832,28,15.003,28C22.169,28,28,22.165,28,14.998C28,7.831,22.169,2,15.003,2z"/>
+</g>
+</svg>
diff --git a/icons/sideR.svg b/icons/sideR.svg
new file mode 100644
index 0000000..f5eb202
--- /dev/null
+++ b/icons/sideR.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="20px" height="20px" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
+<g>
+ <g>
+ <line fill="#FFFFFF" x1="14.292" y1="10.229" x2="5.667" y2="10.229"/>
+ </g>
+ <g>
+
+ <line fill="none" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="14.292" y1="10.229" x2="5.667" y2="10.229"/>
+ </g>
+</g>
+<line fill="#FFFFFF" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="17.044" y1="10.133" x2="13.153" y2="6.241"/>
+<line fill="#FFFFFF" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="17.044" y1="10.348" x2="13.153" y2="14.24"/>
+<line fill="#FFFFFF" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="2.728" y1="10.348" x2="6.62" y2="14.24"/>
+<line fill="#FFFFFF" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="2.728" y1="10.133" x2="6.62" y2="6.24"/>
+</svg>
diff --git a/icons/sideW.svg b/icons/sideW.svg
new file mode 100644
index 0000000..0b44384
--- /dev/null
+++ b/icons/sideW.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="20px" height="20px" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
+<g>
+ <g>
+ <line fill="#FFFFFF" x1="14.292" y1="10.229" x2="5.667" y2="10.229"/>
+ </g>
+ <g>
+
+ <line fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="14.292" y1="10.229" x2="5.667" y2="10.229"/>
+ </g>
+</g>
+<line fill="#FFFFFF" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="17.044" y1="10.133" x2="13.153" y2="6.241"/>
+<line fill="#FFFFFF" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="17.044" y1="10.348" x2="13.153" y2="14.24"/>
+<line fill="#FFFFFF" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="2.728" y1="10.348" x2="6.62" y2="14.24"/>
+<line fill="#FFFFFF" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="2.728" y1="10.133" x2="6.62" y2="6.24"/>
+</svg>
diff --git a/icons/updownR.svg b/icons/updownR.svg
new file mode 100644
index 0000000..dff1c83
--- /dev/null
+++ b/icons/updownR.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="20px" height="20px" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
+<g>
+ <g>
+ <line fill="#FFFFFF" x1="9.875" y1="5.834" x2="9.875" y2="14.459"/>
+ </g>
+ <g>
+
+ <line fill="none" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.875" y1="5.834" x2="9.875" y2="14.459"/>
+ </g>
+</g>
+<line fill="#FFFFFF" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.778" y1="3.082" x2="5.887" y2="6.973"/>
+<line fill="#FFFFFF" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.993" y1="3.082" x2="13.886" y2="6.973"/>
+<line fill="#FFFFFF" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.993" y1="17.398" x2="13.886" y2="13.506"/>
+<line fill="#FFFFFF" stroke="#ED1C24" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.778" y1="17.398" x2="5.886" y2="13.507"/>
+</svg>
diff --git a/icons/updownW.svg b/icons/updownW.svg
new file mode 100644
index 0000000..bcefcb3
--- /dev/null
+++ b/icons/updownW.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="20px" height="20px" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
+<g>
+ <g>
+ <line fill="#FFFFFF" x1="9.875" y1="5.833" x2="9.875" y2="14.459"/>
+ </g>
+ <g>
+
+ <line fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.875" y1="5.833" x2="9.875" y2="14.459"/>
+ </g>
+</g>
+<line fill="#FFFFFF" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.778" y1="3.082" x2="5.887" y2="6.973"/>
+<line fill="#FFFFFF" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.993" y1="3.082" x2="13.886" y2="6.973"/>
+<line fill="#FFFFFF" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.993" y1="17.398" x2="13.886" y2="13.506"/>
+<line fill="#FFFFFF" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" x1="9.778" y1="17.398" x2="5.886" y2="13.506"/>
+</svg>