Sync with DarkAudacity

This commit is contained in:
James Crook 2017-04-02 23:07:13 +01:00
parent e633dc0c8b
commit 028ed19d90
49 changed files with 15533 additions and 388 deletions

1
.gitignore vendored
View File

@ -188,3 +188,4 @@ win/resetPrefs.txt
# Emacs backup files
*~
win/xaudacity.ico

View File

@ -0,0 +1,224 @@
/* XPM */
static char * AudacityLogoWithName_xpm[] = {
"629 200 21 1",
" c None",
". c #ADADAD",
"+ c #A3A3A3",
"@ c #999999",
"# c #8F8F8F",
"$ c #858585",
"% c #7A7A7A",
"& c #707070",
"* c #666666",
"= c #525252",
"- c #474747",
"; c #5C5C5C",
"> c #3D3D3D",
", c #B8B8B8",
"' c #000000",
") c #141414",
"! c #0A0A0A",
"~ c #333333",
"{ c #1F1F1F",
"] c #292929",
"^ c #C2C2C2",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"................................................................................................................................................................................................................................+@###$$$$$##@+.......................................................................................................................................................................................................................................................................................................................................................................................................",
"...........................................................................................................................................................................................................................+#%%&**=--------=;*&&%#+..................................................................................................................................................................................................................................................................................................................................................................................................",
".......................................................................................................................................................................................................................+#%&*=--------------------=;*&#@+.............................................................................................................................................................................................................................................................................................................................................................................................",
"....................................................................................................................................................................................................................+@&*;----------------------------=;*$+...........................................................................................................................................................................................................................................................................................................................................................................................",
"..................................................................................................................................................................................................................+$;=----------===----------------------=%++........................................................................................................................................................................................................................................................................................................................................................................................",
"...............................................................................................................................................................................................................+#&;=-----=====------------------------------*$+......................................................................................................................................................................................................................................................................................................................................................................................",
".............................................................................................................................................................................................................+#&=----=====---->>>>>>>>>>>>>>>>>---------------;%@....................................................................................................................................................................................................................................................................................................................................................................................",
"............................................................................................................................................................................................................#&=---=====--->>>>>>>>>>>>>>>>>>>>>>>>>-------------;#+..................................................................................................................................................................................................................................................................................................................................................................................",
"..........................................................................................................................................................................................................+%;---=;;;=-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>----------=&@.................................................................................................................................................................................................................................................................................................................................................................................",
"........................................................................................................................................................................................................+#*=--=;;==->>>>>>>>>>>---===;=;====--->>>>>>>>>>----------;$+...............................................................................................................................................................................................................................................................................................................................................................................",
".......................................................................................................................................................................................................+&=---;*;-->>>>>>>>>-=*&%%%$$$#$$$$$$%%&%*=->>>>>>>>>---------;#..............................................................................................................................................................................................................................................................................................................................................................................",
"......................................................................................................................................................................................................@;=--=**->>>>>>>>>-;%######################$#$;->>>>>>>>--------=$.............................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................$==-=;*=->>>>>>>-=&##########################@@##&;->>>>>>---------%++..........................................................................................................................................................................................................................................................................................................................................................................",
"...................................................................................................................................................................................................+%;--;**=>>>>>>>=*$#############@@@@@@@@@@@@@@@##@@##$*=>>>>>>--------*+..........................................................................................................................................................................................................................................................................................................................................................................",
"..................................................................................................................................................................................................+%=-=;&;->>>>>>=*$###########@@@@@@@@@@@@@@@@@@@@@@@@#@@$&=>>>>>--------*+.........................................................................................................................................................................................................................................................................................................................................................................",
".................................................................................................................................................................................................+&=-=**=>>>>>>-&$##########@@@@@@@@@@++++++++++++@@@@@@@@@@$&=>>>>>------>;#+.......................................................................................................................................................................................................................................................................................................................................................................",
"................................................................................................................................................................................................+&===&*->>>>>-*$@#######@@@@@@@+++++++++++++++++++++++@@@@@@@@$*->>>>------>=#.......................................................................................................................................................................................................................................................................................................................................................................",
"...............................................................................................................................................................................................+&===&*->>>>>-&#########@@@@@+++++++++++........+++++++++++++@@@@%=>>>>-------=@+.....................................................................................................................................................................................................................................................................................................................................................................",
"...............................................................................................................................................................................................%===&*->>>>>;$#######@@@@@@+++++++....................+++++++++@@@#*->>>----->>;@++...................................................................................................................................................................................................................................................................................................................................................................",
"..............................................................................................................................................................................................$=-=&*->>>>-&########@@@@++++++++.........................++++++++@@#&->>>>--->--*@....................................................................................................................................................................................................................................................................................................................................................................",
".............................................................................................................................................................................................$=-=&*->>>>=%#######@@@@@+++++.................................++++++@@$=>>>---->--&++..................................................................................................................................................................................................................................................................................................................................................................",
"............................................................................................................................................................................................@;-=&*->>>>=$@######@@@@++++.......................................++++@+$;>>>--->>>-%++.................................................................................................................................................................................................................................................................................................................................................................",
"...........................................................................................................................................................................................+*-=*&->>>>=$@######@@@+++++.........................................++++@+#;>>>---->>-$++....................................................................................................................................................................................................+...........................................................................................................................................................",
"...........................................................................................................................................................................................%--;&=>>>>=$@#####@@@@++++.............................................+++++#;>------->;@++..................................................................................................................................................................................................$*...........................................................................................................................................................",
"..........................................................................................................................................................................................#=-;%=>>>>=#@#####@@@++++................................................+++++#;>------>-%+++................................................................................................................................................................................................&=;...........................................................................................................................................................",
".........................................................................................................................................................................................+*=-&*>>>>=$@#####@@@++++...................................................++++#;>---->>>-#++..............................................................................................................................................................................................+*==;...........................................................................................................................................................",
"........................................................................................................................................................................................+%=-;&->>>-%######@@@+++......................................................++++$->---->>>;+++............................................................................................................................................................................................#;===;...........................................................................................................................................................",
"........................................................................................................................................................................................@=-=&=>>>>&@####@@@@+++..........................................................++%------>>-$++...........................................................................................................................................................................................$=====;...........................................................................................................................................................",
"........................................................................................................................................................................................&-=**>>>>;######@@@+++...........................................................+++*>----->>=@@+.........................................................................................................................................................................................&======;...........................................................................................................................................................",
".......................................................................................................................................................................................@===*->>>-$@####@@@+++.............................................................+.@=----->>-%@++......................................................................................................................................................................................@*=======;...........................................................................................................................................................",
".......................................................................................................................................................................................&-=*=>>>>&@####@@@+++...............................................................+.$----->>>=@@++....................................................................................................................................................................................#;========;...........................................................................................................................................................",
"......................................................................................................................................................................................+;-;*->>>;######@@+++.................................................................++*----->>-$@+++..................................................................................................................................................................................$==========;...........................................................................................................................................................",
"......................................................................................................................................................................................%=-*=>>>-%@####@@+++....................................................................@=----->>;@@++.................................................................................................................................................................................,&==========;...........................................................................................................................................................",
".....................................................................................................................................................................................@;-=;->>>;@####@@@++......................................................................&----->>-$++++................................................................................................................................................................................,&==========;...........................................................................................................................................................",
"................,,,,,,,,,,,,,,,,,,,,,,,,.............................................................................................................................................%--;=>>>-$####@@@++.......................................................................@=---->>>;@@++................................................................................................................................................................................,&==========;...........................................................................................................................................................",
"...............%-----------------------*+,..............................................................................................,$...........................................;-=;->>>*@####@@+++........................................................................&----->>-$@++................................................................................................................................................................................,&==========;.....................+#....................................................................................................................................",
"..............,='''''''''''''''''''''''''>@.............................................................................................*),.........................................@=-=;>>>-$####@@@++.........................................................................@=---->>>&@@++...............................................................................................................................................................................,&==========;....................@;$....................................................................................................................................",
"..............,='''''''''''''''''''''''''')%...........................................................................................='!,.........................................&-=;=>>>;####@@@+++..........................................................................;---->>>;#@++...............................................................................................................................................................................,&==========&...................@;=$....................................................................................................................................",
"..............,='''''''''''''''''''''''''''!@........................................................................................+~''),........................................+;--=->>>&@###@@++............................................................................@----->>-$@@++..............................................................................................................................................................................,&=========$,..................@===$....................................................................................................................................",
"..............,=''''''''''''''''''''''''''''{,......................................................................................#{'''),........................................#=-==>>>=#####@@++............................................................................+;---->>>$@@++..............................................................................................................................................................................,&=======;#...................#====$....................................................................................................................................",
"..............,=''''''''''''''''''''''''''''';,....................................................................................%!''''),........................................%=-=->>>;@###@@++..............................................................................$---->>>&@@+++.............................................................................................................................................................................,&======*+...................$=====$....................................................................................................................................",
"..............,=''''''''''''''''''''''''''''')....................................................................................=!'''''),........................................&--=->>>&####@@++..............................................................................#---->>>=#@+++.............................................................................................................................................................................,&=====%....................$======$....................................................................................................................................",
"..............,='''''''''''''''''''''''''''''!&..................................................................................>'''''''),........................................&--=->>-####@@+++..............................................................................#=--->>>=#@@++.............................................................................................................................................................................,&====$....................%=======$..............+@@@@@@@@@@@........@@@@@@@@@@@@......................................................................................",
"..............,=''''''''''''''''''''''''''''''-................................................................................@]''''''''),.......................................@;--=>>>=####@@++...............................................................................+*---->>-$#@+++............................................................................................................................................................................,&==;@....................&========$..............#===========@.......*==========&......................................................................................",
"..............,=''''''''''''''''''''''''''''''~+..............................................................................#{'''''''''),.......................................#--=->>>;@###@+++................................................................................&---->>>&@#+++............................................................................................................................................................................,&=*+....................*=========$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''''''''''''''''''''''{@..............................................................................&!'''''''''),.......................................#--=->>>%###@@++.................................................................................%---->>>*@@@++..........................................................................................+..................................................................................&&........+$...........*==========$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''''''''''''''''''''''!#..............................................................................&!'''''''''),.......................................#---->>>%###@@++.................................................................................#=--->>>;@@@++.........................................................................................$*..................................................................................@........@*;..........+;==========$..............#===========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''$..............................................................................&!'''''''''),.......................................$---->>-&###@@++.................................................................................+=--->>>;@@@++........................................................................................%=*..........................................................................................#;=;..........+;==========$..............#===========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''$..............................................................................&!'''''''''),.......................................*---->>-$###@@++.................................................................................+=--->>>=#@@@+.......................................................................................*==*.........................................................................................$===;..........+;==========$..............#===========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''%..............................................................................&!'''''''''),.......................................;---->>-$##@@++...................................................................................;--->>>-$@@@++....................................................................................@*===*.......................................................................................+&====;..........+;==========$..............#===========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''&..............................................................................&!'''''''''),.......................................;--->>>=$##@@+++..................................................................................;---->>-$#@@++..................................................................................,#;====*......................................................................................+;=====;..........+;==========$..............#===========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''&..............................................................................&!'''''''''),......................................+;---->>=$##@@@+...................................................................................;---->>-$#@@++..................................................................................%======*.....................................................................................#=======;..........+;==========$........$.....#===========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''&..............................................................................&!'''''''''),......................................+;---->>=$##@@++...................................................................................;---->>-$#@@++................................................................................+&=======*.....................................................+@@@@@@@@@@@@@@@...............$========;..........+;==========$.......%=,....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!-;;;;;;;-'''''''''''&..............................................................................&!'''''''''),......................................+;--->>>=$##@$@...............................................................................@+...;---->>-$@@@++...............................................................................@;========*...................................................$*;;============;;*$...........+*=========;..........+;==========$.....+*==.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#,,,,,,,#'''''''''''&..............................................................................&!'''''''''),......................................+;--=>>>=$##@%&&@...........................................................................@%;@...;---->>-$@#@++..............................................................................#==========*..................................................*====================;.........,&==========;..........+;==========$....@;===.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&..............................................................................&!'''''''''),.....................................@&=-;*>>>=$##@+%>=$+........................................................................#;-=#...;--=->>-=%@@++..............................................................................&==========*.................................................*======================;........,&==========;..........+;==========$...#=====.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&..............................................................................&!'''''''''),....................................#;-=-&*>>>=$###&$=>-@.......................................................................@&=-=#...;--==>>>>-&@@++.............................................................................&==========*................................................%========================&.......,&==========;..........+;==========$..%======.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&..............,.@@@@@@@@@@@@@@+,..............@@@@@@@@@@@+....,+@@@+,.........&!'''''''''),.........@@@@@@@@@@@@.............+&=-===&=>>>=$#@#=%*>-@.......................................................................&&*--#...;--=*------;#++.............................................................................&==========*...............................................@;=========================#......,&==========;..........+;==========$.*=======.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&............,#>{{))))))))))))){>$,...........,]))))))))))>,..+>{))){>$,.......&!'''''''''),........#))))))))))){@...........+&--===;=>>>>=$#@#-==>-@.......................................................................;;;>-#..+;--=&=----->;@+.............................................................................&==========*...............................................%==========================&......,&==========;..........+;==========%*========.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&............=''''''''''''''''''''>...........,!''''''''''~,.@)''''''''>.......&!'''''''''),.......,-''''''''''''#...........%====--=->>>>=$#@#=-->-#.......................................................................;-->-$.++;---&*----->>*@+...................,,,,,,,,,,.........,,,,,,,,,,,...........................&==========*.................,,,,,,,,,,,,..................============================+.....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&...........-'''''''''''''''''''''']+.........,!''''''''''~,+{''''''''''>......&!'''''''''),........)''''''''''']+..........$===-=-==->>>>=$#@#--->-#.......................................................................;-->-$+++;---;%=--->>>>&++.................%**********%.......+**********&@..........................&==========*..............@$$***********&%$+..............#-===========================$.....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.........,;''''''''''''''''''''''''-.........,!''''''''''~^>''''''''''''&.....&!'''''''''),.......$!'''''''''''=..........#;=--==;*=>>>>>=$#@#--->-#.......................................................................;-->-$+++;----&;--->->>-%++................&==========&.......@===========#..........................&==========*............@;==================&+............%============================&.....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.........@''''''''''''''''''''''''''#........,!''''''''''~@)''''''''''''{.....&!'''''''''),.......;'''''''''''!$.........@;==-==;%*->>>>>=####--->-#.......................................................................;-->-$+@@;----;*----->>>-$++...............&==========&.......@===========#..........................&==========*...........#=====================;@..........,;=============================.....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&........,>''''''''''''''''''''''''''],.......,!''''''''''~*''''''''''''''%....&!'''''''''),......+>'''''''''''{.........+&--=-==$#=->>>>>=$#@#--->-#.......................................................................;-->-$@@@;----=;----->>>>*++...............&==========&.......@===========#..........................&==========*..........@=======================;+..........=============================-+....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&........@)'''''''''''''''''''''''''''#.......,!'''''''''']>''''''''''''''~,...&!'''''''''),......@)'''''''''''=,........@===-=;&@&-->>>>>=$#@#--->-#.......................................................................;-->-%@@@;-----;=--->>>>>>%++..............&==========&.......@===========#..........................&==========*..........=========================*.........+==============================@....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&........&''''''''''''''''''''''''''''>,......,!''''''''''{{''''''''''''''!....&!'''''''''),......%''''''''''''+........+*-==-=&@@;->>>>>>=$#@#=-->-#.......................................................................;-->-%@@@;-----==--->>>>>>=#+++............&==========&.......@===========#..........................&==========*.........%=========================-@........#==============================$....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&........-'''''''''''''''''''''''''''').......,!'''''''''')!'''''''''''''''$...&!'''''''''),......-'''''''''''~,........$=--==;$+&-->>>>>>=$#@#--->-#.......................................................................;-->-%@@@;------=----->>>>>*+++............&==========&.......@===========#..........................&==========*........+;==========================*........#==============================$....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......+~''''''''''''''''''''''''''''!#......,!'''''''''''''''''''''''''''*,..&!'''''''''),......)'''''''''''%........+*-=-=;%@#;-->>>>>>=$#@#--->-#.......................................................................;-->-%@@@;------=----->>>>>-$@++...........&==========&.......@===========#................,,,.......&==========*........#============================+.......#==============================$....,&==========;..........+;====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......+)''''''''''''''''''''''''''''!%......,!'''''''''''''''''''''''''''-,..&!'''''''''),.....$''''''''''')+........%-=--=*#@&=->>>>>>>=$#@#--->-#.......................................................................=-->-%@@@;------=----->>>>>>*+++...........&==========&.......@===========#............@%**===;&@....&==========*........&============================$.......$==============================%....,&==========;..........$=====================.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......@''''''''''''''''''''''''''''''*......,!'''''''''''''''''''''''''''>,..&!'''''''''),....,>'''''''''''-........+*=--==&@$;-->>>>>>>=$#@#=-->-#.......................................................................=-->-%@@@;------------>>>>>>=#@++..........&==========&.......@===========#..........@*==========&+..&==========*.......+*============================&.......$===========;;;;;;;;===========%....,&==========;........+&=====================&.....#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......@'''''''''''''''''''''''''''''';......,!'''''''''''''''''''''''''''~...&!'''''''''),.....!''''''''''!%........#=---=;$#*--->>>>>>>=$#@#--->-#.......................................................................;-->-%@@@;------------->>>>>>%@+++.........&==========&.......@===========#.........@;============&..&==========*.......+;============================*+......$===========@+++++++;==========%....,&==========;.......+*=====================$......#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......$''''''''''''''''''''''''''''''=......,!'''''''''''''''''''''''''''~...&!'''''''''),....$'''''''''''{+........&----=*$%=--->>>>>>>=$#@#--->-#......................................+...............................+;-->-%@@@;------------->>>>>>=#+++.........&==========&.......@===========#.........*=============-#.&==========*.......@=============================;+......$===========+.......;==========%....,&==========;......@;=====================@.......#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''''''''''''''''''''''-......,!''''''''''''''''''''''''''']...&!'''''''''),...,-'''''''''''>,.......+;--==;&%;---->>>>>>>=$#@#--->-#...................+................+.+.+..+..........................+;-->-%@@@;------------->>>>>>>$@+++........&==========&.......@===========#........@-==============;.&==========*.......@=============================;@......$===========+.......;==========%....,&==========;.....#=====================*+........#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''''''''''''''''''''''-......,!''''''''''''''''''''''''''']+..&!'''''''''),...+]'''''''''''$........$=---=;&&=---->>>>>>>=$#@#--->-#...................+................++@+@.++..........................+;-->-%@@@;------------->>>>>>>*@@++........&==========&.......@===========#........*================#&==========*.......#==============================@......$===========+.......;==========%....,&==========;....@=====================%..........#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''{========]''''''''''-......,!''''''''''''''''''''''''''']+..&!'''''''''),...#)''''''''''),........&----=*&*----->>>>>>>=$#@#--->-#..................+++........+......+@#+@.++.+........................+;-->-%@@@;------------->>>>>>>=#@@+........&==========&.......@===========#.......+=================&%==========*.......#==============================@......$===========+.......;==========%....,&==========;....@===================-#...........#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''{*****{'''''''''']+..&!'''''''''),...&''''''''''';,.......+;----=*&;----->>>>>>>=$#@#--->-#.................++++........+......+@#+#.++.+.++.....................+=-->-%@@@;-------------->>>>>>-$@@++.......&==========&.......@===========#.......#=================;*==========*.......#==============================@......$===========+.......;==========%....,&==========;....@==================;#............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...,>'''''''''']+..&!'''''''''),...>'''''''''''+........$-----;&*=----->>>>>>>=$#@#--->-#................+@@@@.......+@......@##+#++++++@++...................++=-->-%@@@;-------------->>>>>>>*@@++.......&==========&.......@===========#.......%=================;;==========*.......$==========;********;==========#......$===========+.......;==========%....,&==========;....@=================*@.............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...,>'''''''''']+..&!'''''''''),...!''''''''''>.........%-----;*;------>>>>>>>=$#@#--->-#..............+.+##@@++.....+#+.....@#$@$+@@@++#+@...................++;-->-%@@@;--------------->>>>>>;#@+++......&==========&.......@===========#......,*=============================*.......$==========%........*==========#......$===========+.......;==========%....,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...,>'''''''''']+..&!'''''''''),..$'''''''''''&........+*----=;*=------>>>>>>>=####--->-#..............+++$#@#++....++#+....+#$$@$+#@@++#+@...................++;-->-%@@@;--------------->>>>>>-$@@++......&==========&.......@===========#.......;=============================*.......$==========$........&==========#......$===========+.......;=========&.....,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...,>'''''''''']+..&!'''''''''),.,>'''''''''')#........@=----=;;=------>>>>>>>=$#@#--->-#.............++++$###+++...++#+....+#$$#%@#@@++$+#.+.................@@=-->-%@@@;--------------->>>>>>>%@@++......&==========&.......@===========#.......;=============================*.......$==========$........&==========#......$===========+.......;========$......,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...,>'''''''''']+..&!'''''''''),..!''''''''''>.........@=----=;=------->>>>>>>=$#@#--->-#...........+.++@+%##$@@+...@+$+....##$$#%@###++$+#++................+@@=-->>%#@@;--------------->>>>>>>&@@@++.....&==========&.......@===========#......+;=============================*.......$==========$........&==========#......$===========+.......;=======@.......,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...,>'''''''''']...&!'''''''''),.%'''''''''''*.........$-----=;=------->>>>>>>=$#@#--->-#..........+++@@@+%##$@@+..+@+$@....#$%%#&#$##@@$@#+@...............++@@=-->>%##@;--------------->>>>>>>;#@@++.....&==========&.......@===========#......+;=============================*.......$==========$........&==========#......$===========+.......;=====;+........,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''>........=''''''''''-......,!''''''''''~,...,>'''''''''!$...&!'''''''''),,>''''''''''!..........&-----===------->>>>>>>=$#@#--->-#.......+.++@@#@@+%##$@@@+.@#+$@...+$%%%#*$$##@@$#$@@+..............+@@@=-->-%##@;---------------->>>>>>-#@@++.....&==========&.......@===========#......+;=============================*.......$==========$........&==========#......$===========+.......;====&+.........,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'''''''''>+........=''''''''''-......,!''''''''''~,...,>'''''''']@,...&!'''''''''),+{''''''''''>,........+*-----=;-------->>>>>>>=$#@#--->-#.....++@++@#@#@@+%##$#@##+@#@$@+.++$&&&$*$$##@@$#$@#@............++@##@=-->-%##@;---------------->>>>>>-#@@++.....&==========&.......@===========#......+;=============================*.......$==========$........&==========#......$===========+.......;===$...........,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'''''''!*..........=''''''''''-......,!''''''''''~,...,>'''''''-+.....&!'''''''''),$!''''''''''#.........+;-----==-------->>>>>>>=$##$--->-#.....+@#++@###@@@%$$$###$@@#@$#@.+@%&&&%*%%####%#$###+...........+@@##@=-->-%###;---------------->>>>>>-#@@+++....&==========&.......@===========#......@==============================*.......$==========$........&==========#......$===========+.......;=;@............,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''!$...........=''''''''''-......,!''''''''''~,...,>''''''*.......&!'''''''''),;''''''''''{..........+;-----==-------->>>>>>>=$##$--->-#.+++.@#$++##@####%$$##$$$@##@$#@++@&&&*%*%%$$##%#$###+..........+@@####=-->-%###;---------------->>>>>>>$#@@++....&==========&.......@===========#......@===========;;;;;;;;;==========*.......$=========&.........&==========#......$===========+......+;*+.............,&==========;....@=================$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'''''{@............=''''''''''-......,!''''''''''~,...,>'''')$........&!''''''''').>''''''''''*..........@;-----==-------->>>>>>>=$##$--->-#..@@+@##+@#%@#$##&$$$$%$%##$#$#@++$&*&*&*&%$$##&$$#$#@++........@@@$#$#=-->-%###;---------------->>>>>>>$#@@++....&==========&.......@===========#......@===========#+++++++&==========*.......$========#..........&==========#......$===========+......+$+..............,&==========;....@=====%;==========$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''>+............,=''''''''''-......,!''''''''''~,...,>'''~#.........&!''''''''').!'''''''''!#..........#=-----==-------->>>>>>>=$##$--->-#++#@@#$$@##%##&##&%$$$%$%##%#%$@@@$**&*&*&&$$##&$$#$##@@.......+@##$#%#=-->-&###;---------------->>>>>>>$#@@++....&==========&.......@===========#......@===========#.......&==========*.......$======;@...........&==========#......$===========+.......................,&==========;....@===;++;==========$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''';.............,@)''''''''''-......,!''''''''''~,...,>''=+..........&!''''''''')$''''''''''~+..........#------=--------->>>>>>>=$##$--->>#+@###$#%@#$%#$&$$&%%$%&%&$$%$%$$##%****&&&&$$$$%$$#%$##@+......@#$#%$%#=-->-&###;---------------->>>>>>>$#@@++....&==========&.......@===========#......@===========#.......&==========*.......$=====*+............&==========#......$===========+.......................,&==========;....@==;+.+;==========$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'!%,.............%!'''''''''''-......,!''''''''''~,...,>'*............&!''''''''')>'''''''''';...........$---------------->>>>>>>=$##$--->-#@#$$#$#%@$%&$$&$$*%%$%&&&$$%$%$%$$&*;*;*&**%%$%%#$#%$$#@@.+...+#$$#%$%#=-->-&$##;---------------->>>>>>>$#@@++....&==========&.......@===========#......@===========#.......&==========*.......$====&+.............&==========#......$===========+.......................,&==========;....@=&+..+;==========$..............#===========+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%)#,.............;'''''''''''''-......,!''''''''''~,...,-&,............&!''''''''')!'''''''''!#...........$---------------->>>>>>>=$##$--->>##$$%$$$&#$%&$$&$%&%%#%*&*%%%%%%%%$**;*;*&*&%%%$%#$$%$$##@@#...+$$$$%$&#=-->-&$##;---------------->>>>>>>$##@+++...&==========&.......@===========#......@===========#.......&==========*.......$===$...............*==========#......$===========+.......................,&==========;....@$....+;==========$..............#===========+......%===========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......@@.............+>''''''''''''''-......,!''''''''''~,....+..............&!''''''''''''''''''''],...........$---------------->>>>>>>=$##$--->>##%%%%$$%#$%%$%&%&&&%$****&%%%%&&%$*;;*;;*;*&&%$%$$$%$%#$@#$+..+$%%$%%&#=-->-&$##;---------------->>>>>>>%##@+++...&==========&.......@===========#......@===========#.......&==========*.......$==#...............*===========#......$===========+.......................,&==========;..........+;==========$..............#===========+.....*============&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.....................#{'''''''''''''''-......,!''''''''''~,...................&!''''''''''''''''''''&,...........$---------------->>>>>>>=$##%--->>##%%&&%%%$$&%%%&%&&&%$**;*&%&%%**%%*;;;;;*;*&*%$%$$$&%%$%$###+.@$%%$&%&#=-->-&$##;---------------->>>>>>>%##@+++...&==========&.......@===========#......@===========#.......&==========*.......$*+..............@;============#......$===========+.......................,&==========;..........+;==========$..............#===========+...+*=============&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&....................%!''''''''''''''''-......,!''''''''''~,...................&!'''''''''''''''''''!.............$---------------->>>>>>>=$#$$--->>##%%&&%%%$%&%%%&%&&&%%;*;**&&&***&&*;;;;;&;*&;&$%$$$&%%$%%#$%##$$&%$%%&#--->-&$##;---------------->>>>>>>%##@@++...&==========&.......@===========#......@===========#.......&==========*.......@+.............,$;=============#......$===========+.......................,&==========;..........+;==========$..............#===========+.,#;==============&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&...................-''''''''''''''''''-......,!''''''''''~,...................&!'''''''''''''''''''-,............%---------------->>>>>>>=$#$%--->-#$&%*&&&&%&&&&%&&&&&&&;;=;*;;;;;;;*;;;;;;*;;*;;&&&%%&&&%*&%$&%&*&&&%&&&$--->-&$##;---------------->>>>>>>%##@@++...&==========&.......@===========#......@===========#.......&==========*......................&===============#......$===========+.......................,&==========;..........+;==========$..............#===========+.%================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.................+~'''''''''''''''''''-......,!''''''''''~,...................&!'''''''''''''''''''#.............$---------------->>>>>>>=%#$$--->-##$$*&%&&$%%%%%&&&&%&$*;;;*&%&&**&&;;;;;;&;***%$%%$%$%%%&%$#%@+#$%&%%%&$=-->-&$##;---------------->>>>>>>%##@@++...&==========&.......@===========#......@===========#.......&==========*....................+&================#......$===========+.......................,&==========;..........+;==========$..............#===========@&=================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&................#)''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''''''''''']+.............$---------------->>>>>>>=%#$$--->>##$$&%%%&$%%%%%&&&&%%$*;;;*%%&%**%&*;;;*;*;**&%$%%#%$%%%&&$#@..@$%&%%%&#=-->-&$##;---------------->>>>>>>$##@@++...&==========&.......@===========#......@===========#.......&==========*...................#;=================#......$===========+.......................,&==========;..........+;==========$..............#===========;==================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&...............*!'''''''''''''''''''''-......,!''''''''''~,...................&!''''''''''''''''''-..............$---------------->>>>>>>=%#$$--->>###$%$%%%#%%%%$&%&%%%$&;*;&%%%%&&%%*;;;*;****%&$%%$%#%%%&&$++..@$$%%%%%#=-->-&$##;---------------->>>>>>>$##@@++...&==========&.......@===========#......@===========#.......&==========*..................$===================#......$===========+.......................,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.............,>'''''''''''''''''''''''-......,!''''''''''~,...................&!''''''''''''''''''>+.............#=--------------->>>>>>>=%$$%--->>###@$@%%%#$%$%$%%%%%%#&*&*&%$%%%&$$***;*;****%&$$&#%#$$$%$#+...+$@%$$%%$=-->-&$##;---------------->>>>>>>$##@@++...&==========&.......@===========#......@===========#.......&==========*.................%====================#......$===========+.......................,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&............+]''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''''''''''')+.............@=--------------->>>>>>>=&$$%--->>##@+$@$$$#$%$%$$%%%%%#&&&*%%$%$%&#%***;****&%$&##&#%#$%##@@....+@@$$$%%$=-->-&$##;--------------->>>>>>>>$##@@++...&==========&.......@===========#......@===========#.......&==========*...............+*=====================#......$===========+.......................,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&...........${'''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''''''''''''$.............+;--------------->>>>>>>=&#$%--->>#@++#@#$@#$$$$$$%%%%%#%%&*$%$%$%&#$&**;***&&%$&#$&#%@#$@@+.....+++$#$%%$=-->-&$##;--------------->>>>>>>>$##@@++...&==========&.......@===========#......@===========#.......&==========*..............@;======================#......$===========+.......................,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.........,;!''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''''''''''''-,............+;--------------->>>>>>>=%#$%--->>#+++@@##@#$###$$%$$$&#%%%*$$$%$$$@#%*&*&*&&&%$%##&#%@#$@+.......++##$$$$=-->-&$##;--------------->>>>>>>>$##@@++...&==========&.......@===========#......@===========#.......&==========*.............#========================#......$===========+.......................,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.........>''''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''''''''''''!,............+;--------------->>>>>>>=&$$%--->>#++.@.@@+######$%$$$&#%$$&@#$$$$$+#$&**&*&&%%$%#@%#%@##+........+.@@#$$$=-->-&$##;--------------->>>>>>>-%##@@++...&==========&.......@===========#......@===========#.......&==========*...........+%=========================#......$===========+.......................,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......+~'''''''''''''''''''''''''''''-......,!''''''''''~,...................&!''''''''''''''''''''#.............&--------------->>>>>>>=&$$%--->>#...+.+@+#@#@###$#$$%#%##$@##$$$@+#$&**&&&&$%$$#@%#%@#@+..........+@####=-->-&$##;-------------->>>>>>>>=%##@+++...&==========&.......@===========#......@===========#.......&==========*..........+*==========================#......$===========+.......................,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''''''''''''''''''''''-......,!''''''''''~,...................&!''''''''''''''''''''=,............%--------------->>>>>>>=&$$%--->>#.....++++@@+###$#$#%#$#@#+@#$$#+.+#&&*&&&%$%$$#@%#%+@+...........++@###=-->-&$##;-------------->>>>>>>>*$##@@++...&==========&.......@===========#......@===========#.......&==========*.........@============================#......$===========+.......................,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'''''''''''''''''''!''''''''''-......,!''''''''''~,...................&!''''''''''''''''''''{,............#=-------------->>>>>>>=%$$%--->>#.......+++@+@@###$#%###@@++@#$#+.+#%&*&&&%$%$$#+%@$+@+............++@##--->-&$##;-------------->>>>>>>>*###@+++...&==========&.......@===========#......@===========#.......&==========*........$=============================#......$===========+.................#%....,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'''''''''''''''''!==''''''''''-......,!''''''''''~,...................&!''''''''''''''''''''!#............@=-------------->>>>>>>=%$$&--->>#..........++@+@@@##%#@@@+.+@#$@+..@$&&%%%%#$##@+%@$+@..............+@@#--->-&$##;-------------->>>>>>>>&##@@+++...&==========&.......@===========#......@===========#.......&==========*.......$==============================#......$===========+................%=%....,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'''''''''''''''')%,=''''''''''-......,!''''''''''~,...................&!'''''''''''''''''''''*............+;-------------->>>>>>>=&$$%--->>#............+++@@#@$#@@+..++@#@...+#&&%%%$#$#@@+$+#+@...............+@#--->-&$##;------------->>>>>>>>-%##@@+++...&==========&.......@===========#......@===========#.......&==========*.......$==============================#......$===========+...............*==%....,&==========;..........+;==========$..............#==============================&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''''''']@..=''''''''''-......,!''''''''''~,...................&!'''''''''!'''''''''''>.............&-------------->>>>>>>=&$$%--->>#..............++@#@##+++....@#@....@%&%$%$#$#@@+$+@++................@#=-->-&$$#;------------->>>>>>>>=$##@@++....&==========&.......@===========#......@===========#.......&==========*.......$==================%&==========#......$===========+.............@;===%....,&==========;..........+;==========$..............#==================*;==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''''''-....=''''''''''-......,!''''''''''~,...................&!''''''''')]'''''''''']+............$-------------->>>>>>>=%$$%--->>#..............+++@@##++.....+@+....+%%%$%##$@@#+#+@..................+#=-->-&$$#;------------->>>>>>>>*###@@++....&==========&.......@===========#......@===========#.......&==========*.......$================;#.&==========#......$===========+............#;====%....,&==========;..........+;==========$..............#=================&+*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'''''''''''')*.....=''''''''''-......,!''''''''''~,...................&!''''''''');'''''''''''#............@;------------->>>>>>>=%$$&--->>#...............++@+@@+......+@+....+$%$#$#@#@@#+#++..................+#--->-&$##;------------>>>>>>>>-&###@@++....&==========&.......@===========#......@===========#.......&==========*.......$===============*+..&==========#......$===========+...........&======%....,&==========;..........+;==========$..............#================$..*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''']#......=''''''''''-......,!''''''''''~,...................&!''''''''')@'''''''''''*.............&------------->>>>>>>=%$$&--->>#................+@++@+......+++....+$%##$#@@+@++@++..................+@=-->-&$##;------------->>>>>>>-$###@@++....&==========&.......@===========#......@===========#.......&==========*.......$==============%....&==========#......$===========+.........+*=======%....,&==========;..........+;==========$..............#==============;#...*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%'''''''''']+.......=''''''''''-......,!''''''''''~,...................&!''''''''').)''''''''''~.............$------------->>>>>>>=&$$&--->>#.................+++@.......++......#%####@@+++.+.+...................#=-->>&$$#;------------>>>>>>>>;$##@@+++....&==========&.......@===========#......@===========#.......&==========*.......$============;#.....&==========#......$===========+........@;========%....,&==========;..........+;==========$..............#=============*@....*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''>+.......=''''''''''-......,!''''''''''~,...................&!''''''''').>'''''''''''.............@=------------>>>>>>>=&$$&--->>#..................++@........+......#$#@@@@++++.......................#=-->>&$##;----------->>>>>>>>>&###@@++.....&==========&.......@===========#......@===========#.......&==========*.......$===========*+......&==========#......$===========+.......$;=========%....,&==========;..........+;==========$..............#============%+.....*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),;'''''''''''%.............*------------>>>>>>>=&$$&--->-#...................++........+......@$@+++@+++........................#=-->>&$##;---------->>>>>>>>>-$$##@@++.....&==========&.......@===========#......@===========#.......&==========*.......$==========&........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#===========&.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),%!''''''''''>,............$------------>>>>>>>=%$$%--->-#...................++...............+#@+++@+.+........................#=-->-&###;---------->>>>>>>>>*#$##@@++.....&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#=========;$,.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),@)''''''''''!.............+=----------->>>>>>>=&#$%--->-#....................................+@++..++..........................#=-->-&###;--------->>>>>>>>>-%####@+++.....&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#========;@.........*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),,]'''''''''''%.............%------------>>>>>>=&#$%--->-#.....................................++...............................#=-->-&###;--------->>>>>>>>>;$###@@++......&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#=======*...........*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),,='''''''''''-,............@=---------->>>>>>>=%#$%--->-#......................................................................@=-->-&###;--------->>>>>>>>-%#$##@@++......&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#======%............*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),.$'''''''''''~+.............%----------->>>>>>=%##$--->-#......................................................................@=-->-&###;-------->>>>>>>>>;$$##@@+++......&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#=====$.............*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),.,!'''''''''')#.............+;---------->>>>>>=%##$--->-#......................................................................@=-->-&##@;-------->>>>>>>>-%####@@++.......&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#====@..............*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),.,>'''''''''''%..............$---------->>>>>>=%##$--->-#......................................................................@=-->-&##@;------->>>>>>>>>*####@@@++.......&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#==*+...............*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),..&'''''''''''-..............+*>-->----->>>>>>=$##$--->-#......................................................................@=-->-&##@;------->>>>>>>>=%$$##@@++........&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............#=%.................*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),..+'''''''''''{...............#=>>>>>-->>>>>>>=$##$--->-#......................................................................@=-->-%##@;------>>>>>>>>-&$$###@+++........&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..............##..................*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),...]'''''''''''@...............%->>>>>>>>>>>>>=$##$--->-#......................................................................@=-->-%##@;----->>>>>>>>>*$$###@@+++........&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========+.......;==========%....,&==========;..........+;==========$..................................*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),...=''''''''''';,...............%->>>>>>>>>>>>=$###--->-#......................................................................+=-->-%##@;----->>>>>>>>;$$###@@+++.........&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========#+@@@@@@;==========%....,&==========;..........+;==========%+@@@@@@@@+...............@+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),...%'''''''''''{,...............+&>>>>>>>>>>>>=$###--->-#......................................................................+=-->-%##@;---->>>>>>>>=$#####@@++..........&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$===========;;;;;;;;===========%....,&==========;..........+;===========;;;;;;;;;;..............$=@.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),...#)'''''''''''+..............+.@*>>>>>>>>>>>=$###-->>-#......................................................................+=-->-%@@@;---->>>>>>>-&#$###@@+++..........&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......$==============================%....,&==========;..........+;====================;.............$==+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),...+]'''''''''''*,..............+.@&->>>>>>>>>=$###-->>-#......................................................................+=->>-%#@@;--->>>>>>>=%#$###@@@++...........&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......#==============================$....,&==========;...........;====================;...........+%-==+.......*==========&......................................................................................",
"..............,=''''''''''!#.......$'''''''''''&.......%''''''''''~+.......=''''''''''-......,!''''''''''~,...................&!'''''''''),...,>'''''''''''>,...............+++%=>>>>>>>>=$###-->>-@......................................................................+=>>>-%##@;-->>>>>>-*$#$####@@++............&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......#==============================$....,&==========;...........;====================;..........@*====+.......*==========&......................................................................................",
"..............,=''''''''''!=*******='''''''''''&.......%''''''''''>.,,,,,,,=''''''''''-......,!''''''''''~,...................&!'''''''''),....&'''''''''''{+................+++$=>>>>>>>=%#@#->>-%+.......................................................................$=>>-%@@@;-->>>>>-&$#$####@@+++............&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......#==============================$....,&==========;...........;====================;.........#;=====+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''&.......%'''''''''')--------]''''''''''-......,!''''''''''~,...................&!'''''''''),....+'''''''''''!%.................+++#%=>>>>>=$#@$-=%#@........................................................................+#%=-%@@@;->>>>-*%$#$####@@@++.............&==========&.......@===========#......@===========#.......&==========*.......$==========$........&==========#......+==============================@....,&==========;..........,*====================;........$=======+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''&.......%''''''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''),....,{''''''''''';..................+++@#&;===;###@$@+@@........................................................................+++#$#@@@*==;*%########@@@+++..............&==========&.......+===========#......@===========#.......&==========*.......$==========$........&==========#.......=============================-+....,&==========;..........,&====================;......+&========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''&.......%''''''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''),....,='''''''''''>+..................+++@@#######@@+++@+........................................................................+++++@@@@@@+@@@@######@@@+++...............&==========;%$$$$$$%===========#......@===========#.......&==========*.......$==========%@@@@@@@@*==========#......,;============================;.....,&==========;...........$====================;.....@;=========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''%.......%''''''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''),.....#'''''''''''!+...................+++@@@@###@@@+++++.........................................................................+++++@@@+++++@@@###@@@@++++...............&==============================#......@===========#.......&==========*.......$==============================#.......%============================&.....,&==========;...........@====================;....@===========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''$.......$''''''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''),......!'''''''''''$....................+++@@@@@@@@@++++............................................................................+++++++++++@@@@@@@@@+++.................&==============================#......@===========#.......&==========*.......$==============================#.......@-===========================$......#$$$$$$$$$$$............====================;....#===========+.......*==========&......................................................................................",
"..............,='''''''''''''''''''''''''''''''#.......#''''''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''),......>'''''''''''>,....................++++@@@@@@+++...............................................................................+++++++++++@@@@@@++++..................%==============================#......@===========#.......&==========*.......#==============================#........;==========================;+..............................%===================;....#===========+.......*==========&......................................................................................",
"..............,=''''''''''''''''''''''''''''''!#.......@''''''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''),......&'''''''''''!,.....................+++++@@++++.................................................................................++++++++++++@+++++....................%==============================#......@===========#.......&==========*.......#==============================#........$==========================&...............................+===================;....#===========+.......*==========&......................................................................................",
"..............,=''''''''''''''''''''''''''''''{@.......+!'''''''''''''''''''''''''''''-......,!''''''''''~,...................&!'''''''''),......#!'''''''''''#.......................+++++++++...................................................................................+.....+++++++++.....................%==============================#......@===========#.......&==========*.......#==============================#........+;=========================#................................&==================;....#===========*&&&&&&*;==========&......................................................................................",
"..............,=''''''''''''''''''''''''''''''~+.......+{''''''''''''''''''!''''''''''-......,!''''''''''~,...................&!'''''''''),......@{'''''''''''-,........................+++++.............................................................................................+++++.......................#==============================#......@===========#.......&==========*.......@==============================#.........$========================%.................................+;=================;....#==============================&......................................................................................",
"..............,=''''''''''''''''''''''''''''''-........+~'''''''''''''''''!~''''''''''-......,!''''''''''~,...................&!'''''''''),.......>'''''''''''{.......................................................................................................................................................@-=============================#......@===========#,......&==========*.......@==============================#..........%-=====================&...................................@=================;....@==============================%......................................................................................",
"..............,='''''''''''''''''''''''''''''!&.........-'''''''''''''''''>~''''''''''-......,!''''''''''~,...................&!'''''''''),.......;'''''''''''!#......................................................................................................................................................+==================;===========#......@===========*&******;==========*.......@;==================;==========#...........%====================&.....................................@;===============;....@==============================$......................................................................................",
"..............,=''''''''''''''''''''''''''''')..........&'''''''''''''''''&]''''''''''-......,!''''''''''~,...................&!'''''''''),.......$!'''''''''''*.......................................................................................................................................................;=================&===========#......@==============================*.......+*=================;*==========#............@%**;;;;;;;;;;;;**%#........................................$&*;;;;;;;;;;;;;....@==============================%......................................................................................",
"..............,=''''''''''''''''''''''''''''';,.........@)'''''''''''''''!+]''''''''''-......,!''''''''''~,...................&!'''''''''),........)'''''''''''>.......................................................................................................................................................&=================$===========#......+;=============================*........&=================%*==========#...............+++++++++++++++............................................++++++++++++++....+==============================#......................................................................................",
"..............,='''''''''''''''''''''''''''']...........,>'''''''''''''''-.]''''''''''-......,!''''''''''~,...................&!'''''''''),.......,>''''''''''']+......................................................................................................................................................$================;#===========#......+;=============================*........%=================+;==========#.............................................................................................=============================-@......................................................................................",
"..............,='''''''''''''''''''''''''''!@.............!''''''''''''')@,]''''''''''-......,!''''''''''~,...................&!'''''''''),.......,&'''''''''''!#......................................................................................................................................................@;===============&@===========#......+;=============================*........@================*.;==========#............................................................................................,;============================-+......................................................................................",
"..............,='''''''''''''''''''''''''')%..............#)'''''''''''!&,,]''''''''''-......,!''''''''''~,...................&!'''''''''),........+''''''''''''#.......................................................................................................................................................&===============$@===========#......+;=============================*.........*===============#.;==========#............................................................................................,&============================;.......................................................................................",
"..............,=''''''''''''''''''''''''!>#................@-!'''''''']%,.,{''''''''''-......,!''''''''''~,...................&''''''''''!,........,{'''''''''''#.......................................................................................................................................................+==============;+@===========#.......;=============================*.........+==============*+.;==========#.............................................................................................#============================&.......................................................................................",
"...............$;********************;*$+....................+$****;*#+....&;********;$......,**********;%....................@*********;*..........$;**********+........................................................................................................................................................#=============#,@===========#.......;=============================*..........$============;@..;==========#..............................................................................................============================#.......................................................................................",
"..........................................................................................................................................................................................................................................................................................................................@*=========;#..@-==========#......,*==================;==========*...........#*=========*@...;==========#..............................................................................................&==========================;+.......................................................................................",
"............................................................................................................................................................................................................................................................................................................................@%%***&$#+...+***********@.......$=================;*==========*.............+$$****$@.....&**********@..............................................................................................@==========================&........................................................................................",
"...............................................................................................................................................................................................................................................................................................................................,,,........,,,,,,,,,,,........@=================*&==========*.................,,.........,,,,,,,,,,................................................................................................&========================;+........................................................................................",
"..............................................................................................................................................................................................................................................................................................................................................................;================%%==========*......................................................................................................................................+;=======================#.........................................................................................",
"..............................................................................................................................................................................................................................................................................................................................................................%================+&==========*.......................................................................................................................................+;=====================#..........................................................................................",
"..............................................................................................................................................................................................................................................................................................................................................................+===============&,&==========*.........................................................................................................................................&==================;@...........................................................................................",
"...............................................................................................................................................................................................................................................................................................................................................................$=============;+.&==========*..........................................................................................................................................+$$&&&&&&&&&&&&%$@.............................................................................................",
"................................................................................................................................................................................................................................................................................................................................................................%-===========@..&==========*.........................................................................................................................................................................................................................................................",
".................................................................................................................................................................................................................................................................................................................................................................@;========;@...&==========;.........................................................................................................................................................................................................................................................",
"...................................................................................................................................................................................................................................................................................................................................................................+++@@@@+.....@###########.........................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................,,,,,,,,,,,,,,",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................$>)')>$................",
"............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................+-)*@+@*)-+..............",
"............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................-]+.....+~-..............",
"...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................$)+.'''{%.+)$.............",
"....................................................................................................................................................................................................................................................................................................................................''.....................................''.............''...........................''................................................................................''.........''.......................................................''......................''....................~*..'.+%)..*>.............",
"....................................................................................................................................................................................................................................................................................................''''!)~*+.......................''..........+!!+.......................''.............''...''......................''................................................................................''.........''............................+!!+.......................''......................''...''...............)@..'.+%)..@).............",
"....................................................................................................................................................................................................................................................................................................'''''''')$......................''..........&''*.......................''..................''........................................................................................................''.........''............................&''*.......................''...........................''...............'+..'''!%..+'.............",
"....................................................................................................................................................................................................................................................................................................''..+@*{'!@.....................''..........]''].......................''..................''........................................................................................................''.........''............................]''].......................''...........................''...............!@..'+&'$..@).............",
"....................................................................................................................................................................................................................................................................................................''.....+{'=...%~!!]%....''+-!'..''...$!';..#']]'#.....''....''...@~!!-+''...%~!!]%....''..''''''#'!@....+!'#.......''..+={!!]%........''+-!!~@...+;{!!{;+..+''+..{'{..+''+...&]!')=+...''+-!'..@~!!-+''.........''+-!!~@.#'!@....+!'#........#']]'#.....''....''...@~!!-+''...%~!!]%....+;{!!]%..''..''''''#'!@....+!'#~*..'..;{+.*>.............",
"....................................................................................................................................................................................................................................................................................................''......&']...''''''$...''~'''..''..%!'*...-'*&'-.....''....''..@)''''~''...''''''$...''..''''''.>';....;'~........''..>''''''........''~'''')@.+]'''''']+..]'%.+'''+.$']...>''''''{+..''~'''.@)''''~''.........''~'''')@.>';....;'~.........-'*&'-.....''....''..@)''''~''...''''''$..+~''''''..''..''''''.>';....;'~.$)+.'..+{>+)$.............",
"....................................................................................................................................................................................................................................................................................................''......@'!...~$+#~'>...'')%+...''.&''&...+!!++!!+....''....''..=')$+%)''...~$+#~'>...''...''....$')+..+)'$........''..!';++$~........'')$+%)'=.;'!*@@*!';..=';.%')'%.;'=..*')&@+${'=..'')%+..=')$+%)''.........'')$+%)'=.$')+..+)'$........+!!++!!+....''....''..=')$+%)''...~$+#~'>..;'!*@+$~..''...''....$')+..+)'$..-]+.....+~-..............",
"....................................................................................................................................................................................................................................................................................................''......+''.......@')...''&.....''&'!%....*'>..-'*....''....''..{'%...&''.......@')...''...''.....~'*..&'].........''..)'~=$..........''%...&'{.{'*....*'{..%'~.-'&'=.>'%..]'$....#')..''&....{'%...&''.........''%...&'{..~'*..&'].........*'>..-'*....''....''..{'%...&''.......@')..{'*.......''...''.....~'*..&']...+-)*@+@*)-+..............",
"....................................................................................................................................................................................................................................................................................................''......@'!..+;{!''''...''+.....'''!$.....]'%..#']....''....''..''+...+''..+;{!''''...''...''.....$'{..]'%.........''..%!''')#........''+...+''.''@....@'!..+').{).)].)'+..!'''''''''..''+....''+...+''.........''+...+''..$'{..]'%.........]'%..#']....''....''..''+...+''..+;{!''''..!'@.......''...''.....$'{..]'%.....$>)')>$................",
"....................................................................................................................................................................................................................................................................................................''......&']..-'''''''...''......''''&....#''''''''#...''...+''..''+...+''..-'''''''...''...''......]'%$'{..........''...+%-)']........''+...+''.''@....@'!...{'#'>.>'@'{...!'''''''''..''.....''+...+''.........''+...+''...]'%$'{.........#''''''''#...''...+''..''+...+''..-'''''''..!'@.......''...''......]'%$'{.............................",
"....................................................................................................................................................................................................................................................................................................''.....+{'=..!'*@+@''...''......''*''&...-''''''''-...!'@..$''..{'%...&''..!'*@+@''...''...''+.....%'~>'*..........''......@'!........''%...&'{.{'*....*'{...-'-'&.&'='-...{'$.........''.....{'%...&''.........''%...&'{...%'~>'*.........-''''''''-...!'@..$''..{'%...&''..!'*@+@''..{'*.......''...''+.....%'~>'*.............................",
"....................................................................................................................................................................................................................................................................................................''..+@*{'!@..!'&+#~''...''......''.;''*.+!'@....@'!+..]'-+#{''..=')$+%)''..!'&+#~''...''...!'%......{'')+..........''..~%++*''........'')$+%)'=.;'!*@@*!';...&'''@.@'!'&...*')*@++#*]..''.....=')$+%)''.........'')$+%)'=....{'')+........+!'@....@'!+..]'-+#{''..=')$+%)''..!'&+#~''..;'!*@+$~..''...!'%......{'')+.............................",
"....................................................................................................................................................................................................................................................................................................'''''''')$...>''''~''...''......''..;'';*'~......~'*..*''''~''..@)''''~''..>''''~''...''...~''''....&'';...........''..''''''>........''~'''')@.+]'''''']+...@''{...{''@....-''''''''..''.....@)''''~''.........''~'''')@....&'';.........*'~......~'*..*''''~''..@)''''~''..>''''~''..+]''''''..''...~''''....&'';..............................",
"....................................................................................................................................................................................................................................................................................................''''!)~*+....@>!!>+''...''......''...;''''&......&'{...=!!>+''...@~!!-+''..@>!!>+''...''...@~!''....#'!+...........''..%~!!{;+........''+>!!~@...+;{'!{;+.....{'=...='{......%~)'!{-#..''......@~!!-+''.........''+>!!~@.....#'!+.........{'&......&'{...=!!>+''...@~!!-+''..@>!!>+''...+;{'!]%..''...@~!''....#'!+..............................",
"........................................................................................................................................................................................................................................................................................................................................................................................................*'=...............................''.....................................................................................*'=...............................................................................*'=...............................",
".......................................................................................................................................................................................................................................................................................................................................................................................................+]'#...............................''....................................................................................+]'#..............................................................................+]'#...............................",
"......................................................................................................................................................................................................................................................................................................................................................................................................'''~................................''...................................................................................'''~..............................................................................'''~................................",
"......................................................................................................................................................................................................................................................................................................................................................................................................''~@................................''...................................................................................''~@..............................................................................''~@................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
".....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
"....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................."};

View File

@ -230,15 +230,16 @@ void AColor::Bevel(wxDC & dc, bool up, const wxRect & r)
void AColor::Bevel2(wxDC & dc, bool up, const wxRect & r)
{
wxBitmap & Bmp = theTheme.Bitmap( up ? bmpUpButtonLarge : bmpDownButtonLarge );
wxBitmap & Bmp = theTheme.Bitmap( up ? bmpUpButtonExpand : bmpDownButtonExpand );
wxMemoryDC memDC;
memDC.SelectObject(Bmp);
int h = wxMin( r.height, Bmp.GetHeight() );
dc.Blit( r.x,r.y,r.width/2, h, &memDC, 0, 0 );
dc.Blit( r.x+r.width/2,r.y,r.width/2, h, &memDC,
Bmp.GetWidth() - r.width/2, 0 );
int r2 = r.width - r.width/2;
dc.Blit( r.x+r.width/2,r.y,r2, h, &memDC,
Bmp.GetWidth() - r2, 0 );
}
wxColour AColor::Blend( const wxColour & c1, const wxColour & c2 )
@ -334,7 +335,7 @@ void AColor::Dark(wxDC * dc, bool selected)
void AColor::TrackPanelBackground(wxDC * dc, bool selected)
{
#ifdef EXPERIMENTAL_THEMING
UseThemeColour( dc, selected ? clrDarkSelected : clrDark);
UseThemeColour( dc, selected ? clrMediumSelected : clrMedium);
#else
Dark( dc, selected );
#endif
@ -425,11 +426,17 @@ void AColor::Init()
if (inited)
return;
wxColour light =
wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT);
wxColour med = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
wxColour dark =
wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW);
wxColour light = theTheme.Colour( clrLight );
// wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT);
wxColour med = theTheme.Colour( clrMedium );
// wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
wxColour dark = theTheme.Colour( clrDark );
// wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW);
wxColour lightSelected = theTheme.Colour( clrLightSelected );
wxColour medSelected = theTheme.Colour( clrMediumSelected );
wxColour darkSelected = theTheme.Colour( clrDarkSelected );
clippingPen.SetColour(0xCC, 0x11, 0x00);
@ -489,12 +496,12 @@ void AColor::Init()
darkPen[0].SetColour(dark);
// selected
lightBrush[1].SetColour(204, 204, 255);
mediumBrush[1].SetColour(200, 200, 214);
darkBrush[1].SetColour(148, 148, 170);
lightPen[1].SetColour(204, 204, 255);
mediumPen[1].SetColour(200, 200, 214);
darkPen[1].SetColour(0, 0, 0);
lightBrush[1].SetColour(lightSelected);
mediumBrush[1].SetColour(medSelected);
darkBrush[1].SetColour(darkSelected);
lightPen[1].SetColour(lightSelected);
mediumPen[1].SetColour(medSelected);
darkPen[1].SetColour(darkSelected);
#else

View File

@ -44,7 +44,12 @@ hold information about one contributor to Audacity.
#include "Theme.h"
#include "AllThemeResources.h"
// DA: Logo for About box.
#ifdef EXPERIMENTAL_DA
#include "../images/DarkAudacityLogoWithName.xpm"
#else
#include "../images/AudacityLogoWithName.xpm"
#endif
#include "RevisionIdent.h"
// RevisionIdent.h may contain #defines like these ones:
@ -300,6 +305,7 @@ AboutDialog::AboutDialog(wxWindow * parent)
SetName(GetTitle());
this->SetBackgroundColour(theTheme.Colour( clrAboutBoxBackground ));
//this->SetBackgroundColour(theTheme.Colour( clrMedium ));
icon = NULL;
ShuttleGui S( this, eIsCreating );
S.StartNotebook();
@ -323,9 +329,17 @@ void AboutDialog::PopulateAudacityPage( ShuttleGui & S )
{
CreateCreditsList();
wxString par1Str = _(
wxString par1Str =
// DA: Says that it is a customised version.
#ifdef EXPERIMENTAL_DA
wxT(
"Audacity, which this is a customised version of, is a free program written by a worldwide team of [[http://www.audacityteam.org/about/credits|volunteers]]. \
Audacity is [[http://www.audacityteam.org/download|available]] for Windows, Mac, and GNU/Linux (and other Unix-like systems).");
#else
_(
"Audacity is a free program written by a worldwide team of [[http://www.audacityteam.org/about/credits|volunteers]]. \
Audacity is [[http://www.audacityteam.org/download|available]] for Windows, Mac, and GNU/Linux (and other Unix-like systems).");
#endif
// This trick here means that the English language version won't mention using
// English, whereas all translated versions will.
@ -351,18 +365,35 @@ visit our [[http://forum.audacityteam.org/|forum]].");
{
translatorCredits = _("translator_credits") + wxT("<br>");
}
wxString localeStr = wxLocale::GetSystemEncodingName();
wxString creditStr = FormatHtmlText(
wxString( wxT("<center>")) +
wxT("<h3>Audacity ") + wxString(AUDACITY_VERSION_STRING) + wxT("</center></h3>") +
_("Free, open source, cross-platform software for recording and editing sounds.") +
wxT(" [[http://www.audacityteam.org/|http://www.audacityteam.org/]]") +
wxT("<p><br>") + par1Str +
wxT("<p>") + par2Str +
wxString( wxT("<center>") ) +
// DA: Description and provenance in About box
#ifdef EXPERIMENTAL_DA
#undef _
#define _(s) wxGetTranslation((s))
wxT("<h3>DarkAudacity ") + wxString(AUDACITY_VERSION_STRING) + wxT("</center></h3>") +
wxT("Customised version of the Audacity free, open source, cross-platform software " ) +
wxT("for recording and editing sounds.") +
wxT("<p><br>&nbsp; &nbsp; <b>Audacity<sup>&reg;</sup></b> software is copyright &copy; 1999-2017 Audacity Team.<br>") +
wxT("&nbsp; &nbsp; The name <b>Audacity</b> is a registered trademark of Dominic Mazzoni.<br><br>") +
#else
_("<h3>Audacity ") + wxString(AUDACITY_VERSION_STRING) + wxT("</center></h3>") +
_("Audacity the free, open source, cross-platform software for recording and editing sounds.") +
#endif
//wxT("<p><br>") + par1Str +
//wxT("<p>") + par2Str +
wxT("<h3>") + _("Credits") + wxT("</h3>") + wxT("<p>") +
wxT("<p><b>") + wxString::Format(_("Audacity Team Members")) + wxT("</b><br><br>") +
// DA: Customisation credit
#ifdef EXPERIMENTAL_DA
wxT("<p><b>") + wxString::Format(_("DarkAudacity Customisation")) + wxT("</b><br>") +
wxT("James Crook, art, coding &amp; design<br>") +
#endif
wxT("<p><b>") + wxString::Format(_("Audacity Team Members")) + wxT("</b><br>") +
GetCreditsByRole(roleTeamMember) +
wxT("<p><b> ") + _("Emeritus:") + wxT("</b><br>") +
@ -373,30 +404,33 @@ visit our [[http://forum.audacityteam.org/|forum]].");
GetCreditsByRole(roleContributor) +
wxT("<p><b>") + _("Translators") + wxT("</b><br>") +
translatorCredits +
translatorCredits +
GetCreditsByRole(roleTranslators) +
wxT("<p><b>") + _("Libraries") + wxT("</b><br>") +
wxT("Audacity includes code from the following projects:") + wxT("<br><br>") +
_("Audacity includes code from the following projects:") + wxT("<br><br>") +
GetCreditsByRole(roleLibrary) +
wxT("<p><b>") + _("Special thanks:") + wxT("</b><br>") +
GetCreditsByRole(roleThanks) +
wxT("<p><br>") + _("<b>Audacity<sup>&reg;</sup></b> software is copyright")+
wxT("&copy; 1999-2017 Audacity Team.<br>") +
_("The name <b>Audacity<sup>&reg;</sup></b> is a registered trademark of Dominic Mazzoni.") +
wxT("<p><br>")+_("Audacity website: [[http://www.audacityteam.org/|http://www.audacityteam.org/]]") +
wxT("</center>"));
wxT("<p><br>Audacity website: [[http://www.audacityteam.org/|http://www.audacityteam.org/]]") +
// DA: Link for DA url too
#ifdef EXPERIMENTAL_DA
wxT("<br>DarkAudacity website: [[http://www.darkaudacity.com/|http://www.darkaudacity.com/]]") +
#else
_("<p><br>&nbsp; &nbsp; <b>Audacity<sup>&reg;</sup></b> software is copyright &copy; 1999-2017 Audacity Team.<br>") +
_("&nbsp; &nbsp; The name <b>Audacity</b> is a registered trademark of Dominic Mazzoni.<br><br>") +
#endif
this->SetBackgroundColour(theTheme.Colour( clrAboutBoxBackground ));
wxT("</center>")
);
// New way to add to About box....
S.StartNotebookPage( wxT("Audacity") );
auto pPage = S.StartNotebookPage( _("Audacity") );
//pPage->SetBackgroundColour(wxColour(0xAB, 0xAB,0xAB ));
pPage->SetBackgroundColour(theTheme.Colour( clrAboutBoxBackground ));
S.StartVerticalLay(1);
{
//v For now, change to AudacityLogoWithName via old-fashioned way, not Theme.
wxBitmap logo(AudacityLogoWithName_xpm); //v
@ -552,6 +586,12 @@ void AboutDialog::PopulateInformationPage( ShuttleGui & S )
informationStr += _("Features");
informationStr += wxT("</h3>\n<table>"); // start table of features
#ifdef EXPERIMENTAL_DA
AddBuildinfoRow(&informationStr, wxT("Theme"), _("Dark Theme Extras"), enabled);
#else
AddBuildinfoRow(&informationStr, wxT("Theme"), _("Dark Theme Extras"), disabled);
#endif
# if USE_NYQUIST
AddBuildinfoRow(&informationStr, wxT("Nyquist"), _("Plug-in support"),
enabled);

View File

@ -67,54 +67,11 @@ from there. Audacity will look for a file called "Pause.png".
DEFINE_IMAGE( bmpCutPreviewDisabled, wxImage( 16, 16 ), wxT("CutPreviewDisabled"));
DEFINE_IMAGE( bmpAppendRecord, wxImage( 16, 16 ), wxT("AppendRecord"));
DEFINE_IMAGE( bmpAppendRecordDisabled, wxImage( 16, 16 ), wxT("AppendRecordDisabled"));
DEFINE_IMAGE( bmpScrubDisabled, wxImage( 18, 16 ), wxT("ScrubDisabled"));
DEFINE_IMAGE( bmpScrub, wxImage( 18, 16 ), wxT("Scrub"));
DEFINE_IMAGE( bmpSeekDisabled, wxImage( 26, 16 ), wxT("SeekDisabled"));
DEFINE_IMAGE( bmpScrubDisabled, wxImage( 18, 16 ), wxT("ScrubDisabled"));
DEFINE_IMAGE( bmpSeek, wxImage( 26, 16 ), wxT("Seek"));
DEFINE_IMAGE( bmpSeekDisabled, wxImage( 26, 16 ), wxT("SeekDisabled"));
SET_THEME_FLAGS( resFlagNewLine );
DEFINE_IMAGE( bmpUpButtonLarge, wxImage( 48, 48 ), wxT("UpButtonLarge"));
DEFINE_IMAGE( bmpDownButtonLarge, wxImage( 48, 48 ), wxT("DownButtonLarge"));
DEFINE_IMAGE( bmpHiliteButtonLarge, wxImage( 48, 48 ), wxT("HiliteButtonLarge"));
DEFINE_IMAGE( bmpUpButtonSmall, wxImage( 27, 27 ), wxT("UpButtonSmall"));
DEFINE_IMAGE( bmpDownButtonSmall, wxImage( 27, 27 ), wxT("DownButtonSmall"));
DEFINE_IMAGE( bmpHiliteButtonSmall, wxImage( 27, 27 ), wxT("HiliteButtonSmall"));
DEFINE_IMAGE( bmpVolumeSlider, wxImage( 100, 28 ), wxT("VolumeSlider"));
DEFINE_IMAGE( bmpVolumeSliderThumb, wxImage( 10, 28 ), wxT("VolumeSliderThumb"));
DEFINE_IMAGE( bmpSliderThumb, wxImage( 11, 14 ), wxT("SliderThumb"));
DEFINE_IMAGE( bmpToggleScrubRuler, wxImage( 20, 20 ), wxT("ToggleScrubBar"));
SET_THEME_FLAGS( resFlagNone );
DEFINE_IMAGE( bmpMacUpButton, wxImage( 36, 36 ), wxT("MacUpButton"));
DEFINE_IMAGE( bmpMacDownButton, wxImage( 36, 36 ), wxT("MacDownButton"));
DEFINE_IMAGE( bmpMacHiliteButton, wxImage( 36, 36 ), wxT("MacHiliteButton"));
DEFINE_IMAGE( bmpMacUpButtonSmall, wxImage( 27, 27 ), wxT("MacUpButtonSmall"));
DEFINE_IMAGE( bmpMacDownButtonSmall, wxImage( 27, 27 ), wxT("MacDownButtonSmall"));
DEFINE_IMAGE( bmpMacHiliteButtonSmall, wxImage( 27, 27 ), wxT("MacHiliteButtonSmall"));
DEFINE_IMAGE( bmpMacSlider, wxImage( 100, 28 ), wxT("MacSlider"));
DEFINE_IMAGE( bmpMacSliderThumb, wxImage( 17, 28 ), wxT("MacSliderThumb"));
SET_THEME_FLAGS( resFlagInternal );
DEFINE_IMAGE( bmpRecoloredUpLarge, wxImage( 48, 48 ), wxT("RecoloredUpLarge"));
DEFINE_IMAGE( bmpRecoloredDownLarge, wxImage( 48, 48 ), wxT("RecoloredDownLarge"));
DEFINE_IMAGE( bmpRecoloredHiliteLarge, wxImage( 48, 48 ), wxT("RecoloredHiliteLarge"));
DEFINE_IMAGE( bmpRecoloredUpSmall, wxImage( 27, 27 ), wxT("RecoloredUpSmall"));
DEFINE_IMAGE( bmpRecoloredDownSmall, wxImage( 27, 27 ), wxT("RecoloredDownSmall"));
DEFINE_IMAGE( bmpRecoloredHiliteSmall, wxImage( 27, 27 ), wxT("RecoloredHiliteSmall"));
SET_THEME_FLAGS( resFlagCursor );
DEFINE_IMAGE( bmpIBeamCursor, wxImage( 32, 32 ), wxT("IBeamCursor"));
DEFINE_IMAGE( bmpDrawCursor, wxImage( 32, 32 ), wxT("DrawCursor"));
DEFINE_IMAGE( bmpEnvCursor, wxImage( 32, 32 ), wxT("EnvCursor"));
DEFINE_IMAGE( bmpTimeCursor, wxImage( 32, 32 ), wxT("TimeCursor"));
DEFINE_IMAGE( bmpZoomInCursor, wxImage( 32, 32 ), wxT("ZoomInCursor"));
DEFINE_IMAGE( bmpZoomOutCursor, wxImage( 32, 32 ), wxT("ZoomOutCursor"));
DEFINE_IMAGE( bmpLabelCursorLeft, wxImage( 32, 32 ), wxT("LabelCursorLeft"));
DEFINE_IMAGE( bmpLabelCursorRight, wxImage( 32, 32 ), wxT("LabelCursorRight"));
DEFINE_IMAGE( bmpDisabledCursor, wxImage( 32, 32 ), wxT("DisabledCursor"));
DEFINE_IMAGE( bmpBottomFrequencyCursor, wxImage( 32, 32 ), wxT("BottomFrequencyCursor"));
DEFINE_IMAGE( bmpTopFrequencyCursor, wxImage( 32, 32 ), wxT("TopFrequencyCursor"));
DEFINE_IMAGE( bmpBandWidthCursor, wxImage(32, 32), wxT("BandWidthCursor"));
SET_THEME_FLAGS( resFlagNone );
DEFINE_IMAGE( bmpIBeam, wxImage( 27, 27 ), wxT("IBeam"));
@ -157,10 +114,6 @@ from there. Audacity will look for a file called "Pause.png".
DEFINE_IMAGE( bmpRedo, wxImage( 26, 24 ), wxT("Redo"));
DEFINE_IMAGE( bmpRedoDisabled, wxImage( 26, 24 ), wxT("RedoDisabled"));
DEFINE_IMAGE( bmpSyncLockTracksDown, wxImage( 20, 20 ), wxT("SyncLockTracksDown"));
DEFINE_IMAGE( bmpSyncLockTracksUp, wxImage( 20, 20 ), wxT("SyncLockTracksUp"));
DEFINE_IMAGE( bmpSyncLockTracksDisabled, wxImage( 20, 20 ), wxT("SyncLockTracksDisabled"));
SET_THEME_FLAGS( resFlagPaired | resFlagNewLine );
DEFINE_IMAGE( bmpTnStartOn, wxImage( 27, 27 ), wxT("TnStartOn"));
DEFINE_IMAGE( bmpTnStartOnDisabled, wxImage( 27, 27 ), wxT("TnStartOnDisabled"));
@ -212,6 +165,79 @@ from there. Audacity will look for a file called "Pause.png".
DEFINE_IMAGE( bmpDockOverShort, wxImage( 15, 27 ), wxT("DockOverShort"));
DEFINE_IMAGE( bmpDockUp, wxImage( 15, 55 ), wxT("DockUp"));
DEFINE_IMAGE( bmpDockUpShort, wxImage( 15, 27 ), wxT("DockUpShort"));
DEFINE_IMAGE( bmpPinnedPlayRecordHead, wxImage( 27, 27 ), wxT("PinnedPlayRecordHead"));
DEFINE_IMAGE( bmpUnpinnedPlayRecordHead, wxImage( 27, 27 ), wxT("UnpinnedPlayRecordHead"));
DEFINE_IMAGE( bmpSyncLockSelTile, wxImage(20, 22), wxT("SyncLockSelTile"));
DEFINE_IMAGE( bmpEditEffects, wxImage(21, 20), wxT("EditEffects"));
DEFINE_IMAGE( bmpSyncLockTracksDown, wxImage( 20, 20 ), wxT("SyncLockTracksDown"));
DEFINE_IMAGE( bmpSyncLockTracksUp, wxImage( 20, 20 ), wxT("SyncLockTracksUp"));
DEFINE_IMAGE( bmpSyncLockTracksDisabled, wxImage( 20, 20 ), wxT("SyncLockTracksDisabled"));
DEFINE_IMAGE( bmpToggleScrubRuler, wxImage( 20, 20 ), wxT("ToggleScrubRuler"));
// DEFINE_IMAGE( bmpSliderThumb, wxImage( 11, 14 ), wxT("SliderThumb"));
DEFINE_IMAGE( bmpSyncLockIcon, wxImage(12, 12), wxT("SyncLockIcon"));
SET_THEME_FLAGS( resFlagNewLine );
DEFINE_IMAGE( bmpPlayPointer, wxImage( 20, 20 ), wxT("PlayPointer"));
DEFINE_IMAGE( bmpPlayPointerPinned, wxImage( 20, 20 ), wxT("PlayPointerPinned"));
DEFINE_IMAGE( bmpRecordPointer, wxImage( 20, 20 ), wxT("RecordPointer"));
DEFINE_IMAGE( bmpRecordPointerPinned, wxImage( 20, 20 ), wxT("RecordPointerPinned"));
DEFINE_IMAGE( bmpGrabberDropLoc, wxImage( 20, 20 ), wxT("GrabberDropLoc"));
SET_THEME_FLAGS( resFlagNone );
DEFINE_IMAGE( bmpSliderThumb, wxImage( 11, 20 ), wxT("SliderThumb"));
DEFINE_IMAGE( bmpSlider, wxImage( 80, 20 ), wxT("Slider"));
DEFINE_IMAGE( bmpHiliteSlider, wxImage( 80, 20 ), wxT("HiliteSlider"));
SET_THEME_FLAGS( resFlagNewLine );
DEFINE_IMAGE( bmpUpButtonExpand, wxImage( 96, 18 ), wxT("UpButtonExpand"));
DEFINE_IMAGE( bmpDownButtonExpand, wxImage( 96, 18 ), wxT("DownButtonExpand"));
DEFINE_IMAGE( bmpHiliteButtonExpand, wxImage( 96, 18 ), wxT("HiliteButtonExpand"));
SET_THEME_FLAGS( resFlagNewLine );
DEFINE_IMAGE( bmpUpButtonLarge, wxImage( 48, 48 ), wxT("UpButtonLarge"));
DEFINE_IMAGE( bmpDownButtonLarge, wxImage( 48, 48 ), wxT("DownButtonLarge"));
DEFINE_IMAGE( bmpHiliteButtonLarge, wxImage( 48, 48 ), wxT("HiliteButtonLarge"));
DEFINE_IMAGE( bmpUpButtonSmall, wxImage( 27, 27 ), wxT("UpButtonSmall"));
DEFINE_IMAGE( bmpDownButtonSmall, wxImage( 27, 27 ), wxT("DownButtonSmall"));
DEFINE_IMAGE( bmpHiliteButtonSmall, wxImage( 27, 27 ), wxT("HiliteButtonSmall"));
//DEFINE_IMAGE( bmpVolumeSlider, wxImage( 100, 28 ), wxT("VolumeSlider"));
//DEFINE_IMAGE( bmpVolumeSliderThumb, wxImage( 10, 28 ), wxT("VolumeSliderThumb"));
SET_THEME_FLAGS( resFlagNone );
DEFINE_IMAGE( bmpMacUpButton, wxImage( 36, 36 ), wxT("MacUpButton"));
DEFINE_IMAGE( bmpMacDownButton, wxImage( 36, 36 ), wxT("MacDownButton"));
DEFINE_IMAGE( bmpMacHiliteButton, wxImage( 36, 36 ), wxT("MacHiliteButton"));
DEFINE_IMAGE( bmpMacUpButtonSmall, wxImage( 27, 27 ), wxT("MacUpButtonSmall"));
DEFINE_IMAGE( bmpMacDownButtonSmall, wxImage( 27, 27 ), wxT("MacDownButtonSmall"));
DEFINE_IMAGE( bmpMacHiliteButtonSmall, wxImage( 27, 27 ), wxT("MacHiliteButtonSmall"));
DEFINE_IMAGE( bmpMacSlider, wxImage( 100, 28 ), wxT("MacSlider"));
DEFINE_IMAGE( bmpMacSliderThumb, wxImage( 17, 28 ), wxT("MacSliderThumb"));
SET_THEME_FLAGS( resFlagInternal );
DEFINE_IMAGE( bmpRecoloredUpLarge, wxImage( 48, 48 ), wxT("RecoloredUpLarge"));
DEFINE_IMAGE( bmpRecoloredDownLarge, wxImage( 48, 48 ), wxT("RecoloredDownLarge"));
DEFINE_IMAGE( bmpRecoloredHiliteLarge, wxImage( 48, 48 ), wxT("RecoloredHiliteLarge"));
DEFINE_IMAGE( bmpRecoloredUpSmall, wxImage( 27, 27 ), wxT("RecoloredUpSmall"));
DEFINE_IMAGE( bmpRecoloredDownSmall, wxImage( 27, 27 ), wxT("RecoloredDownSmall"));
DEFINE_IMAGE( bmpRecoloredHiliteSmall, wxImage( 27, 27 ), wxT("RecoloredHiliteSmall"));
SET_THEME_FLAGS( resFlagCursor );
DEFINE_IMAGE( bmpIBeamCursor, wxImage( 32, 32 ), wxT("IBeamCursor"));
DEFINE_IMAGE( bmpDrawCursor, wxImage( 32, 32 ), wxT("DrawCursor"));
DEFINE_IMAGE( bmpEnvCursor, wxImage( 32, 32 ), wxT("EnvCursor"));
DEFINE_IMAGE( bmpTimeCursor, wxImage( 32, 32 ), wxT("TimeCursor"));
DEFINE_IMAGE( bmpZoomInCursor, wxImage( 32, 32 ), wxT("ZoomInCursor"));
DEFINE_IMAGE( bmpZoomOutCursor, wxImage( 32, 32 ), wxT("ZoomOutCursor"));
DEFINE_IMAGE( bmpLabelCursorLeft, wxImage( 32, 32 ), wxT("LabelCursorLeft"));
DEFINE_IMAGE( bmpLabelCursorRight, wxImage( 32, 32 ), wxT("LabelCursorRight"));
DEFINE_IMAGE( bmpDisabledCursor, wxImage( 32, 32 ), wxT("DisabledCursor"));
DEFINE_IMAGE( bmpBottomFrequencyCursor, wxImage( 32, 32 ), wxT("BottomFrequencyCursor"));
DEFINE_IMAGE( bmpTopFrequencyCursor, wxImage( 32, 32 ), wxT("TopFrequencyCursor"));
DEFINE_IMAGE( bmpBandWidthCursor, wxImage(32, 32), wxT("BandWidthCursor"));
/*
DEFINE_IMAGE( bmpToolBarToggle, wxImage( 43, 35 ), wxT("ToolBarToggle"));
DEFINE_IMAGE( bmpToolBarTarget, wxImage( 17, 26 ), wxT("ToolBarTarget"));
DEFINE_IMAGE( bmpToolBarGrabber, wxImage( 17, 8 ), wxT("ToolBarGrabber"));
@ -220,22 +246,21 @@ from there. Audacity will look for a file called "Pause.png".
DEFINE_IMAGE( bmpUploadFolder, wxImage( 16, 16 ), wxT("UploadFolder"));
DEFINE_IMAGE( bmpUploadMp3, wxImage( 16, 16 ), wxT("UploadMp3"));
DEFINE_IMAGE( bmpUploadUp, wxImage( 16, 16 ), wxT("UploadUp"));
*/
SET_THEME_FLAGS( resFlagNewLine );
// DA: The logo with name xpm has a different width.
#ifdef EXPERIMENTAL_DA
#define LOGOWITHNAME_WIDTH 629
#else
#define LOGOWITHNAME_WIDTH 506
#endif
#define LOGOWITHNAME_HEIGHT 200
DEFINE_IMAGE( bmpAudacityLogo, wxImage( 215, 190 ), wxT("AudacityLogo"));
DEFINE_IMAGE( bmpAudacityLogo48x48, wxImage( 48, 48 ), wxT("AudacityLogo48x48"));
DEFINE_IMAGE( bmpSyncLockSelTile, wxImage(20, 22), wxT("SyncLockSelTile"));
DEFINE_IMAGE( bmpSyncLockIcon, wxImage(12, 12), wxT("SyncLockIcon"));
SET_THEME_FLAGS( resFlagNone );
DEFINE_IMAGE( bmpEditEffects, wxImage(21, 20), wxT("EditEffects"));
#if defined(EXPERIMENTAL_THEMING)
DEFINE_COLOUR( clrBlank, wxColour( 64, 64, 64), wxT("Blank"));
DEFINE_COLOUR( clrUnselected, wxColour( 30, 30, 30), wxT("Unselected"));
DEFINE_COLOUR( clrSelected, wxColour( 93, 65, 93), wxT("Selected"));
@ -247,26 +272,9 @@ from there. Audacity will look for a file called "Pause.png".
DEFINE_COLOUR( clrRms, wxColour(107, 154, 247), wxT("Rms"));
DEFINE_COLOUR( clrMuteRms, wxColour(136, 136, 144), wxT("MuteRms"));
DEFINE_COLOUR( clrShadow, wxColour(148, 148, 148), wxT("Shadow"));
#else
DEFINE_COLOUR( clrBlank, wxColour(214, 214, 214), wxT("Blank"));
DEFINE_COLOUR( clrUnselected, wxColour(192, 192, 192), wxT("Unselected"));
DEFINE_COLOUR( clrSelected, wxColour(148, 148, 170), wxT("Selected"));
DEFINE_COLOUR( clrSample, wxColour( 50, 50, 200), wxT("Sample"));
DEFINE_COLOUR( clrSelSample, wxColour( 50, 50, 200), wxT("SelSample"));
DEFINE_COLOUR( clrDragSample, wxColour( 0, 0, 0), wxT("DragSample"));
DEFINE_COLOUR( clrMuteSample, wxColour(136, 136, 144), wxT("MuteSample"));
DEFINE_COLOUR( clrRms, wxColour(100, 100, 220), wxT("Rms"));
DEFINE_COLOUR( clrMuteRms, wxColour(136, 136, 144), wxT("MuteRms"));
DEFINE_COLOUR( clrShadow, wxColour(148, 148, 148), wxT("Shadow"));
#endif
DEFINE_COLOUR( clrAboutBoxBackground, wxColour(255, 255, 255), wxT("AboutBackground"));
#if defined(EXPERIMENTAL_THEMING)
DEFINE_COLOUR( clrTrackPanelText, wxColour(153, 153, 153), wxT("TrackPanelText"));
#else
DEFINE_COLOUR( clrTrackPanelText, wxColour( 0, 0, 0), wxT("TrackPanelText"));
#endif
DEFINE_COLOUR( clrTrackPanelText, wxColour(200, 200, 200), wxT("TrackPanelText"));
DEFINE_COLOUR( clrLabelTrackText, wxColour( 0, 0, 0), wxT("LabelTrackText"));
DEFINE_COLOUR( clrMeterPeak, wxColour(102, 102, 255), wxT("MeterPeak"));
@ -286,11 +294,7 @@ from there. Audacity will look for a file called "Pause.png".
DEFINE_COLOUR( clrMeterOutputClipBrush, wxColour(255, 53, 53), wxT("MeterOutputClipBrush") );
DEFINE_COLOUR( clrMeterOutputLightPen, wxColour(153, 255, 153), wxT("MeterOutputLightPen") );
DEFINE_COLOUR( clrMeterOutputDarkPen, wxColour(61, 164, 61), wxT("MeterOutputDarkPen") );
#if defined(EXPERIMENTAL_THEMING)
DEFINE_COLOUR( clrRulerBackground, wxColour( 93, 65, 93), wxT("RulerBackground") );
#else
DEFINE_COLOUR( clrRulerBackground, wxColour(148, 148, 170), wxT("RulerBackground") );
#endif
DEFINE_COLOUR( clrAxisLines, wxColour(0, 0, 255), wxT("AxisLines") );
DEFINE_COLOUR( clrGraphLines, wxColour(110, 110, 220), wxT("GraphLines") );
DEFINE_COLOUR( clrResponseLines, wxColour(0, 255, 0), wxT("ResponseLines") );
@ -326,15 +330,9 @@ from there. Audacity will look for a file called "Pause.png".
DEFINE_COLOUR( clrLabelSelectedPen, wxColour( 148,148,170), wxT("LabelSelectedPen") );
DEFINE_COLOUR( clrLabelSurroundPen, wxColour( 0, 0, 0), wxT("LabelSurroundPen") );
#ifdef EXPERIMENTAL_THEMING
DEFINE_COLOUR( clrTrackFocus0, wxColour( 200, 200, 200), wxT("TrackFocus0") );
DEFINE_COLOUR( clrTrackFocus1, wxColour( 180, 180, 180), wxT("TrackFocus1") );
DEFINE_COLOUR( clrTrackFocus2, wxColour( 160, 160, 160), wxT("TrackFocus2") );
#else
DEFINE_COLOUR( clrTrackFocus0, wxColour( 255, 255, 128), wxT("TrackFocus0") );
DEFINE_COLOUR( clrTrackFocus1, wxColour( 215, 215, 138), wxT("TrackFocus1") );
DEFINE_COLOUR( clrTrackFocus2, wxColour( 185, 185, 142), wxT("TrackFocus2") );
#endif
DEFINE_COLOUR( clrSnapGuide, wxColour( 255, 255, 0), wxT("SnapGuide") );
DEFINE_COLOUR( clrTrackInfo, wxColour( 64, 64, 64), wxT("TrackInfo") );

View File

@ -45,7 +45,8 @@
#if IS_ALPHA
#define AUDACITY_SUFFIX wxT("-alpha-") __TDATE__
#else
#define AUDACITY_SUFFIX wxT("") // for a stable release
//#define AUDACITY_SUFFIX wxT("") // for a stable release
#define AUDACITY_SUFFIX wxT("x ") __TDATE__
#endif
#define AUDACITY_MAKESTR( x ) #x
@ -57,11 +58,20 @@
wxT( AUDACITY_QUOTE( AUDACITY_REVISION ) ) \
AUDACITY_SUFFIX
// DA: x on end of version string.
#ifdef EXPERIMENTAL_DA
// Version string for file info (under Windows)
#define AUDACITY_FILE_VERSION AUDACITY_QUOTE( AUDACITY_VERSION ) "," \
AUDACITY_QUOTE( AUDACITY_RELEASE ) "," \
AUDACITY_QUOTE( AUDACITY_REVISION ) "," \
AUDACITY_QUOTE( AUDACITY_MODLEVEL ) " x"
#else
#define AUDACITY_FILE_VERSION AUDACITY_QUOTE( AUDACITY_VERSION ) "," \
AUDACITY_QUOTE( AUDACITY_RELEASE ) "," \
AUDACITY_QUOTE( AUDACITY_REVISION ) "," \
AUDACITY_QUOTE( AUDACITY_MODLEVEL )
#endif
// Increment this every time the prefs need to be reset
// the first part (before the r) indicates the version the reset took place
@ -177,10 +187,35 @@ void QuitAudacity();
#define MAX_AUDIO (1. - 1./(1<<15))
#define JUST_BELOW_MAX_AUDIO (1.f - 1.f/(1<<14))
#ifndef IN_RC
#include <wx/defs.h>
#include <wx/string.h>
extern const wxString& GetCustomTranslation(const wxString& str1 );
extern const wxString& GetCustomSubstitution(const wxString& str1 );
// Marks strings for extraction only...must use wxGetTranslation() to translate.
#define XO(s) wxT(s)
#define XO(s) wxT(s)
// Marks string for substitution only.
#define _TS(s) wxT(s)
#define _TS( s ) GetCustomSubstitution( s )
#define WXINTL_NO_GETTEXT_MACRO
#ifdef wxPLURAL
#undef wxPLURAL
#endif
#define wxPLURAL(sing, plur, n) wxGetTranslation((sing), (plur), n)
#ifdef _
#undef _
#endif
#define _(s) GetCustomTranslation((s))
#endif
// This renames a good use of this C++ keyword that we don't need to review when hunting for leaks.
#define PROHIBITED = delete

View File

@ -229,7 +229,13 @@ It handles initialization and termination by subclassing wxApp.
#endif //(__WXMSW__)
// DA: Logo for Splash Screen
#ifdef EXPERIMENTAL_DA
#include "../images/DarkAudacityLogoWithName.xpm"
#else
#include "../images/AudacityLogoWithName.xpm"
#endif
////////////////////////////////////////////////////////////
/// Custom events
@ -1275,8 +1281,13 @@ bool AudacityApp::OnInit()
// Don't use AUDACITY_NAME here.
// We want Audacity with a capital 'A'
wxString appName = wxT("Audacity");
// DA: App name
#ifndef EXPERIMENTAL_DA
wxString appName = wxT("Audacity");
#else
wxString appName = wxT("DarkAudacity");
#endif
wxTheApp->SetAppName(appName);
// Explicitly set since OSX will use it for the "Quit" menu item
@ -1307,7 +1318,12 @@ bool AudacityApp::OnInit()
/* On Unix systems, the default temp dir is in /var/tmp. */
defaultTempDir.Printf(wxT("/var/tmp/audacity-%s"), wxGetUserId().c_str());
// DA: Path env variable.
#ifndef EXPERIMENTAL_DA
wxString pathVar = wxGetenv(wxT("AUDACITY_PATH"));
#else
wxString pathVar = wxGetenv(wxT("DARKAUDACITY_PATH"));
#endif
if (pathVar != wxT(""))
AddMultiPathsToPathList(pathVar, audacityPathList);
AddUniquePathToPathList(::wxGetCwd(), audacityPathList);

4566
src/ClassicThemeAsCeeCode.h Normal file

File diff suppressed because it is too large Load Diff

4094
src/DarkThemeAsCeeCode.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -48,10 +48,13 @@
// feature to link audio tracks to a label track
#define EXPERIMENTAL_SYNC_LOCK
// DA: Enables dark audacity theme and customisations.
//#define EXPERIMENTAL_DA
// experimental theming
// Work in progress, June-2008.
// This mostly sets up a weird color scheme currently.
//#define EXPERIMENTAL_THEMING
#define EXPERIMENTAL_THEMING
//August 2009 - Theming not locked down enough for a stable release.
// This turns on the Theme panel in Prefs dialog. It is independent of EXPERIMENTAL_THEMING.
@ -184,12 +187,14 @@
// scrolling past zero is enabled. Perhaps that lessens confusion.
#define EXPERIMENTAL_TWO_TONE_TIME_RULER
#ifndef IN_RC
// Define to include crash reporting
#include <wx/defs.h>
#define EXPERIMENTAL_CRASH_REPORT
#if !defined(wxUSE_DEBUGREPORT) || !wxUSE_DEBUGREPORT
#undef EXPERIMENTAL_CRASH_REPORT
#endif
#endif
// Paul Licameli (PRL) 31 May 2015
// Zero-padding factor for spectrograms can smooth the display of spectrograms by

View File

@ -252,7 +252,12 @@ wxString FileNames::ThemeImageDefsAsCee()
wxString FileNames::ThemeCacheAsCee( )
{
// DA: Theme sourcery file name.
#ifndef EXPERIMENTAL_DA
return wxFileName( ThemeDir(), wxT("ThemeAsCeeCode.h") ).GetFullPath();
#else
return wxFileName( ThemeDir(), wxT("DarkThemeAsCeeCode.h") ).GetFullPath();
#endif
}
wxString FileNames::ThemeComponent(const wxString &Str)

View File

@ -19,15 +19,23 @@
#include "HelpText.h"
#include "FileNames.h"
#include "AboutDialog.h"
#include "AllThemeResources.h"
wxString HtmlColourOfIndex( int i ){
wxColour c = theTheme.Colour(i);
return wxString::Format("\"#%02X%02X%02X\"",
c.Red(), c.Green(), c.Blue() );
}
static wxString WrapText( const wxString & Text )
{
return wxString(wxT(""))+
wxT("<html><head></head>") +
wxT("<body bgcolor=\"#ffffff\">") +
wxT("<body bgcolor=") + HtmlColourOfIndex(clrTrackInfo) + wxT(">") +
wxT("<font color=") + HtmlColourOfIndex(clrTrackPanelText) + wxT(">") +
wxT("<p>") + Text +
wxT("</font>")+
wxT("</body></html>");
}
@ -90,6 +98,7 @@ static wxString LinkExpand( const wxString & Text )
Key = Key.Mid( 0, j );
LinkText = LinkText.Mid( 0, k );
LinkText=wxString("<font color=") + HtmlColourOfIndex(clrSample) + wxT(">") +LinkText+"</font>";
wxString Replacement;
if( Key.StartsWith( wxT("wiki:") ))
{
@ -116,6 +125,7 @@ static wxString LinkExpand( const wxString & Text )
Replacement = Link( Key, LinkText );
}
Temp = Temp.Mid( 0, i ) + Replacement + Temp.Mid( i + j + k + 5 );// 5 for the [[|]]
}
return Temp;
@ -190,7 +200,7 @@ static wxString HelpTextBuiltIn( const wxString & Key )
if(Key==wxT("welcome"))
{
/// TO-DO: Make the links to help here use the widgets/HelpSystem mechanism
/// so that they are consistent
/// so that they are consistent
/* i18n-hint: Preserve [[file:quick_help.html as it's the name of a file.*/
wxString result =
wxString(wxT("")) +
@ -200,7 +210,20 @@ static wxString HelpTextBuiltIn( const wxString & Key )
_("<br><br>The version of Audacity you are using is an <b>Alpha test version</b>.") + " " +
_("We strongly recommend that you use our latest stable released version, which has full documentation and support.<br><br>")+
_("You can help us get Audacity ready for release by joining our [[http://www.audacityteam.org/community/|community]].<hr><br><br>")+
#endif
#endif
// DA: Support methods text.
#ifdef EXPERIMENTAL_DA
wxT("<center><h3>DarkAudacity ") + AUDACITY_VERSION_STRING + wxT("</h3></center>") +
_("<br><br>DarkAudacity is based on Audacity:") + wxT("<ul><li>") +
_(" [[http://www.darkaudacity.com|www.darkaudacity.com]] - for differences between them.") + wxT("</li><li>") +
_(" email to [[mailto:james@audacityteam.org|james@audacityteam.org]] - for help using DarkAudacity.") + wxT("</li><li>") +
_(" [[http://www.darkaudacity.com/video.html|Tutorials]] - for getting started with DarkAudacity.") + wxT("</li></ul>") +
wxT("<br><br>Audacity has these support methods:") + wxT("<ul><li>") +
wxT(" [[http://manual.audacityteam.org/|Manual]] - for comprehensive Audacity documentation") + wxT("</li><li>") +
wxT(" [[http://forum.audacityteam.org/|Forum]] - for large knowledge base on using Audacity.") + wxT("</li></ul>");
#else
wxT("<center><h3>Audacity ") + AUDACITY_VERSION_STRING + wxT("</h3><h3>") +
_("How to get help") + wxT("</h3></center>") +
_("These are our support methods:") + wxT("<p><ul><li>") +
@ -208,6 +231,7 @@ static wxString HelpTextBuiltIn( const wxString & Key )
_(" [[file:index.html|Manual]] - if not installed locally, [[http://manual.audacityteam.org/|view online]]") + wxT("</li><li>") +
_(" [[http://forum.audacityteam.org/|Forum]] - ask your question directly, online.") + wxT("</li></ul></p><p>") + wxT("<b>") +
_("More:</b> Visit our [[http://wiki.audacityteam.org/index.php|Wiki]] for tips, tricks, extra tutorials and effects plug-ins.") + wxT("</p>");
#endif
#if IS_ALPHA
result.Replace( "//manual.audacityteam.org/quick_help.html","//alphamanual.audacityteam.org/man/Quick_Help" );
@ -237,12 +261,20 @@ audio CDs]].") + wxT("</p>")
if(Key == wxT("remotehelp") )
{
// *URL* will be replaced by whatever URL we are looking for.
// DA: View the manual on line is expected.
#ifdef EXPERIMENTAL_DA
return WrapText(_("The Manual does not appear to be installed. \
Please [[*URL*|view the Manual online]].<br><br>\
To always view the Manual online, change \"Location of Manual\" in \
Interface Preferences to \"From Internet\".")
#else
return WrapText(_("The Manual does not appear to be installed. \
Please [[*URL*|view the Manual online]] or \
[[http://manual.audacityteam.org/man/unzipping_the_manual.html| \
download the Manual]].<br><br>\
To always view the Manual online, change \"Location of Manual\" in \
Interface Preferences to \"From Internet\".")
#endif
);
}
return wxT("");
@ -267,6 +299,7 @@ wxString HelpText( const wxString & Key )
return WrapText( Key );
}
wxString FormatHtmlText( const wxString & Text ){
wxString localeStr = wxLocale::GetSystemEncodingName();

View File

@ -30,6 +30,7 @@ and on Mac OS X for the filesystem.
#include "Internat.h"
#include "FileDialog.h"
#include "Experimental.h"
// in order for the static member variables to exist, they must appear here
// (_outside_) the class definition, in order to be allocated some storage.
@ -39,6 +40,44 @@ wxChar Internat::mDecimalSeparator = wxT('.'); // default
wxArrayString Internat::exclude;
wxCharBuffer Internat::mFilename;
// DA: Use tweaked translation mechanism to replace 'Audacity' by 'DarkAudacity'.
#ifdef EXPERIMENTAL_DA
// This function allows us to replace Audacity by DarkAudacity without peppering
// the source code with changes. We split out this step, the customisation, as
// it is used on its own (without translation) in the wxTS macro.
const wxString& GetCustomSubstitution(const wxString& str2)
{
// If contains 'DarkAudacity, already converted.
if( str2.Contains( "DarkAudacity" ))
return str2;
// If does not contain 'Audacity', nothing to do.
if( !str2.Contains( "Audacity" ))
return str2;
wxString str3 = str2;
str3.Replace( "Audacity", "DarkAudacity" );
str3.Replace( " an DarkAudacity", " a DarkAudacity" );
// DA also renames sync-lock(ed) as time-lock(ed).
str3.Replace( "Sync-Lock", "Time-Lock" );
str3.Replace( "Sync-&Lock", "Time-&Lock" );
str3.Replace( "Sync Lock", "Time Lock" );
return wxTranslations::GetUntranslatedString(str3);
}
#else
const wxString& GetCustomSubstitution(const wxString& str1)
{
return str1 ;
}
#endif
// In any translated string, we can replace the name 'Audacity' by 'DarkAudacity'
// without requiring translators to see extra strings for the two versions.
const wxString& GetCustomTranslation(const wxString& str1)
{
const wxString& str2 = wxGetTranslation( str1 );
return GetCustomSubstitution( str2 );
}
void Internat::Init()
{
// Save decimal point character

5776
src/LightThemeAsCeeCode.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -326,7 +326,6 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("SaveAs"), _("Save Project &As..."), FN(OnSaveAs));
c->BeginSubMenu( _("Save Other") );
//#ifdef EXPERIMENTAL_DA
// Enable Export audio commands only when there are audio tracks.
c->AddItem(wxT("ExportMp3"), _("Export as MP&3"), FN(OnExportMp3), wxT(""),
AudioIONotBusyFlag | WaveTracksExistFlag,
@ -339,7 +338,6 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("ExportOgg"), _("Export as &OGG"), FN(OnExportOgg), wxT(""),
AudioIONotBusyFlag | WaveTracksExistFlag,
AudioIONotBusyFlag | WaveTracksExistFlag);
//#endif
c->AddItem(wxT("Export"), _("&Export Audio..."), FN(OnExportAudio), wxT("Ctrl+Shift+E"),
AudioIONotBusyFlag | WaveTracksExistFlag,
@ -599,11 +597,7 @@ void AudacityProject::CreateMenusAndCommands()
TracksExistFlag, TracksExistFlag);
#ifdef EXPERIMENTAL_SYNC_LOCK
#ifdef EXPERIMENTAL_DA
c->AddItem(wxT("SelSyncLockTracks"), _("In All Time-Locked Tracks"),
#else
c->AddItem(wxT("SelSyncLockTracks"), _("In All Sync-Locked Tracks"),
#endif
FN(OnSelectSyncLockSel), wxT("Ctrl+Shift+Y"),
TracksSelectedFlag | IsSyncLockedFlag,
TracksSelectedFlag | IsSyncLockedFlag);
@ -613,13 +607,11 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("ZeroCross"), _("Ends to &Zero Crossings"), FN(OnZeroCrossing), wxT("Z"));
c->AddSeparator();
#ifndef EXPERIMENTAL_DA
c->AddItem(wxT("StoreCursorPosition"), _("Save Cursor Pos&ition"), FN(OnCursorPositionStore),
WaveTracksExistFlag,
WaveTracksExistFlag);
// Save cursor position is used in some selctions.
// Maybe there should be a restore for it?
#endif
// Audacity has 'Store Re&gion' here.
c->AddItem(wxT("SelSave"), _("Save Sele&ction"), FN(OnSelectionSave),
@ -816,8 +808,7 @@ void AudacityProject::CreateMenusAndCommands()
// Scrubbing sub-menu
GetScrubber().AddMenuItems();
#ifndef EXPERIMENTAL_DA
// JKC: ANSWER-ME: How is this different to 'Skip To' and how is it useful?
// JKC: ANSWER-ME: How is 'cursor to' different to 'Skip To' and how is it useful?
c->BeginSubMenu(_("Cursor to"));
c->AddItem(wxT("CursSelStart"), _("Selection Star&t"), FN(OnCursorSelStart));
@ -830,7 +821,6 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("CursProjectEnd"), _("Project E&nd"), FN(OnSkipEnd), wxT("End"));
c->EndSubMenu();
#endif
c->AddSeparator();
@ -983,11 +973,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
#ifdef EXPERIMENTAL_SYNC_LOCK
#ifdef EXPERIMENTAL_DA
c->AddCheck(wxT("SyncLock"), _("Time-&Lock Tracks (on/off)"), FN(OnSyncLock), 0,
#else
c->AddCheck(wxT("SyncLock"), _("Sync-&Lock Tracks (on/off)"), FN(OnSyncLock), 0,
#endif
AlwaysEnabledFlag, AlwaysEnabledFlag);
c->AddSeparator();
@ -1129,15 +1115,16 @@ void AudacityProject::CreateMenusAndCommands()
c->BeginMenu(_("&Help"));
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
#ifndef EXPERIMENTAL_DA
c->AddItem(wxT("QuickHelp"), _("&Quick Help"), FN(OnQuickHelp));
c->AddItem(wxT("Manual"), _("&Manual"), FN(OnManual));
#else
// DA: Emphasise it is the Audacity Manual (No separate DA manual).
#ifdef EXPERIMENTAL_DA
// 'Getting Started' rather than 'Quick Help' for DarkAudacity.
// At the moment the video tutorials are aspirational (aka do not exist yet).
// Emphasise that manual is for Audacity, not DarkAudacity.
c->AddItem(wxT("QuickHelp"), _("&Getting Started"), FN(OnQuickHelp));
c->AddItem(wxT("Manual"), wxT("Audacity &Manual"), FN(OnManual));
#else
c->AddItem(wxT("QuickHelp"), _("&Quick Help"), FN(OnQuickHelp));
c->AddItem(wxT("Manual"), _("&Manual"), FN(OnManual));
#endif
@ -1172,6 +1159,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
#endif
// DA: Does not fully support update checking.
#ifndef EXPERIMENTAL_DA
c->AddItem(wxT("Updates"), _("&Check for Updates..."), FN(OnCheckForUpdates));
#endif

View File

@ -22,6 +22,7 @@
#include <wx/settings.h> // for wxSystemSettings::GetColour and wxSystemSettings::GetMetric
#include "AColor.h"
#include "AllThemeResources.h"
#include "AudioIO.h"
#ifdef USE_MIDI
@ -175,8 +176,8 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
SetName(mTrack->GetName());
this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
//this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
this->SetBackgroundColour( theTheme.Colour( clrMedium ) );
// Not sure why, but sizers weren't getting offset vertically,
// probably because not using wxDefaultPosition,
// so positions are calculated explicitly below, and sizers code was removed.
@ -190,6 +191,7 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
wxALIGN_CENTRE | wxST_NO_AUTORESIZE | wxSUNKEN_BORDER);
//v Useful when different tracks are different colors, but not now.
// mStaticText_TrackName->SetBackgroundColour(this->GetTrackColor());
mStaticText_TrackName->SetForegroundColour(theTheme.Colour(clrTrackPanelText));
// gain and velocity sliders at left (both in same place)
@ -895,11 +897,12 @@ MixerBoard::MixerBoard(AudacityProject* pProject,
wxHSCROLL); // long style = wxHSCROLL | wxVSCROLL, const wxString& name = "scrolledWindow")
// Set background color to same as TrackPanel background.
#ifdef EXPERIMENTAL_THEMING
mScrolledWindow->SetBackgroundColour(this->GetParent()->GetBackgroundColour());
#else
mScrolledWindow->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW));
#endif
// #ifdef EXPERIMENTAL_THEMING
// mScrolledWindow->SetBackgroundColour(this->GetParent()->GetBackgroundColour());
// #else
// mScrolledWindow->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW));
// #endif
mScrolledWindow->SetBackgroundColour( theTheme.Colour( clrMedium ) );
mScrolledWindow->SetScrollRate(10, 0); // no vertical scroll
mScrolledWindow->SetVirtualSize(size);
@ -1296,6 +1299,7 @@ void MixerBoard::CreateMuteSoloImages()
{
// Much of this is taken from TrackLabel::DrawMuteSolo.
wxMemoryDC dc;
dc.SetTextForeground(theTheme.Colour(clrTrackPanelText));
wxString str = _("Mute");
int textWidth, textHeight;

View File

@ -1276,7 +1276,7 @@ void AudacityProject::UpdatePrefsVariables()
gPrefs->Read(wxT("/AudioFiles/NormalizeOnLoad"),&mNormalizeOnLoad, false);
gPrefs->Read(wxT("/GUI/AutoScroll"), &mViewInfo.bUpdateTrackIndicator, true);
gPrefs->Read(wxT("/GUI/EmptyCanBeDirty"), &mEmptyCanBeDirty, true );
// DA 2.1.3x did not ship with a manual, so default for DA is internet.
// DA: Default for DA is manual from internet.
#ifdef EXPERIMENTAL_DA
gPrefs->Read(wxT("/GUI/Help"), &mHelpPref, wxT("FromInternet") );
#else

View File

@ -42,7 +42,12 @@ most commonly asked questions about Audacity.
#include "Prefs.h"
#include "HelpText.h"
// DA: Logo for Splash Dialog (welcome dialog)
#ifdef EXPERIMENTAL_DA
#include "../images/DarkAudacityLogoWithName.xpm"
#else
#include "../images/AudacityLogoWithName.xpm"
#endif
SplashDialog * SplashDialog::pSelf=NULL;
@ -64,7 +69,6 @@ SplashDialog::SplashDialog(wxWindow * parent)
wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
{
SetName(GetTitle());
this->SetBackgroundColour(theTheme.Colour( clrAboutBoxBackground ));
m_pLogo = NULL; //v
ShuttleGui S( this, eIsCreating );
Populate( S );
@ -78,6 +82,7 @@ SplashDialog::SplashDialog(wxWindow * parent)
void SplashDialog::Populate( ShuttleGui & S )
{
this->SetBackgroundColour(theTheme.Colour( clrAboutBoxBackground ));
// this->SetBackgroundColour(wxColour(0xAB, 0xAB,0xAB ));
bool bShow;
gPrefs->Read(wxT("/GUI/ShowSplashScreen"), &bShow, true );
S.StartVerticalLay(1);

View File

@ -72,6 +72,7 @@ and use it for toolbar and window layouts too.
#include "AllThemeResources.h" // can remove this later, only needed for 'XPMS_RETIRED'.
#include "FileNames.h"
#include "Prefs.h"
#include "AColor.h"
#include <wx/arrimpl.cpp>
@ -188,8 +189,15 @@ WX_DEFINE_USER_EXPORTED_OBJARRAY( ArrayOfColours )
#include "AllThemeResources.h"
// Include the ImageCache...
static unsigned char ImageCacheAsData[] = {
#include "ThemeAsCeeCode.h"
static unsigned char DarkImageCacheAsData[] = {
#include "DarkThemeAsCeeCode.h"
};
static unsigned char LightImageCacheAsData[] = {
#include "LightThemeAsCeeCode.h"
};
static unsigned char ClassicImageCacheAsData[] = {
#include "ClassicThemeAsCeeCode.h"
};
// theTheme is a global variable.
@ -217,14 +225,27 @@ void Theme::EnsureInitialised()
RegisterExtraThemeResources();
#endif
bool bLoadThemeAtStart;
gPrefs->Read( wxT("/Theme/LoadAtStart"), &bLoadThemeAtStart, false );
LoadThemeAtStartUp( bLoadThemeAtStart );
LoadPreferredTheme();
}
bool ThemeBase::LoadPreferredTheme()
{
// DA: Default themes differ.
#ifdef EXPERIMENTAL_DA
wxString theme = gPrefs->Read(wxT("/GUI/Theme"), wxT("dark"));
#else
wxString theme = gPrefs->Read(wxT("/GUI/Theme"), wxT("classic"));
#endif
theTheme.LoadTheme( theTheme.ThemeTypeOfTypeName( theme ) );
return true;
}
void Theme::ApplyUpdatedImages()
{
AColor::ReInit();
AudacityProject *p = GetActiveProject();
p->ResetColours();
for( int ii = 0; ii < ToolBarCount; ++ii )
{
ToolBar *pToolBar = p->GetToolManager()->GetToolBar(ii);
@ -262,41 +283,17 @@ ThemeBase::~ThemeBase(void)
}
/// This function is called to load the initial Theme images.
/// There are many possible choices for what this function
/// should do, as we have (potentially) four sources of images.
/// - (deprecated) programmed in XPMs.
/// - Programmed in in-built theme.
/// - External image Cache file.
/// - External component files.
///
/// We currently still have the deprecated XPMs, so we have
/// those being used if the user decides not to load themes.
///
/// @param bLookForExternalFiles uses file iff true.
void ThemeBase::LoadThemeAtStartUp( bool bLookForExternalFiles )
/// It does not though cause the GUI to refresh.
void ThemeBase::LoadTheme( teThemeType Theme )
{
EnsureInitialised();
const bool cbBinaryRead =true;
const bool cbOkIfNotFound = true;
// IF not interested in external files,
// THEN just use the internal default set.
if( !bLookForExternalFiles )
{
// IF the XPMs have been retired, THEN we'd better use the built-in cache
// at start up.
// ELSE do nothing, we already have XPM based images.
#ifdef XPMS_RETIRED
ReadThemeInternal();
#endif
return;
}
// ELSE IF can't read the external image cache.
else if( !ReadImageCache( cbBinaryRead, cbOkIfNotFound ) )
if( !ReadImageCache( Theme, cbOkIfNotFound ) )
{
// THEN get the default set.
ReadThemeInternal();
ReadImageCache( GetFallbackThemeType(), !cbOkIfNotFound );
// JKC: Now we could go on and load the individual images
// on top of the default images using the commented out
@ -513,7 +510,12 @@ int SourceOutputStream::OpenFile(const wxString & Filename)
bOk = File.Open( Filename, wxFile::write );
if( bOk )
{
// DA: Naming of output sourcery
#ifdef EXPERIMENTAL_DA
File.Write( wxT("// DarkThemeAsCeeCode.h\r\n") );
#else
File.Write( wxT("// ThemeAsCeeCode.h\r\n") );
#endif
File.Write( wxT("//\r\n") );
File.Write( wxT("// This file was Auto-Generated.\r\n") );
File.Write( wxT("// It is included by Theme.cpp.\r\n") );
@ -703,7 +705,7 @@ void ThemeBase::WriteImageMap( )
return;
File.Write( wxT("<html>\r\n"));
File.Write( wxT("<body>\r\n"));
File.Write( wxT("<body bgcolor=\"303030\">\r\n"));
File.Write( wxT("<img src=\"ImageCache.png\" usemap=\"#map1\">\r\n" ));
File.Write( wxT("<map name=\"map1\">\r\n") );
@ -781,7 +783,28 @@ void ThemeBase::WriteImageDefs( )
}
teThemeType ThemeBase::GetFallbackThemeType(){
// Fallback must be an internally supported type,
// to guarantee it is found.
#ifdef EXPERIMENTAL_DA
return themeDark;
#else
return themeClassic;
#endif
}
teThemeType ThemeBase::ThemeTypeOfTypeName( const wxString & Name )
{
wxArrayString aThemes;
aThemes.Add( "classic" );
aThemes.Add( "dark" );
aThemes.Add( "light" );
aThemes.Add( "custom" );
int themeIx = aThemes.Index( Name );
if( themeIx < 0 )
return GetFallbackThemeType();
return (teThemeType)themeIx;
}
@ -790,7 +813,7 @@ void ThemeBase::WriteImageDefs( )
/// otherwise the data is taken from a compiled in block of memory.
/// @param bOkIfNotFound if true means do not report absent file.
/// @return true iff we loaded the images.
bool ThemeBase::ReadImageCache( bool bBinaryRead, bool bOkIfNotFound)
bool ThemeBase::ReadImageCache( teThemeType type, bool bOkIfNotFound)
{
EnsureInitialised();
wxImage ImageCache;
@ -802,8 +825,7 @@ bool ThemeBase::ReadImageCache( bool bBinaryRead, bool bOkIfNotFound)
// ImageCache.InitAlpha();
// }
// IF bBinary read THEN a normal read from a PNG file
if( bBinaryRead )
if( type == themeFromFile )
{
const wxString &FileName = FileNames::ThemeCachePng();
if( !wxFileExists( FileName ))
@ -829,8 +851,25 @@ bool ThemeBase::ReadImageCache( bool bBinaryRead, bool bOkIfNotFound)
// ELSE we are reading from internal storage.
else
{
wxMemoryInputStream InternalStream(
(char *)ImageCacheAsData, sizeof(ImageCacheAsData));
size_t ImageSize = 0;
char * pImage = NULL;
switch( type ){
case themeClassic :
ImageSize = sizeof(ClassicImageCacheAsData);
pImage = (char *)ClassicImageCacheAsData;
break;
default:
case themeDark :
ImageSize = sizeof(DarkImageCacheAsData);
pImage = (char *)DarkImageCacheAsData;
break;
case themeLight :
ImageSize = sizeof(LightImageCacheAsData);
pImage = (char *)LightImageCacheAsData;
break;
}
wxMemoryInputStream InternalStream( pImage, ImageSize );
if( !ImageCache.LoadFile( InternalStream, wxBITMAP_TYPE_PNG ))
{
// If we get this message, it means that the data in file
@ -1013,11 +1052,6 @@ void ThemeBase::SaveComponents()
FileNames::ThemeComponentsDir().c_str() ));
}
void ThemeBase::ReadThemeInternal()
{
// false indicates not using standard binary method.
ReadImageCache( false );
}
void ThemeBase::SaveThemeAsCode()
{

View File

@ -44,6 +44,14 @@ enum teResourceFlags
resFlagInternal = 0x08 // For image manipulation. Don't save or load.
};
enum teThemeType
{
themeClassic,
themeDark,
themeLight,
themeFromFile,
};
WX_DECLARE_USER_EXPORTED_OBJARRAY(wxImage, ArrayOfImages, AUDACITY_DLL_API);
WX_DECLARE_USER_EXPORTED_OBJARRAY(wxBitmap, ArrayOfBitmaps, AUDACITY_DLL_API);
WX_DECLARE_USER_EXPORTED_OBJARRAY(wxColour, ArrayOfColours, AUDACITY_DLL_API);
@ -93,19 +101,22 @@ public:
public:
virtual void EnsureInitialised()=0;
virtual void ApplyUpdatedImages()=0;
void LoadThemeAtStartUp( bool bLookForExternalFiles );
void LoadTheme( teThemeType Theme );
void RegisterImage( int &iIndex,char const** pXpm, const wxString & Name);
void RegisterImage( int &iIndex, const wxImage &Image, const wxString & Name );
void RegisterColour( int &iIndex, const wxColour &Clr, const wxString & Name );
teThemeType GetFallbackThemeType();
teThemeType ThemeTypeOfTypeName( const wxString & Name );
void CreateImageCache(bool bBinarySave = true);
bool ReadImageCache( bool bBinaryRead = true, bool bOkIfNotFound=false);
bool ReadImageCache( teThemeType type = themeFromFile, bool bOkIfNotFound=false);
void LoadComponents( bool bOkIfNotFound =false);
void SaveComponents();
void ReadThemeInternal();
void SaveThemeAsCode();
void WriteImageDefs( );
void WriteImageMap( );
static bool LoadPreferredTheme();
wxColour & Colour( int iIndex );
wxBitmap & Bitmap( int iIndex );

View File

@ -133,10 +133,10 @@ void Track::SetOwner(TrackList *list, TrackNodePointer node)
int Track::GetMinimizedHeight() const
{
if (GetLink()) {
return 20;
return 21;
}
return 40;
return 42;
}
int Track::GetIndex() const

View File

@ -192,13 +192,15 @@ class AUDACITY_DLL_API Track /* not final */ : public XMLTagHandler
virtual void SetSelected(bool s);
void SetLinked (bool l);
int GetChannel() const { return mChannel; }
virtual int GetChannel() const { return mChannel;};
virtual double GetOffset() const = 0;
void Offset(double t) { SetOffset(GetOffset() + t); }
virtual void SetOffset (double o) { mOffset = o; }
void SetChannel(int c) { mChannel = c; }
virtual void SetPan( float ){ ;};
virtual void SetPanFromChannelType(){ ;};
// AS: Note that the dirManager is mutable. This is
// mostly to support "Duplicate" of const objects,

View File

@ -371,7 +371,7 @@ BEGIN_EVENT_TABLE(TrackPanel, OverlayPanel)
EVT_MENU_RANGE(On16BitID, OnFloatID, TrackPanel::OnFormatChange)
EVT_MENU(OnRateOtherID, TrackPanel::OnRateOther)
EVT_MENU(OnSwapChannelsID, TrackPanel::OnSwapChannels)
EVT_MENU(OnSplitStereoID, TrackPanel::OnSplitStereo)
EVT_MENU(OnSplitStereoID, TrackPanel::OnSplitStereoMono)
EVT_MENU(OnSplitStereoMonoID, TrackPanel::OnSplitStereoMono)
EVT_MENU(OnMergeStereoID, TrackPanel::OnMergeStereo)
@ -624,13 +624,13 @@ void TrackPanel::BuildMenus(void)
// include both mono and stereo items as a work around for bug 1250
mWaveTrackMenu->AppendRadioItem(OnChannelMonoID, _("&Mono"));
mWaveTrackMenu->AppendRadioItem(OnChannelLeftID, _("&Left Channel"));
mWaveTrackMenu->AppendRadioItem(OnChannelRightID, _("&Right Channel"));
// mWaveTrackMenu->AppendRadioItem(OnChannelMonoID, _("&Mono"));
// mWaveTrackMenu->AppendRadioItem(OnChannelLeftID, _("&Left Channel"));
// mWaveTrackMenu->AppendRadioItem(OnChannelRightID, _("&Right Channel"));
mWaveTrackMenu->Append(OnMergeStereoID, _("Ma&ke Stereo Track"));
mWaveTrackMenu->Append(OnSwapChannelsID, _("Swap Stereo &Channels"));
mWaveTrackMenu->Append(OnSplitStereoID, _("Spl&it Stereo Track"));
mWaveTrackMenu->Append(OnSplitStereoMonoID, _("Split Stereo to Mo&no"));
// mWaveTrackMenu->Append(OnSplitStereoMonoID, _("Split Stereo to Mo&no"));
mWaveTrackMenu->AppendSeparator();
mWaveTrackMenu->Append(0, _("&Format"), (mFormatMenu = formatMenu.release()));
@ -7212,7 +7212,7 @@ void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect & rec,
true);
}
mTrackInfo.DrawBordersWithin( dc, rect, bIsWave );
//mTrackInfo.DrawBordersWithin( dc, rect, bIsWave );
auto wt = bIsWave ? static_cast<WaveTrack*>(t) : nullptr;
if (bIsWave) {
@ -7220,6 +7220,9 @@ void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect & rec,
mTrackInfo.DrawMuteSolo(dc, rect, t, (captured && mMouseCapture == IsSoloing), true, HasSoloButton());
mTrackInfo.DrawSliders(dc, (WaveTrack *)t, rect, captured);
// DA: For classic Audacity, show stero/mono and rate.
#ifndef EXPERIMENTAL_DA
if (!t->GetMinimized()) {
int offset = 8;
@ -7233,6 +7236,7 @@ void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect & rec,
trackRect.x + offset,
trackRect.y + 38);
}
#endif
}
#ifdef USE_MIDI
@ -7702,6 +7706,9 @@ void TrackPanel::OnTrackMenu(Track *t)
theMenu->Enable(OnSwapChannelsID, t->GetLinked() && !unsafe);
theMenu->Enable(OnMergeStereoID, canMakeStereo && !unsafe);
theMenu->Enable(OnSplitStereoID, t->GetLinked() && !unsafe);
// Several menu items no longer needed....
#if 0
theMenu->Enable(OnSplitStereoMonoID, t->GetLinked() && !unsafe);
// We only need to set check marks. Clearing checks causes problems on Linux (bug 851)
@ -7726,6 +7733,7 @@ void TrackPanel::OnTrackMenu(Track *t)
theMenu->Enable(OnChannelMonoID, !t->GetLinked());
theMenu->Enable(OnChannelLeftID, !t->GetLinked());
theMenu->Enable(OnChannelRightID, !t->GetLinked());
#endif
WaveTrack *const track = (WaveTrack *)t;
const int display = track->GetDisplay();
@ -8056,8 +8064,10 @@ void TrackPanel::SplitStereo(bool stereo)
{
wxASSERT(mPopupMenuTarget);
if (!stereo)
if (!stereo){
mPopupMenuTarget->SetPanFromChannelType();
mPopupMenuTarget->SetChannel(Track::MonoChannel);
}
// Assume partner is present, and is wave
auto partner = static_cast<WaveTrack*>(mPopupMenuTarget->GetLink());
@ -8076,8 +8086,10 @@ void TrackPanel::SplitStereo(bool stereo)
if (partner)
{
partner->SetName(mPopupMenuTarget->GetName());
if (!stereo)
if (!stereo){
partner->SetPanFromChannelType();
partner->SetChannel(Track::MonoChannel); // Keep original stereo track name.
}
//On Demand - have each channel add it's own.
if (ODManager::IsInstanceCreated() && partner->GetKind() == Track::Wave)
@ -8122,7 +8134,9 @@ void TrackPanel::OnMergeStereo(wxCommandEvent & WXUNUSED(event))
// Set partner's parameters to match target.
partner->Merge(*mPopupMenuTarget);
mPopupMenuTarget->SetPan( 0.0f );
mPopupMenuTarget->SetChannel(Track::LeftChannel);
partner->SetPan( 0.0f );
partner->SetChannel(Track::RightChannel);
// Set NEW track heights and minimized state
@ -9039,63 +9053,120 @@ int TrackInfo::GetTrackInfoWidth() const
return kTrackInfoWidth;
}
int TrackInfo::CalcItemY( int iItem ) const
{
int y = 1;
if( iItem == kItemBarButtons )
return y;
y+= kTrackInfoBtnSize +2;
if( iItem == kItemStatusInfo )
return y;
#ifdef EXPERIMENTAL_MIDI_OUT
int y1=y;
if( iItem == kItemNoteMute )
return y;
if( iItem == kItemNoteSolo )
return y;
y=y1;
#endif
// DA: Does not have status information for a track.
#ifndef EXPERIMENTAL_DA
y+= 30;
#else
y+= 2;
#endif
if( iItem == kItemMute )
return y;
// DA: Has Mute and Solo on separate lines.
#ifdef EXPERIMENTAL_DA
y+= kTrackInfoBtnSize + 2;
#endif
if( iItem == kItemSolo )
return y;
y+= kTrackInfoBtnSize + 3;
if( iItem == kItemGain )
return y;
y+= 30;
if( iItem == kItemPan )
return y;
y+= 30;
return y;
}
void TrackInfo::GetCloseBoxRect(const wxRect & rect, wxRect & dest) const
{
dest.x = rect.x;
dest.y = rect.y;
dest.x = rect.x+1;
dest.y = rect.y + CalcItemY( kItemBarButtons );
dest.width = kTrackInfoBtnSize;
dest.height = kTrackInfoBtnSize;
}
void TrackInfo::GetTitleBarRect(const wxRect & rect, wxRect & dest) const
{
dest.x = rect.x + kTrackInfoBtnSize; // to right of CloseBoxRect
dest.y = rect.y;
dest.width = kTrackInfoWidth - rect.x - kTrackInfoBtnSize; // to right of CloseBoxRect
dest.x = rect.x + kTrackInfoBtnSize+2; // to right of CloseBoxRect
dest.y = rect.y + CalcItemY( kItemBarButtons );
dest.width = kTrackInfoWidth - rect.x - kTrackInfoBtnSize-1; // to right of CloseBoxRect
dest.height = kTrackInfoBtnSize;
}
void TrackInfo::GetMuteSoloRect(const wxRect & rect, wxRect & dest, bool solo, bool bHasSoloButton, const Track *pTrack) const
{
dest.x = rect.x;
dest.height = kTrackInfoBtnSize +1;
dest.x = rect.x+1;
int MuteSoloType = 0;
#ifdef EXPERIMENTAL_MIDI_OUT
if (pTrack->GetKind() == Track::Note)
dest.y = rect.y + 16;
MuteSoloType = kItemNoteMute - kItemMute;
#endif
int yMute = CalcItemY( kItemMute + MuteSoloType );
int ySolo = CalcItemY( kItemSolo + MuteSoloType );
bool bSameRow = ( yMute == ySolo );
bool bNarrow = bSameRow && bHasSoloButton;
if( bNarrow )
{
dest.width = rect.width / 2-2;
if( solo ){
dest.x+=dest.width;
dest.width-=1;
}
}
else
{
wxASSERT(pTrack->GetKind() == Track::Wave);
dest.y = rect.y + 50;
dest.width = rect.width - 2 * kTrackInfoBtnSize;
dest.x = rect.x + kTrackInfoBtnSize;
}
#else
dest.y = rect.y + 50;
#endif
dest.width = 48;
dest.height = kTrackInfoBtnSize;
if( !bHasSoloButton )
{
dest.width +=48;
}
else if (solo)
{
dest.x += 48;
}
if( bSameRow || !solo )
dest.y = rect.y + yMute;
else
dest.y = rect.y + ySolo;
}
void TrackInfo::GetGainRect(const wxRect & rect, wxRect & dest) const
{
dest.x = rect.x + 7;
dest.y = rect.y + 70;
dest.y = rect.y + CalcItemY( kItemGain );
dest.width = 84;
dest.height = 25;
}
void TrackInfo::GetPanRect(const wxRect & rect, wxRect & dest) const
{
dest.x = rect.x + 7;
dest.y = rect.y + 100;
dest.width = 84;
dest.height = 25;
GetGainRect( rect, dest );
dest.y = rect.y + CalcItemY( kItemPan );
}
#ifdef EXPERIMENTAL_MIDI_OUT
@ -9111,10 +9182,10 @@ void TrackInfo::GetVelocityRect(const wxRect & rect, wxRect & dest) const
void TrackInfo::GetMinimizeRect(const wxRect & rect, wxRect &dest) const
{
const int kBlankWidth = kTrackInfoBtnSize + 4;
dest.x = rect.x + kBlankWidth;
dest.x = rect.x + 4;
dest.y = rect.y + rect.height - 19;
// Width is kTrackInfoWidth less space on left for track select and on right for sync-lock icon.
dest.width = kTrackInfoWidth - (2 * kBlankWidth);
dest.width = kTrackInfoWidth - (1.2 * kBlankWidth);
dest.height = kTrackInfoBtnSize;
}
@ -9218,6 +9289,7 @@ void TrackInfo::DrawCloseBox(wxDC * dc, const wxRect & rect, bool down) const
{
wxRect bev;
GetCloseBoxRect(rect, bev);
AColor::Bevel2(*dc, !down, bev);
#ifdef EXPERIMENTAL_THEMING
wxPen pen( theTheme.Colour( clrTrackPanelText ));
@ -9225,7 +9297,7 @@ void TrackInfo::DrawCloseBox(wxDC * dc, const wxRect & rect, bool down) const
#else
dc->SetPen(*wxBLACK_PEN);
#endif
bev.Inflate( -1, -1 );
// Draw the "X"
const int s = 6;
@ -9239,8 +9311,7 @@ void TrackInfo::DrawCloseBox(wxDC * dc, const wxRect & rect, bool down) const
AColor::Line(*dc, rs, ts, ls, bs);
AColor::Line(*dc, rs + 1, ts, ls + 1, bs);
bev.Inflate(-1, -1);
AColor::BevelTrackInfo(*dc, !down, bev);
// bev.Inflate(-1, -1);
}
void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect & rect, Track * t,
@ -9248,7 +9319,8 @@ void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect & rect, Track * t,
{
wxRect bev;
GetTitleBarRect(rect, bev);
bev.Inflate(-1, -1);
//bev.Inflate(-1, -1);
AColor::Bevel2(*dc, !down, bev);
// Draw title text
SetTrackInfoFont(dc);
@ -9262,14 +9334,6 @@ void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect & rect, Track * t,
dc->GetTextExtent(titleStr, &textWidth, &textHeight);
}
// wxGTK leaves little scraps (antialiasing?) of the
// characters if they are repeatedly drawn. This
// happens when holding down mouse button and moving
// in and out of the title bar. So clear it first.
AColor::MediumTrackInfo(dc, t->GetSelected());
dc->DrawRectangle(bev);
dc->DrawText(titleStr, bev.x + 2, bev.y + (bev.height - textHeight) / 2);
// Pop-up triangle
#ifdef EXPERIMENTAL_THEMING
wxColour c = theTheme.Colour( clrTrackPanelText );
@ -9277,6 +9341,19 @@ void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect & rect, Track * t,
wxColour c = *wxBLACK;
#endif
// wxGTK leaves little scraps (antialiasing?) of the
// characters if they are repeatedly drawn. This
// happens when holding down mouse button and moving
// in and out of the title bar. So clear it first.
// AColor::MediumTrackInfo(dc, t->GetSelected());
// dc->DrawRectangle(bev);
dc->SetTextForeground( c );
dc->SetTextBackground( wxTRANSPARENT );
dc->DrawText(titleStr, bev.x + 2, bev.y + (bev.height - textHeight) / 2);
dc->SetPen(c);
dc->SetBrush(c);
@ -9286,7 +9363,6 @@ void TrackInfo::DrawTitleBar(wxDC * dc, const wxRect & rect, Track * t,
bev.y + ((bev.height - (s / 2)) / 2),
s);
AColor::BevelTrackInfo(*dc, !down, bev);
}
/// Draw the Mute or the Solo button, depending on the value of solo.
@ -9297,13 +9373,14 @@ void TrackInfo::DrawMuteSolo(wxDC * dc, const wxRect & rect, Track * t,
if( solo && !bHasSoloButton )
return;
GetMuteSoloRect(rect, bev, solo, bHasSoloButton, t);
bev.Inflate(-1, -1);
//bev.Inflate(-1, -1);
if (bev.y + bev.height >= rect.y + rect.height - 19)
return; // don't draw mute and solo buttons, because they don't fit into track label
AColor::MediumTrackInfo( dc, t->GetSelected());
auto pt = dynamic_cast<const PlayableTrack *>(t);
#if 0
AColor::MediumTrackInfo( dc, t->GetSelected());
if( solo )
{
if( pt && pt->GetSolo() )
@ -9322,6 +9399,7 @@ void TrackInfo::DrawMuteSolo(wxDC * dc, const wxRect & rect, Track * t,
// AColor::Mute(dc, t->GetMute(), t->GetSelected(), t->GetSolo());
dc->SetPen( *wxTRANSPARENT_PEN );//No border!
dc->DrawRectangle(bev);
#endif
wxCoord textWidth, textHeight;
wxString str = (solo) ?
@ -9330,16 +9408,16 @@ void TrackInfo::DrawMuteSolo(wxDC * dc, const wxRect & rect, Track * t,
/* i18n-hint: This is on a button that will silence all the other tracks.*/
_("Mute");
SetTrackInfoFont(dc);
dc->GetTextExtent(str, &textWidth, &textHeight);
dc->DrawText(str, bev.x + (bev.width - textWidth) / 2, bev.y + (bev.height - textHeight) / 2);
AColor::BevelTrackInfo(
AColor::Bevel2(
*dc,
(solo ? pt->GetSolo() : (pt && pt->GetMute())) == down,
bev
);
SetTrackInfoFont(dc);
dc->GetTextExtent(str, &textWidth, &textHeight);
dc->DrawText(str, bev.x + (bev.width - textWidth) / 2, bev.y + (bev.height - textHeight) / 2);
if (solo && !down) {
// Update the mute button, which may be grayed out depending on
// the state of the solo button.
@ -9357,6 +9435,8 @@ void TrackInfo::DrawMinimize(wxDC * dc, const wxRect & rect, Track * t, bool dow
AColor::MediumTrackInfo(dc, t->GetSelected());
dc->DrawRectangle(bev);
AColor::Bevel2(*dc, !down, bev);
#ifdef EXPERIMENTAL_THEMING
wxColour c = theTheme.Colour(clrTrackPanelText);
dc->SetBrush(c);
@ -9371,20 +9451,21 @@ void TrackInfo::DrawMinimize(wxDC * dc, const wxRect & rect, Track * t, bool dow
10,
t->GetMinimized());
AColor::BevelTrackInfo(*dc, !down, bev);
}
void TrackInfo::DrawSliders(wxDC *dc, WaveTrack *t, wxRect rect, bool captured) const
{
wxRect sliderRect;
// Larger slidermargin means it disappears sooner on collapsing track.
const int sliderMargin = 14;
GetGainRect(rect, sliderRect);
if (sliderRect.y + sliderRect.height < rect.y + rect.height - 19) {
if (sliderRect.y + sliderRect.height < rect.y + rect.height - sliderMargin) {
GainSlider(t, captured)->OnPaint(*dc);
}
GetPanRect(rect, sliderRect);
if (sliderRect.y + sliderRect.height < rect.y + rect.height - 19) {
if (sliderRect.y + sliderRect.height < rect.y + rect.height - sliderMargin) {
PanSlider(t, captured)->OnPaint(*dc);
}
}

View File

@ -76,6 +76,17 @@ enum {
kTimerInterval = 50, // milliseconds
};
enum {
kItemBarButtons = 0,
kItemStatusInfo = 1,
kItemMute = 2,
kItemSolo = 3,
kItemNoteMute = 4,
kItemNoteSolo = 5,
kItemGain = 6,
kItemPan = 7,
};
class AUDACITY_DLL_API TrackInfo
{
public:
@ -83,9 +94,11 @@ public:
~TrackInfo();
private:
int CalcItemY( int iItem ) const;
int GetTrackInfoWidth() const;
void SetTrackInfoFont(wxDC *dc) const;
void DrawBackground(wxDC * dc, const wxRect & rect, bool bSelected, bool bHasMuteSolo, const int labelw, const int vrul) const;
void DrawBordersWithin(wxDC * dc, const wxRect & rect, bool bHasMuteSolo ) const;
void DrawCloseBox(wxDC * dc, const wxRect & rect, bool down) const;
@ -859,7 +872,7 @@ enum : int {
enum : int {
kTrackInfoWidth = 100,
kTrackInfoBtnSize = 16 // widely used dimension, usually height
kTrackInfoBtnSize = 18 // widely used dimension, usually height
};
#ifdef _MSC_VER

View File

@ -90,6 +90,7 @@ bool ZoomInfo::ZoomOutAvailable() const
void ZoomInfo::SetZoom(double pixelsPerSecond)
{
zoom = std::max(gMinZoom, std::min(gMaxZoom, pixelsPerSecond));
// DA: Avoids stuck in snap-to
#ifdef EXPERIMENTAL_DA
// Disable snapping if user zooms in a long way.
// Helps stop users be trapped in snap-to.

View File

@ -199,6 +199,27 @@ void WaveTrack::SetOffset(double o)
mOffset = o;
}
int WaveTrack::GetChannel() const
{
if( mChannel != Track::MonoChannel )
return mChannel;
auto pan = GetPan();
if( pan < -0.99 )
return Track::LeftChannel;
if( pan > 0.99 )
return Track::RightChannel;
return mChannel;
}
void WaveTrack::SetPanFromChannelType()
{
if( mChannel == Track::LeftChannel )
SetPan( -1.0f );
else if( mChannel == Track::RightChannel )
SetPan( 1.0f );
};
//static
WaveTrack::WaveTrackDisplay WaveTrack::FindDefaultViewMode()
{

View File

@ -104,6 +104,9 @@ class AUDACITY_DLL_API WaveTrack final : public PlayableTrack {
virtual ~WaveTrack();
double GetOffset() const override;
void SetOffset(double o) override;
virtual int GetChannel() const override;
virtual void SetPanFromChannelType() override;
/** @brief Get the time at which the first clip in the track starts
*
@ -142,7 +145,7 @@ class AUDACITY_DLL_API WaveTrack final : public PlayableTrack {
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
bool SetPan(float newPan);
#else
void SetPan(float newPan);
void SetPan(float newPan) override;
#endif
// Takes gain and pan into account
float GetChannelGain(int channel) const;

View File

@ -14,6 +14,7 @@
*//*******************************************************************/
#include "../Audacity.h"
#include "../Experimental.h"
#include "DtmfGen.h"
#include <wx/intl.h>
@ -33,12 +34,19 @@ enum
ID_DutyCycle,
};
// DA: DTMF for Audacity uses a different string.
#ifdef EXPERIMENTAL_DA
#define SHORT_APP_NAME "darkaudacity"
#else
#define SHORT_APP_NAME "audacity"
#endif
// Define keys, defaults, minimums, and maximums for the effect parameters
//
// Name Type Key Def Min Max Scale
Param( Sequence, wxString, XO("Sequence"), wxT("audacity"), wxT(""), wxT(""), wxT(""));
Param( DutyCycle, double, XO("Duty Cycle"), 55.0, 0.0, 100.0, 10.0 );
Param( Amplitude, double, XO("Amplitude"), 0.8, 0.001, 1.0, 1 );
// Name Type Key Def Min Max Scale
Param( Sequence, wxString, XO("Sequence"), wxT(SHORT_APP_NAME), wxT(""), wxT(""), wxT(""));
Param( DutyCycle, double, XO("Duty Cycle"), 55.0, 0.0, 100.0, 10.0 );
Param( Amplitude, double, XO("Amplitude"), 0.8, 0.001, 1.0, 1 );
static const double kFadeInOut = 250.0; // used for fadein/out needed to remove clicking noise
@ -269,7 +277,7 @@ bool EffectDtmf::Startup()
// Load the old "current" settings
if (gPrefs->Exists(base))
{
gPrefs->Read(base + wxT("String"), &dtmfSequence, wxT("audacity"));
gPrefs->Read(base + wxT("String"), &dtmfSequence, wxT(SHORT_APP_NAME));
gPrefs->Read(base + wxT("DutyCycle"), &dtmfDutyCycle, 550L);
gPrefs->Read(base + wxT("Amplitude"), &dtmfAmplitude, 0.8f);

View File

@ -624,6 +624,7 @@ void EffectEqualization::PopulateOrExchange(ShuttleGui & S)
int w;
mdBRuler->ruler.GetMaxSize(&w, NULL);
mdBRuler->SetMinSize(wxSize(w, 150)); // height needed for wxGTK
mdBRuler->ruler.SetTickColour( wxColour(0,0,0) );
S.Prop(1);
S.AddSpace(0, 1);
@ -679,6 +680,8 @@ void EffectEqualization::PopulateOrExchange(ShuttleGui & S)
int h;
mFreqRuler->ruler.GetMaxSize(NULL, &h);
mFreqRuler->SetMinSize(wxSize(wxDefaultCoord, h));
mFreqRuler->ruler.SetTickColour( wxColour(0,0,0) );
S.Prop(1);
S.SetBorder(1);

View File

@ -24,6 +24,7 @@
#include "../AudacityApp.h"
#include "../Languages.h"
#include "../Theme.h"
#include "../Prefs.h"
#include "../ShuttleGui.h"
@ -31,6 +32,9 @@
#include "../Experimental.h"
#include "ThemePrefs.h"
#include "../AColor.h"
GUIPrefs::GUIPrefs(wxWindow * parent)
: PrefsPanel(parent, _("Interface"))
{
@ -157,6 +161,23 @@ void GUIPrefs::PopulateOrExchange(ShuttleGui & S)
#endif
}
S.EndStatic();
S.StartStatic(_("Theme"));
{
S.StartRadioButtonGroup(wxT("/GUI/Theme"), wxT("dark"));
{
S.TieRadioButton(_("Classic"),
wxT("classic"));
S.TieRadioButton(_("Dark"),
wxT("dark"));
S.TieRadioButton(_("Light"),
wxT("light"));
S.TieRadioButton(_("Custom"),
wxT("custom"));
}
S.EndRadioButtonGroup();
}
S.EndStatic();
}
bool GUIPrefs::Apply()
@ -172,7 +193,9 @@ bool GUIPrefs::Apply()
gPrefs->Write(wxT("/Locale/Language"), usedLang);
gPrefs->Flush();
}
// Reads preference /GUI/Theme
theTheme.LoadPreferredTheme();
theTheme.ApplyUpdatedImages();
return true;
}

View File

@ -93,13 +93,10 @@ void ThemePrefs::PopulateOrExchange(ShuttleGui & S)
#ifdef __WXDEBUG__
S.AddFixedText(
_("You have compiled Audacity with an extra button, 'Output Sourcery'. This will save a\nC version of the image cache that can be compiled in as a default.")
_("This is a debug version of Audacity, with an extra button, 'Output Sourcery'. This will save a\nC version of the image cache that can be compiled in as a default.")
);
#endif
S.AddFixedText(
_("If 'Load Theme Cache At Startup' is checked, then the Theme Cache will be loaded\nwhen the program starts up.")
);
S.AddFixedText(
_("Saving and loading individual theme files uses a separate file for each image, but is\notherwise the same idea.")
);
@ -125,14 +122,6 @@ void ThemePrefs::PopulateOrExchange(ShuttleGui & S)
S.Id(idReadThemeInternal).AddButton(_("&Defaults"));
}
S.EndHorizontalLay();
S.StartHorizontalLay(wxALIGN_LEFT);
{
S.TieCheckBox(_("Load Theme Cache At Startup"),
wxT("/Theme/LoadAtStart"),
false);
}
S.EndHorizontalLay();
}
S.EndStatic();
@ -172,7 +161,6 @@ void ThemePrefs::OnSaveThemeComponents(wxCommandEvent & WXUNUSED(event))
void ThemePrefs::OnLoadThemeCache(wxCommandEvent & WXUNUSED(event))
{
theTheme.ReadImageCache();
AColor::ReInit();
theTheme.ApplyUpdatedImages();
}
@ -186,7 +174,7 @@ void ThemePrefs::OnSaveThemeCache(wxCommandEvent & WXUNUSED(event))
/// Read Theme from internal storage.
void ThemePrefs::OnReadThemeInternal(wxCommandEvent & WXUNUSED(event))
{
theTheme.ReadThemeInternal();
theTheme.ReadImageCache( theTheme.GetFallbackThemeType() );
theTheme.ApplyUpdatedImages();
}

View File

@ -218,11 +218,14 @@ void ControlToolBar::RegenerateTooltips()
switch (iWinID)
{
case ID_PLAY_BUTTON:
// Without shift
commands.push_back(wxT("Play"));
// With shift
commands.push_back(_("Loop Play"));
commands.push_back(wxT("PlayLooped"));
break;
case ID_RECORD_BUTTON:
// Without shift
commands.push_back(wxT("Record"));
#ifdef PREFER_NEW_TRACKS
commands.push_back(_("Append Record"));
@ -945,7 +948,6 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt)
// If SHIFT key was down, the user wants append to tracks
int recordingChannels = 0;
if (shifted) {
recordingChannels = gPrefs->Read(wxT("/AudioIO/RecordChannels"), 2);
bool sel = false;

View File

@ -148,10 +148,13 @@ void EditToolBar::Populate()
AddSeparator();
#ifdef EXPERIMENTAL_SYNC_LOCK
AddButton(bmpSyncLockTracksUp, bmpSyncLockTracksDown, bmpSyncLockTracksDisabled, ETBSyncLockID,
// DA: No Sync Lock edit button.
#ifndef EXPERIMENTAL_DA
AddButton(bmpSyncLockTracksUp, bmpSyncLockTracksDown, bmpSyncLockTracksUp, ETBSyncLockID,
_("Sync-Lock Tracks"), true);
AddSeparator();
#endif
#endif
AddButton(bmpZoomIn, bmpZoomIn, bmpZoomInDisabled, ETBZoomInID,
@ -172,8 +175,11 @@ void EditToolBar::Populate()
mButtons[ETBPasteID]->SetEnabled(false);
#ifdef EXPERIMENTAL_SYNC_LOCK
// DA: Has no sync Lock Button
#ifndef EXPERIMENTAL_DA
mButtons[ETBSyncLockID]->PushDown();
#endif
#endif
#if defined(EXPERIMENTAL_EFFECTS_RACK)
AddSeparator();
@ -212,7 +218,10 @@ void EditToolBar::RegenerateTooltips()
{ ETBRedoID, wxT("Redo"), XO("Redo") },
#ifdef EXPERIMENTAL_SYNC_LOCK
// DA: No Sync Lock edit button
#ifndef EXPERIMENTAL_DA
{ ETBSyncLockID, wxT("SyncLock"), XO("Sync-Lock Tracks") },
#endif
#endif
{ ETBZoomInID, wxT("ZoomIn"), XO("Zoom In") },
@ -245,7 +254,16 @@ void EditToolBar::OnButton(wxCommandEvent &event)
// due to bugs elsewhere (see: AudacityProject::UpdateMenus() )
// Be sure the pop-up happens even if there are exceptions
auto cleanup = finally( [&] { SetButton(false, mButtons[id]); } );
// Except, Sync Lock button is a toggle...
auto cleanup = finally( [&] {
bool bIsToggle = false;
#ifndef EXPERIMENTAL_DA
bIsToggle = bIsToggle || ( id != ETBSyncLockID );
#endif
if( bIsToggle )
SetButton(false, mButtons[id]);
}
);
switch (id) {
case ETBCutID:
@ -274,9 +292,12 @@ void EditToolBar::OnButton(wxCommandEvent &event)
p->OnRedo();
break;
#ifdef EXPERIMENTAL_SYNC_LOCK
// DA: Has no sync Lock Button
#ifndef EXPERIMENTAL_DA
case ETBSyncLockID:
p->OnSyncLock();
return;//avoiding the call to SetButton()
break;
#endif
#endif
case ETBZoomInID:
p->OnZoomIn();
@ -285,7 +306,7 @@ void EditToolBar::OnButton(wxCommandEvent &event)
p->OnZoomOut();
break;
#if 0 // Disabled for version 1.2.0 since it doesn't work quite right...
#if 0 // Disabled for version 1.2.0 because we have many other zoomers.
case ETBZoomToggleID:
p->OnZoomToggle();
break;
@ -333,6 +354,8 @@ void EditToolBar::EnableDisableButtons()
mButtons[ETBPasteID]->SetEnabled(cm->GetEnabled("Paste"));
#ifdef EXPERIMENTAL_SYNC_LOCK
// DA: Does not have Sync-Lock Button.
#ifndef EXPERIMENTAL_DA
bool bSyncLockTracks;
gPrefs->Read(wxT("/GUI/SyncLockTracks"), &bSyncLockTracks, false);
@ -341,4 +364,5 @@ void EditToolBar::EnableDisableButtons()
else
mButtons[ETBSyncLockID]->PopUp();
#endif
#endif
}

View File

@ -38,7 +38,10 @@ enum {
ETBRedoID,
#ifdef EXPERIMENTAL_SYNC_LOCK
// DA: No Sync Lock edit button
#ifndef EXPERIMENTAL_DA
ETBSyncLockID,
#endif
#endif
ETBZoomInID,

View File

@ -52,6 +52,7 @@ with changes in the SelectionBar.
#include "../Project.h"
#include "../Snap.h"
#include "../widgets/NumericTextCtrl.h"
#include "../AllThemeResources.h"
IMPLEMENT_CLASS(SelectionBar, ToolBar);
@ -136,41 +137,62 @@ void SelectionBar::Populate()
// Top row (mostly labels)
//
mainSizer->Add(safenew wxStaticText(this, -1, _("Project Rate (Hz):"),
wxColour clrText = theTheme.Colour( clrTrackPanelText );
wxColour clrText2 = *wxBLUE;
wxStaticText * pProjRate = safenew wxStaticText(this, -1, _("Project Rate (Hz):"),
// LLL: On my Ubuntu 7.04 install, the label wraps to two lines
// and I could not figure out why. Thus...hackage.
#if defined(__WXGTK__)
wxDefaultPosition, wxSize(110, -1)),
wxDefaultPosition, wxSize(110, -1));
#else
wxDefaultPosition, wxDefaultSize),
wxDefaultPosition, wxDefaultSize);
#endif
0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
pProjRate->SetForegroundColour( clrText );
mainSizer->Add(pProjRate,0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
mainSizer->Add(5, 1);
mainSizer->Add(safenew wxStaticText(this, -1, _("Snap To:")),
0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
wxStaticText * pSnapTo = safenew wxStaticText(this, -1, _("Snap To:"));
pSnapTo->SetForegroundColour( clrText );
mainSizer->Add( pSnapTo, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
mainSizer->Add(safenew wxStaticText(this, -1, _("Selection Start:")),
0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
wxStaticText * pSelStart = safenew wxStaticText(this, -1, _("Selection Start:"));
pSelStart->SetForegroundColour( clrText );
mainSizer->Add( pSelStart,0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
bool showSelectionLength = false;
gPrefs->Read(wxT("/ShowSelectionLength"), &showSelectionLength);
{
// Can't set textcolour of radio buttons.
// so instead we make the text empty and add in two wxStaticTexts
// and we can set the colour of those.
// Slight regression relative ot Audacity in that this text is not
// clickable/active. You have to click on the actual button.
auto hSizer = std::make_unique<wxBoxSizer>(wxHORIZONTAL);
mRightEndButton = safenew wxRadioButton(this, OnEndRadioID, _("End"),
mRightEndButton = safenew wxRadioButton(this, OnEndRadioID, wxT(""),
wxDefaultPosition, wxDefaultSize,
wxRB_GROUP);
mRightEndButton->SetName(_("End"));
mRightEndButton->SetForegroundColour( clrText );
mRightEndButton->SetValue(!showSelectionLength);
hSizer->Add(mRightEndButton,
0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 5);
mRightLengthButton = safenew wxRadioButton(this, OnLengthRadioID, _("Length"));
wxStaticText * pEndText = safenew wxStaticText(this, -1, _("End"));
pEndText->SetForegroundColour( clrText );
hSizer->Add(pEndText,
0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 5);
mRightLengthButton = safenew wxRadioButton(this, OnLengthRadioID, wxT(""));
mRightLengthButton->SetName(_("Length"));
mRightLengthButton->SetForegroundColour( clrText );
mRightLengthButton->SetValue(showSelectionLength);
hSizer->Add(mRightLengthButton,
0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
wxStaticText * pLengthText = safenew wxStaticText(this, -1, _("Length"));
pLengthText->SetForegroundColour( clrText );
hSizer->Add(pLengthText,
0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 5);
#if defined(__WXMSW__)
// Refer to Microsoft KB article 261192 for an explanation as
// to why this is needed. We've only experienced it under Win2k
@ -180,16 +202,17 @@ void SelectionBar::Populate()
safenew wxRadioButton(this, wxID_ANY, _("hidden"),
wxDefaultPosition, wxDefaultSize,
wxRB_GROUP);
dummyButton->SetForegroundColour( clrText );
dummyButton->Disable();
dummyButton->Hide();
#endif
mainSizer->Add(hSizer.release(), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 0);
}
mainSizer->Add(5, 1);
mainSizer->Add(safenew wxStaticText(this, -1, _("Audio Position:")),
0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 0);
wxStaticText * pAudioPos = safenew wxStaticText(this, -1, _("Audio Position:"));
pAudioPos->SetForegroundColour( clrText );
mainSizer->Add(pAudioPos, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 0);
//
// Middle row (mostly time controls)
@ -199,6 +222,7 @@ void SelectionBar::Populate()
wxT(""),
wxDefaultPosition, wxSize(80, -1));
mRateBox->SetName(_("Project Rate (Hz):"));
//mRateBox->SetForegroundColour( clrText2 );
wxTextValidator vld(wxFILTER_INCLUDE_CHAR_LIST);
vld.SetIncludes(wxArrayString(10, numbers));
mRateBox->SetValidator(vld);
@ -246,6 +270,7 @@ void SelectionBar::Populate()
mainSizer->Add(mSnapTo,
0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
mSnapTo->SetName(_("Snap To"));
//mSnapTo->SetForegroundColour( clrText2 );
mSnapTo->SetSelection(mListener ? mListener->AS_GetSnapTo() : SNAP_OFF);
mSnapTo->Connect(wxEVT_SET_FOCUS,
@ -260,6 +285,7 @@ void SelectionBar::Populate()
mLeftTime = safenew NumericTextCtrl(
NumericConverter::TIME, this, OnLeftTimeID, formatName, 0.0, mRate);
mLeftTime->SetName(_("Selection Start:"));
mLeftTime->SetForegroundColour( clrText );
mLeftTime->EnableMenu();
mainSizer->Add(mLeftTime, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
@ -268,6 +294,7 @@ void SelectionBar::Populate()
mRightTime->SetName(wxString(_("Selection ")) + (showSelectionLength ?
_("Length") :
_("End")));
mRightTime->SetForegroundColour( clrText );
mRightTime->EnableMenu();
mainSizer->Add(mRightTime, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
@ -279,6 +306,7 @@ void SelectionBar::Populate()
mAudioTime = safenew NumericTextCtrl(
NumericConverter::TIME, this, wxID_ANY, formatName, 0.0, mRate);
mAudioTime->SetName(_("Audio Position:"));
mAudioTime->SetForegroundColour( clrText );
mAudioTime->EnableMenu();
mainSizer->Add(mAudioTime, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 0);

View File

@ -685,12 +685,17 @@ void ToolBar::MakeMacRecoloredImage(teBmps eBmpOut, teBmps eBmpIn )
void ToolBar::MakeRecoloredImage( teBmps eBmpOut, teBmps eBmpIn )
{
// Don't recolour the buttons...
MakeMacRecoloredImage( eBmpOut, eBmpIn );
return;
wxImage * pSrc = &theTheme.Image( eBmpIn );
#if defined( __WXGTK__ )
wxColour newColour = wxSystemSettings::GetColour( wxSYS_COLOUR_BACKGROUND );
#else
wxColour newColour = wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE );
#endif
newColour = wxColour( 60,60,60 );
wxColour baseColour = wxColour( 204, 204, 204 );
auto pPattern = ChangeImageColour( pSrc, baseColour, newColour );
@ -802,7 +807,11 @@ void ToolBar::SetButtonToolTip
if (!iter->empty()) {
if (commandManager) {
auto keyStr = commandManager->GetKeyFromName(*iter);
if (!keyStr.empty()) {
// For DarkAudacity, only add '(shortcut-info)' if there is
// some, rather than as in that case in Audacity saying
// '(no key)'. More users will be confused by the Audacity
// way than helped by it.
if (!keyStr.empty()){
result += wxT(" ");
result += Internat::Parenthesize(KeyStringDisplay(keyStr, true));
}
@ -851,9 +860,9 @@ void ToolBar::OnPaint( wxPaintEvent & event )
// Under GTK, we specifically set the toolbar background to the background
// colour in the system theme.
#if defined( __WXGTK__ )
dc.SetBackground( wxBrush( wxSystemSettings::GetColour( wxSYS_COLOUR_BACKGROUND ) ) );
//dc.SetBackground( wxBrush( wxSystemSettings::GetColour( wxSYS_COLOUR_BACKGROUND ) ) );
#endif
dc.SetBackground( wxBrush( theTheme.Colour( clrMedium ) ) );
dc.Clear();
// EXPERIMENTAL_THEMING is set to not apply the gradient
@ -861,7 +870,7 @@ void ToolBar::OnPaint( wxPaintEvent & event )
#ifdef USE_AQUA_THEME
Repaint( &dc );
#else
return;
#ifdef EXPERIMENTAL_THEMING
wxImage * mpBackGradient = &theTheme.Image( bmpRecoloredUpLarge );

View File

@ -356,7 +356,7 @@ ToolDock::ToolDock( ToolManager *manager, wxWindow *parent, int dockid ):
// Init
mManager = manager;
memset(mBars, 0, sizeof(mBars)); // otherwise uninitialized
SetBackgroundColour(theTheme.Colour( clrMedium ));
// Use for testing gaps
// SetOwnBackgroundColour( wxColour( 255, 0, 0 ) );
}
@ -872,10 +872,10 @@ void ToolDock::OnPaint( wxPaintEvent & WXUNUSED(event) )
// Start with a clean background
//
// Under GTK, we specifically set the toolbar background to the background
// colour in the system theme.
// Under GTK, we don't set the toolbar background to the background
// colour in the system theme. Instead we use our own colour.
#if defined( __WXGTK__ )
dc.SetBackground( wxBrush( wxSystemSettings::GetColour( wxSYS_COLOUR_BACKGROUND ) ) );
dc.SetBackground( wxBrush( theTheme.Colour( clrMedium )));
#endif
dc.Clear();

View File

@ -186,7 +186,8 @@ void ToolFrame::OnPaint( wxPaintEvent & WXUNUSED(event) )
dc.SetPen( wxColour( 90, 90, 90 ) );
#if !defined(__WXMAC__)
dc.SetBackground(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)));
wxBrush clearer( wxColour( 60,60,60 ));
dc.SetBackground( clearer );
dc.Clear();
dc.SetBrush( *wxTRANSPARENT_BRUSH );
dc.DrawRectangle( 0, 0, sz.GetWidth(), sz.GetHeight() );
@ -490,7 +491,13 @@ static struct DefaultConfigEntry {
{ PlayMeterBarID, RecordMeterBarID, NoBarID },
{ MixerBarID, PlayMeterBarID, NoBarID },
{ EditBarID, MixerBarID, NoBarID },
// DA: Transcription Toolbar not docked, by default.
#ifdef EXPERIMENTAL_DA
{ TranscriptionBarID, NoBarID, NoBarID },
#else
{ TranscriptionBarID, EditBarID, NoBarID },
#endif
// start another top dock row
{ ScrubbingBarID, NoBarID, TransportBarID },
@ -564,6 +571,12 @@ void ToolManager::Reset()
|| ndx == SpectralSelectionBarID
#endif
|| ndx == ScrubbingBarID
// DA: Hides three more toolbars.
#ifdef EXPERIMENTAL_DA
|| ndx == DeviceBarID
|| ndx == TranscriptionBarID
|| ndx == SelectionBarID
#endif
)
{
expose = false;
@ -1269,9 +1282,11 @@ void ToolManager::OnTimer( wxTimerEvent & event )
//
void ToolManager::OnIndicatorPaint( wxPaintEvent & event )
{
// TODO: Better to use a bitmap than a triangular region.
wxWindow *w = (wxWindow *)event.GetEventObject();
wxPaintDC dc( w );
dc.SetBackground( *wxBLUE_BRUSH );
wxBrush brush( theTheme.Colour( clrTrackPanelText ) );
dc.SetBackground( brush );
dc.Clear();
}

View File

@ -78,6 +78,10 @@ const int sliderFontSize = 10;
const int sliderFontSize = 12;
#endif
#ifndef EXPERIMENTAL_DA
#define OPTIONAL_SLIDER_TICKS
#endif
//
// TipPanel
//
@ -568,8 +572,8 @@ void LWSlider::AdjustSize(const wxSize & sz)
if( mBitmap ){
mBitmap.reset();
}
mThumbWidth = 14;
mThumbHeight = 14;
mThumbWidth = 11;
mThumbHeight = 20;
if (mOrientation == wxHORIZONTAL)
{
@ -649,6 +653,9 @@ void LWSlider::Draw(wxDC & paintDC)
// Set up the memory DC
wxMemoryDC dc;
mThumbBitmap = std::make_unique<wxBitmap>(wxBitmap( theTheme.Bitmap( bmpSliderThumb )));
#ifdef OPTIONAL_SLIDER_TICKS
// Create the bitmap
mThumbBitmap = std::make_unique<wxBitmap>();
mThumbBitmap->Create(mThumbWidth, mThumbHeight, paintDC);
@ -711,6 +718,7 @@ void LWSlider::Draw(wxDC & paintDC)
mThumbBitmap->SetMask(safenew wxMask(*mThumbBitmap, transparentColour));
#endif
#endif
//
// Now the background bitmap
//
@ -734,17 +742,21 @@ void LWSlider::Draw(wxDC & paintDC)
#endif
// Draw the line along which the thumb moves.
AColor::Dark(&dc, false);
//AColor::Light(&dc, false);
AColor::UseThemeColour( &dc, clrTrackPanelText );
if (mOrientation == wxHORIZONTAL)
{
AColor::Line(dc, mLeftX, mCenterY, mRightX+2, mCenterY);
AColor::Line(dc, mLeftX, mCenterY+1, mRightX+2, mCenterY+1);
}
else //v if (mStyle != DB_SLIDER) // Let the ruler do it for vertical DB_SLIDER.
{
AColor::Line(dc, mCenterX, mTopY, mCenterX, mBottomY+2);
AColor::Line(dc, mCenterX+1, mTopY, mCenterX+1, mBottomY+2);
}
// Draw +/- or L/R first. We need to draw these before the tick marks.
if (mStyle == PAN_SLIDER)
{
@ -850,6 +862,7 @@ void LWSlider::Draw(wxDC & paintDC)
divs = mMaxValue - mMinValue + 1;
upp = divs / (double)(mHeightY-1);
}
#ifdef OPTIONAL_SLIDER_TICKS
double d = 0.0;
int int_d = -1;
const int kMax = (mOrientation == wxHORIZONTAL) ? mWidthX : mHeightY;
@ -868,7 +881,7 @@ void LWSlider::Draw(wxDC & paintDC)
{
AColor::Line(dc, mCenterX-tickLength, mTopY+p, mCenterX-1, mTopY+p); // ticks at left
}
#if 0
AColor::Dark(&dc, false);
if (mOrientation == wxHORIZONTAL)
@ -879,9 +892,11 @@ void LWSlider::Draw(wxDC & paintDC)
{
AColor::Line(dc, mCenterX-tickLength+1, mTopY+p+1, mCenterX-1, mTopY+p+1); // ticks at left
}
#endif
}
d += upp;
}
#endif
}
dc.SelectObject(wxNullBitmap);
@ -1555,6 +1570,9 @@ ASlider::ASlider( wxWindow * parent,
int orientation /*= wxHORIZONTAL*/)
: wxPanel( parent, id, pos, size, wxWANTS_CHARS )
{
//wxColour Col(parent->GetBackgroundColour());
//SetBackgroundColour( Col );
SetBackgroundColour( theTheme.Colour( clrMedium ) );
mLWSlider = std::make_unique<LWSlider>( this,
name,
wxPoint(0,0),

View File

@ -147,10 +147,10 @@ ExpandingToolBar::ExpandingToolBar(wxWindow* parent,
mGrabber = safenew ToolBarGrabber(this, -1, this);
/// \todo check whether this is a memory leak (and check similar code)
wxImage hbar = theTheme.Image(bmpToolBarToggle);
wxColour magicColor = wxColour(0, 255, 255);
ImageArray fourStates = ImageRoll::SplitV(hbar, magicColor);
//wxImage hbar = theTheme.Image(bmpToolBarToggle);
//wxColour magicColor = wxColour(0, 255, 255);
//ImageArray fourStates = ImageRoll::SplitV(hbar, magicColor);
/*
mToggleButton = safenew AButton(this, kToggleButtonID,
wxDefaultPosition, wxDefaultSize,
ImageRoll(ImageRoll::HorizontalRoll,
@ -163,7 +163,7 @@ ExpandingToolBar::ExpandingToolBar(wxWindow* parent,
fourStates[3], magicColor),
true);
mToggleButton->UseDisabledAsDownHiliteImage(true);
*/
SetAutoLayout(true);
mTimer.SetOwner(this, kTimerID);
}
@ -542,11 +542,11 @@ void ExpandingToolBar::StartMoving()
mDropTarget = kDummyRect;
wxColour magicColor = wxColour(0, 255, 255);
wxImage tgtImage = theTheme.Image(bmpToolBarTarget);
ImageRoll tgtImageRoll = ImageRoll(ImageRoll::VerticalRoll,
tgtImage,
magicColor);
mTargetPanel = safenew ImageRollPanel(mAreaParent, -1, tgtImageRoll,
// wxImage tgtImage = theTheme.Image(bmpToolBarTarget);
// ImageRoll tgtImageRoll = ImageRoll(ImageRoll::VerticalRoll,
// tgtImage,
// magicColor);
mTargetPanel = safenew ImageRollPanel(mAreaParent, -1, //tgtImageRoll,
wxDefaultPosition,
wxDefaultSize,
wxTRANSPARENT_WINDOW);
@ -672,6 +672,7 @@ ToolBarGrabber::ToolBarGrabber(wxWindow *parent,
wxPanelWrapper(parent, id, pos, size),
mOwnerToolBar(ownerToolbar)
{
#if 0
wxImage grabberImages = theTheme.Image(bmpToolBarGrabber);
wxColour magicColor = wxColour(0, 255, 255);
ImageArray images = ImageRoll::SplitH(grabberImages, magicColor);
@ -685,7 +686,7 @@ ToolBarGrabber::ToolBarGrabber(wxWindow *parent,
SetSizeHints(mImageRoll[0].GetMinSize(),
mImageRoll[1].GetMaxSize());
#endif
mState = 0;
}
@ -720,7 +721,7 @@ void ToolBarGrabber::OnPaint(wxPaintEvent & WXUNUSED(event))
{
wxPaintDC dc(this);
mImageRoll[mState].Draw(dc, GetClientRect());
// mImageRoll[mState].Draw(dc, GetClientRect());
}
void ToolBarGrabber::OnSize(wxSizeEvent & WXUNUSED(event))

View File

@ -144,7 +144,7 @@ class ToolBarGrabber final : public wxPanelWrapper
protected:
int mState;
ImageRoll mImageRoll[2];
//ImageRoll mImageRoll[2];
ExpandingToolBar *mOwnerToolBar;
DECLARE_EVENT_TABLE()

View File

@ -32,6 +32,7 @@ around to NEW positions.
#include "../Experimental.h"
#include "../AColor.h"
#include "../AllThemeResources.h"
////////////////////////////////////////////////////////////
/// Methods for Grabber
@ -60,6 +61,7 @@ Grabber::Grabber(wxWindow * parent, wxWindowID id)
mOver = false;
mPressed = false;
mAsSpacer = false;
SetBackgroundColour( theTheme.Colour( clrMedium ) );
/* i18n-hint: A 'Grabber' is a region you can click and drag on
It's used to drag a track around (when in multi-tool mode) rather
@ -117,8 +119,6 @@ void Grabber::DrawGrabber( wxDC & dc )
r.SetPosition( wxPoint(0,0) );
int y, left, right, top, bottom;
#ifndef EXPERIMENTAL_THEMING
AColor::Medium(&dc, mOver );
dc.DrawRectangle(r);
@ -126,24 +126,6 @@ void Grabber::DrawGrabber( wxDC & dc )
if( mAsSpacer )
r.width -= 1;
#else
// Paint the background
if( mOver )
{
AColor::Medium(&dc, mOver );
dc.DrawRectangle(r);
}
else
{
// Get colour from parent...
// when parent colour changes, child colour might not!
wxBrush brush( GetParent()->GetBackgroundColour() );
dc.SetBrush( brush );
dc.DrawRectangle(r);
}
#endif
#ifndef __WXMAC__
// Add a box

View File

@ -302,9 +302,16 @@ void HelpSystem::ShowHelpDialog(wxWindow *parent,
}
else if (releasePageName == wxT("Quick_Help"))
{
// DA: No bundled help, by default, and different quick-help URL.
#ifdef EXPERIMENTAL_DA
releasePageName = wxT("video") + HelpSystem::ReleaseSuffix + anchor;
localHelpPage = wxFileName(FileNames::HtmlHelpDir(), releasePageName).GetFullPath();
webHelpPath = wxT("http://www.darkaudacity.com/");
#else
releasePageName = wxT("quick_help") + HelpSystem::ReleaseSuffix + anchor;
localHelpPage = wxFileName(FileNames::HtmlHelpDir(), releasePageName).GetFullPath();
webHelpPath = wxT("http://")+HelpSystem::HelpHostname+HelpSystem::HelpServerHomeDir;
#endif
}
else
{

View File

@ -424,16 +424,16 @@ IMPLEMENT_CLASS(ImageRollPanel, wxPanelWrapper)
ImageRollPanel::ImageRollPanel(wxWindow *parent,
wxWindowID id,
ImageRoll &imgRoll,
//ImageRoll &imgRoll,
const wxPoint& pos,
const wxSize& size,
long style):
wxPanelWrapper(parent, id, pos, size, style),
mImageRoll(imgRoll),
//mImageRoll(imgRoll),
mLogicalFunction(wxCOPY)
{
SetSizeHints(mImageRoll.GetMinSize(),
mImageRoll.GetMaxSize());
// SetSizeHints(mImageRoll.GetMinSize(),
// mImageRoll.GetMaxSize());
}
void ImageRollPanel::SetLogicalFunction(wxRasterOperationMode func)
@ -445,7 +445,7 @@ void ImageRollPanel::OnPaint(wxPaintEvent & WXUNUSED(event))
{
wxPaintDC dc(this);
mImageRoll.Draw(dc, GetClientRect(), mLogicalFunction);
// mImageRoll.Draw(dc, GetClientRect(), mLogicalFunction);
}
void ImageRollPanel::OnSize(wxSizeEvent & WXUNUSED(event))

View File

@ -74,7 +74,7 @@ class ImageRollPanel final : public wxPanelWrapper
ImageRollPanel(wxWindow *parent,
wxWindowID id,
ImageRoll &imgRoll,
//ImageRoll &imgRoll,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL);
@ -85,7 +85,7 @@ class ImageRollPanel final : public wxPanelWrapper
void OnSize(wxSizeEvent &evt);
protected:
ImageRoll mImageRoll;
//ImageRoll mImageRoll;
wxRasterOperationMode mLogicalFunction;

View File

@ -256,11 +256,11 @@ Meter::Meter(AudacityProject *project,
mRuler.SetFonts(GetFont(), GetFont(), GetFont());
mRuler.SetFlip(mStyle != MixerTrackCluster);
mRuler.SetLabelEdges(true);
//mRuler.SetTickColour( wxColour( 0,0,255 ) );
UpdatePrefs();
wxColour backgroundColour =
wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
wxColour backgroundColour = theTheme.Colour( clrMedium);
mBkgndBrush = wxBrush(backgroundColour, wxSOLID);
mPeakPeakPen = wxPen(theTheme.Colour( clrMeterPeak), 1, wxSOLID);
@ -428,6 +428,8 @@ void Meter::OnPaint(wxPaintEvent & WXUNUSED(event))
std::unique_ptr<wxDC> paintDC{ wxAutoBufferedPaintDCFactory(this) };
#endif
wxDC & destDC = *paintDC;
wxColour clrText = theTheme.Colour( clrTrackPanelText );
wxColour clrBoxFill = theTheme.Colour( clrMedium );
if (mLayoutValid == false)
{
@ -444,10 +446,10 @@ void Meter::OnPaint(wxPaintEvent & WXUNUSED(event))
// LLL: Should research USE_AQUA_THEME usefulness...
#ifndef USE_AQUA_THEME
#ifdef EXPERIMENTAL_THEMING
if( !mMeterDisabled )
{
mBkgndBrush.SetColour( GetParent()->GetBackgroundColour() );
}
//if( !mMeterDisabled )
//{
// mBkgndBrush.SetColour( GetParent()->GetBackgroundColour() );
//}
#endif
dc.SetPen(*wxTRANSPARENT_PEN);
@ -469,6 +471,7 @@ void Meter::OnPaint(wxPaintEvent & WXUNUSED(event))
}
dc.DrawBitmap(*mIcon, mIconRect.GetPosition(), true);
dc.SetFont(GetFont());
dc.SetTextForeground( clrText );
dc.DrawText(mLeftText, mLeftTextPos.x, mLeftTextPos.y);
dc.DrawText(mRightText, mRightTextPos.x, mRightTextPos.y);
}
@ -569,9 +572,10 @@ void Meter::OnPaint(wxPaintEvent & WXUNUSED(event))
#endif
}
}
mRuler.SetTickColour( clrText );
dc.SetTextForeground( clrText );
// Draw the ruler
mRuler.Draw(dc);
//mRuler.Draw(dc);
// Bitmap created...unselect
dc.SelectObject(wxNullBitmap);
@ -586,11 +590,16 @@ void Meter::OnPaint(wxPaintEvent & WXUNUSED(event))
DrawMeterBar(destDC, &mBar[i]);
}
destDC.SetTextForeground( clrText );
#if 0
// We can have numbers over the bars, in which case we have to draw them each time.
if (mStyle == HorizontalStereoCompact || mStyle == VerticalStereoCompact)
{
mRuler.SetTickColour( clrText );
mRuler.Draw(destDC);
}
#endif
// Let the user know they can click to start monitoring
if( mIsInput && !mActive )
@ -619,11 +628,12 @@ void Meter::OnPaint(wxPaintEvent & WXUNUSED(event))
Siz.GetHeight(),
Siz.GetWidth() );
destDC.SetBrush( *wxWHITE_BRUSH );
destDC.SetPen( *wxGREY_PEN );
destDC.SetBrush( wxBrush( clrBoxFill ) );
destDC.SetPen( *wxWHITE_PEN );
destDC.DrawRectangle( r );
destDC.SetBackgroundMode( wxTRANSPARENT );
r.SetTop( r.GetBottom() + (gap / 2) );
destDC.SetTextForeground( clrText );
destDC.DrawRotatedText( Text, r.GetPosition(), 90 );
break;
}
@ -637,12 +647,13 @@ void Meter::OnPaint(wxPaintEvent & WXUNUSED(event))
Siz.GetWidth(),
Siz.GetHeight() );
destDC.SetBrush( *wxWHITE_BRUSH );
destDC.SetPen( *wxGREY_PEN );
destDC.SetBrush( wxBrush( clrBoxFill ) );
destDC.SetPen( *wxWHITE_PEN );
destDC.DrawRectangle( r );
destDC.SetBackgroundMode( wxTRANSPARENT );
r.SetLeft( r.GetLeft() + (gap / 2) );
r.SetTop( r.GetTop() + (gap / 2));
destDC.SetTextForeground( clrText );
destDC.DrawText( Text, r.GetPosition() );
break;
}

View File

@ -1278,6 +1278,7 @@ void Ruler::Draw(wxDC& dc, const TimeTrack* timetrack)
if (!mValid)
Update(timetrack);
mDC->SetTextForeground( mTickColour );
#ifdef EXPERIMENTAL_THEMING
mDC->SetPen(mPen);
#else
@ -1983,7 +1984,12 @@ namespace {
bool ReadScrubEnabledPref()
{
bool result {};
// DA: Scrub is disabled by default.
#ifdef EXPERIMENTAL_DA
gPrefs->Read(scrubEnabledPrefName, &result, false);
#else
gPrefs->Read(scrubEnabledPrefName, &result, true);
#endif
return result;
}
@ -2058,11 +2064,12 @@ void AdornedRulerPanel::ReCreateButtons()
mButtons[iButton++] = button;
return button;
};
auto button = buttonMaker(OnTogglePinnedStateID, bmpPinnedPlayHead, true);
auto button = buttonMaker(OnTogglePinnedStateID, bmpPlayPointerPinned, true);
ToolBar::MakeAlternateImages(
*button, 1,
bmpRecoloredUpSmall, bmpRecoloredDownSmall, bmpRecoloredHiliteSmall,
bmpUnpinnedPlayHead, bmpUnpinnedPlayHead, bmpUnpinnedPlayHead,
//bmpUnpinnedPlayHead, bmpUnpinnedPlayHead, bmpUnpinnedPlayHead,
bmpPlayPointer, bmpPlayPointer, bmpPlayPointer,
size);
UpdateButtonStates();
@ -3214,12 +3221,6 @@ void AdornedRulerPanel::DoDrawIndicator
dc->DrawPolygon( 3, tri );
}
else {
// synonyms... (makes compatibility with DarkAudacity easier).
#define bmpPlayPointerPinned bmpPinnedPlayHead
#define bmpPlayPointer bmpUnpinnedPlayHead
#define bmpRecordPointerPinned bmpPinnedRecordHead
#define bmpRecordPointer bmpUnpinnedRecordHead
bool pinned = TracksPrefs::GetPinnedHeadPreference();
wxBitmap & bmp = theTheme.Bitmap( pinned ?
(playing ? bmpPlayPointerPinned : bmpRecordPointerPinned) :

View File

@ -1,6 +1,14 @@
AudacityLogo ICON "audacity.ico"
#include "wx/msw/wx.rc"
#define IN_RC
#include "Audacity.h"
#include "Experimental.h"
#ifdef EXPERIMENTAL_DA
AudacityLogo ICON "darkaudacity.ico"
#else
AudacityLogo ICON "audacity.ico"
#endif
#include "wx/msw/wx.rc"
/////////////////////////////////////////////////////////////////////////////
//
// Version
@ -22,15 +30,27 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "The Audacity Team"
VALUE "FileDescription", "Audacity®, the Free, Cross-Platform Sound Editor"
#ifdef EXPERIMENTAL_DA
VALUE "CompanyName", "Extended Audacity Team"
VALUE "FileDescription", "A customised Audacity® Cross-Platform Sound Editor"
VALUE "FileVersion", AUDACITY_FILE_VERSION
VALUE "InternalName", "DarkAudacity"
VALUE "LegalCopyright", "Copyright © 2017. All rights reserved."
VALUE "LegalTrademarks", "Audacity® is a registered trademark of Dominic Mazzoni."
VALUE "OriginalFilename", "DarkAudacity.exe"
VALUE "ProductName", "DarkAudacity"
VALUE "ProductVersion", AUDACITY_FILE_VERSION
#else
VALUE "CompanyName", "Audacity Team"
VALUE "FileDescription", "Audacity® Cross-Platform Sound Editor"
VALUE "FileVersion", AUDACITY_FILE_VERSION
VALUE "InternalName", "Audacity"
VALUE "LegalCopyright", "Copyright © 2017. All rights reserved."
VALUE "LegalTrademarks", "Audacity® is a registered trademark of Dominic Mazzoni."
VALUE "OriginalFilename", "Audacity.exe"
VALUE "ProductName", "Audacity®"
VALUE "ProductName", "Audacity"
VALUE "ProductVersion", AUDACITY_FILE_VERSION
#endif
END
END
BLOCK "VarFileInfo"

BIN
win/darkaudacity.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB