Merge branch 'dev' into metadata-exiv2
This commit is contained in:
commit
7eb7fb210f
|
@ -1,4 +1,6 @@
|
|||
#01 2009-10-10 JMG
|
||||
#001 2009-10-10 JMG
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Català
|
||||
|
||||
ABOUT_TAB_BUILD;Versió
|
||||
ABOUT_TAB_CREDITS;Crèdits
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
#00 Chinese (Simplified)
|
||||
#01 2008-02-13 Forrest Sun
|
||||
#02 2008-11-06 Yang Gao (grantyale)
|
||||
#03 2013-10-20 Jiero
|
||||
#04 2014-10-24 Jie Luo
|
||||
#05 2017-09-18 Chongnuo Ji
|
||||
#06 2020-08-11 十一元人民币
|
||||
#07 2021-09-24 十一元人民币
|
||||
#08 2022-07-26 十一元人民币
|
||||
#000 Chinese (Simplified)
|
||||
#001 2008-02-13 Forrest Sun
|
||||
#002 2008-11-06 Yang Gao (grantyale)
|
||||
#003 2013-10-20 Jiero
|
||||
#004 2014-10-24 Jie Luo
|
||||
#005 2017-09-18 Chongnuo Ji
|
||||
#006 2020-08-11 十一元人民币
|
||||
#007 2021-09-24 十一元人民币
|
||||
#008 2022-07-26 十一元人民币
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=简体中文
|
||||
|
||||
ABOUT_TAB_BUILD;版本
|
||||
ABOUT_TAB_CREDITS;致谢名单
|
||||
|
|
|
@ -1,51 +1,53 @@
|
|||
#00 Czech
|
||||
#01 2008-01-20 translated by absolution
|
||||
#02 2008-02-21 updated by mkyral (typos and some missing strings)
|
||||
#03 2008-04-24 updated by mkyral (for version 2.4m1)
|
||||
#04 2008-10-28 updated by mkyral (for version 2.4 beta1)
|
||||
#05 2010-11-25 updated by mkyral (for version 3.0)
|
||||
#06 2011-03-06 updated by mkyral (default branch)
|
||||
#07 2011-03-20 updated by mkyral (default branch)
|
||||
#08 2011-05-01 updated by mkyral
|
||||
#09 2011-05-18 updated by mkyral
|
||||
#10 2011-06-04 updated by mkyral
|
||||
#11 2011-06-12 updated by mkyral
|
||||
#12 2011-06-16 updated by mkyral
|
||||
#13 2011-07-03 updated by mkyral
|
||||
#14 2011-07-08 updated by mkyral
|
||||
#15 2011-09-04 updated by mkyral
|
||||
#16 2011-09-06 updated by mkyral
|
||||
#17 2011-11-12 updated by mkyral
|
||||
#18 2011-12-29 updated by mkyral
|
||||
#19 2012-02-22 updated by mkyral
|
||||
#20 2012-04-28 updated by mkyral
|
||||
#21 2012-10-10 updated by mkyral
|
||||
#22 2012-11-27 updated by mkyral
|
||||
#23 2013-03-12 updated by mkyral
|
||||
#24 2013-04-12 updated by mkyral
|
||||
#25 2013-09-12 updated by mkyral
|
||||
#26 2013-09-17 updated by mkyral
|
||||
#27 2013-12-09 updated by mkyral
|
||||
#28 2014-01-07 updated by mkyral
|
||||
#29 2014-04-08 updated by mkyral
|
||||
#30 2014-04-30 updated by mkyral
|
||||
#31 2014-05-12 updated by mkyral
|
||||
#32 2014-10-24 updated by mkyral
|
||||
#33 2015-02-22 updated by mkyral
|
||||
#34 2015-07-09 updated by mkyral
|
||||
#35 2015-11-24 updated by mkyral
|
||||
#36 2016-10-18 updated by mkyral
|
||||
#37 2017-01-10 updated by mkyral
|
||||
#38 2017-04-26 updated by mkyral
|
||||
#39 2017-07-21 updated by mkyral
|
||||
#40 2017-12-13 updated by mkyral
|
||||
#41 2018-03-03 updated by mkyral
|
||||
#42 2018-10-24 updated by mkyral
|
||||
#43 2018-12-04 updated by mkyral
|
||||
#44 2018-12-13 updated by mkyral
|
||||
#45 2020-04-20 updated by mkyral
|
||||
#46 2020-04-21 updated by mkyral
|
||||
#47 2020-06-02 updated by mkyral
|
||||
#000 Czech
|
||||
#001 2008-01-20 translated by absolution
|
||||
#002 2008-02-21 updated by mkyral (typos and some missing strings)
|
||||
#003 2008-04-24 updated by mkyral (for version 2.4m1)
|
||||
#004 2008-10-28 updated by mkyral (for version 2.4 beta1)
|
||||
#005 2010-11-25 updated by mkyral (for version 3.0)
|
||||
#006 2011-03-06 updated by mkyral (default branch)
|
||||
#007 2011-03-20 updated by mkyral (default branch)
|
||||
#008 2011-05-01 updated by mkyral
|
||||
#009 2011-05-18 updated by mkyral
|
||||
#010 2011-06-04 updated by mkyral
|
||||
#011 2011-06-12 updated by mkyral
|
||||
#012 2011-06-16 updated by mkyral
|
||||
#013 2011-07-03 updated by mkyral
|
||||
#014 2011-07-08 updated by mkyral
|
||||
#015 2011-09-04 updated by mkyral
|
||||
#016 2011-09-06 updated by mkyral
|
||||
#017 2011-11-12 updated by mkyral
|
||||
#018 2011-12-29 updated by mkyral
|
||||
#019 2012-02-22 updated by mkyral
|
||||
#020 2012-04-28 updated by mkyral
|
||||
#021 2012-10-10 updated by mkyral
|
||||
#022 2012-11-27 updated by mkyral
|
||||
#023 2013-03-12 updated by mkyral
|
||||
#024 2013-04-12 updated by mkyral
|
||||
#025 2013-09-12 updated by mkyral
|
||||
#026 2013-09-17 updated by mkyral
|
||||
#027 2013-12-09 updated by mkyral
|
||||
#028 2014-01-07 updated by mkyral
|
||||
#029 2014-04-08 updated by mkyral
|
||||
#030 2014-04-30 updated by mkyral
|
||||
#031 2014-05-12 updated by mkyral
|
||||
#032 2014-10-24 updated by mkyral
|
||||
#033 2015-02-22 updated by mkyral
|
||||
#034 2015-07-09 updated by mkyral
|
||||
#035 2015-11-24 updated by mkyral
|
||||
#036 2016-10-18 updated by mkyral
|
||||
#037 2017-01-10 updated by mkyral
|
||||
#038 2017-04-26 updated by mkyral
|
||||
#039 2017-07-21 updated by mkyral
|
||||
#040 2017-12-13 updated by mkyral
|
||||
#041 2018-03-03 updated by mkyral
|
||||
#042 2018-10-24 updated by mkyral
|
||||
#043 2018-12-04 updated by mkyral
|
||||
#044 2018-12-13 updated by mkyral
|
||||
#045 2020-04-20 updated by mkyral
|
||||
#046 2020-04-21 updated by mkyral
|
||||
#047 2020-06-02 updated by mkyral
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Čeština
|
||||
|
||||
ABOUT_TAB_BUILD;Verze
|
||||
ABOUT_TAB_CREDITS;Zásluhy
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
#01 2022-04-21 mogensjaeger (github), initial danish translation
|
||||
#001 2022-04-21 mogensjaeger (github), initial danish translation
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Dansk
|
||||
|
||||
ABOUT_TAB_BUILD;Version
|
||||
ABOUT_TAB_CREDITS;Credits
|
||||
|
|
|
@ -1,90 +1,92 @@
|
|||
#01 keenonkites; Aktualisierte Version für 2.3 beta2
|
||||
#02 phberlin; basiert auf keenonkites' Erstübersetzung
|
||||
#03 2007-12-20
|
||||
#04 2007-12-22
|
||||
#05 2008-01-08
|
||||
#06 2008-01-15
|
||||
#07 2008-02-20
|
||||
#08 2008-12-19 keenonkites, Anpassungen für 2.4beta4
|
||||
#09 2008-09-20 keenonkites, Anpassungen für 2.4m2
|
||||
#10 2008-04-04 Anpassungen für 2.4
|
||||
#11 Leichte Anpassungen (keenonkites/klonk)
|
||||
#12 Erweiterung (oduis)
|
||||
#13 Erweiterung (oduis)
|
||||
#14 Erweiterung (oduis)
|
||||
#15 Erweiterung (oduis)
|
||||
#16 2012-12-05 3.0 alpha: Erweiterung und Korrekturen (Metex)
|
||||
#17 2012-04-29 Erweiterungen und Korrekturen (MaWe)
|
||||
#18 Erweiterung (oduis)
|
||||
#19 Erweiterung (oduis)
|
||||
#20 2013-02-27 Erweiterung (cytrinox)
|
||||
#21 2013-12-31 Erweiterung (Ingo)
|
||||
#22 2015-09-04 komplette Überarbeitung (TooWaBoo)
|
||||
#23 2015-10-24 Retinexübersetzung und Korrekturen (TooWaBoo)
|
||||
#24 2015-11-01 Korrekturen (TooWaBoo) RT4.2.450
|
||||
#25 2015-11-30 Korrekturen (TooWaBoo) RT4.2.507
|
||||
#26 2015-12-13 Korrekturen (TooWaBoo) RT4.2.514
|
||||
#26 2015-12-22 Korrekturen (TooWaBoo) RT4.2.536
|
||||
#27 2016-02-12 Retinexübersetzung (TooWaBoo) RT4.2.730
|
||||
#28 2016-03-19 Erweiterung/Korrekturen (TooWaBoo) RT4.2.880
|
||||
#29 2016-05-24 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1005
|
||||
#30 2016-09-30 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1234
|
||||
#31 2016-12-01 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1408
|
||||
#32 2016-12-29 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1464
|
||||
#33 2017-01-04 Erweiterung/Korrekturen/Soft-Proofing (TooWaBoo) RT4.2.1477
|
||||
#34 2017-01-07 IPTC (TooWaBoo) RT4.2.1492
|
||||
#35 2017-02-18 AWB bias (TooWaBoo) RT 5.0 r1
|
||||
#36 2017-02-23 Korrekturen (TooWaBoo) RT 5.0 r1
|
||||
#37 2017-03-06 Dynamisches Profil (TooWaBoo) RT 5.0 r1
|
||||
#38 2017-03-26 Pixel-Shift (TooWaBoo) RT 5.0 r1
|
||||
#39 06.04.2017 Fast Export (TooWaBoo) RT 5.0 r1
|
||||
#40 30.04.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
|
||||
#41 03.05.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
|
||||
#42 13.05.2017 Erweiterung (TooWaBoo) RT 5.0 r1
|
||||
#43 21.07.2017 Erweiterung (TooWaBoo) RT 5.1
|
||||
#44 21.09.2017 Erweiterung (TooWaBoo) RT 5.2
|
||||
#45 15.10.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||
#46 18.10.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||
#47 19.11.2017 HDR-Dynamikkompression (TooWaBoo) RT 5.3
|
||||
#48 13.12.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||
#49 21.12.2017 Lokaler Kontrast (TooWaBoo) RT 5.3
|
||||
#50 07.01.2018 Crop Settings (TooWaBoo) RT 5.3
|
||||
#51 10.02.2018 Erweiterung (TooWaBoo) RT 5.3
|
||||
#52 10.02.2018 Korrektur (TooWaBoo) RT 5.3
|
||||
#53 26.02.2018 Erweiterung (TooWaBoo) RT 5.3
|
||||
#54 30.03.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#55 06.04.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#56 27.04.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#57 17.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#58 19.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#59 29.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#60 14.06.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#61 14.06.2018 Korrektur (TooWaBoo) RT 5.4
|
||||
#62 22.06.2018 Korrektur (TooWaBoo) RT 5.4
|
||||
#63 24.06.2018 DCB/RCD+VNG4 (TooWaBoo) RT 5.4
|
||||
#64 24.06.2018 Erweiterung/Korrektur (TooWaBoo) RT 5.4
|
||||
#65 25.06.2018 Korrekturen (TooWaBoo) RT 5.4
|
||||
#66 04.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#67 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#68 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#69 25.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#70 25.07.2018 Korrekturen (TooWaBoo) RT 5.4
|
||||
#71 28.09.2018 Korrekturen (TooWaBoo) RT 5.5
|
||||
#72 05.10.2018 Korrekturen (TooWaBoo) RT 5.5
|
||||
#73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||
#74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||
#75 02.12.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||
#76 11.12.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||
#77 16.12.2018 Korrektur Farbwähler-Tooltip (TooWaBoo) RT 5.5
|
||||
#78 19.01.2019 Erweiterung (TooWaBoo) RT 5.5
|
||||
#79 24.02.2019 Erweiterung (TooWaBoo) RT 5.5
|
||||
#80 25.03.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#81 15.04.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#82 25.05.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#83 06.07.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#84 06.10.2019 Erweiterung (TooWaBoo) RT 5.7
|
||||
#84 18.07.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#85 29.07.2022 Erweiterung (marter, mozzihh) RT 5.9
|
||||
#001 keenonkites; Aktualisierte Version für 2.3 beta2
|
||||
#002 phberlin; basiert auf keenonkites' Erstübersetzung
|
||||
#003 2007-12-20
|
||||
#004 2007-12-22
|
||||
#005 2008-01-08
|
||||
#006 2008-01-15
|
||||
#007 2008-02-20
|
||||
#008 2008-12-19 keenonkites, Anpassungen für 2.4beta4
|
||||
#009 2008-09-20 keenonkites, Anpassungen für 2.4m2
|
||||
#010 2008-04-04 Anpassungen für 2.4
|
||||
#011 Leichte Anpassungen (keenonkites/klonk)
|
||||
#012 Erweiterung (oduis)
|
||||
#013 Erweiterung (oduis)
|
||||
#014 Erweiterung (oduis)
|
||||
#015 Erweiterung (oduis)
|
||||
#016 2012-12-05 3.0 alpha: Erweiterung und Korrekturen (Metex)
|
||||
#017 2012-04-29 Erweiterungen und Korrekturen (MaWe)
|
||||
#018 Erweiterung (oduis)
|
||||
#019 Erweiterung (oduis)
|
||||
#020 2013-02-27 Erweiterung (cytrinox)
|
||||
#021 2013-12-31 Erweiterung (Ingo)
|
||||
#022 2015-09-04 komplette Überarbeitung (TooWaBoo)
|
||||
#023 2015-10-24 Retinexübersetzung und Korrekturen (TooWaBoo)
|
||||
#024 2015-11-01 Korrekturen (TooWaBoo) RT4.2.450
|
||||
#025 2015-11-30 Korrekturen (TooWaBoo) RT4.2.507
|
||||
#026 2015-12-13 Korrekturen (TooWaBoo) RT4.2.514
|
||||
#026 2015-12-22 Korrekturen (TooWaBoo) RT4.2.536
|
||||
#027 2016-02-12 Retinexübersetzung (TooWaBoo) RT4.2.730
|
||||
#028 2016-03-19 Erweiterung/Korrekturen (TooWaBoo) RT4.2.880
|
||||
#029 2016-05-24 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1005
|
||||
#030 2016-09-30 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1234
|
||||
#031 2016-12-01 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1408
|
||||
#032 2016-12-29 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1464
|
||||
#033 2017-01-04 Erweiterung/Korrekturen/Soft-Proofing (TooWaBoo) RT4.2.1477
|
||||
#034 2017-01-07 IPTC (TooWaBoo) RT4.2.1492
|
||||
#035 2017-02-18 AWB bias (TooWaBoo) RT 5.0 r1
|
||||
#036 2017-02-23 Korrekturen (TooWaBoo) RT 5.0 r1
|
||||
#037 2017-03-06 Dynamisches Profil (TooWaBoo) RT 5.0 r1
|
||||
#038 2017-03-26 Pixel-Shift (TooWaBoo) RT 5.0 r1
|
||||
#039 06.04.2017 Fast Export (TooWaBoo) RT 5.0 r1
|
||||
#040 30.04.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
|
||||
#041 03.05.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
|
||||
#042 13.05.2017 Erweiterung (TooWaBoo) RT 5.0 r1
|
||||
#043 21.07.2017 Erweiterung (TooWaBoo) RT 5.1
|
||||
#044 21.09.2017 Erweiterung (TooWaBoo) RT 5.2
|
||||
#045 15.10.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||
#046 18.10.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||
#047 19.11.2017 HDR-Dynamikkompression (TooWaBoo) RT 5.3
|
||||
#048 13.12.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||
#049 21.12.2017 Lokaler Kontrast (TooWaBoo) RT 5.3
|
||||
#050 07.01.2018 Crop Settings (TooWaBoo) RT 5.3
|
||||
#051 10.02.2018 Erweiterung (TooWaBoo) RT 5.3
|
||||
#052 10.02.2018 Korrektur (TooWaBoo) RT 5.3
|
||||
#053 26.02.2018 Erweiterung (TooWaBoo) RT 5.3
|
||||
#054 30.03.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#055 06.04.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#056 27.04.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#057 17.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#058 19.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#059 29.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#060 14.06.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#061 14.06.2018 Korrektur (TooWaBoo) RT 5.4
|
||||
#062 22.06.2018 Korrektur (TooWaBoo) RT 5.4
|
||||
#063 24.06.2018 DCB/RCD+VNG4 (TooWaBoo) RT 5.4
|
||||
#064 24.06.2018 Erweiterung/Korrektur (TooWaBoo) RT 5.4
|
||||
#065 25.06.2018 Korrekturen (TooWaBoo) RT 5.4
|
||||
#066 04.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#067 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#068 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#069 25.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||
#070 25.07.2018 Korrekturen (TooWaBoo) RT 5.4
|
||||
#071 28.09.2018 Korrekturen (TooWaBoo) RT 5.5
|
||||
#072 05.10.2018 Korrekturen (TooWaBoo) RT 5.5
|
||||
#073 21.11.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||
#074 24.11.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||
#075 02.12.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||
#076 11.12.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||
#077 16.12.2018 Korrektur Farbwähler-Tooltip (TooWaBoo) RT 5.5
|
||||
#078 19.01.2019 Erweiterung (TooWaBoo) RT 5.5
|
||||
#079 24.02.2019 Erweiterung (TooWaBoo) RT 5.5
|
||||
#080 25.03.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#081 15.04.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#082 25.05.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#083 06.07.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#084 06.10.2019 Erweiterung (TooWaBoo) RT 5.7
|
||||
#084 18.07.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||
#085 29.07.2022 Erweiterung (marter, mozzihh) RT 5.9
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Deutsch
|
||||
|
||||
ABOUT_TAB_BUILD;Version
|
||||
ABOUT_TAB_CREDITS;Danksagungen
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#01 Español - Castellano
|
||||
#02 2022-10-08 Francisco Lorés y Javier Bartol, para la versión 5.9
|
||||
#001 Español - Castellano
|
||||
#002 2022-10-08 Francisco Lorés y Javier Bartol, para la versión 5.9
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Español (Castellano)
|
||||
|
||||
ABOUT_TAB_BUILD;Versión
|
||||
ABOUT_TAB_CREDITS;Reconocimientos
|
||||
|
|
|
@ -1,66 +1,68 @@
|
|||
#01 Latin America - Spanish
|
||||
#02 Conventions used to keep the same writing style along new texts and versions
|
||||
#03
|
||||
#04 Abreviaturas (Abbreviations)
|
||||
#05 -----------------------------
|
||||
#06 AC: Aberración cromática (fringe)
|
||||
#07 B&N: Blanco y Negro (Black & White)
|
||||
#08 CV: Corrección de Viñeteado (Vignette Filter: in Transform tab)
|
||||
#09 FG: Filtro Graduado (Gradient Filter)
|
||||
#10 FV: Filtrar Viñeteado (Vignette Filter: in Exposure tab)
|
||||
#11 MC: Mezclador de canales (Channel Mixer)
|
||||
#12 RGB: Modelo de color Rojo Verde Azul (Red Green Blue)
|
||||
#13 WB: Balance de blancos (White Balance)
|
||||
#14
|
||||
#15 Convención de traducción de términos importantes,
|
||||
#16 sin equivalente estándar o poco conocidos en español:
|
||||
#17 ---------------------------------------------
|
||||
#18 Artifacts: Elementos extraños
|
||||
#19 Brightness: Brillo
|
||||
#20 Checkbox: Casilla (seleccionada/desmarcada)
|
||||
#21 Chroma: Crominancia (**, definida en es.wikipedia)
|
||||
#22 Chromatic: Cromática (*)
|
||||
#23 Chromaticity: Cromaticidad (**)
|
||||
#24 Colorfulness: Colorido
|
||||
#25 Cyan: Cian (*)
|
||||
#26 Dark Frame: Toma Negra
|
||||
#27 Dim: Luz tenue
|
||||
#28 Feather: Difuminado
|
||||
#29 Illuminant: Iluminante
|
||||
#30 Lightness: Claridad
|
||||
#31 Luminance: Luminancia (*)
|
||||
#32 Luminosity: Luminosidad
|
||||
#33 Mapping: Mapeo (*)
|
||||
#34 Sharpening: Enfoque
|
||||
#35 Slider: Control deslizante
|
||||
#36 Tone Curve: Curva tonal
|
||||
#37 Vibrance: Vibranza
|
||||
#38
|
||||
#39 (*) Término incluido en diccionario RAE
|
||||
#40 (**) Término no incluido en diccionario RAE
|
||||
#41
|
||||
#42 Términos conservados en Inglés por no tener traducción breve
|
||||
#43 al español en el sentido usado por RT/fotografía digital
|
||||
#44 -----------------------------------------------------
|
||||
#45 ICM (Image Color Management)
|
||||
#46 Gamut
|
||||
#47 Gamma
|
||||
#48 Raw
|
||||
#49
|
||||
#50 2008-01-15 keenonkites, first translation
|
||||
#51 2008-03-03 Ioritz Ibarguren, corrections
|
||||
#52 2008-04-05 keenonkites, completed for 2.4m1
|
||||
#53 2008-04-09 Ramon, partly corrected (part of 2.3)
|
||||
#54 2008-04-29 Ramon, small correction
|
||||
#55 2008-06-09 Ramon, Adaptions regarding 2.4m1 and others
|
||||
#56 2008-09-20 keenonkites, first version for 2.4m2
|
||||
#57 2008-12-19 keenonkites, first version for 2.4beta4
|
||||
#58 2010-12-07 rickydh, some translations of untranslated keys for 3.0 alpha1
|
||||
#59 2011-12-25 plores, translation improvement, translation of untranslated strings
|
||||
#60 2013-01-03 OdeLama, translation for v4.0.12 of untranslated/changed strings
|
||||
#61 2014-01-14 mapelo, bug correction and small enhancements.
|
||||
#62 2014-10-10 fotger
|
||||
#63 2018-12-09 Faber777
|
||||
#001 Latin America - Spanish
|
||||
#002 Conventions used to keep the same writing style along new texts and versions
|
||||
#003
|
||||
#004 Abreviaturas (Abbreviations)
|
||||
#005 -----------------------------
|
||||
#006 AC: Aberración cromática (fringe)
|
||||
#007 B&N: Blanco y Negro (Black & White)
|
||||
#008 CV: Corrección de Viñeteado (Vignette Filter: in Transform tab)
|
||||
#009 FG: Filtro Graduado (Gradient Filter)
|
||||
#010 FV: Filtrar Viñeteado (Vignette Filter: in Exposure tab)
|
||||
#011 MC: Mezclador de canales (Channel Mixer)
|
||||
#012 RGB: Modelo de color Rojo Verde Azul (Red Green Blue)
|
||||
#013 WB: Balance de blancos (White Balance)
|
||||
#014
|
||||
#015 Convención de traducción de términos importantes,
|
||||
#016 sin equivalente estándar o poco conocidos en español:
|
||||
#017 ---------------------------------------------
|
||||
#018 Artifacts: Elementos extraños
|
||||
#019 Brightness: Brillo
|
||||
#020 Checkbox: Casilla (seleccionada/desmarcada)
|
||||
#021 Chroma: Crominancia (**, definida en es.wikipedia)
|
||||
#022 Chromatic: Cromática (*)
|
||||
#023 Chromaticity: Cromaticidad (**)
|
||||
#024 Colorfulness: Colorido
|
||||
#025 Cyan: Cian (*)
|
||||
#026 Dark Frame: Toma Negra
|
||||
#027 Dim: Luz tenue
|
||||
#028 Feather: Difuminado
|
||||
#029 Illuminant: Iluminante
|
||||
#030 Lightness: Claridad
|
||||
#031 Luminance: Luminancia (*)
|
||||
#032 Luminosity: Luminosidad
|
||||
#033 Mapping: Mapeo (*)
|
||||
#034 Sharpening: Enfoque
|
||||
#035 Slider: Control deslizante
|
||||
#036 Tone Curve: Curva tonal
|
||||
#037 Vibrance: Vibranza
|
||||
#038
|
||||
#039 (*) Término incluido en diccionario RAE
|
||||
#040 (**) Término no incluido en diccionario RAE
|
||||
#041
|
||||
#042 Términos conservados en Inglés por no tener traducción breve
|
||||
#043 al español en el sentido usado por RT/fotografía digital
|
||||
#044 -----------------------------------------------------
|
||||
#045 ICM (Image Color Management)
|
||||
#046 Gamut
|
||||
#047 Gamma
|
||||
#048 Raw
|
||||
#049
|
||||
#050 2008-01-15 keenonkites, first translation
|
||||
#051 2008-03-03 Ioritz Ibarguren, corrections
|
||||
#052 2008-04-05 keenonkites, completed for 2.4m1
|
||||
#053 2008-04-09 Ramon, partly corrected (part of 2.3)
|
||||
#054 2008-04-29 Ramon, small correction
|
||||
#055 2008-06-09 Ramon, Adaptions regarding 2.4m1 and others
|
||||
#056 2008-09-20 keenonkites, first version for 2.4m2
|
||||
#057 2008-12-19 keenonkites, first version for 2.4beta4
|
||||
#058 2010-12-07 rickydh, some translations of untranslated keys for 3.0 alpha1
|
||||
#059 2011-12-25 plores, translation improvement, translation of untranslated strings
|
||||
#060 2013-01-03 OdeLama, translation for v4.0.12 of untranslated/changed strings
|
||||
#061 2014-01-14 mapelo, bug correction and small enhancements.
|
||||
#062 2014-10-10 fotger
|
||||
#063 2018-12-09 Faber777
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Español (Latinoamericano)
|
||||
|
||||
ABOUT_TAB_BUILD;Versión
|
||||
ABOUT_TAB_CREDITS;Créditos
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
#01 2008-03-01 Initial translation by Hombre
|
||||
#001 2008-03-01 Initial translation by Hombre
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Français
|
||||
|
||||
ABOUT_TAB_BUILD;Version
|
||||
ABOUT_TAB_CREDITS;Crédits
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
#01 2008-01-19 v2.3 breek
|
||||
#02 2008-11-01 v2.4 pantaraf, chelidon, roberto
|
||||
#03 2011-08-26 v3.0 joker, chelidon, ffsup2
|
||||
#04 2011-08-31 v4.0 chelidon, ffsup2
|
||||
#05 2014-04-21 crx
|
||||
#001 2008-01-19 v2.3 breek
|
||||
#002 2008-11-01 v2.4 pantaraf, chelidon, roberto
|
||||
#003 2011-08-26 v3.0 joker, chelidon, ffsup2
|
||||
#004 2011-08-31 v4.0 chelidon, ffsup2
|
||||
#005 2014-04-21 crx
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Italiano
|
||||
|
||||
ABOUT_TAB_BUILD;Versione
|
||||
ABOUT_TAB_CREDITS;Riconoscimenti
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
#Last update 10-12-2022
|
||||
#001 Last update 10-12-2022
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=日本語
|
||||
|
||||
ABOUT_TAB_BUILD;バージョン
|
||||
ABOUT_TAB_CREDITS;クレジット
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
#01 2010-11-20 RT 3.0 alpha 1 rev. 597:fb291bf74c by Dr. Gyurkó M. 'dualon' Dávid
|
||||
#001 2010-11-20 RT 3.0 alpha 1 rev. 597:fb291bf74c by Dr. Gyurkó M. 'dualon' Dávid
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Magyar
|
||||
|
||||
ABOUT_TAB_BUILD;Verzió
|
||||
ABOUT_TAB_CREDITS;Szerzők
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
#01 2007-12-26 Rens Duijsens en Brent Huisman
|
||||
#02 2008-03-14 updated by reggybe
|
||||
#03 2009-02-01 updated to RT2.4-RC by paul.matthijsse
|
||||
#04 2010-05-02 updated to rt3a1 by paul.matthijsse
|
||||
#05 2011-03-03 updated to rt3a2 by paul.matthijsse
|
||||
#06 2011-10-10 updated to rt4.0 by wim ter meer
|
||||
#07 2011-11-28 updated by pm
|
||||
#08 2012-05-17 updated to rt4.0.8 by wim ter meer
|
||||
#09 2013-03-27 updated to rt4.0.10 by wim ter meer
|
||||
#10 2013-11-27 updated to rt4.0.11 by wim ter meer
|
||||
#11 2014-03-24 updated to rt4.1 by wim ter meer
|
||||
#12 2014-10-19 updated to rt4.1.92 by wim ter meer
|
||||
#13 2015-03-03 updated to rt4.2.102 by wim ter meer
|
||||
#14 2015-11-23 update by wim ter meer
|
||||
#15 2016-07-21 update by wim ter meer
|
||||
#16 2017-04-21 update by wim ter meer
|
||||
#17 2020-06-05 update by dheijl
|
||||
#001 2007-12-26 Rens Duijsens en Brent Huisman
|
||||
#002 2008-03-14 updated by reggybe
|
||||
#003 2009-02-01 updated to RT2.4-RC by paul.matthijsse
|
||||
#004 2010-05-02 updated to rt3a1 by paul.matthijsse
|
||||
#005 2011-03-03 updated to rt3a2 by paul.matthijsse
|
||||
#006 2011-10-10 updated to rt4.0 by wim ter meer
|
||||
#007 2011-11-28 updated by pm
|
||||
#008 2012-05-17 updated to rt4.0.8 by wim ter meer
|
||||
#009 2013-03-27 updated to rt4.0.10 by wim ter meer
|
||||
#010 2013-11-27 updated to rt4.0.11 by wim ter meer
|
||||
#011 2014-03-24 updated to rt4.1 by wim ter meer
|
||||
#012 2014-10-19 updated to rt4.1.92 by wim ter meer
|
||||
#013 2015-03-03 updated to rt4.2.102 by wim ter meer
|
||||
#014 2015-11-23 update by wim ter meer
|
||||
#015 2016-07-21 update by wim ter meer
|
||||
#016 2017-04-21 update by wim ter meer
|
||||
#017 2020-06-05 update by dheijl
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Nederlands
|
||||
|
||||
ABOUT_TAB_BUILD;Versie
|
||||
ABOUT_TAB_CREDITS;Credits
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
#01 2007-12-24 Mateusz Ludwin
|
||||
#02 2010-01-08 Bartosz "Simek" Kaszubowski
|
||||
#03 2011-09-06 Dariusz 'Salvadhor' Duma
|
||||
#04 2011-11-30 DrSlony
|
||||
#05 2012-01-14 DrSlony
|
||||
#06 2012-01-30 DrSlony
|
||||
#07 2012-04-02 DrSlony
|
||||
#08 2013-05-21 DrSlony
|
||||
#09 2014-10-16 DrSlony
|
||||
#10 2020-02-02 Bartłomiej Wiśniowski
|
||||
#11 2020-02-02 Bartłomiej Wiśniowski
|
||||
#12 2020-02-15 Bartłomiej Wiśniowski
|
||||
#13 2020-02-17 Bartłomiej Wiśniowski
|
||||
#001 2007-12-24 Mateusz Ludwin
|
||||
#002 2010-01-08 Bartosz "Simek" Kaszubowski
|
||||
#003 2011-09-06 Dariusz 'Salvadhor' Duma
|
||||
#004 2011-11-30 DrSlony
|
||||
#005 2012-01-14 DrSlony
|
||||
#006 2012-01-30 DrSlony
|
||||
#007 2012-04-02 DrSlony
|
||||
#008 2013-05-21 DrSlony
|
||||
#009 2014-10-16 DrSlony
|
||||
#010 2020-02-02 Bartłomiej Wiśniowski
|
||||
#011 2020-02-02 Bartłomiej Wiśniowski
|
||||
#012 2020-02-15 Bartłomiej Wiśniowski
|
||||
#013 2020-02-17 Bartłomiej Wiśniowski
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Polski
|
||||
|
||||
ABOUT_TAB_BUILD;Wersja
|
||||
ABOUT_TAB_CREDITS;Zasługi
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#01 2018-07-25 Digitalpix58
|
||||
#02 2019-03-11 Xendez
|
||||
#001 2018-07-25 Digitalpix58
|
||||
#002 2019-03-11 Xendez
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Português
|
||||
|
||||
ABOUT_TAB_BUILD;Versão
|
||||
ABOUT_TAB_CREDITS;Créditos
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#01 2018-07-25 Digitalpix58
|
||||
#02 2019-03-12 Xendez
|
||||
#001 2018-07-25 Digitalpix58
|
||||
#002 2019-03-12 Xendez
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Português brasileiro
|
||||
|
||||
ABOUT_TAB_BUILD;Versão
|
||||
ABOUT_TAB_CREDITS;Créditos
|
||||
|
|
|
@ -45,6 +45,13 @@ comments in the right order, e.g.:
|
|||
#01 Line 2...
|
||||
#02 3, etc.
|
||||
|
||||
Metadata for the language file appear in comments with the following syntax:
|
||||
#10 @KEY=VALUE
|
||||
The @ character must appear immediately after the whitespace following the
|
||||
numeric prefix. KEY is the metadata name and VALUE is value for that metadata
|
||||
name. The following key(s) are recognized:
|
||||
a) LANGUAGE_DISPLAY_NAME: The language name as shown in preferences.
|
||||
|
||||
To create a file with only Latin characters from a non-Latin one, you can use
|
||||
sed with the "y" command. For example, to create a latin-only "Polish (Latin
|
||||
Characters)" file from the non-latin "Polish" one:
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
#01 2007-12-23 ArtDen
|
||||
#02 2008-07-20 Denis Artemov
|
||||
#03 2009-02-16 Kvark
|
||||
#04 2010-02-26 Sergey Smirnov AKA smiserg
|
||||
#05 2010-11-01 Ilia Popov <ilia_popov@rambler.ru>
|
||||
#06 2012-07-17 Roman Milanskij <loooooker@gmail.com>
|
||||
#07 2014-02-12 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
||||
#08 2018-02-10 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
||||
#09 2018-12-13 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
||||
#001 2007-12-23 ArtDen
|
||||
#002 2008-07-20 Denis Artemov
|
||||
#003 2009-02-16 Kvark
|
||||
#004 2010-02-26 Sergey Smirnov AKA smiserg
|
||||
#005 2010-11-01 Ilia Popov <ilia_popov@rambler.ru>
|
||||
#006 2012-07-17 Roman Milanskij <loooooker@gmail.com>
|
||||
#007 2014-02-12 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
||||
#008 2018-02-10 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
||||
#009 2018-12-13 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Русский
|
||||
|
||||
ABOUT_TAB_BUILD;Версия
|
||||
ABOUT_TAB_CREDITS;Авторы
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
#01 2010-11-16 gpopac
|
||||
#001 2010-11-16 gpopac
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=српски
|
||||
|
||||
ABOUT_TAB_BUILD;Издање
|
||||
ABOUT_TAB_CREDITS;Заслуге
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
#01 2019-10-05 Matjaž Jeran
|
||||
#001 2019-10-05 Matjaž Jeran
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Slovenščina
|
||||
|
||||
ABOUT_TAB_BUILD;Verzija
|
||||
ABOUT_TAB_CREDITS;Zasluge
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
#01 2008-01-22 Emil Ericsson
|
||||
#02 2010-2013 Updated by Johan Thor
|
||||
#03 2015-08-09 Johan Thor
|
||||
#04 2016-12-30 Johan Thor
|
||||
#001 2008-01-22 Emil Ericsson
|
||||
#002 2010-2013 Updated by Johan Thor
|
||||
#003 2015-08-09 Johan Thor
|
||||
#004 2016-12-30 Johan Thor
|
||||
#100
|
||||
#101 @LANGUAGE_DISPLAY_NAME=Svenska
|
||||
|
||||
ABOUT_TAB_BUILD;Version
|
||||
ABOUT_TAB_CREDITS;Erkännande
|
||||
|
|
|
@ -227,6 +227,8 @@ menu separator {
|
|||
}
|
||||
|
||||
#PlacesPaned .view.separator {
|
||||
min-height: 0.16666666666666666em;
|
||||
color: #363636;
|
||||
}
|
||||
|
||||
#MetaPanelNotebook separator {
|
||||
|
|
|
@ -207,6 +207,8 @@ menu separator {
|
|||
}
|
||||
|
||||
#PlacesPaned .view.separator {
|
||||
min-height: 0.16666666666666666em;
|
||||
color: #363636;
|
||||
}
|
||||
|
||||
#MetaPanelNotebook separator {
|
||||
|
|
|
@ -123,6 +123,7 @@ float* RawImageSource::CA_correct_RT(
|
|||
double cared,
|
||||
double cablue,
|
||||
bool avoidColourshift,
|
||||
int border_crop,
|
||||
array2D<float> &rawData,
|
||||
double* fitParamsTransfer,
|
||||
bool fitParamsIn,
|
||||
|
@ -145,7 +146,7 @@ float* RawImageSource::CA_correct_RT(
|
|||
const unsigned int cfa[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}};
|
||||
constexpr int ts = 128;
|
||||
constexpr int tsh = ts / 2;
|
||||
constexpr int cb = 2; // 2 pixels border will be excluded from correction
|
||||
const int cb = border_crop;
|
||||
|
||||
//shifts to location of vertical and diagonal neighbours
|
||||
constexpr int v1 = ts, v2 = 2 * ts, v3 = 3 * ts, v4 = 4 * ts; //, p1=-ts+1, p2=-2*ts+2, p3=-3*ts+3, m1=ts+1, m2=2*ts+2, m3=3*ts+3;
|
||||
|
|
|
@ -647,6 +647,7 @@ Camera constants:
|
|||
"make_model": "Canon EOS 7D Mark II",
|
||||
"dcraw_matrix": [ 7268,-1082,-969,-4186,11839,2663,-825,2029,5839 ], // dng_v8.7 d65
|
||||
//"dcraw_matrix": [ 6285,-147,-821,-4080,11695,2714,-1045,2459,5497 ], // DXO D50
|
||||
"raw_crop": [ 72, 38, 5496, 3669 ],
|
||||
"ranges": {
|
||||
"white": [
|
||||
{ "iso": [ 100, 125 ], "levels": 13500 }, // typical 13583 - LENR 13550
|
||||
|
@ -2993,8 +2994,8 @@ Camera constants:
|
|||
"dcraw_matrix": [ 6629,-1900,-483,-4618,12349,2550,-622,1381,6514 ], // DNG_v9.1.1 D65
|
||||
"raw_crop": [ 0, 0, -36, 0 ], // full raw frame 8000x5320 - 36 rightmost columns are garbage
|
||||
"ranges": { "black": 512, "white": 16300 },
|
||||
// PDAF info provided by Horshack with the rawshack tool (http://testcams.com/rawshack/)
|
||||
"pdaf_pattern" : [ 0,24,36,60,84,120,132,156,192,204,240,252,276,300,324,360,372,396,420 ],
|
||||
// PDAF lines pattern detected from image provided by elite4jonny at https://github.com/Beep6581/RawTherapee/issues/6801.
|
||||
"pdaf_pattern" : [ 0,24,36,60,84,120,132,156,192,204,240,252,276,300,324,360,372,396,420,444,480,492,504,540,564,576,612,636,660,696,720,732,756,780,804,840 ],
|
||||
"pdaf_offset" : 31
|
||||
},
|
||||
|
||||
|
|
|
@ -429,6 +429,16 @@ std::map<std::string, std::string> getAliases(const Glib::ustring& profile_dir)
|
|||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a locale-independent case-insensitive collate key. Differs from
|
||||
* Glib::ustring::casefold_collate_key() in that the Glib method may return
|
||||
* different results depending on the current locale.
|
||||
*/
|
||||
std::string casefold_collate_key(const Glib::ustring &str)
|
||||
{
|
||||
return str.casefold().raw();
|
||||
}
|
||||
|
||||
class DCPMetadata
|
||||
{
|
||||
private:
|
||||
|
@ -2180,7 +2190,7 @@ void DCPStore::init(const Glib::ustring& rt_profile_dir, bool loadAll)
|
|||
&& lastdot <= sname.size() - 4
|
||||
&& !sname.casefold().compare(lastdot, 4, ".dcp")
|
||||
) {
|
||||
file_std_profiles[sname.substr(0, lastdot).casefold_collate_key()] = fname; // They will be loaded and cached on demand
|
||||
file_std_profiles[casefold_collate_key(sname.substr(0, lastdot))] = fname; // They will be loaded and cached on demand
|
||||
}
|
||||
} else {
|
||||
// Directory
|
||||
|
@ -2191,10 +2201,10 @@ void DCPStore::init(const Glib::ustring& rt_profile_dir, bool loadAll)
|
|||
|
||||
for (const auto& alias : getAliases(rt_profile_dir)) {
|
||||
const Glib::ustring alias_name = Glib::ustring(alias.first).uppercase();
|
||||
const std::map<std::string, Glib::ustring>::const_iterator real = file_std_profiles.find(Glib::ustring(alias.second).casefold_collate_key());
|
||||
const std::map<std::string, Glib::ustring>::const_iterator real = file_std_profiles.find(casefold_collate_key(alias.second));
|
||||
|
||||
if (real != file_std_profiles.end()) {
|
||||
file_std_profiles[alias_name.casefold_collate_key()] = real->second;
|
||||
file_std_profiles[casefold_collate_key(alias_name)] = real->second;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2241,7 +2251,7 @@ DCPProfile* DCPStore::getProfile(const Glib::ustring& filename) const
|
|||
|
||||
DCPProfile* DCPStore::getStdProfile(const Glib::ustring& requested_cam_short_name) const
|
||||
{
|
||||
const std::map<std::string, Glib::ustring>::const_iterator iter = file_std_profiles.find(requested_cam_short_name.casefold_collate_key());
|
||||
const std::map<std::string, Glib::ustring>::const_iterator iter = file_std_profiles.find(casefold_collate_key(requested_cam_short_name));
|
||||
if (iter != file_std_profiles.end()) {
|
||||
return getProfile(iter->second);
|
||||
}
|
||||
|
|
|
@ -5333,6 +5333,7 @@ void ImProcFunctions::blendstruc(int bfw, int bfh, LabImage* bufcolorig, float r
|
|||
|
||||
static void blendmask(const local_params& lp, int xstart, int ystart, int cx, int cy, int bfw, int bfh, LabImage* bufexporig, LabImage* original, LabImage* bufmaskor, LabImage* originalmas, float bl, float blab, int inv)
|
||||
{
|
||||
bl /= 10.f;
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16)
|
||||
#endif
|
||||
|
@ -18649,7 +18650,7 @@ void ImProcFunctions::Lab_Local(
|
|||
const float rad = params->locallab.spots.at(sp).radmask;
|
||||
const float gamma = params->locallab.spots.at(sp).gammask;
|
||||
const float slope = params->locallab.spots.at(sp).slopmask;
|
||||
float blendm = params->locallab.spots.at(sp).blendmask;
|
||||
float blendm = 0.1 * params->locallab.spots.at(sp).blendmask;
|
||||
float blendmab = params->locallab.spots.at(sp).blendmaskab;
|
||||
if (lp.showmask_met == 2) {
|
||||
blendm = 0.f;//normalize behavior mask with others no action of blend
|
||||
|
|
|
@ -1716,15 +1716,14 @@ void RawImageSource::preprocess(const RAWParams &raw, const LensProfParams &lens
|
|||
|
||||
if (numFrames == 4) {
|
||||
double fitParams[64];
|
||||
float *buffer = CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, *rawDataFrames[0], fitParams, false, true, nullptr, false, options.chunkSizeCA, options.measure);
|
||||
|
||||
float *buffer = CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, raw.bayersensor.border, *rawDataFrames[0], fitParams, false, true, nullptr, false, options.chunkSizeCA, options.measure);
|
||||
for (int i = 1; i < 3; ++i) {
|
||||
CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, *rawDataFrames[i], fitParams, true, false, buffer, false, options.chunkSizeCA, options.measure);
|
||||
CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, raw.bayersensor.border, *rawDataFrames[i], fitParams, true, false, buffer, false, options.chunkSizeCA, options.measure);
|
||||
}
|
||||
|
||||
CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, *rawDataFrames[3], fitParams, true, false, buffer, true, options.chunkSizeCA, options.measure);
|
||||
CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, raw.bayersensor.border, *rawDataFrames[3], fitParams, true, false, buffer, true, options.chunkSizeCA, options.measure);
|
||||
} else {
|
||||
CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, rawData, nullptr, false, false, nullptr, true, options.chunkSizeCA, options.measure);
|
||||
CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, raw.bayersensor.border, rawData, nullptr, false, false, nullptr, true, options.chunkSizeCA, options.measure);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -251,6 +251,7 @@ protected:
|
|||
double cared,
|
||||
double cablue,
|
||||
bool avoidColourshift,
|
||||
int border,
|
||||
array2D<float> &rawData,
|
||||
double* fitParamsTransfer,
|
||||
bool fitParamsIn,
|
||||
|
|
|
@ -36,7 +36,7 @@ BayerProcess::BayerProcess () :
|
|||
{
|
||||
|
||||
auto m = ProcEventMapper::getInstance();
|
||||
EvDemosaicBorder = m->newEvent(DEMOSAIC, "HISTORY_MSG_RAW_BORDER");
|
||||
EvDemosaicBorder = m->newEvent(DARKFRAME, "HISTORY_MSG_RAW_BORDER");
|
||||
EvDemosaicContrast = m->newEvent(DEMOSAIC, "HISTORY_MSG_DUALDEMOSAIC_CONTRAST");
|
||||
EvDemosaicAutoContrast = m->newEvent(DEMOSAIC, "HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST");
|
||||
EvDemosaicPixelshiftDemosaicMethod = m->newEvent(DEMOSAIC, "HISTORY_MSG_PIXELSHIFT_DEMOSAIC");
|
||||
|
|
|
@ -905,6 +905,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
|
|||
|
||||
send_to_external = Gtk::manage(new PopUpButton("", false));
|
||||
send_to_external->set_tooltip_text(M("MAIN_BUTTON_SENDTOEDITOR_TOOLTIP"));
|
||||
send_to_external->setEmptyImage("palette-brush.png");
|
||||
setExpandAlignProperties(send_to_external->buttonGroup, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
|
||||
updateExternalEditorWidget(
|
||||
options.externalEditorIndex >= 0 ? options.externalEditorIndex : options.externalEditors.size(),
|
||||
|
@ -2037,7 +2038,7 @@ bool EditorPanel::idle_saveImage (ProgressConnector<rtengine::IImagefloat*> *pc,
|
|||
msgd.run ();
|
||||
|
||||
saveimgas->set_sensitive (true);
|
||||
send_to_external->set_sensitive(true);
|
||||
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||
isProcessing = false;
|
||||
|
||||
}
|
||||
|
@ -2065,7 +2066,7 @@ bool EditorPanel::idle_imageSaved (ProgressConnector<int> *pc, rtengine::IImagef
|
|||
}
|
||||
|
||||
saveimgas->set_sensitive (true);
|
||||
send_to_external->set_sensitive(true);
|
||||
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||
|
||||
parent->setProgressStr ("");
|
||||
parent->setProgress (0.);
|
||||
|
@ -2256,8 +2257,10 @@ void EditorPanel::sendToExternalPressed()
|
|||
dialog->show();
|
||||
} else {
|
||||
struct ExternalEditor editor = options.externalEditors.at(options.externalEditorIndex);
|
||||
external_editor_info = Gio::AppInfo::create_from_commandline(editor.command, editor.name, Gio::APP_INFO_CREATE_NONE);
|
||||
external_editor_native_command = editor.native_command;
|
||||
external_editor_info = {
|
||||
editor.name,
|
||||
editor.command,
|
||||
editor.native_command};
|
||||
sendToExternal();
|
||||
}
|
||||
}
|
||||
|
@ -2395,7 +2398,7 @@ bool EditorPanel::idle_sendToGimp ( ProgressConnector<rtengine::IImagefloat*> *p
|
|||
Gtk::MessageDialog msgd (*parent, msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
|
||||
msgd.run ();
|
||||
saveimgas->set_sensitive (true);
|
||||
send_to_external->set_sensitive(true);
|
||||
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -2416,14 +2419,14 @@ bool EditorPanel::idle_sentToGimp (ProgressConnector<int> *pc, rtengine::IImagef
|
|||
|
||||
if ((!img && Glib::file_test(filename, Glib::FILE_TEST_IS_REGULAR)) || (img && !errore)) {
|
||||
saveimgas->set_sensitive (true);
|
||||
send_to_external->set_sensitive(true);
|
||||
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||
parent->setProgressStr ("");
|
||||
parent->setProgress (0.);
|
||||
bool success = false;
|
||||
|
||||
setUserOnlyPermission(Gio::File::create_for_path(filename), false);
|
||||
|
||||
success = ExtProgStore::openInExternalEditor(filename, external_editor_info, external_editor_native_command);
|
||||
success = ExtProgStore::openInExternalEditor(filename, external_editor_info);
|
||||
|
||||
if (!success) {
|
||||
Gtk::MessageDialog msgd (*parent, M ("MAIN_MSG_CANNOTSTARTEDITOR"), false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
|
||||
|
@ -2452,12 +2455,16 @@ RTAppChooserDialog *EditorPanel::getAppChooserDialog()
|
|||
void EditorPanel::onAppChooserDialogResponse(int responseId)
|
||||
{
|
||||
switch (responseId) {
|
||||
case Gtk::RESPONSE_OK:
|
||||
case Gtk::RESPONSE_OK: {
|
||||
getAppChooserDialog()->close();
|
||||
external_editor_info = getAppChooserDialog()->get_app_info();
|
||||
external_editor_native_command = false;
|
||||
const auto app_info = getAppChooserDialog()->get_app_info();
|
||||
external_editor_info = {
|
||||
app_info->get_name(),
|
||||
app_info->get_commandline(),
|
||||
false};
|
||||
sendToExternal();
|
||||
break;
|
||||
}
|
||||
case Gtk::RESPONSE_CANCEL:
|
||||
case Gtk::RESPONSE_CLOSE:
|
||||
getAppChooserDialog()->close();
|
||||
|
@ -2788,7 +2795,10 @@ void EditorPanel::updateExternalEditorWidget(int selectedIndex, const std::vecto
|
|||
send_to_external->insertEntry(i, "palette-brush.png", name, &send_to_external_radio_group);
|
||||
}
|
||||
}
|
||||
#ifndef __APPLE__
|
||||
send_to_external->addEntry("palette-brush.png", M("GENERAL_OTHER"), &send_to_external_radio_group);
|
||||
#endif
|
||||
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||
send_to_external->setSelected(selectedIndex);
|
||||
send_to_external->show();
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include <gtkmm.h>
|
||||
|
||||
#include "extprog.h"
|
||||
#include "histogrampanel.h"
|
||||
#include "history.h"
|
||||
#include "imageareapanel.h"
|
||||
|
@ -252,8 +253,7 @@ private:
|
|||
Gtk::Button* navSync;
|
||||
Gtk::Button* navNext;
|
||||
Gtk::Button* navPrev;
|
||||
Glib::RefPtr<Gio::AppInfo> external_editor_info;
|
||||
bool external_editor_native_command;
|
||||
EditorInfo external_editor_info;
|
||||
std::unique_ptr<RTAppChooserDialog> app_chooser_dialog;
|
||||
ExternalEditorChangedSignal *externalEditorChangedSignal;
|
||||
sigc::connection externalEditorChangedSignalConnection;
|
||||
|
|
|
@ -37,7 +37,9 @@ ExternalEditorPreferences::ExternalEditorPreferences():
|
|||
list_view = Gtk::manage(new Gtk::TreeView());
|
||||
list_view->set_model(list_model);
|
||||
list_view->append_column(*Gtk::manage(makeAppColumn()));
|
||||
#ifndef __APPLE__
|
||||
list_view->append_column(*Gtk::manage(makeNativeCommandColumn()));
|
||||
#endif
|
||||
list_view->append_column(*Gtk::manage(makeCommandColumn()));
|
||||
|
||||
for (auto &&column : list_view->get_columns()) {
|
||||
|
@ -59,11 +61,18 @@ ExternalEditorPreferences::ExternalEditorPreferences():
|
|||
button_remove = Gtk::manage(new Gtk::Button());
|
||||
button_add->set_image(*add_image);
|
||||
button_remove->set_image(*remove_image);
|
||||
button_app_chooser = Gtk::manage(new Gtk::Button(M("PREFERENCES_EXTERNALEDITOR_CHANGE")));
|
||||
button_app_chooser =
|
||||
#ifdef __APPLE__
|
||||
nullptr;
|
||||
#else
|
||||
Gtk::manage(new Gtk::Button(M("PREFERENCES_EXTERNALEDITOR_CHANGE")));
|
||||
#endif
|
||||
button_file_chooser = Gtk::manage(new Gtk::Button(M("PREFERENCES_EXTERNALEDITOR_CHANGE_FILE")));
|
||||
|
||||
button_app_chooser->signal_pressed().connect(sigc::mem_fun(
|
||||
*this, &ExternalEditorPreferences::openAppChooserDialog));
|
||||
if (button_app_chooser) {
|
||||
button_app_chooser->signal_pressed().connect(sigc::mem_fun(
|
||||
*this, &ExternalEditorPreferences::openAppChooserDialog));
|
||||
}
|
||||
button_add->signal_pressed().connect(sigc::mem_fun(
|
||||
*this, &ExternalEditorPreferences::addEditor));
|
||||
button_file_chooser->signal_pressed().connect(sigc::mem_fun(
|
||||
|
@ -77,7 +86,9 @@ ExternalEditorPreferences::ExternalEditorPreferences():
|
|||
|
||||
// Toolbar.
|
||||
toolbar.set_halign(Gtk::Align::ALIGN_END);
|
||||
toolbar.add(*button_app_chooser);
|
||||
if (button_app_chooser) {
|
||||
toolbar.add(*button_app_chooser);
|
||||
}
|
||||
toolbar.add(*button_file_chooser);
|
||||
toolbar.add(*button_add);
|
||||
toolbar.add(*button_remove);
|
||||
|
@ -156,6 +167,9 @@ void ExternalEditorPreferences::addEditor()
|
|||
}
|
||||
|
||||
row[model_columns.name] = "-";
|
||||
#ifdef __APPLE__
|
||||
row[model_columns.native_command] = true;
|
||||
#endif
|
||||
list_view->get_selection()->select(row);
|
||||
}
|
||||
|
||||
|
@ -244,7 +258,12 @@ void ExternalEditorPreferences::onFileChooserDialogResponse(
|
|||
for (const auto &selected : selection) {
|
||||
auto row = *list_model->get_iter(selected);
|
||||
row[model_columns.icon] = Glib::RefPtr<Gio::Icon>(nullptr);
|
||||
row[model_columns.native_command] = false;
|
||||
row[model_columns.native_command] =
|
||||
#ifdef __APPLE__
|
||||
true;
|
||||
#else
|
||||
false;
|
||||
#endif
|
||||
row[model_columns.command] =
|
||||
#ifdef WIN32
|
||||
'"' + dialog->get_filename() + '"';
|
||||
|
@ -360,7 +379,9 @@ void ExternalEditorPreferences::setAppName(
|
|||
void ExternalEditorPreferences::updateToolbarSensitivity()
|
||||
{
|
||||
bool selected = list_view->get_selection()->count_selected_rows();
|
||||
button_app_chooser->set_sensitive(selected);
|
||||
if (button_app_chooser) {
|
||||
button_app_chooser->set_sensitive(selected);
|
||||
}
|
||||
button_file_chooser->set_sensitive(selected);
|
||||
button_remove->set_sensitive(selected);
|
||||
}
|
||||
|
|
|
@ -344,13 +344,13 @@ bool ExtProgStore::openInCustomEditor (const Glib::ustring& fileName, const Glib
|
|||
|
||||
}
|
||||
|
||||
bool ExtProgStore::openInExternalEditor(const Glib::ustring &fileName, const Glib::RefPtr<Gio::AppInfo> &editorInfo, bool nativeCommand)
|
||||
bool ExtProgStore::openInExternalEditor(const Glib::ustring &fileName, const EditorInfo &editorInfo)
|
||||
{
|
||||
if (nativeCommand) {
|
||||
if (editorInfo.isNativeCommand) {
|
||||
if (rtengine::settings->verbose) {
|
||||
std::cout << "Launching external editor as native command." << std::endl;
|
||||
}
|
||||
const Glib::ustring command = editorInfo->get_commandline();
|
||||
const Glib::ustring command = editorInfo.commandline;
|
||||
return openInCustomEditor(fileName, &command);
|
||||
}
|
||||
|
||||
|
@ -361,7 +361,10 @@ bool ExtProgStore::openInExternalEditor(const Glib::ustring &fileName, const Gli
|
|||
bool success = false;
|
||||
|
||||
try {
|
||||
success = editorInfo->launch(Gio::File::create_for_path(fileName));
|
||||
Glib::RefPtr<Gio::AppInfo> appInfo =
|
||||
Gio::AppInfo::create_from_commandline(
|
||||
editorInfo.commandline, editorInfo.name, Gio::APP_INFO_CREATE_NONE);
|
||||
success = appInfo->launch(Gio::File::create_for_path(fileName));
|
||||
} catch (const Glib::Error &e) {
|
||||
std::cerr
|
||||
<< "Error launching external editor.\n"
|
||||
|
@ -377,7 +380,7 @@ bool ExtProgStore::openInExternalEditor(const Glib::ustring &fileName, const Gli
|
|||
if (rtengine::settings->verbose) {
|
||||
std::cout << "Unable to launch external editor with Gio. Trying custom launcher." << std::endl;
|
||||
}
|
||||
Glib::ustring command = editorInfo->get_commandline();
|
||||
Glib::ustring command = editorInfo.commandline;
|
||||
#if defined WIN32
|
||||
if (command.length() > 2 && command[0] == '"' && command[command.length() - 1] == '"') {
|
||||
command = command.substr(1, command.length() - 2);
|
||||
|
|
|
@ -42,6 +42,13 @@ struct ExtProgAction
|
|||
bool execute (const std::vector<Glib::ustring>& fileNames) const;
|
||||
};
|
||||
|
||||
struct EditorInfo
|
||||
{
|
||||
Glib::ustring name;
|
||||
Glib::ustring commandline;
|
||||
bool isNativeCommand;
|
||||
};
|
||||
|
||||
// Stores all external programs that could be called by the user
|
||||
class ExtProgStore
|
||||
{
|
||||
|
@ -70,7 +77,7 @@ public:
|
|||
static bool openInGimp (const Glib::ustring& fileName);
|
||||
static bool openInPhotoshop (const Glib::ustring& fileName);
|
||||
static bool openInCustomEditor (const Glib::ustring& fileName, const Glib::ustring* command = nullptr);
|
||||
static bool openInExternalEditor(const Glib::ustring &fileName, const Glib::RefPtr<Gio::AppInfo> &editorInfo, bool nativeCommand);
|
||||
static bool openInExternalEditor(const Glib::ustring &fileName, const EditorInfo &editorInfo);
|
||||
};
|
||||
|
||||
#define extProgStore ExtProgStore::getInstance()
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
|
||||
#include <fstream>
|
||||
#include <glib.h>
|
||||
#include <iostream>
|
||||
#include <utility>
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#include <winnls.h>
|
||||
|
@ -28,6 +30,8 @@
|
|||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#endif
|
||||
|
||||
#include "../rtengine/settings.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
|
@ -162,6 +166,25 @@ void setGtkLanguage(const Glib::ustring &language)
|
|||
|
||||
}
|
||||
|
||||
TranslationMetadata::TranslationMetadata(std::map<std::string, std::string> &&metadata) :
|
||||
metadata(std::move(metadata))
|
||||
{
|
||||
}
|
||||
|
||||
std::string TranslationMetadata::get(const std::string &key, const std::string &default_value) const
|
||||
{
|
||||
const auto found_entry = metadata.find(key);
|
||||
if (found_entry == metadata.end()) {
|
||||
return default_value;
|
||||
}
|
||||
return found_entry->second;
|
||||
}
|
||||
|
||||
std::string TranslationMetadata::getLanguageName(const std::string &default_name) const
|
||||
{
|
||||
return get("LANGUAGE_DISPLAY_NAME", default_name);
|
||||
}
|
||||
|
||||
MultiLangMgr langMgr;
|
||||
|
||||
MultiLangMgr::MultiLangMgr ()
|
||||
|
@ -219,6 +242,77 @@ Glib::ustring MultiLangMgr::getStr (const std::string& key) const
|
|||
return key;
|
||||
}
|
||||
|
||||
const TranslationMetadata *MultiLangMgr::getMetadata(const Glib::ustring &fname) const
|
||||
{
|
||||
static const char comment_symbol = '#';
|
||||
static const char *space_chars = " \t";
|
||||
static const char var_symbol = '@';
|
||||
static const char key_value_separator = '=';
|
||||
|
||||
// Look for the metadata in the cache.
|
||||
const auto &found_metadata = lang_files_metadata.find(fname);
|
||||
if (found_metadata != lang_files_metadata.end()) {
|
||||
return &found_metadata->second;
|
||||
}
|
||||
|
||||
std::ifstream file(fname.c_str());
|
||||
if (!file.is_open()) {
|
||||
if (rtengine::settings->verbose) {
|
||||
std::cerr << "Unable to open language file " << fname << " to get metadata." << std::endl;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (rtengine::settings->verbose) {
|
||||
std::cout << "Reading metadata from language file " << fname << std::endl;
|
||||
}
|
||||
std::map<std::string, std::string> raw_metadata;
|
||||
const auto read_key_value = [&raw_metadata](const std::string &meta_line) {
|
||||
// One metadata key-value pair per line. The format is as follows:
|
||||
// #001 @KEY=VALUE
|
||||
// The line must begin with the comment symbol (#). After the first
|
||||
// sequence of whitespace characters, the metadata variable symbol (@)
|
||||
// must appear. It is followed immediately with the key name. The end of
|
||||
// the key name is marked with the equal sign (=). All remaining
|
||||
// characters until the end of the line make up the metadata value.
|
||||
if (meta_line.empty() || meta_line.front() != comment_symbol) {
|
||||
return;
|
||||
}
|
||||
const auto first_space = meta_line.find_first_of(space_chars, 1);
|
||||
if (first_space == std::string::npos) {
|
||||
return;
|
||||
}
|
||||
const auto definition_start = meta_line.find_first_not_of(space_chars, first_space + 1);
|
||||
if (definition_start == std::string::npos || meta_line[definition_start] != var_symbol) {
|
||||
return;
|
||||
}
|
||||
const auto separator_pos = meta_line.find(key_value_separator, definition_start + 1);
|
||||
if (separator_pos == std::string::npos) {
|
||||
return;
|
||||
}
|
||||
std::string key = meta_line.substr(definition_start + 1, separator_pos - definition_start - 1);
|
||||
std::string value = meta_line.substr(separator_pos + 1);
|
||||
if (rtengine::settings->verbose) {
|
||||
std::cout << "Found metadata key " << key << " with value " << value << std::endl;
|
||||
}
|
||||
raw_metadata.emplace(std::move(key), std::move(value));
|
||||
};
|
||||
|
||||
// Read lines in order. Metadata only appear in the first section of each
|
||||
// file.
|
||||
for (
|
||||
std::string line;
|
||||
std::getline(file, line) && (line.empty() ||
|
||||
line.front() == comment_symbol ||
|
||||
line.find_first_not_of(space_chars) == std::string::npos);) {
|
||||
read_key_value(line);
|
||||
}
|
||||
|
||||
// Add metadata to cache and return.
|
||||
lang_files_metadata[fname] = TranslationMetadata(std::move(raw_metadata));
|
||||
return &lang_files_metadata[fname];
|
||||
}
|
||||
|
||||
bool MultiLangMgr::isOSLanguageDetectSupported ()
|
||||
{
|
||||
#if defined (WIN32) || defined (__linux__) || defined (__APPLE__)
|
||||
|
|
|
@ -24,6 +24,25 @@
|
|||
|
||||
#include <glibmm/ustring.h>
|
||||
|
||||
class TranslationMetadata
|
||||
{
|
||||
public:
|
||||
TranslationMetadata() = default;
|
||||
~TranslationMetadata() = default;
|
||||
TranslationMetadata(const TranslationMetadata &other) = delete;
|
||||
TranslationMetadata(TranslationMetadata &&other) = delete;
|
||||
explicit TranslationMetadata(std::map<std::string, std::string> &&metadata);
|
||||
|
||||
TranslationMetadata &operator =(const TranslationMetadata &other) = delete;
|
||||
TranslationMetadata &operator =(TranslationMetadata &&other) noexcept = default;
|
||||
|
||||
std::string get(const std::string &key, const std::string &default_value) const;
|
||||
std::string getLanguageName(const std::string &default_name) const;
|
||||
|
||||
private:
|
||||
std::map<std::string, std::string> metadata;
|
||||
};
|
||||
|
||||
class MultiLangMgr
|
||||
{
|
||||
public:
|
||||
|
@ -31,11 +50,13 @@ public:
|
|||
|
||||
void load(const Glib::ustring &language, const std::vector<Glib::ustring> &fnames);
|
||||
Glib::ustring getStr(const std::string& key) const;
|
||||
const TranslationMetadata *getMetadata(const Glib::ustring &fname) const;
|
||||
static bool isOSLanguageDetectSupported();
|
||||
static Glib::ustring getOSUserLanguage();
|
||||
|
||||
private:
|
||||
std::map<std::string, Glib::ustring> translations;
|
||||
mutable std::map<Glib::ustring, TranslationMetadata> lang_files_metadata;
|
||||
};
|
||||
|
||||
extern MultiLangMgr langMgr;
|
||||
|
|
|
@ -106,9 +106,32 @@ void PlacesBrowser::refreshPlacesList ()
|
|||
{
|
||||
placesModel->clear ();
|
||||
|
||||
// append favorites
|
||||
for (size_t i = 0; i < options.favoriteDirs.size(); i++) {
|
||||
Glib::RefPtr<Gio::File> fav = Gio::File::create_for_path (options.favoriteDirs[i]);
|
||||
|
||||
if (fav && fav->query_exists()) {
|
||||
try {
|
||||
if (auto info = fav->query_info ()) {
|
||||
Gtk::TreeModel::Row newrow = *(placesModel->append());
|
||||
newrow[placesColumns.label] = info->get_display_name ();
|
||||
newrow[placesColumns.icon] = info->get_icon ();
|
||||
newrow[placesColumns.root] = fav->get_parse_name ();
|
||||
newrow[placesColumns.type] = 5;
|
||||
newrow[placesColumns.rowSeparator] = false;
|
||||
}
|
||||
} catch(Gio::Error&) {}
|
||||
}
|
||||
}
|
||||
|
||||
// append home directory
|
||||
Glib::RefPtr<Gio::File> hfile = Gio::File::create_for_path (userHomeDir()); // Will send back "My documents" on Windows now, which has no restricted access
|
||||
|
||||
if (!placesModel->children().empty()) {
|
||||
Gtk::TreeModel::Row newrow = *(placesModel->append());
|
||||
newrow[placesColumns.rowSeparator] = true;
|
||||
}
|
||||
|
||||
if (hfile && hfile->query_exists()) {
|
||||
try {
|
||||
if (auto info = hfile->query_info ()) {
|
||||
|
@ -223,29 +246,6 @@ void PlacesBrowser::refreshPlacesList ()
|
|||
newrow[placesColumns.rowSeparator] = false;
|
||||
}
|
||||
}
|
||||
|
||||
// append favorites
|
||||
if (!placesModel->children().empty()) {
|
||||
Gtk::TreeModel::Row newrow = *(placesModel->append());
|
||||
newrow[placesColumns.rowSeparator] = true;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < options.favoriteDirs.size(); i++) {
|
||||
Glib::RefPtr<Gio::File> fav = Gio::File::create_for_path (options.favoriteDirs[i]);
|
||||
|
||||
if (fav && fav->query_exists()) {
|
||||
try {
|
||||
if (auto info = fav->query_info ()) {
|
||||
Gtk::TreeModel::Row newrow = *(placesModel->append());
|
||||
newrow[placesColumns.label] = info->get_display_name ();
|
||||
newrow[placesColumns.icon] = info->get_icon ();
|
||||
newrow[placesColumns.root] = fav->get_parse_name ();
|
||||
newrow[placesColumns.type] = 5;
|
||||
newrow[placesColumns.rowSeparator] = false;
|
||||
}
|
||||
} catch(Gio::Error&) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool PlacesBrowser::rowSeparatorFunc (const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::iterator& iter)
|
||||
|
|
|
@ -136,6 +136,21 @@ bool PopUpCommon::insertEntryImpl(int position, const Glib::ustring& fileName, c
|
|||
return true;
|
||||
}
|
||||
|
||||
void PopUpCommon::setEmptyImage(const Glib::ustring &fileName)
|
||||
{
|
||||
emptyImageFilename = fileName;
|
||||
|
||||
if (getEntryCount()) {
|
||||
return;
|
||||
}
|
||||
if (fileName.empty()) {
|
||||
buttonImage->hide();
|
||||
} else {
|
||||
changeImage(emptyImageFilename, Glib::RefPtr<const Gio::Icon>());
|
||||
buttonImage->show();
|
||||
}
|
||||
}
|
||||
|
||||
void PopUpCommon::removeEntry(int position)
|
||||
{
|
||||
if (position < 0 || position >= getEntryCount()) {
|
||||
|
@ -147,8 +162,13 @@ void PopUpCommon::removeEntry(int position)
|
|||
button->get_style_context()->remove_class("Left");
|
||||
arrowButton->hide();
|
||||
hasMenu = false;
|
||||
// Remove the button image.
|
||||
buttonImage->hide();
|
||||
if (emptyImageFilename.empty()) {
|
||||
// Remove the button image.
|
||||
buttonImage->hide();
|
||||
} else {
|
||||
// Show the empty icon.
|
||||
changeImage(emptyImageFilename, Glib::RefPtr<const Gio::Icon>());
|
||||
}
|
||||
selected = -1;
|
||||
}
|
||||
else if (position < selected) {
|
||||
|
|
|
@ -64,6 +64,8 @@ public:
|
|||
bool addEntry (const Glib::ustring& fileName, const Glib::ustring& label, Gtk::RadioButtonGroup* radioGroup = nullptr);
|
||||
bool insertEntry(int position, const Glib::ustring& fileName, const Glib::ustring& label, Gtk::RadioButtonGroup* radioGroup = nullptr);
|
||||
bool insertEntry(int position, const Glib::RefPtr<const Gio::Icon>& gIcon, const Glib::ustring& label, Gtk::RadioButtonGroup* radioGroup = nullptr);
|
||||
/// Sets the button image to show when there are no entries.
|
||||
void setEmptyImage(const Glib::ustring &fileName);
|
||||
int getEntryCount () const;
|
||||
bool setSelected (int entryNum);
|
||||
int getSelected () const;
|
||||
|
@ -77,6 +79,7 @@ private:
|
|||
type_signal_changed messageChanged;
|
||||
type_signal_item_selected messageItemSelected;
|
||||
|
||||
Glib::ustring emptyImageFilename;
|
||||
std::vector<Glib::RefPtr<const Gio::Icon>> imageIcons;
|
||||
std::vector<Glib::ustring> imageFilenames;
|
||||
std::vector<const RTImage*> images;
|
||||
|
|
|
@ -16,21 +16,27 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <sstream>
|
||||
|
||||
#include <glibmm/miscutils.h>
|
||||
#include <glibmm/ustring.h>
|
||||
#include <sigc++/slot.h>
|
||||
#include "externaleditorpreferences.h"
|
||||
#include "preferences.h"
|
||||
#include "multilangmgr.h"
|
||||
#include "splash.h"
|
||||
#include "cachemanager.h"
|
||||
|
||||
#include "addsetids.h"
|
||||
#include "cachemanager.h"
|
||||
#include "externaleditorpreferences.h"
|
||||
#include "multilangmgr.h"
|
||||
#include "preferences.h"
|
||||
#include "rtimage.h"
|
||||
#include "rtwindow.h"
|
||||
#include "splash.h"
|
||||
#include "toollocationpref.h"
|
||||
|
||||
#include "../rtengine/dfmanager.h"
|
||||
#include "../rtengine/ffmanager.h"
|
||||
#include "../rtengine/iccstore.h"
|
||||
#include "../rtengine/procparams.h"
|
||||
#include <sstream>
|
||||
#include "rtimage.h"
|
||||
#include "rtwindow.h"
|
||||
#include "toollocationpref.h"
|
||||
|
||||
#ifdef _OPENMP
|
||||
#include <omp.h>
|
||||
#endif
|
||||
|
@ -1139,9 +1145,14 @@ Gtk::Widget* Preferences::getGeneralPanel()
|
|||
std::vector<Glib::ustring> langs;
|
||||
parseDir(argv0 + "/languages", langs, "");
|
||||
|
||||
for (size_t i = 0; i < langs.size(); i++) {
|
||||
if ("default" != langs[i] && "README" != langs[i] && "LICENSE" != langs[i]) {
|
||||
languages->append(langs[i]);
|
||||
for (const auto &lang : langs) {
|
||||
if ("default" != lang && "README" != lang && "LICENSE" != lang) {
|
||||
auto lang_metadata = langMgr.getMetadata(Glib::build_filename(argv0 + "/languages", lang));
|
||||
const auto &display_name =
|
||||
lang_metadata != nullptr
|
||||
? Glib::ustring(lang_metadata->getLanguageName(lang))
|
||||
: lang;
|
||||
languages->append(lang, display_name);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1765,7 +1776,7 @@ void Preferences::storePreferences()
|
|||
moptions.menuGroupExtProg = ckbmenuGroupExtProg->get_active();
|
||||
moptions.highlightThreshold = (int)hlThresh->get_value();
|
||||
moptions.shadowThreshold = (int)shThresh->get_value();
|
||||
moptions.language = languages->get_active_text();
|
||||
moptions.language = languages->get_active_id();
|
||||
moptions.languageAutoDetect = ckbLangAutoDetect->get_active();
|
||||
moptions.theme = themeFNames.at (themeCBT->get_active_row_number ()).longFName;
|
||||
|
||||
|
@ -1799,7 +1810,12 @@ void Preferences::storePreferences()
|
|||
|
||||
const std::vector<ExternalEditorPreferences::EditorInfo> &editors = externalEditors->getEditors();
|
||||
moptions.externalEditors.resize(editors.size());
|
||||
moptions.externalEditorIndex = -1;
|
||||
moptions.externalEditorIndex =
|
||||
#ifdef __APPLE__
|
||||
editors.empty() ? -1 : 0;
|
||||
#else
|
||||
-1;
|
||||
#endif
|
||||
for (unsigned i = 0; i < editors.size(); i++) {
|
||||
moptions.externalEditors[i] = (ExternalEditor(
|
||||
editors[i].name, editors[i].command, editors[i].native_command, editors[i].icon_serialized));
|
||||
|
@ -2046,7 +2062,7 @@ void Preferences::fillPreferences()
|
|||
}
|
||||
|
||||
cprevdemo->set_active (moptions.prevdemo);
|
||||
languages->set_active_text(moptions.language);
|
||||
languages->set_active_id(moptions.language);
|
||||
ckbLangAutoDetect->set_active(moptions.languageAutoDetect);
|
||||
int themeNbr = getThemeRowNumber(moptions.theme);
|
||||
themeCBT->set_active (themeNbr == -1 ? 0 : themeNbr);
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
# - GTK_PREFIX
|
||||
|
||||
# Formatting
|
||||
fNormal="$(tput sgr0)" >/dev/null 2>&1
|
||||
fBold="$(tput bold)" >/dev/null 2>&1
|
||||
fNormal="$(printf "\e[0m")"
|
||||
fBold="$(printf "\e[1m")"
|
||||
# Colors depend upon the user's terminal emulator color scheme - what is readable for you may be not readable for someone else.
|
||||
fMagenta="$(tput setaf 5)" >/dev/null 2>&1
|
||||
fRed="$(tput setaf 1)" >/dev/null 2>&1
|
||||
fMagenta="$(printf "\e[1;35m")"
|
||||
fRed="$(printf "\e[1;31m")"
|
||||
|
||||
function msg {
|
||||
printf "\\n${fBold}-- %s${fNormal}\\n" "${@}"
|
||||
|
@ -448,7 +448,7 @@ function CreateDmg {
|
|||
msg "Zipping disk image for redistribution:"
|
||||
mkdir "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder"
|
||||
cp {"${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.dmg","${PROJECT_NAME}.app/Contents/MacOS/rawtherapee-cli","${PROJECT_SOURCE_DATA_DIR}/INSTALL.readme.rtf"} "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder"
|
||||
codesign -s - -i com.rawtherapee.rawtherapee-cli -f "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder/rawtherapee-cli"
|
||||
codesign -s "${CODESIGNID}" -i com.rawtherapee.rawtherapee-cli -f "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder/rawtherapee-cli"
|
||||
zip -r "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder/"
|
||||
if [[ -n $NIGHTLY ]]; then
|
||||
cp "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${arch}_latest.zip"
|
||||
|
|
Loading…
Reference in New Issue