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_BUILD;Versió
|
||||||
ABOUT_TAB_CREDITS;Crèdits
|
ABOUT_TAB_CREDITS;Crèdits
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
#00 Chinese (Simplified)
|
#000 Chinese (Simplified)
|
||||||
#01 2008-02-13 Forrest Sun
|
#001 2008-02-13 Forrest Sun
|
||||||
#02 2008-11-06 Yang Gao (grantyale)
|
#002 2008-11-06 Yang Gao (grantyale)
|
||||||
#03 2013-10-20 Jiero
|
#003 2013-10-20 Jiero
|
||||||
#04 2014-10-24 Jie Luo
|
#004 2014-10-24 Jie Luo
|
||||||
#05 2017-09-18 Chongnuo Ji
|
#005 2017-09-18 Chongnuo Ji
|
||||||
#06 2020-08-11 十一元人民币
|
#006 2020-08-11 十一元人民币
|
||||||
#07 2021-09-24 十一元人民币
|
#007 2021-09-24 十一元人民币
|
||||||
#08 2022-07-26 十一元人民币
|
#008 2022-07-26 十一元人民币
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=简体中文
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;版本
|
ABOUT_TAB_BUILD;版本
|
||||||
ABOUT_TAB_CREDITS;致谢名单
|
ABOUT_TAB_CREDITS;致谢名单
|
||||||
|
@ -1,51 +1,53 @@
|
|||||||
#00 Czech
|
#000 Czech
|
||||||
#01 2008-01-20 translated by absolution
|
#001 2008-01-20 translated by absolution
|
||||||
#02 2008-02-21 updated by mkyral (typos and some missing strings)
|
#002 2008-02-21 updated by mkyral (typos and some missing strings)
|
||||||
#03 2008-04-24 updated by mkyral (for version 2.4m1)
|
#003 2008-04-24 updated by mkyral (for version 2.4m1)
|
||||||
#04 2008-10-28 updated by mkyral (for version 2.4 beta1)
|
#004 2008-10-28 updated by mkyral (for version 2.4 beta1)
|
||||||
#05 2010-11-25 updated by mkyral (for version 3.0)
|
#005 2010-11-25 updated by mkyral (for version 3.0)
|
||||||
#06 2011-03-06 updated by mkyral (default branch)
|
#006 2011-03-06 updated by mkyral (default branch)
|
||||||
#07 2011-03-20 updated by mkyral (default branch)
|
#007 2011-03-20 updated by mkyral (default branch)
|
||||||
#08 2011-05-01 updated by mkyral
|
#008 2011-05-01 updated by mkyral
|
||||||
#09 2011-05-18 updated by mkyral
|
#009 2011-05-18 updated by mkyral
|
||||||
#10 2011-06-04 updated by mkyral
|
#010 2011-06-04 updated by mkyral
|
||||||
#11 2011-06-12 updated by mkyral
|
#011 2011-06-12 updated by mkyral
|
||||||
#12 2011-06-16 updated by mkyral
|
#012 2011-06-16 updated by mkyral
|
||||||
#13 2011-07-03 updated by mkyral
|
#013 2011-07-03 updated by mkyral
|
||||||
#14 2011-07-08 updated by mkyral
|
#014 2011-07-08 updated by mkyral
|
||||||
#15 2011-09-04 updated by mkyral
|
#015 2011-09-04 updated by mkyral
|
||||||
#16 2011-09-06 updated by mkyral
|
#016 2011-09-06 updated by mkyral
|
||||||
#17 2011-11-12 updated by mkyral
|
#017 2011-11-12 updated by mkyral
|
||||||
#18 2011-12-29 updated by mkyral
|
#018 2011-12-29 updated by mkyral
|
||||||
#19 2012-02-22 updated by mkyral
|
#019 2012-02-22 updated by mkyral
|
||||||
#20 2012-04-28 updated by mkyral
|
#020 2012-04-28 updated by mkyral
|
||||||
#21 2012-10-10 updated by mkyral
|
#021 2012-10-10 updated by mkyral
|
||||||
#22 2012-11-27 updated by mkyral
|
#022 2012-11-27 updated by mkyral
|
||||||
#23 2013-03-12 updated by mkyral
|
#023 2013-03-12 updated by mkyral
|
||||||
#24 2013-04-12 updated by mkyral
|
#024 2013-04-12 updated by mkyral
|
||||||
#25 2013-09-12 updated by mkyral
|
#025 2013-09-12 updated by mkyral
|
||||||
#26 2013-09-17 updated by mkyral
|
#026 2013-09-17 updated by mkyral
|
||||||
#27 2013-12-09 updated by mkyral
|
#027 2013-12-09 updated by mkyral
|
||||||
#28 2014-01-07 updated by mkyral
|
#028 2014-01-07 updated by mkyral
|
||||||
#29 2014-04-08 updated by mkyral
|
#029 2014-04-08 updated by mkyral
|
||||||
#30 2014-04-30 updated by mkyral
|
#030 2014-04-30 updated by mkyral
|
||||||
#31 2014-05-12 updated by mkyral
|
#031 2014-05-12 updated by mkyral
|
||||||
#32 2014-10-24 updated by mkyral
|
#032 2014-10-24 updated by mkyral
|
||||||
#33 2015-02-22 updated by mkyral
|
#033 2015-02-22 updated by mkyral
|
||||||
#34 2015-07-09 updated by mkyral
|
#034 2015-07-09 updated by mkyral
|
||||||
#35 2015-11-24 updated by mkyral
|
#035 2015-11-24 updated by mkyral
|
||||||
#36 2016-10-18 updated by mkyral
|
#036 2016-10-18 updated by mkyral
|
||||||
#37 2017-01-10 updated by mkyral
|
#037 2017-01-10 updated by mkyral
|
||||||
#38 2017-04-26 updated by mkyral
|
#038 2017-04-26 updated by mkyral
|
||||||
#39 2017-07-21 updated by mkyral
|
#039 2017-07-21 updated by mkyral
|
||||||
#40 2017-12-13 updated by mkyral
|
#040 2017-12-13 updated by mkyral
|
||||||
#41 2018-03-03 updated by mkyral
|
#041 2018-03-03 updated by mkyral
|
||||||
#42 2018-10-24 updated by mkyral
|
#042 2018-10-24 updated by mkyral
|
||||||
#43 2018-12-04 updated by mkyral
|
#043 2018-12-04 updated by mkyral
|
||||||
#44 2018-12-13 updated by mkyral
|
#044 2018-12-13 updated by mkyral
|
||||||
#45 2020-04-20 updated by mkyral
|
#045 2020-04-20 updated by mkyral
|
||||||
#46 2020-04-21 updated by mkyral
|
#046 2020-04-21 updated by mkyral
|
||||||
#47 2020-06-02 updated by mkyral
|
#047 2020-06-02 updated by mkyral
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Čeština
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Verze
|
ABOUT_TAB_BUILD;Verze
|
||||||
ABOUT_TAB_CREDITS;Zásluhy
|
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_BUILD;Version
|
||||||
ABOUT_TAB_CREDITS;Credits
|
ABOUT_TAB_CREDITS;Credits
|
||||||
|
@ -1,90 +1,92 @@
|
|||||||
#01 keenonkites; Aktualisierte Version für 2.3 beta2
|
#001 keenonkites; Aktualisierte Version für 2.3 beta2
|
||||||
#02 phberlin; basiert auf keenonkites' Erstübersetzung
|
#002 phberlin; basiert auf keenonkites' Erstübersetzung
|
||||||
#03 2007-12-20
|
#003 2007-12-20
|
||||||
#04 2007-12-22
|
#004 2007-12-22
|
||||||
#05 2008-01-08
|
#005 2008-01-08
|
||||||
#06 2008-01-15
|
#006 2008-01-15
|
||||||
#07 2008-02-20
|
#007 2008-02-20
|
||||||
#08 2008-12-19 keenonkites, Anpassungen für 2.4beta4
|
#008 2008-12-19 keenonkites, Anpassungen für 2.4beta4
|
||||||
#09 2008-09-20 keenonkites, Anpassungen für 2.4m2
|
#009 2008-09-20 keenonkites, Anpassungen für 2.4m2
|
||||||
#10 2008-04-04 Anpassungen für 2.4
|
#010 2008-04-04 Anpassungen für 2.4
|
||||||
#11 Leichte Anpassungen (keenonkites/klonk)
|
#011 Leichte Anpassungen (keenonkites/klonk)
|
||||||
#12 Erweiterung (oduis)
|
#012 Erweiterung (oduis)
|
||||||
#13 Erweiterung (oduis)
|
#013 Erweiterung (oduis)
|
||||||
#14 Erweiterung (oduis)
|
#014 Erweiterung (oduis)
|
||||||
#15 Erweiterung (oduis)
|
#015 Erweiterung (oduis)
|
||||||
#16 2012-12-05 3.0 alpha: Erweiterung und Korrekturen (Metex)
|
#016 2012-12-05 3.0 alpha: Erweiterung und Korrekturen (Metex)
|
||||||
#17 2012-04-29 Erweiterungen und Korrekturen (MaWe)
|
#017 2012-04-29 Erweiterungen und Korrekturen (MaWe)
|
||||||
#18 Erweiterung (oduis)
|
#018 Erweiterung (oduis)
|
||||||
#19 Erweiterung (oduis)
|
#019 Erweiterung (oduis)
|
||||||
#20 2013-02-27 Erweiterung (cytrinox)
|
#020 2013-02-27 Erweiterung (cytrinox)
|
||||||
#21 2013-12-31 Erweiterung (Ingo)
|
#021 2013-12-31 Erweiterung (Ingo)
|
||||||
#22 2015-09-04 komplette Überarbeitung (TooWaBoo)
|
#022 2015-09-04 komplette Überarbeitung (TooWaBoo)
|
||||||
#23 2015-10-24 Retinexübersetzung und Korrekturen (TooWaBoo)
|
#023 2015-10-24 Retinexübersetzung und Korrekturen (TooWaBoo)
|
||||||
#24 2015-11-01 Korrekturen (TooWaBoo) RT4.2.450
|
#024 2015-11-01 Korrekturen (TooWaBoo) RT4.2.450
|
||||||
#25 2015-11-30 Korrekturen (TooWaBoo) RT4.2.507
|
#025 2015-11-30 Korrekturen (TooWaBoo) RT4.2.507
|
||||||
#26 2015-12-13 Korrekturen (TooWaBoo) RT4.2.514
|
#026 2015-12-13 Korrekturen (TooWaBoo) RT4.2.514
|
||||||
#26 2015-12-22 Korrekturen (TooWaBoo) RT4.2.536
|
#026 2015-12-22 Korrekturen (TooWaBoo) RT4.2.536
|
||||||
#27 2016-02-12 Retinexübersetzung (TooWaBoo) RT4.2.730
|
#027 2016-02-12 Retinexübersetzung (TooWaBoo) RT4.2.730
|
||||||
#28 2016-03-19 Erweiterung/Korrekturen (TooWaBoo) RT4.2.880
|
#028 2016-03-19 Erweiterung/Korrekturen (TooWaBoo) RT4.2.880
|
||||||
#29 2016-05-24 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1005
|
#029 2016-05-24 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1005
|
||||||
#30 2016-09-30 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1234
|
#030 2016-09-30 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1234
|
||||||
#31 2016-12-01 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1408
|
#031 2016-12-01 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1408
|
||||||
#32 2016-12-29 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1464
|
#032 2016-12-29 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1464
|
||||||
#33 2017-01-04 Erweiterung/Korrekturen/Soft-Proofing (TooWaBoo) RT4.2.1477
|
#033 2017-01-04 Erweiterung/Korrekturen/Soft-Proofing (TooWaBoo) RT4.2.1477
|
||||||
#34 2017-01-07 IPTC (TooWaBoo) RT4.2.1492
|
#034 2017-01-07 IPTC (TooWaBoo) RT4.2.1492
|
||||||
#35 2017-02-18 AWB bias (TooWaBoo) RT 5.0 r1
|
#035 2017-02-18 AWB bias (TooWaBoo) RT 5.0 r1
|
||||||
#36 2017-02-23 Korrekturen (TooWaBoo) RT 5.0 r1
|
#036 2017-02-23 Korrekturen (TooWaBoo) RT 5.0 r1
|
||||||
#37 2017-03-06 Dynamisches Profil (TooWaBoo) RT 5.0 r1
|
#037 2017-03-06 Dynamisches Profil (TooWaBoo) RT 5.0 r1
|
||||||
#38 2017-03-26 Pixel-Shift (TooWaBoo) RT 5.0 r1
|
#038 2017-03-26 Pixel-Shift (TooWaBoo) RT 5.0 r1
|
||||||
#39 06.04.2017 Fast Export (TooWaBoo) RT 5.0 r1
|
#039 06.04.2017 Fast Export (TooWaBoo) RT 5.0 r1
|
||||||
#40 30.04.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
|
#040 30.04.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
|
||||||
#41 03.05.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
|
#041 03.05.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
|
||||||
#42 13.05.2017 Erweiterung (TooWaBoo) RT 5.0 r1
|
#042 13.05.2017 Erweiterung (TooWaBoo) RT 5.0 r1
|
||||||
#43 21.07.2017 Erweiterung (TooWaBoo) RT 5.1
|
#043 21.07.2017 Erweiterung (TooWaBoo) RT 5.1
|
||||||
#44 21.09.2017 Erweiterung (TooWaBoo) RT 5.2
|
#044 21.09.2017 Erweiterung (TooWaBoo) RT 5.2
|
||||||
#45 15.10.2017 Erweiterung (TooWaBoo) RT 5.3
|
#045 15.10.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||||
#46 18.10.2017 Erweiterung (TooWaBoo) RT 5.3
|
#046 18.10.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||||
#47 19.11.2017 HDR-Dynamikkompression (TooWaBoo) RT 5.3
|
#047 19.11.2017 HDR-Dynamikkompression (TooWaBoo) RT 5.3
|
||||||
#48 13.12.2017 Erweiterung (TooWaBoo) RT 5.3
|
#048 13.12.2017 Erweiterung (TooWaBoo) RT 5.3
|
||||||
#49 21.12.2017 Lokaler Kontrast (TooWaBoo) RT 5.3
|
#049 21.12.2017 Lokaler Kontrast (TooWaBoo) RT 5.3
|
||||||
#50 07.01.2018 Crop Settings (TooWaBoo) RT 5.3
|
#050 07.01.2018 Crop Settings (TooWaBoo) RT 5.3
|
||||||
#51 10.02.2018 Erweiterung (TooWaBoo) RT 5.3
|
#051 10.02.2018 Erweiterung (TooWaBoo) RT 5.3
|
||||||
#52 10.02.2018 Korrektur (TooWaBoo) RT 5.3
|
#052 10.02.2018 Korrektur (TooWaBoo) RT 5.3
|
||||||
#53 26.02.2018 Erweiterung (TooWaBoo) RT 5.3
|
#053 26.02.2018 Erweiterung (TooWaBoo) RT 5.3
|
||||||
#54 30.03.2018 Erweiterung (TooWaBoo) RT 5.4
|
#054 30.03.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#55 06.04.2018 Erweiterung (TooWaBoo) RT 5.4
|
#055 06.04.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#56 27.04.2018 Erweiterung (TooWaBoo) RT 5.4
|
#056 27.04.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#57 17.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
#057 17.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#58 19.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
#058 19.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#59 29.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
#059 29.05.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#60 14.06.2018 Erweiterung (TooWaBoo) RT 5.4
|
#060 14.06.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#61 14.06.2018 Korrektur (TooWaBoo) RT 5.4
|
#061 14.06.2018 Korrektur (TooWaBoo) RT 5.4
|
||||||
#62 22.06.2018 Korrektur (TooWaBoo) RT 5.4
|
#062 22.06.2018 Korrektur (TooWaBoo) RT 5.4
|
||||||
#63 24.06.2018 DCB/RCD+VNG4 (TooWaBoo) RT 5.4
|
#063 24.06.2018 DCB/RCD+VNG4 (TooWaBoo) RT 5.4
|
||||||
#64 24.06.2018 Erweiterung/Korrektur (TooWaBoo) RT 5.4
|
#064 24.06.2018 Erweiterung/Korrektur (TooWaBoo) RT 5.4
|
||||||
#65 25.06.2018 Korrekturen (TooWaBoo) RT 5.4
|
#065 25.06.2018 Korrekturen (TooWaBoo) RT 5.4
|
||||||
#66 04.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
#066 04.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#67 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
#067 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#68 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
#068 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#69 25.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
#069 25.07.2018 Erweiterung (TooWaBoo) RT 5.4
|
||||||
#70 25.07.2018 Korrekturen (TooWaBoo) RT 5.4
|
#070 25.07.2018 Korrekturen (TooWaBoo) RT 5.4
|
||||||
#71 28.09.2018 Korrekturen (TooWaBoo) RT 5.5
|
#071 28.09.2018 Korrekturen (TooWaBoo) RT 5.5
|
||||||
#72 05.10.2018 Korrekturen (TooWaBoo) RT 5.5
|
#072 05.10.2018 Korrekturen (TooWaBoo) RT 5.5
|
||||||
#73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5
|
#073 21.11.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||||
#74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5
|
#074 24.11.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||||
#75 02.12.2018 Erweiterung (TooWaBoo) RT 5.5
|
#075 02.12.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||||
#76 11.12.2018 Erweiterung (TooWaBoo) RT 5.5
|
#076 11.12.2018 Erweiterung (TooWaBoo) RT 5.5
|
||||||
#77 16.12.2018 Korrektur Farbwähler-Tooltip (TooWaBoo) RT 5.5
|
#077 16.12.2018 Korrektur Farbwähler-Tooltip (TooWaBoo) RT 5.5
|
||||||
#78 19.01.2019 Erweiterung (TooWaBoo) RT 5.5
|
#078 19.01.2019 Erweiterung (TooWaBoo) RT 5.5
|
||||||
#79 24.02.2019 Erweiterung (TooWaBoo) RT 5.5
|
#079 24.02.2019 Erweiterung (TooWaBoo) RT 5.5
|
||||||
#80 25.03.2019 Erweiterung (TooWaBoo) RT 5.6
|
#080 25.03.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||||
#81 15.04.2019 Erweiterung (TooWaBoo) RT 5.6
|
#081 15.04.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||||
#82 25.05.2019 Erweiterung (TooWaBoo) RT 5.6
|
#082 25.05.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||||
#83 06.07.2019 Erweiterung (TooWaBoo) RT 5.6
|
#083 06.07.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||||
#84 06.10.2019 Erweiterung (TooWaBoo) RT 5.7
|
#084 06.10.2019 Erweiterung (TooWaBoo) RT 5.7
|
||||||
#84 18.07.2019 Erweiterung (TooWaBoo) RT 5.6
|
#084 18.07.2019 Erweiterung (TooWaBoo) RT 5.6
|
||||||
#85 29.07.2022 Erweiterung (marter, mozzihh) RT 5.9
|
#085 29.07.2022 Erweiterung (marter, mozzihh) RT 5.9
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Deutsch
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Version
|
ABOUT_TAB_BUILD;Version
|
||||||
ABOUT_TAB_CREDITS;Danksagungen
|
ABOUT_TAB_CREDITS;Danksagungen
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#01 Español - Castellano
|
#001 Español - Castellano
|
||||||
#02 2022-10-08 Francisco Lorés y Javier Bartol, para la versión 5.9
|
#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_BUILD;Versión
|
||||||
ABOUT_TAB_CREDITS;Reconocimientos
|
ABOUT_TAB_CREDITS;Reconocimientos
|
||||||
|
@ -1,66 +1,68 @@
|
|||||||
#01 Latin America - Spanish
|
#001 Latin America - Spanish
|
||||||
#02 Conventions used to keep the same writing style along new texts and versions
|
#002 Conventions used to keep the same writing style along new texts and versions
|
||||||
#03
|
#003
|
||||||
#04 Abreviaturas (Abbreviations)
|
#004 Abreviaturas (Abbreviations)
|
||||||
#05 -----------------------------
|
#005 -----------------------------
|
||||||
#06 AC: Aberración cromática (fringe)
|
#006 AC: Aberración cromática (fringe)
|
||||||
#07 B&N: Blanco y Negro (Black & White)
|
#007 B&N: Blanco y Negro (Black & White)
|
||||||
#08 CV: Corrección de Viñeteado (Vignette Filter: in Transform tab)
|
#008 CV: Corrección de Viñeteado (Vignette Filter: in Transform tab)
|
||||||
#09 FG: Filtro Graduado (Gradient Filter)
|
#009 FG: Filtro Graduado (Gradient Filter)
|
||||||
#10 FV: Filtrar Viñeteado (Vignette Filter: in Exposure tab)
|
#010 FV: Filtrar Viñeteado (Vignette Filter: in Exposure tab)
|
||||||
#11 MC: Mezclador de canales (Channel Mixer)
|
#011 MC: Mezclador de canales (Channel Mixer)
|
||||||
#12 RGB: Modelo de color Rojo Verde Azul (Red Green Blue)
|
#012 RGB: Modelo de color Rojo Verde Azul (Red Green Blue)
|
||||||
#13 WB: Balance de blancos (White Balance)
|
#013 WB: Balance de blancos (White Balance)
|
||||||
#14
|
#014
|
||||||
#15 Convención de traducción de términos importantes,
|
#015 Convención de traducción de términos importantes,
|
||||||
#16 sin equivalente estándar o poco conocidos en español:
|
#016 sin equivalente estándar o poco conocidos en español:
|
||||||
#17 ---------------------------------------------
|
#017 ---------------------------------------------
|
||||||
#18 Artifacts: Elementos extraños
|
#018 Artifacts: Elementos extraños
|
||||||
#19 Brightness: Brillo
|
#019 Brightness: Brillo
|
||||||
#20 Checkbox: Casilla (seleccionada/desmarcada)
|
#020 Checkbox: Casilla (seleccionada/desmarcada)
|
||||||
#21 Chroma: Crominancia (**, definida en es.wikipedia)
|
#021 Chroma: Crominancia (**, definida en es.wikipedia)
|
||||||
#22 Chromatic: Cromática (*)
|
#022 Chromatic: Cromática (*)
|
||||||
#23 Chromaticity: Cromaticidad (**)
|
#023 Chromaticity: Cromaticidad (**)
|
||||||
#24 Colorfulness: Colorido
|
#024 Colorfulness: Colorido
|
||||||
#25 Cyan: Cian (*)
|
#025 Cyan: Cian (*)
|
||||||
#26 Dark Frame: Toma Negra
|
#026 Dark Frame: Toma Negra
|
||||||
#27 Dim: Luz tenue
|
#027 Dim: Luz tenue
|
||||||
#28 Feather: Difuminado
|
#028 Feather: Difuminado
|
||||||
#29 Illuminant: Iluminante
|
#029 Illuminant: Iluminante
|
||||||
#30 Lightness: Claridad
|
#030 Lightness: Claridad
|
||||||
#31 Luminance: Luminancia (*)
|
#031 Luminance: Luminancia (*)
|
||||||
#32 Luminosity: Luminosidad
|
#032 Luminosity: Luminosidad
|
||||||
#33 Mapping: Mapeo (*)
|
#033 Mapping: Mapeo (*)
|
||||||
#34 Sharpening: Enfoque
|
#034 Sharpening: Enfoque
|
||||||
#35 Slider: Control deslizante
|
#035 Slider: Control deslizante
|
||||||
#36 Tone Curve: Curva tonal
|
#036 Tone Curve: Curva tonal
|
||||||
#37 Vibrance: Vibranza
|
#037 Vibrance: Vibranza
|
||||||
#38
|
#038
|
||||||
#39 (*) Término incluido en diccionario RAE
|
#039 (*) Término incluido en diccionario RAE
|
||||||
#40 (**) Término no incluido en diccionario RAE
|
#040 (**) Término no incluido en diccionario RAE
|
||||||
#41
|
#041
|
||||||
#42 Términos conservados en Inglés por no tener traducción breve
|
#042 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
|
#043 al español en el sentido usado por RT/fotografía digital
|
||||||
#44 -----------------------------------------------------
|
#044 -----------------------------------------------------
|
||||||
#45 ICM (Image Color Management)
|
#045 ICM (Image Color Management)
|
||||||
#46 Gamut
|
#046 Gamut
|
||||||
#47 Gamma
|
#047 Gamma
|
||||||
#48 Raw
|
#048 Raw
|
||||||
#49
|
#049
|
||||||
#50 2008-01-15 keenonkites, first translation
|
#050 2008-01-15 keenonkites, first translation
|
||||||
#51 2008-03-03 Ioritz Ibarguren, corrections
|
#051 2008-03-03 Ioritz Ibarguren, corrections
|
||||||
#52 2008-04-05 keenonkites, completed for 2.4m1
|
#052 2008-04-05 keenonkites, completed for 2.4m1
|
||||||
#53 2008-04-09 Ramon, partly corrected (part of 2.3)
|
#053 2008-04-09 Ramon, partly corrected (part of 2.3)
|
||||||
#54 2008-04-29 Ramon, small correction
|
#054 2008-04-29 Ramon, small correction
|
||||||
#55 2008-06-09 Ramon, Adaptions regarding 2.4m1 and others
|
#055 2008-06-09 Ramon, Adaptions regarding 2.4m1 and others
|
||||||
#56 2008-09-20 keenonkites, first version for 2.4m2
|
#056 2008-09-20 keenonkites, first version for 2.4m2
|
||||||
#57 2008-12-19 keenonkites, first version for 2.4beta4
|
#057 2008-12-19 keenonkites, first version for 2.4beta4
|
||||||
#58 2010-12-07 rickydh, some translations of untranslated keys for 3.0 alpha1
|
#058 2010-12-07 rickydh, some translations of untranslated keys for 3.0 alpha1
|
||||||
#59 2011-12-25 plores, translation improvement, translation of untranslated strings
|
#059 2011-12-25 plores, translation improvement, translation of untranslated strings
|
||||||
#60 2013-01-03 OdeLama, translation for v4.0.12 of untranslated/changed strings
|
#060 2013-01-03 OdeLama, translation for v4.0.12 of untranslated/changed strings
|
||||||
#61 2014-01-14 mapelo, bug correction and small enhancements.
|
#061 2014-01-14 mapelo, bug correction and small enhancements.
|
||||||
#62 2014-10-10 fotger
|
#062 2014-10-10 fotger
|
||||||
#63 2018-12-09 Faber777
|
#063 2018-12-09 Faber777
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Español (Latinoamericano)
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Versión
|
ABOUT_TAB_BUILD;Versión
|
||||||
ABOUT_TAB_CREDITS;Créditos
|
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_BUILD;Version
|
||||||
ABOUT_TAB_CREDITS;Crédits
|
ABOUT_TAB_CREDITS;Crédits
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
#01 2008-01-19 v2.3 breek
|
#001 2008-01-19 v2.3 breek
|
||||||
#02 2008-11-01 v2.4 pantaraf, chelidon, roberto
|
#002 2008-11-01 v2.4 pantaraf, chelidon, roberto
|
||||||
#03 2011-08-26 v3.0 joker, chelidon, ffsup2
|
#003 2011-08-26 v3.0 joker, chelidon, ffsup2
|
||||||
#04 2011-08-31 v4.0 chelidon, ffsup2
|
#004 2011-08-31 v4.0 chelidon, ffsup2
|
||||||
#05 2014-04-21 crx
|
#005 2014-04-21 crx
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Italiano
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Versione
|
ABOUT_TAB_BUILD;Versione
|
||||||
ABOUT_TAB_CREDITS;Riconoscimenti
|
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_BUILD;バージョン
|
||||||
ABOUT_TAB_CREDITS;クレジット
|
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_BUILD;Verzió
|
||||||
ABOUT_TAB_CREDITS;Szerzők
|
ABOUT_TAB_CREDITS;Szerzők
|
||||||
|
@ -1,20 +1,22 @@
|
|||||||
#01 2007-12-26 Rens Duijsens en Brent Huisman
|
#001 2007-12-26 Rens Duijsens en Brent Huisman
|
||||||
#02 2008-03-14 updated by reggybe
|
#002 2008-03-14 updated by reggybe
|
||||||
#03 2009-02-01 updated to RT2.4-RC by paul.matthijsse
|
#003 2009-02-01 updated to RT2.4-RC by paul.matthijsse
|
||||||
#04 2010-05-02 updated to rt3a1 by paul.matthijsse
|
#004 2010-05-02 updated to rt3a1 by paul.matthijsse
|
||||||
#05 2011-03-03 updated to rt3a2 by paul.matthijsse
|
#005 2011-03-03 updated to rt3a2 by paul.matthijsse
|
||||||
#06 2011-10-10 updated to rt4.0 by wim ter meer
|
#006 2011-10-10 updated to rt4.0 by wim ter meer
|
||||||
#07 2011-11-28 updated by pm
|
#007 2011-11-28 updated by pm
|
||||||
#08 2012-05-17 updated to rt4.0.8 by wim ter meer
|
#008 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
|
#009 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
|
#010 2013-11-27 updated to rt4.0.11 by wim ter meer
|
||||||
#11 2014-03-24 updated to rt4.1 by wim ter meer
|
#011 2014-03-24 updated to rt4.1 by wim ter meer
|
||||||
#12 2014-10-19 updated to rt4.1.92 by wim ter meer
|
#012 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
|
#013 2015-03-03 updated to rt4.2.102 by wim ter meer
|
||||||
#14 2015-11-23 update by wim ter meer
|
#014 2015-11-23 update by wim ter meer
|
||||||
#15 2016-07-21 update by wim ter meer
|
#015 2016-07-21 update by wim ter meer
|
||||||
#16 2017-04-21 update by wim ter meer
|
#016 2017-04-21 update by wim ter meer
|
||||||
#17 2020-06-05 update by dheijl
|
#017 2020-06-05 update by dheijl
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Nederlands
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Versie
|
ABOUT_TAB_BUILD;Versie
|
||||||
ABOUT_TAB_CREDITS;Credits
|
ABOUT_TAB_CREDITS;Credits
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
#01 2007-12-24 Mateusz Ludwin
|
#001 2007-12-24 Mateusz Ludwin
|
||||||
#02 2010-01-08 Bartosz "Simek" Kaszubowski
|
#002 2010-01-08 Bartosz "Simek" Kaszubowski
|
||||||
#03 2011-09-06 Dariusz 'Salvadhor' Duma
|
#003 2011-09-06 Dariusz 'Salvadhor' Duma
|
||||||
#04 2011-11-30 DrSlony
|
#004 2011-11-30 DrSlony
|
||||||
#05 2012-01-14 DrSlony
|
#005 2012-01-14 DrSlony
|
||||||
#06 2012-01-30 DrSlony
|
#006 2012-01-30 DrSlony
|
||||||
#07 2012-04-02 DrSlony
|
#007 2012-04-02 DrSlony
|
||||||
#08 2013-05-21 DrSlony
|
#008 2013-05-21 DrSlony
|
||||||
#09 2014-10-16 DrSlony
|
#009 2014-10-16 DrSlony
|
||||||
#10 2020-02-02 Bartłomiej Wiśniowski
|
#010 2020-02-02 Bartłomiej Wiśniowski
|
||||||
#11 2020-02-02 Bartłomiej Wiśniowski
|
#011 2020-02-02 Bartłomiej Wiśniowski
|
||||||
#12 2020-02-15 Bartłomiej Wiśniowski
|
#012 2020-02-15 Bartłomiej Wiśniowski
|
||||||
#13 2020-02-17 Bartłomiej Wiśniowski
|
#013 2020-02-17 Bartłomiej Wiśniowski
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Polski
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Wersja
|
ABOUT_TAB_BUILD;Wersja
|
||||||
ABOUT_TAB_CREDITS;Zasługi
|
ABOUT_TAB_CREDITS;Zasługi
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#01 2018-07-25 Digitalpix58
|
#001 2018-07-25 Digitalpix58
|
||||||
#02 2019-03-11 Xendez
|
#002 2019-03-11 Xendez
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Português
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Versão
|
ABOUT_TAB_BUILD;Versão
|
||||||
ABOUT_TAB_CREDITS;Créditos
|
ABOUT_TAB_CREDITS;Créditos
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#01 2018-07-25 Digitalpix58
|
#001 2018-07-25 Digitalpix58
|
||||||
#02 2019-03-12 Xendez
|
#002 2019-03-12 Xendez
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Português brasileiro
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Versão
|
ABOUT_TAB_BUILD;Versão
|
||||||
ABOUT_TAB_CREDITS;Créditos
|
ABOUT_TAB_CREDITS;Créditos
|
||||||
|
@ -45,6 +45,13 @@ comments in the right order, e.g.:
|
|||||||
#01 Line 2...
|
#01 Line 2...
|
||||||
#02 3, etc.
|
#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
|
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
|
sed with the "y" command. For example, to create a latin-only "Polish (Latin
|
||||||
Characters)" file from the non-latin "Polish" one:
|
Characters)" file from the non-latin "Polish" one:
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
#01 2007-12-23 ArtDen
|
#001 2007-12-23 ArtDen
|
||||||
#02 2008-07-20 Denis Artemov
|
#002 2008-07-20 Denis Artemov
|
||||||
#03 2009-02-16 Kvark
|
#003 2009-02-16 Kvark
|
||||||
#04 2010-02-26 Sergey Smirnov AKA smiserg
|
#004 2010-02-26 Sergey Smirnov AKA smiserg
|
||||||
#05 2010-11-01 Ilia Popov <ilia_popov@rambler.ru>
|
#005 2010-11-01 Ilia Popov <ilia_popov@rambler.ru>
|
||||||
#06 2012-07-17 Roman Milanskij <loooooker@gmail.com>
|
#006 2012-07-17 Roman Milanskij <loooooker@gmail.com>
|
||||||
#07 2014-02-12 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
#007 2014-02-12 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
||||||
#08 2018-02-10 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
#008 2018-02-10 Kostia (Kildor) Romanov <kromanov@gmail.com>
|
||||||
#09 2018-12-13 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_BUILD;Версия
|
||||||
ABOUT_TAB_CREDITS;Авторы
|
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_BUILD;Издање
|
||||||
ABOUT_TAB_CREDITS;Заслуге
|
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_BUILD;Verzija
|
||||||
ABOUT_TAB_CREDITS;Zasluge
|
ABOUT_TAB_CREDITS;Zasluge
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
#01 2008-01-22 Emil Ericsson
|
#001 2008-01-22 Emil Ericsson
|
||||||
#02 2010-2013 Updated by Johan Thor
|
#002 2010-2013 Updated by Johan Thor
|
||||||
#03 2015-08-09 Johan Thor
|
#003 2015-08-09 Johan Thor
|
||||||
#04 2016-12-30 Johan Thor
|
#004 2016-12-30 Johan Thor
|
||||||
|
#100
|
||||||
|
#101 @LANGUAGE_DISPLAY_NAME=Svenska
|
||||||
|
|
||||||
ABOUT_TAB_BUILD;Version
|
ABOUT_TAB_BUILD;Version
|
||||||
ABOUT_TAB_CREDITS;Erkännande
|
ABOUT_TAB_CREDITS;Erkännande
|
||||||
|
@ -227,6 +227,8 @@ menu separator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#PlacesPaned .view.separator {
|
#PlacesPaned .view.separator {
|
||||||
|
min-height: 0.16666666666666666em;
|
||||||
|
color: #363636;
|
||||||
}
|
}
|
||||||
|
|
||||||
#MetaPanelNotebook separator {
|
#MetaPanelNotebook separator {
|
||||||
|
@ -207,6 +207,8 @@ menu separator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#PlacesPaned .view.separator {
|
#PlacesPaned .view.separator {
|
||||||
|
min-height: 0.16666666666666666em;
|
||||||
|
color: #363636;
|
||||||
}
|
}
|
||||||
|
|
||||||
#MetaPanelNotebook separator {
|
#MetaPanelNotebook separator {
|
||||||
|
@ -123,6 +123,7 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
double cared,
|
double cared,
|
||||||
double cablue,
|
double cablue,
|
||||||
bool avoidColourshift,
|
bool avoidColourshift,
|
||||||
|
int border_crop,
|
||||||
array2D<float> &rawData,
|
array2D<float> &rawData,
|
||||||
double* fitParamsTransfer,
|
double* fitParamsTransfer,
|
||||||
bool fitParamsIn,
|
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)}};
|
const unsigned int cfa[2][2] = {{FC(0,0), FC(0,1)}, {FC(1,0), FC(1,1)}};
|
||||||
constexpr int ts = 128;
|
constexpr int ts = 128;
|
||||||
constexpr int tsh = ts / 2;
|
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
|
//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;
|
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",
|
"make_model": "Canon EOS 7D Mark II",
|
||||||
"dcraw_matrix": [ 7268,-1082,-969,-4186,11839,2663,-825,2029,5839 ], // dng_v8.7 d65
|
"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
|
//"dcraw_matrix": [ 6285,-147,-821,-4080,11695,2714,-1045,2459,5497 ], // DXO D50
|
||||||
|
"raw_crop": [ 72, 38, 5496, 3669 ],
|
||||||
"ranges": {
|
"ranges": {
|
||||||
"white": [
|
"white": [
|
||||||
{ "iso": [ 100, 125 ], "levels": 13500 }, // typical 13583 - LENR 13550
|
{ "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
|
"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
|
"raw_crop": [ 0, 0, -36, 0 ], // full raw frame 8000x5320 - 36 rightmost columns are garbage
|
||||||
"ranges": { "black": 512, "white": 16300 },
|
"ranges": { "black": 512, "white": 16300 },
|
||||||
// PDAF info provided by Horshack with the rawshack tool (http://testcams.com/rawshack/)
|
// 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 ],
|
"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
|
"pdaf_offset" : 31
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -429,6 +429,16 @@ std::map<std::string, std::string> getAliases(const Glib::ustring& profile_dir)
|
|||||||
return res;
|
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
|
class DCPMetadata
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@ -2180,7 +2190,7 @@ void DCPStore::init(const Glib::ustring& rt_profile_dir, bool loadAll)
|
|||||||
&& lastdot <= sname.size() - 4
|
&& lastdot <= sname.size() - 4
|
||||||
&& !sname.casefold().compare(lastdot, 4, ".dcp")
|
&& !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 {
|
} else {
|
||||||
// Directory
|
// Directory
|
||||||
@ -2191,10 +2201,10 @@ void DCPStore::init(const Glib::ustring& rt_profile_dir, bool loadAll)
|
|||||||
|
|
||||||
for (const auto& alias : getAliases(rt_profile_dir)) {
|
for (const auto& alias : getAliases(rt_profile_dir)) {
|
||||||
const Glib::ustring alias_name = Glib::ustring(alias.first).uppercase();
|
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()) {
|
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
|
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()) {
|
if (iter != file_std_profiles.end()) {
|
||||||
return getProfile(iter->second);
|
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)
|
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
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
#pragma omp parallel for schedule(dynamic,16)
|
||||||
#endif
|
#endif
|
||||||
@ -18649,7 +18650,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
const float rad = params->locallab.spots.at(sp).radmask;
|
const float rad = params->locallab.spots.at(sp).radmask;
|
||||||
const float gamma = params->locallab.spots.at(sp).gammask;
|
const float gamma = params->locallab.spots.at(sp).gammask;
|
||||||
const float slope = params->locallab.spots.at(sp).slopmask;
|
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;
|
float blendmab = params->locallab.spots.at(sp).blendmaskab;
|
||||||
if (lp.showmask_met == 2) {
|
if (lp.showmask_met == 2) {
|
||||||
blendm = 0.f;//normalize behavior mask with others no action of blend
|
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) {
|
if (numFrames == 4) {
|
||||||
double fitParams[64];
|
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) {
|
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 {
|
} 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 cared,
|
||||||
double cablue,
|
double cablue,
|
||||||
bool avoidColourshift,
|
bool avoidColourshift,
|
||||||
|
int border,
|
||||||
array2D<float> &rawData,
|
array2D<float> &rawData,
|
||||||
double* fitParamsTransfer,
|
double* fitParamsTransfer,
|
||||||
bool fitParamsIn,
|
bool fitParamsIn,
|
||||||
|
@ -36,7 +36,7 @@ BayerProcess::BayerProcess () :
|
|||||||
{
|
{
|
||||||
|
|
||||||
auto m = ProcEventMapper::getInstance();
|
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");
|
EvDemosaicContrast = m->newEvent(DEMOSAIC, "HISTORY_MSG_DUALDEMOSAIC_CONTRAST");
|
||||||
EvDemosaicAutoContrast = m->newEvent(DEMOSAIC, "HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST");
|
EvDemosaicAutoContrast = m->newEvent(DEMOSAIC, "HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST");
|
||||||
EvDemosaicPixelshiftDemosaicMethod = m->newEvent(DEMOSAIC, "HISTORY_MSG_PIXELSHIFT_DEMOSAIC");
|
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 = Gtk::manage(new PopUpButton("", false));
|
||||||
send_to_external->set_tooltip_text(M("MAIN_BUTTON_SENDTOEDITOR_TOOLTIP"));
|
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);
|
setExpandAlignProperties(send_to_external->buttonGroup, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
|
||||||
updateExternalEditorWidget(
|
updateExternalEditorWidget(
|
||||||
options.externalEditorIndex >= 0 ? options.externalEditorIndex : options.externalEditors.size(),
|
options.externalEditorIndex >= 0 ? options.externalEditorIndex : options.externalEditors.size(),
|
||||||
@ -2037,7 +2038,7 @@ bool EditorPanel::idle_saveImage (ProgressConnector<rtengine::IImagefloat*> *pc,
|
|||||||
msgd.run ();
|
msgd.run ();
|
||||||
|
|
||||||
saveimgas->set_sensitive (true);
|
saveimgas->set_sensitive (true);
|
||||||
send_to_external->set_sensitive(true);
|
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||||
isProcessing = false;
|
isProcessing = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2065,7 +2066,7 @@ bool EditorPanel::idle_imageSaved (ProgressConnector<int> *pc, rtengine::IImagef
|
|||||||
}
|
}
|
||||||
|
|
||||||
saveimgas->set_sensitive (true);
|
saveimgas->set_sensitive (true);
|
||||||
send_to_external->set_sensitive(true);
|
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||||
|
|
||||||
parent->setProgressStr ("");
|
parent->setProgressStr ("");
|
||||||
parent->setProgress (0.);
|
parent->setProgress (0.);
|
||||||
@ -2256,8 +2257,10 @@ void EditorPanel::sendToExternalPressed()
|
|||||||
dialog->show();
|
dialog->show();
|
||||||
} else {
|
} else {
|
||||||
struct ExternalEditor editor = options.externalEditors.at(options.externalEditorIndex);
|
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_info = {
|
||||||
external_editor_native_command = editor.native_command;
|
editor.name,
|
||||||
|
editor.command,
|
||||||
|
editor.native_command};
|
||||||
sendToExternal();
|
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);
|
Gtk::MessageDialog msgd (*parent, msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
|
||||||
msgd.run ();
|
msgd.run ();
|
||||||
saveimgas->set_sensitive (true);
|
saveimgas->set_sensitive (true);
|
||||||
send_to_external->set_sensitive(true);
|
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
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)) {
|
if ((!img && Glib::file_test(filename, Glib::FILE_TEST_IS_REGULAR)) || (img && !errore)) {
|
||||||
saveimgas->set_sensitive (true);
|
saveimgas->set_sensitive (true);
|
||||||
send_to_external->set_sensitive(true);
|
send_to_external->set_sensitive(send_to_external->getEntryCount());
|
||||||
parent->setProgressStr ("");
|
parent->setProgressStr ("");
|
||||||
parent->setProgress (0.);
|
parent->setProgress (0.);
|
||||||
bool success = false;
|
bool success = false;
|
||||||
|
|
||||||
setUserOnlyPermission(Gio::File::create_for_path(filename), 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) {
|
if (!success) {
|
||||||
Gtk::MessageDialog msgd (*parent, M ("MAIN_MSG_CANNOTSTARTEDITOR"), false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
|
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)
|
void EditorPanel::onAppChooserDialogResponse(int responseId)
|
||||||
{
|
{
|
||||||
switch (responseId) {
|
switch (responseId) {
|
||||||
case Gtk::RESPONSE_OK:
|
case Gtk::RESPONSE_OK: {
|
||||||
getAppChooserDialog()->close();
|
getAppChooserDialog()->close();
|
||||||
external_editor_info = getAppChooserDialog()->get_app_info();
|
const auto app_info = getAppChooserDialog()->get_app_info();
|
||||||
external_editor_native_command = false;
|
external_editor_info = {
|
||||||
|
app_info->get_name(),
|
||||||
|
app_info->get_commandline(),
|
||||||
|
false};
|
||||||
sendToExternal();
|
sendToExternal();
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case Gtk::RESPONSE_CANCEL:
|
case Gtk::RESPONSE_CANCEL:
|
||||||
case Gtk::RESPONSE_CLOSE:
|
case Gtk::RESPONSE_CLOSE:
|
||||||
getAppChooserDialog()->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);
|
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);
|
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->setSelected(selectedIndex);
|
||||||
send_to_external->show();
|
send_to_external->show();
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <gtkmm.h>
|
#include <gtkmm.h>
|
||||||
|
|
||||||
|
#include "extprog.h"
|
||||||
#include "histogrampanel.h"
|
#include "histogrampanel.h"
|
||||||
#include "history.h"
|
#include "history.h"
|
||||||
#include "imageareapanel.h"
|
#include "imageareapanel.h"
|
||||||
@ -252,8 +253,7 @@ private:
|
|||||||
Gtk::Button* navSync;
|
Gtk::Button* navSync;
|
||||||
Gtk::Button* navNext;
|
Gtk::Button* navNext;
|
||||||
Gtk::Button* navPrev;
|
Gtk::Button* navPrev;
|
||||||
Glib::RefPtr<Gio::AppInfo> external_editor_info;
|
EditorInfo external_editor_info;
|
||||||
bool external_editor_native_command;
|
|
||||||
std::unique_ptr<RTAppChooserDialog> app_chooser_dialog;
|
std::unique_ptr<RTAppChooserDialog> app_chooser_dialog;
|
||||||
ExternalEditorChangedSignal *externalEditorChangedSignal;
|
ExternalEditorChangedSignal *externalEditorChangedSignal;
|
||||||
sigc::connection externalEditorChangedSignalConnection;
|
sigc::connection externalEditorChangedSignalConnection;
|
||||||
|
@ -37,7 +37,9 @@ ExternalEditorPreferences::ExternalEditorPreferences():
|
|||||||
list_view = Gtk::manage(new Gtk::TreeView());
|
list_view = Gtk::manage(new Gtk::TreeView());
|
||||||
list_view->set_model(list_model);
|
list_view->set_model(list_model);
|
||||||
list_view->append_column(*Gtk::manage(makeAppColumn()));
|
list_view->append_column(*Gtk::manage(makeAppColumn()));
|
||||||
|
#ifndef __APPLE__
|
||||||
list_view->append_column(*Gtk::manage(makeNativeCommandColumn()));
|
list_view->append_column(*Gtk::manage(makeNativeCommandColumn()));
|
||||||
|
#endif
|
||||||
list_view->append_column(*Gtk::manage(makeCommandColumn()));
|
list_view->append_column(*Gtk::manage(makeCommandColumn()));
|
||||||
|
|
||||||
for (auto &&column : list_view->get_columns()) {
|
for (auto &&column : list_view->get_columns()) {
|
||||||
@ -59,11 +61,18 @@ ExternalEditorPreferences::ExternalEditorPreferences():
|
|||||||
button_remove = Gtk::manage(new Gtk::Button());
|
button_remove = Gtk::manage(new Gtk::Button());
|
||||||
button_add->set_image(*add_image);
|
button_add->set_image(*add_image);
|
||||||
button_remove->set_image(*remove_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_file_chooser = Gtk::manage(new Gtk::Button(M("PREFERENCES_EXTERNALEDITOR_CHANGE_FILE")));
|
||||||
|
|
||||||
|
if (button_app_chooser) {
|
||||||
button_app_chooser->signal_pressed().connect(sigc::mem_fun(
|
button_app_chooser->signal_pressed().connect(sigc::mem_fun(
|
||||||
*this, &ExternalEditorPreferences::openAppChooserDialog));
|
*this, &ExternalEditorPreferences::openAppChooserDialog));
|
||||||
|
}
|
||||||
button_add->signal_pressed().connect(sigc::mem_fun(
|
button_add->signal_pressed().connect(sigc::mem_fun(
|
||||||
*this, &ExternalEditorPreferences::addEditor));
|
*this, &ExternalEditorPreferences::addEditor));
|
||||||
button_file_chooser->signal_pressed().connect(sigc::mem_fun(
|
button_file_chooser->signal_pressed().connect(sigc::mem_fun(
|
||||||
@ -77,7 +86,9 @@ ExternalEditorPreferences::ExternalEditorPreferences():
|
|||||||
|
|
||||||
// Toolbar.
|
// Toolbar.
|
||||||
toolbar.set_halign(Gtk::Align::ALIGN_END);
|
toolbar.set_halign(Gtk::Align::ALIGN_END);
|
||||||
|
if (button_app_chooser) {
|
||||||
toolbar.add(*button_app_chooser);
|
toolbar.add(*button_app_chooser);
|
||||||
|
}
|
||||||
toolbar.add(*button_file_chooser);
|
toolbar.add(*button_file_chooser);
|
||||||
toolbar.add(*button_add);
|
toolbar.add(*button_add);
|
||||||
toolbar.add(*button_remove);
|
toolbar.add(*button_remove);
|
||||||
@ -156,6 +167,9 @@ void ExternalEditorPreferences::addEditor()
|
|||||||
}
|
}
|
||||||
|
|
||||||
row[model_columns.name] = "-";
|
row[model_columns.name] = "-";
|
||||||
|
#ifdef __APPLE__
|
||||||
|
row[model_columns.native_command] = true;
|
||||||
|
#endif
|
||||||
list_view->get_selection()->select(row);
|
list_view->get_selection()->select(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,7 +258,12 @@ void ExternalEditorPreferences::onFileChooserDialogResponse(
|
|||||||
for (const auto &selected : selection) {
|
for (const auto &selected : selection) {
|
||||||
auto row = *list_model->get_iter(selected);
|
auto row = *list_model->get_iter(selected);
|
||||||
row[model_columns.icon] = Glib::RefPtr<Gio::Icon>(nullptr);
|
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] =
|
row[model_columns.command] =
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
'"' + dialog->get_filename() + '"';
|
'"' + dialog->get_filename() + '"';
|
||||||
@ -360,7 +379,9 @@ void ExternalEditorPreferences::setAppName(
|
|||||||
void ExternalEditorPreferences::updateToolbarSensitivity()
|
void ExternalEditorPreferences::updateToolbarSensitivity()
|
||||||
{
|
{
|
||||||
bool selected = list_view->get_selection()->count_selected_rows();
|
bool selected = list_view->get_selection()->count_selected_rows();
|
||||||
|
if (button_app_chooser) {
|
||||||
button_app_chooser->set_sensitive(selected);
|
button_app_chooser->set_sensitive(selected);
|
||||||
|
}
|
||||||
button_file_chooser->set_sensitive(selected);
|
button_file_chooser->set_sensitive(selected);
|
||||||
button_remove->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) {
|
if (rtengine::settings->verbose) {
|
||||||
std::cout << "Launching external editor as native command." << std::endl;
|
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);
|
return openInCustomEditor(fileName, &command);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,7 +361,10 @@ bool ExtProgStore::openInExternalEditor(const Glib::ustring &fileName, const Gli
|
|||||||
bool success = false;
|
bool success = false;
|
||||||
|
|
||||||
try {
|
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) {
|
} catch (const Glib::Error &e) {
|
||||||
std::cerr
|
std::cerr
|
||||||
<< "Error launching external editor.\n"
|
<< "Error launching external editor.\n"
|
||||||
@ -377,7 +380,7 @@ bool ExtProgStore::openInExternalEditor(const Glib::ustring &fileName, const Gli
|
|||||||
if (rtengine::settings->verbose) {
|
if (rtengine::settings->verbose) {
|
||||||
std::cout << "Unable to launch external editor with Gio. Trying custom launcher." << std::endl;
|
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 defined WIN32
|
||||||
if (command.length() > 2 && command[0] == '"' && command[command.length() - 1] == '"') {
|
if (command.length() > 2 && command[0] == '"' && command[command.length() - 1] == '"') {
|
||||||
command = command.substr(1, command.length() - 2);
|
command = command.substr(1, command.length() - 2);
|
||||||
|
@ -42,6 +42,13 @@ struct ExtProgAction
|
|||||||
bool execute (const std::vector<Glib::ustring>& fileNames) const;
|
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
|
// Stores all external programs that could be called by the user
|
||||||
class ExtProgStore
|
class ExtProgStore
|
||||||
{
|
{
|
||||||
@ -70,7 +77,7 @@ public:
|
|||||||
static bool openInGimp (const Glib::ustring& fileName);
|
static bool openInGimp (const Glib::ustring& fileName);
|
||||||
static bool openInPhotoshop (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 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()
|
#define extProgStore ExtProgStore::getInstance()
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <utility>
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winnls.h>
|
#include <winnls.h>
|
||||||
@ -28,6 +30,8 @@
|
|||||||
#include <CoreFoundation/CoreFoundation.h>
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "../rtengine/settings.h"
|
||||||
|
|
||||||
namespace
|
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 langMgr;
|
||||||
|
|
||||||
MultiLangMgr::MultiLangMgr ()
|
MultiLangMgr::MultiLangMgr ()
|
||||||
@ -219,6 +242,77 @@ Glib::ustring MultiLangMgr::getStr (const std::string& key) const
|
|||||||
return key;
|
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 ()
|
bool MultiLangMgr::isOSLanguageDetectSupported ()
|
||||||
{
|
{
|
||||||
#if defined (WIN32) || defined (__linux__) || defined (__APPLE__)
|
#if defined (WIN32) || defined (__linux__) || defined (__APPLE__)
|
||||||
|
@ -24,6 +24,25 @@
|
|||||||
|
|
||||||
#include <glibmm/ustring.h>
|
#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
|
class MultiLangMgr
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -31,11 +50,13 @@ public:
|
|||||||
|
|
||||||
void load(const Glib::ustring &language, const std::vector<Glib::ustring> &fnames);
|
void load(const Glib::ustring &language, const std::vector<Glib::ustring> &fnames);
|
||||||
Glib::ustring getStr(const std::string& key) const;
|
Glib::ustring getStr(const std::string& key) const;
|
||||||
|
const TranslationMetadata *getMetadata(const Glib::ustring &fname) const;
|
||||||
static bool isOSLanguageDetectSupported();
|
static bool isOSLanguageDetectSupported();
|
||||||
static Glib::ustring getOSUserLanguage();
|
static Glib::ustring getOSUserLanguage();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<std::string, Glib::ustring> translations;
|
std::map<std::string, Glib::ustring> translations;
|
||||||
|
mutable std::map<Glib::ustring, TranslationMetadata> lang_files_metadata;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern MultiLangMgr langMgr;
|
extern MultiLangMgr langMgr;
|
||||||
|
@ -106,9 +106,32 @@ void PlacesBrowser::refreshPlacesList ()
|
|||||||
{
|
{
|
||||||
placesModel->clear ();
|
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
|
// 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
|
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()) {
|
if (hfile && hfile->query_exists()) {
|
||||||
try {
|
try {
|
||||||
if (auto info = hfile->query_info ()) {
|
if (auto info = hfile->query_info ()) {
|
||||||
@ -223,29 +246,6 @@ void PlacesBrowser::refreshPlacesList ()
|
|||||||
newrow[placesColumns.rowSeparator] = false;
|
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)
|
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;
|
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)
|
void PopUpCommon::removeEntry(int position)
|
||||||
{
|
{
|
||||||
if (position < 0 || position >= getEntryCount()) {
|
if (position < 0 || position >= getEntryCount()) {
|
||||||
@ -147,8 +162,13 @@ void PopUpCommon::removeEntry(int position)
|
|||||||
button->get_style_context()->remove_class("Left");
|
button->get_style_context()->remove_class("Left");
|
||||||
arrowButton->hide();
|
arrowButton->hide();
|
||||||
hasMenu = false;
|
hasMenu = false;
|
||||||
|
if (emptyImageFilename.empty()) {
|
||||||
// Remove the button image.
|
// Remove the button image.
|
||||||
buttonImage->hide();
|
buttonImage->hide();
|
||||||
|
} else {
|
||||||
|
// Show the empty icon.
|
||||||
|
changeImage(emptyImageFilename, Glib::RefPtr<const Gio::Icon>());
|
||||||
|
}
|
||||||
selected = -1;
|
selected = -1;
|
||||||
}
|
}
|
||||||
else if (position < selected) {
|
else if (position < selected) {
|
||||||
|
@ -64,6 +64,8 @@ public:
|
|||||||
bool addEntry (const Glib::ustring& fileName, const Glib::ustring& label, Gtk::RadioButtonGroup* radioGroup = nullptr);
|
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::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);
|
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;
|
int getEntryCount () const;
|
||||||
bool setSelected (int entryNum);
|
bool setSelected (int entryNum);
|
||||||
int getSelected () const;
|
int getSelected () const;
|
||||||
@ -77,6 +79,7 @@ private:
|
|||||||
type_signal_changed messageChanged;
|
type_signal_changed messageChanged;
|
||||||
type_signal_item_selected messageItemSelected;
|
type_signal_item_selected messageItemSelected;
|
||||||
|
|
||||||
|
Glib::ustring emptyImageFilename;
|
||||||
std::vector<Glib::RefPtr<const Gio::Icon>> imageIcons;
|
std::vector<Glib::RefPtr<const Gio::Icon>> imageIcons;
|
||||||
std::vector<Glib::ustring> imageFilenames;
|
std::vector<Glib::ustring> imageFilenames;
|
||||||
std::vector<const RTImage*> images;
|
std::vector<const RTImage*> images;
|
||||||
|
@ -16,21 +16,27 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
|
* 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 <sigc++/slot.h>
|
||||||
#include "externaleditorpreferences.h"
|
|
||||||
#include "preferences.h"
|
|
||||||
#include "multilangmgr.h"
|
|
||||||
#include "splash.h"
|
|
||||||
#include "cachemanager.h"
|
|
||||||
#include "addsetids.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/dfmanager.h"
|
||||||
#include "../rtengine/ffmanager.h"
|
#include "../rtengine/ffmanager.h"
|
||||||
#include "../rtengine/iccstore.h"
|
#include "../rtengine/iccstore.h"
|
||||||
#include "../rtengine/procparams.h"
|
#include "../rtengine/procparams.h"
|
||||||
#include <sstream>
|
|
||||||
#include "rtimage.h"
|
|
||||||
#include "rtwindow.h"
|
|
||||||
#include "toollocationpref.h"
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#include <omp.h>
|
#include <omp.h>
|
||||||
#endif
|
#endif
|
||||||
@ -1139,9 +1145,14 @@ Gtk::Widget* Preferences::getGeneralPanel()
|
|||||||
std::vector<Glib::ustring> langs;
|
std::vector<Glib::ustring> langs;
|
||||||
parseDir(argv0 + "/languages", langs, "");
|
parseDir(argv0 + "/languages", langs, "");
|
||||||
|
|
||||||
for (size_t i = 0; i < langs.size(); i++) {
|
for (const auto &lang : langs) {
|
||||||
if ("default" != langs[i] && "README" != langs[i] && "LICENSE" != langs[i]) {
|
if ("default" != lang && "README" != lang && "LICENSE" != lang) {
|
||||||
languages->append(langs[i]);
|
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.menuGroupExtProg = ckbmenuGroupExtProg->get_active();
|
||||||
moptions.highlightThreshold = (int)hlThresh->get_value();
|
moptions.highlightThreshold = (int)hlThresh->get_value();
|
||||||
moptions.shadowThreshold = (int)shThresh->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.languageAutoDetect = ckbLangAutoDetect->get_active();
|
||||||
moptions.theme = themeFNames.at (themeCBT->get_active_row_number ()).longFName;
|
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();
|
const std::vector<ExternalEditorPreferences::EditorInfo> &editors = externalEditors->getEditors();
|
||||||
moptions.externalEditors.resize(editors.size());
|
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++) {
|
for (unsigned i = 0; i < editors.size(); i++) {
|
||||||
moptions.externalEditors[i] = (ExternalEditor(
|
moptions.externalEditors[i] = (ExternalEditor(
|
||||||
editors[i].name, editors[i].command, editors[i].native_command, editors[i].icon_serialized));
|
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);
|
cprevdemo->set_active (moptions.prevdemo);
|
||||||
languages->set_active_text(moptions.language);
|
languages->set_active_id(moptions.language);
|
||||||
ckbLangAutoDetect->set_active(moptions.languageAutoDetect);
|
ckbLangAutoDetect->set_active(moptions.languageAutoDetect);
|
||||||
int themeNbr = getThemeRowNumber(moptions.theme);
|
int themeNbr = getThemeRowNumber(moptions.theme);
|
||||||
themeCBT->set_active (themeNbr == -1 ? 0 : themeNbr);
|
themeCBT->set_active (themeNbr == -1 ? 0 : themeNbr);
|
||||||
|
@ -9,11 +9,11 @@
|
|||||||
# - GTK_PREFIX
|
# - GTK_PREFIX
|
||||||
|
|
||||||
# Formatting
|
# Formatting
|
||||||
fNormal="$(tput sgr0)" >/dev/null 2>&1
|
fNormal="$(printf "\e[0m")"
|
||||||
fBold="$(tput bold)" >/dev/null 2>&1
|
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.
|
# 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
|
fMagenta="$(printf "\e[1;35m")"
|
||||||
fRed="$(tput setaf 1)" >/dev/null 2>&1
|
fRed="$(printf "\e[1;31m")"
|
||||||
|
|
||||||
function msg {
|
function msg {
|
||||||
printf "\\n${fBold}-- %s${fNormal}\\n" "${@}"
|
printf "\\n${fBold}-- %s${fNormal}\\n" "${@}"
|
||||||
@ -448,7 +448,7 @@ function CreateDmg {
|
|||||||
msg "Zipping disk image for redistribution:"
|
msg "Zipping disk image for redistribution:"
|
||||||
mkdir "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder"
|
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"
|
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/"
|
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
|
if [[ -n $NIGHTLY ]]; then
|
||||||
cp "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${arch}_latest.zip"
|
cp "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${arch}_latest.zip"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user