From 5e73b59d0639c56c16ff9733bb8c7919cfbcc6cc Mon Sep 17 00:00:00 2001 From: Zukero Date: Wed, 12 Apr 2017 15:57:35 +0200 Subject: [PATCH] v0.6.0 released! Weblate integration is complete. New icons (created for weblate integration) now replace to old ugly ones for the notification area. --- ATCS_JAR.jardesc | 3 +- packaging/Windows/ATCS_Installer.nsi | 4 +- res/LICENSE.jsoup.txt | 21 ++++++ .../rpg/atcontentstudio/ATContentStudio.java | 4 +- src/com/gpl/rpg/atcontentstudio/img/error.png | Bin 566 -> 0 bytes src/com/gpl/rpg/atcontentstudio/img/info.png | Bin 278 -> 0 bytes .../rpg/atcontentstudio/img/status_blue.png | Bin 0 -> 1024 bytes .../rpg/atcontentstudio/img/status_green.png | Bin 0 -> 1013 bytes .../rpg/atcontentstudio/img/status_orange.png | Bin 0 -> 1023 bytes .../rpg/atcontentstudio/img/status_red.png | Bin 0 -> 880 bytes .../atcontentstudio/img/status_unknown.png | Bin 0 -> 1057 bytes src/com/gpl/rpg/atcontentstudio/img/warn.png | Bin 481 -> 0 bytes .../model/WorkspaceSettings.java | 11 ++- .../model/gamedata/Dialogue.java | 1 - .../model/gamedata/Droplist.java | 1 - .../atcontentstudio/model/gamedata/Item.java | 1 - .../model/gamedata/ItemCategory.java | 1 - .../atcontentstudio/model/gamedata/NPC.java | 1 - .../atcontentstudio/model/gamedata/Quest.java | 1 - .../atcontentstudio/model/maps/TMXMapSet.java | 2 - .../tools/writermode/WriterModeDataSet.java | 1 - .../rpg/atcontentstudio/ui/AboutEditor.java | 4 + .../rpg/atcontentstudio/ui/DefaultIcons.java | 21 ++++++ .../gpl/rpg/atcontentstudio/ui/Editor.java | 37 ++++++++- .../ui/JSONCreationWizard.java | 1 - .../atcontentstudio/ui/NotificationsPane.java | 20 +---- .../ui/ProjectCreationWizard.java | 1 - .../ui/TMXMapCreationWizard.java | 1 - .../atcontentstudio/ui/WorkspaceActions.java | 1 - .../ui/WorkspaceSettingsEditor.java | 14 +++- .../ui/WorldmapCreationWizard.java | 1 - .../ui/WorldmapLabelEditionWizard.java | 1 - .../ui/tools/ItemsTableView.java | 1 - .../ui/tools/NPCsTableView.java | 1 - .../rpg/atcontentstudio/utils/FileUtils.java | 1 - .../utils/WeblateIntegration.java | 70 ++++++++++-------- statusIconBase.xcf | Bin 0 -> 8638 bytes 37 files changed, 147 insertions(+), 80 deletions(-) create mode 100644 res/LICENSE.jsoup.txt delete mode 100644 src/com/gpl/rpg/atcontentstudio/img/error.png delete mode 100644 src/com/gpl/rpg/atcontentstudio/img/info.png create mode 100644 src/com/gpl/rpg/atcontentstudio/img/status_blue.png create mode 100644 src/com/gpl/rpg/atcontentstudio/img/status_green.png create mode 100644 src/com/gpl/rpg/atcontentstudio/img/status_orange.png create mode 100644 src/com/gpl/rpg/atcontentstudio/img/status_red.png create mode 100644 src/com/gpl/rpg/atcontentstudio/img/status_unknown.png delete mode 100644 src/com/gpl/rpg/atcontentstudio/img/warn.png create mode 100644 statusIconBase.xcf diff --git a/ATCS_JAR.jardesc b/ATCS_JAR.jardesc index 1bc3695..a14050b 100644 --- a/ATCS_JAR.jardesc +++ b/ATCS_JAR.jardesc @@ -1,6 +1,6 @@ - + @@ -11,6 +11,7 @@ + diff --git a/packaging/Windows/ATCS_Installer.nsi b/packaging/Windows/ATCS_Installer.nsi index 16b49c5..a0929a9 100644 --- a/packaging/Windows/ATCS_Installer.nsi +++ b/packaging/Windows/ATCS_Installer.nsi @@ -1,6 +1,6 @@ !include MUI2.nsh -!define VERSION "0.5.4" +!define VERSION "0.6.0" !define TRAINER_VERSION "0.1.3" !define JAVA_BIN "javaw" @@ -92,6 +92,7 @@ Section install file "rsyntaxtextarea.jar" file "prefuse.jar" file "bsh-2.0b4.jar" + file "jsoup-1.10.2.jar" SetOutPath $INSTDIR @@ -120,6 +121,7 @@ Section uninstall Delete "$INSTDIR\lib\rsyntaxtextarea.jar" Delete "$INSTDIR\lib\prefuse.jar" Delete "$INSTDIR\lib\bsh-2.0b4.jar" + Delete "$INSTDIR\lib\jsoup-1.10.2.jar" RMDir "$INSTDIR\lib\" Delete "$INSTDIR\ATCS.ico" Delete "$INSTDIR\ATCS.cmd" diff --git a/res/LICENSE.jsoup.txt b/res/LICENSE.jsoup.txt new file mode 100644 index 0000000..ab9f00b --- /dev/null +++ b/res/LICENSE.jsoup.txt @@ -0,0 +1,21 @@ +The MIT License + +© 2009-2017, Jonathan Hedley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java b/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java index d5a3cd4..45c4f4b 100644 --- a/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java +++ b/src/com/gpl/rpg/atcontentstudio/ATContentStudio.java @@ -19,14 +19,12 @@ import com.gpl.rpg.atcontentstudio.model.Workspace; import com.gpl.rpg.atcontentstudio.ui.StudioFrame; import com.gpl.rpg.atcontentstudio.ui.WorkerDialog; import com.gpl.rpg.atcontentstudio.ui.WorkspaceSelector; -import com.gpl.rpg.atcontentstudio.utils.HashUtils; -import com.zackehh.siphash.SipHash; public class ATContentStudio { public static final String APP_NAME = "Andor's Trail Content Studio"; - public static final String APP_VERSION = "v0.5.4"; + public static final String APP_VERSION = "v0.6.0"; public static boolean STARTED = false; public static StudioFrame frame = null; diff --git a/src/com/gpl/rpg/atcontentstudio/img/error.png b/src/com/gpl/rpg/atcontentstudio/img/error.png deleted file mode 100644 index 0476298d6438f7e55d7a83c71d3d4e83a623d3b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmV-60?GY}P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^t{ z3_3MIxt9I_00Fj1L_t(I%T?2BOBHb#1n}SL+A)vXg-kRpi7r@F7)98PzG2@e#4Hk` zH+4c$$)YSRvNX-3p0mAZ4%EKcW&b<#%*-=eR6NEFY@vatSiqX9+6P5Z!!T~*A?{!T zePzH?*u@a~a0Ca6VjVpg#Wg&@G|rKSll=9BHx!bC06PQfIG2@v#i643UM8ri zH0(+O>v-NtxcwoSNDKEsy}nrDUK%!)J$GlqGQMO(mlEtiwo{=;v)L+fAGcDb7Jeqo zS-it>+)a^&a56SZ?RKk-_n}DLz?+n0HY*-XcQL70(Y)*K0-AbW|YuPggKHUS=Ub@p{Le*=Z4dAc};Se!mO z(U+^)K%jNM;F`Oo+V57mzli0!x9ou=3%~N0wAxsS4Q)$0b(iw99rCHLHx_91vTN^C zV14!Ezm5{mb&vg@rNsiw9|)GGPkXE&t=QBYJag|qS&87&!Yd+^RxoZ|aPn$u?}}Hl zjd5iU&vOUNFH*R`Tf%m=dzRLBxv<6uqT3G7@&5CKYj?u$xB1C`>UW?E89ZJ6T-G@yGywoxqh%=o diff --git a/src/com/gpl/rpg/atcontentstudio/img/status_blue.png b/src/com/gpl/rpg/atcontentstudio/img/status_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5a88805d833d8d92711749de4706f9a974d102 GIT binary patch literal 1024 zcmV+b1poVqP)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00U@AL_t(o!_}8xNK;W9$3I)w zZrVr^>p>%HvqG_!1+fCDF(VX%2+M~kABuvCpnR-HU(1LLda&?KL&&I*Q0pOrkcN$N zMsw-PN>Wni`m;56d${++X=S>+_U8u|?)m%uo^yWZ_xm3B%VtTj|6-sBC;^;6j#2*x z@Bv-GV_?K=k{+N3&}R7c7-KB6-GNm=D^MsZmgYOLd#X_i%6L70B>=gxe&W4tyy$G? zU7t@L?+11Pf!`sp7iiXdStzcoA?&Utl2BQb1y&2ZjX+=&64D@tEy|*MXXtJ@3z{aX ztAJ~%5I6>01jyT1%KSsOm`JGXSOJHfV9x}_3gb~IYk|Pnj}tg-QQ{31guET1>NrrJ z+;83#E58chI&zM{)=TVPtI${ud)7c+Ca4Oe&4aEXXbnI(_Twa@F@^D>1Gwy&40`VX zlmoqne@wXptAOVM{89c%juyjNx4zi}~3ON8{3s;b4g?K{Wfu0fbwqKaY9|BX6 z8$ZY4$uNAG)Gujla_;qjRm$gNeeCB(9}I-y^nG|VWIkYStRERu5by!Sd)pWY!?q@< z?}pEFumkblHe^gepbOwdXCt6TKC{nWn7|O2f`Av`U7rt!EjnlC?XX2e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00Uh~L_t(o!_}8xXj@er$3G`z z>sFzt%n(;4Td%>jZq|S{tx~YGDANf;B->jboKJ&-u5TL%Qt)Y;ulhFM^hIT`idI2} zpkbmx(jqf$L+AdaaU1K_BsMo+A9hc?bZt%3Tc$ra++NY>SG_16~*EL;HQS+M7@9I-rQE^X6mK`}m zG5@q2Z4^9ZI}M!b)#KW#clD00>at2I$(5^$Dk`a@uXI)kJ+>kNTLw<``bnf{V9x8{ z?F#F-Mzo|QNs=p9-|1_;tvB_SQhHXq^r%8>5?Fyme6976wX#QL^s4≀4hnra9$x zQt#<0MHH3!SJ36fHyzp4*4`i>WA4shpW>QVK{eGhuYwNi<%UMPT1l228B(CfgXU);SQ4Y z)5X&Wafv+Bt0%FhqI0;z-uC+mbOSv2N-Hlgz&5ty;_?w6Fvo151X}lp@nhQBPJo47 zH`&4#s#Fo;H?o1rZ^P~%7BlRBSfR`mzfxrhA(r@S)BQlmx1ZBC^DtlX1#`^uKF7&$ zA#lLROgnx|t3U=wEsj^Yv}cyrd6Apk2wZ-E#qs*@obfA=2ADcC4ZwAZn*#2~u$abY zwXOps%MSUL+@^rXDh@wxtAG0uplB7i;kg$$(YARj?w@Z@THk1vZAKHuKu;-n6=D^K z^!A)}NkhOl{xtybEifrT@jx~3!50ryE%>B|#c~4j3?#XUJe{X|gG;}sd&y1YZS|ms z)tDvQ=oY+QOSYmZO_rUe3`n!4^d2RQxoajGA(AXRN{%M{?q|)B-}i&bfBtB;Ja%~Q jsb`JD=}%r_`+vmWmG_LFpfHWJ00000NkvXXu0mjfVyoDh literal 0 HcmV?d00001 diff --git a/src/com/gpl/rpg/atcontentstudio/img/status_orange.png b/src/com/gpl/rpg/atcontentstudio/img/status_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..f588311bafdec2c64cfae1d1fe22dee8ab8240db GIT binary patch literal 1023 zcmVe zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00U=9L_t(o!_}8tNEA^V#(%So z&34lgld#Bgy+A}7g>Hq=#i$J~*sudn|m3>M1E$D($6$R@z!A zS5($ZT1r`_wzZq%P7gCj#x2v;vCAI@=A1cazVClI=X?kLvPp4{Uk0oP3V~c8&FFsz zGy#o(9~iKj^XmW?PB^)GupK$G0=Ct{no?Mt4mJhmCBQ%<^xT2b;h%mYtAiZQA0lbBll$IY zfPFxVQ6G~=APZ;{;3qdfhn%CZ$qhCcv?%mHg07n|I-(N@y_t}LUs<)!$*D`vL^Io5 z6H*MB*TA}>f^;4pdjly>*m)P`C&Sks2-ZUD6$pPYihcUFyCz+vBVa6LEtbG8pk9*T z+bsu5f(`aQ1tkR{1Ms8*`W{Z{?PM0QJ6KR26opv?GyvF4V=jYU?TXqDTd#qAIjAA< z9)NiIQ0gdFS<|7I4FhGoX#ldPj@c9oWl)qL~Z~ ziU{P1O-7MIuxh^!9vy?edP~4X6mqjuMRUD51^ED#t_(;mgryrm(;(DsY&6zcr7J_c z7Mcm<0_@wg5LWB}d4cYA%S8xvSxUf_Cu7DGtu%l&iJw7AfT*gklA&hH!Y@pm9|BXJ z@O3N>%KD=}jV0!;uOzp8^j*bc2V z5Di;Sz~fgjV+sO|0JWYDW5Etso_k^A7zU;w-~(uCdr!pfn6rFG><+VF@tX+@8ixeu z>JsOSfa%`>p&KVZjKV?7y`SnZdISVC4T{~W<=z*&RRJC_u!tp~83K}eZ#UIGr)A*P zKBrllm6*jutR(wn$fnZ!-d>VcJK2)fJ8N*08Y%}K$1h5&14G1OE3Z!V`kV`KY2><8s0WO|?1Oe+8Y002ovPDHLkV1n>2ud)CD literal 0 HcmV?d00001 diff --git a/src/com/gpl/rpg/atcontentstudio/img/status_red.png b/src/com/gpl/rpg/atcontentstudio/img/status_red.png new file mode 100644 index 0000000000000000000000000000000000000000..188e9a02b407c9d1481bea33c13cff0180aff21b GIT binary patch literal 880 zcmV-$1CRWPP)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00P)aL_t(o!_}9+OB-Pv#y^Qs zP(e^6{)E_^!BUE8mZF0aQBaFR2g#bjQE(6!v6Hii|3d$Rii3mTB03Zc6^V6st z3JylS_;k2jz1XOUUTFKm7cO`A=6Sx)_xrx@bMTjkr^xqff%iZU5C)pF_m6=s;5+aW zICGn1Kac=aU?j40Jg-$C1bhSD**C&|Kk;CYVV{pTM@Il0w6w5nnta{gXDgL*&fft( z1G_KDJZ5L)0Zm0BN*jjM&>;2pO3|p)(II)g68w&|VQ4B6ktbJ?Sh3*a_T+&;K>#Ax%z7$H&sum6XXy*Voqd z(vsBLnwNkb^IcsT*=+%%=3Ay>fd2>bmufgS*FmcU1VcrXY(JpARRd{i_+E?cxH;%fU1)1riC1h>OEM zKWt22&eL=nwzuK-)*^6oQ*uAxb)4rM)YZY_q9yyx3~X+?4tUVgf)mqLU<-&Xnu9GH2Qp^HoInPoWe&}vy5kzte!{J}<4@9cr|tb5^0O-;!f&hg(n z`FvyUVN`!N5IH^qqsIkOcUK_zgn0faVh&k4M~1W<}P@_<}}xozMv;w zV@jX4xUo_I0000e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00W6hL_t(o!_}8xXj4}l$3Itt zL0Zx&rNeg8*;-jkAuGj_JveAnnU#Xd%7QPe&<7vti`Kqqw}(;YgU*7?!3Lcae5suv z*inY91%pxxQ3EEWwrQ!_mW4@d4Ay4Rvxj?+IVQR3jVsd~xNz>d=bZ2N{O<41_rN=D zT8{HK0oA}RzzGx^;|qWv7zgeFf2}o1HxK}X#V25_(f+LkDu63Ml^iJA?xf7!imkGV z`3>6uD2dOKm>6Paq>u2lUtJ#r_5)LIL*Of*U!SE>)6zk-zMD|Yo|SQV{tAxKF7E#J z0|+69J;0@02($w~0+iM^Vrv^*6*v=-L~k>5zF|3Z1UR2MZ@tOMF95g>pCz#CCn9lM z&W;m_+gPgp8dq5Xk9~gt>;)za|1h;c1@J(EkCh)y+t{%|&{+pxR=~#vFuMffi}2ko zn2lyOs4LXN*w4r0>kic?v=lP;fvVElM&>-%(mnD6!H5U8I?{n+D}qBqaCs^-iPHYv z@^=J{P!<5|lsOGR6`F>vZ7^+v^_t+yfz03l`F4$8o1i35Wc+Sx8w5?mh^PiRt`ay0 zP}9biNJFeUJ9Mioj(P?x9H#MwwOC+w7we#&PXe40wR*Yr!vWyh1*;dE(Y|I zjy_C+1KgZX&a2#PP9PMsQ?%VFlT|g~l?3Vl%G|AlO%|WJZJx9CY)kgT&$EYTnY)$n z^f8Qj;*~z&1h7>$=}UgtK2I5I;Ead5}&oa@c2&Hyio`98sN|VUL9P) zSWpT00TL5KmI*W|f9u8{6$rTL0N?;sdW~9$Df#UpRe>!5_Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^t{ z3^_ZEEa*A_00Ci1L_t(I%XQMtY862chT&)Cj5%uj!4Oa(NXX8uAh=Ro$DNQ{$Yl)P zi0fQLbfOYBief-eglvLFh$iOe7|k(fvPfy#u`MXNd#3BH`l`BU+twd@aJR%|+`)a^ z!g-8^7bwwUghAzRE6~SefX>CaNIbP)rGKrLWUMklZTJwMs|=uxpkD0DO!lAni03)L zC;{{mfJFN?USYAyWIu%q;bQ?v|L@{0p5b+w(O=+nc(-{!u!<*mf%PiJmzLkhc&ued z+SdqN4$$EELfxce+{ad|Z4$hT6+FT_d{Z~0GSk5Q=ik*00000NkvXXu0mjf useSystemDefaultImageEditor = new PrimitiveSetting("useSystemDefaultImageEditor", DEFAULT_USE_SYS_IMG_EDITOR); public static String DEFAULT_IMG_EDITOR_COMMAND = "gimp"; - public static String[] LANGUAGE_LIST = new String[]{null, "de", "ru", "pl", "fr", "it", "es", "nl", "uk", "ca", "sv", "pt", "pt_BR", "zh_Hant", "zh_Hans", "ja", "cs", "tr", "ko", "hu", "sl", "bg", "id", "fi", "th", "gl", "ms" ,"pa", "az"}; public Setting imageEditorCommand = new PrimitiveSetting("imageEditorCommand", DEFAULT_IMG_EDITOR_COMMAND); + public static String[] LANGUAGE_LIST = new String[]{null, "de", "ru", "pl", "fr", "it", "es", "nl", "uk", "ca", "sv", "pt", "pt_BR", "zh_Hant", "zh_Hans", "ja", "cs", "tr", "ko", "hu", "sl", "bg", "id", "fi", "th", "gl", "ms" ,"pa", "az"}; public Setting translatorLanguage = new NullDefaultPrimitiveSetting("translatorLanguage"); + public static Boolean DEFAULT_ALLOW_INTERNET = true; + public Setting useInternet = new PrimitiveSetting("useInternet", DEFAULT_ALLOW_INTERNET); + public List> settings = new ArrayList>(); @@ -56,6 +54,7 @@ public class WorkspaceSettings { settings.add(useSystemDefaultImageEditor); settings.add(imageEditorCommand); settings.add(translatorLanguage); + settings.add(useInternet); file = new File(parent.baseFolder, FILENAME); if (file.exists()) { load(file); diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java index 5e9fe13..59ffaa2 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java @@ -18,7 +18,6 @@ import com.gpl.rpg.atcontentstudio.Notification; import com.gpl.rpg.atcontentstudio.model.GameDataElement; import com.gpl.rpg.atcontentstudio.model.GameSource; import com.gpl.rpg.atcontentstudio.model.Project; -import com.gpl.rpg.atcontentstudio.model.GameDataElement.State; import com.gpl.rpg.atcontentstudio.model.gamedata.Requirement.RequirementType; import com.gpl.rpg.atcontentstudio.model.maps.TMXMap; import com.gpl.rpg.atcontentstudio.ui.DefaultIcons; diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Droplist.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Droplist.java index 82b39f8..2059cbc 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Droplist.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Droplist.java @@ -17,7 +17,6 @@ import com.gpl.rpg.atcontentstudio.Notification; import com.gpl.rpg.atcontentstudio.model.GameDataElement; import com.gpl.rpg.atcontentstudio.model.GameSource; import com.gpl.rpg.atcontentstudio.model.Project; -import com.gpl.rpg.atcontentstudio.model.GameDataElement.State; import com.gpl.rpg.atcontentstudio.ui.DefaultIcons; diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Item.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Item.java index 5d0a87b..bda85e4 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Item.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Item.java @@ -17,7 +17,6 @@ import com.gpl.rpg.atcontentstudio.Notification; import com.gpl.rpg.atcontentstudio.model.GameDataElement; import com.gpl.rpg.atcontentstudio.model.GameSource; import com.gpl.rpg.atcontentstudio.model.Project; -import com.gpl.rpg.atcontentstudio.model.GameDataElement.State; public class Item extends JSONElement { diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/ItemCategory.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/ItemCategory.java index 7fcb7e2..1c6622d 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/ItemCategory.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/ItemCategory.java @@ -17,7 +17,6 @@ import org.json.simple.parser.ParseException; import com.gpl.rpg.atcontentstudio.Notification; import com.gpl.rpg.atcontentstudio.model.GameDataElement; import com.gpl.rpg.atcontentstudio.model.GameSource; -import com.gpl.rpg.atcontentstudio.model.GameDataElement.State; public class ItemCategory extends JSONElement { diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java index 7492e62..753f8e6 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java @@ -17,7 +17,6 @@ import com.gpl.rpg.atcontentstudio.Notification; import com.gpl.rpg.atcontentstudio.model.GameDataElement; import com.gpl.rpg.atcontentstudio.model.GameSource; import com.gpl.rpg.atcontentstudio.model.Project; -import com.gpl.rpg.atcontentstudio.model.GameDataElement.State; public class NPC extends JSONElement { diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Quest.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Quest.java index a45803f..3b71ccf 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Quest.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Quest.java @@ -16,7 +16,6 @@ import org.json.simple.parser.ParseException; import com.gpl.rpg.atcontentstudio.Notification; import com.gpl.rpg.atcontentstudio.model.GameDataElement; import com.gpl.rpg.atcontentstudio.model.GameSource; -import com.gpl.rpg.atcontentstudio.model.GameDataElement.State; import com.gpl.rpg.atcontentstudio.ui.DefaultIcons; public class Quest extends JSONElement { diff --git a/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMapSet.java b/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMapSet.java index 5145383..00af523 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMapSet.java +++ b/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMapSet.java @@ -4,7 +4,6 @@ import java.awt.Image; import java.io.File; import java.io.IOException; import java.nio.file.FileSystems; -import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardWatchEventKinds; @@ -26,7 +25,6 @@ import com.gpl.rpg.atcontentstudio.model.Project; import com.gpl.rpg.atcontentstudio.model.Project.ResourceSet; import com.gpl.rpg.atcontentstudio.model.ProjectTreeNode; import com.gpl.rpg.atcontentstudio.model.gamedata.GameDataSet; -import com.gpl.rpg.atcontentstudio.model.sprites.SpriteSheetSet; import com.gpl.rpg.atcontentstudio.ui.DefaultIcons; import com.gpl.rpg.atcontentstudio.utils.FileUtils; diff --git a/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeDataSet.java b/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeDataSet.java index 46f37dc..45d73ee 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeDataSet.java +++ b/src/com/gpl/rpg/atcontentstudio/model/tools/writermode/WriterModeDataSet.java @@ -23,7 +23,6 @@ import org.json.simple.parser.ParseException; import com.gpl.rpg.atcontentstudio.Notification; import com.gpl.rpg.atcontentstudio.io.JsonPrettyWriter; import com.gpl.rpg.atcontentstudio.model.GameDataElement; -import com.gpl.rpg.atcontentstudio.model.GameDataElement.State; import com.gpl.rpg.atcontentstudio.model.GameSource; import com.gpl.rpg.atcontentstudio.model.GameSource.Type; import com.gpl.rpg.atcontentstudio.model.Project; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/AboutEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/AboutEditor.java index 314f99f..ed3574b 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/AboutEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/AboutEditor.java @@ -75,6 +75,9 @@ public class AboutEditor extends Editor { "A slightly modified version of SipHash for Java by Isaac Whitfield.
" + "License: MIT License
" + "
" + + "jsoup by Jonathan Hedley
" + + "License: MIT License
" + + "
" + "See the tabs below to find the full license text for each of these.
" + "
" + "The Windows installer was created with:
" + @@ -125,6 +128,7 @@ public class AboutEditor extends Editor { editorTabsHolder.add("prefuse License", getInfoPane(new Scanner(ATContentStudio.class.getResourceAsStream("/license-prefuse.txt"), "UTF-8").useDelimiter("\\A").next(), "text/text")); editorTabsHolder.add("BeanShell License", getInfoPane(new Scanner(ATContentStudio.class.getResourceAsStream("/LICENSE.LGPLv3.txt"), "UTF-8").useDelimiter("\\A").next(), "text/text")); editorTabsHolder.add("SipHash for Java License", getInfoPane(new Scanner(ATContentStudio.class.getResourceAsStream("/LICENSE.siphash-zackehh.txt"), "UTF-8").useDelimiter("\\A").next(), "text/text")); + editorTabsHolder.add("jsoup License", getInfoPane(new Scanner(ATContentStudio.class.getResourceAsStream("/LICENSE.jsoup.txt"), "UTF-8").useDelimiter("\\A").next(), "text/text")); editorTabsHolder.add("ATCS License", getInfoPane(new Scanner(ATContentStudio.class.getResourceAsStream("/LICENSE.GPLv3.txt"), "UTF-8").useDelimiter("\\A").next(), "text/text")); } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/DefaultIcons.java b/src/com/gpl/rpg/atcontentstudio/ui/DefaultIcons.java index 8de939d..8e599bf 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/DefaultIcons.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/DefaultIcons.java @@ -231,6 +231,27 @@ public class DefaultIcons { public static Image getZoomImage() { return getImage(ZOOM_RES); } public static Image getZoomIcon() { return getIcon(ZOOM_RES); } + private static String STATUS_RED_RES = "/com/gpl/rpg/atcontentstudio/img/status_red.png"; + public static Image getStatusRedImage() { return getImage(STATUS_RED_RES); } + public static Image getStatusRedIcon() { return getIcon(STATUS_RED_RES); } + + private static String STATUS_ORANGE_RES = "/com/gpl/rpg/atcontentstudio/img/status_orange.png"; + public static Image getStatusOrangeImage() { return getImage(STATUS_ORANGE_RES); } + public static Image getStatusOrangeIcon() { return getIcon(STATUS_ORANGE_RES); } + + private static String STATUS_GREEN_RES = "/com/gpl/rpg/atcontentstudio/img/status_green.png"; + public static Image getStatusGreenImage() { return getImage(STATUS_GREEN_RES); } + public static Image getStatusGreenIcon() { return getIcon(STATUS_GREEN_RES); } + + private static String STATUS_BLUE_RES = "/com/gpl/rpg/atcontentstudio/img/status_blue.png"; + public static Image getStatusBlueImage() { return getImage(STATUS_BLUE_RES); } + public static Image getStatusBlueIcon() { return getIcon(STATUS_BLUE_RES); } + + private static String STATUS_UNKNOWN_RES = "/com/gpl/rpg/atcontentstudio/img/status_unknown.png"; + public static Image getStatusUnknownImage() { return getImage(STATUS_UNKNOWN_RES); } + public static Image getStatusUnknownIcon() { return getIcon(STATUS_UNKNOWN_RES); } + + private static Image getImage(String res) { if (imageCache.get(res) == null) { try { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/Editor.java b/src/com/gpl/rpg/atcontentstudio/ui/Editor.java index 28f5108..6ae9ae0 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/Editor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/Editor.java @@ -121,12 +121,45 @@ public abstract class Editor extends JPanel implements ProjectElementListener { labelPane.setLayout(new JideBoxLayout(labelPane, JideBoxLayout.LINE_AXIS)); final JLabel translateLinkLabel = new JLabel(getWeblateLabelLink(initialValue)); labelPane.add(translateLinkLabel, JideBoxLayout.FIX); - final JLabel translationStatus = new JLabel(" - Status: unknown - Retrieving..."); + labelPane.add(new JLabel(" "), JideBoxLayout.FIX); + final JLabel translationStatus = new JLabel("Retrieving..."); + translationStatus.setIcon(new ImageIcon(DefaultIcons.getStatusUnknownIcon())); + translationStatus.setToolTipText("Connecting to weblate..."); labelPane.add(translationStatus, JideBoxLayout.VARY); new Thread() { public void run() { WeblateIntegration.WeblateTranslationUnit unit = WeblateIntegration.getTranslationUnit(initialValue); - translationStatus.setText(" - Status: "+unit.status.toString()+" - "+unit.translatedText); + switch (unit.status) { + case absent: + translationStatus.setIcon(new ImageIcon(DefaultIcons.getStatusRedIcon())); + translationStatus.setToolTipText("This string isn't managed by weblate (yet)."); + break; + case done: + translationStatus.setIcon(new ImageIcon(DefaultIcons.getStatusGreenIcon())); + translationStatus.setToolTipText("This string is translated on weblate."); + break; + case fuzzy: + translationStatus.setIcon(new ImageIcon(DefaultIcons.getStatusOrangeIcon())); + translationStatus.setToolTipText("This string is translated on weblate, but needs a review."); + break; + case notTranslated: + translationStatus.setIcon(new ImageIcon(DefaultIcons.getStatusRedIcon())); + translationStatus.setToolTipText("This string isn't translated in your language on weblate yet."); + break; + case warning: + translationStatus.setIcon(new ImageIcon(DefaultIcons.getStatusOrangeIcon())); + translationStatus.setToolTipText("This string is translated on weblate, but triggered some weblate checks."); + break; + case error: + translationStatus.setIcon(new ImageIcon(DefaultIcons.getStatusRedIcon())); + translationStatus.setToolTipText("Cannot connect to weblate. Check internet connection and firewall settings."); + break; + case notAllowed: + translationStatus.setIcon(new ImageIcon(DefaultIcons.getStatusBlueIcon())); + translationStatus.setToolTipText("You have not allowed ATCS to access to internet. You can change this in the workspace settings."); + break; + } + translationStatus.setText(unit.translatedText); }; }.start(); pane.add(labelPane, JideBoxLayout.FIX); diff --git a/src/com/gpl/rpg/atcontentstudio/ui/JSONCreationWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/JSONCreationWizard.java index 48b320e..aae3579 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/JSONCreationWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/JSONCreationWizard.java @@ -8,7 +8,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/NotificationsPane.java b/src/com/gpl/rpg/atcontentstudio/ui/NotificationsPane.java index 4e30225..49766e5 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/NotificationsPane.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/NotificationsPane.java @@ -3,14 +3,11 @@ package com.gpl.rpg.atcontentstudio.ui; import java.awt.Color; import java.awt.Component; import java.awt.Font; -import java.io.IOException; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; -import javax.imageio.ImageIO; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; @@ -30,22 +27,13 @@ public class NotificationsPane extends JList { private static final long serialVersionUID = -1100364214372392608L; - public static final String success_img_name = "/com/gpl/rpg/atcontentstudio/img/success.png"; - public static final String info_img_name = "/com/gpl/rpg/atcontentstudio/img/info.png"; - public static final String warn_img_name = "/com/gpl/rpg/atcontentstudio/img/warn.png"; - public static final String error_img_name = "/com/gpl/rpg/atcontentstudio/img/error.png"; - public static final Map icons = new LinkedHashMap(Notification.Type.values().length); static { - try { - icons.put(Notification.Type.SUCCESS, new ImageIcon(ImageIO.read(NotificationsPane.class.getResourceAsStream(success_img_name)))); - icons.put(Notification.Type.INFO, new ImageIcon(ImageIO.read(NotificationsPane.class.getResourceAsStream(info_img_name)))); - icons.put(Notification.Type.WARN, new ImageIcon(ImageIO.read(NotificationsPane.class.getResourceAsStream(warn_img_name)))); - icons.put(Notification.Type.ERROR, new ImageIcon(ImageIO.read(NotificationsPane.class.getResourceAsStream(error_img_name)))); - } catch (IOException e) { - e.printStackTrace(); - } + icons.put(Notification.Type.SUCCESS, new ImageIcon(DefaultIcons.getStatusGreenIcon())); + icons.put(Notification.Type.INFO, new ImageIcon(DefaultIcons.getStatusBlueIcon())); + icons.put(Notification.Type.WARN, new ImageIcon(DefaultIcons.getStatusOrangeIcon())); + icons.put(Notification.Type.ERROR, new ImageIcon(DefaultIcons.getStatusRedIcon())); } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/ProjectCreationWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/ProjectCreationWizard.java index a630dff..b0958a9 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/ProjectCreationWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/ProjectCreationWizard.java @@ -9,7 +9,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/TMXMapCreationWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/TMXMapCreationWizard.java index c170c46..bc59e26 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/TMXMapCreationWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/TMXMapCreationWizard.java @@ -7,7 +7,6 @@ import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java b/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java index d371f15..b22671c 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java @@ -12,7 +12,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.ConcurrentSkipListSet; import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.Action; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceSettingsEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceSettingsEditor.java index 505634b..8a1bdf2 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceSettingsEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceSettingsEditor.java @@ -33,6 +33,7 @@ public class WorkspaceSettingsEditor extends JDialog { JCheckBox translatorModeBox; JComboBox translatorLanguagesBox; + JCheckBox useInternetBox; @@ -167,15 +168,20 @@ public class WorkspaceSettingsEditor extends JDialog { translatorLanguagesBox = new JComboBox(WorkspaceSettings.LANGUAGE_LIST); langPane.add(translatorLanguagesBox); pane.add(langPane, JideBoxLayout.FIX); + + pane.add(new JLabel("If your language isn't here, complain on the forums at https://andorstrail.com/"), JideBoxLayout.FIX); + + useInternetBox = new JCheckBox("Allow connecting to internet to retrieve data from weblate."); + pane.add(useInternetBox, JideBoxLayout.FIX); translatorModeBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { translatorLanguagesBox.setEnabled(translatorModeBox.isSelected()); + useInternetBox.setEnabled(translatorModeBox.isSelected()); } }); - pane.add(new JLabel("If your language isn't here, complain on the forums at https://andorstrail.com/"), JideBoxLayout.FIX); return pane; } @@ -194,10 +200,15 @@ public class WorkspaceSettingsEditor extends JDialog { if (settings.translatorLanguage.getCurrentValue() != null) { translatorModeBox.setSelected(true); translatorLanguagesBox.setSelectedItem(settings.translatorLanguage.getCurrentValue()); + translatorLanguagesBox.setEnabled(true); + useInternetBox.setEnabled(true); } else { translatorModeBox.setSelected(false); translatorLanguagesBox.setSelectedItem(null); + translatorLanguagesBox.setEnabled(false); + useInternetBox.setEnabled(false); } + useInternetBox.setSelected(settings.useInternet.getCurrentValue()); } public void pushToModel() { @@ -214,6 +225,7 @@ public class WorkspaceSettingsEditor extends JDialog { } else { settings.translatorLanguage.resetDefault(); } + settings.useInternet.setCurrentValue(useInternetBox.isSelected()); settings.save(); } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/WorldmapCreationWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/WorldmapCreationWizard.java index c164c3a..1e361f6 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/WorldmapCreationWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/WorldmapCreationWizard.java @@ -5,7 +5,6 @@ import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/WorldmapLabelEditionWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/WorldmapLabelEditionWizard.java index a8b2807..6c97d71 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/WorldmapLabelEditionWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/WorldmapLabelEditionWizard.java @@ -5,7 +5,6 @@ import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/tools/ItemsTableView.java b/src/com/gpl/rpg/atcontentstudio/ui/tools/ItemsTableView.java index 32b694c..834a448 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/tools/ItemsTableView.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/tools/ItemsTableView.java @@ -1,6 +1,5 @@ package com.gpl.rpg.atcontentstudio.ui.tools; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java b/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java index 5f4ddf0..6142ee7 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java @@ -1,6 +1,5 @@ package com.gpl.rpg.atcontentstudio.ui.tools; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/src/com/gpl/rpg/atcontentstudio/utils/FileUtils.java b/src/com/gpl/rpg/atcontentstudio/utils/FileUtils.java index e0ce74c..26ecdd1 100644 --- a/src/com/gpl/rpg/atcontentstudio/utils/FileUtils.java +++ b/src/com/gpl/rpg/atcontentstudio/utils/FileUtils.java @@ -10,7 +10,6 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.nio.file.CopyOption; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; diff --git a/src/com/gpl/rpg/atcontentstudio/utils/WeblateIntegration.java b/src/com/gpl/rpg/atcontentstudio/utils/WeblateIntegration.java index faeef11..779c050 100644 --- a/src/com/gpl/rpg/atcontentstudio/utils/WeblateIntegration.java +++ b/src/com/gpl/rpg/atcontentstudio/utils/WeblateIntegration.java @@ -45,51 +45,57 @@ public class WeblateIntegration { public static String getWeblateLabelURI(String text) { return "https://hosted.weblate.org/translate/andors-trail/game-content/"+Workspace.activeWorkspace.settings.translatorLanguage.getCurrentValue()+"/?checksum="+weblateHash(text, ""); } - + public static class WeblateTranslationUnit { public enum Status { - absent, notTranslated, warning, fuzzy, done + notAllowed, error, absent, notTranslated, warning, fuzzy, done } - + public Status status; public String translatedText; } - + public static WeblateTranslationUnit getTranslationUnit(String text) { WeblateTranslationUnit unit = new WeblateTranslationUnit(); - unit.status = Status.absent; - unit.translatedText = "Cannot find this translated on weblate"; - String hash = weblateHash(text, ""); - try { - Document wlDoc = Jsoup.connect(getWeblateLabelURI(text)).get(); - Element textArea = wlDoc.getElementById("id_"+hash+"_0"); - if (textArea != null) { - String trans = textArea.text(); - if (trans != null) { - unit.translatedText = trans.trim(); - if (unit.translatedText.isEmpty()) { - unit.translatedText = "Not yet translated"; - unit.status = Status.notTranslated; + if (!Workspace.activeWorkspace.settings.useInternet.getCurrentValue()) { + unit.status = Status.notAllowed; + unit.translatedText = "Allow internet connection in the workspace settings to get translation status"; + } else { + unit.status = Status.absent; + unit.translatedText = "Cannot find this on weblate"; + String hash = weblateHash(text, ""); + try { + Document wlDoc = Jsoup.connect(getWeblateLabelURI(text)).get(); + Element textArea = wlDoc.getElementById("id_"+hash+"_0"); + if (textArea != null) { + String trans = textArea.text(); + if (trans != null) { + unit.translatedText = trans.trim(); + if (unit.translatedText.isEmpty()) { + unit.translatedText = "Not yet translated"; + unit.status = Status.notTranslated; + } else { + unit.status = Status.done; + } + } + Element fuzzyBox = wlDoc.getElementById("id_"+hash+"_fuzzy"); + if (fuzzyBox != null && fuzzyBox.hasAttr("checked")) { + if ("checked".equals(fuzzyBox.attr("checked"))) { + unit.status = Status.fuzzy; + } } else { - unit.status = Status.done; - } - } - Element fuzzyBox = wlDoc.getElementById("id_"+hash+"_fuzzy"); - if (fuzzyBox != null && fuzzyBox.hasAttr("checked")) { - if ("checked".equals(fuzzyBox.attr("checked"))) { - unit.status = Status.fuzzy; - } - } else { - Elements dangerZone = wlDoc.getElementsByAttributeValue("class", "panel panel-danger"); - if (dangerZone != null && !dangerZone.isEmpty()) { - unit.status = Status.warning; + Elements dangerZone = wlDoc.getElementsByAttributeValue("class", "panel panel-danger"); + if (dangerZone != null && !dangerZone.isEmpty()) { + unit.status = Status.warning; + } } } + } catch (IOException e) { + unit.status = Status.error; + unit.translatedText = "Cannot connect to weblate: "+e.getMessage(); + e.printStackTrace(); } - } catch (IOException e) { - e.printStackTrace(); } - return unit; } diff --git a/statusIconBase.xcf b/statusIconBase.xcf new file mode 100644 index 0000000000000000000000000000000000000000..8e98f0702b067e092744c259d63ce3964ed043ce GIT binary patch literal 8638 zcmeHMYiJ|a6+R=`mS3_gKc(F@Tzhf5yP%CX%`Odiy{*0Ah9Df4 zT;ZWBg=?|6kxhvU?!91KZDv%q$a2;w3L_g|)C)X5mrNG)Vr_yv`d*V`IXINpL6LR? ztNk0IuAdO~{){Mqa0LH|C~OdoK0|csRfO%L(|Mdj!z2{*%KIKQQpLprH0l6z$cF(t+rrLDT*Ynaro98-T`^l0t zN*!_p93rngK_2O$b~ymuBG~~&lNxo(pe?&(KRVbAgSMev4k+}{QwWG z3*~SEDJPlB7RAJu9{;kK&lMMqxOh}Np=XT9Y%ZN}+av5&T==w`H=R+o)k#d(j1@i2 zIW3kg8nLtyD~MG)$E9Q0)H2eyn9#G4NG6xiMPfA@%NTKGveRvCYKsQuhHPz5j2Br^$2&@K(SkI?F|$e8 zeEoctC+j`SYgu=Ywagt0xxuvd$wTHFmTZS!Mcgb?YVwX{nwCT!(P*3H8-!$HU+$Tf zWx~Ao9$$CTp2^ZjyL)#34%*pgaIPf3fuYjztao~Ua)vqJ6FLK~tlJZZ0 z(&wf89S3~v<(K0u`=z|iA^eJzH#zW^K9KTx1bJs}Tgumc9QYIOO8HtJ2mZTKZgz9v zx1{_mk9uFqF_uf|w3j3QkQ;TDDF&&FVoqtED{N`i-}?O$-YDkrpC-J!b6S%u=p6O_ zKN8;5`AeU=_~642)z5`UXGfXvdfsGIfLy2mr9JOECfC->@WJ2c?`xc=|DjDFFnMNv zinhn~1VqcW0pE+M+5bMDh86kaN)eFEh=Tt)NG9R1|2urKL_Qo({W!A*WFG}(FAXBu z56ey(l|IEC6qfDx;f{vBofz8ygGAgxI}zNuB9niUO8Z_UXeY0a@# zVXcBZXNBd6v~Z;6(a@r-ZLqe%+7@eD2eo=@eT4D?f68;?-Rg7j)nQg1CJ)y?iKy8RbV^88PaZnn5`1H1Y31llp()uKIt#uK%5!Y*k;5w86u3BG!3*!gjCkTH5`1QlTue8+C4O7oO$9cHE7Wd@g zj`_TcOz{Dy$v5bzrUenY^o z&A@L6_&t9-k%tjk840Y%IRyyx3tpc=!j@4A8Ak z%I;h+ozMw;RyFW4phM>m+CnpYef*#GbG${eqZTRQ!#g~vI%6}-H5eRK2r+SMU^ ze6x$PPNyhyeDvBy*@04QiAyp3v2ekIqASWp*Cdx!ljOC_vk|*I^Kf|<;_?hyg|!Od zh1QTfA@}f^?<&j7L~AV9h_185xoeZx4Ggr^hShR5o>O8Igz&Zr!*3eb8MnO8uNk}N>jOi;Z#u7QZ#BP>U(c@@Oy8Qm1 ziEj-?qO{5V(sfc@LyYB=E+CoFckG*xOv2%@@AJhu>cY3Id*1_a{oh6>rB|_s#_+xC zquJ9irVT#$J;B}Y2L^D@b05R literal 0 HcmV?d00001